Software AG suite takes on SOA

12.09.2006

Viewed from the outside, Service Orchestrator appears as a bicameral engine that responds to the arrival of messages (documents) at a crossvision installation by activating the applications to process those documents. One half is the Orchestrator runtime engine, a component factory for the executable elements of a service. The other part is a Web application, which manages document routing and provides the portals to the outside world through which documents enter and leave.

Orchestrator acts like a kind of document digestive system. A document arrives, delivered via e-mail, JMS, a SOAP message, or HTTP; its arrival triggers the execution of code that examines characteristics such as the document's name, extension, origin, and specific contents to determine how it is to be processed.

After Orchestrator establishes the "how" of the processing, it then summons the appropriate code to do the actual work. This work could be as simple as shuttling the document to its destination or as complex as extracting disparate data from various portions of the document, forming a brand-new doc with it and depositing the result into an e-mail inbox.

Orchestrator's documentation refers to the source code as a "sequence," which is a mixture of Java components and XML. The flow of control is specified in the XML, and the Java components -dubbed "Orchestrator Components" -perform the actual heavy lifting. Orchestrator's runtime is itself an Orchestrator Component called a Sequencer Component, and a source-code file is called a Sequence Document. A Sequence Document is a collection of processing elements that you can call on in a manner similar to the way you would call methods in an API.

In Orchestrator, the "methods" are the Java components, and messages are the documents. The XML acts as executable glue that binds the processing elements, and orchestrates their behavior into a usable program. This glue includes fundamental sequence control (execute statement A, then execute statement B) and decision making (that is, if/then statements).