paulwong

JBPM 4.4概念解释

概念解释
在实际的业务中,对于工作流一般是这样定义的:
定义完成某项工作需要多少个环节,每个环节由哪些人处理,完成这项工作的表单。
实际处理的时候,通常由发起人填好表单,然后去找各个环节的负责人签字审批,一直到流程结束。
在JBPM的框架中,用ProcessDefinition来描述某项工作,Activity描述各个定义的环节,Transition描述环节中的路径。
ProcessDefinitionInstance来描述实际执行的工作,可能是继承了ProcessDefinition,但又多出很多属性,如建立时间,发起人等,
Task或Excution来描述实际执行的步骤。
相应地有RespositoryService,ExcutionService,TaskService,来操作ProcessDefinition,Excution,Task,使工作一步步地往定义好的步骤往下走。
Excution表示实际流程中的当前环节,即以前的Token。

编程实务
画好流程图,即定义流程,画好一堆的步骤。
作好每个环节中要展示的JSP页面,并配到流程定义中。
写好每个环节提交后要处理的JAVA代码。

JBPM流程定义
流程定义的中间环节有两种:
一种是流程引擎碰到这种环节,会自动流转到下一环节,如Decision,Java等。
另一种是流程引擎碰到这种环节,会处于等待状态,直到程序下指令如:excuSinal才流转到下一环节,
这里面又分两种:一种是有处理人属性的Task,由处理人决定下一环节的流向,另一种是没设处理人,由程序决定下一环节的走向,如State。
实际流程中可以放变量值,以供整个流程环节存取。
如果流程定义中用了变量或表达式,则其实际值,会取实际流程中放进去的值。
如Task节点:
加一个Task节点时,将assignee设成表达式,这样在生成Task记录时,会读取绑定到流程实例中变量的值,作为assignee的值,
也可以指定一个CLASS,在生成Task记录时,会运行其中的assign方法,读取assignable中的getAssignee()的值,作为Task的分配人。

退回的解决方案
退回就是将此Task退回到上一环节的处理人处。
画图的时候不画退回的路径,但在程序处理中用代码加这一Task指向上一环节的路径,complete(taskId,newTransition)使其回到上一环节,然后再删除这一Transition。

会签的解决方案
会签指的是将同一任务同时分派给多人并行处理。
用For-each和join实现,或动态增加子任务。

posted on 2011-04-17 19:18 paulwong 阅读(1119) 评论(0)  编辑  收藏 所属分类: JBPM


只有注册用户登录后才能发表评论。


网站导航: