Standardmäßig werden Shared Function durch den einmaligen Import eines Shared Fragment in das System übernommen. Durch Anwenden der Shared-Fragment-Regeln werden die in den eingelesenen Shared Fragments enthaltenen Shared Functions mit normalen Prozessinstanzfragmenten zusammengeführt, wobei alle Objekte des Shared Fragment in die Fragmentinstanz kopiert werden. Dadurch ist die Eindeutigkeit einer Shared Function automatisch sichergestellt und zur Unterscheidung von Shared Functions kann die Funktions-ID einer Shared Function verwendet werden.
Wenn Sie Shared Functions als normale Fragmentinstanzen mittels Event-Format direkt importieren, wird für jede importierte Funktion eine eindeutige ID erzeugt. Die Funktions-ID kann nicht als Erkennungsmerkmal einer Shared Function verwendet werden. In diesem Fall können Sie eine Shared-Function-Dimension definieren, wobei identische Dimensionswerte Funktionen zu Shared Functions zusammenfassen. Nicht gepflegte Dimensionswerte werden nicht berücksichtigt.
Eine Shared-Function-Dimension hat folgende Eigenschaften:
Pro Mandant kann nur eine einzige Shared-Function-Dimension definiert werden.
Die Shared-Function-Dimension muss an Prozessbaumwurzel angemeldet werden.
Die Shared-Function-Dimension ist an der Oberfläche nicht sichtbar.
Die Shared-Function-Dimension kann nicht mit CTK angepasst werden.
Beispiel
Das folgende Beispiel zeigt Auszüge aus den Kennzahlen- und Prozessbaumkonfigurationsdateien. Für Funktionen, die ein Attribut AT_IS_SHARED_FUNCTION mit Wert true gepflegt haben, konkateniert die Berechnungsvorschrift des für die Shared-Function- Dimension verwendeten Funktionsattributes AT_SHARED_FUNCTION_ID den internen Funktionsnamen mit dem Zeitstempel der Funktionsausführung.
Dateiauszug keyindicator.xml
...
<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>
...
Dateiauszug processtree.xml
...
<usesfdim name="SHARED_FUNCTTION" />
<processtypegroup name="Standard order"
dbtablename="CUBE1">
<processtype name="Order processing" autovisible="FALSE" />
</processtypegroup>
...