活动节点

活动节点用于建模活动规定的行为的独立步骤。

当流入(incoming)活动边上交付给它的tokens满足规定的条件时活动节点可以开始执行。当活动节点开始执行时,它从一些或所有的流入活动边接受tokens,并且自身节点也被放置一个token。当一个节点执行完毕后,自身上的那个token被移除,产生的tokens被交付给它的一些或所有的流出(outgoing)活动边。该节点执行的实际效果取决于节点的种类,在后续子节中详细介绍。

两个或更多活动节点在相对执行次序上的限制由活动边关系显式地约束。如果两个活动顶点没有被活动边关系所排序(直接或间接的,例如,各自独立地被包含在一个有序的结构化活动节点中;参见16.11),它们可以并发地执行。

注意. 由于这里用到了,并发执行只是意味着没有一个节点执行必须的次序;活动的一个一致性执行可能以任意的顺序来执行它们或并行执行它们。

由于一个活动节点可能是多条活动边的源,相同的token可以被提交给多个目标。然而,相同的token一次只能被一个目标所接受(除非它是被拷贝的,那也不是相同的token,参见15.3中的ForkNodes和15.5中的可执行节点)。如果一个token在同一时刻被提交给多个活动节点,它应该至多被其中的一个所接受,但是是哪一个得由活动流语义来决定。这意味着活动模型中可能会由于计时问题和竞争条件导致出现不确定性。如果这是不期望的,那么建模者应该在活动模型的构建中避免类似条件。

有三种类型的活动节点:

  1. 控制节点作为“流量开关(traffic switches)”管理活动边上的tokens流。Tokens不能在控制节点停留(InitialNodes和ForkNodes除外,参见15.3)。
  2. 对象节点持有从流入对象流获得的对象tokens,并且可以把它们交付给流出的对象流(对于控制流有一个建模者特定的例外,参见15.4中的对象节点的isControlType)。
  3. 可执行节点实际执行活动所期望的行为。如果可执行节点有流入控制流,那么所有这些流上都必须有交付的tokens,只有它接收了tokens才能开始执行。在执行一个可执行节点时被认为持有一个单一的控制token以指示它正在运行。当它执行结束后,它被控制tokens提交给所有的流出控制流。可执行节点的所有流入和流出活动边都必须是控制流。(动作是唯一的可执行节点,它使用称为Pins的特殊附加的对象节点来接受和产出对象tokens;参见第16章。)

每种活动节点会在后续部分进一步描述。

results matching ""

    No results matching ""