Разница между поведением узлов fork / join по отношению к токенам с другими узлами диаграмм Activity - PullRequest
0 голосов
/ 05 сентября 2018

Как Томас Килиан , описанный здесь , нормальное поведение узлов диаграмм Деятельности с токенами:

Узел становится активным, когда на всех его входящих InformationFlow connectors поступил токен. Когда узел завершает работу, он отправляет одиночные токены по всем своим исходящим соединителям InformationFlow.

Но он также добавил:

Существуют специальные узлы, такие как fork и merge, которые ведут себя немного по-другому

Я знаю, что поведение узла "слияния" отличается, потому что он становится немедленно активным при получении первого токена и принимает один из нескольких альтернативных потоков. Но в чем разница между поведением узлов fork / join с токенами с нормальным поведением?

1 Ответ

0 голосов
/ 05 сентября 2018

Merge - и DecisionNode s выглядят одинаково, но это разные элементы: enter image description here.

На диаграмме вы можете различить только глядя на входящие и исходящие InformationFlow с. Первый имеет несколько входящих и один исходящих, а второй имеет противоположное отношение. A MergeNode принимает любой входящий токен и перенаправляет его непосредственно на один исходящий InformationFlow. Так что в отличие от Action s он не будет ждать всех токенов. В отличие от DecisionNode, он принимает только один токен и пропускает только один из исходящих InformationFlow s. Это обязанность моделиста устанавливать охрану таким образом, чтобы только один оценивал его как истинное. Если имеется больше (или даже неохраняемых) InformationFlow с, токен будет следовать произвольному свободному маршруту.

Fork и Join также два разных элемента, которые выглядят одинаково: enter image description here (или вертикально).

Вы также можете различить их по количеству входящих / исходящих InformationFlow с. Fork имеет один вход и несколько выходов и Join наоборот. Fork отправит столько токенов, сколько имеет исходящих InformationFlow с, как только токен достигнет своего единственного входящего InformationFlow. Join будет (например, Action с) ждать прибытия токенов на все входящие InformationFlow с. Только тогда у него будет один токен на единственном исходящем InformationFlow.

Таким образом, в то время как Merge - и DecisionNode s управляют потоком одного токена (пути выполнения), Fork и Join используются для запуска и синхронизации параллельных путей выполнения.

...