230 likes | 394 Views
Outline. Introduction Motivation Architectural integration Model-driven solution Land Registry Court Process– A Case study Conclusion and Outlook. Data flow in process-driven SOAs. Process activities can invoke service operations Service operations can invoke database operations
E N D
Outline Introduction Motivation Architectural integration Model-driven solution Land Registry Court Process– A Case study Conclusion and Outlook
Data flow in process-driven SOAs Process activities can invoke service operations Service operations can invoke database operations Database operations access the database
Current Problems Up-to-date it is not easy to find out… Which process activities require which database operations? Which services require which database operations? Which database operations can be discarded? Reason: No sufficient modeling solutions to link database operations to service operations
Current Problems Up-to-date it is not easy to find out… if a required database operation already exists and can be reused where (in which database/ schema/ table) a required column can be found Reason: Insufficient searching capabilities for existing database operations
Main objectives of our solution Better software reuse Data Access Object (DAO) reuse should not be limited on the underlying Object-Relational Mapping technology the underlying RDBMS Platform Central repository for storing Data Access Object (DAO) models Better integration of data and services Relating a flow of database operations to a service operation Separation of Concerns e.g. by separating a flow of database operations from other business logic
Architectural view 4-component architecture Service operation flow of database operations Central Data Access Object (DAO) Repository for better DAO reuse
Service Operation Flow Modeling database operations into service operations Separate View for data flows within a service operation Separate database operations from other business logic operations
DAO Repository Central repository Basic Functionality: Publishing DAOs Updating DAOs Deleting DAOs Retrieving DAOs by different search criteria (column, table database, ORM) Separate view for database/service developers
Viewbased Data Modeling Framework Extends the basic Viewbased Modeling Framework Different views for different stakeholders A specific view for each architectural component High level vs. low level views Technology-specific vs. -independent views
Different View Levels High level: Control-Flow View Service Repository View DAO Flow View Low level: DAO Repository View Technology-independent: ORM View Data Object View Physical Data View Database Connection View Technology-specific: ORM HIBERNATE View JAVA Data Object View MYSQL Physical Data View JDBC Database Connection View
Case Study: Process Flow Modeling the process of filing an application at the land register court Process activities can invoke either service operations or human tasks Using the Control-Flow View model, the Collaboration View model and the information View-model for modeling the process Generating BPEL WSDL definition of the model instances
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions targetNamespace="" xmlns="" xmlns:="" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:provided="" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <wsdl:types> <xsd:schema targetNamespace="" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:complexType name="ApplicationType"> <xsd:sequence> <xsd:element name="text" type="AccountFeesRequest"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="PersonAddressType"> <xsd:sequence> <xsd:element name="street" type="AccountFeesRequest"/> <xsd:element name="streetNumber" type="AccountFeesRequest"/> <xsd:element name="place" type="AccountFeesRequest"/> <xsd:element name="country" type="AccountFeesRequest"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="PersonType"> <xsd:sequence> <xsd:element name="personAddress" type="PersonAddressType"/> <xsd:element name="name" type="AccountFeesRequest"/> <xsd:element name="dateOfBirth" type="SaveApplicationResponse"/> <xsd:element name="placeOfBrith" type="AccountFeesRequest"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="FeesType"> <xsd:sequence> <xsd:element name="amount" type="ValidateApplicationRequest"/> <xsd:element name="currency" type="AccountFeesRequest"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ReponseType"> <xsd:sequence> <xsd:element name="result" type="AccountFeesRequest"/> <xsd:element name="value" type="ExcecuteApplicationResponse"/> </xsd:sequence> </xsd:complexType> </xsd:schema> </wsdl:types> <wsdl:message name="DeliverDismissalRequest"> <wsdl:part name="Application" type="provided:org.eclipse.emf.ecore.impl.DynamicEObjectImpl@c39a20 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@a1d1f4 (name: ComplexType) (instanceClassName: null) (abstract: false, interface: false))"/> </wsdl:message> <wsdl:message name=""/> <wsdl:message name="DeliverDismissalResponse"> <wsdl:part name="Response" type="provided:org.eclipse.emf.ecore.impl.DynamicEObjectImpl@100ebec (eClass: org.eclipse.emf.ecore.impl.EClassImpl@a1d1f4 (name: ComplexType) (instanceClassName: null) (abstract: false, interface: false))"/> </wsdl:message> <wsdl:message name=""/> <wsdl:portType name="Delivery"> <wsdl:operation name="DeliverDismissal"> <wsdl:input message="provided:DeliverDismissalRequest" name="in"/> <wsdl:output message="provided:DeliverDismissalResponse" name="out"/> </wsdl:operation> <wsdl:operation name="DeliverApprovalAndFees"> <wsdl:input message="provided:DeliverApprovalAndFeesRequest" name="in"/> <wsdl:output message="provided:DeliverApprovalAndFeesResponse" name="out"/> </wsdl:operation> </wsdl:portType> </wsdl:definitions> Case Study: Generated WSDL … … 14
Case Study: Service Operation Flow Process Flow Service Operation Flow
Case Study: Service Operation Flow UML notation Ecore notation
Case Study: DAO Repository Database extract:
Conclusion A Model-Driven four-component architecture to enable… Better Integration of data and services: Separate DAO flows from the whole business logic Separation of Concerns: Each view model tailored to the requirements of different stakeholders Better software reuse: A central repository for managing Data Access Objects
Open issues • Requirements and scope of operation of a view-based, model-driven repository • Improved search algorithms e.g. by using ontologies • Runtime statistics (e.g. how often a DAO operation is invoked?) • Detailed specification of Service operation flows 21