kaka的gravatar头像
kaka 2016-09-24 17:22:35
activiti24张表的学习分析

最近项目中有流程的需求,我考虑用activiti替换掉老的jpbm框架,最近跑了一个demo,顺便记录下这个过程中对activiti的24张表的学习。

表的分析按照以下简单的流程定义去分析

流程定义xml

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" 
			 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
			 xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
			 xmlns:activiti="http://activiti.org/bpmn" 
			 xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" 
			 xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" 
			 xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" 
			 typeLanguage="http://www.w3.org/2001/XMLSchema" 
			 expressionLanguage="http://www.w3.org/1999/XPath" 
			 targetNamespace="www.xxx.com">
  <process id="operation" name="特殊运维审批流程" isExecutable="true">
    <startEvent id="startOperation" name="开始审批"></startEvent>
    <userTask id="audit" name="审批"></userTask>
    <exclusiveGateway id="isPass" name="是否通过"></exclusiveGateway>
    <exclusiveGateway id="isHaveParent" name="是否具有上级领导"></exclusiveGateway>
    <endEvent id="endevent1" name="End"></endEvent>
    <sequenceFlow id="flow1" sourceRef="startOperation" targetRef="audit"></sequenceFlow>
    <sequenceFlow id="flow2" sourceRef="audit" targetRef="isPass"></sequenceFlow>
    <sequenceFlow id="flow3" name="拟通过/拒绝" sourceRef="isPass" targetRef="isHaveParent">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${isPass=='1'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="flow4" name="没有上级领导" sourceRef="isHaveParent" targetRef="endevent1">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${hasParent=='no'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="flow5" name="通过/拒绝" sourceRef="isPass" targetRef="endevent1">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${isPass=='0'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="flow6" name="有上级领导" sourceRef="isHaveParent" targetRef="audit">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${hasParent=='yes'}]]></conditionExpression>
    </sequenceFlow>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_operation">
    <bpmndi:BPMNPlane bpmnElement="operation" id="BPMNPlane_operation">
      <bpmndi:BPMNShape bpmnElement="startOperation" id="BPMNShape_startOperation">
        <omgdc:Bounds height="35.0" width="35.0" x="160.0" y="250.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="audit" id="BPMNShape_audit">
        <omgdc:Bounds height="55.0" width="105.0" x="300.0" y="240.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="isPass" id="BPMNShape_isPass">
        <omgdc:Bounds height="40.0" width="40.0" x="510.0" y="247.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="isHaveParent" id="BPMNShape_isHaveParent">
        <omgdc:Bounds height="40.0" width="40.0" x="660.0" y="247.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
        <omgdc:Bounds height="35.0" width="35.0" x="820.0" y="250.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
        <omgdi:waypoint x="195.0" y="267.0"></omgdi:waypoint>
        <omgdi:waypoint x="300.0" y="267.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
        <omgdi:waypoint x="405.0" y="267.0"></omgdi:waypoint>
        <omgdi:waypoint x="510.0" y="267.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow3" id="BPMNEdge_flow3">
        <omgdi:waypoint x="550.0" y="267.0"></omgdi:waypoint>
        <omgdi:waypoint x="660.0" y="267.0"></omgdi:waypoint>
        <bpmndi:BPMNLabel>
          <omgdc:Bounds height="14.0" width="100.0" x="569.0" y="274.0"></omgdc:Bounds>
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow4" id="BPMNEdge_flow4">
        <omgdi:waypoint x="700.0" y="267.0"></omgdi:waypoint>
        <omgdi:waypoint x="820.0" y="267.0"></omgdi:waypoint>
        <bpmndi:BPMNLabel>
          <omgdc:Bounds height="14.0" width="72.0" x="720.0" y="267.0"></omgdc:Bounds>
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow5" id="BPMNEdge_flow5">
        <omgdi:waypoint x="530.0" y="287.0"></omgdi:waypoint>
        <omgdi:waypoint x="530.0" y="351.0"></omgdi:waypoint>
        <omgdi:waypoint x="837.0" y="351.0"></omgdi:waypoint>
        <omgdi:waypoint x="837.0" y="285.0"></omgdi:waypoint>
        <bpmndi:BPMNLabel>
          <omgdc:Bounds height="14.0" width="100.0" x="590.0" y="329.0"></omgdc:Bounds>
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow6" id="BPMNEdge_flow6">
        <omgdi:waypoint x="680.0" y="247.0"></omgdi:waypoint>
        <omgdi:waypoint x="679.0" y="177.0"></omgdi:waypoint>
        <omgdi:waypoint x="352.0" y="177.0"></omgdi:waypoint>
        <omgdi:waypoint x="352.0" y="240.0"></omgdi:waypoint>
        <bpmndi:BPMNLabel>
          <omgdc:Bounds height="14.0" width="60.0" x="501.0" y="181.0"></omgdc:Bounds>
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

流程图:

activiti24张表的学习分析

 

流程部署涉及的表

1、act_ge_bytearray

用来保存部署文件的大文本数据,比如流程xml、流程图片

activiti24张表的学习分析

REV_:乐观锁版本,流程的24张表中有很多表都有这个字段,这个字段是为了保证操作的独占性,保证同一条记录只会被一个用户修改。

NAME_:流程定义文件名称(bpmn xml文件,png文件)

DEPLOYMENT_ID_:流程部署id

2、act_ge_property

属性数据表,存储整个流程引擎级别的数据

activiti24张表的学习分析

3、act_re_deployment

流程的部署信息表

activiti24张表的学习分析

ID_:流程的部署id

NAME_:流程的部署名称

CATEGORY_:流程的分类

TENANT_ID_:租户ID(对Saas平台的数据支持)

DEPLOY_TIME_:部署时间

4、act_re_model

模型表,暂时未使用到

5、act_re_procdef

流程定义表

activiti24张表的学习分析

ID_ :流程定义id

REV_:乐观锁版本

CATEGORY_:流程类别,默认存储的是流程定义时的命名空间

NAME_:流程定义的名称,对应上面流程定义xml  process节点的name属性

KEY_:流程定义的key,对应上面流程定义xml  process节点的id属性,一般启动流程也是按照这个key去启动的

VERSION_:版本(再次部署相同的流程定义时该字段会自动加1)

DEPLOYMENT_ID_:流程部署id

RESOURCE_NAME_:流程定义资源名称

DGRM_RESOURCE_NAME_:流程图片名称

HAS_START_FORM_KEY_:不确定(外置表单?)

SUSPENSION_STATE_:是否暂停状态

流程运行涉及的表

6、act_ru_event_subscr

暂时未使用到这个事件监听表,后面用到再补充

7、act_ru_execution

流程执行表

activiti24张表的学习分析

ID_:流程执行的id

PROC_INST_ID_:流程实例的id

BUSINESS_KEY_:业务表关联的id

PARENT_ID_:父流程执行id,上面这个示例没有Parallel Gateway这个节点,如果有这个节点就会在数据表中看到分支执行的PARENT_ID_是主线执行的执行ID

PROC_DEF_ID_:流程定义的id

SUPER_EXEC_:外部子执行的ID(不太确定,暂时未知)

ACT_ID_:流程节点的id,比如示例xml中的audit

<userTask id="audit" name="审批"></userTask>

IS_ACTIVE_:是否是活动的流程执行,0表示非活动,1表示活动

IS_CONCURRENT_:是否是并发执行,0表示非,1表示是

IS_SCOPE_:是否是全局的流程执行,主执行这个字段为1,子流程执行这个是0

IS_EVENT_SCOPE:和事件相关(不太确定,暂时未知)

SUSPENSION_STATE_:(不太确定,暂时未知)

CACHED_ENT_STATE_:(不太确定,暂时未知)

TENANT_ID_:

NAME:(不太确定,暂时未知)

ps:task和execution的区别(任务和流程执行的区别):task是代办任务,excution是流程执行路线,每一个task总会对应一个excution,但是一个excution不一定对应一个task

8、act_ru_identitylink

当前任务与参与者的关系数据表

activiti24张表的学习分析

9、act_ru_job

运行时定时任务数据表(暂未用到)

10、act_ru_task

运行中的任务表

activiti24张表的学习分析

11、act_ru_variable

运行中任务对应的参数数据表

activiti24张表的学习分析

 

流程历史涉及的表

12、act_hi_actinst

历史节点表,存放历史节点的信息比如节点名称、类型、委托人、开始结束时间、耗时等等。

activiti24张表的学习分析

PROC_DEF_ID_:流程定义的ID

PROC_INST_ID_:流程实例的ID

EXECUTION_ID_:流程执行的ID

ACT_ID_:流程节点的id,这个字段是在我们定义流程xml中给每个节点指定的id,如下:

activiti24张表的学习分析

TASK_ID_:任务id

CALL_PROC_INST_ID_:调用外部的流程实例id

ACT_NAME_:activiti名称,即每个流程节点的名称,如上截图中的name属性

ACT_TYPE_:流程节点类型,如上截图中的startEvent、userTask等

ASSIGNEE_:该任务处理人(如果该任务属于角色组,即角色组下的用户没有领取该任务,该字段为空,用户认领了任务后,该字段存储处理人的id)

START_TIME_:任务开始时间

END_TIME_:任务结束时间(如果任务没有被处理,该字段为空,处理后更新该字段)

DURATION:耗时

TENANT_ID_:网上查了说是租户ID,不明白这个是干啥的(待定吧)

13、act_hi_attachment

历史附件表(暂时没用到,不过字段很好理解,就是存储每个流程实例下任务节点的附件信息)

14、act_hi_comment

历史意见表(存放每个流程实例下的任务节点产生的信息,比如审批意见,处理结果记录等等)

15、act_hi_detail

历史详情表,这个表很重要,流程中产生的变量详细、控制流程流转的变量、业务表单中填写的流程要用到的变量等,都会存储在这种表中

16、act_hi_identitylink

存放历史任务与办理人的关系表(存储历史节点处理者的信息)

activiti24张表的学习分析

GROUP_ID_:用户组id

TYPE_:用户组类型

USER_ID:用户id

TASK_ID_:任务id

PROC_INST_ID_:流程实例id

主要字段:TYPE_: 分candidate、owner、starter、participant、assignee

分为candidate、owner、starter、participant、assignee

candidate:候选者,从上面的数据可以看出,当一个节点被指定为用户组,或者被指定为人去处理,则TYPE_的类型为candidate,指的是该任务需要先被组用户或者指定用户认领。

participant:参与者,我的理解是如果是个人任务,则类型为participant。

starter:启动者,流程实例的发起者,请参照上图的TYPE_为starter的数据。

owner:拥有者,这个类型我的理解是只有在任务被委托出去后,它才有意义,它表示任务实际的拥有者。

assignee:签收人或者被委托

17、act_hi_procinst

历史流程实例表,存放了历史流程实例的一些重要信息,我们的业务id和历史流程实例的关系也是存储在这里的。

activiti24张表的学习分析

BUSINESS_KEY_:业务id

PROC_DEF_ID_:流程定义id

START_TIME_:流程实例创建时间

END_TIME_:流程实例结束时间

DURATION_:时长

START_USER_ID_:流程实例启动者

START_ACT_ID_:流程实例启动节点ID

END_ACT_ID_:流程实例结束节点ID

SUPER_PROCESS_INSTANCE_ID_:超级流程实例Id

DELETE_REASON_:删除理由

TENANT_ID_

NAME_

18、act_hi_taskinst

历史任务表,存放了历史任务的详细信息。

activiti24张表的学习分析activiti24张表的学习分析

19、act_hi_varinst

历史变量表

activiti24张表的学习分析

流程角色涉及的表

20、act_id_group

21、act_id_info

22、act_id_membership

23、act_id_user

 

事件日志涉及的表

24、act_evt_log


打赏
最近浏览
F丶S丶H  LV7 2023年7月5日
locklock  LV2 2023年3月27日
ehewhee  LV6 2021年4月22日
MrYue66 2020年11月16日
暂无贡献等级
shijchen  LV2 2020年7月13日
mhantao 2020年6月16日
暂无贡献等级
随便取个名字_哈哈  LV27 2020年4月24日
ty181818 2019年12月25日
暂无贡献等级
15703277639 2019年8月16日
暂无贡献等级
火焰神马  LV2 2019年3月27日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友