工作流扩展元素的写法

<fpdl:StartNodeDisplayName="开始"Id="myFirstProcess.START_NODE" Name="START_NODE">

<fpdl:ExtendedAttributes>

<fpdl:ExtendedAttributeName="FIRE_FLOW.bounds.height" Value="20"/>

<fpdl:ExtendedAttributeName="FIRE_FLOW.bounds.width"Value="20"/>

<fpdl:ExtendedAttributeName="like"Value="1"/>

<fpdl:ExtendedAttributeName="FIRE_FLOW.bounds.x"Value="9"/>

<fpdl:ExtendedAttributeName="FIRE_FLOW.bounds.y"Value="23"/>

</fpdl:ExtendedAttributes>

</fpdl:StartNode>

扩展属性,是一个key-value组成的Map。您可以根据需要给元素增加任意多的扩展属性。默认的应该有:FIRE_FLOW.bounds.heightFIRE_FLOW.bounds.width(主要是为了图标的大小)FIRE_FLOW.bounds.x FIRE_FLOW.bounds.y(为了图标在画布上的位置)



xml中该有的元素以及元素所对应的属性:


所有元素共有的属性:同如下AstartNode的属性


A.工作流元素

工作流元素

元素

属性名称

属性说明(红色部分表示重点看)

startNode

ID

元素的ID

Name

元素的名称

DisplayName

元素的显示名称,例如在中文应用系统中可以为元素命名一个通俗易懂的中文名称。

Description

元素描述

ExtendAttribute

扩展属性,是一个key-value组成的Map。您可以根据需要给元素增加任意多的扩展属性。默认的应该有:FIRE_FLOW.bounds.heightFIRE_FLOW.bounds.width(主要是为了图标的大小)FIRE_FLOW.bounds.x FIRE_FLOW.bounds.y(为了图标在画布上的位置)

具体代码参考:

<fpdl:StartNodeDisplayName="开始"Id="myFirstProcess.START_NODE" Name="START_NODE">

<fpdl:ExtendedAttributes>

<fpdl:ExtendedAttributeName="FIRE_FLOW.bounds.height" Value="20"/>

<fpdl:ExtendedAttributeName="FIRE_FLOW.bounds.width"Value="20"/>

<fpdl:ExtendedAttributeName="like"Value="1"/>

<fpdl:ExtendedAttributeName="FIRE_FLOW.bounds.x"Value="9"/>

<fpdl:ExtendedAttributeName="FIRE_FLOW.bounds.y"Value="23"/>

</fpdl:ExtendedAttributes>

</fpdl:StartNode>

Synchronizer,EndNode的属性同StartNode。代码部分将<fpdl:StartNode>改为<fpdl:Synchronizer>,<fpdl:EndNode >Activity,Transition,Loop都有同StartNode的属性,以下属性是Activity,Transition,Loop独有的属性。

activity

CompleteStrategy

Activity实例的完成策略。取值为any或者all,默认是all

当取值是any时,他下的任何任务实例完成时都可以使ActivityInstance执行Complete()操作。

当取值是all时,只有当他所有的TaskInstance完成时,才触发ActivityInstance执行Complete()操作。

    

具体参考代码如下:

<fpdl:ActivityCompletionStrategy="ALL"DisplayName="申请"Id="myFirstProcess.Fulfill_The_ApplicationForm_Activity"Name="Fulfill_The_ApplicationForm_Activity">

其他属性同NodeStart的属性

Transition

Condition

转移条件。是一个EL表达式,如果此EL表达式的计算结果为true,则此转移分支将被执行,否则不执行。缺省值为空,为空时其值为true

转移条件除了EL表达式外,还可以取值为一个字符串常量“DEFAULT”,只有当其他所有条件的值都是false时,此转移才被执行,否则此转移不被执行。

具体代码如下:

<fpdl:Transitions>

<fpdl:TransitionDisplayName=""From="myFirstProcess.START_NODE"Id="myFirstProcess.Transition1"Name="Transition1"To="myFirstProcess.Fulfill_The_ApplicationForm_Activity">

<fpdl:Condition>&lt;%=request.getParameter(“username”)% &gt;</fpdl:Condition>

</fpdl:Transition>

其他属性同NodeStart的属性

Loop

Condition

循环条件。是一个EL表达式,如果此EL表达式的计算结果为true,则此循环将被执行,否则不执行。缺省值是空,为空时其值为false(transition缺省情况取值正好相反)

