Beim Merge-Modus Zusammenführen werden die Prozessattribute der neueren (zuletzt importierten) Prozessinstanz mit den Prozessattribute der älteren Prozessinstanz zusammengeführt. Das Gleiche gilt für Funktionen mit Funktionsattributen und zugehörigen Organisationseinheiten.
Importzeitpunkt auf Attributebene
Anhand des Importzeitpunkts wird beim Merge-Modus Zusammenführen entschieden, welches Objekt neuer ist. Der Importzeitpunkt wird für Prozessinstanzen, Funktionen, Ereignisse, Organisationseinheiten (jeweils als AT_ORIG_EPK_ID) und auf Attributebene gemerkt. Nach dem Import ist für jedes Attribut bekannt, wann es importiert wurde. Der Importzeitpunkt wird während des XML-Imports oder Process Imports an die importierte EPK geschrieben.
Ist für ein Attribut kein Importzeitpunkt bekannt (z. B. bei Bestandsdaten, die im Merge-Modus Ersetzen importiert wurden), wird statt dessen der Importzeitpunkt des Objektes (Funktion, Prozess, …) verwendet, dem das Attribut zugeordnet ist.
Additiver Merge auf Funktionsebene
Wenn während der Zusammenführung zwei Funktionen mit dem gleichem internen Objektschlüssel vorhanden sind, werden diese wie folgt zusammengeführt.
Die neuere Funktion (zuletzt importiert) wird mit ihren Attributen und Organisationseinheiten in die zusammengeführte Prozessinstanz übernommen.
Alle Attribute der alten Funktion werden an die neue Funktion kopiert. Falls ein Attribut an beiden Funktionen vorhanden ist, wird das Attribut der alten Funktion kopiert falls dies neuer ist.
Alle Organisationseinheiten der alten Funktion und der neuen Funktion werden zusammengeführt. Folgendes Kapitel beschreibt das Zusammenführen der Organisationseinheiten.
Organisationseinheiten
Beim Zusammenführen zweier Funktionen werden alle Organisationseinheiten der alten Funktion an die neue Funktion kopiert. Falls dieselbe Organisationseinheit an beiden Funktionen vorhanden ist, bleibt die neuere Organisationseinheit mit ihrer zugehörigen Kante und ihren Attributen erhalten. In diesem Fall werden Attribute der Kante, die der älteren Organisationseinheiten zugeordnet ist und Attribute der älteren Organisationseinheit, nicht übernommen.
Gleichheit von Organisationseinheiten
Beim Zusammenführen wird die Gleichheit zweier Organisationseinheiten, die nicht anonymisiert sind, ausschließlich anhand des gleichen Attributs AT_OBJNAME festgestellt.
Damit eine Organisationseinheit, die anonymisiert wurde (und somit der ursprüngliche Objektname geändert wurde) bei einem erneuten Reimport noch als gleich erkannt wird, muss zusätzlich ein interner Objektschlüssel AT_INTERNAL_OBJECT_KEY an der Organisationseinheit vorhanden sein. Der Objektschlüssel kann über Objektschlüsselregeln definiert werden.
Eine nicht anonymisierte und eine anonymisierte Organisationseinheit sind gleich, wenn der Objektschlüssel AT_INTERNAL_OBJECT_KEY übereinstimmt.
Zwei anonymisierte Organisationseinheiten sind gleich, wenn die Objektschlüssel AT_OBJNAME und AT_INTERNAL_OBJECT_KEY übereinstimmen.
Importzeitpunkt der Organisationseinheit
Ist für eine Organisationseinheit kein Schlüssel AT_ORIG_EPK_ID definiert, wird der Schlüssel AT_ORIG_EPK_ID der verbundenen Funktion verwendet, um den Importzeitpunkt der Organisationseinheit zu bestimmen.
Additiver Merge auf Prozessebene
Bei der Zusammenführung werden alle Attribute der neueren und älteren Prozessinstanz an das Ergebnisfragment kopiert. Ist ein Attribute an beiden Prozessinstanzen vorhanden, wird das neuere Attribut genommen.
Additiver Merge auf Eventebene
Wenn während des Zusammenführens zwei Events mit dem gleichen internen Objektschlüssel vorhanden sind, werden diese behandelt wie im Modus Ersetzen. Das heißt, das neuere Event ersetzt das ältere Event, ohne dass vom alten Event Attribute zum Neueren übernommen werden.
Konfiguration
Die DTD mergerconfig.dtd enthält zur Konfiguration die Modi Ersetzen (replace) und Zusammenführen (update).
<!ELEMENT processmerge ( algorithm?, mergeattributes?)>
<!ATTLIST processmerge
mode (replace|update) 'replace'
>
Das Attribut mode ist optional und falls es fehlt, wird standardmäßig der Modus Ersetzen genommen.
Im Modus Zusammenführen werden die Merge-Attribute (mergeattributes) nicht ausgewertet. Wird eine Konfiguration mit Attribut mode update importiert, die auch (nicht-leere) Merge-Attribute enthält, so wird eine entsprechende Meldung ausgegeben.
Ändern des Merge-Modus
Ein Umstellen des Merge-Modus ist über die Merge-Konfiguration beliebig oft möglich. Somit können bestehende Mandaten im Merge-Modus Ersetzen auf den Modus Zusammenführen umgestellt werden.
Im Merge-Modus Zusammenführen wird die Liste der Merge-Attribute nicht verwendet.
Sharedfragment
Für den Merge zweier Sharedfragments im Modus Zusammenführen wird bei Verwendung des Standardalgorithmus (ZDefaultSharedFragmentMergeAlgorithm) automatisch der gleiche Merge-Modus verwendet, der auch für den Merge zweier normaler Fragmente in der Merge-Konfiguration angegeben ist.
Spezielle Attribute
Spezielle Attribute (wie z. B. interne PPM-Attribute oder Attribute wie AT_IS_SHARED_FUNCTION) werden im Merge-Modus Zusammenführen wie alle anderen Attribute behandelt.
Prozesstypisierung
Um im Merge-Modus Zusammenführen Prozesstypinformationen direkt aus dem Quellsystem zu übernehmen (ohne Typsierungsregeln) müssen die Attribute AT_INTERNAL_PROCTYPE und AT_INTERNAL_PROCTYPEGROUP mit den Typisierungsinformationen (Prozesstyp und Prozesstypgruppe) gepflegt sein.
Berechnete Attribute
Berechnete Attribute am Prozess oder an Funktionen, werden ebenfalls durch den Merge-Modus Zusammenführen kopiert.
Wenn beim Zusammenführen zweier Funktionen ein berechnetes Attribut der alten Funktion an die neue Funktion kopiert wird und dieses später nicht mehr berechnet werden kann, dann wäre der alte, berechnete Wert an der zusammengeführten Funktion vorhanden.
Wenn Sie dieses Verhalten nicht wünschen, müssen Sie an der Berechnungsvorschrift den Parameter calcattr delete=yes setzen. Ist der Parameter gesetzt, werden Attribute, die nicht berechnet werden können, später wieder gelöscht.