Shared-Fragment-Schlüssel ordnen Prozessinstanzfragmenten Shared Fragments zu. Shared Fragments sind spezielle Prozessfragmente, die ausschließlich an mehreren Prozessinstanzen beteiligte Funktionen enthalten. Da diese Funktionen im Quellsystem nur einmal ausgeführt werden, aber in mehreren Prozessinstanzen auftreten, heißen sie Shared Functions.
Shared Fragments werden über den XML-Import im Graphformat eingelesen. Die Definition des Graphen eines Shared Fragment enthält das Prozessinstanzattribut AT_IS_SHARED_FRAGMENT mit dem Wert TRUE. Alle Funktionen eines Shared Fragment müssen durch den Wert TRUE des Funktionsattributs AT_IS_SHARED_FUNCTION als Shared Function gekennzeichnet sein. Während des Imports wird für jedes importierte Shared Fragment mindestens ein Shared-Fragment-Schlüssel berechnet. Shared Fragments, für die kein Schlüssel berechnet werden kann, werden nicht importiert.
Die Shared-Fragment-Schlüsselregeln werden auf alle importierten Prozessinstanzfragmente angewendet. Bei der Weiterverarbeitung (runppmimport) werden alle Fragmente (Shared Fragments und Prozessinstanzfragmente), für die identische Shared-Fragment-Schlüssel berechnet wurden, in eine Prozessinstanz geschrieben und anschließend anhand der Merge-Regeln verkettet.
Der Shared-Fragment-Schlüssel bewirkt das Kopieren der Shared Fragments in eine Prozessinstanz. Zum Verketten von Shared Fragments untereinander oder mit normalen Prozessinstanzfragmenten müssen geeignete Regeln angegeben werden, die vom verwendeten Merge-Verfahren abhängig sind.
Zum Kopieren eines Prozessfragments in eine Prozessinstanz kann ein Shared-Fragment-Schlüssel nur einmal verwendet werden. Nach der ersten Verwendung wird der Schlüssel aus der Prozessinstanz entfernt. Daher werden Kopien von Shared Fragments in einer Prozessinstanz nicht aktualisiert, wenn sich ein Shared Fragment ändert.
Beispiel
Für die Ereignisse mit den Identifizierern EVT_ACE und EVT_GIK wird eine Shared-Fragment-Schlüsselregel erzeugt, die einen Shared-Fragment-Schlüssel aus dem Wert des Attributs AT_XYZ bildet.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE keyrules SYSTEM "keyrules.dtd">
<keyrules>
...
<sharedfragmentkeyrule>
<refobjects>
<refobject objecttype="OT_EVT">
<objectname name="EVT_ACE"/>
<objectname name="EVT_GIK"/>
</refobject>
</refobjects>
<keyparts>
<keypart attributetype="AT_XYZ"/>
</keyparts>
</sharedfragmentkeyrule>
...
</keyrules>