具体代码如下:

xml中加入<fpdl:Loops>

<fpdl:LoopId="myFirstProcess.Loop1"From="myFirstProcess.Synchronizer2"To="myFirstProcess.Synchronizer1" Name="Loop1"/>

</fpdl:Loops>

时在和loop相连接的两个synchronizertask任务后加入LoopStrategy=“REDO”

<fpdl:TaskId="Fulfill_The_ApplicationForm_Task"Name="Fulfill_The_ApplicationForm_Task" Priority="1"LoopStrategy="REDO">

其他属性同NodeStart的属性



B.业务元素


Task的公共属性

元素

属性名称

属性说明

Tooltask,Formtask,Subflowtask的通用属性。

Duration

执行该TaskInstance所需的时间

TaskInstanceCreator

一个实现了ITaskInstenceCreator接口的类,负责创建任务实例。

如果Task定义了该属性,则它具有最高优先级,覆盖WorkflowProcessTaskInstanceCreator属性和BasicTaskInstanceManager中的缺省实现。一般情况下,Task不需要定义该属性。

TaskInstanceRunner

一个实现了ITakInstanceRunner接口的类,负责该Task实例的运行。一般情况下无须定制这个类,采用BasicTaskInstanceManager的缺省实现即可。

如果Task定义了该属性,则它具有最高优先级,覆盖WorkflowProcess的相关的TaskInstanceRunner属性和BasicTaskInstanceManager中的缺省实现。

有些业务场景中需要动态创建子流程,此时需要在特定的SubflowTask上定义该属性。

TaskInstanceCompletionEvaluator

一个实现了ITaskInstanceCompletionEvaluator接口的类,负责检查Task实例是否可以结束。如果Task定义了该属性,则它具有最高优先级,覆盖

WorkflowProcess的相关的TaskInstanceCompletionEvaluator属性和BasicTaskInstanceManager中的缺省实现。

在某些业务场景中,例如M:N形式的会签,需要在Task上定义该属性。

LoopStrategy

控制Task在循环体中的行为特征。该属性有3个取值,含义如下:REDO表示重做该Task,对于FormTask,其WorkItem会被自动分配给上一次完成该Task的操作者;skip表示该Task仅执行一次,在循环的情况下不被执行;None也表示重做Task,对于FormTask而言,其WorkItem的分配仍然通过解析AssignmentHandler完成,而不是分配给上一次完成该Task的操作者。

代码:

<fpdl:TaskCompletionStrategy="ALL"TaskInstanceCompletionEvaluator="org.fireflow.example.loan_process.workflowextension.ApproveApplicationTaskCompletionEvaluator"Type="FORM">


缺省值的时候,代码不生成。

FormTask

Performer

操作者

Assignment

任务分配策略,取值为ANYALL,默认值是ANYAll,默认值是ANY.ANY表示任何一个操作员完成该其工作项则任务实例可以结束。All表示收到工作项的所有操作员都必须完成其工作项,任务实例才能结束。

Duration

任务完成期限

DefaultView

缺省视图,取值为EditForm,ViewForm,ListForm,缺省值为ViewForm

EditForm

可编辑的表单信息,在此填入相关的url可以用于链接业务表单

ViewForm

只读表单信息。

ListForm

列表表单信息。

具体实例代码如下:

<fpdl:Tasks>

<fpdl:TaskCompletionStrategy="ANY"DefaultView="EDITFORM"DisplayName="填写请假单"Id="myFirstProcess.Fulfill_The_ApplicationForm_Activity.Fulfill_The_ApplicationForm_Task"LoopStrategy="REDO"Name="Fulfill_The_ApplicationForm_Task"Priority="1"Type="FORM">

<fpdl:PerformerDisplayName="当前用户"Name="Self">

<fpdl:Description/>

<fpdl:AssignmentHandler>org.fireflow.example.leaveapplication.workflowextension.CurrentUserAssignmentHandler</fpdl:AssignmentHandler>

</fpdl:Performer>

<fpdl:EditFormDisplayName="请假申请表"Name="ApplicationForm">

<fpdl:Description/>

<fpdl:Uri>/org/fieflow/example/leaveapplication/bizpages/SubmitApplicationForm.jsp</fpdl:Uri>

</fpdl:EditForm>

<fpdl:ViewFormDisplayName="请假申请表"Name="ApplicationForm">

