撤回的实现
工作流系统的回退流,是指流程实例运行到一定阶段后,可以主动的选择回退到曾经运行过的任意轨迹上。回退流的发起方是当前步骤的任务执行人,选择主动的回退,上面有一篇 回退流的实现,主要说明了回退流的实现过程。
工作流系统的撤回,是指流程实例运行了一定的轨迹后,上一步的任务执行人,选择撤回刚刚提交的任务,使得流程再次流转到此步骤。撤回的发起方是当前步骤的上一步任务的执行人,选择主动撤回。
如上图:红色圈为当前运行到的轨迹,当上一步审核步骤的任务执行人,选择主动撤回时,则将回退到审核步骤,再次执行。
撤回与回退的两个区别:
1. 撤回只能撤回到当前步骤的上一步,不能跨多个步骤的撤回。回退是可以任意的回退。
2. 撤回的发起方是上一步的任务执行人。回退的发起方是当前步骤的可执行人。
撤回与回退的相同点:
1. 撤回和回退都是指回到曾经的轨迹;
2. 撤回和回退回到曾经运行的轨迹后,再次生成此轨迹的任务,并且辅助业务补偿类,将环境或业务数据恢复成原来的,持久化变量可以忽略,临时变量则需要重新赋值。
3. 撤回和回退都不是按照流程定义的正常轨迹流转,需要配置有权限的用户去操作。
撤回功能的实现:
既然撤回与回退都是回到曾经运行的轨迹,只是发起方不一样,所以在实现的时候,只需调用同一流程引擎的实现自由回退的api函数。
串行路由,实现撤回,查找当前撤回步骤的下一步是否为当前步骤,是则强行关闭当前的任务,回退到此步骤,重新生成此步骤的任务。
条件路由,实现撤回,查找当前撤回步骤的下一步是否为当前步骤,需要查找有条件结果和无条件结果,有则实现回退。
分支路由,实现撤回,主要是查找当前撤回步骤的下一步是否为当前步骤,需要略过分支节点来查找,查找到了,则实现回退。撤回的过程与回退流的实现过程一样。
分支路由的撤回,分为在分支上面的撤回,与,分支到主干上的撤回
分支--分支的撤回
如下图:
在分支上面的撤回,则只撤回本分支的任务,其它分支不受影响。
分支--主干的撤回
如下图:
分支撤回到主干,则将关闭所有的分支,撤回到主干。如果分支上面嵌套分支,也将关闭所有的嵌套分支,回到主干。
聚合路由,实现撤回,当一个分支提交了,其它分支还未执行,即未满足聚合的条件时,则实现不了撤回,因为当前步骤还在另一个分支,还未执行到聚合后面的节点。当分支条件均满足后,流转到聚合节点后面的步骤,则可以实现撤回,撤回与回退一样,只撤回此分支的轨迹,其它分支不撤回。
撤回与回退的功能均是不按流程定义的轨迹去任意执行,因此在操作的时候不能给所有的用户都分配此功能。撤回与回退在流程引擎中的实现是一样的,撤回只是对回退的一个补充。
- 大小: 16.1 KB
- 大小: 17.1 KB
- 大小: 40.8 KB
分享到:
相关推荐
- **CCBPM**: 驰骋工作流引擎的简称,是专门为浙商银行定制开发的一款高效、灵活的工作流管理系统。 - **BPM**: Business Process Management 的缩写,即业务流程管理,是指企业内部或企业间协调一系列活动的过程,...
这表明该示例不仅实现了工作流的执行,还提供了友好的用户界面,让用户能够直观地进行权限管理和流程控制。通过这种方式,开发人员可以更便捷地设计和调整审批流程,以适应不断变化的业务需求。 uflo是BPM...
通过深入了解和掌握这些知识,开发者可以更好地设计和实现符合业务需求的工作流系统。在实际应用中,结合具体业务场景选择合适的框架,灵活运用各种工作流设计模式,将有助于构建高效、灵活的企业级应用。
从提供的文件信息中,我们可以提炼出一系列与工作流引擎SDK相关的知识点。...开发者在利用这些资源进行二次开发时,还需要参照官方文档和资源,以确保正确使用SDK提供的功能,开发出稳定可靠的工作流应用系统。
【标签】"开发工具"表明这个工具可能是由开发者或者编程人员创建的,用于解决特定的技术问题,即绕过VX的原生消息撤回机制和实现应用的多实例化。这样的工具通常需要一定的技术知识来使用和理解,可能不适合普通用户...
工作流管理联盟(WFMC)的工作流参考模型提供了一个通用的框架,用于理解工作流系统的关键组件和它们之间的交互。通过这个模型,开发者可以构建出一个业务无关、高度抽象的引擎,有效地处理各种工作流程。 总结来说...
描述 "PC微信+QQ+TIM防撤回补丁 v0.8" 提供了补丁的主要目标,即防止消息撤回功能在这些即时通讯平台上工作。这意味着一旦安装了这个补丁,用户将能够看到其他人发送并已撤回的消息,增强了通信的透明度和信息的留存...
JeecgBoot是一款基于Spring Boot快速开发平台,它提供了丰富的功能组件,如代码生成器、权限管理、工作流等,极大地简化了开发流程。而Activiti则是一个流行的工作流引擎,它能够帮助开发者设计、执行和管理业务流程...
1. **.NET框架**:C#公文流转系统构建在.NET框架之上,该框架提供了丰富的类库和开发工具,如Visual Studio,支持快速开发和部署,具有跨平台能力,使得代码编写更加高效。 2. **C#编程语言**:作为.NET框架的主要...
在.NET开发领域,工作流(Workflow)是一种用于管理和自动化业务过程的技术,它允许开发者定义、执行和跟踪一系列步骤,以实现特定的业务逻辑。Umbraco是一个流行的开源内容管理系统(CMS),主要由C#编写,广泛应用...
#### 四、UCML.NET工作流系统的实施效益 1. **时间和成本的节约**:在流程定义、发布、运行、管理配置、监控和优化等方面显著减少时间和成本。 2. **灵活性**:具备快速调整现有流程模型的能力,提供灵活的开发和...
对于Java开发者来说,它提供了一个强大而灵活的平台,可以用来构建复杂的工作流系统,满足各种业务场景的需求。通过深入理解并熟练运用workflow-corex,开发者能够有效地提高工作效率,实现更加智能化的业务流程自动...
本论文详细阐述了一个基于Java Web的线上办公管理系统的设计与实现过程,通过使用现代技术手段解决了传统办公管理的问题,提升了办公效率。同时,系统的设计与实现考虑了易用性、安全性、可扩展性等多个方面,具有较...
总之,**django_workflow_fsm**是Django开发中的一个强大工具,它简化了工作流的实现,让开发者能够专注于业务逻辑而不是流程管理的细节。通过使用这个库,你可以构建出更高效、更灵活的后台应用,提升开发效率,...
通过这个"enterprise-flowable"项目,开发者不仅可以学习到如何利用Flowable构建企业级工作流应用,还能深入理解Spring-Boot集成、流程设计和管理的实践方法,为开发复杂业务流程系统打下坚实基础。
SpringBoot以其便捷的启动和管理特性,极大地提高了开发效率,而Activiti则是一款功能强大的工作流引擎,能够帮助企业实现业务流程自动化。接下来,我们将深入探讨这个整合涉及到的关键知识点。 1. **SpringBoot...
在本项目中,我们关注的是将SpringBoot 2.0.3与Activiti 5.22集成,并结合MySQL数据库实现一个高效的工作流系统。这个系统不仅提供了创建、删除流程模型的功能,还支持查看待办、已办事项,以及进行流程跟踪、任务...
在IT领域,SpringBoot、Activiti和Oracle是三个非常重要的技术组件,它们分别代表了现代企业级应用开发的三大支柱:轻量级框架、工作流引擎和关系型数据库。本项目将这三者进行了深度整合,构建了一个高效、便捷的...
使用SE80可以查看和编辑工作流和事务码的源代码,SE37可以检查和修改函数模块的实现,而ST05可以帮助我们找出数据库更新操作的细节,以确定哪里出了问题。 此外,还可能需要查看SAP的标准注释和知识库,以确认是否...