Activti跳过中间节点的helloworld实例程序
http://blog.csdn.net/songzheng_741/article/details/17289633
此实例是一个最简单的在运行时人为动态改变流程运转的实例,意在为任意流、驳回等功能抛砖引玉.
定义一个最简单的流程,它只有一个“开始事件”、一个“ServiceTask”、一个“结束事件”.
我们现在的要实现的是直接跳过ServiceTask。
ServiceTask的实现类只是简单的在控制台输出一条语句.
- public class Log implements JavaDelegate {
- public void execute(DelegateExecution execution) throws Exception {
- System.err.println("如果我出现了,就说明我没被忽略");
- }
- }
控制流向的代码如下
- System.out.println("直接跳过ServiceTask的流程开始..................");
- RepositoryService repositoryService = activitiRule.getRepositoryService();
- ProcessDefinition processDefinition =
- repositoryService.createProcessDefinitionQuery().deploymentId("1").singleResult();
- ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService)
- .getDeployedProcessDefinition(processDefinition.getId());
- List<ActivityImpl> activities = processDefinitionEntity.getActivities();
- ActivityImpl start = null;
- ActivityImpl task = null;
- ActivityImpl end = null;
- for (ActivityImpl activity : activities) {
- if (activity.getId().equals("startevent1")) {
- start = activity;
- }
- if (activity.getId().equals("usertask1")) {
- task = activity;
- }
- if (activity.getId().equals("endevent1")) {
- end = activity;
- }
- }
- //清除原先的路径
- List<PvmTransition> cacheTran = start.getOutgoingTransitions();
- start.getOutgoingTransitions().clear();
- //创建新路径
- TransitionImpl tran = start.createOutgoingTransition();
- tran.setDestination(end);
- RuntimeService runtimeService = activitiRule.getRuntimeService();
- runtimeService.startProcessInstanceById(processDefinitionEntity.getProcessDefinition().getId());
- //恢复原来路径
- start.getOutgoingTransitions().clear();
- for (PvmTransition transition : cacheTran) {
- start.createOutgoingTransition().setDestination((ActivityImpl) transition.getDestination());
- }
这样ServiceTask将被跳过不会自动执行
当注释掉
start.getOutgoingTransitions().clear();
serviceTask将被执行.
这种方法只会影响一个流程实例的流程定义的内存镜像,其他流程不会受到影响.
Activti跳过中间节点的helloworld实例程序的更多相关文章
- SpringMVC HelloWorld实例开发及部署
SpringMVC HelloWorld实例开发及部署 2017-01-24 目录 1 Tomcat及Eclipse Tomcat插件安装配置 1.1 Tomcat的安装 1.2 Eclipse ...
- SpringMVC之HelloWorld实例
1.1 Helloworld实例的操作步骤 1. 加入jar包 2. 配置dispatcherServlet 3. 加入Spring配置文件 4. 编写请求处理器 并表示为处理器 5. 编写视图 1 ...
- svn up时提示跳过某节点
# svn up 提示跳过某某节点 解决办法: # svn revert 文件path 提示下,自己改的文件确定不要被revert了,那样你就merge就好了. svn命令可参考这个文章:htt ...
- window.location.hash 页面跳转,精确定位,实例展示:
window.location.hash 页面跳转,精确定位,实例展示: (1).index.phtml,页面用于传参 <script id="bb_list_template&quo ...
- Maven– HelloWorld实例
Maven– HelloWorld实例 maven安装好后,可以通过HelloWorld项目来体验一下maven是如何构建项目的.Maven项目的核心是pom.xml(就像Ant的build.xml一 ...
- C#网络编程TCP通信实例程序简单设计
C#网络编程TCP通信实例程序简单设计 采用自带 TcpClient和TcpListener设计一个Tcp通信的例子 只实现了TCP通信 通信程序截图: 压力测试服务端截图: 俩个客户端链接服务端测试 ...
- C# 实现单实例程序
在我们经常使用的软件中,当我们已经打开后,再次打开时,有的软件不会出现两个.例如有道词典,会将上次的界面显示出来,或者提示我们“该程序已经运行...”.我通过一个简单的C# WPF例子来说明. 首先我 ...
- tesseract ocr文字识别Android实例程序和训练工具全部源代码
tesseract ocr是一个开源的文字识别引擎,Android系统中也可以使用.可以识别50多种语言,通过自己训练识别库的方式,可以大大提高识别的准确率. 为了节省大家的学习时间,现将自己近期的学 ...
- Android L Camera2 API 使用实例程序汇总
在网上发现几个使用Camera API2开发的实例程序,总结一下方便后续参考: 1.Camera2 Basic : https://github.com/googlesamples/android-C ...
随机推荐
- CUDA学习资料分享(随时更新)
1.Programming_Massively_Parallel_Processors.pdf 2.CUDA_C_Programming_Guide.pdf 3.CUDA范例精解通用GPU编程.pdf ...
- 【转载】socket的半包,粘包与分包的问题
http://zhaohuiopensource.iteye.com/blog/1541270 首先看两个概念: 短连接: 连接->传输数据->关闭连接 HTTP是无状态的,浏览器和 ...
- jQuery遍历多层json数据
1.json与jsonp的区别(待查) 2.要遍历的数据如下: {"status": "ok", "code": 200, "da ...
- BNUOJ-29358 Come to a spring outing 搜索,DP
题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=29358 状态虽然很多,但是非常稀疏,dfs搜索然后剪下枝.. 或者DP,f[i][j][k ...
- BNUOJ-29357 Bread Sorting 模拟
题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=29357 直接模拟就可以了.. //STATUS:C++_AC_190MS_1884KB # ...
- unigui多页签UI框架
procedure TMainForm.openForm(Caption, FormClassName: string);var i: integer; sheet: TUniTabSheet;beg ...
- 备份数据表为insert 脚本
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...
- 转载StringBuilder说明
动态串StringBuilder 利用System.Text.StringBuilder类实现动态字符串,动态的含义是指在修改字符串时,系统不需要创建新的对象,不会重复开辟新的内存空间,而是直接在原来 ...
- android四大功能组件概要总结
1.activity 某一个activity对应于app中的一个具体的页面.而intent是具些activity都具有的同类型操作的抽象,比如Main View Edit PICK 已及所对应的数据 ...
- Linux使用netstat命令查看并发连接数[转]
转自:http://www.cnblogs.com/wayne173/p/5652043.html Linux使用netstat命令查看并发连接数 我们的网站部署在linux的服务器上,特别是we ...