System and method for providing access to an application through a common interface for application extensions
A method and system to permit externally created business objects to access a business management application database without using direct database language statements. An add-on framework includes an add-on extension manager to start an add-on application, register a form from the add-on application, and receive and route an event from the business management application to the add-on application through a user interface application programming interface component object model interface. A persistency layer provides a set of programming language classes and interface definitions to develop a persistent business object in the add-on extension, and connect the persistent business object to a database through a data interface application programming interface component object model interface to read and write data from the database associated with the business management application.
Latest Patents:
The invention relates to software applications for and, in particular, to methods and systems to permit business objects to read data from and write data to a business management application database without using direct database language statements.
BACKGROUNDIt is common that organizations using commercial off-the-shelf business management software applications (accounting, logistics, and customer relationship management software) need to extend the software to meet their specific requirements. For example, the organizations may need to permit add-on applications (i.e., extensions) to read data from and write data to a database associated with the business management software. Unfortunately, this usually requires creating individual programs using database language statements, for example, structured query language (“SQL”) statements, for each add-on business application. In addition to each add-on application needing code specific to the particular add-on, the code must also be tailored for the specific type database that it is trying to access. Typically, current business management software applications do not directly provide a simple and uniform access mechanism for add-on business applications to access the databases associated with the business management software applications.
There is a need for a method and system to permit business objects to read data from and write data to the business management application database without using database language statements and to have a business object layer communicate with a persistence layer via a well-defined interface.
BRIEF DESCRIPTION OF THE DRAWINGS
As described herein, exemplary embodiments of the present invention include a business management software application add-on framework that provides a generalized method/mechanism to permit add-on business applications, for example, user and/or third-party add-on applications, to read data from and write data to a database associated with the business management software without requiring the add-on business application to use structured query language (“SQL”) statements. The add-on framework may be connected to, and permit an add-on business application to communicate with, the business management software application through a user interface (“UI”) application programming interface (“API”) and a data interface (“DI”) API. The add-on business application may have a persistent business object to communicate with a persistency layer via a well-defined interface.
In accordance with some embodiments of the present invention, the persistency layer may provide a single, unified interface for all application(s) designed as an add-on to the business management software application to access the main data base management system without having to use SQL statements. The persistency layer may simplify the implementation of persistent business objects, since the persistency layer may not only generate SQL statements, it may also handle the conversion of data according to the corresponding data type. For example, a date can be treated in different ways depending on which database management system (“DBMS”) is used. The persistency layer may also ensure the security of the add-on application by preventing backward contamination of the add-on application's data, since there may exist situations in which a SQL injection could contaminate the data in the add-on application. SQL injection is a technique in which an attacker passes a SQL string input to an application in an attempt to manipulate the SQL statement to change or damage the data in the business management software application's database. The backward contamination of the add-on application may occur when data returned from the main database in response to the user's SQL query is already contaminated by a SQL injection and likewise contaminates the add-on application.
In addition, in accordance with some embodiments of the present invention, the persistency layer may permit add-on applications to use different DBMS transparently. As a result, a user may switch between the different DBMS, such as, for example, Microsoft SQL and DB/2, without having to change the source code in the add-on application, since requests from the add-on application are all formatted the same to communicate with the persistency layer, which automatically translates each request into the proper format to access the desire DBMS. The functionality of the persistency layer may be specifically designed to be used with the add-on framework. This means that the persistency layer may cover special requirements that are typical for the business management software, for example, the management of business object collections and data browsing through such a collection.
The following definitions are provided for selected acronyms and phrases that are used herein.
“Add-on framework” refers to an infrastructure (for example, a set of C++ class templates and utility functions) to develop and run add-on applications with functional extensions for a software application, such as a business management software application.
“Add-on” refers to a software component started by the software application, which enables functional extensions.
“UI server” refers to a user interface component object model (“COM”) server for a software application.
“GUID” refers to a globally unique identifier that is used to identifying COM entities, for example, interfaces, libraries, objects, etc.
Add-on framework 210 may be used to develop add-on application 220 to access business management software application 240 and DBMS 203. Add-on framework 210 may be used to define a proven design pattern that is to be followed by add-on application 220, as well as, all other add-on application's, and to provide a simplified interface to business management software application 240. Add-on framework 210 may also include some minor components like logging/tracing and common data types, which are not shown for ease of illustration.
Add-on framework 210 may include an extension manager 212 and a persistency layer 214. Extension Manager 212 may enable simplified processing of events that have been started in UI API 230, for example, a COM interface. In addition, extension manager 212 may be connected to a set of, for example, classes (e.g., C++ classes) that may be used when a developer implements add-on application 220 (also called an “extension”). Add-on application 220 may include one or more forms 222 (i.e., screens) and one or more persistent business objects 224. The template classes (e.g., C++ template classes) may enable add-on application 220 to handle general events such as “start of application”, “end of application”, etc. and for the implementation of one or more forms 222 (i.e., screens) within add-on application 210.
The persistency layer 214 may provide a set of classes that are to be used to implement persistent business object 224. Persistency Layer 214 may be the mechanism for addressing the underlying storage and provide a simple interface, generating SQL statements for received data and converting the data according to the data type required by the DBMS 203. A developer of extension 220 may implement persistent business object 224 through persistency layer 214 without the requiring the kind of DBMS 203 to be defined expressly for it and without using SQL statements. Persistency Layer 214 may connect persistent business object 224 to DBMS 203 using DI API COM interface 235.
In accordance with an embodiment of the present invention, in
-
- register forms 222 through which extension 220 may receive events from business management software application 240;
- store/provide extension specific data in DBMS 203;
- write messages to a central log file; and
- provide state/progress information on initialization.
The main task of add-on extension manager 212, in
With the help of the framework classes and interface definitions, a skeleton for creating extension 220 may be provided. Extension 220 may run under control of add-on extension manager 212. Add-on extension manager 212 may also be implemented as a COM object, which may provide interfaces for handling events from business management software application 240 dispatched by add-on extension manager 212. For example, these events may include:
-
- start/stop of software business object (“SBO”);
- form creation;
- menu events; and
- SBO administration events (change language, change company, etc.)
These events may be broadcast to all instances of add-on extension 220, while item events may be distributed only to extensions that have registered a form to receive events. In this case, the extension may provide an additional COM object to be passed to the add-on extension manager 212 in a form registration request. The object may offer particular interfaces for handling item events, handling menu events, and providing the add-on extension manager 212 with some form-specific data.
Further, add-on extension 220 may register standard business management forms as well as its own self-created forms. Before registering the standard form, add-on extension 220 may perform some modifications to it, for example, add a new button. For forms created by add-on extension 220, add-on framework 210 may offer support for loading forms from XML definition files.
Add-on extension manager 212 may be implemented as an API executable (e.g., a win32 executable), which may implement the COM object as a singleton object. This means that there may only be one COM object providing services to all extensions. The reasons for this may include:
-
- Business management software application 240 may start add-on extension 220 by starting an executable. Creating a new instance of the add-on COM object with every start of business management software application 240 could result in several add-on processes running on the system.
- There may only be one running business management software application business object UI server 202 to serve all running business management software applications.
To reduce the number of add-on processes and to be consistent with the behavior of the business management software application business object UI Server 202, add-on COM object may be implemented as a singleton. Consequently, the implementation of add-on extension manager 212 may be aware of existing instances already started. In general, the first instance is responsible for maintaining the add-on COM object and will, therefore, run as long as business management software application business object UI Server 202 is running. All subsequent instances just need to inform the first one that a new business management software application 240 has been started and terminate immediately after that. Add-on extension manager 212 may require extensions to be implemented as an API data link library (“dll”).
Add-on framework 310 may be used to develop an add-on application 320 to access business management software application 340 and DBMS 303. Add-on framework 310 may be used to define a proven design pattern that is to be followed by add-on application 320, as well as, all other add-on application's, and to provide a simplified interface to business management software application 340. Add-on framework 310 may also include some minor components like logging/tracing and common data types, which are not shown for ease of illustration.
Add-on framework 310 may include an extension manager 312 and a persistency layer 314. Extension Manager 312 may enable simplified processing of events that have been started in UI API 330, for example, a COM interface. In addition, extension manager 312 may be connected to a set of, for example, classes that may be used when a developer implements add-on application 320 (also called an “extension”). Add-on application 320 may include one or more forms 322 (i.e., screens) and a persistent business object 324. The template classes may enable add-on application 320 to handle general events such as “start of application”, “end of application”, etc. and for the implementation of one or more forms 322 (i.e., screens) within add-on application 320.
Persistency layer 314 may provide a set of classes that are to be used to implement persistent business object 324. Persistency Layer 314 may be the mechanism for addressing the underlying storage and provide a simple interface, generating SQL statements for received data and converting the data according to the data type required by the DBMS 203. A developer of extension 320 may implement persistent business object 324 through persistency layer 314 without the need to know what kind of DBMS 303 is actually in use and without using SQL statements. Persistency Layer 314 may connect persistent business object 324 to DBMS 303 using a DI API COM interface in SDK 330.
In accordance with an embodiment of the present invention, in
-
- register forms 322 through which extension 320 may receive events from business management software application 340;
- store/provide extension specific data in DBMS 303;
- write messages to a central log file; and
- provide state/progress information on initialization.
In accordance with the present embodiment, the main task of add-on extension manager 312, in
With the help of the framework classes and interface definitions, a skeleton for creating extension 320 may be provided. Extension 320 may run under control of add-on extension manager 312. Add-on extension manager 312 may also be implemented as a COM object, which may provide interfaces for handling events from business management software application 340 dispatched by add-on extension manager 312. For example, these events may include:
-
- start/stop of SBO;
- form creation;
- menu events; and
- SBO administration events (change language, change company, etc.)
These events may be broadcast to all instances of add-on extension 320, while item events may be distributed only to extensions that have registered a form to receive events. In this case, the extension may provide an additional COM object to be passed to the add-on extension manager 312 in a form registration request. The object may offer particular interfaces for handling item events, handling menu events, and providing the add-on extension manager 312 with some form-specific data.
Further, add-on extension 320 may register standard business management forms as well as its own self-created forms. Before registering the standard form, add-on extension 320 may perform some modifications to it, for example, add a new button. For forms created by add-on extension 320, add-on framework 310 may offer support for loading forms from XML definition files.
In the present embodiment, add-on extension manager 312 may be implemented as an API executable (e.g., a win32 executable), which may implement the COM object as a singleton object. This means that there may only be one COM object providing services to all extensions. The reasons for this may include:
-
- Business management software application 340 may start add-on extension 320 by starting an executable. Creating a new instance of the add-on COM object with every start of business management software application 340 could result in several add-on processes running on the system.
- There may only be one running business management software application business object UI server 302 to serve all running business management software applications.
To reduce the number of add-on processes and to be consistent with the behavior of the business management software application business object UI Server 302, add-on COM object may be implemented as a singleton. Consequently, the implementation of add-on extension manager 312 may be aware of existing instances already started. In general, the first instance is responsible for maintaining the add-on COM object and will, therefore, run as long as business management software application business object UI Server 302 is alive. All subsequent instances just need to inform the first one that a new business management software application 340 has been started and terminate immediately after that. Add-on extension manager 312 may require extensions to be implemented as an API data link library (“dll”).
Add-on COM object 412 may be connected to one or more event sink COM objects 415 in business management application add-on extension 420. In general, there will only be one instance of add-on COM object 412 for each business management application to provide interfaces for: form registration; storing/providing extension specific data; message logging; and providing state/progress information on initialization. In addition, add-on COM object 412 may maintain a map of event sink objects for every running business management application. The key in this map is the business management application ID. Every running business management application may have exactly one event sink COM object 415 to which it may deliver business management application events.
Event sink COM object 415 may provide interfaces for receiving: business management application menu events; item events; and application events. Event sink COM object 415 may maintain a list of extension objects and a map of registered forms objects. The key in this map may be a business management application form UID. Because more than one extension may register the same standard form, the map may contain several items with the same key. Add-on extension COM object 422 may provide interfaces to receive: start/stop of business management application events; form creation events; menu events; and business management application administration events (change language, change company, etc.). Add-on form COM object 425 may include interfaces to: receive business management application item and menu events; and provide form specific data.
The add-on extension manager may receive all events from business management application in event sink COM object 415. A subset of business management application events may be distributed to all extensions in add-on extension COM object 422. Remaining business management application events may be delivered directly to the add-on extension in add-on form COM object 425 (via a map of registered forms). Extension registers form and stores/retrieves form specific data to the add-on extension manager in add-on COM object 412. All extensions may send log messages to the add-on extension manager in add-on COM object 412. All extensions may send information about the progress of initialization to the add-on extension manager in add-on COM object 412.
In
In
If it is determined (825) that there are no more registered extensions left on the list, the method may include notifying (855) the event sink COM object 521-1 to be ready to receive events from the business management application and adding (860) event sink COM object 521-1 to a map in add-on COM object 412 with the key being the business management application ID. The map may provide a list of add-on extension COM objects that should receive broadcast events.
In accordance with an embodiment of the present invention form creation is demonstrated in the following two examples. One example is to include using an extensible Markup Language (“XML”) form definition first, and a second example is to include using UI API 230. The add-on framework may completely support creating forms using XML definitions and an XML form definition may be provided either as an external file included in the resources or as a string created directly in source code. Likewise, an XML form definition may be created either with an external form editor or manually with a text or XML editor. The add-on framework may also provide a mechanism for localization of the XML form definitions via string resources. If XML form definition does not support all of the functionality provided by UI API 230, some additional calls to UI API 230 may be needed after form creation (e.g., for initialization of the fields, etc.). The add-on framework may provide an easy way to add these additional calls.
In accordance with the present embodiment, after a form is created, for example, add-on form 641, it may be registered with add-on COM object 625 in add-on extension manager 520 to receive item events. The same may also be applicable for the standard forms in the business management application. Registration of the forms may be done automatically using provided class templates.
Further, in general, an extension may need some database tables to operate. These additional tables may be created as user tables. Similarly, there may also be a need to extend existing company tables with some user fields. The add-on framework may provide support for these operations. For example, the complete functionality may be described as including: creating a user table; creating user fields in the user table; creating user keys; loading data records into the user table; and extending standard tables with the user fields. Database definitions may be provided by the add-on extension in an XML file and the add-on framework may includes a class definition responsible for loading the file and performing database activities, as necessary.
The add-on extension may prepare the database at the beginning of its execution, i.e., when it is being loaded. This may involve checking the current state of the installation and to speed up the check, the framework may maintain versions of currently installed add-on extension tables and the state of the installation in one of its own database tables. A check function may compare the version of the extension with the stored one. When an extension is run for the first time there may be no tables. In this case the add-on extension may start the create procedure.
During initialization add-on extension manager 520 may display a kind of splash screen to show the progress of the various initialization steps. If an extension intends to display its own specific messages there, the extension may have to call an interface method associated with add-on COM object 625. Regardless, the database initialization progress may be displayed automatically. Add-on extension manager 520 may detect whether any database installation actions were performed on initialization. If installation actions did occur, the user may or may not need to restart the business management application to allow the database changes to take effect so that the add-on extensions can work properly in the running application.
Add-on extension manager 520, as well as every extension, may log messages using a central logging functionality. Add-on extension manager 520 may provide a COM interface as the logging function. In general, all messages may be written to one or more central log file(s) and the central logging function may be the only component that may access the log file(s) directly. All other components, for example, add-on extension manager 520 and add-on extension COM objects, may access the log via the COM interface. Add-on extension manager 520 may log the following events: start of a business management application instance; start of an add-on extension; receiving and dispatching events from UI API Server 510; and registration of forms. In addition each add-on extension may log individual messages.
In accordance with an embodiment, the add-on extension COM objects may need to both read data from and write data to the database. This may need to be done in a generalised way, unfortunately, since standard SQL is not able to fully provide all of the necessary capabilities, specific data retrieval and storing classes for each database may need to be created separately. However, using SQL statements within the business objects may not be safe due to SQL injection (discussed above). Therefore, to prevent SQL injection, the add-on extension COM objects and the persistency layer may be separated and the add-on extension COM objects may communicate with the persistency layer via a well-defined interface only. As a result, how and where the data may be stored is hidden from the add-on extension COM object. In general, the persistency layer may be generic in most aspects, with only a persistence interface object that may be specific for each add-on extension COM object. The persistence interface object may encapsulate the knowledge about the data structures and may be the only object in the persistency layer that may be directly used by each add-on extension COM object.
In general, the persistence interface object may be derived from a common class so that the application programmer doesn't need to know any SQL. The persistency layer may automatically create all necessary SQL statements from the requests received from the add-on extension COM objects. As in SQL, columns may be fetched from different tables in the same database and the persistency layer may support inner and outer joins. The persistency layer may also hide which database is being used from the add-on extension application. So we can switch to a different database system without modifying the add-on extension application. The generic class may provide the means to navigate through the records. If only one record within an application is needed, a second interface class may be provided by the persistency layer. This class may include the same data fetching and modification methods as the first interface class, with the exception of being able to browse through records.
In accordance with the present embodiment, for data transport a container class may be implemented to have member variables for all columns and at least the following two methods: a map to container method and a container to map method. The persistency layer may work with a map of fields so that the values may be transferred within the above methods from the map to the container variables or vice versa. These methods may be called automatically from the second interface class.
To use a persistence collection the add-on extension application may connect to the persistency layer and load the collection. The collection may be initialized using, for example, but not limited to, connect and load initialization methods, to offer several manipulation methods. The methods may include, for example: a first method to fetch the first record of the collection; a last method to fetch the last record of the collection; a next method to fetch the next record of the collection; a previous method to fetch the previous record of the collection; an eofmethod to test if the end of file was reached; a bofmethod to test if begin of file was reached; a getbykey method to fetch the record with the specified key from the collection; a find method to find a record in the collection by any column, as long as that column is part of the collection; an exists method to test if the record exists in the database a remove method to delete one record from the master table; a removerange method to delete a range of records from the master table; an add method to add a new record into the master table; an update method to update the master table; a refresh method to trigger a new select with the same query string that was used for load; and a getrecordcount method to return a count of selected records.
In
In
Several embodiments of the present invention are specifically illustrated and described herein. However, it will be appreciated that modifications and variations of the present invention are covered by the above teachings and come within the purview of the appended claims without departing from the spirit and intended scope of the invention.
Claims
1. A method for providing access to a database, associated with a server-based application, to an external add-on extension application through a standard interface, the method comprising:
- receiving a first request, from an add-on extension object of the add-on extension application, for data from a first database associated with the server-based application;
- creating a first database request based on the first request from the add-on extension object for data, the first database request and the first request from the add-on extension object having different formats;
- sending the first database request to the first database associated with the server-based application;
- receiving, from the first database, a first response to the first database request;
- creating a first request response for the add-on extension object, based upon the first response received from the first database; and
- sending the first request response to the add-on extension object.
2. The method of claim 1, further comprising:
- instantiating an instance of an add-on object as a first instance of an add-on object class conforming to a component object model standard to access data in the first database associated with the server-based application;
- instantiating an instance of an event sink object as a second instance of the add-on object class conforming to the component object model standard to access data in the first database associated with the server-based application;
- registering the add-on extension object from the add-on extension application as a first instance of an add-on extension object class conforming to the component object model standard with the event sink object; and
- registering an add-on form object as a second instance of the add-on extension object class conforming to the component object model standard with the event sink object.
3. The method of claim 2 wherein instantiating the instance of the event sink object further comprises:
- instantiating the instance of the event sink object in response to execution of a first instance of the server-based application being started.
4. The method of claim 3 wherein instantiating the instance of the event sink object further comprises:
- adding the instance of the event sink object to a map in the add-on object.
5. The method of claim 4 wherein instantiating the instance of the event sink object further comprises:
- storing a pointer to the server-based application in the event sink object.
6. The method of claim 2 wherein registering the add-on extension object comprises:
- saving the add-on extension object in a list of add-on extension objects in the event sink object.
7. The method of claim 6 wherein only one add-on extension object from the add-on extension application is registered in the list of add-on extension objects in the event sink object.
8. The method of claim 2 wherein registering the add-on form object comprises:
- saving the add-on form object in a map of add-on forms objects in the event sink object.
9. The method of claim 8 wherein one or more add-on form objects from the add-on extension application are saved in the map of add-on forms objects in the event sink object.
10. The method of claim 1 wherein:
- receiving the first request for data from the add-on extension object for data comprises receiving the first request for data as a non-structured query language request, and creating the first database request based on the first request from the add-on extension object for data comprises: determining a type of the first database; and reformatting the first request for data as the first database request using a structured query language based on the type of the first database.
11. The method of claim 10 wherein creating the first request response for the add-on extension object comprises:
- converting the first response to the first request into a non-structured query language response.
12. The method of claim 1 wherein:
- receiving the first response comprises receiving the first response to the first database request in response to a structured query language request created from the first request for data; and
- creating the first request response for the add-on extension object comprises converting the first response into a first non-structured query language response.
13. The method of claim 1 wherein the server-based application is a server-based business management application.
14. The method of claim 1, further comprising:
- receiving a second request, from the add-on extension object of the add-on extension application, for data from a second database, the first request and the second request having a same format;
- creating a second database request based on the second request from the add-on extension object for data, the first database request and the second database request having different formats;
- sending the second database request to the second database;
- receiving, from the second database, a second response to the second database request;
- creating a second request response for the add-on extension object, based upon the second response received from the second database, the first and second request responses for the add-on extension object having a same format; and
- sending the second request response to the add-on extension object.
15. A data processing system comprising:
- means for instantiating an instance of an add-on object as a first instance of an add-on object class conforming to a component object model standard to access data in a database associated with a server-based business management application;
- means for instantiating an instance of an event sink object as a second instance of the add-on object class conforming to the component object model standard to access data in the database associated with the server-based business management application;
- means for registering an add-on extension object from an add-on extension application as a first instance of an add-on extension object class conforming to the component object model standard with the event sink object;
- means for registering an add-on form object as a second instance of the add-on extension object class conforming to the component object model standard with the event sink object;
- means for receiving a request from the add-on extension object for data from the database associated with the server-based business management application;
- means for creating a database request based on the request from the add-on extension object for data;
- means for sending the database request to the database associated with the server-based business management application;
- means for receiving a response to the database request from the database;
- means for creating a request response for the add-on extension object, based upon the response received by said means for receiving the response to the database request; and
- means for sending the request response to the add-on extension object.
16. The data processing system of claim 15 wherein the means for instantiating the instance of the event sink object further comprises:
- means for instantiating the instance of the event sink object in response to a first instance of the server-based business management application being started.
17. The data processing system of claim 16 wherein the means for instantiating the instance of the event sink object further comprises:
- means for adding the instance of the event sink object to a map in the add-on object.
18. The data processing system of claim 17 wherein the means for instantiating the instance of the event sink object further comprises:
- means for storing a pointer to the server-based business management application in the event sink object.
19. The data processing system of claim 15 wherein the means for registering the add-on extension object comprises:
- means for saving the add-on extension object in a list of add-on extension objects in the event sink object.
20. The data processing system of claim 15 wherein the means for registering the add-on form object comprises:
- means for saving the add-on form object in a map of add-on forms objects in the event sink object.
21. The data processing system of claim 15 wherein the means for receiving a request for data from the add-on extension object comprises:
- means for receiving the request for data as a non-structured query language request.
22. The data processing system of claim 15 wherein the means for creating the database request based on the request for data from the add-on extension object comprises:
- means for determining a type of the database; and
- means for formatting the request for data as the database request using a structured query language based on the type of the database.
23. The data processing system of claim 15 wherein the means for creating the request response for the add-on extension object comprises:
- means for converting the response received by said means for receiving the response to the database request into a non-structured query language response.
24. A machine readable medium having stored thereon a plurality of executable instructions for performing a method for providing access to a database, associated with a server-based application, for an external add-on extension application through a standard interface, the method comprising:
- receiving a first request, from an add-on extension object of the add-on extension application, for data from a first database associated with the server-based application;
- creating a first database request based on the first request from the add-on extension object for data, the first database request and the first request from the add-on extension object having different formats;
- sending the first database request to the first database associated with the server-based application;
- receiving, from the first database, a first response to the first database request;
- creating a first request response for the add-on extension object, based upon the first response received from the first database; and
- sending the first request response to the add-on extension object.
25. The machine readable medium of claim 24, further comprising:
- instantiating an instance of an add-on object as a first instance of an add-on object class conforming to a component object model standard to access data in the first database associated with the server-based application;
- instantiating an instance of an event sink object as a second instance of the add-on object class conforming to the component object model standard to access data in the first database associated with the server-based application;
- registering the add-on extension object from the add-on extension application as a first instance of an add-on extension object class conforming to the component object model standard with the event sink object; and
- registering an add-on form object as a second instance of the add-on extension object class conforming to the component object model standard with the event sink object.
26. The machine readable medium of claim 25 wherein instantiating the instance of the event sink object further comprises:
- instantiating the instance of the event sink object in response to execution of a first instance of the server-based application being started.
27. The machine readable medium of claim 26 wherein instantiating the instance of the event sink object further comprises:
- adding the instance of the event sink object to a map in the add-on object.
28. The machine readable medium of claim 27 wherein instantiating the instance of the event sink object further comprises:
- storing a pointer to the server-based application in the event sink object.
29. The machine readable medium of claim 25 wherein registering the add-on extension object comprises:
- saving the add-on extension object in a list of add-on extension objects in the event sink object.
30. The machine readable medium of claim 29 wherein only one add-on extension object from the add-on extension application is registered in the list of add-on extension objects in the event sink object.
31. The machine readable medium of claim 25 wherein registering the add-on form object comprises:
- saving the add-on form object in a map of add-on forms objects in the event sink object.
32. The machine readable medium of claim 31 wherein one or more add-on form objects from the add-on extension application are saved in the map of add-on forms objects in the event sink object.
33. The machine readable medium of claim 24 wherein:
- receiving the first request for data from the add-on extension object for data comprises receiving the first request for data as a non-structured query language request, and creating the first database request based on the first request from the add-on extension object for data comprises:
- determining a type of the first database; and
- reformatting the first request for data as the first database request using a structured query language based on the type of the first database.
34. The machine readable medium of claim 33 wherein creating the first request response for the add-on extension object comprises:
- converting the first response to the first request into a non-structured query language response.
35. The machine readable medium of claim 24 wherein:
- receiving the first response comprises receiving the first response to the first database request in response to a structured query language request created from the first request for data; and
- creating the first request response for the add-on extension object comprises converting the first response into a first non-structured query language response.
36. The machine readable medium of claim 24 wherein the server-based application is a server-based business management application.
37. The machine readable medium of claim 24, further comprising:
- receiving a second request, from the add-on extension object of the add-on extension application, for data from a second database, the first request and the second request having a same format;
- creating a second database request based on the second request from the add-on extension object for data, the first database request and the second database request having different formats;
- sending the second database request to the second database;
- receiving, from the second database, a second response to the second database request;
- creating a second request response for the add-on extension object, based upon the second response received from the second database, the first and second request responses for the add-on extension object having a same format; and
- sending the second request response to the add-on extension object.
38. An add-on application framework comprising:
- a persistency layer to provide a set of programming language classes and interface definitions to develop a persistent business object in an add-on application, and connect the persistent business object to a database through a data interface application programming interface component object model interface to read and write data from the database associated with a business management application.
39. The add-on application framework of claim 38, further comprising:
- an add-on extension manager to start an add-on application, register a form from the add-on application, and receive and route an event from the business management application to the add-on application through a user interface application programming interface component object model interface.
40. The add-on application framework of claim 39, further comprising:
- a log component to store messages from the add-on extension manager.
41. The add-on application framework of claim 39 wherein the add-on extension manager is implemented as a component object model object.
42. The add-on application framework of claim 39 wherein the add-on extension manager is connected to the persistency layer.
43. The add-on application framework of claim 39 wherein the add-on extension manager comprises:
- an add-on component object model object.
44. The add-on application framework of claim 43 wherein the add-on extension manager further comprises:
- an event sink component object model object connected to the add-on component object model object, the business management application, and the add-on application.
45. The add-on application framework of claim 38 wherein the persistency layer comprises:
- a set of programming language classes to implement the persistent business objects.
46. The add-on application framework of claim 45 wherein the set of programming language classes comprises:
- a set of C++ classes.
47. The add-on application framework of claim 38 wherein the persistency layer is to provide a generic interface to receive a data request for the database from the add-on application in a first format, the generic interface is to generate a database request in a second format from the data request, and send the database request in a second format through the data interface application programming interface component object model interface to the database, wherein the second format is different than the first format.
48. The add-on application framework of claim 47 wherein the persistency layer is further to receive a response to the database request in the second format through the data interface application programming interface component object model interface at the generic interface, generate a response to the data request in the first format from the response to the database request, and send the response to the data request in the first format to the add-on application.
49. The add-on framework of claim 47 wherein the first format is a non-structured query language format and the second format is a structured query language format.
50. The add-on framework of claim 47 wherein differences between the first format and the second format provide data security between the add-on application and the business management application.
Type: Application
Filed: Sep 30, 2004
Publication Date: May 4, 2006
Applicant:
Inventors: Steffen Riemann (St. Leon-Rot), Uwe Freising (Frankenthal)
Application Number: 10/953,772
International Classification: G06Q 20/00 (20060101);