Caminhos paralelos com chaves de múltiplos valores

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.