轉自:韋綸道長的blog
<?xml version="1.0" encoding="UTF-8"?>
<!--
本文由韋綸道者翻譯,歡迎指正,e-Mail:yongyanger@126.com,若需轉載請保留此資訊。
-->
<!--
這是主要的工作流程元素。一個工作流程包含一系列全域元屬性、全域寄存器以及觸發器函數。它還定義一系列初始活動以啟用整個工作流程。
全域活動在所有步驟中都可以執行,在所有步驟中也是可見的。普通的活動是在步驟中可以重複利用的活動。在此進行詳細說明,一個步
驟可以指向一個普通的活動並啟用它。需要注意的是所有活動必須是全域唯一的。
一個工作流程包括一組步驟和用於確定狀態轉向哪個分支的分支定義以及用於確定合并的條件和步驟的合并定義。
-->
<!ELEMENT workflow (meta*, registers?, trigger-functions?, global-conditions?, initial-actions, global-actions?, common-actions?, steps, splits?, joins?)>
<!--
一個活動可以執行。活動的id在整個工作流程定義中必須唯一,而不僅僅是在一個步驟中唯一。
屬性:
id:工作流程描述裡一個唯一的ID。注意,ID's必須全域唯一,而不是在某一步驟中唯一。
name:活動的名稱。
view:活動的視圖名。
auto:可以為true或false。若為true,活動在符合以下條件情況下自動執行:
---工作流程轉入活動所在的步驟。
---滿足活動的所有條件和限制。
注意,一個步驟內每一次流轉只能有一個自動執行的活動。如果有多個滿足以上條件的活動,則僅僅第一個滿足條件(以在xml檔案中的順
序排列)的活動執行。
finish:不論這個活動是否一個終止活動。一個終止活動會終止所有在啟動並執行步驟,並移入流轉曆史,把工作流程狀態設為COMPLETED。
適用範圍:活動。
-->
<!ELEMENT action (meta*, restrict-to? , validators?, pre-functions?, results, post-functions?)>
<!ATTLIST action
id CDATA #REQUIRED
name CDATA #REQUIRED
view CDATA #IMPLIED
auto (TRUE | FALSE | true | false) #IMPLIED
finish (TRUE | FALSE | true | false) #IMPLIED
>
<!--
全域活動指的是在'common-actions'元素中定義的活動。
適用範圍:活動。
-->
<!ELEMENT common-action (#PCDATA)>
<!ATTLIST common-action
id CDATA #REQUIRED
>
<!--
在整個步驟中存在大於等於零個全域活動集合和活動集合。
注意:要麼定義全域活動集合,要麼定義活動集合。定義一個空的元素集合是不合法的。
適用範圍:步驟。
-->
<!ELEMENT actions (common-action*, action*)>
<!--
函數中的參數。使用者傳入參數值。例如,若變數foo為"bar",則"test ${foo}"返回"test bar"。
適用範圍:函數
-->
<!ELEMENT arg (#PCDATA)>
<!ATTLIST arg
name CDATA #REQUIRED
>
<!--
包含一個或多個條件元素,並確定是否用AND或OR運算子來組合這些條件。
適用範圍:合并,受限於,結果
-->
<!ELEMENT conditions (conditions | condition)*>
<!ATTLIST conditions
type (AND | OR) #IMPLIED
>
<!--
一個條件。
適用範圍:條件集合
-->
<!ELEMENT condition (arg*)>
<!ATTLIST condition
type CDATA #REQUIRED
id CDATA #IMPLIED
negate CDATA #IMPLIED
name CDATA #IMPLIED
>
<!--
許可權集合是在工作流程之外定義的,但是與工作流程中的實體緊密相連。
適用範圍:步驟
-->
<!ELEMENT external-permissions (permission+)>
<!--
函數是OSWorkflow自動執行的。查看文檔可以知道所選擇的函數類型需要的參數(如果存在參數的話)。
適用範圍:事前函數,事後函數
-->
<!ELEMENT function (arg*)>
<!ATTLIST function
type CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED
>
<!--
一組全域活動可以任意步驟中執行。
適用範圍:工作流程
-->
<!ELEMENT global-actions (action+)>
<!--
一組初始活動在工作流程執行個體被賦予任何狀態之前執行。
適用範圍:工作流程
-->
<!ELEMENT initial-actions (action+)>
<!--
一組全域活動可以包含在任何步驟中,只需簡單地聲明一個帶id屬性和不含任何內容的活動標籤。這樣在多個步驟中可以包含同一個活動。
適用範圍:工作流程
-->
<!ELEMENT common-actions (action+)>
<!--
這兒,兩個或多個狀態一起轉換成一個新的狀態。無條件結果必須是一個真實的步驟或者狀態的集合,沒有其他的合并或分支。合并只在所
有條件都滿足情況下發生。
適用範圍:joins
-->
<!ELEMENT join (conditions, unconditional-result)>
<!ATTLIST join
id CDATA #REQUIRED
>
<!--
一組合并元素。
適用範圍:工作流程
-->
<!ELEMENT joins (join*)>
<!--
工作流程、活動、步驟的一個靜態元屬性。
適用範圍:工作流程、活動、步驟
-->
<!ELEMENT meta (#PCDATA)>
<!ATTLIST meta
name CDATA #REQUIRED
>
<!--
一個外部許可權。
適用範圍:外部許可權集合。
-->
<!ELEMENT permission (restrict-to)>
<!ATTLIST permission
name CDATA #REQUIRED
id CDATA #IMPLIED
>
<!--
一組在從工作流程中的一種狀態轉換成另一種狀態之後調用的函數。
適用範圍:活動,結果,無條件結果
-->
<!ELEMENT post-functions (function+)>
<!--
<!--
一組在從工作流程中的一種狀態轉換成另一種狀態之前調用的函數。
適用範圍:活動,結果,無條件結果
-->
<!ELEMENT pre-functions (function+)>
<!--
一個儲存所有函數和校正器中的變數的類。
適用範圍:寄存器組
-->
<!ELEMENT register (arg*)>
<!ATTLIST register
type CDATA #REQUIRED
variable-name CDATA #REQUIRED
id CDATA #IMPLIED
>
<!--
一組寄存器。
適用範圍:工作流程
-->
<!ELEMENT registers (register+)>
<!--
活動和許可權的限制。可以基於使用者組和當前工作流程狀態設定,也可以基於調用者是否為擁有者本人設定。
適用範圍:活動,許可權
-->
<!ELEMENT restrict-to (conditions?)>
<!--
一個活動的條件結果。只有條件的beanshell判斷為true時,才能得到結果。
適用範圍:結果集合
-->
<!ELEMENT result (conditions, validators?, pre-functions?, post-functions?)>
<!ATTLIST result
old-status CDATA #REQUIRED
status CDATA #IMPLIED
step CDATA #IMPLIED
owner CDATA #IMPLIED
split CDATA #IMPLIED
join CDATA #IMPLIED
due-date CDATA #IMPLIED
id CDATA #IMPLIED
display-name CDATA #IMPLIED
>
<!--
一組可選的條件結果和無條件結果。
適用範圍:活動
-->
<!ELEMENT results (result*, unconditional-result)>
<!--
這裡,一種狀態可以轉換成另一種或者多種狀態。這些新的狀態的結果必須是一個真實的步驟或者狀態的集合,並且沒有其他的合并或分支。
適用範圍:分支集合
-->
<!ELEMENT split (unconditional-result+)>
<!ATTLIST split
id CDATA #REQUIRED
>
<!--
一組分支元素。
適用範圍:工作流程
-->
<!ELEMENT splits (split+)>
<!--
工作流程中的一個步驟,id在所有步驟中必須唯一。
適用範圍:步驟集合
-->
<!ELEMENT step (meta*, pre-functions?, external-permissions?, actions?, post-functions?)>
<!ATTLIST step
id CDATA #REQUIRED
name CDATA #REQUIRED
>
<!--
包含在工作流程定義中的一組步驟。
適用範圍:工作流程
-->
<!ELEMENT steps (step+)>
<!--
沒有任何條件的結果。如果所有條件結果都失敗,這個結果則為預設結果。
-->
<!ELEMENT unconditional-result (validators?, pre-functions?, post-functions?)>
<!ATTLIST unconditional-result
old-status CDATA #REQUIRED
status CDATA #IMPLIED
step CDATA #IMPLIED
owner CDATA #IMPLIED
split CDATA #IMPLIED
join CDATA #IMPLIED
due-date CDATA #IMPLIED
id CDATA #IMPLIED
display-name CDATA #IMPLIED
>
<!--
有唯一ID的函數,由一個外部作業發送器調用。
適用範圍:觸發器函數集合
-->
<!ELEMENT trigger-function (function)>
<!ATTLIST trigger-function
id CDATA #REQUIRED
>
<!--
一組觸發器函數。
適用範圍:工作流程
-->
<!ELEMENT trigger-functions (trigger-function+)>
<!--
一個對使用者輸入進行校正的類。查看文檔可以知道所選擇的函數類型需要的參數(如果存在參數的話)。
適用範圍:校正器集合
-->
<!ELEMENT validator (arg*)>
<!ATTLIST validator
type CDATA #REQUIRED
name CDATA #IMPLIED
id CDATA #IMPLIED
>
<!--
一組校正器。
適用範圍:活動,初始步驟,結果,無條件結果
-->
<!ELEMENT validators (validator+)>
<!--
一組被每個活動檢驗的全域條件集合。
適用範圍:工作流程
-->
<!ELEMENT global-conditions (conditions?)>