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" : 1, "key" : "oneTaskProcess", "category" : "Examples", "suspended" : false, "name" : "The One Task Process", "description" : "This is a process for testing purposes", "deploymentId" : "2", "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":"7", "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
官网文档
目前维护的开源产品:https://gitee.com/475660