需求:
流程的回退是一个复杂的计算,特别是在中国式的流程里,现实中的流程则相对简单,如我把一个审批文件提交出去后,若由两个人(张三、李四)同时处理,若张三或李四需要把文件退回来,文件直接打回到发起人我这里,这样张三或李四手上不再存在审批文件,但对于JBPM或Activiti的流程回退则做不到这么简单。
但原则上我们要符合这种现实的要求:流程由谁提交过来,则退回给谁。
http://www.redxun.cn:8020/saweb/login.jsp
user:admin
pwd:1
更多了解
http://redxun.iteye.com/blog/2406509
为了弄清这个关系,我们以一个稍为复杂一点Activiti流程为例。
以上流程包括了多种流程节点,如分支,并行节点,多实例任务,子流程。流程执行过程中我们记录其任务完成的每个一步,然后归纳其回退的算法实现。其中,A为多实例任务,我们在后台指定了其两个执行用户,我们启动流程,然后记录每一步执行的情况。
流程产生后,产生任务如:
当A的两个实例任务完成后,将会产生后续的任务,即产生B、C、E任务,在这三任务中,若回退的话,均是回退至A,并且是由A原来的执行人员来处理。由于A是多实例任务,其执行的任务个数为动态,若当时执行数为2(并且为张三、李四)两人处理,则回退后,也是回到这两个人那里处理。如下所示:
而另外,E回退时,也需要B、C的任务删除(在某种情况下也可能不删除),现实中相当于我把任务完成后,同时提交给三个人去处理,其中一个人回退,不能把另一个任务的工作也回退回来处理。
在B点上回退,C需要销毁,E也存在的话,也不合理,因为在A再往下执行时,又会重新产生B、C、E,因此,为了减少复杂度,需要全部删除B、C、E,回退至A。
当E往下执行时,会产生F或G任务,在这里我们设置条件让他产生F任务,如:
若F回退,则应该产生E任务,B、C则正常运行,继续往下执行后,将会产生I任务,再者是J任务。若在I任务回退,则应该回退至F。
同理,若B与C执行完成后,将会产生D。若我们记录任务的产生顺序,将比较容易实现任务的回退,由于jbpm4或activiti5均不记录这种操作,所以要实现回退均比较困难。
在此我们用一个有效的数据结构记录所有的任务产生的顺序,如下所示:
有了这样的一个数据结构,记录了每个任务节点的产生顺序,我们在任何一个节点上,都能有效回退至上一任务节点,并且包括自由跳转的方式,如在I节点,若我们回退至E,就把F节点从这个记录顺序中去掉,然后产生E任务出来。
这里还有一些问题尚没有得到有效解决:
1.如D任务回退时,应该产生B与C任务的还是仅需要产生其中一个,系统中是提供人工选择的方式给他还是自动产生其中一个?
2.F回退至E时,要不要也产生B、C任务?
3.任务回退时,需要找回原来的执行人
4.这个任务堆栈执行记录在什么时候往里放数据,即产生这个执行树
更多资讯请加QQ了解3102760881
相关推荐
这个是activiti和jbpm4通用的设计器,里面有教程文档,可以嵌入到项目中,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!...
工作流 activiti 5.22 退回代码实现。 activiti在设计的时候没有回退相关的...这里写一个比较简单的回退。不支持回退到并行网关前面节点,虽然回退到前面节点不会报错 但会导致任务无法结束。使用没有并行网关的回退。
忙活了一个星期左右,查找各种资料,终于将Activiti的流程设计器分离出来,与SpringMVC,spring整合了起来,先把工程分享出来,等有时间了在慢慢讲解具体的整合步骤。工程下载之后直接可以运行,只需要改一下数据库...
1 ACTIVITI数据库表结构 2 1.1 数据库表名说明 2 1.2 数据库表结构 3 1.2.1 Activiti数据表清单: 3 1.2.2 表名:ACT_GE_BYTEARRAY (通用的流程定义和流程资源) 3 1.2.3 表名:ACT_GE_PROPERTY (系统相关属性) 4 ...
activiti流程图查看demo
Activiti6-流程跟踪监控图-节点-流程线高亮显示-支持通过、不通过、驳回、退回 支持内容: 已完成节点高亮显示、当前执行中节点红色显示 支持一个节点多条流出线,包括通过、不通过、驳回、退回,按照已执行操作正确...
Activiti 是由 jBPM 的创建者 Tom Baeyens 离开 JBoss 之后建立的项目,构建在开发 jBPM 版本 1 到 4 时积累的多年经验的基础之上,旨在创建下一代的 BPM 解决方案。 Activiti是一个开源的工作流引擎,它实现了...
符合BPMN2.0规范且开源的流程引擎(或平台)才是每个公司需要的,结合长期以来(从jBPM4停止更新)开源流程引擎的使用上可以分为Activiti和jBPM5,前者是jBPM作者Tom的又一力作,而jBMP5则是基于Drools Flow的产物。...
activiti 5.10请假流程 xml
Activiti流程跟踪监控图路径线和节点高亮显示,本实例提供了两种方式,都可以生成png图片。
activiti6.0实现流程图片自定义颜色 当前任务为红色,走过的任务为绿色,自定义文字颜色连线文字显示
Activiti 6.0 流程设计器汉化,替换Activiti-App下的activiti-app-logic-6.0.0.jar 文件
这个是Activiti开发的请假流程实例,可以作为用Activiti开发工作流的参考;项目采用spring+hibernate+strus2+activity开发,可以运行;数据库采用oracle,其中 QingJia 和 QingJiaHis 是自己的业务表,分别表示 请假...
Activiti学习文档(二)之画流程图并部署流程的文件资源……
activiti5.22 流程设计器绘画的流程图条件线上的字不显示 下载该jar包 替换对应的maven仓库的jar包就可以了
Activiti的流程部署Activiti的流程部署Activiti的流程部署Activiti的流程部署
伪汇总审批,就是每一条流程都是独立的,这些独立的流程在走到某个节点的时候,这个节点的审批人可以一次性进行多个任务的审批
NULL 博文链接:https://zfms.iteye.com/blog/1474072
一个简单的activiti请假流程项目,部署,启动,执行,结束,简单描述activiti核心内容。
Activiti(Flowable) 流程实例克隆解决方案1