Activiti 简易教程

一搭建环境

1.1   JDK 6+

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

1.2   Ant 1.8.1+

 Ant[http://ant.apache.org/bindownload.cgi]下载页面下载最新稳定版的 Ant。解压文件,确保其 bin文件夹在操作系统的 path 下。在命令行上运行 antversion 来检查 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支持sitehttp://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按钮,然后填入下列字段:lNameActiviti BPMN 2.0 designer

Locationhttp://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,在空白处点一下,下边属性栏中设置idnameid就是这个流程的key,后边启动流程的时候使用到。

 

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


教程一完毕。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/388046.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

koa2 中使用 svg-captcha 生成验证码

1. 安装svg-captcha $ npm install --save svg-captcha 2. 使用方法 生成有4个字符的图片和字符串const svgCaptcha require(svg-captcha)const cap svgCaptcha.create({size: 4, // 验证码长度width:160,height:60,fontSize: 50,ignoreChars: 0oO1ilI, // 验证码字符中排除 …

iris数据集 测试集_IRIS数据集的探索性数据分析

iris数据集 测试集Let’s explore one of the simplest datasets, The IRIS Dataset which basically is a data about three species of a Flower type in form of its sepal length, sepal width, petal length, and petal width. The data set consists of 50 samples from …

Oracle 12c 安装 Linuxx86_64

1)下载Oracle Database 12cRelease 1安装介质 官方的下载地址&#xff1a; 1&#xff1a;http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 2&#xff1a;https://edelivery.oracle.com/EPD/Download/get_form?egroup_aru_number16496…

python初学者_初学者使用Python的完整介绍

python初学者A magical art of teaching a computer to perform a task is called computer programming. Programming is one of the most valuable skills to have in this competitive world of computers. We, as modern humans, are living with lots of gadgets such as …

医疗大数据处理流程_我们需要数据来大规模改善医疗流程

医疗大数据处理流程Note: the fictitious examples and diagrams are for illustrative purposes ONLY. They are mainly simplifications of real phenomena. Please consult with your physician if you have any questions.注意&#xff1a;虚拟示例和图表仅用于说明目的。 …

ASP.NET Core中使用GraphQL - 第七章 Mutation

ASP.NET Core中使用GraphQL - 目录 ASP.NET Core中使用GraphQL - 第一章 Hello WorldASP.NET Core中使用GraphQL - 第二章 中间件ASP.NET Core中使用GraphQL - 第三章 依赖注入ASP.NET Core中使用GraphQL - 第四章 GrahpiQLASP.NET Core中使用GraphQL - 第五章 字段, 参数, 变量…

POM.xml红叉解决方法

方法/步骤 1用Eclipse创建一个maven工程&#xff0c;网上有很多资料&#xff0c;这里不再啰嗦。 2右键maven工程&#xff0c;进行更新 3在弹出的对话框中勾选强制更新&#xff0c;如图所示 4稍等片刻&#xff0c;pom.xml的红叉消失了。。。

JS前台页面验证文本框非空

效果图&#xff1a; 代码&#xff1a; 源代码&#xff1a; <script type"text/javascript"> function check(){ var xm document.getElementById("xm").value; if(xm null || xm ){ alert("用户名不能为空"); return false; } return …

05精益敏捷项目管理——超越Scrum

00.我们不是不知道它会给我们带来麻烦&#xff0c;只是没想到麻烦会有这么多。——威尔.罗杰斯 01.知识点&#xff1a; a.Scrum是一个强大、特意设计的轻量级框架&#xff0c;器特性就是将软件开发中在制品的数量限制在团队层级&#xff0c;使团队有能力与业务落班一起有效地开…

带标题的图片轮询展示

为什么80%的码农都做不了架构师&#xff1f;>>> <div> <table width"671" cellpadding"0" cellspacing"0"> <tr height"5"> <td style"back…

linux java 查找进程中的线程

这里对linux下、sun(oracle) JDK的线程资源占用问题的查找步骤做一个小结&#xff1b;linux环境下&#xff0c;当发现java进程占用CPU资源很高&#xff0c;且又要想更进一步查出哪一个java线程占用了CPU资源时&#xff0c;按照以下步骤进行查找&#xff1a;(一)&#xff1a;通过…

定位匹配 模板匹配 地图_什么是地图匹配?

定位匹配 模板匹配 地图By Marie Douriez, James Murphy, Kerrick Staley玛丽杜里兹(Marie Douriez)&#xff0c;詹姆斯墨菲(James Murphy)&#xff0c;凯里克史塔利(Kerrick Staley) When you request a ride, Lyft tries to match you with the driver most suited for your…

Sprint计划列表

转载于:https://www.cnblogs.com/zhs20160715/p/9953586.html

软件测试框架课程考试_那考试准备课程值得吗?

软件测试框架课程考试By Levi Petty李维佩蒂(Levi Petty) This project uses a public, synthesized exam scores dataset from Kaggle to analyze average scores in Math, Reading, and Writing subject areas, relative to the student’s parents’ level of education an…

DOCKER windows安装

DOCKER windows安装 DOCKER windows安装 1.下载程序包2. 设置环境变量3. 启动DOCKERT4. 分析start.sh5. 利用SSH工具管理6. 下载镜像 6.1 下载地址6.2 用FTP工具上传tar包6.3 安装6.4 查看镜像6.5 运行 windows必须是64位的 1.下载程序包 安装包 https://github.com/boot2doc…

Elasticsearch Reference [6.7] » Modules » Network Settings

2019独角兽企业重金招聘Python工程师标准>>> Search Settings Node Network Settingsedit Elasticsearch binds to localhost only by default. This is sufficient for you to run a local development server (or even a development cluster, if you star…

【百度】大型网站的HTTPS实践(一)——HTTPS协议和原理

大型网站的HTTPS实践&#xff08;一&#xff09;——HTTPS协议和原理 原创 网络通信/物联网 作者&#xff1a;AIOps智能运维 时间&#xff1a;2018-11-09 15:07:39 349 0前言 百度于2015年上线了全站HTTPS的安全搜索&#xff0c;默认会将HTTP请求跳转成HTTPS。从今天开始&…

LVS原理介绍及安装过程

一、ARP技术概念介绍 为什么讲ARP技术&#xff0c;因为平常工作中有接触。还有就是LVS的dr模式是用到arp的技术和数据。 1、什么是ARP协议 ARP协议全程地址解析协议&#xff08;AddressResolution Protocol&#xff0c;ARP&#xff09;是在仅知道主机的IP地址时确定其物理地…

DNS Bind9在windows7下

有些公司技术力量薄弱一些&#xff0c;一直在用windows系统&#xff0c;所以本文从windows出发&#xff0c;安装bind&#xff0c;利用它的view功能&#xff0c;做智能DNS&#xff0c;解决双线机房南北电信联通访问问题前言&#xff1a; 搞LINUX的朋友都知道&#xff0c;bind是l…

DNS的几个基本概念:

一&#xff0e; 根域 就是所谓的“.”&#xff0c;其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.&#xff08;最后有一点&#xff09;&#xff0c;一般我们在浏览器里输入时会省略后面的点&#xff0c;而这也已经成为了习惯。 根域服务器我们知道有13台&#xff…