Activiti-简单使用
Posted CaoPengCheng&
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Activiti-简单使用相关的知识,希望对你有一定的参考价值。
Activiti-简单使用
【6】Activiti软件环境
jdk1.6版本及以上
数据库:h2/mysql/oracle/mssql/db2等
支持Activiti 5 运行的jar包,在activiti-5.13\\wars\\activiti-rest\\WEB-INF\\lib添加
集成开发工具Myeclipse 8.6以上
【7】Activiti架构及核心API
- activiti.cfg.xml
- ProcessEngineConfigation
- ProcessEngine
- RepositoryService
- TaskService
- IdentityService
- FormService
- RuntimeService
- ManagementService
- HistoryService
【8】使用
(1)设置流程定义图bpmn
assignee:代理人,指定人,处理人
(2)创建流程引擎及工作流数据表
- 数据库及表可以自动创建
可以在配置数据库连接时,实现自动创建数据库和表
- 取得ProcessEngine对象
先取得ProcessEngineConfigation对象,再由该对象来构建ProcessEngine
/*
*1,通过代码新式创建
-
- 取得ProcessEngineConfigation对象
-
- 设置数据库连接
-
- 设置创建表的策略(当没有表时自动创建)
-
- 通过ProcessEngineConfigation对象创建ProcessEngine对象
/
- 通过ProcessEngineConfigation对象创建ProcessEngine对象
//取得流程引擎,且自动创建Activiti涉及的数据库和表
public class TestActiviti{
public void createProcessEngine(){
ProcessEngineConfigation engineConfigation = ProcessEngineConfigation.createStandaloneProcessEngineConfiguration();
engineConfigation.setJdbcDriver(jdbcDriver);
engineConfigation.setJdbcUrl(jdbcUrl);
engineConfigation.setJdbcUsername(userName);
engineConfigation.setJdbcPassword(passWord);
//DB_SCHEMA_UPDATA_FALSE 不
//DB_SCHEMA_UPDATA_CREATE_DTOP 先删除,再创建
//DB_SCHEMA_UPDATA_TRUE 创建
engineConfigation.setDatabaseSchemaUpdate(DB_SCHEMA_UPDATA_TRUE);
ProcessEngine processEngine = engineConfigation.buildProcessEngine();
}
}
/*
*2,通过加载activit.cfg.xml获取流程引擎和自动创建数据库
*
/
public class TestActiviti{
public void createProcessEngine(){
//从类加载路径加载资源
ProcessEngineConfigation engineConfigation=ProcessEngineConfigation.createProcessEngineConfigurationFromResource("activit.cfg.xml");
ProcessEngine processEngine = engineConfigation.buildProcessEngine();
}
}
【activit.cfg.xml】
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 配置ProcessEngineConfiguration -->
<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<!-- 配置数据库连接 -->
<property name="jdbcUrl" value="jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000" />
<property name="jdbcDriver" value="org.h2.Driver" />
<property name="jdbcUsername" value="sa" />
<property name="jdbcPassword" value="" />
<!-- 配置创建表策略 -->
<property name="databaseSchemaUpdate" value="true" />
<property name="jobExecutorActivate" value="false" />
<property name="asyncExecutorEnabled" value="true" />
<property name="asyncExecutorActivate" value="false" />
<property name="mailServerHost" value="mail.my-corp.com" />
<property name="mailServerPort" value="5025" />
</bean>
</beans>
/*
*3,通过ProcessEngine来获取默认的流程引擎
*
/
public class TestActiviti{
public void createProcessEngine(){
//默认加载类路径下的activiti.cfg.xml
ProcessEngine processEngine=
ProcessEngine.getDefaultProcessEngine();
}
}
【activit.cfg.xml】
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 配置ProcessEngineConfiguration -->
<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<!-- 配置数据库连接 -->
<property name="jdbcUrl" value="jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000" />
<property name="jdbcDriver" value="org.h2.Driver" />
<property name="jdbcUsername" value="sa" />
<property name="jdbcPassword" value="" />
<!-- 配置创建表策略 -->
<property name="databaseSchemaUpdate" value="true" />
<property name="jobExecutorActivate" value="false" />
<property name="asyncExecutorEnabled" value="true" />
<property name="asyncExecutorActivate" value="false" />
<property name="mailServerHost" value="mail.my-corp.com" />
<property name="mailServerPort" value="5025" />
</bean>
</beans>
(3)部署流程
public class TestActiviti{
public void deploy(){
//获取流程引擎
ProcessEngine processEngine=
ProcessEngine.getDefaultProcessEngine();
//获取仓库服务:管理流程定义
RepositoryService repositoryService = processEngine.getRepositoryService();
Deployment deploy = repositoryService
.createDeployment() //创建一个部署的构建器
.addClasspathResource(bpmn资源路径) //从类路径添加资源,一次只能添加一个
.addClasspathResource(png资源路径) //从类路径添加资源,一次只能添加一个
.name("流程命名")
.category("") //设置部署的类别
.deploy(); //部署
}
}
【act_re_deployment 部署表】
id由act_ge_property的next_dbid绝定
【act_re_procdef 流程定义表】
该表的key属性是bpmn的id决定
该表的name属性是bpmn的name绝定
【act_ge_property 通用属性表 】
id生成策略,影响部署id
【act_ru_execution 执行对象,流程实例,流程对象】
【act_ru_task 任务表】
(4)启动流程
public class TestActiviti{
public void startProcess(){
String processDefiKey="leaveB";
//获取流程引擎
ProcessEngine processEngine=
ProcessEngine.getDefaultProcessEngine();
//取运行时服务
RuntimeService runtimeService = processEngine.getRuntimeService();
//通过流程定义的key来执行流程,取得流程实例
ProcessInstance pi = runtimeService.startProcessInstanceByKey(processDefiKey);
System.out.println("流程实例id"+pi.getId());
System.out.println("流程定义id"+pi.getProcessDefinitionId());
}
}
(5)查询任务
public class TestActiviti{
public void queryTask(){
//获取流程引擎
ProcessEngine processEngine=
ProcessEngine.getDefaultProcessEngine();
//任务办理人
String assignee="张三";
//取得任务服务
TaskService taskService = processEngine.getTaskService();
//创建任务查询对象
TaskQuery taskQuery = taskService.createtaskquery();
//办理人的任务列表
List<Task> list = taskQuery.taskAssinee(assignee).liat();
//遍历任务列表
if(list!=null && list.size()>0){
for(Task task:list){
Sysyem.out.println("任务的办理人"+task.getAssignee());
Sysyem.out.println("任务的id"+task.getId());
Sysyem.out.println("任务的名称"+task.getName());
}
}
}
}
(6)完成任务
public class TestActiviti{
public void compileTask(){
//获取流程引擎
ProcessEngine processEngine=
ProcessEngine.getDefaultProcessEngine();
String taskId="204";
//taskId:任务id
processEngine.getTaskService().complete(taskId);
}
}
以上是关于Activiti-简单使用的主要内容,如果未能解决你的问题,请参考以下文章