On the one hand, workflow parameters
- are managed via the user interface,
- and read from the workflow instances (active workflows) in the background.
In both cases, the program needs to know
- which configuration memories are required (IACConfigStore),
- in what order they are read
- and which is the current configuration memory under which the parameters are saved (current data context).
This is done using the following interfaces:
A. User interface
In the programs (business objects) for managing material workflows, bill of materials, production orders, picking orders, etc. there is a tab in which workflows are displayed graphically. The parameters that are changed and added via the control dialog (gip.core.autocomponent.VBBSOControlPW) must be stored in the correct configuration memory. The control dialog receives this information via the property "IACConfigStoreSelection.CurrentConfigStore" of the currently selected graphic workflow object (property "VBBSControlPW. CurrentPWInfo"). The graphic object in turn is an instance of a class that implements "gip.core.datamodel.IACComponentPWNode":
- PWOfflineNodeMethod: Model-class for displaying workflow nodes at the time of definition (inactive workflow).
- PWBase : Base class for all workflow nodes that are instantiated on the server side (active workflow).
- PWNodeProxy : Proxy class for PWBase (client-side instances).
The overwrite sequence is defined using the "IACConfigStoreSelection.MandatoryConfigStores" property. It is a sorted list of configuration memories (IACConfigStore). All IACComponentPWNode must therefore provide this list so that the control dialog can display the configuration memories for which a certain parameter has been overwritten.
The interface IACConfigURL is required so that the correct parameter for the selected workflow node can be read and written from the configuration memory . It is used to uniquely address a configuration parameter within a workflow. Through "IACConfigURL.ConfigACUrl" the current configuration table ("IACConfigStoreSelection.CurrentConfigStore") is filtered by property "IACConfig.ConfigACUrl". The ConfigACUrl is formed from "IACConfig.PreConfigACUrl" and "IACConfig.LocalConfigACUrl".
The PreConfigACUrl is required for "subroutine calls" - when a workflow calls a subworkflow, the PreConfigACUrl points to the calling workflow. This "call stack information" is provided by "IACConfigURL.PreValueACUrl". Since IACComponentPWNode inherits from the IACConfigURL interface, the workflow instance itself knows from which "parent workflow" the "subworkflow", to which the workflow instance belongs, was called. The "call stack" - that is the call sequence of workflows - provides the property ACConfigMethodHierarchy from interface IACConfigMethodHierarchy. IACComponentPWNode also inherits from this interface.
During the declaration phase, when workflows using PWOfflineNodeMethod-Instances are presented, there are actually no subroutine calls. This is only possible during runtime if PWBase derivatives are instantiated. If configuration changes are made during runtime, the corresponding live workflow instances must be informed so that they can reload the changed configuration from the database just-in-time. Since changes are only accepted into the database with the "Save" button, it can happen that several sub-workflows into which the user previously navigated are affected at the same time. The relevant BSO must remember this information. For this reason, BSOs that display workflows must implement the IACBSOConfigStoreSelection interface. Every time a configuration parameter is changed via the control dialog, it informs the corresponding BSO of the workflow (or subroutine) in which the parameter was changed by calling the "IACBSOConfigStoreSelection. AddVisitedMethods()"-method. The BSO then remembers all subroutine calls in the property "List <ACClassMethod> VisitedMethods" until the storage process is carried out on the database. If the save process is successful, the active workflows (on the server side) are notified using the "ConfigManagerIPlus.ReloadConfigOnServerIfChanged()"-method - a class, that implmenents IACConfigProvider .
B. Background
The logic described under A. is extensive on the one hand, and on the other hand it is also required in the background, if workflows or workflow nodes are active and have to read their own configuration. Ultimately, it is about reading or manipulating configuration parameters and hiding the complexity of parameter overrides (sequence of configuration memories) in combination with subroutine calls.
This is guaranteed by means of the IACConfigProvider interface. Derivatives of PWBase and the control dialog (VBBSOControlPW) use the methods provided there. The class gip.core.autocomponent.ConfigManagerIPlus implements this interface. ConfigManagerIPlus is stateless and is provided as a local service at "\LocalServiceObjects\VarioConfigManager". ConfigManagerIPlus only works with configuration memories from the "gip.core.datamodel" data model. The derived class gip.mes.processapplication.ConfigManagerIPlusMES is used for "iPlus-MES", that can handle configuration memories from the "gip.mes.datamodel" data model.