200 likes | 343 Views
Modeling Process-Oriented Integration of Services Using Patterns and Pattern Primitives. Uwe Zdun and Schahram Dustdar Distributed Systems Group Institute of Information Systems TU Wien, Austria. Overview. Modeling process-driven SOAs based on proven practices
E N D
Modeling Process-Oriented Integration of Services Using Patterns and Pattern Primitives Uwe Zdun and Schahram Dustdar Distributed Systems Group Institute of Information Systems TU Wien, Austria
Overview • Modeling process-driven SOAs based on proven practices • Pattern survey of existing patterns • Patterns for integration of services and processes • Modeling patterns • A concept for modeling process-driven SOAs using pattern primitives • Integrating various models relevant for a process-driven SOA • Using flow models as glue for different kinds of models
Designing Process-Driven SOAs • Process-driven SOA = Process composition layer introduces a process engine • Design principles and proven practices of process-driven SOAs have not been well documented so far • Existing literature and approaches focus on specific technologies • As an architectural concept, process-driven SOAs are, however, in no way depending on specific technologies or composition techniques
Patterns for Process-Driven SOAs • Software patterns provide a systematic reuse strategy for design knowledge • Each pattern is a three-part rule, which expresses a relation between a certain context, a problem, and a solution • A pattern language is a collection of patterns that solve the prevalent problems in a particular domain and context • Patterns support the general understanding of the “timeless” aspects of SOA as an architectural concept • A survey on existing SOA patterns • Pattern language that explains proven practices for process-oriented integration of services in a SOA
Example: “Full-blown” process-based integration architecture
Patterns for Process-Driven SOAs: Open Issues • However: A pattern is described in an informal form • Instead, patterns describe many possible variants of a software solution • Pattern instances are hard to trace in the models and implementations • Design rationale gets lost as the software evolves • But …
Pattern primitives • We propose model patterns through identifying and representing a number of pattern primitives • Documenting pattern primitives means to find precisely describable modeling elements • Represent basic units of abstraction in the domain of the pattern • Originally proposed in the context of architectural patterns • We apply the pattern primitive concept for the precise description of proven practices of process-driven SOAs
Approach • Analysis of each pattern and existing known uses of the pattern in a pattern language • Elicitation of pattern primitives • Each primitive is precisely defined in the context of the UML2 meta-model using OCL constraints • Mapping Primitives → Patterns • Validation of primitives in known uses of the patterns • Validation by building tool support for the primitives
Modeling Process-Driven SOAs: Open Issues • In the scope of process-driven SOAs many kinds of models need to be considered: • message flow specifications • the workflow or business process languages • programming languages and snippets written in programming languages • business object design models • … • Concept is needed to integrate the various kinds of models that are relevant for the patterns of process-driven SOA
Pattern primitives for Process-Driven SOAs • Different models that are relevant for a process-driven SOA come together in various kinds of “flow” models: • Flow models for long-running business processes • Activity steps in long-running processes • Short-running technical processes • Activity steps in Short-running technical processes. • They are a glue for all the other models that are involved in a process-driven SOA
Primitives elicited in the sub-set of the pattern language • Process Flow Refinement • Process Flow Steps • Macroflow Model • Microflow Model • MacroMicroflow Refinement • Restricted Macroflow Step Types • Restricted Microflow Step Types • Synchronous Service Invocation • Asynchronous Service Invocation • Fire and Forget Invocation • One Reply Asynchronous Invocation • Multiple Reply Asynchronous Invocation • Process Control Data Driven Invocation
Example Primitive: Macro-Microflow Refinement • Macro-Microflow Refinement Primitive models the situation that Microflow Models are allowed to refine Macroflow Models • We can model this primitive by extending the Microflow Model primitive • In particular, if the refinedActivityNode and refinedActivity tag values of a Microflow are not empty, the Microflow is a refinement of another Microflow, a Macroflow, or a MacroflowSteps Activity -- If a Microflow Activity refines another Activity, then this -- other Activity must be itself stereotyped as Macroflow, -- MacroflowSteps, or Microflow context Microflow inv: if (self.refinedActivity->notEmpty() and self.refinedActivityNode->notEmpty()) then Macroflow.baseActivity->exist(a | a = self.refinedActivity) or MacroflowSteps.baseActivity->exist(a |a = self.refinedActivity) or Microflow.baseActivity->exist(a | a = self.refinedActivity) endif
Example: Modeling Macro-Microflow • Macro-microflow pattern: • Structure a process model into two kinds of processes, macroflow and microflow • Strictly separates the macroflow from the microflow, and use the microflow only for refinements of the macroflow activities • Both in macroflows and microflows we can observe refinements • The different kinds of refinement can be modeled using the Process Flow refinement primitive • Process Flow Refinement is a generic primitive that can be used for modeling all kinds of process refinements
Example Macroflow model containing ProcessControl Data Driven Invocations and a Refinement
Conclusion • Modeling process-driven SOA based on proven practices • Broad validation of the patterns and primitives in a large number of industrial and research systems • Primitives: semi-formal modeling approach for process-driven SOAs • Avoids that the design knowledge and rationale gets lost or the patterns' constraints might get violated • The primitives are represented in the various flow models • Integrate the different kinds of models relevant for the patterns • Approach is very general and can easily be used with other process modeling approaches
Next Steps • We are continuing to work on a pattern language for process-driven SOA • We are documenting more primitives formally • We are currently developing a model-driven tool suite • Support the generation of models in other modeling languages (such as BPEL or source code • We are going to develop a visual notation for the stereotypes (or integrate the approach in other notations)