ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Flowable入门系列文章5-JavaDelegate和历史数据

2021-09-25 13:35:05  阅读:550  来源: 互联网

标签:BPMN Flowable JavaDelegate flowable org 历史数据 2.0


1、编写JavaDelegate

还有最后一块难题还没有完成:我们还没有实现自动逻辑,当请求被批准时,这些自动逻辑就会被执行。在BPMN 2.0 XML中,这是一个服务任务,它看起来像:

<serviceTask id="externalSystemCall" name="Enter holidays in external system"
flowable:class="org.flowable.CallExternalSystemDelegate"/>

实际上,这个逻辑可以是任何东西,从用HTTP REST调用一个服务到执行一些传统的代码调用到一个组织几十年来一直使用的系统。我们不会在这里实现实际的逻辑,只是记录处理。

创建一个新的类(文件→新建→在Eclipse中的类),填写org.flowable作为包名称和CallExternalSystemDelegate类名称。使该类实现org.flowable.engine.delegate.JavaDelegate接口并实现execute方法:

package org.flowable;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
public class CallExternalSystemDelegate implements JavaDelegate {
	public void execute(DelegateExecution execution) {
		System.out.println("Calling the external system for employee " + execution.getVariable("employee"));
	}
}

当执行到达服务任务时,实例化并调用在BPMN 2.0 XML中引用的类。

现在运行示例时,将显示日志消息,显示确实执行了自定义逻辑:
在这里插入图片描述

2、使用历史数据

选择使用流程引擎(如Flowable)的众多原因之一是因为它会自动存储所有流程实例的审计数据或历史数据。通过这些数据,您可以创建丰富的报告,深入了解组织的工作方式,瓶颈位置等。

例如,假设我们想要显示迄今为止执行的流程实例的持续时间。为此,我们 从ProcessEngine获取HistoryService,并为历史活动创建一个查询。在下面的代码片段中,您可以看到我们添加了一些额外的过滤:

  • 只有一个特定流程实例的活动
  • 只有已完成的活动

结果也按结束时间排序,这意味着我们将按执行顺序进行排序。

HistoryService historyService = processEngine.getHistoryService();
List<HistoricActivityInstance> activities =
historyService.createHistoricActivityInstanceQuery()
.processInstanceId(processInstance.getId())
.finished()
.orderByHistoricActivityInstanceEndTime().asc()
.list();
for (HistoricActivityInstance activity : activities) {
System.out.println(activity.getActivityId() + " took "
+ activity.getDurationInMillis() + " milliseconds");
}

再次运行示例,我们现在在控制台中看到类似这样的内容:

startEvent花了1毫秒
approveTask耗时2638毫秒
决定花了3毫秒
externalSystemCall花了1毫秒

3、总结

本教程介绍了各种Flowable和BPMN 2.0的概念和术语,同时还演示了如何以编程方式使用Flowable API。

当然,这只是旅程的开始。以下部分将深入探讨Flowable引擎支持的许多选项和功能。其他章节将介绍Flowable引擎可以设置和使用的各种方式,并详细描述所有可能的BPMN 2.0构造。

上面文章来自盘古BPM研究院:http://vue.pangubpm.com/
文章翻译提交:https://github.com/qiudaoke/flowable-userguide
了解更多文章可以关注微信公众号:
在这里插入图片描述

标签:BPMN,Flowable,JavaDelegate,flowable,org,历史数据,2.0
来源: https://blog.csdn.net/qq_30739519/article/details/120452940

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有