一搭建环境

1.1   JDK 6+

activiti 运行在版本 6以上的 JDK上。转到 Oracle Java SE下载页面,点击按钮“下载 JDK”。网页中也有安装说明。要核实安装是否成功,在命令行上运行 java–version。将打印出安装的 JDK的版本。

1.2   Ant 1.8.1+

从 Ant[http://ant.apache.org/bindownload.cgi]下载页面下载最新稳定版的 Ant。解压文件,确保其 bin文件夹在操作系统的 path 下。在命令行上运行 ant–version 来检查 Ant是否安装成功。成功将打印安装的 Ant 版本。

1.3   Eclipse 3.7+

从 Eclipse的下载页面下载 Eclipse Classic(或Eclipse JEE)版的 eclipse。解压下载的文件,然后就可以运行 eclipse路径下的eclipse 文件了。

下载地址:http://www.eclipse.org/downloads/packages/release/indigo/sr2

1.4   Activiti -eclipse designer插件安装

在安装Activiti -eclipse designer插件前先安装maven插件,m2e(eclipse)插件在Install New SoftWare安装时会出现些问题,按以下步骤安装即可。

1.4.1 先安装GEF插件

maven插件安装的时候会依赖这个插件,在Eclipse -> help -> Install New SoftWare中安装,update site:http://download.eclipse.org/tools/gef/updates/interim/

1.4.2 安装SVN插件

在Eclipse -> help -> Install New SoftWare中安装,update site:http://subclipse.tigris.org/update_1.6.x

1.4.3安装Maven插件

方式一:在线安装

在Eclipse -> help -> Install New SoftWare中安装,update site:http://nexus.tesla.io:8081/nexus/content/sites/m2e.extras/m2e/1.5.0/N/LATEST/

顺便eclipse m2e支持site:http://www.eclipse.org/m2e/download/

如在线安装不成功,报[the selected did not contain any resources that can run on server maven project]错误,建议采用方式二安装。

方式二:本地安装

下载maven和 eclipse-maven3-plugin插件(eclipse-maven3-plugin为本人CSDN上传)

Maven site: http://ant.apache.org/bindownload.cgi

eclipse-maven3-plugin site: http://download.csdn.net/detail/yangyi22/5663245

在eclipse目录下建立myplugins目录,将eclipse-maven3-plugin解压后文件复制进去,建立links目录,新建maven.link文件(名字随意取)添加文本:

path=…/eclipse/myplugins/maven,即让eclipse启动时去寻找myplugins中的插件,如本人安装的路径:path=D:/Java~coding~site /eclipse[indigo-jee]/eclipse/myplugins/maven

1.4.4 最后安装Activiti -eclipse designer

打开 HelpàInstall New Software。在如下面板中,点击Add按钮,然后填入下列字段:lName:Activiti BPMN 2.0 designer

Location:http://activiti.org/designer/update/

安装成功后,新建activiti项目,视图如下:

安装m2eclipse插件后,重启Eclipse,如提示

Eclipse is running in a JRE, but a JDK is required

Some Maven plugins may not work when importing projects or updating source folders.

需要修改eclipse.ini文件,新增一项配置

-vm配置项必须在–vmargs配置项前,是因为执行到-vmargs配置项已经选择了一个默认的JVM了。

所以在–vmargs前面加上这一句:

-vm

C:/Program Files/Java/jdk1.6.0_20/bin/javaw.exe

二开始activiti 5.10的第一个demo

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

创建成功后的项目:

给activiti-demo项目添加activiti依赖包,项目右键Build Path->Configure Build Path->libraries -> Add External Jars选中…\activiti-5.10\setup\files\dependencies\libs下所有包添加即可。

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

将…\activiti-5.10\setup\build\activiti-cfg目录下的activiti.cfg.xml配置文件复制到项目src\main\resources目录下,修改数据库配置如下:

<!-- Database configurations -->

<propertyname="jdbcUrl"

value="jdbc:mysql://localhost:3306/test?autoReconnect=true"/>

<propertyname="jdbcDriver"

value="com.mysql.jdbc.Driver"/>

<propertyname="jdbcUsername"value="root"/>

<propertyname="jdbcPassword"value="root"/>

<!-- Database configurations -->

<propertyname="databaseSchemaUpdate"value="true"/>

<!-- job executor configurations -->

<propertyname="jobExecutorActivate"value="false"/>

2.3 设计activiti-demo工程的流程

在该项目的src/main/resource/diagrams下右键创建Activiti diagram,文件名为:DemoProcess.bpmn。

 -->

此时进入Activiti Diagram Editor,在空白处点一下,下边属性栏中设置id和name,id就是这个流程的key,后边启动流程的时候使用到。

注意:Activiti 5.8升级到5.9以后,xxx.bpmn20.xml和xxx.png已不默认生成,仅仅是生成xxx.bpmn文件,xxx.bpmn中的定义内容就如xxx.bpmn20.xml一样。

        另外,快捷菜单:“Create deployment artifacts”和“Import BPMN20 file”,在5.9以后去掉了。

如需设计完成流程后自动生成一个png图片按如下处理

l  保存无法生存png图片按以下处理

Window –> Preferences -> Activiti ->Save勾选即可

或者手动操作用Activiti Designer打开xxx.bpmn文件,然后右键选择Export Diagram...,在弹出的对话框中设置图片的参数即可,一般使用默认就可以了。

在设计编辑器中保存DemoProcess.bpmn后的项目视图如下:

测试类代码  DemoProcessTest.java

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

教程一完毕。

Activiti 简易教程相关推荐

  1. qmake 简易教程

    qmake 简易教程 qmake是Qt开发中默认的构建工具. posted on 2018-05-27 00:09 JichengTang 阅读(...) 评论(...) 编辑 收藏 转载于:http ...

  2. eslint不报错 vue_【简易教程】基于Vue-cli使用eslint指南

    插件安装 首先在vscode插件中搜索eslint和prettier. 啥也不管,这俩必须得装. 插件简介 vscode插件库里的eslint是用来在你写代码的时候就直接给你报错.(vue-cli中的 ...

  3. Ocelot简易教程(一)之Ocelot是什么

    Ocelot简易教程(一)之Ocelot是什么 原文:Ocelot简易教程(一)之Ocelot是什么 作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/955 ...

  4. 安装python程序后要进行什么设置-安装好Pycharm后如何配置Python解释器简易教程...

    这两天有许多Python小白加入学习群,并且问了许多关于Pycharm基本使用的问题,今天小编就以配置Python解释器的问题给大家简单絮叨一下. 1.一般来说,当我们启动Pycharm,如果Pych ...

  5. ST单片机使用ST Visual Programmer软件烧录程序简易教程

    文章原始地址: http://feotech.com/?p=100 ST单片机使用ST Visual Programmer软件烧录程序简易教程 ST Visual Programmer 是ST公司为自 ...

  6. mysql游标进阶_mysql进阶(三)游标简易教程

    mysql游标简易教程 从mysql V5.5开始,进行了一次大的改变,就是将InnoDB作为默认的存储引擎.InnoDB支持事务,而且拥有相关的RDBMS特性:ACID事务支持,数据完整性(支持外键 ...

  7. Android开发简易教程

    Android开发简易教程 Android 开发因为涉及到代码编辑.UI 布局.打包等工序,有一款好用的IDE非常重要.Google 最早提供了基于 Eclipse 的 ADT 作为开发工具,后来在2 ...

  8. 文件上传利器SWFUpload入门简易教程

    凡做过网站开发的都应该知道表单file的确鸡肋. Ajax解决了不刷新页面提交表单,但是却没有解决文件上传不刷新页面,当然也有其它技术让不刷新页面而提交文件,该技术主要是利用隐藏的iFrame, 较A ...

  9. 【简易教程】基于Vue-cli使用eslint指南

    [简易教程]基于Vue-cli使用eslint指南 插件安装 首先在vscode插件中搜索eslint和prettier. 啥也不管,这俩必须得装. 插件简介 vscode插件库里的eslint是用来 ...

最新文章

  1. 高校计算机通识教育目标,美国高校计算机通识教育研究
  2. python 网络聊天客户端
  3. SpringBoot集成jsp(附源码)+遇到的坑
  4. Marketing Cloud的contact主数据的odata调用方式
  5. 如何在Android主屏幕上添加热点快捷方式
  6. GitHub Copilot 现已登陆 Visual Studio!
  7. 贪心算法——洛谷(P1478)陶陶摘苹果
  8. 浅析 Spring 中的事件驱动机制
  9. [转]phpmyadmin安装使用
  10. 第一章 tooltips自定义
  11. python extractor_PyInstaller Extractor安装和使用方法
  12. kali linux 入侵教程,kali linux 入侵wordpress wpscan工具使用方法
  13. 程序员的这些前五大无奈,你占了多少?
  14. 【深度学习】损失函数详解
  15. FITC-Dextran,Dextran-FITC,右旋糖酐荧光素,一种被标记的多糖
  16. 强大的图片预览组件Viewer.js
  17. 对称加密非对称加密混合加密
  18. Facade(外观)
  19. 实现VS平台账号注册机
  20. java unix 时间戳_「unix时间戳」Unix时间戳和Java中的时间戳的区别 - seo实验室

热门文章

  1. metasploitable3渗透测试
  2. scala中何时使用下划线_在Scala中使用下划线
  3. Java PriorityQueue clear()方法与示例
  4. 在网络中配置思科交换机
  5. Java——反射(Class.forName()读取配置文件举例).
  6. linux 内核编译需要多大空间,编译2.6.28内核出错。。。。空间不足。而/tmp/还有好几G...
  7. Linux C语言C++ makefile文件编写
  8. C++ STL 容器之stack简单使用
  9. C++里将string类字符串(utf-8编码)分解成单个字(可中英混输)
  10. 大型网站服务器 pdf,大型网站服务器容量规划[PDF][145.25MB]