Liferay7 BPM门户开发之7: Activiti中的重要概念和主要数据库结构
流程的人员参与角色:
- Assignee :签收者(即待办人)
 - Candidate:候选人
 - Owner:拥有者
 - Starter:启动者
 - participant:参与者,包含查阅
 
流程变量的类型:
- String
 - Date
 - Double
 - Integer
 - Long
 - Null
 - Short
 - jpa-entity
 - Boolean
 - Bytes
 - serializable(可序列化)
 - 自定义type(根据你自身配置)
 - CustomVariableType
 
1、控制台的主要功能
Tasks: 任务管理功能。 这里,如果你是办理人,你可以看见运行中流程实例的自己的待办任务,或者你可以拾取组任务。
Process: 显示部署的流程定义列表,可以启动一个新的流程实例。
Reporting: 生成报表和显示之前保存历史的结果数据。
Manage: 用于管理流程引擎:管理用户和组,执行和查看停止的Jobs,查看数据库和部署新的流程定义。
2、流程图
实际上流程定义XXX.bpmn2.xml是标准的XML文件,描述从流程启动到中间过程到结束的所有定义。
可以通过Activiti Designer 或 Activiti Explorer (Web界面)建立XXX.bpmn2.xml文件,在web中,使用raphaeljs渲染输出XML
如果不想使用Javascript生成流程图,你可以在ui.properties文件中禁用它。
activiti.ui.jsdiagram = false
作为替代可以采用上传一张图片的形式。
展示当前流程实例的方式,通过REST的方式很简单:
http://localhost:8080/activiti-explorer/diagram-viewer/index.html?processDefinitionId=reviewSaledLead:1:36&processInstanceId=41
其中
流程定义ID:processDefinitionId=reviewSaledLead:1:36
流程实例ID:processInstanceId=41
有了这两个参数,就可以实时展示流程当前状态,如果仅第一个参数,则只展示流程定义图
3、任务清单
- Inbox: 收件箱,显示登录用户需要办理的所有任务列表。
 - My tasks: 显示登录用户任务拥有者的任务列表。
 - Queued: 显示不用的组任务列表,并且登录用户在该组中。这里的所有任务都必须先拾取然后才能够完成。
 - Involved: 显示登录用户被参与的任务(即不是办理人和任务拥有者)。
 - 归档: 包含已经完成的(历史的)任务。
 
4、表头含义
- ACT_RE_*:’RE’表示repository(存储),RepositoryService接口所操作的表。带此前缀的表包含的是静态信息,如,流程定义,流程的资源(图片,规则等)。
 - ACT_RU_*:‘RU’表示runtime,运行时表-RuntimeService。这是运行时的表存储着流程变量,用户任务,变量,职责(job)等运行时的数据。Activiti只存储实例执行期间的运行时数据,当流程实例结束时,将删除这些记录。这就保证了这些运行时的表小且快。
 - ACT_ID_*:’ID’表示identity (组织机构),IdentityService接口所操作的表。用户记录,流程中使用到的用户和组。这些表包含标识的信息,如用户,用户组,等等。
 - ACT_HI_*:’HI’表示history,历史数据表,HistoryService。就是这些表包含着流程执行的历史相关数据,如结束的流程实例,变量,任务,等等
 - ACT_GE_*:全局通用数据及设置(general),各种情况都使用的数据。
 
5、流程部署相关
deploymentId : 流程部署ID
获取流程:
GET repository/deployments/{deploymentId}
部署信息表( act_re_deployment ):
表结构说明
| 
 字段名称  | 
 字段描述  | 
 数据类型  | 
 主键  | 
 为空  | 
 取值说明  | 
| 
 ID_  | 
 ID_  | 
 nvarchar(64)  | 
 √  | 
 主键ID  | 
|
| 
 NAME_  | 
 部署名称  | 
 nvarchar(255)  | 
 √  | 
 部署文件名  | 
|
| 
 CATEGORY_  | 
 分类  | 
 nvarchar(255)  | 
 √  | 
 类别  | 
|
| 
 DEPLOY_TIME_  | 
 部署时间  | 
 datetime  | 
 √  | 
 部署时间  | 
索引说明
| 
 索引名称  | 
 组成字段名称  | 
 索引类型  | 
 索引说明  | 
