一、概述
act_ge_property 表是 Activiti 引擎的核心數據表之一,主要用於存儲引擎的屬性配置信息,例如資料庫版本號、對於流程和任務的編號生成方式、查詢方言、歷史數據清理策略等等。
act_ge_property 表是 Activiti 引擎的公共配置表,全局唯一。
二、Schema
表結構
+-----------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------+--------------+------+-----+---------+-------+ | NAME_ | varchar(255) | NO | PRI | NULL | | | REV_ | int(11) | NO | | NULL | | | VALUE_ | varchar(255) | YES | | NULL | | | VALUE_BLOB_ | blob | YES | | NULL | | | DEPLOYMENT_ID_ | varchar(64) | YES | | NULL | | +-----------------+--------------+------+-----+---------+-------+
欄位說明
NAME_:
該屬性的名稱。名字必須在 Activiti 引擎中唯一。在代碼中,使用該屬性必須 specified by a static field ,最好在類開頭定義。
REV_ :
版本號,每當更改 VALUE_ 或 VALUE_BLOB_ 時增加。可避免並發更新此值的問題,同時也使在數據遷移期間將屬性更改為會產生新版本的屬性(具有不同的元版本)變得可能。Rev 值遵循規則:2 REV 值相同的屬性必須具有相同的值。
DEPLOYMENT_ID_:
引用的部署,該屬性與特定部署相關聯。例如,查詢方言可能會有不同的部署。為了與實際部署相關的屬性,一個實例必須與部署關聯。如果特定屬性屬於特定部署,則此列將包含指向確切部署的指針。如果該屬性為全局配置,則該列將顯式設為空。
VALUE_:
屬性值。如果數據太大,則在VALUE_BLOB_列中存儲。
VALUE_BLOB_:
大冗長 / 二進位值的透明存儲機制。例如,這是 XML 的嵌入式模型數據。
三、數據字典清單
下面,我們來逐一解析每個數據字典:
1. NAME_
描述
該屬性的名稱。
取值範圍
varchar(255)
是否唯一
是
是否可以為空:
否
示例
public static final String DB_SCHEMA_UPDATE = "schema.update"; public static final String DB_SCHEMA_UPDATE_HISTORY = "schema.history"; public static final String PROCESS_DEFINITIONS_CACHE = "process.definitions.cache"; ...
2. REV_
描述
版本號。
取值範圍
int(11)
是否唯一
否
是否可以為空
否
示例
int DATABASE_SCHEMA_UPDATE_VERSION = 7; int ACTIVITI_VERSION_MAJOR = 7; int ACTIVITI_VERSION_MINOR = 0; ...
3. VALUE_
描述
屬性值。
取值範圍
varchar(255)
是否唯一
否
是否可以為空
是
示例
updateSchema() createSchema() selectOneTaskVariable() ...
4. VALUE_BLOB_
描述
大冗長/二進位值的透明存儲機制。
取值範圍
blob
是否唯一
否
是否可以為空
是
示例
暫無示例。
5. DEPLOYMENT_ID_
描述
引用的部署。
取值範圍
varchar(64)
是否唯一
否
是否可以為空
是
示例
DeploymentBuilder deploymentBuilder = repositoryService.createDeployment().addClasspathResource("processes/myProcess.bpmn").deploymentProperty("deploymentName", "deploymentOne");
四、常見用法
1. 查詢資料庫版本信息
查詢之前,要先獲取到ProcessEngine對象:
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
通過ProcessEngine對象獲取到RepositoryService對象,並調用getRepositoryService對象中的getProperties方法獲取act_ge_property表中的資料庫版本信息。
RepositoryService repositoryService = processEngine.getRepositoryService(); List properties = repositoryService.getDeploymentProperties("", DATABASE_TYPE_PROPERTY);
2. 查詢任務表中一個任務屬性的值
查詢之前,要先獲取到ProcessEngine對象:
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
通過ProcessEngine對象獲取到TaskService對象,並調用getVariable方法獲取act_ge_property表中的任務屬性對應的值。
TaskService taskService = processEngine.getTaskService(); String businessKey = (String) taskService.getVariable(taskId, "businessKey");
3. 更新任務表中一個任務屬性的值
更新之前,要先獲取到ProcessEngine對象:
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
通過ProcessEngine對象獲取到TaskService對象,並調用setVariable方法更新act_ge_property表中的任務屬性對應的值。
TaskService taskService = processEngine.getTaskService(); taskService.setVariable(taskId, "businessKey", "newBusinessKey");
五、總結
在 Activiti 的架構里,act_ge_property 表是非常重要的一張表。我們可以通過 act_ge_property 表存儲引擎的屬性配置信息,例如資料庫版本號、對於流程和任務的編號生成方式、查詢方言、歷史數據清理策略等等。
通過本文的介紹,我們了解了 act_ge_property 表的含義、結構和常見用法,這對需要使用 Activiti 引擎進行開發的開發者來說是非常有幫助的。
原創文章,作者:UTPU,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/134871.html