zoukankan      html  css  js  c++  java
  • Activiti6.0教程 28张表解析 (三)

    使用Activit的朋友都知道Activiti对应的有28张表,今天我们就来说下Activit中28张表对应的含义是什么?

    如何创建表?

    在Activiti中创建表有三种方式,我们依次来看下:

    一、通过硬编码的形式直接指定

      // 创建一个流程成引擎对像
      ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration
         .createStandaloneInMemProcessEngineConfiguration();
      // 设置数据库连接信息
      processEngineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver");
      processEngineConfiguration.setJdbcUrl("jdbc:mysql://localhost:3306/db_activiti");
      processEngineConfiguration.setJdbcUsername("root");
      processEngineConfiguration.setJdbcPassword("");
      processEngineConfiguration.setDatabaseType("mysql");
      processEngineConfiguration.setDatabaseSchemaUpdate("update");
    
     // 设置自动创建表
     processEngineConfiguration.setDatabaseSchemaUpdate("true");
     // 在创建引擎对象的时候自动创建表
     ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();

    二、通过activit.cfg.xml配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           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">
    
      <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db_activiti?characterEncoding=utf8" />
        <property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
        <property name="jdbcUsername" value="root" />
        <property name="jdbcPassword" value="" />
        <property name="databaseSchemaUpdate" value="true" />
        <property name="databaseType" value="mysql"></property>
      </bean>
    
    </beans>
    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

    三、使用配置文件,在资源目录下创建activiti-context.xml

    <!-- 创建流程引擎配置对象 -->
    <bean id="ProcessEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
       <property name="jdbcDriver" value="com.mysql.jdbc.Driver"/>
       <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db_activiti" />
       <property name="jdbcUsername" value="root" />
       <property name="jdbcPassword" value="" />
       <property name="databaseSchemaUpdate" value="true" />
    </bean>

    代码里边读取加载配置文件

    String resource = "activiti-context.xml";
    String beanName = "ProcessEngineConfiguration";
    ProcessEngineConfiguration cf = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(resource, beanName);
    ProcessEngine processEngine = cf.buildProcessEngine();

    以上就是创建表的三种方式,接下来我们看创建好的表都有哪些?

    先上一张图,后面详细说。

    Activiti中表的详细介绍

     通用数据表

    通用数据表用于存放一些通用的数据,这些表本身不关心特定的流程或者业务,只用于其存放这些业务或者流程所使用的特定的资源,它们可以独立存在于流程引擎或者应用系统当中,其他的数据表也可以使用这些表的数据,它们都是以ACT_GE开头,GE的单词是general前两个字母的缩写。

    ACT_GE_BYTEARRAY

        用于保存与流程引擎相关的资源,只要调用了Activit存储服务的API,其提供的资源均会转换成byte数组并保存到这个表中。资源表设计了一个byte字段,用来保存资源的内容,因此理论上可以保存任何资源类型(文件,或者其他来源的输入流)。一般情况下,Activit使用这个表来保存字符串、流程文件的内容和流程图片内容等。

    ACT_GE_BYTEARRAY

    • ID_:数据表的主键,在Mysql中字段类型为varchar,长度位64,Activit有自己的主键生成策略,每个数据表的ID_字段值,在整个流程中是唯一的
    • REV_:数据版本,Activit为一些有可能频繁修改的数据表加入该字段,用来标识该数据被操作的次数。
    • NAME_:资源名称,类型为varchar,长度255
    • DEPLOYMENT_ID_:一次部署可以添加多个资源,该字段与部署表ACT_RE_DEPLOYMENT的主键关联
    • BYTES_:资源内容,数据类型为longblob,最大可存储4GB的数据
    • GENERATED_:是由Activit自动产生的数据,0表示false,1表示true

    属性表

    ACT_GE_PROPERTY

    Activit将全部的属性抽象为 key-value对,每个属性都有名称和值,使用ACT_GE_PROPERTY来保存这些属性,该表的字段包含如下:

    • NAME_:属性名称,varchar类型,长度64
    • VALUE_:属性值,长度300
    • REV_:数据的版本号

    流程存储表

      流程引擎中使用存储表来保存流程定义和部署信息这类数据,存储表名称以ACT_RE开头,RE是repository单词的前两个字母,可以理解为仓库的意思

    部署数据表 

       在Activit中,一次部署可以添加多个资源,资源会被保存到资源表(ACT_GE_BYTEARRA)中,而部署信息,则保存到部署表中,部署表位ACT_RE_DEPLOYMENT,其包含以下三个字段

    ACT_RE_DEPLOYMENT

    • ID_:主键
    • NAME_:部署名称
    • DEPLOYMENT_TIME_:部署时间,类型为timestamp

    以上是哪个字段除了NAME_可以不设置之外,其他字段在数据写入时必须设置值

    流程定义表

    Activit在部署添加资源时,如果发布部署文件是流程文件(.bpmn或者.bpmn20.xml)其除了会讲内容保存到资源表外,还会解析流程文件的内容,并形成特定的流程定义数据,写入到流程定义表中(ACT_RE_PROCDEF),ACT_RE_PROCDEF包含以下字段:

    ACT_RE_PROCDEF

    • ID_:主键,与其他数据表不同的是,ACT_RE_PROCDEF表的主键是组合主键,一般使用一定的规则来产生主键
    • REV_:数据版本号
    • CATEGORY_:流程定义分类
    • NAME_:流程定义名称
    • KEY_: 流程定义的KEY
    • VERSION_:流程定义的版本
    • DEPLOYMENT_ID_:流程定义的对应的资源名称,一般为流程文件的相对路径
    • RESOURCE_NAME_:流程定义的对应的资源名称
    • DGRM_RERSOURCE_NAME_:流程定义的对应流程图的资源名称
    • HAS_START_FORM_KEY_:流程文件是否有开始表单,可以在时间中使用activiti:formKey属性来配置开始表单
    • SUSPENSION_STATE_:表示流程定义的状态是激活还是终止,如果是终止,那么将不能启动流程

     身份数据表

    Activit的整个身份模块,可以独立于流程引擎而存在,身份数据表并没有保存流程相关的数据以及关联,身份表的名称使用ACT_ID开头,ID的单词是identity的前两个字母。

    用户表

    流程引擎用户的信息被保护在ACT_ID_UESR表中,该表有以下几个字段

    ACT_ID_UESR

    • ID_:主键
    • REV_:数据版本号
    • FIRST_:名字的名称
    • LAST_:名字的姓氏
    • EMAIL_:用户邮箱
    • PWD_:用户密码
    • PICTURE_ID_:用户图片,对应资源表的数据ID

    用户账号(信息)表

    Activit将用户,用户账号和身份信息分成三种数据,其中用户表保存用户的数据,而用户账号和用户信息则被保存到ACT_ID_INFO表中,该类有如下字段

    ACT_ID_INFO

    • ID_:主键
    • REV_:数据版本
    • USER_ID_:对应用户表的数据ID
    • TYPE_:信息类型,当前可以设置用户的帐号(account)、用户信息(userinfo)和NULL三种值
    • KEY_:数据的键
    • VALUE_:数据的值
    • PASSWORD_:用户帐号的密码字段,不过当前Activiti并没有使用该字段
    • PARENT_ID_:该信息的父信息ID,如果一条数据设置父信息ID,则表示该数据是用户帐号(信息)的明细数据。比如有个信息有明细,那么明细就是这个帐号的数据。

    用户组表

    ACT_ID_GROUP

    • ID_:主键
    • REV_:数据版本
    • NAME_:用户组名称
    • TYPE_:用户组类型,类型不由Activit提供,某些业务中,Activit会根据该字段进行查询。

    关系表

    ACT_ID_MEMBERSHIP

    • USER_ID_:用户ID,不能为null
    • GROUP_ID_:用户组ID,不能为null

    运行时数据表

    运行时数据表用来保存流程在运行过程中所产生的数据,例如流程实例、执行流和任务等。运行时数据表的名称以ACT_ RU开头,RU是单词runtime的前两个字母。

    流程实例(执行流)表

    当流程启动后,会产生-一个流程实例,同时会产生相应的执行流,流程实例和执行流数据均被保存在ACT_ RU_ EXECUTION表中。如果一个流程实例只有一条执行流,那么该表中只产生一条数据,该数据既表示执行流,也表示流程实例。ACT_ RU_ EXECUTION表有以下字段。

    ACT_ RU_ EXECUTION

    • ID_:主键,由Activiti的主键生成策略产生。
    • REV_: 数据版本。
    • PROC_ INST_ _ID_ :流程实例ID,一个流程实例有可能会产生多个执行流,该字段表示执行流所属的流程实例。
    • BUSINESS_ KEY_ :启动流程时指定的业务主键。
    • PARENT_ ID_ :流程实例(执行流)的ID, 一个流程实例有可能会产生执行流,新的执行流数据以该字段标识其所属的流程实例。
    • PROC_ DEF_ _ID_ :流程定义数据的ID。
    • SUPER_ EXEC_ :父执行流的ID,一个执行流可以产生新的流程实例,该流程实例数据使用该字段标识其所属的流程实例。
    • ACT_ ID_ :当前执行流行为的ID, ID在流程文件中定义。
    • IS_ ACTIVE_ :该执行流是否活跃的标识。
    • IS_ CONCURRENT_ :执行流是否正在并行。
    • IS_ SCOPE :是否在执行流范围内。
    • IS_ EVENT_ SCOPE_ :是否在事件范围内。
    • SUSPENSION STATE_ :标识流程的中断状态。
    • CACHED_ ENT_ STATE_ :流程实体的缓存,取值为0~7。

    流程任务表

    流程在运行过程中所产生的任务数据保存在ACT_ RU_TASK表中,任务有如下字段。

    ACT_ RU_TASK

    • ID_: 主键,由Activiti的主键生成策略产生。
    • REV_:数据版本号。
    • EXECUTION _ID_ :任务所处的执行流ID。
    • PROC_ _INST_ .ID_ :对应的流程实例ID。
    • PROC_ DEF _ID_ :对应流程定义数据的ID。
    • NAME_ :任务名称,在流程文件中定义。
    • PARENT_TASK_ ID_ :父任务ID, 子任务才会设置该字段的值。
    • DESCRIPTION_ :任务描述,在流程文件中配置。
    • TASK_ DEF_ KEY_ :任务定义的ID值,在流程文件中定义。
    • OWNER_ :任务拥有人,没有做外键关联。
    • ASSIGNEE_ :被指派执行该任务的人,没有做外键关联。
    • DELEGATION_ :任务委托状态,有等候中和已解决两种状态。
    • PRIORITY_: 任务优先级,默认为50, 类型为int, 长度为11
    • CREATE .TIME_ :任务创建时间,类型为timestamp。
    • DUE_ DATE_ :任务预订日期,类型为datetime

    流程参数表

    Activiti提供了ACT_ RU_ VARIABLE表来存放流程中的参数,这类参数包括流程实例参数、执行流参数和任务参数。参数可以会有多种类型,因此该表有多个字段用来存放参数值。ACT_ RU_ VARIABLE表有以下字段。

    ACT_ RU_ VARIABLE

    • ID_:主键,由Activiti 的主键生成策略产生。
    • REV_: 数据版本号。
    • TYPE_ :参数类型,该字段值可以为boolean. bytes、serializable. date. double、 integer、jpa-entity、long、 null、 short 或string,这些字段值均为Activiti 提供,还可以通过自定义来扩展参数类型。
    • NAME_ :参数名称。
    • EXECUTION_ ID_: 该参数对应的执行ID, 可以为null.
    • PROC_ INST_ ID_ :该参数对应的流程实例ID, 可以为null。
    • TASK_ ID_ :如果该参数是任务参数,就需要设置任务ID。
    • BYTEARRAY .ID_ :如果参数值是序列化对象,那么可以将该对象作为资源保存到资源表中,该字段保存资源表中数据的ID.
    • DOUBLE_:参数类型为double,则值会保存到该字段中。
    • LONG_ :参数类型为long, 则值会保存到该字段中。
    • TEXT_:用于保存文本类型的参数值,该字段为varchar 类型,长度为4 000。
    • TEXT2_ :与TEXT_字段一样,用于保存文本类型的参数值。

     流程与身份关系表

    用户组和用户之间存在的关系,使用ACT_ ID_ MEMBERSHIP表保存。用户或者用户组与流程数据之间的关系,则使用ACT_ RU_ IDENTITYLINK表进行保存。相比于ACT_ ID _MEMBERSHIP表,ACT_ RU_ IDENTITYLINK 表的字段更多一些。

    ACT_ RU_ IDENTITYLINK

    • ID_:主键,由Activiti的主键生成策略产生。
    • REV_ :数据版本号。
    • GROUP_ _ID_ :该关系数据中的用户组ID。
    • TYPE_ :该关系数据的类型,当前提供了3个值: assignee、 candidate和owner, 表示流程数据的指派人(组)、候选人(组)和拥有人。
    • USER_ ID_ :关系数据中的用户ID。
    • TASK_ID_ :关系数据中的任务ID.
    • PROC DEF_ .ID_ :关系数据中的流程定义ID

    工作数据表

    在流程执行的过程中,会有一些工作需要定时或者重复执行,这类工作数据被保存到ACT RU_ JOB表中。ACT_ RU_ JOB表有以下字段。

    ACT_ RU_ JOB

    • ID_:主键,由Activiti的主键生成策略产生。
    • REV_ :数据版本号。
    • TYPE_:工作类型,值为message或者timer
    • LOCK_EXP_TIME_:工作锁定的结束时间表示
    • LOCK_OWNER_:工作锁定标识,默认为UUID
    • EXCLUSIVE_:工作是否需要单独执行
    • EXECUTION_ID_:产生工作的执行流ID
    • PROCESS_INSTANCE_ID_:产生郭总的流程实例ID
    • RETRIES_:工作的剩余执行次数,默认值为3
    • EXCEPTION_STACK_ID_:当任务执行抛出异常时,异常堆栈信息会被保存到资源标中,该ID为关系资源表中存储的异常堆栈信息的数据ID
    • EXCEPTION_MSG_:异常信息
    • DUEDATE_:工作执行时间
    • PEPEAT_:工作重复执行次数
    • HANDLER_TYPE_:标识工作的处理类
    • HANDLER_CFG_:工作相关的数据配置

    事件描述表

    ACT_RU_EVENT_SUBSCR

    • ID_:
    • REV_:
    • EVENT_TYPE_:事件类型
    • EVENT_NAME_:事件名称
    • EXECUTION_ID_:事件所在的执流程ID
    • PROC_INST_ID_:事件所在的流程实例ID
    • ACTIVITY_ID_:具体事件的ID
    • CONFIGURATION_:事件的属性配置
    • CREATED_:事件的创建时间

    历史数据表

         历史数据表就像流程引擎的日志表。被操作过的流程元素,将会被记录到历史表中。历史数据表名称以ACT_ HI 开头,HI是单词history的前两个字母。

    流程实例表

         流程实例的历史数据会被保存到ACT_ HI_ PROCINST表中,只要流程被启动,Activiti 就会将流程实例的数据写入ACT_ HI_ PROCINST 表中。除了基本的流程字段外,与运行时数据表不同的是,历史流程实例表还会记录流程的开始活动ID、结束活动ID等信息。

    ACT_HI_PROCINST

    • START_ACT_ID:开始活动的ID
    • END_ACT_ID:流程最后一个活动的ID
    • EDLETE_REASON_:该流程实例删除的原因

    流程明细表

        流程明细表(ACT_ HI_ DETAIL)会记录流程执行过程中的参数或者表单数据。由于在流程执行过程中,会产生大量这类数据,因此默认情况下,Activiti 不会保存流程明细数据,除非将流程引擎的历史数据(history) 配置为full。流程的历史明细数据表与运行时参数表的设计类似.

        当流程到达某个任务节点时,就会向历史任务表(ACT_ HI _TASKINST)中写入历史任务数据。历史任务表与运行时的任务表设计类似,在运行时任务表的基础上,额外提供了任务开始时间(START _TIME_ )、结束时间(END_ TIME_ )和删除原因(DELETE_ REASON_ )三个字段。其中开始时间和结束时间字段类型均为datetime,如果任务被正常完成,那么删除原因字段值为completed。

         历史行为表(ACT_ HI_ ACTINST)会记录每一个流程活动的实例,- 一个流程活动将会被记录为一条数据。例如有一个流程,开始事件、用户任务和结束事件各有一个,当流程结束后,就会产生3条历史行为数据。历史行为表有如下字段。

    ACT_HI_ACTINS

    • ID_:主键,由Activiti主键生成策略产生。
    • PROC_DEF_ ID_ :流程定义ID。
    • PROC INST_ID_ :流程实例ID.
    • EXECUTION_ID_ :执行流ID。
    • ACT_ID_ :流程活动的ID, 在流程文件中定义。
    • ACT_ NAME_ :活动的名称。
    • ACT_TYPE_ :活动类型,例如开始事件,活动名称为startEvent。
    • ASSIGNEE_ :活动指派人。
    • START_TIME_ :活动开始时间,即执行流到达活动时的时间。
    • END_TIME_ :活动结束时间,即执行流离开该活动时的时间。
    • DURATION_:活动持续时间
    •  附件表和评论表

         使用任务服务(TaskService) 的API,可以添加附件和评论,这些附件和评论的数据将会保存到ACT HI ATTACHMENT表和ACT_ HI COMMENT表中,ACT_ HI ATTACHMENT表有如下字段。

    ACT_ HI ATTACHMENT

    • ID_:主键,由Activiti的主键生成策略产生。
    • REV_: 数据版本号。
    • USER_ .ID_ :附件对应的用户ID, 可以为null.➢NAME_ :附件名称。
    • DESCRIPTION :附件描述。➢TYPE _: 附件类型。
    • TASK_ ID_ :该附件对应的任务ID。
    • PROC INST_ ID _:对应的流程实例ID。➢URL_ :连接到该附件的URL。
    • CONTENT_ .ID_ :附件内容ID,附件的内容将会被保存到资源表中,该字段记录资源数据ID. 

     ACT_ HI_ COMMENT表实际不只保存评论数据,它还会保存某些事件数据,但它的表名.为COMMENT,因此更倾向把它叫作评论表,该表有如下字段。

    ACT_ HI_ COMMENT

    • ID_: 主键,由Activiti的主键生成策略产生。
    • TYPE :评论的类型,可以设置为event或者comment, 表示事件记录数据或者评论数据。
    • TIME_ :数据产生的时间。
    • USER_ ID_: 产生评论数据的用户ID。
    • TASK .ID_ :该评论数据的任务ID。
    •  PROC_ _INST .ID_ :数据对应的流程实例ID。
    • ACTION :该评论数据的操作标识。
    • MESSAGE_ :该评论数据的信息。
    • FULL_ MSG_ :该字段同样记录评论数据的信息。
          虽然附件表和评论表的命名遵守历史数据表的命名规范(以ACT_HI开头),但是可以调用其他服务组件的API 来往这两个表中写入数据,以笔者的理解,历史数据表实际上保存的是那种-经写入,就很少会发生变化(结构性变化)的数据。

     
  • 相关阅读:
    IXmlSerializable With WCFData Transfer in Service Contracts
    Difference Between XmlSerialization and BinarySerialization
    Using XmlSerializer (using Attributes like XmlElement , XmlAttribute etc ) Data Transfer in Service Contracts
    Introducing XML Serialization
    Version Tolerant Serialization
    Which binding is bestWCF Bindings
    Data Transfer in Service Contracts
    DataContract KnownTypeData Transfer in Service Contracts
    Using the Message ClassData Transfer in Service Contracts
    DataContract POCO SupportData Transfer in Service Contracts
  • 原文地址:https://www.cnblogs.com/c1024/p/11016466.html
Copyright © 2011-2022 走看看