The present invention relates to computer software systems and more particularly to systems employing service oriented architecture (SOA) using extensible markup language (XML).
Conventional software applications in the past have been modified by re-writing sections of code, re-compiling, and re-linking the code to create a new application. This can be a time consuming process when creating new software applications to meet different customer needs.
Service oriented architecture (SOA) is a relatively new software-based architecture that is not tied to a specific technology. SOA defines the use of software services to support the requirements of system processes. In an SOA environment, resources on a network are made available as independent services that can be accessed without knowledge of their underlying platform implementation. SOA based systems may be independent of particular development technologies and platforms such as user developed Java and .Net.
Part of creating an SOA application is the use of extensible markup language (XML). XML provides a mechanism for communicating with hierarchical self-describing data and syntax. XML documents are used for transmitting complex data structures and generally contain information such as data elements, tags, mechanisms to define the tags, and user definitions of the tags. XML information is manifested as text interspersed with syntax that indicates the separation of information into a hierarchy of character data, elements, descriptions, and attributes of those elements. The names, hierarchy and meanings of elements and attributes are definable by a customizable schema. The syntax of such XML-based languages is rigid. XML documents must adhere to XML-based rules to assure that XML parsers will understand the arrangement of information within them. These syntax rules are supplemented with a set of constraints. Additionally, schemas often restrict element and attribute names and their allowable containment hierarchies. Constraints in a schema may also include data type assignments that affect how information is processed. There is a need to improve upon existing XML-based communication of information to program and support a wide variety of software behavior in SOA environments.
A system and method for communicating XML documents in a service oriented architecture environment are provided. XML requests are made through the employment of XML documents having at least one programmatic request that are sent and received between software-based components of the system. A programmatic request may be a request that provides instructions or directions for a software program to complete. An XML schema defines programmatic behavior and provides instructions on how to process XML documents containing programmatic requests.
A user interface of the computer software-based system sends an XML request, as an XML document having at least one programmatic request, to an application component. The application component processes the request and builds a generic XML request that is sent to a broker. The broker accesses a registry storing namespace information. The broker obtains instructions stored in the registry based on the namespace information and the generic XML request (XML document containing a programmatic request) received. The broker converts the generic XML request to a specific XML service request. The specific XML service request may be sent from the broker to a selected translator for translation in order for the request to meet the requirements of the service that services the XML request. Software-based components of the system (such as the application, broker, registry, translators, and services components) may reside in a computer-controlled device or be in a distributed environment residing on multiple computer-controlled devices.
A computer implemented system and method for communicating XML documents in a service oriented architecture environment are provided. An application component receives an XML request as an XML document having at least one programmatic request. The application component builds a generic XML request in response to receipt of the XML document having at least one programmatic request. A broker adapted to receive the generic XML request from the application component accesses a registry storing namespace information. The broker converts the generic XML request to a specific XML service request. A translator receives the specific XML service request from the broker and translates the specific XML service request to meet requirements of a service that services the XML request. The broker obtains instructions stored in the registry based on the namespace information and the generic XML request received. The broker converts the generic XML request to the specific XML service request based on the instructions retrieved from the registry.
Referring to
The software-based components of system 100 communicate by the sending and receiving of XML documents. As seen in the example in
System 100, having service oriented architecture, uses XML documents to transfer programmatic requests between the software-based components. The XML documents used for communication between the components of system 100 have programmatic requests. A programmatic request may be a request that issues instructions or directions for a software program to complete. Thus, in addition to data elements and tags as provided in typical XML documents, programmatic requests are contained in XML documents transmitted between the components of system 100. XML requests (such as a request from user interface to an application to perform a task) may be sent as XML documents containing programmatic requests. An application 120 that calls on a service 130 to perform a task may, for example, transmit an XML document with a programmatic request in addition to data information. An XML request, in the form of an XML document, is sent by the appropriate application component 120 to broker 140 that accesses registry 150. Registry 150 may identify a particular translator 170 to translate an XML document having a programmatic request. The appropriate service 130 may then service the XML request.
To provide communication of XML documents (having programmatic requests) among the components of system 100, an XML schema is followed. The XML schema employed in system 100 defines the programmatic behavior of the different components of the framework, instead of just defining data. The XML schema provides instructions on how to process XML documents containing programmatic requests. The XML schema, because it defines programmatic requests (as well as data) comprises a language grammar. Registry 150 permits control of access rights for changes and a mechanism for extension to the grammar.
As seen in
Registry 150 stores information of any type. Information stored in registry 150 may relate to: a user making a request; specifics of an application; a computer device providing a service to be initiated; and permissions held by a user. In particular, namespace information is stored at registry 150. Namespace information may be permanently stored at registry 150, or alternatively, the registry may be coupled to a server 160 for periodically receiving updated namespace information from the server. A namespace is a collection of names, identified by a Uniform Resource Identifier (URI) reference, that are used in XML documents as element types and attribute names. In order for XML documents to be able to use elements and attributes that have the same name but come from difference sources, differentiation between markup elements that come from different sources is needed. System 100 utilizes namespaces to provide different applications 120 with the ability to have the same requests processed in different ways. Additionally, users or applications may desire to prevent other applications from processing data in the same way. Registry 150 provides a mechanism for uniqueness of definition for application specific XML calls, based on modifications needed for a user or a group of users.
When broker 140 uses registry 150, the broker may perform the following operations: determine the application component 120 that has made a request; examine the namespace at registry 150 to see if a specific collection of information is defined for the application; search entries in the namespace for an entry that matches or does not match the request; compare user permissions to access requirements in an entry; perform instructions in the registry 150 which produces a new request form; verify the priority, type of service and quality of service parameters stored in registry 150 or provided by the application component 120 to determine the viability of starting a service 130 and the appropriateness of starting the service immediately; check other services within an operating system; and attempt to start a translator 170 with the request.
As seen in
Referring to
In step 208, broker 140 looks up instructions stored in registry 150 based on namespace information and the particular XML document (having a programmatic request) received from the application 120. The broker 140 then, in step 210, converts the generic XML request into a specific XML service request or requests, based on the instructions retrieved from the registry 150 that is specific to the computer processing the request. In step 212, the broker 140 sends the new specific XML service request (also in the format of an XML document with a programmatic request) to the translators 170. The broker 140 also tracks the progress of the specific XML service request in the system. In step 214, the appropriate translator 170 translates the XML document received from the broker (providing a specific service request) to meet the needs of the service 130 to process the request. In step 216, the appropriate service 130 processes the specific XML service request (as an XML document having a programmatic request) and sends a reply back to the user interface 110.
An authentication process may also be provided. Users may be authenticated on startup of system 100 by logging in with a user name and password. In the system 100, namespaces may be assigned to a collection of components of an application or applications 120 developed for a user. The namespace data, for example that is stored at namespace server 160, may be accessible only by users that have a valid key for that namespace. Only users that are provided proper access may use appropriate applications. For example, users who are licensed by a customer can use the applications developed for that customer. Namespace data may, for example, be loaded from a USB (Universal Serial Bus) drive or accessed directly from a web site. The software based components of system 100 and their installation may further be loadable from a USB drive.
As stated, XML documents are sent and received between various software-based components in system 100. The individual components of the system 100 may, for example, reside in computer-controlled devices. In alternative examples, the software-based components may also be distributed across multiple computer-controlled devices. In this example, a simple object access protocol (SOAP) header may be added to the XML request. The XML request having the SOAP header may be sent to a predefined IP address through a request manager. In this distributed application example, support for computer-based devices with limited computing resources (e.g. cell phones, dedicated use computing devices, etc.) may be provided. Additionally, wide area network (WAN) communication may also be provided using a relay implementation. A relay may pass XML requests to registered systems connected over the wide area network through a virtual private network (VPN).
The XML schema creates a mapping between programmatic requests and software code that processes the requests. By being declarative in nature, the XML schema allows application developers to decouple presentation and processing concerns by providing a common platform upon which applications of various types can be built. A number of interfaces may be used as part of the XML schema. For example, a multimedia interface may be employed which requests a multimedia session be initiated. After a response is received, both sides of a transmission will know the format of a multimedia stream and have the information necessary to begin a transmission. An audio-visual service interface operates with the multimedia interface to open a multimedia session.
A public message interface may be used to request that a public message be initiated, transmitted and received. A translator termination interface may be used to facilitate a clean translator termination. A termination message will be sent at exit time for the broker 140, and is initiated by the broker itself, with no response being generated. A chat service interface may be used to request that a chat session be opened, used and terminated. A panic alert interface may be used to send public and private alert messages to users. A user manager interface may be provided to allow for the management of all user functions (e.g. add, remove, change password).
A service description interface may be used that works with the service registry 150. The service registry captures information the broker 140 needs to know about the translators 170 and services 130 available within system 100 and the various XML tags that correspond to them. For each translator or service, information is provided for how the translator is to be invoked and what the physical transport mechanism is for messages within each service description are and information particular to the tags it recognizes.
As provided herein, programmatic requests, as well as data, are passed through the XML document. Instead of containing just data, the XML document passes programmatic requests. The programmatic requests determine the order and type of processing performed by the services 130. The XML schema, because it defines programmatic requests (as well as data) may provide a language grammar. The service oriented architecture provided, such as seen in system 100 in the example of
The foregoing description of the preferred embodiments of the invention have been presented for purposes of illustration and description, and are not intended to be exhaustive or to limit the invention to the precise forms disclosed. The descriptions were selected to best explain the principles of the invention and their practical application to enable others skilled in the art to best utilize the invention in various embodiments and various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention not be limited by the specification, but be defined by the claims set forth below.
This application claims priority from U.S. Provisional Application No. 60/865,727 filed on Nov. 14, 2006.
Number | Date | Country | |
---|---|---|---|
60865727 | Nov 2006 | US |