activiti5.11的跳转问题,除了在流程定义文件中使用分支节点控制流程的转向外,在java程序代码中同样可以控制流程的转向。
如在流程定义文件中:
<process id="process1" name="process1" isExecutable="true">
<startEvent id="startevent1" name="Start"></startEvent>
<sequenceFlow id="flow1" name="" sourceRef="startevent1" targetRef="serviceTask1"></sequenceFlow>
<serviceTask id="serviceTask1" name="serviceTask1" activiti:class="com.activiti.testcase.turn.ServiceTask1Listener"/>
<sequenceFlow id="s2" sourceRef="serviceTask1" targetRef="userTask2" ></sequenceFlow>
<sequenceFlow id="s3" sourceRef="serviceTask1" targetRef="manualTask1" ></sequenceFlow>
<userTask id="userTask2" name="userTask2" activiti:assignee="gonzo"></userTask>
<manualTask id="manualTask1" name="manualTask1"></manualTask>
<sequenceFlow id="s4" targetRef="userTask2" sourceRef="endevent1"></sequenceFlow>
<sequenceFlow id="s5" targetRef="manualTask1" sourceRef="endevent1"></sequenceFlow>
<endEvent id="endevent1" name="End"></endEvent>
</process>
其中serviceTask 的类中是实现流程转向的具体代码。
首先说明:要使用serviceTask调用外部的java类,则该java类必须实现JavaDelegate或ActivityBehavior接口,若需要控制流程的转向则需实现 ActivityBehavior接口,因为该接口功能更强大。
来看ServiceTask1Listener类,该类只有一个execute方法:
public class ServiceTask1Listener implements ActivityBehavior {
public void execute(ActivityExecution execution) throws Exception {
//流程定义id
String procDefId = execution.getProcessDefinitionId();
RepositoryServiceImpl repositoryService = (RepositoryServiceImpl)execution.getEngineServices().getRepositoryService();
//流程定义的实现
ProcessDefinitionImpl processDefinitionImpl = (ProcessDefinitionImpl)repositoryService.getDeployedProcessDefinition(procDefId);
//当前执行的活动节点
ActivityImpl ac = (ActivityImpl)execution.getActivity();
//创建输出的执行路径
TransitionImpl transition = ac.createOutgoingTransition("flow1");
//设置输出路径的目标节点
ActivityImpl destination = new ActivityImpl("serviceTask1", processDefinitionImpl);
destination.setActivityBehavior(this);
//设置目标节点
transition.setDestination(destination);
List<PvmTransition> pvms = execution.getActivity().getOutgoingTransitions();
//[ s2,s3,flow1]
//选用刚刚创建的执行路径
execution.take(pvms.get(2));
}
}
分享到:
相关推荐
官方的activiti5.11快照,经本人测试可用,但是还未中文化,希望多多分享
在涉及到Activiti的使用时,经常会遇到需要动态控制流程节点跳转的情况,尤其是在处理多级审核流程时。本文将深入探讨如何在Android开发中实现Activiti节点的灵活跳转,以及解决由此产生的冗余和灵活性问题。 首先...
3、已经对该流程引擎的activiti-engine-7.1.0.M3.1.jar进行了源码修改,下载直接使用即可,同时支持达梦数据库服务器多个数据库实例的场景,网上大多修改的方法只适合单个数据库实例(多个数据库实例下流程引擎的数据...
这个压缩包"activiti5.11"很可能包含了Activiti 5.11版本的所有核心组件和依赖。Activiti 5是一个成熟且广泛使用的版本,它支持BPMN 2.0标准,提供了一个直观的模型化工具,以及丰富的API和集成选项。 以下是...
activiti没有撤回,由于业务的需求需要实现撤回,在参考别人代码后以两种方式实现了任意节点的跳转。代码真实可用,如有问题可联系我 第一种方式: 1、获取当前节点,获取跳转节点 2、获取节点的所有流出流向,把...
Activiti Modeler是一款基于Java开发的流程建模工具,它主要与Activiti BPMN(业务流程管理Notation)引擎紧密配合,为用户提供了一个直观、易用的界面来设计、模拟和部署业务流程。Activiti是Alfresco公司推出的一...
Activiti 是一个开源的工作流程引擎,它主要用于自动化业务流程。这个源码包是 Activiti 5.22.0 版本,包含了整个框架的源代码,为开发者提供了深入理解 Activiti 内部机制的机会。以下是一些关于 Activiti 的核心...
activiti系列第二期课程课程重点讲解中国式的常用流程,比如activiti中modler设计器扩展属性、activiti中xml扩展自定义属性、activiti任意节点跳转、activiti多实例、activiti任务节点跳转、activiti多实例、...
Activiti 适配达梦数据库教程 activiti 是一个开源的 Workflow 和 BPM system,它提供了强大的工作流引擎和业务流程管理功能。然而,activiti 默认支持的数据库只有 MySQL、 PostgreSQL、Oracle 等少数几种,而达梦...
Activiti Designer是基于Eclipse的一款流程建模工具,主要用于设计和管理Activiti工作流引擎的业务流程。在 Activiti Designer 5.18 版本中,它为开发者提供了直观的图形化界面,使得创建、修改和理解业务流程模型变...
Activiti 是一个开源的工作流和业务流程管理(BPM)平台,它被广泛用于企业级应用中,以实现流程自动化和提升工作效率。标题中的 "activiti-5.22.0zip下载" 指的是Activiti的一个特定版本——5.22.0的压缩包文件,...
Activiti 是一个开源的工作流和业务自动化引擎,它在Java平台上运行,并且与Spring框架高度集成。这个"activiti5.22jar包"是Activiti 5.22版本的打包文件,其中包含了所有运行Activiti所需的核心库和依赖。在本文中...
《Spring-Activiti在Ruoyi框架中的应用与二次开发》 在当今的企业级应用开发中,工作流管理系统已经成为不可或缺的一部分。Spring-Activiti作为一款强大的工作流引擎,结合Spring Boot框架,为开发者提供了便捷、...
Jeecg集成activiti.docx Jeecg集成activiti是一个关于如何将activiti集成到Jeecg平台上的指南。下面是从给定的文件中提取的相关知识点: 1. activiti项目结构:activiti项目是一个Maven项目,包含了数据库文件,...
Activiti 是一个开源的工作流程和业务自动化引擎,它在企业级应用中被广泛使用来管理业务流程。这个压缩包 "activiti-explorer.war" 是 Activiti 的一个版本,具体是 5.22 版本。WAR 文件是 Web 应用程序档案(Web ...
《Activiti实战 PDF电子书-含书签目录.pdf》,activiti版本5.11
activiti 5.22 explorer的war包