act_hi_identitylink
时间: 2023-05-01 15:02:44 浏览: 90
"act_hi_identitylink" 是 Activiti 流程引擎中的一个表,用于存储流程实例中的参与者信息,即链接到流程实例的用户或组。同时还会记录不同的 Participant Type,比如 candidate、assignee 等。例如,如果一个用户被指派为任务的候选人,则会在 act_hi_identitylink 表中为该任务记录一条记录。
相关问题
ACT_HI_IDENTITYLINK
ACT_HI_IDENTITYLINK是Activiti工作流引擎中的一个表,用于存储与流程实例相关的身份链接信息。它记录了与流程实例相关的用户、组和任务之间的关联关系。每个身份链接都包含以下字段:
- ID:身份链接的唯一标识符。
- GROUP_ID:关联的组的ID。
- TYPE:身份链接的类型,可以是"participant"(参与者)或"starter"(发起者)。
- USER_ID:关联的用户的ID。
- TASK_ID:关联的任务的ID。
- PROC_INST_ID:关联的流程实例的ID。
以下是一个示例查询ACT_HI_IDENTITYLINK表的SQL语句[^1]:
```sql
SELECT * FROM ACT_HI_IDENTITYLINK;
```
你还可以使用Activiti提供的Java API来查询ACT_HI_IDENTITYLINK表。以下是一个示例代码:
```java
import org.activiti.engine.HistoryService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.history.HistoricIdentityLink;
import org.activiti.engine.history.HistoricIdentityLinkQuery;
public class IdentityLinkQueryExample {
public static void main(String[] args) {
// 创建流程引擎
ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine();
// 获取历史服务
HistoryService historyService = processEngine.getHistoryService();
// 创建查询
HistoricIdentityLinkQuery query = historyService.createHistoricIdentityLinkQuery();
// 执行查询
List<HistoricIdentityLink> identityLinks = query.list();
// 输出结果
for (HistoricIdentityLink identityLink : identityLinks) {
System.out.println("ID: " + identityLink.getId());
System.out.println("Group ID: " + identityLink.getGroupId());
System.out.println("Type: " + identityLink.getType());
System.out.println("User ID: " + identityLink.getUserId());
System.out.println("Task ID: " + identityLink.getTaskId());
System.out.println("Process Instance ID: " + identityLink.getProcessInstanceId());
System.out.println("------------------------");
}
}
}
```
explain select count(0) from ( select distinct RES.ID_, RES.NAME_, ART.ASSIGNEE_, A0.TEXT_ as 'status', RES.START_TIME_, RES.END_TIME_, RES.BUSINESS_KEY_ from ACT_HI_PROCINST RES left outer join ACT_RE_PROCDEF DEF on RES.PROC_DEF_ID_ = DEF.ID_ inner join ACT_HI_VARINST A0 on RES.PROC_INST_ID_ = A0.PROC_INST_ID_ and a0.TASK_ID_ is null and A0.NAME_ = '@global_process_status' and A0.VAR_TYPE_ = 'integer' inner join ACT_HI_VARINST A1 on RES.PROC_INST_ID_ = A0.PROC_INST_ID_ and a0.TASK_ID_ is null and A1.NAME_ = '@process_form_structure' and A1.VAR_TYPE_ = 'string' left join ACT_RU_TASK ART on RES.ID_ = art.PROC_INST_ID_ where (exists ( select LINK.USER_ID_ from ACT_HI_IDENTITYLINK LINK where USER_ID_ in ("1") and LINK.PROC_INST_ID_ = RES.ID_))) table_count 怎么加索引生效
在这个查询中,需要对以下表的列添加索引:
- ACT_HI_PROCINST:ID_, START_TIME_, END_TIME_, PROC_DEF_ID_
- ACT_HI_VARINST:PROC_INST_ID_, NAME_, TASK_ID_, VAR_TYPE_
- ACT_RU_TASK:PROC_INST_ID_, ASSIGNEE_
你可以使用以下命令添加索引:
```sql
CREATE INDEX idx_act_hi_procinst_id ON ACT_HI_PROCINST (ID_);
CREATE INDEX idx_act_hi_procinst_start_time ON ACT_HI_PROCINST (START_TIME_);
CREATE INDEX idx_act_hi_procinst_end_time ON ACT_HI_PROCINST (END_TIME_);
CREATE INDEX idx_act_hi_procinst_proc_def_id ON ACT_HI_PROCINST (PROC_DEF_ID_);
CREATE INDEX idx_act_hi_varinst_proc_inst_id ON ACT_HI_VARINST (PROC_INST_ID_);
CREATE INDEX idx_act_hi_varinst_name ON ACT_HI_VARINST (NAME_);
CREATE INDEX idx_act_hi_varinst_task_id ON ACT_HI_VARINST (TASK_ID_);
CREATE INDEX idx_act_hi_varinst_var_type ON ACT_HI_VARINST (VAR_TYPE_);
CREATE INDEX idx_act_ru_task_proc_inst_id ON ACT_RU_TASK (PROC_INST_ID_);
CREATE INDEX idx_act_ru_task_assignee ON ACT_RU_TASK (ASSIGNEE_);
```
注意,添加索引可能会影响数据库的性能和空间消耗,因此需要根据具体情况进行权衡和测试。