act_ge_bytearray 多个对1个 act_re_deployment
数据库说明:
ACT_RE_* RE 表示 repository .
这个前缀表包含了流程定义 和流程静态资源(图片,规则等等)
ACT_RU_* RU表示 runtime
这些运行时的表,包含流程实例,任务,变量,异步任务,
等运行中的数据。 Activiti 只在流程实例执行过程中保存这些数据,在流程结束时会删除这些记录。
这样运行时表可以一直很小,速度很快
ACT_ID_* ID表示identity .
这些表包含身份信息,比如用户,组等等
ACT_HI_* HI表示history .
这些表包含历史数据,比如历史流程实例,变量,任务等等
ACT_GE_* 通用数据 ,用于不同场景下,如存放资源文件
1, 资源库流程规则表
1) act_re_deployment 部署信息表
2) act_re_model 流程设计模型部署表
3) act_re_procdef 流程定义数据表
2, 运行时数据库表
1) act_ru_execution 运行时流程执行实例表
2) act_ru_identitylink 运行时流程人员表,
注意存储任务节点与参与者的信息
3)act_ru_task 运行时任务节点表
4) act_ru_variable 运行时流程变量数据表
3, 历史数据库表
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 历史变量表
4, 组织机构表
1) act_id_group 用户信息表
2) act_id_info 用户扩展信息表
3) act_id_membership 用户与用户组对应信息表
4) act_id_user 用户信息表
这四张表很常见,基本的组织机构管理。关于用户认证方便建议还是
自己开发一套,组件自带的功能太简单,使用中有很多需求难以满足
5, 通用数据表
1) act_ge_bytearray 二进制数据表
2) act_ge_property 属性数据表存储整个流程引擎级别的数据
初始化表结构时,会默认插入三条记录
8,使用eclipse activiti 插件生成
生成的 *.bpmn20.xml 是给 计算机进行流程的执行和信息的传递使用的
比如: HelloWorld.bpmn20.xml
早起可能还会生成 *.png 比如 HelloWorld.png 流程的 图片,目前生成了放在数据库里面了,是给
客户进行查看的,进行理解
如果需要 流程图 png ,那么就可以在eclipse --Windows--Preference--Activiti--save Action
将 Create process definition image... 勾上
这样当生成 bpmn 文件时候也会在下面生成图片的,这样可以保存给用户看了等等
因为在实际开发过程中,通过 bpmn生成的 流程图,可能会由于坐标的原因有误差,
所以生成图片时候就 保存 显示给用户看即可
9,注意:
工作流activiti 的表使用存放流程数据的
而业务的数据需要程序员自己去创建和维护的
一定需要业务去和关联流程 才能去开发工作流系统
10,
服务类说明:
RepositoryService 管理流程定义
RuntimeService 执行管理,包括启动,推进,删除流程实例等操作
TaskService 任务管理
HistoryService 历史管理 执行完的数据的管理
IdentityService 组织机构管理--成员组等
FormService 一个可选服务,任务表单管理
11, bpmn文件,在部署后,每次系统启动是都会被解析,把内容封装成流程定义放入项目缓存中,、、
Activiti 框架结合这个xml文件自动管理流程,流程的执行就按照bpmn文件定义的规则执行的
12, 流程定义是不能修改的
如果需要修改就 再生成一个 修改后的bpmn文件流程,然后再次部署,
key相同也就是 升级一个版本了
13,
Deployment 类 部署对象
一次部署的多个文件的信息,对于不需要的流程可以删除和修改
ProcessDefinition 类
解析 .bpmnhou 得到的流程定义规则的信息,工作流系统就是按照流程定义的规则执行的
14, 一个 Task节点和 Execution 节点是 1对1 的情况,在task对象中使用 Execution 来表示
他们之间的关系
在activiti 任务中,主要分为两大类查询任务,(个人任务和组任务)
1),确切指定了办理者的任务,这个将成为指定者的私有任务,即个人任务
2), 无法指定具体的某一个人来办理的任务,可以把任务分配给几个人或一道多个小组,让这个
范围内的用户可以选择性来办理这类人,组任务
15, ProcessInstance 类
代表流程定义的执行实例,如果某一个人请了一天的加,就必须发出一个流程实例的申请,
一个流程实例包括了所有的运行节点,我们可以利用这个对象来了解当前流程实例的进度等信息
流程实例就表示一个流程从开始到结束的最大分支
Execution类 ,去描述流程执行的每一个节点,在没有并发的情况下,
Execution 就是 ProcessInstance .
执行中出现同时执行的分支时候,每个分支就是 一个 Execution
ProcessInstance 继承了 Execution 类
16, 流程变量在整个工作流中很重要,
例如,请假流程中有请假天数,
请假原因等一些参数都为流程变量的范围。
而流程变量的作用域范围是只对应一个流程实例,
也就是说各个流程实例的流程变量是不互相影响的。
流程实例结束后以后流程变量还保存在数据库中。
设置流程变量(名--值)
获取流程变量(通过 名--值)来获取的
流程变量 是有固定的支持类型的,可以去查看api 中文文档的
或者是 说明文档
taskService.setVariable :
设置流程变量的时候,流程变量名称相同的时候,后一次的值替换前一次的值,
而且可以看到 task_id的字段不会存放任务ID的值
taskService.setVariableLocal :
设置流程变量的时候,针对当前活动的节点设置流程变量,如果一个流程中存放2个
活动节点,对每个活动节点都设置流程变量,即使流程变量的名称相同,后一次的版本的值也不会
替换前一次的值,它会使用不同的任务ID task_id 作为标识,存放2个流程变量的值,
而且可以看到 TASK_ID 就是存放任务的id
还有 taskService.setVariableLocal 绑定了当前的任务,当流程继续执行时,下个任务
获取不到这个流程变量(因为正在执行的流程变量中没有这个数据),
所有查询正在执行的任务时不能查询到数据,此时需要查询历史的流程变量的数据
去历史流程变量的表去查。
一些activiti 学习地址:
17,
activiti 官网
http://www.activiti.org/download.html
http://jingyan.baidu.com/article/49ad8bce52e1515835d8fa56.html?st=2&os=0&bd_page_type=1&net_type=1
http://jingyan.baidu.com/article/48b37f8d67b8e21a646488c5.html
http://www.open-open.com/lib/view/open1350460225367.html
http://wenku.baidu.com/link?url=YbC3XYj__I7EUV8bSC0nH74p_cTNKg0uS7oJB0lwGYQrhUQVU8G7GVMiHxqh6CG0EVk-Fw7xb3kFfeAsdEpdQEgPPQNGXWPBlefemxwTa5_
插件eclipse 的activiti
http://www.itxxz.com/a/gaoji/2015/0116/eclipse_activiti_install.html
http://www.tuicool.com/articles/yUnURjy
http://www.cnblogs.com/strinkbug/p/4876819.html
https://my.oschina.net/githubhty/blog/690269?p={{currentPage+1}}
教程
http://blog.csdn.net/yangyi22/article/details/9225849
用户手册:
http://www.mossle.com/docs/activiti/index.html#license
来源:oschina
链接:https://my.oschina.net/u/2419285/blog/749425