初识Activiti工作流
2016-07-29 15:40
218 查看
一:简介
1. 工作流引擎 :ProcessEngine ,它是Activiti的核心类,由该类可以获取其他的服务实例
(历史服务、仓库服务、任务服务、用户参与者服务)
2. BPMN :UML :用例图、类图、时序图
业务流程建模与标注(Business Process Model and Notation,BPMN) ,
描述流程的基本符号,包括这些图元如何组合成一个业务流程图(Business Process Diagram)
3. 数据库
Activiti的后台是有数据库的支持,所有的表都以ACT_开头。
第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应
Activiti的工作流数据库有23张表
要保存流程定义
- act_ge_* :通用表
- act_hi_* :历史流程相关表
- act_re_* :仓库表:保存流程定义
- act_ru_* :保存流程运行相关的表
- act_id_* :用户参与相关的表
4. activiti.cfg.xml
Activiti核心配置文件,配置流程引擎创建工具的基本参数和数据库连接参数
5. logging.properties :log4j
二:搭建Activiti开发环境
1. Acitiviti软件环境
* JDK ,1.6版本及以上
* 数据库 支持的有:h2\mysql\oracle\mssql\db2等 ,选择mysql
* 支持Activiti 5 运行的jar包 ,在activiti-5.13\wars\activiti-rest \WEB-INF\lib添加 ,
可以在官网下载:www.activiti.org
* 集成开发环境:Myeclipse 8.6及以上 最好 myeclipse 2014
2. 安装流程设计器 bpmn :业务流程建模与标注(Business Process Model and Notation,BPMN)
* 有网络安装
* 无网情况 :直接添加插件
把压缩包中的内容放入eclipse根目录的dropins文件夹下
* 注意:打开菜单Windows->Preferences->Activiti->Save actions
把*bpmn 和*.png同步保存
3. Activiti 架构及核心API
- activiti.cfg.xml
- ProcessEngineConfigration
- ProcessEngine
- RepositoryService
- TaskService
- IdentityService
- FormService
- RuntimeService
- ManagementService
- HistoryService
三、HelloActiviti程序(模拟Activiti流程执行)
1.创建activiti工程HelloActiviti,并导入所需要的jar包
2.在/helloActivity/src/main/resources/diagrams目录下新建activiti diagram,通过拖拽的方式完成更如下图,并进行配置
具体参数配置如下:
a、配置工作流:
b、配置任务
c、配置任务执行者
这样就对整个工作流配置完成
3、创建流程引擎及工作流数据表
a、 核心api图:
可以看出,先取得ProcessEngineConfiguration 对象 ,再由该对象来构建ProcessEngine,再通过它来获取服务。
b、创建ProcessEngine(三种方式)
(1)通过代码创建
(2)通过加载 activiti.cfg.xml 获取 流程引擎 和自动创建数据库及表
Activiti.cfg.xml文件如下:
(3)通过ProcessEngines 来获取默认的流程引擎(推荐)
(4)结果:
数据库中会多了许多表!这也就说明工作流引擎创建成功!
3、部署流程定义
act_re_procdef :流程定义表 :
该表的key属性 是bpmn 的 id决定
该表的name属性 是bpmn 的name 属性决定
act_re_deployment:部署表 :id是由act_ge_property的 next_dbid决定
act_ge_property :通用属性表
4.执行流程
act_ru_execution :流程执行到哪一个任务
act_ru_task: 当前执行的任务
act_ru_identitylink :执行人
5.查询任务
6.完成任务
再查看任务表
任务转换到下一个。然后后面的任务完成和上面就一样了。这样,一个简单的工作流就完成了。
1. 工作流引擎 :ProcessEngine ,它是Activiti的核心类,由该类可以获取其他的服务实例
(历史服务、仓库服务、任务服务、用户参与者服务)
2. BPMN :UML :用例图、类图、时序图
业务流程建模与标注(Business Process Model and Notation,BPMN) ,
描述流程的基本符号,包括这些图元如何组合成一个业务流程图(Business Process Diagram)
3. 数据库
Activiti的后台是有数据库的支持,所有的表都以ACT_开头。
第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应
Activiti的工作流数据库有23张表
要保存流程定义
- act_ge_* :通用表
- act_hi_* :历史流程相关表
- act_re_* :仓库表:保存流程定义
- act_ru_* :保存流程运行相关的表
- act_id_* :用户参与相关的表
4. activiti.cfg.xml
Activiti核心配置文件,配置流程引擎创建工具的基本参数和数据库连接参数
5. logging.properties :log4j
二:搭建Activiti开发环境
1. Acitiviti软件环境
* JDK ,1.6版本及以上
* 数据库 支持的有:h2\mysql\oracle\mssql\db2等 ,选择mysql
* 支持Activiti 5 运行的jar包 ,在activiti-5.13\wars\activiti-rest \WEB-INF\lib添加 ,
可以在官网下载:www.activiti.org
* 集成开发环境:Myeclipse 8.6及以上 最好 myeclipse 2014
2. 安装流程设计器 bpmn :业务流程建模与标注(Business Process Model and Notation,BPMN)
* 有网络安装
* 无网情况 :直接添加插件
把压缩包中的内容放入eclipse根目录的dropins文件夹下
* 注意:打开菜单Windows->Preferences->Activiti->Save actions
把*bpmn 和*.png同步保存
3. Activiti 架构及核心API
- activiti.cfg.xml
- ProcessEngineConfigration
- ProcessEngine
- RepositoryService
- TaskService
- IdentityService
- FormService
- RuntimeService
- ManagementService
- HistoryService
三、HelloActiviti程序(模拟Activiti流程执行)
1.创建activiti工程HelloActiviti,并导入所需要的jar包
2.在/helloActivity/src/main/resources/diagrams目录下新建activiti diagram,通过拖拽的方式完成更如下图,并进行配置
具体参数配置如下:
a、配置工作流:
b、配置任务
c、配置任务执行者
这样就对整个工作流配置完成
3、创建流程引擎及工作流数据表
a、 核心api图:
可以看出,先取得ProcessEngineConfiguration 对象 ,再由该对象来构建ProcessEngine,再通过它来获取服务。
b、创建ProcessEngine(三种方式)
(1)通过代码创建
@Test public void createProcessEngine(){ //获取ProcessEngineConfiguration对象 ProcessEngineConfiguration engineConfiguration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration() ; //设置数据库属性(自动创建表和数据库) engineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver"); engineConfiguration.setJdbcUrl("jdbc:mysql://localhost:3306/activitiDB?createDatabaseIfNotExist=true" + "&useUnicode=true&characterEncoding=utf8"); engineConfiguration.setJdbcUsername("root"); engineConfiguration.setJdbcPassword("root"); engineConfiguration.setDatabaseSchemaUpdate("true"); //创建ProcessEngine对象 ProcessEngine processEngine = engineConfiguration.buildProcessEngine(); System.out.println("流程引擎创建成功!"); }
(2)通过加载 activiti.cfg.xml 获取 流程引擎 和自动创建数据库及表
Activiti.cfg.xml文件如下:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" 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 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <!-- 配置 ProcessEngineConfiguration --> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <!-- 配置数据库连接 --> <property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activitiDB?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf8"></property> <property name="jdbcUsername" value="root"></property> <property name="jdbcPassword" value="root"></property> <!-- 配置创建表策略 :没有表时,自动创建 --> <property name="databaseSchemaUpdate" value="true"></property> </bean> </beans>
@Test public void createProcessEngine(){ ProcessEngineConfiguration engineConfiguration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml") ; ProcessEngine processEngine = engineConfiguration.buildProcessEngine(); System.out.println("流程引擎创建成功!"); }
(3)通过ProcessEngines 来获取默认的流程引擎(推荐)
@Test public void createProcessEngine(){ ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine(); System.out.println("通过ProcessEngines 来获取流程引擎"); }
(4)结果:
数据库中会多了许多表!这也就说明工作流引擎创建成功!
3、部署流程定义
@Test public void deploy(){ //获取仓库服务 :管理流程定义 RepositoryService repositoryService = processEngine.getRepositoryService(); Deployment deploy = repositoryService.createDeployment()//创建一个部署的构建器 .addClasspathResource("diagrams/LeaveBill.bpmn")//从类路径中添加资源,一次只能添加一个资源 .addClasspathResource("diagrams/LeaveBill.png")//从类路径中添加资源,一次只能添加一个资源 .name("请求单流程")//设置部署的名称 .category("办公类别")//设置部署的类别 .deploy(); System.out.println("部署的id"+deploy.getId()); System.out.println("部署的名称:"+deploy.getName()); }影响的表:
act_re_procdef :流程定义表 :
该表的key属性 是bpmn 的 id决定
该表的name属性 是bpmn 的name 属性决定
act_re_deployment:部署表 :id是由act_ge_property的 next_dbid决定
act_ge_property :通用属性表
4.执行流程
@Test public void startProcess(){ String processDefiKey="LeaveBill"; //取运行时服务 RuntimeService runtimeService = processEngine.getRuntimeService(); //取得流程实例 ProcessInstance pi = runtimeService.startProcessInstanceByKey(processDefiKey);//通过流程定义的key 来执行流程 System.out.println("流程实例id:"+pi.getId());//流程实例id System.out.println("流程定义id:"+pi.getProcessDefinitionId());//输出流程定义的id }影响表:
act_ru_execution :流程执行到哪一个任务
act_ru_task: 当前执行的任务
act_ru_identitylink :执行人
5.查询任务
//查询任务 @Test public void queryTask(){ //任务的办理人 String assignee="刘同学"; //取得任务服务 TaskService taskService = processEngine.getTaskService(); //创建一个任务查询对象 TaskQuery taskQuery = taskService.createTaskQuery(); //办理人的任务列表 List<Task> list = taskQuery.taskAssignee(assignee)//指定办理人 .list(); //遍历任务列表 if(list!=null&&list.size()>0){ for(Task task:list){ System.out.println("任务的办理人:"+task.getAssignee()); System.out.println("任务的id:"+task.getId()); System.out.println("任务的名称:"+task.getName()); } } }
6.完成任务
@Test public void compileTask(){ String taskId="104"; //taskId:任务id processEngine.getTaskService().complete(taskId); System.out.println("当前任务执行完毕"); }
再查看任务表
任务转换到下一个。然后后面的任务完成和上面就一样了。这样,一个简单的工作流就完成了。
相关文章推荐
- Android开发之activiti节点跳转
- activiti获取流程图实例
- Activiti流程图查看实例
- Activiti常用类简介
- 工作流程引擎挂起的需求与设计
- ccflow5的安装与遇到的常见问题
- Activiti入门教程之eclipse插件(一)
- activiti中流程自定义
- Activiti的流程定义文件解析
- Activiti的流程定义文件解析(后续)
- 扩展Activiti流程定义文件,实现自定义节点属性
- 《Activiti实战》摘抄&笔记2
- 《Activiti实战》摘抄&笔记3
- Activiti Spring集成Demo
- 流程管理系统,工作流引擎
- Activiti 工作流表单设计及开发
- 08月26日学习杂记(工作流)
- 09月02日学习杂记(工作流)
- GSFL:一种网格服务的工作流架构(一)
- J2EE技术在电子商务中的应用研究