转自:
韦纶道长的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?)>
<?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?)>