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)捕獲。

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM