Se quiser voltar a mesclar caminhos de processos paralelos ao usar uma merge baseada em chave, deverá calcular várias chaves de merge para os eventos finais dos fragmentos de processo anteriores para o evento inicial do fragmento de merge. Para esse efeito terá de especificar um atributo de valor múltiplo e um separador no elemento XML multikey. Valor múltiplo significa que o valor do atributo especificado é dividido em várias partes usando um separador. É calculada uma chave de merge para cada parte.
Exemplo
Os fragmentos de uma instância de processo são vinculados pelos atributos de merge THIS_KEY e PREV_KEY. A chave do antecessor é salva no atributo PREV_KEY. Se um evento do sistema tiver vários predecessores, cada chave dos predecessores será gravada várias vezes no arquivo de log do atributo PREV_KEY. O mapeamento de atributo usado é configurado de modo a que o atributo PREV_KEY seja instanciado com vários valores para os eventos de merge como AT_KEY.
A extração de dados do sistema de origem inclui o seguinte evento de sistema:
...
<attribute type="EVENTTYP">Change customer order</attribute>
<attribute type="PROC_ID">123456</attribute>
<attribute type="THIS_KEY">3</attribute>
<attribute type="PREV_KEY">1</attribute>
<attribute type="PREV_KEY">2</attribute>
<attribute type="USER">Team A</attribute>
...
O arquivo de mapeamento usado inclui o seguinte mapeamento de atributo para eventos iniciais e finais:
...
<!-- mapping startevents -->
<attribute ppmattributetype="AT_KEY">
<multieventattributetype delimiter=";">PREV_KEY</multieventattributetype>
</attribute>
<!-- mapping endevents -->
<attribute ppmattributetype="AT_KEY">
<eventattributetype>THIS_KEY</eventattributetype>
</attribute>
...
A configuração de merge ativa inclui a regra seguinte:
...
<mergekeyrule>
<refobjects>
<refobject objecttype="OT_EVT"></refobject>
</refobjects>
<keyparts>
<multikey attributetype="AT_KEY" delimiter=";" />
</keyparts>
</mergekeyrule>
...
No fragmento cujo evento inicial tem um atributo THIS_KEY com o valor 3, os fragmentos anteriores cujos eventos finais tenham um atributo THIS_KEY com o valor 1 ou 2 são mesclados.
Após mesclar fragmentos, os atributos são transferidos inalterados, ou seja, o conjunto resultante de subchaves não é gravado no atributo de merge para o evento restante no formato consolidado.
Exemplo
Por exemplo, se estiver a usar regras que calculam uma chave de merge a partir do atributo de valor múltiplo AT_KEY e AT_KEY tiver o valor x;y no evento de sistema A e o valor y;z no evento de sistema B, o atributo AT_KEY passa a ter o valor do atributo do evento de sistema B, desde que o evento de sistema B tenha sido importado mais tarde. A mesclagem de fragmentos não é afetada, pois os fragmentos são mesclados usando chaves de merge que já são calculadas durante a importação.