Activiti 简易教程二 version5.10升级version5.12.1

一搭建环境

1.1 JDK 6+

1.2 Ant 1.8.1+

1.3 Eclipse 3.7+

1.4 Activiti -eclipse designer插件安装

1.4.1 先安装GEF插件

1.4.2 安装SVN插件

1.4.3安装Maven插件

1.4.4 最后安装Activiti -eclipse designer

二开始activiti 5.12.1的第一个demo

2.1 建立activiti-demo工程,选择Activiti Project

2.2 将activiti-demo工程的数据库整合为MySQL

2.3 设计activiti-demo工程的流程

 

以上详细描述参照Activiti 简易教程一 version5.10(http://blog.csdn.net/yangyi22/article/details/9225849

测试类代码 DemoProcessTest.java

[java] view
plain
 copy

  1. package main.java;  
  2.   
  3. import java.io.FileInputStream;  
  4. import java.util.List;  
  5. import org.activiti.engine.HistoryService;  
  6. import org.activiti.engine.ProcessEngine;  
  7. import org.activiti.engine.ProcessEngines;  
  8. import org.activiti.engine.RepositoryService;  
  9. import org.activiti.engine.RuntimeService;  
  10. import org.activiti.engine.TaskService;  
  11. import org.activiti.engine.history.HistoricProcessInstance;  
  12. import org.activiti.engine.runtime.ProcessInstance;  
  13. import org.activiti.engine.task.Task;  
  14.   
  15. public class DemoProcessTest {  
  16.     // diagrams实际路径  
  17.         private static String realPath =   
  18.                 "D:\\Java~coding~site\\J2EE-IDE\\Workspace\\workspace[indigo-jee]" +  
  19.                 "\\activiti-512demo\\src\\main\\resources\\diagrams";  
  20.         public static void main(String[] args) throws Exception {  
  21.             // 创建 Activiti流程引擎  
  22.             //方式一 自动寻找activiti.cfg.xml  
  23.             ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();  
  24.               
  25.             //方式二 指定加载activiti.cfg.xml  
  26. //          ProcessEngine processEngine = ProcessEngineConfiguration  
  27. //                  .createProcessEngineConfigurationFromResource("activiti.cfg.xml")  
  28. //                  .buildProcessEngine();  
  29.               
  30.             // 取得 Activiti 服务  
  31.             RepositoryService repositoryService = processEngine.getRepositoryService();  
  32.             RuntimeService runtimeService = processEngine.getRuntimeService();  
  33.   
  34.             // 部署流程定义  
  35.             repositoryService  
  36.                     .createDeployment()  
  37.                     .addInputStream("DemoProcess.bpmn",new FileInputStream(realPath + "\\DemoProcess.bpmn"))  
  38.                     .addInputStream("DemoProcess.png", new FileInputStream(realPath + "\\DemoProcess.png"))  
  39.                     .deploy();  
  40.               
  41.             // 启动流程实例  
  42.             ProcessInstance instance = processEngine  
  43.                      .getRuntimeService().startProcessInstanceByKey("DemoProcess");  
  44.             String procId = instance.getId();  
  45.             System.out.println("procId:"+ procId);  
  46.               
  47.             // 获得第一个任务  
  48.             TaskService taskService = processEngine.getTaskService();  
  49.             List<Task> tasks = taskService.createTaskQuery().taskDefinitionKey("firstTask").list();  
  50.             for (Task task : tasks) {  
  51.                 System.out.println("Following task is: taskID -" +task.getId()+" taskName -"+ task.getName());  
  52.                 // 认领任务  
  53.                 taskService.claim(task.getId(), "testUser");  
  54.             }  
  55.                
  56.             // 查看testUser 现在是否能够获取到该任务  
  57.             tasks = taskService.createTaskQuery().taskAssignee("testUser").list();  
  58.             for (Task task : tasks) {  
  59.                 System.out.println("Task for testUser: " + task.getName());  
  60.                 // 完成任务  
  61.                 taskService.complete(task.getId());  
  62.             }  
  63.             System.out.println("Number of tasks for testUser: "  
  64.                     + taskService.createTaskQuery().taskAssignee("testUser").count());  
  65.               
  66.   
  67.             // 获取并认领第二个任务  
  68.             tasks = taskService.createTaskQuery().taskDefinitionKey("secondTask").list();  
  69.             for (Task task : tasks) {  
  70.                 System.out.println("Following task is : taskID -" +task.getId()+" taskName -"+ task.getName());  
  71.                 taskService.claim(task.getId(), "testUser");  
  72.             }  
  73.               
  74.             //完成第二个任务结束结束流程  
  75.             for (Task task : tasks) {  
  76.                 taskService.complete(task.getId());  
  77.             }  
  78.               
  79.             // 核实流程是否结束  
  80.             HistoryService historyService = processEngine.getHistoryService();  
  81.             HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(procId).singleResult();  
  82.             System.out.println("Process instance end time: " + historicProcessInstance.getEndTime());  
  83.         }  
  84.   
  85. }  

 

 依赖jar包说明

         Activiti5.10以后的版本已经去掉第三方的jar包,从官网下载的Activiti5.12.1的依赖包仅仅包含activiti相关的jar,目录libs下的jar包如下:

        

        

        

 

运行测试代码,会发现少了很多依赖包,我的处理的方法是直接从5.10版本导入缺少的jar包,导入后测试代码通过。

jar包:

        

         

 

教程二完毕。

时间: 2024-08-29 02:31:08

Activiti 简易教程二 version5.10升级version5.12.1的相关文章

Div+CSS布局入门教程(二) -- 写入整体层结构与CSS

css|教程|入门教程 二.写入整体层结构与CSS 接下来我们在桌面新建一个文件夹,命名为"DIV+CSS布局练习",在文件夹下新建两个空的记事本文档,输入以下内容:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=

黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级)

