Merge-Schlüsselregeln

Merge-Schlüsselregeln dienen dem Verschmelzen von Merge-Ereignissen innerhalb einer Prozessinstanz. Auf diese Weise werden die durch Prozessschlüssel zugeordneten Prozessinstanzfragmente zu einer Prozessinstanz verkettet.

Merge-Schlüssel werden aus bestimmten Objektattributen des Prozessinstanzfragments berechnet. Mit ihrer Hilfe wird die Ablauflogik der Prozessinstanz rekonstruiert und die unverbundenen Fragmente werden entsprechend verkettet.

PPM unterscheidet zwei Merge-Verfahren:

Das gewünschte Merge-Verfahren wird in der XML-Konfigurationsdatei *_merger.xml angegeben. Der Aufbau dieser Datei ist durch die DTD mergerconfig.dtd vorgegeben.

Datei mergerconfig.dtd (1. Teil)

<!ELEMENT mergerconfig ( mergehandling, connectorhandling? )>

<!ELEMENT mergehandling ( sharedfragmentmerge?, processmerge?, eventmerge+ )>

<!ATTLIST mergehandling eventmode (startevent | endevent | importtime) "importtime">

<!ELEMENT sharedfragmentmerge ( algorithm )>

<!ELEMENT processmerge ( algorithm?, mergeattributes?)>

<!ATTLIST processmerge

mode (replace|update) 'replace'>

<!ELEMENT eventmerge ( mode, condition?, algorithm? )>

<!ATTLIST eventmerge

key ID #IMPLIED

priority CDATA #IMPLIED>

<!ELEMENT condition EMPTY>

<!ATTLIST condition

classname NMTOKEN #REQUIRED

value (TRUE|FALSE) 'TRUE'

comment CDATA #IMPLIED>

<!ELEMENT algorithm EMPTY>

<!ATTLIST algorithm

classname NMTOKEN #REQUIRED

comment CDATA #IMPLIED>

<!ELEMENT mergeattributes (attribute+)>

<!ELEMENT attribute EMPTY>

<!ATTLIST attribute

key CDATA #REQUIRED>

<!ELEMENT mode ( keymerge | sortmerge )>

<!ELEMENT keymerge EMPTY >

<!ELEMENT sortmerge ( criterion*, algorithm? )>

<!ELEMENT criterion EMPTY>

<!ATTLIST criterion

name NMTOKEN #REQUIRED>

XML-Tag

Bezeichnung

mergerconfig

Gruppierung der Merge-Konfiguration

mergehandling

Merge-Art, die konfiguriert wird. Es muss mindestens das Element eventmerge (Ereignis-Merge) angegeben werden.

sharedfragmentmerge
(optional)

Vom Standardalgorithmus abweichender Algorithmus zum Zusammenführen der Shared Fragments mit Prozessinstanzfragmenten

processmerge
(optional)

Vom Standardalgorithmus abweichender Algorithmus zum Zusammenführen der Prozessinstanzfragmente. Wählbar sind die Modi Ersetzen (replace) oder Zusammenführen (update). Standardwert ist replace.

eventmerge

Vom Standardalgorithmus abweichender Algorithmus zum Verschmelzen der Merge-Ereignisse

key
(optional)

ID, über die das Element eventmerge referenziert werden kann

priority
(optional)

Priorisierung des eventmerge-Elements - je niedriger der ganzzahlige Wert, desto höher priorisiert.

condition
(optional)

Bedingung für das Verschmelzen der Merge-Ereignisse

classname

Name der JAVA-Klasse, die die angegebene Bedingung überprüft

value
(optional)

Bedingung ist erfüllt, wenn die Überprüfung durch die JAVA-Klasse den angegebenen Wert (TRUE oder FALSE) zurückliefert. Vorgabewert ist TRUE.

algorithm
(optional)

Berechnungsvorschrift (JAVA-Klasse)

classname

JAVA-Klasse, die eine bestimmte Berechnungsvorschrift implementiert

mode

Merge-Verfahren zur Ereignisverschmelzung

keymerge

Schlüsselbasierter Ereignis-Merge auf der Basis von definierten Merge-Schlüsseln

sortmerge

Ordnungsbasierter Ereignis-Merge auf der Basis der Sortierung von Funktionen

criterion

Kriterium (Funktionsattribut), auf dessen Basis die Fragmente geordnet werden sollen. Es können mehrere Kriterien angegeben werden.

name

Bezeichner des Funktionsattributs

Datei mergerconfig.dtd (2. Teil)

<!ELEMENT connectorhandling ( multiindegreehandling?, multioutdegreehandling?, andhandling?, orhandling?, xorhandling?)>

<!ELEMENT multiindegreehandling (algorithm) >

<!ELEMENT multioutdegreehandling (algorithm) >

<!ELEMENT andhandling (algorithm) >

<!ELEMENT orhandling (algorithm) >

<!ELEMENT xorhandling (algorithm) >

XML-Tag

Bezeichnung

connectorhandling
(optional)

Behandlung von Konnektoren in Prozessgraphen über die Angabe einer JAVA-Klasse (algorithm)

multiindegreehandling
(optional)

Algorithmus, der beim Objekt-Merge das Einfügen von Konnektoren mit mehreren eingehenden Kanten steuert

multioutdegreehandling
(optional)

Algorithmus, der beim Objekt-Merge das Einfügen von Konnektoren mit mehreren ausgehenden Kanten steuert

andhandling
(optional)

Algorithmus zur Behandlung von AND-Konnektoren

orhandling
(optional)

Algorithmus zur Behandlung von OR-Konnektoren

xorhandling
(optional)

Algorithmus zur Behandlung von XOR-Konnektoren

Beispiel

Für das Verketten der Prozessinstanzfragmente wird der schlüsselbasierte Ereignis-Merge verwendet.

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE mergerconfig SYSTEM "mergerconfig.dtd">

<mergerconfig>

...

<mergehandling>

<eventmerge>

<mode>

<keymerge/>

</mode>

</eventmerge>

</mergehandling>

...

</mergerconfig>

Während der Ereignisverschmelzung wird die Vereinigungsmenge der Attribute beider Merge-Ereignisse an das verbleibende Ereignis kopiert. Bereits vorhandene Objektattribute werden nicht überschrieben. Das zuerst importierte Merge-Ereignis wird gelöscht.