代码之家  ›  专栏  ›  技术社区  ›  hasanghaforian

fork/join节点对令牌的行为与活动图的其他节点之间的差异

  •  1
  • hasanghaforian  · 技术社区  · 6 年前

    作为 Thomas Kilian 描述 here ,带有标记的活动图的节点的正常行为是:

    当节点的所有传入 InformationFlow connectors

    有一些特殊的节点,比如fork和merge,它们的行为有些不同

    我知道“merge”节点的行为是不同的,因为它通过接收第一个令牌而立即变为活动的,并接受多个备用流中的一个。但是fork/join节点的行为与普通行为有什么区别呢?

    1 回复  |  直到 6 年前
        1
  •  1
  •   qwerty_so Rainier Wolfcastle    6 年前

    Merge -以及 DecisionNode 这些元素看起来一样,但却是不同的元素: enter image description here

    在图中,您只能通过查看传入和传出的数据来区分两者 InformationFlow MergeNode 接受任何传入令牌并将其直接转发到其单个传出令牌 . 所以不像 Action 它不会等待所有令牌。这个 决策节点 相反,只接受一个令牌,只允许它传递给它的一个传出令牌 信息流 s、 这是建模者的责任,以一种只有一个评估为真的方式设置防护。如果有更多的(甚至没有防范) 信息流 s令牌将采用任意自由路由。

    Fork Join 也是两个看起来相同的不同元素: enter image description here (或垂直)。

    您还可以通过输入/输出的数量来区分它们 信息流 s。 一进多出 加入 叉子 将发送尽可能多的令牌 一旦令牌到达它的单个传入 信息流 加入 威尔(喜欢) s) 等待令牌到达所有传入的 信息流 s、 只有到那时,它才会在它的单个输出端出现一个令牌 .

    那么一会儿呢 合并 决策节点 s控制单个令牌的流(执行路径) 叉子 加入 用于启动和同步并行执行路径。