Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "STP/IM Component/Transformation Approaches/From BPMN/Runtime Technology Based"
(→Transformation Rules Sketch) |
(→Transformation Rules Sketch) |
||
Line 25: | Line 25: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
+ | ! Rule ID | ||
! From | ! From | ||
! To | ! To | ||
|- | |- | ||
+ | | R1 | ||
| BPMN!BpmnDiagram | | BPMN!BpmnDiagram | ||
| IM!StpIntermediateModel[IM!ProcessCollection, IM!ServiceCollection] | | IM!StpIntermediateModel[IM!ProcessCollection, IM!ServiceCollection] | ||
|- | |- | ||
+ | | R2 | ||
| BPMN!BpmnDiagram.getEAnnotation(IM_VERSION_ANNOTATION) | | BPMN!BpmnDiagram.getEAnnotation(IM_VERSION_ANNOTATION) | ||
| IM!BasicProperty[ITER_VERSION] | | IM!BasicProperty[ITER_VERSION] | ||
+ | |||
|- | |- | ||
+ | | R3 | ||
| BPMN!BpmnDiagram.getEAnnotation(IM_ITER_ANNOTATION) | | BPMN!BpmnDiagram.getEAnnotation(IM_ITER_ANNOTATION) | ||
| IM!BasicProperty[IM_ITER_NAME] | | IM!BasicProperty[IM_ITER_NAME] | ||
IM!BasicProperty[IM_ITER_FIRST_PROCESS_NAME] | IM!BasicProperty[IM_ITER_FIRST_PROCESS_NAME] | ||
+ | |||
IM!BasicProperty[IM_ITER_RULE_FOR_DETERMINATION] | IM!BasicProperty[IM_ITER_RULE_FOR_DETERMINATION] | ||
+ | |||
IM!BasicProperty[IM_ITER_RULE_FOR_DETERMINATION_LANGUAGE] | IM!BasicProperty[IM_ITER_RULE_FOR_DETERMINATION_LANGUAGE] | ||
+ | |||
IM!BasicProperty[IM_ITER_OBSERVABLE_ATTRIBUTE_LIST_SIZE] | IM!BasicProperty[IM_ITER_OBSERVABLE_ATTRIBUTE_LIST_SIZE] | ||
+ | |||
IM!BasicProperty[IM_ITER_OBSERVABLE_ATTRIBUTE_MAP] | IM!BasicProperty[IM_ITER_OBSERVABLE_ATTRIBUTE_MAP] | ||
+ | |||
Collection{IM!BasicProperty[IM_ITER_OBSERVABLE_ATTRIBUTE_ID]} | Collection{IM!BasicProperty[IM_ITER_OBSERVABLE_ATTRIBUTE_ID]} | ||
+ | |||
|- | |- | ||
+ | | R4 | ||
| BPMN!Pool.getEAnnotation(TECHNOLOGY_ANNOTATION); | | BPMN!Pool.getEAnnotation(TECHNOLOGY_ANNOTATION); | ||
| map serviceBindingsMap := Collection{IM!ServiceBinding} | | map serviceBindingsMap := Collection{IM!ServiceBinding} | ||
Collection{IM!Service[bindings := serviceBindingsMap]} | Collection{IM!Service[bindings := serviceBindingsMap]} | ||
|- | |- | ||
+ | | R5 | ||
| BPMN!Pool | | BPMN!Pool | ||
| IM!Process[properties += IM!BasicProperty[PROCESS_VERSION]] | | IM!Process[properties += IM!BasicProperty[PROCESS_VERSION]] | ||
|- | |- | ||
+ | | R6 | ||
| BPMN!Artifact | | BPMN!Artifact | ||
| IM!Variable | | IM!Variable | ||
|- | |- | ||
+ | | R7 | ||
| BPMN!Vertex | | BPMN!Vertex | ||
| IM!Step | | IM!Step | ||
|- | |- | ||
+ | | R8 | ||
| BPMN!SequenceEdge | | BPMN!SequenceEdge | ||
| IM!Transition | | IM!Transition | ||
|- | |- | ||
+ | | R9 | ||
| BPMN!Subprocess | | BPMN!Subprocess | ||
| Collection{IM!Step} | | Collection{IM!Step} |
Revision as of 20:29, 11 May 2008
This transformation can be found in the class org.eclipse.stp.im.in.bpmn2im.Bpmn2ImWorkspaceOperation
under the method with the following signature:
public StpIntermediateModel createIntermediateModelFromBpmn(BpmnDiagram bpmnDiagram, List<String> selectedPools, IProgressMonitor monitor){ ... }
Transformation Outline
- The BPMN diagram version is read and a IM property is created with this version.
- "IM Iter Configuration" starts: the "im.iter" EAnnotation from the BPMN diagram is read and copied to the IM instance.
- The used runtimes are read from the BPMN diagram. This is done by reading the "technology" EAnnotation from every
Pool
. For each used runtime:- Create
ServiceBinding
s. - Create
Service
s and put them in aServiceCollection
.
- Create
- For each
Pool
:- Create a
Process
. - Copy BPMN process artifacts into IM process variables.
- For each
Activity
:- Create a
Step
. If thisActivity
is aSubprocess
, find inner activities and create moreStep
s.
- Create a
- For each
SequenceEdge
:- Create a
Transition
. If thisSequenceEdge
'sActivity
on the source side is aSubprocess
, find innerSequenceEdge
s and create moreTransition
s.
- Create a
- Create a
Transformation Rules Sketch
Rule ID | From | To |
---|---|---|
R1 | BPMN!BpmnDiagram | IM!StpIntermediateModel[IM!ProcessCollection, IM!ServiceCollection] |
R2 | BPMN!BpmnDiagram.getEAnnotation(IM_VERSION_ANNOTATION) | IM!BasicProperty[ITER_VERSION] |
R3 | BPMN!BpmnDiagram.getEAnnotation(IM_ITER_ANNOTATION) | IM!BasicProperty[IM_ITER_NAME]
IM!BasicProperty[IM_ITER_FIRST_PROCESS_NAME] IM!BasicProperty[IM_ITER_RULE_FOR_DETERMINATION] IM!BasicProperty[IM_ITER_RULE_FOR_DETERMINATION_LANGUAGE] IM!BasicProperty[IM_ITER_OBSERVABLE_ATTRIBUTE_LIST_SIZE] IM!BasicProperty[IM_ITER_OBSERVABLE_ATTRIBUTE_MAP] Collection{IM!BasicProperty[IM_ITER_OBSERVABLE_ATTRIBUTE_ID]} |
R4 | BPMN!Pool.getEAnnotation(TECHNOLOGY_ANNOTATION); | map serviceBindingsMap := Collection{IM!ServiceBinding}
Collection{IM!Service[bindings := serviceBindingsMap]} |
R5 | BPMN!Pool | IM!Process[properties += IM!BasicProperty[PROCESS_VERSION]] |
R6 | BPMN!Artifact | IM!Variable |
R7 | BPMN!Vertex | IM!Step |
R8 | BPMN!SequenceEdge | IM!Transition |
R9 | BPMN!Subprocess | Collection{IM!Step}
Collection{IM!Transition} |