The present invention is directed generally toward implementing composite applications.
Typically, a composite application is an application that takes functionality provided by disparate applications or data sources and provides it to users in a manner that is relevant to the users. Composite applications typically combine application and information assets drawn from multiple sources. In this context, assets are reusable components such as data sources, web services, or entire systems whose outputs have been packaged as web services (often legacy systems such as Enterprise Resource Planning (ERP), Customer Relationship Management (CRM) and Supply Chain Management (SCM) systems). Composite applications are typically web-based applications that are hosted by application servers.
One example of an application server that enables the development and delivery of composite applications is Microsoft Office SharePoint Server (MOSS), produced by Microsoft Corporation of Redmond, Wash. MOSS includes a search component that enables indexing and retrieval of data stored in MOSS or in external data sources. MOSS also includes a component that enables creation and manipulation of lists, a component that enables data capture and data validation, and a component that enables display of data from external data sources. However, it can be difficult to create and maintain consistent configuration files for the various components of a MOSS installation. Furthermore, while MOSS enables displaying data from external data sources, it is still difficult to write data to external data sources. Other application servers for composite applications suffer similar drawbacks.
Accordingly, systems and methods that overcome the above problems, as well as provide additional benefits, would have significant utility.
A software and/or hardware facility for implementing composite applications is described herein. The facility includes a composite application designer that enables users to create and modify composite applications. A composite application can include data from primary assets, as well as data from derived assets, which are assets that are derived from one or more primary assets. The composite application designer also enables the creation of configuration files for configuring access to data corresponding to primary and derived assets. The facility also includes a data access service that enables access to data corresponding to primary and derived assets. The data access service is configured by a configuration file that is created by the composite application designer.
Various embodiments of the invention will now be described. The following description provides specific details for a thorough understanding and an enabling description of these embodiments. One skilled in the art will understand, however, that the invention may be practiced without many of these details. Additionally, some well-known structures or functions may not be shown or described in detail, so as to avoid unnecessarily obscuring the relevant description of the various embodiments. The terminology used in the description presented below is intended to be interpreted in its broadest reasonable manner, even though it is being used in conjunction with a detailed description of certain specific embodiments of the invention.
In some embodiments, the facility 100 is configured to interact with a application server such as Microsoft Office SharePoint Server (MOSS), and the data source 115 is a relational database, such as a Microsoft SQL Server database, an Oracle DBMS database, an IBM DB2 database, or a MySQL database. The facility 100 will be discussed throughout the remainder of this disclosure in the context of these embodiments. Those of skill in the art, however, will understand that the facility 100 may be configured to interact with various other application servers, and that the data source 115 may include data stored in both relational and non-relational structures. For example, the data source 115 may be an application-specific data source, such as those specific to the applications FileNet, Epicore or Cerner. As another example, the data source 115 may be a web service interface to a legacy application or an Extensible Markup Language (XML) file. In some embodiments, the data access service 110 is configured to interact with a Microsoft BizTalk Server. Those of skill in the art, however, will understand that the data access service 100 may be configured to interact with various other web services middleware products, such as those produced by Tibco, WebMethods, IBM and SeeBeyond. The data source 115 stores primary assets and derived assets. Where the data source 115 is a relational database, primary assets correspond to tables in the relational database. Primary assets may also correspond to other objects in the relational database, such as views, as well as other objects stored in non-relational data structures. Derived assets are derived from one or more primary assets.
The application asset modeler 210 enables a user to create derived assets from one or more primary assets. The user can then edit and/or delete derived assets. The artifact generator 215 generates configuration data based upon the primary assets and the derived assets. The artifact generator 215 generates the following configuration data: 1) a composite application model configuration file (e.g., a Business Data Catalog (BDC) configuration file, which is a configuration file for a Business Data Catalog of a MOSS); 2) a data access service 110 configuration file; 3) a forms component Extensible Markup Language Schema Definition (XSD) file (e.g., an InfoPath Server XSD file); 4) a Web Services Definition Language (WSDL) specification file for the data access service 110; 5) stored procedures files; and 6) configuration files for generating reports. The composite application model configuration file specifies a model for the composite application, including data structures for use in components of the composite application (e.g., MOSS lists and web parts), and also specifies derived assets so that they can be indexed for search purposes. The data access service 110 configuration file configures the data access service 110 by specifying stored procedures for reading data from and writing data to the data source 115. The XSD file enables a forms component of the application server (e.g., an InfoPath forms component of a MOSS) to access the data access service 110. The WSDL specification file specifies methods the data access service 110 provides to web services clients. The stored procedures files contain scripts for creating stored procedures that, when installed into the data source 115, enable the various components of the application server (e.g., via the BDC of MOSS) to read data from the data source 115, and the data access service 110 to read data from and write data to the data source 115. The configuration files for generating reports are a set of Microsoft SQL Server Report Model configuration files for generating reports using Microsoft SQL Server Analysis services.
Returning to
Returning to
Returning to
Where the data source 115 is a web service, the composite application designer 105 retrieves the web service's WSDL file and creates the primary assets from the WSDL file. A user can then modify the primary assets to create derived assets, which are not necessarily returned directly by the web service. For example consider the pseudo code for a web service shown in Table 1 below:
The web service returns only one object type (PrimaryAsset) but the composite application designer 105 enables the ability to also create an entity based using DerivedAsset (which is returned as a result of the call to GetServiceMethod).
Returning to
Returning to
The TrackArtist entity has several associated methods: GetTheArtist, for getting data about the artist name for a specific artist for a specific track; GetAllArtist, for getting data about all artists for all tracks; and GetArtistsForTrackArtist, for getting data about an artist for a specific artist. For each method, there is an associated stored procedure that when executed, returns the appropriate data from the data source 115. The composite application model configuration file also has information about associations between entities that were created using the composite application designer 105. Continuing with the previous example, there is an association between TrackArtist and Artist. The composite application model configuration file has information about this association, such as the source entity (TrackArtist), the destination entity (Artist) and the associated method (GetArtistsForTrackArtist). A portion of a sample composite application model configuration file pertaining to the TrackArtist entity is shown in Table 3 below.
At block 1310 the artifact generator 215 generates database stored procedures and writes scripts for creating the stored procedures in one or more files. The artifact generator 215 generates two files containing scripts for creating stored procedures. The first file contains scripts for creating stored procedures that are associated with the methods in the composite application model configuration file. Continuing with the example of the preceding paragraph, the GetTheArtist method has an associated stored procedure named prc_TRACKARTIST_Select, the GetAllArtist method has an associated stored procedure named prc_TRACKARTIST_GetAll, and the GetArtistsForTrackArtist has an associated stored procedure named prc_TRACKARTIST_GetArtists. The stored procedures contain the Structured Query Language (SQL) code for obtaining data from the tables in the data source 115. The second file contains scripts for creating stored procedures for enabling write access to the data in the data source 115. Continuing with the example of the preceding paragraph, the TrackEntity entity has stored procedures for inserting, updating and deleting data stored in the table to which it is mapped (the Track table). As another example, the TrackArtist entity has a stored procedure for deleting data stored in the tables to which it is mapped—the TrackArtist and the Artist tables. Where the data source 115 is a web service, the artifact generator 215 does not create stored procedures.
At block 1315 the artifact generator 215 generates database security roles and writes them in one or more script files. At block 1320 the artifact generator 215 generates report model files. At block 1325 the artifact generator 215 generates the forms component XSD file (e.g., the InfoPaths access file) that enables the forms component to read data from and write data to the data source 115 via the data access service 110. The forms component XSD file that contains elements with attributes that specify methods for inserting, updating and deleting data stored in the data source 115. For example, for an albumInsert method, a portion of a sample forms component XSD is shown in Table 4 below. Elements pertaining to parameters other than albumName are omitted for brevity.
At block 1330 the artifact generator 215 generates the configuration file for the data access service 110. The configuration for the data access service 110 contains elements that map the methods for inserting, updating and deleting data stored in the data source 115 specified in the InfoPaths access file to the stored procedures specified in the second script file described in the previous paragraph. The configuration file for the data access service 110 also contains elements that map the methods for getting data from the data source 115 specified in the composite application model configuration file to stored procedures. A portion of a sample composite application model configuration file pertaining to the albumInsert method is shown in Table 5 below.
At block 1335 the artifact generator 215 generates the WSDL file, the process for which is described with reference to
The files generated by the artifact generator 215 are manually installed into the appropriate areas by an administrator or other user with the appropriate permissions. For example, the stored procedures are manually installed by an administrator or other user with the appropriate permissions by executing the script files containing them against the data source 115, thus creating the stored procedures. Alternatively, the artifact generator 215 can automatically install the stored procedures by executing the script files against the data source 115. As another example, the database security roles are installed into the data source 115 manually by an administrator or other user with the appropriate permissions. Alternatively, the artifact generator 215 can automatically install the database security roles by executing the script files containing them against the data source 115. As a final example, the InfoPaths access file is manually installed into an application server (e.g., MOSS) by an administrator or other user with the appropriate permissions. Alternatively, the artifact generator 215 can automatically install the forms component access file into an application server (e.g. MOSS). The other files (e.g., the report model files, the WSDL file) are manually installed but can also be automatically installed by the artifact generator 215.
One advantage of using the composite application designer 110 to generate configuration files is that it keeps the configuration data synchronized whenever there are changes to the underlying data, such as changes to entities. Another advantage of the composite application designer 110 is that it can generate configuration data that enable read and write access to a variety of application server components, such as a form automation component that presents a user interface and validates and captures user-entered data, a search component that enables the indexing and retrieval of data (e.g., instances of entities) and components that connect to external data sources (e.g., legacy ERP, SCM or CRM applications). The composite application designer 110 generates an application model configuration file that ensures consistent access to data.
At block 1610 the web services client sends the XML document to the data access service 110. At block 1615 the data access service 110 parses the XML document and determines which operation the web services client is attempting to have executed. In this example, the data access service 110 would determine that the web services client is attempting to create a new Album entity instance. At block 1620 the data access service 110 validates the operation to ensure that it may be executed. To do so, the data access service 110 reads the information in the data access service 110 configuration file, which contains the stored procedure to call (e.g., prc_ALBUM_Insert) and the parameter names and types to pass to the stored procedure. The data access service 110 configuration file also contains connection info for the data source 115, and the data access service 110 uses this connection info to create a connection to the data source 115.
At block 1625, if the data access service 110 is able to validate the requested operation, the data access service 110 uses the information in its configuration file to build a Command object, which is a .NET command object for executing a stored procedure. At block 1630 the data access service 110 opens a connection to the data source 115 and executes the operation. An Update operation uses the ExecuteNonQuery method, Select and SelectEx operations use DataAdapters and Fill. At block 1635, if the operation is Update, the data access service 110 returns nothing. If the operation is Select, the data access service 110 returns the DataSet. If the operation is SelectEx, the data access service 110 takes a DataSet and formats it according to an XSL style sheet. This allows the data access service 110 to return data according to the desired format of the web services client. Although the process 1600 is described using stored procedures to read, insert, update and delete data, those of skill in the art will understand that other methods of reading, inserting, updating and deleting data may be used, such as native SQL commands (e.g., SELECT, INSERT INTO, UPDATE, DELETE FROM, etc.). Furthermore, although the process 1600 is described using a .NET framework to access the data source 115, those of skill in the art will understand that other methods, protocols and application programming interfaces for accessing data may be used by the facility 100.
The foregoing description details certain embodiments of the invention. It will be appreciated, however, that no matter how detailed the foregoing appears in text, the invention can be practiced in many ways. For example the facility can be implemented as a distributed computing system, with components of the facility being implemented and/or executed on disparate systems that are connected over a network. The facility could equally well be executed as a standalone system. Moreover, the facility may utilize third-party services and data to implement all or portions of its functionality. Although the subject matter has been described in language specific to structural features and/or methodological steps, it is to be understood that the subject matter defined in the claims is not necessarily limited to the specific features or steps described. Rather, the specific features and steps are disclosed as preferred forms of implementing the claimed subject matter.
The above Detailed Description of embodiments of the invention is not intended to be exhaustive or to limit the invention to the precise forms disclosed. While various embodiments are described in terms of the environment described above, those skilled in the art will appreciate that various changes to the facility may be made without departing from the scope of the invention. For example, various embodiments are described in the context of application servers such as Microsoft Office SharePoint Server. Those skilled in the art will understand that the facility 100 may interact with various other application servers and components of application servers. As another example, those skilled in the art will appreciate that the actual implementation of the data source 115 may take a variety of forms. The term “data source” is used herein in the generic sense to refer to any data structure that allows data to be stored and accessed, such as databases, tables, linked lists, arrays, etc. As another example, while processes or blocks are presented in a given order, alternative embodiments may perform routines having steps, or employ systems having blocks, in a different order, and some processes or blocks may be deleted, moved, added, subdivided, combined, and/or modified to provide alternatives or subcombinations. Each of these processes or blocks may be implemented in a variety of different ways. Also, while processes or blocks are at times shown as being performed in series, these processes or blocks may instead be performed in parallel, or may be performed at different times.
These and other changes can be made to the invention in light of the above Detailed Description. Accordingly, the actual scope of the invention encompasses not only the disclosed embodiments, but also all equivalent ways of practicing or implementing the invention under the final claims.
This application claims the priority of U.S. Provisional Application No. 60/939,287, entitled COMPOSITE ASSET DESIGNER, filed May 21, 2007, the entirety of which is hereby incorporated by reference.
| Number | Date | Country | |
|---|---|---|---|
| 60939287 | May 2007 | US |