项目实践工作流之Activiti学习(二十五)

2023-11-06 17:31:38 浏览数 (2)

1.5查询流程实例

流程在运行过程中可以查询流程实例的状态,当前运行结点等信息。

代码语言:javascript复制
@Test
public void queryProcessInstance() {
// 流程定义key
String processDefinitionKey = "holiday";
// 获取RunTimeService
RuntimeService runtimeService = processEngine.getRuntimeService();
List<ProcessInstance> list = runtimeService
.createProcessInstanceQuery()
.processDefinitionKey(processDefinitionKey)//
.list();
for (ProcessInstance processInstance : list) {
System.out.println("----------------------------");
System.out.println("流程实例id:"
  processInstance.getProcessInstanceId());
System.out.println("所属流程定义id:"
  processInstance.getProcessDefinitionId());
System.out.println("是否执行完成:"   processInstance.isEnded());
System.out.println("是否暂停:"   processInstance.isSuspended());
System.out.println(" 当 前 活 动 标 识 : "   
processInstance.getActivityId());
}
}

1.5.1关联 businessKey

需求:

在 activiti 实际应用时,查询流程实例列表时可能要显示出业务系统的一些相关信息,比如:查询当前运行的请假流程列表需要将请假单名称、请假天数等信息显示出来,请假天数等信息在业务系统中存在,而并没有在 activiti 数据库中存在,所以是无法通过 activiti 的 api 查询到请假天数等信息。

实现:

在查询流程实例时,通过 businessKey(业务标识 )关联查询业务系统的请假单表,查询出请假天数等信息。

通过下面的代码就可以获取 activiti 中所对应实例保存的业务 Key。而这个业务 Key 一般都会保存相关联的业务操作表的主键,再通过主键 ID 去查询业务信息,比如通过请假单的 ID,去查询更多的请假信息(请假人,请假时间,请假天数,请假事由等)

String businessKey = processInstance.getBusinessKey();

在 activiti 的 act_ru_execution 表,字段 BUSINESS_KEY 就是存放业务 KEY 的。

0 人点赞