| 
 PRIMARY  | 
 ID_  | 
 Unique  | 
 主键唯一索引  | 
流程设计模型部署表( act_re_model )
表结构说明
| 
 字段名称  | 
 字段描述  | 
 数据类型  | 
 主键  | 
 为空  | 
 取值说明  | 
| 
 ID_  | 
 ID_  | 
 nvarchar(64)  | 
 √  | 
 ID_  | 
|
| 
 REV_  | 
 乐观锁  | 
 int  | 
 √  | 
 乐观锁  | 
|
| 
 NAME_  | 
 名称  | 
 nvarchar(255)  | 
 √  | 
 名称  | 
|
| 
 KEY_  | 
 KEY_  | 
 nvarchar(255)  | 
 √  | 
 分类,例如:  | 
|
| 
 CATEGORY_  | 
 分类  | 
 nvarchar(255)  | 
 √  | 
 分类  | 
|
| 
 CREATE_TIME_  | 
 创建时间  | 
 datetime  | 
 √  | 
 创建时间  | 
|
| 
 LAST_UPDATE_TIME_  | 
 最新修改时间  | 
 datetime  | 
 √  | 
 最新修改时间  | 
|
| 
 VERSION_  | 
 版本  | 
 int  | 
 √  | 
 版本  | 
|
| 
 META_INFO_  | 
 META_INFO_  | 
 nvarchar(255)  | 
 √  | 
 以json格式保存流程定义的信息  | 
|
| 
 DEPLOYMENT_ID_  | 
 部署ID  | 
 nvarchar(255)  | 
 √  | 
 部署ID  | 
|
| 
 EDITOR_SOURCE_VALUE_ID_  | 
 datetime  | 
 √  | 
|||
| 
 EDITOR_SOURCE_EXTRA_VALUE_ID_  | 
 datetime  | 
 √  | 
索引说明
| 
 索引名称  | 
 组成字段名称  | 
 索引类型  | 
 索引说明  | 
| 
 PRIMARY  | 
 ID_  | 
 Unique  | 
 主键唯一索引  | 
| 
 ACT_FK_MODEL_SOURCE  | 
 EDITOR_SOURCE_VALUE_ID_  | 
||
| 
 ACT_FK_MODEL_SOURCE_EXTRA  | 
 EDITOR_SOURCE_EXTRA_VALUE_ID_  | 
||
| 
 ACT_FK_MODEL_DEPLOYMENT  | 
 DEPLOYMENT_ID_  | 
流程定义数据表( act_re_procdef )
略
取得流程资源:
GET repository/deployments/{deploymentId}/resources
成功响应体:
[
  {
    "id": "diagrams/my-process.bpmn20.xml",
    "url": "http://localhost:8081/activiti-rest/service/repository/deployments/10/resources/diagrams%2Fmy-process.bpmn20.xml",
    "dataUrl": "http://localhost:8081/activiti-rest/service/repository/deployments/10/resourcedata/diagrams%2Fmy-process.bpmn20.xml",
    "mediaType": "text/xml",
    "type": "processDefinition"
  },
  {
    "id": "image.png",
    "url": "http://localhost:8081/activiti-rest/service/repository/deployments/10/resources/image.png",
    "dataUrl": "http://localhost:8081/activiti-rest/service/repository/deployments/10/resourcedata/image.png",
    "mediaType": "image/png",
    "type": "resource"
  }
]
6、流程定义相关
获得一个流程定义
GET repository/process-definitions/{processDefinitionId}
成功响应体:
{
  "id" : "oneTaskProcess:1:4",
  "url" : "http://localhost:8182/repository/process-definitions/oneTaskProcess%3A1%3A4",
  "version" : ,
  "key" : "oneTaskProcess",
  "category" : "Examples",
  "suspended" : false,
  "name" : "The One Task Process",
  "description" : "This is a process for testing purposes",
  "deploymentId" : "",
  "deploymentUrl" : "http://localhost:8081/repository/deployments/2",
  "graphicalNotationDefined" : true,
  "resource" : "http://localhost:8182/repository/deployments/2/resources/testProcess.xml",
  "diagramResource" : "http://localhost:8182/repository/deployments/2/resources/testProcess.png",
  "startFormDefined" : false
}
 
