Entity: ModelElement1 209 34 null * name String 3 false true false Entity: Guard 194 156 ModelElement1 * Operation: toActivity Guard void true ( oe : OpaqueExpression ) # ( oe.name1 = name & oe.language = expression.language & oe.body = expression.body ) Entity: BooleanExpression 262 231 null * language String 3 false false false body String 3 false false false Entity: ModelElement2 638 45 null * name1 String 3 false true false Entity: OpaqueExpression 615 140 ModelElement2 * language String 3 false false false body String 3 false false false Entity: StateVertex 71 51 ModelElement1 * abstract Operation: toActivity StateVertex void abstract true true Type: PseudostateKind 26 466 initial join fork junction Entity: State 56 162 StateVertex * Operation: toActivity State void true true Entity: CompositeState 11 228 State * Operation: toActivity CompositeState void true true Entity: FinalState 72 282 State * Operation: toActivity FinalState void explicit true ( afn : ActivityFinalNode ) # ( afn.name1 = name ) Entity: ActionState 153 295 State * Operation: toActivity ActionState void true ( n : OpaqueAction ) # ( n.name1 = name ) Entity: ObjectFlowState 296 327 State * Operation: toActivity ObjectFlowState void true ( n : DataStoreNode ) # ( n.name1 = name & n.type = type ) Entity: Pseudostate 6 336 StateVertex * kind PseudostateKind 3 false false false Operation: toActivity Pseudostate void true ( kind = initial => InitialNode->exists( n | n.name1 = name ) ) & ( kind = join => JoinNode->exists( n | n.name1 = name ) ) & ( kind = fork => ForkNode->exists( n | n.name1 = name ) ) & ( kind = junction => ( incoming.size = 1 => DecisionNode->exists( n | n.name1 = name ) ) & ( incoming.size > 1 => MergeNode->exists( n | n.name1 = name ) ) ) Entity: Transition 107 116 ModelElement1 * Operation: toActivity Transition void source.name : ActivityNode.name1 & target.name : ActivityNode.name1 ( ( source : ObjectFlowState or target : ObjectFlowState ) => ( f : ObjectFlow ) # ( f.name1 = name & f.source = ActivityNode[source.name] & f.target = ActivityNode[target.name] & f.guard = OpaqueExpression[guard.name] ) ) & ( ( source /: ObjectFlowState & target /: ObjectFlowState ) => ( f : ControlFlow ) # ( f.name1 = name & f.source = ActivityNode[source.name] & f.target = ActivityNode[target.name] & f.guard = OpaqueExpression[guard.name] ) ) Entity: ActivityNode 772 290 ModelElement2 * Entity: ActivityFinalNode 685 457 ActivityNode * Entity: Event 410 115 null * Entity: ActivityEdge 512 226 ModelElement2 * Entity: OpaqueAction 588 574 Action * Entity: ForkNode 796 526 ActivityNode * Entity: JoinNode 860 503 ActivityNode * Entity: DecisionNode 925 463 ActivityNode * Entity: MergeNode 990 400 ActivityNode * Entity: Action 603 425 ActivityNode * Entity: AcceptEventAction 520 522 Action * Entity: Type 473 364 null * Entity: ObjectNode 650 288 ActivityNode * Entity: DataStoreNode 506 286 ObjectNode * Entity: InitialNode 981 324 ActivityNode * Entity: ObjectFlow 715 198 ActivityEdge * Entity: ControlFlow 716 226 ActivityEdge * Entity: ValueSpecification 481 45 ModelElement2 * Entity: ActivityGraph 8 12 ModelElement1 * Operation: toActivity ActivityGraph void true ( a : Activity ) # ( a.name1 = name & a.node = ActivityNode[top.subvertex.name] & a.edge = ActivityEdge[transitions.name] & a.group = ActivityPartition[partition.name] ) Entity: Activity 896 59 ModelElement2 * Entity: SimpleState 252 395 State * Operation: toActivity SimpleState void true ( n : AcceptEventAction ) # ( n.name1 = name & n.trigger = outgoing.trigger ) Entity: SMtoActivity 362 543 null * Operation: init SMtoActivity void true ag : ActivityGraph & ag.name = "ag" & is : Pseudostate & is.name = "is" & is.kind = initial & fs : FinalState & fs.name = "fs" & as1 : ActionState & as1.name = "Request service" & as2 : ActionState & as2.name = "Pay" & as3 : ActionState & as3.name = "Collect order" & as4 : ActionState & as4.name = "Take order" & as5 : ActionState & as5.name = "Deliver order" & as6 : SimpleState & as6.name = "Restock" & as7 : ActionState & as7.name = "Fill order" & t : Type & of1 : ObjectFlowState & of1.name = "Placed Order" & of1.type = t & of2 : ObjectFlowState & of2.name = "Entered Order" & of2.type = t & of3 : ObjectFlowState & of3.name = "Filled Order" & of3.type = t & of4 : ObjectFlowState & of4.name = "Delivered Order" & of4.type = t & ds1 : Pseudostate & ds1.name = "ds1" & ds1.kind = junction & ds2 : Pseudostate & ds2.name = "ds2" & ds2.kind = junction & dc1 : Pseudostate & dc1.name = "dc1" & dc1.kind = fork & dc2 : Pseudostate & dc2.name = "dc2" & dc2.kind = join & be1 : BooleanExpression & be1.language = "text" & be1.body = "in stock" & g1 : Guard & g1.name = "g1" & g1.expression = be1 & be2 : BooleanExpression & be2.language = "text" & be2.body = "not in stock" & g2 : Guard & g2.name = "g2" & g2.expression = be2 & t0 : Transition & t0.name = "t0" & t0.source = is & t0.target = as1 & t1 : Transition & t1.name = "t1" & t1.source = as1 & t1.target = dc1 & t2 : Transition & t2.name = "t2" & t2.source = dc1 & t2.target = as2 & t3 : Transition & t3.name = "t3" & t3.source = as2 & t3.target = dc2 & t4 : Transition & t4.name = "t4" & t4.source = dc1 & t4.target = of1 & t5 : Transition & t5.name = "t5" & t5.source = of1 & t5.target = as4 & t6 : Transition & t6.name = "t6" & t6.source = as4 & t6.target = of2 & t7 : Transition & t7.name = "t7" & t7.source = of2 & t7.target = ds1 & t8 : Transition & t8.name = "t8" & t8.source = ds1 & t8.target = ds2 & t8.guard = {g1} & t9 : Transition & t9.name = "t9" & t9.source = ds1 & t9.target = as6 & t9.guard = {g2} & tr : Event & t10 : Transition & t10.name = "t10" & t10.source = as6 & t10.target = ds2 & t10.trigger = {tr} & t11 : Transition & t11.name = "t11" & t11.source = ds2 & t11.target = as7 & t12 : Transition & t12.name = "t12" & t12.source = as7 & t12.target = of3 & t13 : Transition & t13.name = "t13" & t13.source = of3 & t13.target = dc2 & t14 : Transition & t14.name = "t14" & t14.source = dc2 & t14.target = as5 & t15 : Transition & t15.name = "t15" & t15.source = as5 & t15.target = of4 & t16 : Transition & t16.name = "t16" & t16.source = of4 & t16.target = as3 & t17 : Transition & t17.name = "t17" & t17.source = as3 & t17.target = fs & cs : CompositeState & cs.name = "cs" & cs.subvertex = {is,fs,as1,as2,as3,as4,as5,as6,as7,of1,of2,of3,of4,ds1,ds2,dc1,dc2} & ag.top = cs & ag.transitions = {t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17} & p1 : Partition & p1.name = "p1" & p1.contents = {as1,t1,dc1,t4,t2,as2,t16,as3} & p2 : Partition & p2.name = "p2" & p2.contents = {t5,as4,t6,t13,dc2,t14,as5,t15} & p3 : Partition & p3.name = "p3" & p3.contents = {t7,ds1,t8,t9,as6,as7,ds2,t10,t11,t12} & ag.partition = {p1,p2,p3} Entity: ActivityPartition 953 227 ModelElement2 * Association: Guard BooleanExpression -1 227 190 264 248 1 expression null Association: CompositeState StateVertex 1 16 231 72 56 0 subvertex null Association: Transition Guard -1 136 138 204 190 -1 guard null Association: Transition Event 0 169 125 412 119 -1 trigger null Association: AcceptEventAction Event 0 525 525 419 138 -1 trigger null Association: ObjectFlowState Type 0 390 348 475 371 1 type null Association: DataStoreNode Type 0 556 308 519 368 1 type null Association: Transition StateVertex 0 110 119 91 73 1 source outgoing Association: Transition StateVertex 0 158 118 134 73 1 target incoming Association: ActivityEdge ValueSpecification 0 517 228 513 68 -1 guard null Association: ActivityGraph Transition -1 14 33 109 125 0 transitions null Association: ActivityGraph CompositeState 0 20 42 24 241 1 top null Association: Activity ActivityNode -1 921 81 837 292 0 node null Association: Activity ActivityEdge -1 900 81 550 227 0 edge null Association: Partition ModelElement1 0 437 40 346 69 0 contents null Association: Activity ActivityPartition -1 941 80 984 230 0 group null Generalisation: ModelElement1 Guard 228 159 218 70 Generalisation: ModelElement2 OpaqueExpression 620 147 579 67 Generalisation: ModelElement1 StateVertex 137 59 211 61 Generalisation: ModelElement1 Transition 169 120 210 66 Generalisation: StateVertex Pseudostate 12 338 75 72 Generalisation: StateVertex State 85 165 81 73 Generalisation: State CompositeState 69 228 65 197 Generalisation: State FinalState 117 285 111 195 Generalisation: State ActionState 154 299 113 179 Generalisation: State ObjectFlowState 298 329 110 171 Generalisation: ModelElement2 ActivityNode 832 293 758 79 Generalisation: ActivityNode ActivityFinalNode 772 458 777 311 Generalisation: ModelElement2 ActivityEdge 522 228 640 77 Generalisation: ActivityNode ForkNode 806 529 805 312 Generalisation: ActivityNode Action 632 428 773 309 Generalisation: Action AcceptEventAction 590 524 606 447 Generalisation: Action OpaqueAction 641 577 639 447 Generalisation: ActivityNode JoinNode 864 506 837 313 Generalisation: ActivityNode DecisionNode 928 467 842 312 Generalisation: ActivityNode MergeNode 995 404 843 298 Generalisation: ActivityNode ObjectNode 723 308 772 307 Generalisation: ObjectNode DataStoreNode 598 296 653 296 Generalisation: ActivityNode InitialNode 984 327 842 293 Generalisation: ActivityEdge ObjectFlow 719 206 585 230 Generalisation: ActivityEdge ControlFlow 718 233 583 246 Generalisation: ModelElement2 ValueSpecification 589 52 641 52 Generalisation: ModelElement1 ActivityGraph 83 20 212 38 Generalisation: ModelElement2 Activity 899 62 783 54 Generalisation: State SimpleState 291 398 112 167 Generalisation: ModelElement2 ActivityPartition 963 229 782 78 Association: ActivityGraph Partition -1 84 15 414 23 0 partition null Association: ActivityEdge ActivityNode 0 579 249 823 292 1 source null Association: ActivityEdge ActivityNode 0 522 248 777 297 1 target null Association: ActivityPartition ActivityNode 0 955 247 840 296 0 containedNode null Entity: Partition 412 5 ModelElement1 * Operation: toActivity Partition void true ( ap : ActivityPartition ) # ( ap.name1 = name & ap.containedNode = ActivityNode[contents.name] ) Generalisation: ModelElement1 Partition 414 39 348 42 Activity: CompositeState toActivity subvertex.toActivity() Activity: SMtoActivity null init() ; CompositeState.toActivity() ; Guard.toActivity() ; Transition.toActivity() ; Partition.toActivity() ; ActivityGraph.toActivity()