Implementing x schemas - sjdayday/xschema GitHub Wiki
An x-schema is implemented as a Petri net. This means that any x-schema can be built from Petri net primitives, e.g., as implemented in PIPECore. However, we propose to make the semantics of x-schemas explicit, to support the following use cases. As an example, we will build an x-schema to model grasping an object.
- [create an x-schema dynamically](Create x-schema dynamically)
- [expand the ongoing process of an x-schema](Expand ongoing process as an x-schema ), implementing the ongoing process as the execution of another x-schema
- [link two x-schemas](Link two x-schemas) through a common state, such that marking the state in one x-schema also marks it in the other schema
- [expand a single transition](Expand single transition), replacing it with the contents of one or more other x-schemas
- [add optional standard semantics to an x-schema](Add optional standard semantics), e.g., suspend / suspended, cancel / canceled, etc.
- [pass parameters to an x-schema](Pass parameters); optionally, the parameters may be updated by the x-schema and the updates read by the caller.
There are other x-schema capabilities defined in the literature; we propose to start with these, and add more capabilities as necessary.
This example shows how the Grasp x-schema can be implemented using the existing PIPECore functions. The example code is lengthy and prone to errors; the goal of this project is to make building such x-schemas simpler and more robust.