As regras chave de merge são usadas para mesclar eventos de merge em uma instância de processo. Dessa forma, os fragmentos de instância de processo associados usando chaves de processo são vinculados para formar uma instância de processo.
As chaves de merge são calculadas a partir de atributos de objeto específicos do fragmento de instância do processo. Eles são usados para reconstruir a lógica do processo da instância de processo e os fragmentos não vinculados são vinculados devidamente.
O PPM diferencia entre dois procedimentos de merge:
O procedimento de merge relevante é especificado no arquivo de configuração XML *_merger.xml. A estrutura desse arquivo é especificada na DTD mergerconfig.dtd.
Arquivo mergerconfig.dtd (Parte 1)
<!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>
Marca XML |
Descrição |
---|---|
mergerconfig |
Agrupamento da configuração de merge |
mergehandling |
Tipo de merge a ser configurado. Tem de ser especificado pelo menos um elemento eventmerge. |
sharedfragmentmerge |
Algoritmo diferente do algoritmo padrão para mesclar os fragmentos compartilhados com fragmentos de instância de processo |
processmerge |
Algoritmo diferente do algoritmo padrão para mesclar os fragmentos de instância de processo. Os modos Substituir ou Atualizar estão disponíveis para seleção. O valor padrão é Substituir. |
eventmerge |
Algoritmo diferente do algoritmo padrão para mesclar os eventos de merge |
chave |
ID que pode ser usado para to referenciar o elemento eventmerge. |
prioridade |
Prioridade do elemento eventmerge – quanto mais baixo o valor inteiro, maior a prioridade. |
condição |
Condição para mesclagem de eventos de merge |
classname |
Nome da classe JAVA, que verifica a condição especificada |
valor |
A condição é atendida se a verificação da classe JAVA retornar o valor especificado (TRUE ou FALSE). O valor padrão é TRUE. |
algoritmo |
Regra de cálculo (classe JAVA) |
classname |
Classe JAVA que implementa uma regra de cálculo específica |
modo |
Procedimento de merge para mesclagem de eventos |
keymerge |
Merge de eventos baseada em chave, com base em chaves de merge definidas |
sortmerge |
Merge de eventos baseada na ordem de classificação de funções |
critério |
Critério (atributo de função) a ser usado como base para ordenar os fragmentos. Podem ser especificados diversos critérios. |
name |
Nome do atributo de função |
Arquivo mergerconfig.dtd (Parte 2)
<!ELEMENT connectorhandling ( multiindegreehandling?, multioutdegreehandling?, andhandling?, orhandling?, xorhandling?)>
<!ELEMENT multiindegreehandling (algorithm) >
<!ELEMENT multioutdegreehandling (algorithm) >
<!ELEMENT andhandling (algorithm) >
<!ELEMENT orhandling (algorithm) >
<!ELEMENT xorhandling (algorithm) >
Marca XML |
Descrição |
---|---|
connectorhandling |
Tratamento de conectores em gráficos de processo especificando uma classe JAVA (algorithm) |
multiindegreehandling |
Algoritmo que controla a inserção de conectores com várias conexões de entrada para a merge de objetos |
multioutdegreehandling |
Algoritmo que controla a inserção de conectores com várias conexões de saída para a merge de objetos |
andhandling |
Algoritmo para tratamento de conectores AND |
orhandling |
Algoritmo para tratamento de conectores OR |
xorhandling |
Algoritmo para tratamento de conectores XOR |
Exemplo
A merge de eventos baseada em chave é usada para vincular fragmentos de instância de processo.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE mergerconfig SYSTEM "mergerconfig.dtd">
<mergerconfig>
...
<mergehandling>
<eventmerge>
<mode>
<keymerge/>
</mode>
</eventmerge>
</mergehandling>
...
</mergerconfig>
Durante a merge de evento, o conjunto combinado de atributos de ambos os eventos de merge é copiado para o evento restante. Os atributos de objeto existentes não são substituídos. O primeiro evento de merge importado é excluído.