<fpdl:Description/>

<fpdl:Uri>/org/fieflow/example/leaveapplication/bizpages/SubmitApplicationForm.jsp</fpdl:Uri>

</fpdl:ViewForm>

Subflowtask

Sub-Workflow

子流程的相关信息,如:子流程的IDNameDisplayName等。

具体实例代码如下:

<fpdl:Tasks>

<fpdl:TaskDisplayName=""Id="myFirstProcess.Activity4.Task4"LoopStrategy="REDO"Name="Task4"Priority="1"Type="SUBFLOW"/>

</fpdl:Tasks>

ToolTask

Execution

取值为SYNCHR或者ASYNCHR,缺省为SYNCHRSYNCHR是同步执行对应ApplicationASYNCHR为异步执行对应的Application


Duration

目前的engine对此属性没有处理

Application

Task执行的application,该applicationhandler必须实现org.fireflow.engine.taskinstance.IApplicationHandler(下述代码中<fpdl:Handler>下的java文件实现了该接口

具体代码如下:

<fpdl:Tasks>

<fpdl:TaskDisplayName="邮件通知审批人结果"Execution="SYNCHR"Id="myFirstProcess.Send_Email_Activity.Send_Email_Task"LoopStrategy="REDO"Name="Send_Email_Task"Priority="1"Type="TOOL">

<fpdl:ApplicationDisplayName="邮件发送接口程序"Name="EmailSender">

<fpdl:Description/>

<fpdl:Handler>leaveapplicaiton.workflowextension.EmailSender.java</fpdl:Handler>

</fpdl:Application>

</fpdl:Task>

</fpdl:Tasks>



C.WorkflowProcess


元素

属性

属性说明




WorkflowProcess

EventListeners

事件监听器列表

TaskInstanceCreator

一个实现了ITaskInstanceCreator接口的类,负责创 建任务实例。通常每个WorkflowProcess都要定义一个自身特有的TaskInstanceCreator

FormTaskInstanceRunner

一个实现了ITaskInstanceRunner接口的类,负责所 有ForTask实例的运行。一般情况下无须定制这个类,采用BasicTaskInstanceManager的缺省实现即可。

ToolTaskInstanceRunner

一个实现了ITaskInstanceRunner接口的类,负责所有ToolTask实例的运行。一般情况下无须定制这个类,采用BasicTaskInstanceManager的缺省实现即可。

SubflowTaskInstanceRunner

一个实现了ITaskInstanceRunner接口的类,负责所有SubflowTask实例的运行。一般情况下无须定制这个类,采用BasicTaskInstanceManager的缺省实现即可。

FormTaskInstanceCompletion

一个实现了ITaskInstanceCompletionEvaluator接口的


Evaluator类,负责检查该流程的FormTask实例是否可以结束。一 般情况下WorkflowProcess无须定制这个类。

ToolTaskInstanceCompletion

一个实现了ITaskInstanceCompletionEvaluator接口的Evaluator类,负责检查该流程的ToolTask实例是否可以结束。一 般情况下WorkflowProcess无须定制这个类。

SubflowTaskInstanceComplet

一个实现了ITaskInstanceCompletionEvaluator接口的ionEvaluator类,负责检查该流程的SubflowTask实例是否可以结束。 一般情况下WorkflowProcess无须定制这个类。

具体实例代码如下:

<fpdl:WorkflowProcessxmlns:fpdl="http://www.fireflow.org/Fireflow_Process_Definition_Language"Id="myFirstProcess"Name="myFirstProcess"DisplayName="myFirstProcess"ResourceFile=""ResourceManager=""TaskInstanceCreator="Gfgfg.java">



D流程变量

属性

DataType, 数据类型

initialvalue,初始值



源代码如下:

<fpdl:DataFields>

<fpdl:DataFieldDataType="INTEGER"DisplayName="请假天数"Id="myFirstProcess.leaveDays"InitialValue="1"Name="leaveDays"/>

<fpdl:DataFieldDataType="BOOLEAN"DisplayName="审批标志"Id="myFirstProcess.approvalFlag"InitialValue="true"Name="approvalFlag"/>

</fpdl:DataFields>



要更好的理解fireflow需要以下知识:

  1. WFMC的工作流参考模型

  2. XPDL(xml流程描述语言)

  3. 离散数学相关知识

  4. petri网相关知识


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值