天天看點

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)

分類,例如:

http://www.mossle.com/docs/activiti/

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

官網文檔