Transformation Tool
Transformation Definition
CHAPTER 11: MODEL TRANSFORMATION
Architecture and Modelling
- f Information Systems (D0I71A)
- Prof. dr. Monique Snoeck
CHAPTER 11: MODEL TRANSFORMATION Transformation Definition - - PowerPoint PPT Presentation
Architecture and Modelling of Information Systems (D0I71A) Prof. dr. Monique Snoeck CHAPTER 11: MODEL TRANSFORMATION Transformation Definition Transformation Tool 2 Agenda Model Transformations General approach Transformation
Transformation Tool
Transformation Definition
Architecture and Modelling
Transformation Tool
Transformation Definition
18:12
Transformation Tool
Transformation Definition
18:12
models models
code transformation engine transformation definition
Transformation Tool
Transformation Definition
18:12
Transformation Tool
Transformation Definition
18:12
Transformation Tool
Transformation Definition
Specifications
18:12
Code
Specifications Object Interaction Pattern OO –relational Storage Pattern
Code
Object Interaction Pattern OO –relational Storage Pattern Other Architectural Pattern Other Architectural Pattern
Transformation Tool
Transformation Definition
18:12
Transformation Tool
Transformation Definition
18:12
Domain Model Information System Services Enterprise Layer Persistence + Business Logic Event Handling Layer User Interface Transactions Queries Business Process Models Business Process Engine
Transformation Tool
Transformation Definition
18:12
Transformation Tool
Transformation Definition
18:12
Domain Model Enterprise Layer Persistence + Business Logic
Transformation Tool
Transformation Definition
Class Project private Department owningDept Class Department private SET(Project) projects Class Employee private SET(DeptAssignment) assmtHistory Class Employee private Department mydepartement
18:12
Transformation Tool
Transformation Definition
18:12
Domain Model Enterprise Layer Persistence + Business Logic
Transformation Tool
Transformation Definition
18:12
Attribute of Object Type Association Object Type participates in Attribute in Implementation Class Association Attribute in Implementation Class Object Type Implementation Class Factory 1 method per event type the object type participates in + 1 method for checking the corresponding preconditions Abstract Class
Database Layer Business Logic
Transformation Tool
Transformation Definition
18:12
Object Type's FSM Abstract state class (associated with mapped class) For each State of the FSM, a State subclass of the mapped Abstract state class Per mapped State subclass, methods for checking state con- ditions for each event in of the mapped Abstract state class Database Layer Business Logic
Transformation Tool
Transformation Definition
Public boolean isValidReturnDate (Date d){ return d.compareTo(today) > 0 } … if isValidReturnDate(input_returnDate) { this.returnDate = input_returnDate; } else { throw new RuntimeException("return date is not valid.");}
18:12
Transformation Tool
Transformation Definition
18:12
Domain Model Event Handling Layer
Transformation Tool
Transformation Definition
18:12
Transformation Tool
Transformation Definition
18:12
Transformation Tool
Transformation Definition
18:12
Transformation Tool
Transformation Definition
18:12
MERODE OET UML Collaboration Diagram PSM/ Code
Messaging Pattern ?
Transformation Tool
Transformation Definition
18:12
Transformation Tool
Transformation Definition
18:12
Platform Independent Model
Business Event Object
Object/Event Involvement
Mapping
Mapping Rules for
Execution
Platform Specific Model Platform Choice
Transformation Tool
Transformation Definition
18:12
1 2
Transformation Tool
Transformation Definition
18:12
Transformation Tool
Transformation Definition
18:12
PRODUCT TYPE PRODUCT ORDER ORDER LINE
(2) Check modify_quantity (3) Check modify_quantity (4) Checkmodify_quantity (1) modify_quantity OK OK OK Done Done Done Done (1) Check modify_quantity (2) modify_quantity (3) modify_quantity (4) modify_quantity
Transformation Tool
Transformation Definition
18:12
BOOK MEMBER LOAN RESERVATION fetch loan.member = reservation.member loan.book = reservation.book
Transformation Tool
Transformation Definition
18:12
Event
PRODUCT TYPE PRODUCT ORDER ORDER LINE
modify_quantity
Modify Quantity
Check modify quantity
Done Done Done Done
modify quantity
Done Ok Ok Ok Ok
Transformation Tool
Transformation Definition
e:Event Handler
:Object Type s :StateClass checkEvent() OK_prec = checkEvent() getCurrentState() s = getCurrentState() checkEvent() IS1 :InputService handleEvent(o1) OK_state = checkEvent() Result = handleEvent() event() 1 2 event() 3 4
18:12
Transformation Tool
Transformation Definition
18:12
1 1 2 2 3 4 3 4
Transformation Tool
Transformation Definition
18:12
Event
PRODUCT TYPE PRODUCT ORDER ORDER LINE
modify_quantity
Modify Quantity
Check modify quantity
Done Done Done Done
modify quantity
Done
Check done by Event Handler
Transformation Tool
Transformation Definition
18:12
Event
PRODUCT TYPE PRODUCT ORDER ORDER LINE
modify_quantity
Modify Quantity
Check modify quantity
Done Done Done Done
modify quantity
Done
Check done by Rules Engine Rules Engine OK
Transformation Tool
Transformation Definition
18:12
Transformation Tool
Transformation Definition
Member Book Loan Borrow A/M A/M O/C
18:12
Class Eventhandler borrow (m:member, b: book) is local new_loan : LOAN require do lock m lock b check Preconditions loan check preconditions member check preconditions book if OK then create new_loan.borrow(db.loans.new_id, book, member) db.loans.extend(new_loan) – stores new loan in database b.borrow(new_loan) m.borrow(new_loan) unlock member unlock copy end
Transformation Tool
Transformation Definition
Member Book Loan Borrow A/M A/M O/C
18:12
MEMBER LOAN BOOK
borrow
borrow
Done Done Done
Borrow
Done
Transformation Tool
Transformation Definition
18:12
Transformation Tool
Transformation Definition
18:12
Transformation Tool
Transformation Definition
Generator Engine
18:12
Transformation Tool
Transformation Definition
1.
2.
3.
18:12
Transformation Tool
Transformation Definition
18:12
<note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
Transformation Tool
Transformation Definition
18:12
String name String nr
<mxp:metamodel lastid="13"> <mxp:datatypes /> <mxp:metaobjects> <mxp:metaobject id="1" name="a" abstract="false"> <mxp:metadescription /> <mxp:metaconstraints /> <mxp:metamultiplepropagationconstraints /> <mxp:metaattributes> <mxp:metaattribute id="12" name="name" type="String" type-id="1"> <mxp:description /> <mxp:validation /> <mxp:implementation /> </mxp:metaattribute> <mxp:metaattribute id="13" name="nr" type="String" type-id="1"> <mxp:description /> <mxp:validation /> <mxp:implementation /> </mxp:metaattribute> / t tt ib t
Transformation Tool
Transformation Definition
18:12
<mxp:metaevents> <mxp:metaevent id="2" name="cr_a"> <mxp:metadescription /> <mxp:metaattributes /> </mxp:metaevent> <mxp:metaevent id="3" name="end_a"> <mxp:metadescription /> <mxp:metaattributes /> </mxp:metaevent> </mxp:metaevents>
Transformation Tool
Transformation Definition
18:12
<mxp:metamethods> <mxp:metamethod id="4" name="cr_a" provenance="OWNED" type="CREATE" ownerobjectid="1" ownereventid="2"> <mxp:metaprecondition /> <mxp:metaimplementation /> <mxp:metapostcondition /> <mxp:metaattributes /> </mxp:metamethod> <mxp:metamethod id="5" name="end_a" provenance="OWNED" type="END" ownerobjectid="1" ownereventid="3"> <mxp:metaprecondition /> <mxp:metaimplementation /> <mxp:metapostcondition /> <mxp:metaattributes /> </mxp:metamethod> </mxp:metamethods>
Transformation Tool
Transformation Definition
public abstract class $object.objName { // ---------------- attributes -------------------- #foreach ($attribute in $object.attributes.entrySet()) private $attribute.attributeType $attribute.attributeName; #end // ---------------- dependencies -------------------- #foreach ($master in $object.masters.entrySet()) private $master.masterName $master.masterName.toLowerCase(); #end ... }
18:12
Transformation Tool
Transformation Definition
public abstract class Loan { // ---------------- attributes -------------------- private int loanID; private Date loanDate; private Date returnDate; // ---------------- dependencies -------------------- private Member member; private Copy copy;
18:12
Transformation Tool
Transformation Definition
#foreach ( $method in $object.ownedMethods ) .... #if ($method.isEndingMethod) if(hasLivingDependents()) throw new MerodeException ("Precondition violation in ending method \"${method.methodName}\" in class ${object.objectName}:\nObject has living dependents"); .... #end
18:12
Transformation Tool
Transformation Definition
public class Aimpl extends A { ... public void check_end_a() throws MerodeException { if(hasLivingDependents()) throw new MerodeException ("Precondition violation in ending method \"end_a\" in class A:\nObject has living dependents"); } .... }
18:12
Transformation Tool
Transformation Definition
18:12
Transformation Tool
Transformation Definition
18:12
Transformation Tool
Transformation Definition
18:12
XMI: <UML:Class visibility="public" isSpecification="false" isRoot="false" isLeaf="false" isAbstract="false" isActive="false" stereotype="sentity" xmi.id="484" name="A"> <UML:Classifier.feature> <UML:Attribute visibility="private" isSpecification="false" ownerScope="instance" xmi.id="485" name="naam" type="987654321"/> <UML:Attribute visibility="private" isSpecification="false" ownerScope="instance" xmi.id="487" name="nr" type="987654321"/> <UML:Operation visibility="public" isSpecification="false" ownerScope="instance" isQuery="false" concurrency="sequential" isRoot="false" isLeaf="false" isAbstract="false" xmi.id="490" name="cr_a" stereotype="soc"> <UML:BehavioralFeature.parameter> <UML:Parameter kind="return" type="dvoid" xmi.id="mp490"/> </UML:BehavioralFeature.parameter> </UML:Operation> <UML:Operation visibility="public" isSpecification="false" ownerScope="instance" isQuery="false" concurrency="sequential" isRoot="false" isLeaf="false" isAbstract="false" xmi.id="491" name="end_a" stereotype="soe"> <UML:BehavioralFeature.parameter> <UML:Parameter kind="return" type="dvoid" xmi.id="mp491"/> </UML:BehavioralFeature.parameter> </UML:Operation> </UML:Classifier.feature> </UML:Class>
Transformation Tool
Transformation Definition
18:12
Transformation Tool
Transformation Definition
18:12
Transformation Tool
Transformation Definition
18:12
Transformation Tool
Transformation Definition
18:12
PIM
Decentralization Algorithm
PSM PSM PSM
Business Process Modeler Deploy and distribute
Code Code Code
Transformation Tool
Transformation Definition
18:12
Transformation Tool
Transformation Definition
18:12
rule Task2Process { from s: BPMN20!Task to newTask: BPMN20!Task ( id <- s.id, name <- s.name ), endev: BPMN20!EndEvent ( id <- 'EndEvent' + s.id, eventDefinitions <- outputDef ),
id <- 'outputDef' + s.id, signalRef <- outputSignal ),
id <- 'Signal' + s.id), ), process: BPMN20!Process ( id <- 'sid-Process' + s.id, flowElements <- Sequence{newTask}, flowElements <- Sequence{outputSeqFlow}, flowElements <- Sequence{endev}, flowElements <- s.getEventRule()
)
Ecore MetaMetaModel ATL BPMN2.0 BPMN2.0 BPMN2EventBPMN Source Model Target Model
Conforms to Conforms to Conforms to Conforms to Transformation Conforms to
Transformation Tool
Transformation Definition
18:12
Transformation Tool
Transformation Definition
18:12
PIM
Pattern-based coordination
PSM PSM PSM
Business Process Modeler Deploy and distribute
Code Code Code
Transformation Tool
Transformation Definition
18:12
Transformation Tool
Transformation Definition
Maintenance of transformation is harder than maintenance of “normal” code
18:12