JBPM 3 (图形设计器)
JBPM 提供了基于Eclipse的一个图形化设计器,用了一个多月,感觉比刚接触的时候好一点了,不过,还是有点简陋。也许BPM就是这样设计的吧?
。用来做工作流引擎还是比商业产品差那么一点点,好在扩展性够好,挂上代码就可以用。
那我写的一格流程对ProcessDefintion.xml 里面的常用标记做些基本说明
- <?xml version="1.0" encoding="UTF-8"?>
- <process-definition
- xmlns="urn:jbpm.org:jpdl-3.1" name="物资出门_往返">
- <start-state name="开始">
- <transition name="" to="审核人填写单据"></transition>
- </start-state>
- <task-node name="审核人填写单据">
- <task name="填写出门单据">
- <assignment class="mtm.workflow.FlowActorhandle"></assignment>
- <controller>
- <variable name="WF_WriteS2" mapped-name="Form"></variable>
- </controller>
- </task>
- <transition name="提交审核" to="部门领导审批"></transition>
- </task-node>
- <task-node name="部门领导审批">
- <task name="部门审核">
- <assignment class="mtm.workflow.FlowActorhandle"></assignment>
- <controller>
- <variable name="WF_Do_Task" access="read" mapped-name="Form"></variable>
- </controller>
- </task>
- <transition name="不同意" to="拒绝出门">
- <action name="标注拒绝" class="mtm.workflow.FlowActionhandle"></action>
- </transition>
- <transition name="同意" to="公司办审批"></transition>
- <transition name="修改单据" to="审核人填写单据"></transition>
- </task-node >
- <task-node name="公司办审批">
- <task name="公司办审核">
- <assignment class="mtm.workflow.FlowActorhandle"></assignment>
- <controller>
- <variable name="WF_Do_Task" access="read" mapped-name="Form"></variable>
- </controller>
- </task>
- <transition name="同意" to="门卫确认出门"></transition>
- <transition name="不同意" to="拒绝出门">
- <action name="标注拒绝"></action>
- </transition>
- </task-node>
- <task-node name="门卫确认出门">
- <task name="门卫出门审核">
- <assignment class="mtm.workflow.FlowActorhandle"></assignment>
- <controller>
- <variable name="WF_Do_Task" access="read" mapped-name="Form"></variable>
- </controller>
- </task>
- <transition name="同意放行" to="门卫确认进门">
- <action name="出门标注" class="mtm.workflow.FlowActionhandle"></action>
- </transition>
- <transition name="不同意放行" to="公司办审批"></transition>
- </task-node>
- <end-state name="结束"></end-state>
- <end-state name="拒绝出门"></end-state>
- <task-node name="门卫确认进门">
- <task name="登记物资进门">
- <assignment class="mtm.workflow.FlowActorhandle"></assignment>
- <controller>
- <variable name="WF_CheckIn" access="read" mapped-name="Form"></variable>
- </controller>
- </task>
- <transition name="入门确认" to="经办人确认">
- <action name="入门标注" class="mtm.workflow.FlowActionhandle"></action>
- </transition>
- </task-node>
- <task-node name="经办人确认">
- <task name="经办人确认">
- <assignment class="mtm.workflow.FlowActorhandle"></assignment>
- <controller>
- <variable name="WF_Do_Task" access="read" mapped-name="Form"></variable>
- </controller>
- </task>
- <transition name="完成处理" to="结束">
- <action name="完成确认" class="mtm.workflow.FlowActionhandle"></action>
- </transition>
- </task-node>
- </process-definition>
我的代码没有使用JBPM自己的用户模型(过于简单了),直接挂事件 <assignment class="mtm.workflow.FlowActorhandle"></assignment>,感觉好用得多,在委托事件里面使用Context能把所有东西都取出来,也就不必分开写成不同的了,这样反而可以做些配置保存下来。我自己封装的代码就提供了对人员处理的各种情况
1.xml步骤直接指定流程 2.上一步数据运算结果影响下一步(指定,条件跳转 ex: 大于某个数字需要xxx处理,排除某人)3.指定步骤的处理人(发起者,上一步的关系,拥有者。。。用户委托),基本跟ibm Workflow一致了。btw,这些自己写还是有点烦
所有回退都是用画线方式 <transition name="不同意放行" to="公司办审批"></transition> 。这样的好处是,所有的展示Form可以跟流程无关,只需要嵌入我做好的子表单就可以了,除了没有Cover和MainDoc的概念,基本改造得跟ibm workflow一样了,hehe,受ibm影响中毒太深,完全被同化了。下一步,打算把跳转条件运算结合jRules,这样会简单一点。
跟主数据交互现在是做得自己不太满意的, 采用的挂Action方法<action name="完成确认" class="mtm.workflow.FlowActionhandle"></action> 完全没有重用的可能,而且action设计得有点喜剧,挂得地方不一样,能得到的对象就不一样,挂线得Transaction,挂node得node,挂TaskNode得Tasknode,相对来说,线好用一些。
至于工作流里面最重要的,自定义流程和自定义表单关联,我开始考虑用ProcessInstance压变量,但是不直观,最后想了一个歪招搞定这个事情,<controller>
<variable name="WF_Do_Task" access="read" mapped-name="Form"></variable>
</controller> 用变量和映射变量来搞定。我只用名字不用值,这招还是很管用, mapped-name = "Form" 表示这个变量指定表单。 name =xxx 表示具体的表单。做到这里,我不知道是该鄙视自己把bpm当workflow用,还是该鄙视jbpm完全不考虑被当工作流用的方式。。。 反正这招挺好用,土就土点了。 工作流3大要素都齐全了,管他的,把 流转控制数据,业务数据分离了写代码傻瓜多了。swinline什么的,我觉得意义不大,被限制得有点多。就没多研究了,也许是理解不透彻吧。至于其他node,跟我估计的应该差不多,重点还是怎么挂事件了。遗憾点的就是挂事件的种类有点少,要是有editmodechange,cliam等事件就更方便了。。。。
finish : 这个blog要能直接上载贴图就好了,索性不贴了....
评论
请问,可以将jbpm的流程定义插件直接用在jBOSS中吗?
用变量和映射变量来搞定。我只用名字不用值,这招还是很管用, mapped-name = "Form" 表示这个变量指定表单。name=xxx 表示具体的表单。
我现在有个需求,就是让用户自己定义流程(用jsp做)
这就需要一个设计器,能不能说的具体一点这要怎么实现。
我对workflow用户分配方式分类如下,为了实现后面几个东西,而不用每次敲代码,就没法使用jbpm的东西了
1.静态分配,在流程设定的时候就通过指定用户,部门,角色的方式来指定,这种最简单,jbpm自己不写代码就能实现
2.根据运算指定,比如,上一步用户指定下一步用户,上一步条件影响下一步(比如报账,超过多少钱要xxx处理),流程相关性影响(比如要发起者确认)
3.还有排除处理者(xxx不能处理)
4.委托处理,超时自动处理(结合jbpm timmer可以做到)
5.会签,阈值问题(类似投票通过)
发表评论
- 浏览: 37799 次
- 性别:

- 来自: CD

- 详细资料
搜索本博客
我的相册
共 8 张
最新评论
-
JBPM 2 (Hello World)
能不能把例子发给我呀 cbin1013@163.com 谢了
-- by cbin1013 -
JBPM 3 (图形设计器)
sonic yi 写道自己做流程设计器本身并不复杂,就是写processdefi ...
-- by kencool -
Jboss 终于开始整合 Drool ...
呵呵,jbpm我是05年开始用,drools是在05年底开始关注,被收购以后他们 ...
-- by windspy -
Drools 3.1M1真的不错 回 ...
怎么不把这个思路发出来我们大家看哈,明白了思路,看起来应该容易些,麻烦了>[co ...
-- by luochao3017 -
学习集成和使用Drools 3 ...
eyejava 写道Godlikeme 写道我一直想问一个问题,在这个系统中,r ...
-- by Godlikeme






评论排行榜