zoukankan      html  css  js  c++  java
  • BPMN2.0 Specifaction 节选翻译,10.2.8 循环特征 Loop Characteristics (原文 189页)

     (注:本文由廖贵宾翻译,email:531622@qq.com,若引用请保留本申明和原链接)

    10.2.8 循环特征 Loop Characteristics (原文 189页)

    活动节点(Activities)可以按指定顺序重复执行,本质上就是循环(loop)。LoopCharacteristics的存在表明活动节点(Activity)支持循环行为。LoopCharacteristics 是一个抽象类。具体的子类明确定义各种不同的循环行为。

     

    LoopCharacteristics 从类 BaseElement(见表8.5)继承属性和关联。LoopCharacteristics并有扩展更多的属性和关联。然而,每个循环活动节点(Loop Activity)实例具有属性的值可以是表达式(Expressions)。这些属性值仅在循环活动节点(Loop Activity)被执行时才能被访问。

    图10.45 显示了活动节点(Activity)的循环特征(loop characteristics)的类图,本图包括了标准循环和多实例两种类型。

     

     

    循环特征(LoopCharacteristics)类从BaseElemnt类继承属性和关联(如表8.5),但并没有新增其它属性和关联。然而,一个循环活动(Loop Activity)的实例(instance)具有附加的属性,见表10.27。

     

    表10.27 - 循环活动(Loop Activity)的实例(instance)属性

    属性名

    用法描述

    loopCounter:interger

    循环计数(LoopCounter)属性用于运行时统计循环次数。由流程引擎自动更新。

     

    标准循环特征(Standard Loop Characteristics)

    标准循环特征类(StandardLoopCharacteristics)是基于一个布尔条件来决定是否继续循环行为。只要布尔值为true,活动节点(Activity)就断续循环。每次循环都可以对布尔值进行检测,包括循环开始前和结束后都可以进行检测。另外,循环计数可以用设定一个最大值(cap),循环计数的增加不能超过设定的最大值(cap)。

    •   任务(Task)和子流程(Sub-Process)上的标准循环的图标,是一个指向自身小箭头。(如图 10.46和图10.47)。
    •   循环图标可以和补偿(Compensation)图标组合使用

     

     

      

    标准循环特征类(StandardLoopCharacteristics)通过父类 LoopCharacteristics,继承了BaseElement类的属性和关联(见图8.5)。表10.28列出了标准循环特征类(StandardLoopCharacteristics)的新增的属性和关联。

     

    表10.28 - StandardLoopCharacteristics元素的属性和关联表

    属性名

    用法描述

    testBefore:Boolean = false

    本标志用来控制对循环标志的检测位置,在每次循环的循环体开始前检测(testBefore=true),在循环体结束后检测(testBefore=false)。

    loopMaximun:interger[0..1]

    用于设定计数的最大值。

    loopCondition:Expression[0..1]

    一个布尔的表达式,用于控制循环是否继续。只要布尔值为true,活动节点(Activity)就继续循环。循环行为可以不详细描述,这意味着建模者可以简单说明条件,这种情况下,循环不能被正式执行。

     

    多实例特征(Multi-Instance Characteristics)

    多实例特征类(MultiInstanceLoopCharacteristics)允许创建期望数量的活动节点(Activity)实例。这些节点可并行执行,也可按序执行。可以使用表达式来表示或计算希望的实例数量,也可应用数据驱动来得到相应的实例。这种情况下能用于操作数据集合的数据输入(data input)需要详细说明。集合中的元素数量决定着活动实例的数量。通过输入数据关联(Data Association)来产生数据输入(data input)。建模者也能配置循环(loop)来控制标识(tokens)的产生。

     

    • 用于任务和子流程的多实例(multi-instance)标记必须是三条竖短线。
    • 如果多实例是并行执行的(属性 isSequential = false),则用短线是竖着的(如图10.48)。
    •  如果多实例是串行执行的(属性 isSequential = true),则用短线是横着的(如图10.49)。
    • 多实例图标可以和补偿(Compensation)图标组合使用。

     

     

     

     

    多实例循环特性(MultiInstanceLoopCharacteristics)元素通过父类 LoopCharacteristics 元素从BaseElement(见表 8.5)继承了属性和关联。表 10.29 列出了 多实例循环特性类(MultiInstanceLoopCharacteristics)新增的属性和关联。

    表 10.29 - 多实例循环特性类(MultiInstanceLoopCharacteristics)的属性和关联

    属性名

    用法描述

    isSequential:Boolean = false

    本属性标识活动实例节点是串行处理还是并行处理。

    loopCardinality:Expression[0..1]

    数值表达式,用来决定要创建的活动实例的数量。一个活动实例对应于存储在 ItemAwareElement 元素中数据集中的一个数据。

    对于任务(Tasks),数据集应射到InputOutputSpecification中的 Data Input元素中。

    对于子流程(Sub-Processes),数据集在子流程中上下文中的存有数据集的Data Object中。

    为了初始化一个有效的活动实例(multi-instance)必须注明,loopCardinally表达式,或者注明loopDataInput, 二选一。

    loopDataOutputRef:

    ItemAwareElement[0..1]

    ItemAwareElement 用来表示产生多实例的数据集。

    对于任务(Tasks)该值应射到活动(Activity)中的InputOutputSpecification属性中的Data Output中。

    对于子流程(Sub-Process)该值应射到子流程上下文中的含有数据集的Data Object中。

    inputDataItem:DataInput[0..1]

    是Data Input类型,是每个活动实例中存储在 loopDataInput中的数据集中的一个数据。

    在活动(Activity)的InputOutputSpecification中,这个Data Input 作为DataInputAssociation的数据源。这个Data Input的数据类型,必须是为 loopDataInput 定义的标量。

    outputDataItem:DataOutput[0..1]

    是Data Output类型,用来关联到存储在 loopDataOutput中的集合中的单个数据元素。这个Data Output 能作为活动包含的InputOutputSpecificatio元素中的DataOutputAssociation关联的目标。这个Data Output的数据类型,必须是为 loopDataOutput 定义的标量。

    behavior: MultiInstanceBehavior =

    all { None | One | All | Complex }

    当活动实例中的完成事件发生时,Behavior属性用来判断循环是否完成的一个规则。它的取值可以为:None, One, All 和 Complex。分别代表以下行为:

    • None: 当每一个实例完成时,都会抛出EventDefinition事件类,该类是从noneEvent类继承而来。
    • One:只有第一个实例完成时,会抛出EventDefinition事件类,该类是从noneEvent类继承而来。
    • All : 没有事件会抛出,所有实事都完成时才会产生结束标识。
    • Complex:通过complexBehaviorDefinitions 来决定是否抛出事件。

     

    对于为 None 和 One 的情况下,默认的SignalEventDefinition 事件会被多实例活动节点抛出,其中自动携带着事件发生的时间点。所有抛出的事件都会被多实例节点的边界事件捕获。

    complexBehaviorDefinition:

    ComplexBehaviorDefinition[0..*]

    当behavior属性设置为Complex时,该属性用来控制什么时候产生什么事件(Evnets)

    completionCondition:Expression[0..1]

    该属性定义一个产生布尔值输出的表达式(Expression),当表达式值为true时,放弃所有的活动实例,并且产生结束标识。

    oneBehaviorEventRef:

    EventDefinition[0..1]

    当behavior属性设置为One,并且第一个活动实例节点已经完成时,该事件会被产生。

    noneBehaviorEventRef:

    EventDefinition[0..1]

    当behavior属性设置为None,并且某个活动实例节点已经完成时,该事件会被产生。

    loopCounter:integer

    这个属性只在内部生成的活动实例中有,用来记录生成活动(Activity)的实例的顺序。活动实例是按序生成的,当这个值为n,表示它是在第n个位置生成的。

    numberOfInstances:integer

    这个属性只在外部的多实例活动节点有,用来记录多实例活动节点下,共生成了多少个活动实例。

    numberOfActiveInstances:integer

    这个属性只在外部的多实例活动节点有,用来表示多实例活动节点下,当前处于活动状态的实例数量。对于按序执行的多实例活动,这个值不会大于1。

    numberOfCompletedInstances:integer

    这个属性只在外部的多实例活动节点有,用来表示多实例活动节点下,当前已经完成的活动实例数。

    numberOfTerminatedInstances:integer

    这个属性只在外部的多实例活动节点有,用来表示多实例活动节点下,当前被终止的活动实例数。numberOfTerminatedInstances加上numberOfCompletedInstances加上numberOfActiveInstances三个数的总和等于numberOfInstances

     

    复杂行为定义(Complex Behavior Definition)

    当多实例活动(Multi-Instance Activity)设为Complex 方式时,ComplexBehaviorDefinition元素用来控制什么时候和哪个事件(Event)会被抛出。

     

    ComplexBehaviorDefinition元素的属性和关联继承自BaseElement(见表8.5),表10.31 列出了新增的属性和关联。

     

    表10.31 – ComplexBehaviorDefinition 元素的属性和关联表

    属性名

    用法描述

    condition: Formal Expression

    这个属性定义了一个布尔值的表达式,当表达式值为true时,停止(cancels)剩下的活动实例运行,并产生一个标准(token)。

    event: ImplicitThrowEvent

    当 condition 表达式为true时,本属性指定的事件将会被抛出,会被多实例活动(Multi-Instance Actitiy)的边界事件 (boundary Event)捕获。

     

     

     

     

     

     

  • 相关阅读:
    Spark&Hive结合起来
    spark&dataframe
    JAVA-数组或集合
    九种经典排序算法详解(冒泡排序,插入排序,选择排序,快速排序,归并排序,堆排序,计数排序,桶排序,基数排序)
    B+树介绍
    @transactional注解在什么情况下会失效,为什么。
    一个ArrayList在循环过程中删除,会不会出问题,为什么?
    Java:传值还是传引用?
    Java序列化的方式。
    实现动态代理的两种方式
  • 原文地址:https://www.cnblogs.com/citycomputing/p/14283029.html
Copyright © 2011-2022 走看看