Activiti工作流(一)之基本操作介绍
工作流的概念:
工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。通俗的说,流程就是多个人在一起合作完成某件事情的步骤,把步骤变成计算机能理解的形式就是工作流。
常见的工作流引擎有:OSWorkFlow、jbpm、activiti(对jbpm的升级)
如果在一个项目中我们需要引入工作流的话,首先需要引入相关jar包,然后获得一个工作流引擎,而获得这个工作流引擎的方式有三种:
1、通过代码方式获得:
@Test
public void getProcessEngine1(){
ProcessEngineConfiguration engineConfiguratoin = ProcessEngineConfiguration
.createStandaloneProcessEngineConfiguration(); engineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver");
engineConfiguration
.setJdbcUrl("jdbc:mysql://10.10.10.30:3306/activitiDB?createDatabaseIfNotExist=true"
+ "&useUnicode=true&characterEncoding=utf8");
engineConfiguration.setJdbcUsername("root");
engineConfiguration.setJdbcPassword("aaaaaaaaa"); engineConfiguration.setDatabaseSchemaUpdate("true");
ProcessEngine buildProcessEngine = engineConfiguration.buildProcessEngine();
}
2、通过加载指定的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"> <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://10.10.10.30:3306/activitiDB?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf8"></property>
<property name="jdbcUsername" value="root"></property>
<property name="jdbcPassword" value="aaaaaaaa"></property> <property name="databaseSchemaUpdate" value="true"></property>
</bean> </beans>
@Test
public void getProcessEngine2(){
ProcessEngineConfiguration engineConfiguration =
ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml"); ProcessEngine processEngine = engineConfiguration.buildProcessEngine();
}
3、通过加载默认的xml文件获取,默认xml文件名称为activiti.cfg.xml
@Test
public void getProcessengine3(){
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
}
当获得了工作流引擎之后,会创建一个数据库,数据库中有默认的23张表
资源库流程规则表
1) act_re_deployment 部署信息表
2) act_re_model 流程设计模型部署表
3) act_re_procdef 流程定义数据表
运行时数据库表
1) act_ru_execution 运行时流程执行实例表
2) act_ru_identitylink 运行时流程人员表,主要存储任务节点与参与者的相关信息
3) act_ru_task 运行时任务节点表
4) act_ru_variable 运行时流程变量数据表
历史数据库表
1) act_hi_actinst 历史节点表
2) act_hi_attachment 历史附件表
3) act_hi_comment 历史意见表
4) act_hi_identitylink 历史流程人员表
5) act_hi_detail 历史详情表,提供历史变量的查询
6) act_hi_procinst 历史流程实例表
7) act_hi_taskinst 历史任务实例表
8) act_hi_varinst 历史变量表
组织机构表
1) act_id_group 用户组信息表
2) act_id_info 用户扩展信息表
3) act_id_membership 用户与用户组对应信息表
4) act_id_user 用户信息表
这四张表很常见,基本的组织机构管理,关于用户认证方面建议还是自己开发一套,组件自带的功能太简单,使用中有很多需求难以满足
通用数据表
1) act_ge_bytearray 二进制数据表
2) act_ge_property 属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录
还有两张表不怎么常用
1) act_ru_event_subscr
2) act_ru_job
接下来就是activiti的核心API部分
这些service可以由ProcessEngine获得,且这些service都有着各自的任务
RepositoryService | 管理流程定义 |
RuntimeService | 执行管理,包括启动、推进、删除流程实例等操作 |
TaskService | 任务管理 |
HistoryService | 历史管理(执行完的数据的管理) |
IdentityService | 组织机构管理 |
FormService | 一个可选服务,任务表单管理 |
ManagerService |
接下来是完成一个工作流程的基本操作步骤,首先我们需要安装Activiti插件,然后我们构建一个流程实例并部署上去
@Test
public void deploy(){
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); RepositoryService service = processEngine.getRepositoryService();
Deployment deploy = service.createDeployment()
.addClasspathResource("diagrams/LeaveProcess.bpmn")
.addClasspathResource("diagrams/LeaveProcess.png")
.name("请假流程")
.deploy();
}
部署流程还有一种方法也可以:加载压缩文件(zip格式)
@Test
public void deployProcess2(){ InputStream in = getClass().getClassLoader().getResourceAsStream("Leave.zip"); ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
Deployment deploy = processEngine.getRepositoryService()
.createDeployment()
.name("请假流程")
.addZipInputStream(new ZipInputStream(in))
.deploy();
}
接下来就是启动流程
@Test
public void test(){
String instanceKey = "myProcess"; ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService service = processEngine.getRuntimeService();
ProcessInstance instance = service.startProcessInstanceByKey(instanceKey);
}
在流程启动的过程中,我们可以查询流程的进度
@Test
public void query(){
String assignee = "Meixi"; ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
TaskService service = processEngine.getTaskService();
TaskQuery taskQuery = service.createTaskQuery();
List<Task> list = taskQuery.taskAssignee(assignee).list(); for (Task task : list){
System.out.println(task);
}
}
接下来就是完成每一个流程
@Test
public void complete(){
String taskID = "104"; ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
TaskService service = processEngine.getTaskService();
service.complete(taskID);
}
Activiti工作流(一)之基本操作介绍的更多相关文章
- activiti工作流数据库表详细介绍 (23张表)
Activiti的后台是有数据库的支持,所有的表的表名都以ACT_开头,表名的第二部分是用来表示表的用途的两个字母标识. 用途也和服务的API对应. ACT_RE_*: 'RE'表示repositor ...
- Activiti工作流数据库表详细介绍
Activiti的后台是有数据库的支持,所有的表都以ACT_开头. 第二部分是表示表的用途的两个字母标识. 用途也和服务的API对应. ACT_RE_*: 'RE'表示repository. 这个前缀 ...
- Activiti工作流框架学习(一)之通用数据表详细介绍
文/朱季谦 Activiti工作流引擎自带了一套数据库表,这里面有一个需要注意的地方: 低于5.6.4的MySQL版本不支持时间戳或毫秒级的日期.更糟糕的是,某些版本在尝试创建此类列时将引发异常,而其 ...
- Activiti工作流(二)之常用操作
前面介绍了Activiti工作流的基本操作,但是在实际应用过程中,往往不满足项目需求,因此还需要了解一些其他的功能比如:连线.排他网关.并行网管.流程变量.个人任务及组任务的三种发布方式. 下面将介绍 ...
- activiti工作流的web流程设计器整合视频教程 SSM和独立部署
本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流 ...
- activiti工作流的web流程设计器整合视频教程 SSM 和 独立部署
本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流 ...
- activiti工作流的web流程设计器整合视频教程
本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流 ...
- Activiti工作流引擎参考资料
Activiti工作流引擎使用 工作流-Activiti核心API介绍 传智播客Activiti工作流视频教程(企业开发实例讲解) 工作流引擎Activiti演示项目 http://www.kafei ...
- Activiti工作流学习-----基于5.19.0版本(1)
该版本的Activiti运行须知: 1.JDK 6+,Eclipse最好是Kepler以上版本. 2.试验功能都有EXPERIMENTAL标注,被标注的部分不应该视为稳定的. 有兴趣的同学可以去了解下 ...
随机推荐
- BZOJ3270: 博物馆
3270: 博物馆 Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 269 Solved: 147[Submit][Status][Discuss] ...
- poi2007
序:为什么写poi,zy说poi都是思路题目,不像hnoi妈的数据结构队..... 1.bzoj1102 题目大意:定义了一个山谷和山峰,求他们数量. 题解:这种题bfs咯,在bfs的时候记录一下相邻 ...
- ajax 页面请求后,jsp页面定位
如下图所示.A,B两区域为不动区域,既不随着滚动条的滚动而移动.C区域为异步加载内容区域, 在C区域中,点击查询按钮,需要异步加载查询 结果.但是查询结果会很长,这样子,就需要向下滑动滚动条,用户体验 ...
- 笔记整理——linux
linux文件目录介绍 (2015/4/30 19:20:28) /proc 目录中的主要文件的说明 文件或目录名称 描 述 apm 高级电源管理信息 cmdline 这个文 ...
- 1. 初次尝试Core Data 应用程序(Core Data 应用开发实践指南)
本书以实践的方式讲解 Core Data,不会过早讲一些难懂的话题.从入门知识入手,演示如何为范例程序添加Core Data 支持,后续章节再依次讨论更复杂的话题. 1.1. Core Data 是什 ...
- delphi DBgrid应用大全
Delphi 语言的数据库编程中,DBGrid 是显示数据的主要手段之一.但是 DBGrid 缺省的外观未免显得单调和缺乏创意.其实,我们完全可以在我们的程序中通过编程来达到美化DBGrid 外观的目 ...
- BNU Online Judge-34978-汉诺塔
题目链接 http://www.bnuoj.com/bnuoj/problem_show.php?pid=34978 这题在比赛时AC了不过那时是根据测试数据 抱着来试一下的想法,没想就AC了,其实 ...
- JS效果的步骤
一.写JS效果的步骤 1.先实现布局 (XHTML+CSS2) 2.实现原理 (1)希望把某个元素移除你的视线: a. display:none; 显示为无,不占据空间 b. vi ...
- Spring MVC整合DWR
http://blog.csdn.net/geloin/article/details/7537148 基本上与上文描述的情况一致: 在Controller中可以进行Service层的调用: 如果需要 ...
- 安装python2.7.13-64bit & Pycharm在两个python版本之间切换
本来已经安装了32位的python27,但在使用轮廓系数评估k-means模型的优良性时,出现了内存溢出的报错.原来32为的python编译器最多只能使用4GB的内存,所以就打算换成64位的pytho ...