获得流程定义的所有候选启动者
GET repository/process-definitions/{processDefinitionId}/identitylinks
成功响应体:
[
{
"url":"http://localhost:8182/repository/process-definitions/oneTaskProcess%3A1%3A4/identitylinks/groups/admin",
"user":null,
"group":"admin",
"type":"candidate"
},
{
"url":"http://localhost:8182/repository/process-definitions/oneTaskProcess%3A1%3A4/identitylinks/users/kermit",
"user":"kermit",
"group":null,
"type":"candidate"
}
]
为流程定义添加一个候选启动者
POST repository/process-definitions/{processDefinitionId}/identitylinks
请求体(用户):
{
  "user" : "kermit"
}
请求体(组):
{
  "groupId" : "sales"
}
获得流程定义的一个候选启动者
GET repository/process-definitions/{processDefinitionId}/identitylinks/{family}/{identityId}
URL参数
- processDefinitionId:流程定义的id。
 - family:users 或 groups,依赖IdentityLink的类型。
 - identityId:用来获得候选启动者的身份的userId 或 groupId。
 
成功响应体:
{
  "url":"http://localhost:8182/repository/process-definitions/oneTaskProcess%3A1%3A4/identitylinks/users/kermit",
  "user":"kermit",
  "group":null,
  "type":"candidate"
}
7、流程实例
获得流程实例
GET runtime/process-instances/{processInstanceId}
成功响应体:
{
   "id":"",
   "url":"http://localhost:8182/runtime/process-instances/7",
   "businessKey":"myBusinessKey",
   "suspended":false,
   "processDefinitionUrl":"http://localhost:8182/repository/process-definitions/processOne%3A1%3A4",
   "activityId":"processTask",
   "tenantId": null
}
启动流程实例
POST runtime/process-instances
请求体(使用流程定义id启动):
{
   "processDefinitionId":"oneTaskProcess:1:158",
   "businessKey":"myBusinessKey",
   "variables": [
      {
        "name":"myVar",
        "value":"This is a variable",
      },
      ...
   ]
}
请求体(使用流程定义key启动):
{
   "processDefinitionKey":"oneTaskProcess",
   "businessKey":"myBusinessKey",
   "tenantId": "tenant1",
   "variables": [
      {
        "name":"myVar",
        "value":"This is a variable",
      },
      ...
   ]
}
请求体(使用message启动):
{
   "message":"newOrderMessage",
   "businessKey":"myBusinessKey",
   "tenantId": "tenant1",
   "variables": [
      {
        "name":"myVar",
        "value":"This is a variable",
      },
      ...
   ]
}
请求体中只能使用processDefinitionId,processDefinitionKey或message三者之一。参数businessKey,variables和tenantId都是可选的。
为流程实例添加一个参与者
POST runtime/process-instances/{processInstanceId}/identitylinks
请求体:
{
  "userId":"kermit",
  "type":"participant"
}
userId 和 type 都是必填项。
成功响应体:
{
   "url":"http://localhost:8182/runtime/process-instances/5/identitylinks/users/john/customType",
   "user":"john",
   "group":null,
   "type":"customType"
}
注意groupId总是null,因为只有用户才能实际参与到流程实例中。
运行时流程事件订阅( act_ru_event_subscr )
表结构说明
| 
 字段名称  | 
 字段描述  | 
 数据类型  | 
 主键  | 
 为空  | 
 取值说明  | 
| 
 ID_  | 
 事件ID  | 
 nvarchar(64)  | 
 √  | 
 事件ID  | 
|
| 
 REV_  | 
 版本  | 
 int  | 
 √  | 
 乐观锁Version  | 
|
| 
 EVENT_TYPE_  | 
 事件类型  | 
 nvarchar(255)  | 
 事件类型  | 
||
| 
 EVENT_NAME_  | 
 事件名称  | 
 nvarchar(255)  | 
 √  | 
 事件名称  | 
|
| 
 EXECUTION_ID_  | 
 执行实例ID  | 
 nvarchar(64)  | 
 √  | 
 执行实例ID  | 
|
| 
 PROC_INST_ID_  | 
 流程实例ID  | 
 nvarchar(64)  | 
 √  | 
 流程实例ID  | 
