| Currently this project is under development. This document describes a general workflow and will |
| point out where the solution is currently incomplete and needs further work. |
| |
| The following workflow has used to create the profile and generate EMF source code for the static profile: |
| |
| 1. The original OMG model BPMNProfile.xmi has to be copied to file BPMNProfile_modified.uml. |
| The copied model has to be modified to work correctly as input for EMF to be used as EMF meta model. |
| Also the derived properties have do be specified via OCL expressions according to the specification |
| in a way the Eclipse OCL project supports (via EAnnotations). Constraints that cannot be expressed |
| via OCL, code for derived properties has to be written in Java in the generated Java sources. |
| |
| The modifications to the model are at the current state incomplete. The following chances have already been done: |
| |
| The structureRef properties of the following classes have been modified. |
| The was typed with uml::Class and |
| EAnnotation(source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"){ derivation->self.base_Class } |
| was added to the property |
| |
| * BPMNProfile::CoreStructure::Common::Events::Escalation |
| * BPMNProfile::CoreStructure::Common::Events::BPMNSignal |
| * BPMNProfile::CoreStructure::Common::Events::Error |
| |
| The structureRef property of the following class were modified by adding |
| the EAnnotaion defined above above: |
| BPMNProfile::CoreStructure::Common::ItemDefinition |
| |
| TODO define the following derived properties: |
| BPMNProfile-Collaboration-BPMNCollaboration-participants |
| BPMNProfile-Collaboration-BPMNCollaboration-conversationLinks |
| BPMNProfile-Collaboration-MessageFlow-sourceRef |
| BPMNProfile-Collaboration-MessageFlow-targetRef |
| BPMNProfile-Collaboration-MessageFlow-messageRef |
| BPMNProfile-Collaboration-Participant-processRef |
| BPMNProfile-Collaboration-Participant-participantMultiplicity_ |
| BPMNProfile-Collaboration-Participant-partnerEntityRef |
| BPMNProfile-Collaboration-Participant-partnerRoleRef |
| BPMNProfile-Collaboration-Participant-partnerRoleRef |
| BPMNProfile-Collaboration-Participant-interfaceRefs |
| BPMNProfile-Collaboration-ParticipantAssociation-innerParticipantRef |
| BPMNProfile-Collaboration-ParticipantAssociation-outerParticipantRef |
| BPMNProfile-Collaboration-Conversation-CallConversation-calledCollaborationRef |
| BPMNProfile-Collaboration-Conversation-CallConversation-participantAssociations |
| BPMNProfile-Collaboration-Conversation-ConversationNode-participantRefs |
| BPMNProfile-Collaboration-Conversation-ConversationLink-collaboration |
| BPMNProfile-Collaboration-Conversation-ConversationLink-sourceRef |
| BPMNProfile-Collaboration-Conversation-ConversationLink-targetRef |
| BPMNProfile-Collaboration-InteractionNode-outgoingConversationLinks |
| BPMNProfile-Collaboration-InteractionNode-incomingConversationLinks |
| BPMNProfile-Collaboration-ParticipantMultiplicity-minimum |
| BPMNProfile-Collaboration-ParticipantMultiplicity-maximum |
| |
| 2. Define a file "BPMNProfile_merge.uml" containing a profile that merges all packages from the modified profile from the OMG standard. |
| Annotate the profile with the EPackage stereotype from the Ecore UML profile and set |
| * nsURI to http://www.omg.org/spec/BPMNProfile/20121112/BPMNProfile.xmi |
| * base package to "org.eclipse.upr" |
| * package name to "bpmn" |
| |
| 3. Copy that file and save under name "bpmn.profile.uml". In this file we actually replace the package merge declaration |
| by actual copies of the merged packages. |
| |
| 4. Unfortunately the UML2 Package Merge mechanism (Eclipse UML model tree editor, via main menu entry |
| UML Editor -> Package -> Merge ...) does not work with nested packages being merged. So instead we |
| use an own QVTO transformation for this. It can be found in "org.eclipse.upr.bpmn.mover\transforms\SimplePackageMerge.qvto". |
| So execute this transformation on file "bpmn.profile.uml". |
| |
| 5. Create a GenModel from file "bpmn.profile.uml", loading this model as a meta model. |
| Set copyright text on root element and add EAnnotation to root element, so that the OCL expressions get compiled to Java source code. |
| |
| Currently there are no formalized OCL expressions and code generation does not work at the moment (it is throwing a NullPointerException) |