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_Modeler5.11发布以及教程,有兴趣的朋友可以下下
主要介绍了Android开发之activiti节点跳转的相关资料,需要的朋友可以参考下
3、已经对该流程引擎的activiti-engine-7.1.0.M3.1.jar进行了源码修改,下载直接使用即可,同时支持达梦数据库服务器多个数据库实例的场景,网上大多修改的方法只适合单个数据库实例(多个数据库实例下流程引擎的数据...
activiti没有撤回,由于业务的需求需要实现撤回,在参考别人代码后以两种方式实现了任意节点的跳转。代码真实可用,如有问题可联系我 第一种方式: 1、获取当前节点,获取跳转节点 2、获取节点的所有流出流向,把...
activiti系列第二期课程课程重点讲解中国式的常用流程,比如activiti中modler设计器扩展属性、activiti中xml扩展自定义属性、activiti任意节点跳转、activiti多实例、activiti任务节点跳转、activiti多实例、...
《Activiti实战 PDF电子书-含书签目录.pdf》,activiti版本5.11
activiti的jar包
《Activiti实战》 一共四个部分:准备篇(1~2章)介绍了Activiti的概念、特点、应用、体系结构,以及开发环境的搭建和配置;基础篇(3~4章)首先讲解了Activiti Modeler、Activiti Designer两种流程设计工具的详细...
activiti 5.22 explorer的war包
Activiti工作流中文开发帮助API文档说明。 Activiti工作流表结构文档说明。
赠送jar包:activiti-engine-5.21.0.jar; 赠送原API文档:activiti-engine-5.21.0-javadoc.jar; 赠送源代码:activiti-engine-5.21.0-sources.jar; 赠送Maven依赖信息文件:activiti-engine-5.21.0.pom; 包含...
activiti工作流的 PPT 大致讲了一下activiti的常用API
activiti-5.22.0zip下载
忙活了一个星期左右,查找各种资料,终于将Activiti的流程设计器分离出来,与SpringMVC,spring整合了起来,先把工程分享出来,等有时间了在慢慢讲解具体的整合步骤。工程下载之后直接可以运行,只需要改一下数据库...
Activiti 5.22.0 全部源码,帮助分析Activiti 工作原理!
在原有Activiti的教程资源上对零散的源码进行了集中整理,并增加了pdm、IDE集成Activiti插件等文件,附上部分菜单,整理不易,给分支持,后期继续分享其他资源 01 - 问候Activiti他大爷 1.Activiti简介 2....
activiti modeler 编辑器
Activiti是一个独立运作和经营的开源项目品牌,并将独立于Alfresco开源ECM系统运行。 Activiti将是一种轻量级,可嵌入的BPM引擎,而且还设计适用于可扩展的云架构。 Activiti将提供宽松的Apache许可2.0,以便这个...