|
| 
 ACTIVITY_ID_  | 
 活动实例ID  | 
 nvarchar(64)  | 
 √  | 
 活动实例ID  | 
|
| 
 CONFIGURATION_  | 
 配置  | 
 nvarchar(255)  | 
 √  | 
 配置  | 
|
| 
 CREATED_  | 
 是否创建  | 
 datetime  | 
 默认值 当前系统时间戳 CURRENT_TIMESTAMP  | 
索引说明
| 
 索引名称  | 
 组成字段名称  | 
 索引类型  | 
 索引说明  | 
| 
 PRIMARY  | 
 ID_  | 
 Unique  | 
 主键唯一索引  | 
| 
 ACT_IDX_EVENT_SUBSCR_CONFIG_  | 
 CONFIGURATION_  | 
||
| 
 ACT_FK_EVENT_EXEC  | 
 EXECUTION_ID_  | 
运行时流程执行实例表( act_ru_execution )
表结构说明
| 
 字段名称  | 
 字段描述  | 
 数据类型  | 
 主键  | 
 为空  | 
 取值说明  | 
| 
 ID_  | 
 ID_  | 
 nvarchar(64)  | 
 √  | 
 ID_  | 
|
| 
 REV_  | 
 乐观锁  | 
 int  | 
 √  | 
 乐观锁  | 
|
| 
 PROC_INST_ID_  | 
 流程实例ID  | 
 nvarchar(64)  | 
 流程实例ID  | 
||
| 
 BUSINESS_KEY_  | 
 业务主键ID  | 
 nvarchar(255)  | 
 √  | 
 业务主键ID  | 
|
| 
 PARENT_ID_  | 
 父节点实例ID  | 
 nvarchar(64)  | 
 √  | 
 父节点实例ID  | 
|
| 
 PROC_DEF_ID_  | 
 流程定义ID  | 
 nvarchar(64)  | 
 √  | 
 流程定义ID  | 
|
| 
 SUPER_EXEC_  | 
 SUPER_EXEC_  | 
 nvarchar(64)  | 
 √  | 
 SUPER_EXEC_  | 
|
| 
 ACT_ID_  | 
 节点实例ID  | 
 nvarchar(255)  | 
 √  | 
 节点实例ID即 ACT_HI_ACTINST中ID  | 
|
| 
 IS_ACTIVE_  | 
 是否存活  | 
 tinyint  | 
 √  | 
 是否存活  | 
|
| 
 IS_CONCURRENT_  | 
 是否并行  | 
 tinyint  | 
 √  | 
 是否为并行(true/false)  | 
|
| 
 IS_SCOPE_  | 
 IS_SCOPE_  | 
 tinyint  | 
 √  | 
 IS_SCOPE_  | 
|
| 
 IS_EVENT_SCOPE_  | 
 IS_EVENT_SCOPE_  | 
 tinyint  | 
 √  | 
 IS_EVENT_SCOPE_  | 
|
| 
 SUSPENSION_STATE_  | 
 是否挂起  | 
 tinyint  | 
 √  | 
 挂起状态 1激活 2挂起  | 
|
| 
 CACHED_ENT_STATE_  | 
 int  | 
 √  | 
索引说明
| 
 索引名称  | 
 组成字段名称  | 
 索引类型  | 
 索引说明  | 
| 
 PRIMARY  | 
 ID_  | 
 Unique  | 
 主键唯一索引  | 
| 
 ACT_UNIQ_RU_BUS_KEY  | 
 PROC_DEF_ID_, BUSINESS_KEY_  | 
 Unique  | 
|
| 
 ACT_IDX_EXEC_BUSKEY  | 
 BUSINESS_KEY_  | 
||
| 
 ACT_FK_EXE_PROCINST  | 
 PROC_INST_ID_  | 
||
| 
 ACT_FK_EXE_PARENT  | 
 PARENT_ID_  | 
||
| 
 ACT_FK_EXE_SUPER  | 
 SUPER_EXEC_  | 
运行时流程人员表( act_ru_identitylink )
表结构说明
| 
 字段名称  | 
 字段描述  | 
 数据类型  | 
 主键  | 
 为空  | 
 取值说明  | 
| 
 ID_  | 
 ID_  | 
 nvarchar(64)  | 
 √  | 
 ID_  | 
