返回介绍

11.1. 查询历史

发布于 2023-09-17 23:40:35 字数 3446 浏览 0 评论 0 收藏 0

可以使用HistoryServiceAPI提供的createHistoricProcessInstanceQuery()createHistoricVariableInstanceQuery()createHistoricActivityInstanceQuery()getHistoricIdentityLinksForTask()getHistoricIdentityLinksForProcessInstance()createHistoricDetailQuery()createHistoricTaskInstanceQuery()方法,查询全部6种历史实体。

下面用一些例子展示历史查询API的部分用法。可以在javadocorg.flowable.engine.history包中找到全部用法。

11.1.1. 历史流程实例查询

获取所有流程中,完成所花费时间(持续时间)排名前10的、流程定义为XXX的、已完成的HistoricProcessInstances(历史流程实例)

historyService.createHistoricProcessInstanceQuery()
  .finished()
  .processDefinitionId("XXX")
  .orderByProcessInstanceDuration().desc()
  .listPage(0, 10);

11.1.2. 历史变量实例查询

获取已完成的、id为’XXX’的流程实例中,所有的HistoricVariableInstances(历史变量实例),并以变量名排序。

historyService.createHistoricVariableInstanceQuery()
  .processInstanceId("XXX")
  .orderByVariableName.desc()
  .list();

11.1.3. 历史活动实例查询

获取最新的、已完成的、流程定义的id为XXX的、服务任务类型的HistoricActivityInstance(历史活动实例)

historyService.createHistoricActivityInstanceQuery()
  .activityType("serviceTask")
  .processDefinitionId("XXX")
  .finished()
  .orderByHistoricActivityInstanceEndTime().desc()
  .listPage(0, 1);

11.1.4. 历史详情查询

下面的的例子获取id为123的流程中所有的变量更新记录。这个查询只会返回HistoricVariableUpdate(历史变量更新)。请注意一个变量名可能会有多个HistoricVariableUpdate实体,这代表了流程中的每一次变量更新。可以使用orderByTime(按变量更新的时间)orderByVariableRevision(按变量更新的版本号)对这些更新记录进行排序。

historyService.createHistoricDetailQuery()
  .variableUpdates()
  .processInstanceId("123")
  .orderByVariableName().asc()
  .list()

下面的例子获取流程id为"123"的、启动时提交或任何任务中提交的所有表单参数。这个查询只会返回HistoricFormProperties(历史表单参数)

historyService.createHistoricDetailQuery()
  .formProperties()
  .processInstanceId("123")
  .orderByVariableName().asc()
  .list()

最后一个例子获取id为"123"的任务进行的所有变量更新操作。将返回该任务设置的所有变量(任务局部变量)的HistoricVariableUpdates,而不会返回流程实例中设置的变量。

historyService.createHistoricDetailQuery()
  .variableUpdates()
  .taskId("123")
  .orderByVariableName().asc()
  .list()

可以在TaskListener中使用TaskServiceDelegateTask设置任务局部变量:

taskService.setVariableLocal("123", "myVariable", "Variable value");
public void notify(DelegateTask delegateTask) {
  delegateTask.setVariableLocal("myVariable", "Variable value");
}

11.1.5. 历史任务实例查询

获取所有任务中,完成所花费时间(持续时间)排名前10的、已完成的HistoricTaskInstance(历史任务实例)

historyService.createHistoricTaskInstanceQuery()
  .finished()
  .orderByHistoricTaskInstanceDuration().desc()
  .listPage(0, 10);

获取删除原因包含"invalid"的、最终指派给kermit用户的HistoricTaskInstance

historyService.createHistoricTaskInstanceQuery()
  .finished()
  .taskDeleteReasonLike("%invalid%")
  .taskAssignee("kermit")
  .listPage(0, 10);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文