允许加入节点的多个事件操作 [英] Multiple event actions at Join Node allowed

查看:24
本文介绍了允许加入节点的多个事件操作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否允许在一个加入节点使用多个事件,如下所示.

Is it allowed to use multiple events at a join node, like shown below.

或者是想象中的标记,它可以用来描述一个活动流程,就在第二个事件出现之前就消失了?

Or is the imaginary token, that can be used to describe an activity flow, just one moment there and gone before the second events appears?

推荐答案

是否允许在一个加入节点使用多个事件

Is it allowed to use multiple events at a join node

是的,JoinNode 是同步多个流的 ControlNode.

Yes, a JoinNode is a ControlNode that synchronizes multiple flows.

是想象中的标记,可以用来描述一个活动流,在第二个事件出现之前就消失了

is the imaginary token, that can be used to describe an activity flow, just one moment there and gone before the second events appears

在连接未通过时,传入边上提供的令牌被阻止,JoinNode 通过的时刻取决于它的 joinSpec :

The token offered on the incoming edges are blocked while the join is not passing, the moment a JoinNode is passing depends on its joinSpec :

  • 如果 JoinNode 没有 joinSpec,那么这相当于带有布尔运算符and"的 joinSpec 表达式.也就是说,隐含的默认 joinSpec 条件是每个传入的 ActivityEdge
  • 至少提供一个令牌
  • 否则 joinSpec 它是一个 ValueSpecification 确定连接将发出令牌的条件,然后在每个传入时至少提供一个令牌时不需要ActivityEdge.每当向任何传入的 ActivityEdge 上的 JoinNode 提供新令牌时,都会评估此 ValueSpecification.
  • If a JoinNode does not have a joinSpec, then this is equivalent to a joinSpec Expression with the Boolean operator "and." That is, the implicit default joinSpec condition is that there is at least one token offered on each incoming ActivityEdge
  • Else the joinSpec it is a ValueSpecification determining the condition under which the join will emit a token, and then not necessary when at least a token is offered on each incoming ActivityEdge. This ValueSpecification is evaluated whenever a new token is offered to the JoinNode on any incoming ActivityEdge.

有关更多信息,请参阅正式版的第 389 节加入节点"第 389 页的副本./2017-12-05:

For more here is a copy of the §15.3.3.4 Join Nodes page 389 of formal/2017-12-05:

JoinNode 是同步多个流的 ControlNode.一个 JoinNode 应该正好有一个传出ActivityEdge 但可能有多个传入的 ActivityEdge.如果 JoinNode 的任何传入边是ObjectFlows,输出边缘应为 ObjectFlow.否则,输出边缘应为 ControlFlow.

A JoinNode is a ControlNode that synchronizes multiple flows. A JoinNode shall have exactly one outgoing ActivityEdge but may have multiple incoming ActivityEdges. If any of the incoming edges of a JoinNode are ObjectFlows, the outgoing edge shall be an ObjectFlow. Otherwise the outgoing edge shall be a ControlFlow.

Join 节点可能有一个 joinSpec,它是一个 ValueSpecification,它决定了加入的条件发出一个令牌.

Join nodes may have a joinSpec, which is a ValueSpecification that determines the condition under which the join will emit a token.

如果一个 JoinNode 有一个 joinSpec,那么每当一个新的令牌被提供给这个 ValueSpecification任何传入 ActivityEdge 上的 JoinNode.此评估不应被期间提供的任何新代币中断在评估期间提供新代币时,也不得同时开始评估.这ValueSpecification 应评估为布尔值.

If a JoinNode has a joinSpec, then this ValueSpecification is evaluated whenever a new token is offered to the JoinNode on any incoming ActivityEdge. This evaluation shall not be interrupted by any new tokens offered during the evaluation, nor shall concurrent evaluations be started when new tokens are offered during an evaluation. The ValueSpecification shall evaluate to a Boolean value.

如果 joinSpec ValueSpecification 由文本表达式给出,则传入边的名称可用于表示一个布尔值,指示来自 ControlFlow 的报价的存在 (true) 或不存在 (false) 或表示与从 ObjectFlow(如果有)提供的对象令牌相关联的值.或者,joinSpec 可能包含一个具有单个布尔运算符名称且未指定操作数的表达式.在这种情况下,joinSpec 的值应通过将给定的运算符应用于指示存在 (true) 或不存在 (false) 的布尔值来给出在每个传入边上提供(未指定操作数的顺序).

If the joinSpec ValueSpecification is given by a textual expression, then the names of the incoming edges may be used to denote a Boolean value indicating the presence (true) or absence (false) of an offer from a ControlFlow or to denote the value associated with an object token offered from an ObjectFlow (if any). Alternatively, the joinSpec may consist of an Expression with the name of a single Boolean operator and no operands specified. In this case, the value of the joinSpec shall be given by applying the given operator to Boolean values indicating the presence (true) or absence (false) of offers on each incoming edge (with the ordering of the operands not specified).

如果 JoinNode 没有 joinSpec,那么这相当于带有布尔运算符and"的 joinSpec 表达式.也就是说,隐含的默认 joinSpec 条件是在每个传入的 ActivityEdge 上至少提供一个令牌.

If a JoinNode does not have a joinSpec, then this is equivalent to a joinSpec Expression with the Boolean operator "and." That is, the implicit default joinSpec condition is that there is at least one token offered on each incoming ActivityEdge.

如果 JoinNode 的(隐式或显式)joinSpec 评估为真,则在传出 ActivityEdge 上提供令牌JoinNode 根据以下规则:

If the (implicit or explicit) joinSpec of a JoinNode evaluates to true, then tokens are offered on the outgoing ActivityEdge of the JoinNode according to the following rules:

  • 如果传入边上提供的所有令牌都是控制令牌,则在传入边上提供一个控制令牌输出边缘.
  • 如果传入边上提供的某些令牌是控制令牌而其他令牌是对象令牌,则只有对象令牌在传出边缘提供.令牌以相同的顺序在传出边缘提供他们被邀请加入.如果JoinNode 的isCombinedDuplicate 为真,则在对象标记之前提供给传出边缘的那些包含具有相同身份的对象的对象被合并为一个令牌.

以上规则适用于所有提供给 JoinNode 的代币,包括来自同一个传入的多个代币边缘.

The above rules apply to all tokens offered to the JoinNode, including multiple tokens offered from the same incoming edge.

如果向 JoinNode 的传出 ActivityEdge 提供任何令牌,它们将被目标接受或拒绝在向传出边缘提供更多令牌之前遍历边缘(例如,由于防护失败).如果令牌是被拒绝遍历,它们将不再提供给输出边缘.符合要求的实现可能会省略如果 JoinNode 被阻止在其传出边缘提供令牌,则不必要的 joinSpec 评估.

If any tokens are offered to the outgoing ActivityEdge of a JoinNode, they shall be accepted by the target or rejected for traversal over the edge (e.g., due to a failed guard) before any more tokens are offered to the outgoing edge. If tokens are rejected for traversal, they shall no longer be offered to the outgoing edge. A conforming implementation may omit unnecessary joinSpec evaluations if the JoinNode is blocked from offering tokens on its outgoing edge.

这篇关于允许加入节点的多个事件操作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