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