http://blog.csdn.net/songzheng_741/article/details/17289633

此实例是一个最简单的在运行时人为动态改变流程运转的实例,意在为任意流、驳回等功能抛砖引玉.

定义一个最简单的流程,它只有一个“开始事件”、一个“ServiceTask”、一个“结束事件”.

我们现在的要实现的是直接跳过ServiceTask。

ServiceTask的实现类只是简单的在控制台输出一条语句.

[java] view
plain
copy

  1. public class Log implements JavaDelegate {
  2. public void execute(DelegateExecution execution) throws Exception {
  3. System.err.println("如果我出现了,就说明我没被忽略");
  4. }
  5. }

控制流向的代码如下

[java] view
plain
copy

  1. System.out.println("直接跳过ServiceTask的流程开始..................");
  2. RepositoryService repositoryService = activitiRule.getRepositoryService();
  3. ProcessDefinition processDefinition =
  4. repositoryService.createProcessDefinitionQuery().deploymentId("1").singleResult();
  5. ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService)
  6. .getDeployedProcessDefinition(processDefinition.getId());
  7. List<ActivityImpl> activities = processDefinitionEntity.getActivities();
  8. ActivityImpl start = null;
  9. ActivityImpl task = null;
  10. ActivityImpl end = null;
  11. for (ActivityImpl activity : activities) {
  12. if (activity.getId().equals("startevent1")) {
  13. start = activity;
  14. }
  15. if (activity.getId().equals("usertask1")) {
  16. task = activity;
  17. }
  18. if (activity.getId().equals("endevent1")) {
  19. end = activity;
  20. }
  21. }
  22. //清除原先的路径
  23. List<PvmTransition> cacheTran = start.getOutgoingTransitions();
  24. start.getOutgoingTransitions().clear();
  25. //创建新路径
  26. TransitionImpl tran = start.createOutgoingTransition();
  27. tran.setDestination(end);
  28. RuntimeService runtimeService = activitiRule.getRuntimeService();
  29. runtimeService.startProcessInstanceById(processDefinitionEntity.getProcessDefinition().getId());
  30. //恢复原来路径
  31. start.getOutgoingTransitions().clear();
  32. for (PvmTransition transition : cacheTran) {
  33. start.createOutgoingTransition().setDestination((ActivityImpl) transition.getDestination());
  34. }

这样ServiceTask将被跳过不会自动执行

当注释掉

start.getOutgoingTransitions().clear();

serviceTask将被执行.

这种方法只会影响一个流程实例的流程定义的内存镜像,其他流程不会受到影响.

Activti跳过中间节点的helloworld实例程序的更多相关文章

  1. SpringMVC HelloWorld实例开发及部署

    SpringMVC HelloWorld实例开发及部署 2017-01-24 目录 1 Tomcat及Eclipse Tomcat插件安装配置  1.1 Tomcat的安装  1.2 Eclipse ...

  2. SpringMVC之HelloWorld实例

    1.1 Helloworld实例的操作步骤  1. 加入jar包 2. 配置dispatcherServlet 3. 加入Spring配置文件 4. 编写请求处理器 并表示为处理器 5. 编写视图 1 ...

  3. svn up时提示跳过某节点

    # svn up    提示跳过某某节点 解决办法: # svn revert 文件path 提示下,自己改的文件确定不要被revert了,那样你就merge就好了. svn命令可参考这个文章:htt ...

  4. window.location.hash 页面跳转,精确定位,实例展示:

    window.location.hash 页面跳转,精确定位,实例展示: (1).index.phtml,页面用于传参 <script id="bb_list_template&quo ...

  5. Maven– HelloWorld实例

    Maven– HelloWorld实例 maven安装好后,可以通过HelloWorld项目来体验一下maven是如何构建项目的.Maven项目的核心是pom.xml(就像Ant的build.xml一 ...

  6. C#网络编程TCP通信实例程序简单设计

    C#网络编程TCP通信实例程序简单设计 采用自带 TcpClient和TcpListener设计一个Tcp通信的例子 只实现了TCP通信 通信程序截图: 压力测试服务端截图: 俩个客户端链接服务端测试 ...

  7. C# 实现单实例程序

    在我们经常使用的软件中,当我们已经打开后,再次打开时,有的软件不会出现两个.例如有道词典,会将上次的界面显示出来,或者提示我们“该程序已经运行...”.我通过一个简单的C# WPF例子来说明. 首先我 ...

  8. tesseract ocr文字识别Android实例程序和训练工具全部源代码

    tesseract ocr是一个开源的文字识别引擎,Android系统中也可以使用.可以识别50多种语言,通过自己训练识别库的方式,可以大大提高识别的准确率. 为了节省大家的学习时间,现将自己近期的学 ...

  9. Android L Camera2 API 使用实例程序汇总

    在网上发现几个使用Camera API2开发的实例程序,总结一下方便后续参考: 1.Camera2 Basic : https://github.com/googlesamples/android-C ...

随机推荐

  1. jquery 资料收集

    1.jquery 特效:http://www.yeshou-jquery.com/yeshou/jquery.html 2.jquery 无缝文字滚动效果(跑马灯效果)插件 Marquee(MSCla ...

  2. 【noip2012】疫情控制

    题意: 给出一颗n个节点有边权的树 和m个军队所在的位置 军队从某节点移动到相邻节点要花费边长度的时间 求最少要多少时间使得根节点(编号为1)到每个叶子的路径上最少有一支军队(根节点不能有军队) 题解 ...

  3. Jquery花园

    1.在线jquery  api:http://hemin.cn/jq/ 2.jquery官网:jquery.com 3.http://www.jqcool.net/ 4.http://www.fron ...

  4. GridView控件显示图片

    与图片的二进制数据库存储和显示 1.将图片以二进制存入数据库 2.读取二进制图片在页面显示 3.设置Image控件显示从数据库中读出的二进制图片 4.GridView中ImageField以URL方式 ...

  5. oracle查找重复记录

    SELECT *FROM t_info aWHERE ((SELECT COUNT(*)          FROM t_info          WHERE Title = a.Title) &g ...

  6. Android设备上i-jetty环境的搭建-手机上的web服务器

    本文主要跟大家分享如何将一台Android设备打造成一个web服务器使用. 编译i-jetty 1.将源码download下来,http://code.google.com/p/i-jetty/dow ...

  7. 【BZOJ2318】【spoj4060】game with probability Problem 概率DP

    链接: #include <stdio.h> int main() { puts("转载请注明出处[辗转山河弋流歌 by 空灰冰魂]谢谢"); puts("网 ...

  8. 同时使用ADO与Excel类库冲突的问题

    客户需要一个Demo程序实现Access数据库表导出到Excel表格,并将表中存储的照片(OLE对象)以其中一个字段(编号)命名存储到本地.程序中引入了ADO操作Access数据库("C:\ ...

  9. MySQL如何选择float, double, decimal

    http://yongxiong.leanote.com/post/mysql_float_double_decimal

  10. git 客户端 代码下载与提交

    (1)git clone 服务器用户名@服务器IP:~/Git目录/.git 功能:下载服务器端Git仓库中的文件或目录到本地当前目录. (2)对Git目录中的文件进行修改. (3)git statu ...