In earlier {{UBIK}} versions, Workflows were used for this purpose. However, since {{UBIK}} version 4, Microsoft WF workflows have fallen increasingly out of favor because support for WF Workflows was abandoned in Microsoft's netstandard framework, which {{UBIK}} relies on. Thus, {{UBIK}} Actions can be seen as the designated replacement for WF Workflows in {{UBIK}}.
= EConfiguration of {{{UBIK}} Actions =Long story short: Use the ''ACTION'' MetaClass to specify a method to execute. Then, relate it to a MetaClass using the ''SYSREL_METACLASS_ACTION'' so it can be found for instances of that MetaClass. See below for a deeper understanding of how to use and customize {{UBIK}} Actions. = Entity-R Model relation model =
The core of {{UBIK}} Actions consists of a C# interface and a relationship between MetaClasses and Actions.
Additionally, there are several convenience utilities to accommodate the definition and configuration of Actions.
== IUBIKAction Interface and SYSREL_METACLASS_ACTION Relationship ==
To configure an Action for an object, one has to declare it as an Action and link it to the MetaClass of the object (or, if the object is a MetaClass itself, to the object). This is enabled by the C# interface IUBIKAction and the system relationship ''SYSREL_METACLASS_ACTION''.
'''IUBIKAction C# interface and SYSCLS_ACTION Classification'''
The IUBIKAction interface guarantees the following methods:
<syntaxhighlight lang="csharp">
}
</syntaxhighlight>
Further, the {{UBIK}} Relationship SYSREL_METACLASS_ACTION is used to relate MetaClasses to any {{UBIK}} object implementing that interface.
== SYSCLS_ACTION Classification and ACTION MetaClass ==
To add the IUBIKAction C# interface to the custom code of a {{UBIK}} MetaClass, the classification SYSCLS_ACTION can be assigned to a MetaClass that should define Actions.
'''SYSREL_METACLASS_ACTION system Relationship''' Further, the {{UBIK}} Relationship ''SYSREL_METACLASS_ACTION'' is used to relate MetaClasses to any {{UBIK}} object implementing the interface described above. == The ACTION MetaClass == The ACTION MetaClass has this the required classification by default and provides a basic implementation for the configuration of a target method. Similar to the obsolete Workflow MetaClass, it provides Boolean properties to flag an Action either for instances or MetaClasses. Also, it has two string properties for the identification of a target method and the class it is defined in:
{| class="wikitable" style="float:none" align="left"
The {{UBIK}} object to perform this action for must be specified for the target class and method, and the target class and method must be accessible. This means both the class and the method must be public. Also, either the method or the class constructor must take a ''BaseClass'' as a parameter. Static methods and classes are also supported. In case of a non-static method, the owning class must have a public constructor without parameters or with a single ''BaseClass'' parameter.
The DLL containing the target method ({{UBIK}} custom code is also supported) must be available to {{UBIK}}, for example in the ''Injection'' folder.
== Further possibilities for customization ==
As explained above, the fundamental core requirement for an Action really is the IUBIKAction interface. Therefore, any MetaClass implementing it can be used as an Action MetaClass - as long as it is derived from ''SYSTEMOBJECT'' as a root MetaClass. Further, the methods provided by the ''ACTION'' default implementation can be overridden and customized using custom object code.
= Triggering {{UBIK}} Actions =