- presentation layer: typically, it is a Web GUI application. Presentation layer invokes Web Services provided by business process layer.
- business process layer: It provides Web Service for Presentation layer or direct visit from other systems. It orchestrate the business logic among different system, organization, or different roles. It is built to support change - different application has different business model and logic; and business model and logic change over time.
- service bus routing layer: It routes service requests to the right business process; it features content based routing or dynamic routing.
- service bus data transformation layer: to translate between internal language, described as information model, to external system language.
- common service layer: manage internal business entities that are stored in the persistence layer. The following paradigms are used :
- =>1) Common operations: an XQuery based reading operation, an entire XML write operation (course-grained)
- => 2) Specific operations: fine-grained write operations can be added only when performance could be optimized - update certain attributes of a XML document - or a very complex writing to many XML documents. (Note: This is different from traditional approach, which provides setter/getter operation for each attributes of the object). Realization technology: EJB. Web Service is not the first candidate due to performance concern - the invoker is enterprise service bus or the business process layer, which are system internal invocations.
- => XQuery Registry could be used to improve development efficiency. Developers get used to getOrderByOrderId("oid") style way to search the database. This new proposed XQuery based read operations requires the user to compose XQuery string directly. XQuery Registry may ease the pain of composing XQuery all the time - it registeres all XQuery string to a central repository and assign a alias for each string. Then a XQuery function extentsion ("agile-soa" as the example namespace) could be used to refer to the the XQuery String directly.
- integration layer: integrate with external application - other systems in the same enterprise, or partner's systems.
- and persistence layer: typically, it is an XML database.
In below example part, I will use the Oracle based platform. (more tom come)