Como o “comportamento de seleção” funciona na UML?

5

Após duas horas lendo / pesquisando sobre exemplos e usos de selection behavior de object flow s, acho que seleciona todos os tokens que satisfazem um critério (como uma consulta) e isso pode mudar ordem dos tokens como especificação em 15.2.3.4 Object Flows diz:

If a selection Behavior is specified, then it is used to offer a token from a source ObjectNode to the ObjectFlow, rather than using the ObjectNode’s ordering.

Mas também a seção acima diz:

Whenever a new token is offered to the ObjectFlow, or an offer is withdrawn, the selection Behavior is invoked with the values from all the object tokens currently being offered to the ObjectFlow passed to the Behavior input Parameter. The selection Behavior should then select one of the input values and produce it as output

O que eu entendo da segunda citação é:

  • só será invocado quando um novo token for oferecido ou uma oferta for retirada (por isso, não será invocado quando um token armazenado anteriormente for aceito)
  • se vários tokens forem armazenados, ele seleciona apenas um token (em vez de todos os tokens que satisfazem os critérios), mesmo se houver mais tokens que satisfaçam a condição. Por exemplo, nesta situação apenas um candidato será aceito:

Os marcadores acima são verdadeiros? (acho que estão incorretos; mas esses são os meus entendimentos sobre segunda cotação). Qual é o significado de offer is withdrawn na segunda cotação?

    
por hasanghaforian 17.09.2018 / 19:31
fonte

1 resposta

2

A «seleção» introduz uma semântica que permite restringir os tokens do ObjectFlow ou alterar sua ordem. Portanto, a especificação deve ser lida, tendo ambos os casos em mente.

O padrão mostra na figura 15.16 um exemplo em que «seleção» é usada para especificar que Orders oferecido deve ser enviado por ordem de prioridade.

Sua primeira bala está correta. Nada é dito sobre o token armazenado. E nós não precisamos nos importar. Vamos pegar o exemplo do pedido de remessa. Suponha que eu tenha um conjunto de Order tokens esperando que correspondam aos critérios de seleção. Quando o envio consome um novo Order , a seleção deve garantir que o token fornecido tenha a prioridade mais alta. Não sabemos se os Orders que já foram aceitos são mantidos de forma ordenada (pode ser feito na oferta) ou se são pedidos no consumo.

Seu segundo marcador está incorreto. O comportamento de seleção seleciona apenas um token para sua saída. Isso significa que ele os fornece um por um. Não diz que os outros são descartados. Portanto, no seu exemplo, se vários candidatos corresponderem aos critérios, todos eles serão entrevistados. Se a interpretação do padrão for tão restritiva quanto você imaginou, o exemplo de envio de pedido não funcionaria porque o sistema modelado não seria enviado por ordem de prioridade, mas apenas a maior prioridade de cada grupo de pedidos.

    
por 18.09.2018 / 08:44
fonte