1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- Process Enactment
- =================
- A final operation that is useful to modellers, is the enactment of process models.
- When enacting a process model, a series of operations on models is automatically executed.
- Finding process models
- ----------------------
- To find process models, you can easily query the Modelverse for models that conform to *ProcessModel*.
- All such models can be executed, given that the models and operations they refer to, exist.
- Enacting process models
- -----------------------
- To enact the process model, such as *query_state_space*, you must execute the following operation::
- >>> process_execute("models/query_state_space", "my_", {})
- There are three parameters to this function, the first obviously being the name of the process model.
- The second parameter is a prefix for the models used in the process model.
- When executing a process model, data is processed and produced.
- By providing a prefix, the names of these models are first prefixed with the prefix, before they are resolved.
- As such, it becomes possible to execute a process in different contexts.
- .. note::
- This behaviour is likely to change in the future, with the process taking a mapping from the terms in the process model, to actual names.
- The third parameter is a dictionary of callbacks.
- For each activity, it is possible for users to define a callback function.
- This function will be invoked when the specific activity is executed.
- For example, a manual operation will require user input, for which this callback function can then serve.
- In this case, lets assume that an activity in the process model, termed *refine_petrinet*, is a manual operation and requires user interaction.
- The call then becomes::
- >>> def callback():
- ... # Any code required to create the Petrinet
- ... p = instantiate(None, "Place")
- ... t = instantiate(None, "Transition")
- ... instantiate(None, "P2T", (p, t))
- ... # Alternatively, we could have used raw_input() or so to prompt the user
- ...
- >>> process_execute("models/query_state_space", "my_", {"models/refine_petrinet": callback})
- When the process executes *refine_petrinet*, the callback function is executed, and the manual operation is terminated when the function terminates.
- Other types of operation, such as *model transformations* and *action language* can also have a callback function, but this is usually less important to end users and is therefore not elaborated on here.
|