Link two x schemas - sjdayday/xschema GitHub Wiki

home or [back](Expand ongoing process as an x-schema )

Two schemas are linked together through the use of merge places. A place (state) in the child Petri net is added to the interface of that Petri net, which is called the "home" Petri net for that place. We call such a place a "merge place" -- a place that allows two Petri nets to be merged into a single larger Petri net at execution time. A home place is then available to be added to other Petri nets -- by default, those that are parents of the home Petri net. A merge place that is added to a Petri net other than its home is an "away" place. In our example, the Enabled place in Close_hand becomes a home place, and a corresponding away place is added to Grasp (Close_hand.Enabled), and connected to the Start transition via an outbound arc. Similarly, the Done place in Close_hand becomes a home place; a corresponding away place is added to Grasp (Close_hand.Done), and is connected to the Finish transition via an inbound arc.

images/grasp2.png

At execution time, the Grasp and Close_hand Petri nets are converted to a single executable Petri net. The away places are dropped from the net, and the arcs to or from the away places are re-drawn to or from the home places. To establish unique ids in the executable Petri net, the ids are prefixed with the Petri net names, in hierarchical sequence. In the example below, this has been shown only for the two home places (in purple), Grasp.Close_hand.Enabled and Grasp.Close_hand.Done.

images/grasp3.png

Expand single transition