The LSPS model update mechanism allows you to update one or multiple model instances on runtime so they use a new version of the underlying model for their execution:
A model instance is created based on a model. The instance itself holds only runtime data, such as, which element is currently executed, values of variables, model instance ID, etc. The static data, such as the BPMN flows, remains in the model. Using the model update feature, you adapt the runtime data and "switch" the model for another model. The execution of the model instance then continues according to the new model.
Before you can perform the "switch", you need to define how to adapt the runtime data so the model instance can use the new model; for example, if you change the data type of a variable from String to Integer, you need to define how to convert the String value to the Integer value.
These rules are defined in a model update definition with the Model Update Editor which is based on the Comparison Editor. It is strongly recommended to get familiar with model comparing before using the Model Update Editor.
Important: The model-update feature does not support update of form definitions; hence if you are updating semantics and data of a form that is used in a document or a to-do, make sure to reset any running or saved to-dos and documents. Saved documents and to-dos are NOT part of the update.
Model update is performed in the following phases:
The elements that were being executed when the model instance was suspended are transformed as defined in their pre-process.
The runtime data of the model instance is transformed to follow the new model. Its data types and variables are updated to their target types and values, and instantiated model elements are transformed according to their transformation strategies.
The post-processes of instantiated elements prepare the respective elements for running.
Important: On model update, changed closures are checked for compatibility. If an incompatible change is detected in a new version of a closure is detected, the system displays a dialog with details. You can then continue the model update; however, the updating might fail. In such a case, consider using the Restart strategy on the given element.