需求描述: 用户提出会签之后,需要等所有的会签任务完成之后,再根据用户意见来判断是同意还是拒绝,所以,原来的那种方式还是无法实现这个需求。就在原来方案上做了部门修改,于这个星期一终于完成了会签。 下面就跟大家分享一下我的实现方法。 流程配置 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去组织结构数据库 ...
这是第一个版本,写的可能比较龊,还请大家见谅 java 代码 (创建StartTask) public long createTask(String strProcessName, String strRequisitioner, Map taskVariables, String transition) {            log.debug(" ...
在经历了2个星期的学习,及两个星期的开发之后,我们公司第一个用jbpm作为流程引擎的工作流完成了。虽然是一个不算很复杂的流程,但是还是折腾了两个多星期,今天刚刚收尾完毕,不过经用户确认之后还要小改一下。 总结的结果就是,流程不是问题,其实最难的是页面,准确来说繁琐,特别是对页面的读写控制,简直让人发疯。 这个项目使用 struts2 + spring2.0 + ibatis,基于通用及跨平台的考虑,jbpm部分我们用web service封装,好像也能称之为SOA,哈哈哈。刚开始的时候本来打算用hibernate的,虽然不熟,但是还是有那么点经验的。而且流程之间的model相对比较独立,不 ...
1、一个node中的task,在创建之后,如果重新回退到这个node,则,不会重新指定actor,就算actor是通过swimlane类动态指定的。也按原来这个task的actor重新创建这个taskInstance。不清楚jBPM是不是系统就是这么设计的。通过自己的测试,感觉是这样样子的。 2、为了能在同一个node,循环创建taskInstance,这里要用动态创建taskInstance方式来创建,并指定actor,这样可以创建出同样的task不同的actor。主要是为了循环利用一个相同的node。
公司对于代理人在流程中有这样的应用: 当用户设置了代理人之后的任务,用户和代理人都要能看到这个任务; 当用户设置代理人时,已有的任务需要添加代理人,并通知代理人处理; 当用户取消代理人设置后,原来代理人未完成的任务,需要重新回到用户的任务中。 经过昨天对ActorId和PooledActors的研究,想出这样一个解决方案,基本上完成了上面所需要的功能。 对于第一个要求,只需要设置TaskInstance的PooledActors这个属性给用户及代理人,这样用户及代理人都能看到这个任务。在代理人或用户确定要处理这个任务后,会进行check out的 ...
jBPM有两种分配任务的模式,推模式和拉模式。 推模式:系统主动分配任务给actorID。推模式只有一个人能参与这个任务。通过actorId指定用户 拉模式:actorId去申请这个任务。拉模式的任务可以是多个人参与的,但是只能有其中的一个人能结束。通过PooledActors指定用户群。 当同时指定了这两个属性的时候,actorId才是真正被指定的参与者。只有这个参与者才能完成这个任务,其他的在PooledActors里面的用户,是无法得到这个任务的,所以也没有办法处理这个任务。 设置用户 推模式:Assignable.setActorID(String actorId); 拉模 ...
2007-05-24

jBPM流程发布

关键字: jBPM
最近在研究jBPM,碰到了一大堆问题,这个郁闷的了。不过到今天为止,终于小有成果,可喜可贺啊,:) 下面主要讲一下最近碰到的一些问题,疑问以及解决方案 1、流程的测试 刚开始不知道怎么用插件,流程代码都是手写的,结果等我好不容易写完之后发布,发现无法编译这个流程文件,这个郁闷啊。肯定是我哪里写错了。然后去找有没有dtd文件,结果好不容易找到了,但是好像没有起作用,我很奇怪,怎么这么好的东西,会没有dtd文件呢。最后还是决定用插件,因为找到了一篇怎么用插件的文章,原来所有的东西都可以做的,哈哈哈。真是不错。 还有一个比较郁闷的地方就是jBPM的api doc,这个简直就不是doc,里面基 ...
wuxufeng8080
搜索本博客
最近加入圈子
存档
最新评论