原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级) 本章介绍的是企业库加密应用程序模块Cryptographyproviders中为对称加密配置Key文件的3种方式: create a new key  : 使用一串字符串作为Key,然后通过加密保存到一个Key文件中. use an existing DPAPI-protected key file  : 使用一个现有的Key文件进

MVC5 + EF6 入门完整教程二

原文:MVC5 + EF6 入门完整教程二 从前端的UI开始 MVC分离的比较好,开发顺序没有特别要求,先开发哪一部分都可以,这次我们主要讲解前端UI的部分. ASP.NET MVC抛弃了WebForm的一些特有的习惯,例如服务器端控件,ViewState这些东西,让Web回归原始的状态,Web是什么样子就是什么样子.而谈到一个Web Application的UI,涉及到的无非就是html.css. js这些东西. 文章提纲 概述 重要概念介绍 建立 注册/登录UI 步骤(静态页面àViewà功

怎样从 Ubuntu 12.10 升级到 Ubuntu 13.04

你是否已经为ubuntu升级到Ubuntu13.04做好了准备,本教程将教你如何从Ubuntu12.10升级到ubuntu 13.04. 目前13.04仍然是beta或alpha测试阶段,所以这意味着它不是完全稳定,并且可能包含错误和问题.您可以尝试在测试机器上的升级,而不是一个正是的生产系统,或等到4月25日13.04最终被释放,然后再继续阅读本教程. 在开始之前,请做好重要文件的备份. 开始任何升级过程之前,建议禁用所有的第三方软件库.您可以在"系统设置" – >软件源 –

Dreamweaver 4 简明教程(二、初步认识 Dreamweaver)

dreamweaver|教程 二.初步认识 Dreamweaver Dreamweaver的启动 Dreamweaver的安装过程非常简单,一但成功安装后,就可以在开始菜单找到Dreamweaver的选项: 编辑窗口 第一次启动Dreamweaver,首先看到的是Dreamweaver的编辑窗口,千万别给上面密密麻麻的浮动窗口吓倒,其实常用的,就以下几个: ① 主菜单:在这里可以找到编辑窗口的的绝大部分功能: ② 工具栏:是Dreamweaver4的新增功能: ③ 对象面板(Objects):在

Android简明开发教程二十二:使用资源Resources

在前面的例子中,我们忽略了一个重要的原则,在代码和Layout中,直接使用了字符串常量,比如: <Button android:text="Pattern" android:id="@+id/btnPattern" android:layout_width="wrap_content" android:textColor="@color/black" android:checked="true" an

session全教程(二)

session|教程 二.php3,4中session的实现 在php3中是没有session这种东东的,但我们又需要,怎么办呢?别急,有很多人替你做了这些,这其中最有名的要算phplib了.你可以去国外下载,可以上国内大部分php站点下载.我们要做的第一件事是让phplib和php3结合在一起使它能工作.为了能实现这方面的功能,我们需要先安装phplib.跟着我来做,很容易的(以下方法在win2000+php3.0.16+apache1.3.12+phplib7.2c+mysql3.23.21

站内优化系列教程二:网站头部和底部优化

前面给大家讲了<站内优化系列教程一:导航优化和结构优化>和<站内优化系列教程二:URL和网站地图优化>两课,今天讲第三课<站内优化系列教程二:网站头部和底部优化>.给网站做站优化最基本的目的就是为了提高网站的排名,相对来说这也是大部分站长优化的主要目的,毕竟如果网站排名不靠前,自然就无法从搜索引挚获取大量的流量,而对于网站运营.提高网站知名度.打造网站特有的品牌则是难之又难.回归正题,大部分站长做网站优化都是特别的重视站外优化,而忽视站内的基本优化,其实最基本的提高用户

站内优化系列教程二:URL和网站地图优化

前面说了<站内优化系列教程一:导航与结构的优化>,今天说第二课<站内优化系列教程二:URL和网站地图优化>.网站优化中影响最直接的就是网站URL,也就是网站网址.一般站长都会认为静态的网址对于收录和排名都非常的友好.而动态和伪静态则是以次类推.其实这种想法大部分都出现在对搜索引挚识别能力不够了解的基础上的,如果大家不信,可以看看百度知道的URL,其用的最多的还是动态的URL,所以,对于静态的收录排名比动态的好这种说法并不成立,百度知道就是一个很明显的例子.而对于蜘蛛爬行网站,则有地