初识Activiti工作流
来源:互联网 发布:js跳出each循环函数 编辑:程序博客网 时间:2024/06/05 20:15
一:简介
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)通过代码创建
@Testpublic 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.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsdhttp://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>
@Testpublic void createProcessEngine(){ProcessEngineConfiguration engineConfiguration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml") ;ProcessEngine processEngine = engineConfiguration.buildProcessEngine();System.out.println("流程引擎创建成功!");}
(3)通过ProcessEngines 来获取默认的流程引擎(推荐)
@Testpublic void createProcessEngine(){ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine(); System.out.println("通过ProcessEngines 来获取流程引擎");}
(4)结果:
数据库中会多了许多表!这也就说明工作流引擎创建成功!
3、部署流程定义
@Testpublic 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.执行流程
@Testpublic void startProcess(){String processDefiKey="LeaveBill";//取运行时服务RuntimeService runtimeService = processEngine.getRuntimeService();//取得流程实例ProcessInstance pi = runtimeService.startProcessInstanceByKey(processDefiKey);//通过流程定义的key 来执行流程System.out.println("流程实例id:"+pi.getId());//流程实例idSystem.out.println("流程定义id:"+pi.getProcessDefinitionId());//输出流程定义的id}影响表:
act_ru_execution :流程执行到哪一个任务
act_ru_task: 当前执行的任务
act_ru_identitylink :执行人
5.查询任务
//查询任务 @Testpublic 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.完成任务
@Testpublic void compileTask(){String taskId="104";//taskId:任务idprocessEngine.getTaskService().complete(taskId);System.out.println("当前任务执行完毕");}
再查看任务表
任务转换到下一个。然后后面的任务完成和上面就一样了。这样,一个简单的工作流就完成了。
1 0
- 初识Activiti工作流
- activiti工作流之初识
- Activiti工作流之初识BPMN
- Activity工作流——初识 Activiti
- 初识工作流 BPMN Activiti以及JBPM
- 工作流引擎Activiti系列(一)——初识
- Activiti-工作流
- activiti工作流
- 工作流activiti
- activiti工作流
- Activiti工作流
- activiti工作流
- 工作流 activiti
- Activiti工作流
- Activiti 工作流
- 工作流Activiti
- activiti工作流
- Activiti工作流
- 宏函数与自定义函数的区别(面试总结)
- Java的开发准备及环境配置
- C/C++语言学习计划
- JS每隔1秒输出一组新的随机数
- iOS QQ实现第三方登录以及遇到的问题
- 初识Activiti工作流
- input默认灰色,输入变色
- JAVA 堆栈 堆 方法区 静态区 final static 内存分配 详解
- Retrofit2 完全解析 探索与okhttp之间的关系(一)
- 针对Mtk平台 Android 打包解包*.img ,修改system.img 参数
- 过滤器配置
- CountDownView的封装
- Android之AlerttDialog【JAVA】
- openflow mac学习表的详细分析