By default, shared functions are transferred to the system through a one-time import of a shared fragment. Applying the shared fragment rules merges the shared functions that are contained in the imported shared fragments with the normal process instance fragments. All objects of the shared fragment are copied to the fragment instance. This automatically ensures the uniqueness of a shared function and you can use the function ID of a shared function to differentiate between shared functions.
If you directly import shared functions as normal fragment instances using event format, a unique ID is created for each imported function. The function ID cannot be used as characteristic of a shared function. You can, however, define a shared function dimension where identical dimension values combine functions into shared functions. Dimension values not specified are not included.
A shared function dimension has the following properties:
Example
The following example supplies excerpts from measure and process tree configuration files. For functions with an AT_IS_SHARED_FUNCTION attribute having the value true, the calculation rule of the AT_SHARED_FUNCTION_ID function attribute used for the shared function dimension concatenates the internal function name with the time stamp of the function execution.
keyindicator.xml file extract
...
<calcattr name="AT_SHARED_FUNCTION_ID" type="OT_FUNC" delete="yes">
<calculation>
<if>
<and mode="PPM4">
<exists mode="PPM4">
<filteredattribute name="AT_IS_SHARED_FUNCTION"
nodetype="OT_FUNC" objectname="this"
onerror="CONTINUE" filter="EARLY" />
</exists>
<eq mode="PPM4">
<filteredattribute name="AT_IS_SHARED_FUNCTION"
nodetype="OT_FUNC" objectname="this"
onerror="CONTINUE" filter="EARLY" />
<constant>
<dataitem value="TRUE">
TRUE
<datatype
name="BOOLEAN">Logical value</datatype>
</dataitem>
</constant>
</eq>
</and>
<then>
<concat mode="PPM4">
<set mode="PPM4">
<filteredattribute name="AT_OBJNAME_INTERN"
nodetype="OT_FUNC" objectname="this"
onerror="EXIT_WARNING" filter="EARLY" />
<convert datatype="TEXT">
<filteredattribute name="AT_END_TIME"
nodetype="OT_FUNC" objectname="this"
onerror="EXIT_WARNING" filter="EARLY" />
</convert>
</set>
</concat>
</then>
</if>
</calculation>
</calcattr>
...
<sharedfunctiondim name="SHARED_FUNCTION">
<description name="Shared Function" language="de" />
<description name="Shared Function" language="en" />
<dimitem attrname="AT_SHARED_FUNCTION_ID"
colname="SHARED_FUNCTION" calculated="TRUE">
<description language="de" name="SHARED_FUNCTION" />
<description language="en" name="SHARED_FUNCTION" />
</dimitem>
</sharedfunctiondim>
...
processtree.xml file extract
...
<usesfdim name="SHARED_FUNCTTION" />
<processtypegroup name="Standard order"
dbtablename="CUBE1">
<processtype name="Order processing" autovisible="FALSE" />
</processtypegroup>
...