您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
   
 
 
     
   
 订阅
  捐助
Activiti 简易教程
 
作者:yangyi22 来源:CSDN 发布于 2015-9-29
   次浏览      
 

Activiti 简易教程一 version5.10

一搭建环境

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

l 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

package main.java;  

import java.io.FileInputStream;
import java.util.List;
import org.activiti.engine.HistoryService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;

/**
* Activiti 5.10 demo
* @author BruceQin
*
*/
public class DemoProcessTest {
// diagrams实际路径
private static String realPath =
"D:\\Java~coding~site\\J2EE-IDE\\Workspace\\workspace[indigo-jee]" +
"\\activiti-demo\\src\\main\\resources\\diagrams";
public static void main(String[] args) throws Exception {
// 创建 Activiti流程引擎
ProcessEngine processEngine = ProcessEngineConfiguration
.createProcessEngineConfigurationFromResource("activiti.cfg.xml")
.buildProcessEngine();

// 取得 Activiti 服务
RepositoryService repositoryService = processEngine.getRepositoryService();
RuntimeService runtimeService = processEngine.getRuntimeService();

// 部署流程定义
repositoryService
.createDeployment()
.addInputStream("DemoProcess.bpmn",new FileInputStream(realPath + "\\DemoProcess.bpmn"))
.addInputStream("DemoProcess.png", new FileInputStream(realPath + <a href="file://\\DemoProcess.png">\\DemoProcess.png</a>))
.deploy();

// 启动流程实例
ProcessInstance instance = processEngine
.getRuntimeService().startProcessInstanceByKey("DemoProcess");
String procId = instance.getId();
System.out.println("procId:"+ procId);

// 获得第一个任务
TaskService taskService = processEngine.getTaskService();
List<Task> tasks = taskService.createTaskQuery().taskDefinitionKey("firstTask").list();
for (Task task : tasks) {
System.out.println("Following task is: taskID -" +task.getId()+" taskName -"+ task.getName());
// 认领任务
taskService.claim(task.getId(), "testUser");
}

// 查看testUser 现在是否能够获取到该任务
tasks = taskService.createTaskQuery().taskAssignee("testUser").list();
for (Task task : tasks) {
System.out.println("Task for testUser: " + task.getName());
// 完成任务
taskService.complete(task.getId());
}
System.out.println("Number of tasks for testUser: "
+ taskService.createTaskQuery().taskAssignee("testUser").count());


// 获取并认领第二个任务
tasks = taskService.createTaskQuery().taskDefinitionKey("secondTask").list();
for (Task task : tasks) {
System.out.println("Following task is : taskID -" +task.getId()+" taskName -"+ task.getName());
taskService.claim(task.getId(), "testUser");
}

//完成第二个任务结束结束流程
for (Task task : tasks) {
taskService.complete(task.getId());
}

// 核实流程是否结束
HistoryService historyService = processEngine.getHistoryService();
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(procId).singleResult();
System.out.println("Process instance end time: " + historicProcessInstance.getEndTime());
}
}

一搭建环境

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

package main.java;  

import java.io.FileInputStream;
import java.util.List;
import org.activiti.engine.HistoryService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;

public class DemoProcessTest {
// diagrams实际路径
private static String realPath =
"D:\\Java~coding~site\\J2EE-IDE\\Workspace\\workspace[indigo-jee]" +
"\\activiti-512demo\\src\\main\\resources\\diagrams";
public static void main(String[] args) throws Exception {
// 创建 Activiti流程引擎
//方式一 自动寻找activiti.cfg.xml
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

//方式二 指定加载activiti.cfg.xml
// ProcessEngine processEngine = ProcessEngineConfiguration
// .createProcessEngineConfigurationFromResource("activiti.cfg.xml")
// .buildProcessEngine();

// 取得 Activiti 服务
RepositoryService repositoryService = processEngine.getRepositoryService();
RuntimeService runtimeService = processEngine.getRuntimeService();

// 部署流程定义
repositoryService
.createDeployment()
.addInputStream("DemoProcess.bpmn",new FileInputStream(realPath + "\\DemoProcess.bpmn"))
.addInputStream("DemoProcess.png", new FileInputStream(realPath + "\\DemoProcess.png"))
.deploy();

// 启动流程实例
ProcessInstance instance = processEngine
.getRuntimeService().startProcessInstanceByKey("DemoProcess");
String procId = instance.getId();
System.out.println("procId:"+ procId);

// 获得第一个任务
TaskService taskService = processEngine.getTaskService();
List<Task> tasks = taskService.createTaskQuery().taskDefinitionKey("firstTask").list();
for (Task task : tasks) {
System.out.println("Following task is: taskID -" +task.getId()+" taskName -"+ task.getName());
// 认领任务
taskService.claim(task.getId(), "testUser");
}

// 查看testUser 现在是否能够获取到该任务
tasks = taskService.createTaskQuery().taskAssignee("testUser").list();
for (Task task : tasks) {
System.out.println("Task for testUser: " + task.getName());
// 完成任务
taskService.complete(task.getId());
}
System.out.println("Number of tasks for testUser: "
+ taskService.createTaskQuery().taskAssignee("testUser").count());


// 获取并认领第二个任务
tasks = taskService.createTaskQuery().taskDefinitionKey("secondTask").list();
for (Task task : tasks) {
System.out.println("Following task is : taskID -" +task.getId()+" taskName -"+ task.getName());
taskService.claim(task.getId(), "testUser");
}

//完成第二个任务结束结束流程
for (Task task : tasks) {
taskService.complete(task.getId());
}

// 核实流程是否结束
HistoryService historyService = processEngine.getHistoryService();
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(procId).singleResult();
System.out.println("Process instance end time: " + historicProcessInstance.getEndTime());
}

}

依赖jar包说明

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

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

jar包:

   
次浏览       
相关文章

多维方法来开发有机的业务流程架构
SCA 应用程序开发
BPM 和 SOA 性能最佳实践
实现企业服务总线模式
相关文档

SCA介绍及应用实例
基于SOA架构的ESB平台:Infomagic
SCA架构
SOA的基本概念
相关课程

面向应用的架构设计实践
单元测试+重构+设计模式
软件架构师—高级实践
软件架构设计方法、案例与实践
最新活动计划
LLM大模型应用与项目构建 12-26[特惠]
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
业务建模&领域驱动设计 11-15[北京]
用户研究与用户建模 11-21[北京]
SysML和EA进行系统设计建模 11-28[北京]

基于SOA的工作流(WF)整合
SOA 100问 - 问与答
SOAP 应用模式:处理与性能
ESB架构之企业实施案例
基于SOA架构的企业集成系统
基于SOA的体系架构设计
更多...   


面向应用的架构设计实践
单元测试+重构+设计模式
软件架构师—高级实践
软件架构设计方法、案例与实践
嵌入式软件架构设计—高级实践
SOA体系结构实践


某第三方电子支付企业 SOA架构设计
某电子企业 SOA应用
中国移动 SOA培训
北京大学 SOA架构设计实践
友邦保险 SOA架构设计
上海 SOA架构实践
山东移动通信 SOA体系结构实践
更多...