|
| 
 REV_  | 
 乐观锁  | 
 int  | 
 √  | 
 乐观锁  | 
|
| 
 GROUP_ID_  | 
 组ID  | 
 nvarchar(64)  | 
 √  | 
 组ID  | 
|
| 
 TYPE_  | 
 类型  | 
 nvarchar(255)  | 
 √  | 
 备注7  | 
|
| 
 USER_ID_  | 
 用户ID  | 
 nvarchar(64)  | 
 √  | 
 用户ID  | 
|
| 
 TASK_ID_  | 
 节点实例ID  | 
 nvarchar(64)  | 
 √  | 
 节点实例ID  | 
|
| 
 PROC_INST_ID_  | 
 流程实例ID  | 
 nvarchar(64)  | 
 √  | 
 流程实例ID  | 
|
| 
 PROC_DEF_ID_  | 
 流程定义ID  | 
 nvarchar(255)  | 
 √  | 
 流程定义ID  | 
流程变量数据表( act_ru_variable )
表结构说明
| 
 字段名称  | 
 字段描述  | 
 数据类型  | 
 主键  | 
 为空  | 
 取值说明  | 
| 
 ID_  | 
 ID_  | 
 nvarchar(64)  | 
 √  | 
 主键标识  | 
|
| 
 REV_  | 
 乐观锁  | 
 int  | 
 √  | 
 乐观锁  | 
|
| 
 TYPE_  | 
 类型  | 
 nvarchar(255)  | 
 备注9  | 
||
| 
 NAME_  | 
 名称  | 
 nvarchar(255)  | 
 变量名称  | 
||
| 
 EXECUTION_ID_  | 
 执行实例ID  | 
 nvarchar(64)  | 
 √  | 
 执行的ID  | 
|
| 
 PROC_INST_ID_  | 
 流程实例ID  | 
 nvarchar(64)  | 
 √  | 
 流程实例ID  | 
|
| 
 TASK_ID_  | 
 节点实例ID  | 
 nvarchar(64)  | 
 √  | 
 节点实例ID(Local)  | 
|
| 
 BYTEARRAY_ID_  | 
 字节表ID  | 
 nvarchar(64)  | 
 √  | 
 字节表的ID (ACT_GE_BYTEARRAY)  | 
|
| 
 DOUBLE_  | 
 DOUBLE_  | 
 float  | 
 √  | 
 存储变量类型为Double  | 
|
| 
 LONG_  | 
 LONG_  | 
 numeric(19)  | 
 √  | 
 存储变量类型为long  | 
|
| 
 TEXT_  | 
 TEXT_  | 
 nvarchar(4000)  | 
 √  | 
 '存储变量值类型为String 如此处存储持久化对象时,值jpa对象的class  | 
|
| 
 TEXT2_  | 
 TEXT2_  | 
 nvarchar(4000)  | 
 √  | 
 此处存储的是JPA持久化对象时,才会有值。此值为对象ID  | 
索引说明
| 
 索引名称  | 
 组成字段名称  | 
 索引类型  | 
 索引说明  | 
| 
 PRIMARY  | 
 ID_  | 
 Unique  | 
 主键唯一索引  | 
| 
 ACT_IDX_VARIABLE_TASK_ID  | 
 TASK_ID_  | 
||
| 
 ACT_FK_VAR_EXE  | 
 EXECUTION_ID_  | 
||
| 
 ACT_FK_VAR_PROCINST  | 
 PROC_INST_ID_  | 
||
| 
 ACT_FK_VAR_BYTEARRAY  | 
 BYTEARRAY_ID_  | 
其他的表较简单,不写了。
数据库关系图:

参考:
http://blog.csdn.net/qq710262350/article/details/42079433
官网文档
Liferay7 BPM门户开发之7: Activiti中的重要概念和主要数据库结构的更多相关文章
- Liferay7 BPM门户开发之8: Activiti实用问题集合
		
1.如何实现审核的上级获取(任务逐级审批) 这个是必备功能,通过Spring的注入+Activiti表达式可以很容易解决. 可参考: http://blog.csdn.net/sunxing007/a ...
 - Liferay7 BPM门户开发之16: Liferay中用户\站点\组织架构\角色\用户组以及关联关系
		
