需求描述:用户可以在任意环节开启会签,用以征求意见。意见征求完毕,主流程继续运行。
方案描述:重新开启一个流程,这个流程只有会签,却只用作征求意见,只有提交按钮。
难点就是怎样显示一个便于用户查看的签核日志,所以我们在jbpm外层加了一个日志系统,用以记录流程签核日志。
待续。。。。
- 09:58
- 浏览 (281)
- 评论 (0)
需求描述: 用户提出会签之后,需要等所有的会签任务完成之后,再根据用户意见来判断是同意还是拒绝,所以,原来的那种方式还是无法实现这个需求。就在原来方案上做了部门修改,于这个星期一终于完成了会签。
下面就跟大家分享一下我的实现方法。
流程配置
xml 代码
<task-node name="060-Cosigning" create-tasks="false" signal="never" end-tasks="false"> ...
上次讲到代理人的解决方案,但是在使用的过程中出了很多的问题,在发现问题后,废除了原有的解决方案,重新设计了代理人方案。在jbpm外层,增加代理人信息,当代理人提交任务时,真正的处理人还是那个被代理人,这样不会导致混乱。
1、代理人机制是建立在人事的请假基础上的,当请假是就会设置代理人。
2、当流程提交到一个已经请假的人时,就会返回代理人,增加代理人资料。这样,两个人都能操作这个任务。
3、当代理人操作任务时,是被代理人的名义去完成这个任务的。
4、最后就是显示签核日志的问题,如果是代理人,就在代理人的后面显示一个”代理“字样。
从整体上来讲,这次的方案是比较合 ...
请看代码
java 代码
taskInstance = taskMgmtSession.loadTaskInstance(taskInstanceId);
Set
actorSet = new HashSet
();
PooledActor obj ...
这里仅讨论通过action动态创建task来实现的方式。
决定会签的方式主要是通过task-node的signal属性来决定的。
会签中,一个人reject,则结束会签,退回起草人;全部通过,则流到下一个node。
会签中,等待所有的人完成会签任务,然后根据会签人的意见(即所选的transition),来决定流程流向哪个node。
第一种情况,signal="last-wait",只要一个人拒绝,则系统需要将其他没有完成的任务完成掉,在完成时需要以拒绝的那个transition来做end,具体可以参考 http://tomkoo.javaey ...
就目前了解
有那么几种方式
swimlane: 在我的流程中,使用最多的是这种情况,因为我的参与者都是从HR数据库中直接查询获得的。
identity: 这种方式只在我刚开始测试的时候使用,直接将任务分派给一个滴定的人或者部门角色等等。
action: 有时候需要动态的创建任务,这个时候就需要通过这种方式。
流程变量: 这种方式是我刚刚开别人的blog发现的,可以直接调用流程变量来给这个任务分派参与者,原来的做法是通过swimlane先获取流程变量,然后再分派参与者,这样方式可以减少很多不必要的swimlane。 &nb ...
晕,保存了一下原来写的东西没了,哭啊~~~~~~~(下次再补上,大家自己看源码吧,写的不怎么样,请见谅)
在企业应用中,会有很多这样的情况,一个人起草之后,会需要他的上级一级一级的签,直到签到符合要求的那个主管等级,然后结束。这种情况,有不过不固定,因为每个人的上级不一样,所以如果要把这个图都画出来的话及其复杂,这样就有了以下的构思。通过同一个node的循环,来实现这种需要上级签合的情况。
下面是一个我们公司的资讯申请单流程
xml 代码
<?xml version="1.0" encoding="UTF-8"?>
<pr ...
现在手头的工作流页面端用的是struts2,由于以前没有用过webwork,所以现在用起来基本上是摸着石头过河,感觉蛮辛苦的,不过很有挑战性。
在经过一个早上的努力之后,实现了针对工作流页面的转发action,用于将不同的ProcessDefinition转发到相应的action。这里听取了同事的意见,直接把页面action的名字和流程定义名默认一样,这样就可以少一张table来维护,何乐不为。所以这个DispatchAction最后变成很简单的,就实现了一个可以动态转发action的动作。参考apache上面的文章,很快完成了这一部分的操作。
xml 代码 (struts2配置文件)
...
刚开始的时候,对这个概念超先不懂,什么叫泳道啊(主要是UML自己也没有学好)。然后看别人的文章看完之后就更惨了,彻底什么都搞不清楚了。
现在看来,这个就是一个流程角色,而且可以当成一个人来看,而不需要指定到什么role,等等其他概念上了,这样就能很清楚了。而且还起到一个解藕的作用,使task和actor之间有了一个中间桥梁,这样当actor变化的时候只需要修改swimlane就好了,如果写成一个动态类,那么,只要修改后台数据库数据就可以了。
想当初为了解决公司组织结构和流程衔接的问题,简直想破的脑袋。现在就针对每一个swimlane,作一个class,然后通过这个class去组织结构数据库 ...
- 浏览: 9548 次
- 性别:


- 详细资料
搜索本博客
最近加入圈子
最新评论
-
Swimlane的理解
很好,很强大
-- by uniquejava -
jbpm应用实例(Struts2+Sp ...
代码不是一般的乱,污染我的眼睛啊.楼主要整理一下
-- by uniquejava -
jbpm应用实例(Struts2+Sp ...
先顶再下最后看,感谢楼主,上帝kobe保佑你
-- by uniquejava -
流程情景应用--用户与代理 ...
呵呵,也都是自己慢慢摸索出来的。不懂了就去网上找找。 jbpm的内容确实是少,最 ...
-- by wuxufeng8080 -
流程情景应用--用户与代理 ...
真想知道您是怎么学习和研究的!
-- by kayzhan






评论排行榜