用户 . 站点 . 组织架构 . 角色 . 用户组分别是:Users. Site. Organization. Role. UserGroups Users 用户是Liferay portal中的关键 ...
 - Liferay7 BPM门户开发之11: Activiti工作流程开发的一些统一规则和实现原理(完整版)
		
注意:以下规则是我为了规范流程的处理过程,不是Activiti公司的官方规定. 1.流程启动需要设置启动者,在Demo程序中,“启动者变量”名统一设置为initUserId 启动时要做的: ident ...
 - Liferay7 BPM门户开发之6: Activiti数据库换为mysql
		
第一步: 在mysql中创建数据库名字叫 'activiti' 执行D:\activiti-5.21.0\database\create下的脚本 第二步: 打开=> apache-tomcat/ ...
 - Liferay7 BPM门户开发之4: Activiti事件处理和监听Event handlers
		
事件机制从Activiti 5.15开始引入,这非常棒,他可以让你实现委托. 可以通过配置添加事件监听器,也可以通过Runtime API加入注册事件. 所有的事件参数子类型都来自org.activi ...
 - Liferay7 BPM门户开发之5: Activiti和Spring集成
		
参考文档: https://github.com/jbarrez/spring-boot-with-activiti-examplehttps://github.com/sxyx2008/spring ...
 - Liferay7 BPM门户开发之3: Activiti开发环境搭建
		
下载地址: http://activiti.org/download.html 源码: https://github.com/Activiti/Activiti 环境准备(检查项): JDK 1.7 ...
 - Liferay7 BPM门户开发之10: 通用流程实现从Servlet到Portlet(Part1)
		
开发目的: 实现通用流程自动化处理(即实现不需要hardcode代码的bpm统一处理后台,仅需要写少量前端html form代码和拖拽设计BPM定义) 既可独立运行或可依托于Liferay或依托其它门 ...
 - Liferay7 BPM门户开发之37: Liferay7下的OSGi Hook集成开发
		
hook开发是Liferay客制扩展的一种方式,比插件灵活,即可以扩展liferay门户,也能对原有特性进行更改,Liferay有许多内置的服务,比如用hook甚至可以覆盖Liferay服务. 可作为 ...
 
随机推荐
- 根据文件夹更改样本文件名小程序.py
			
#按照文件名设置标签并将其插入文件名中import osimport shutil#获取目标文件夹的路径a= r'C:\Users\yy\Desktop\tianchi大赛\guangdong_rou ...
 - discuz代码转为html代码
			
下面附件是来自discuz的一个函数文件(原来是在source/function/function_discuzcode.php位置),已稍微修改: https://files.cnblogs.com ...
 - cobbler的ks文件带有特殊字符导致错误
			
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAykAAACWAQMAAADg0FUUAAAAAXNSR0IArs4c6QAAAAZQTFRFq6urAA
 - ToolBar+Drawable实现一个好用的侧滑栏(侧边栏)和工具栏
			
先参考下ToolBar的使用和DrawableLayout的使用: 1.主界面布局,主要结构包含一个ToolBar和一个DrawableLayout,DrawableLayout里面有左侧边栏布局和主 ...
 - 【python原理解析】python中分片的实现原理及使用技巧
			
首先:说明什么是序列? 序列中的每一个元素都会被分配一个序号,即元素的位置,也称为索引:在python中的序列包含:字符串.列表和元组 然后是:什么是分片? 分片就是通过操作索引访问及获得序列的一个或 ...
 - 47-java 排列组合
			
import java.util.HashSet; public class Main1 { public static int ys = 0; public static int ys2 = 0; ...
 - Git-git push -u为何第二次不用指定-u?
			
1,如果当前分支只有一个追踪分支,那么主机名都可以省略,如:git push origin 将当前分支推送到origin主机的对应分支 2,$ git push 如果当前分支与多个主机存在追踪关系,那 ...
 - js 原型链与继承
			
var A = function(){ this.name="xiaoming"; } A.prototype.age=9; var a = new A(); console.lo ...
 - apache提示make_sock?
			
[root@localhost apache]# /etc/init.d/*_apache restart 停止 *_apache: [失败] 正在启动 *_apache:(98)Address al ...
 - service redis start
			
注意:需在redis-server所在目录执行