版权声明:本文为博主原创文章,未经博主允许不得转载。不经过允许copy,讲追究法律责任,欢迎加入我们的学习提升群523988350,可以相互交流 https://blog.csdn.net/qq_30739519/article/details/89576348
本文讲解一下Incidents的使用。
Incidents
在Zeebe中,事件表示工作流执行中的问题。这意味着一个工作流实例在某个点上卡住了,需要用户交互来解决问题。
事件是在不同的情况下创建的,比如下面的几种情况。
- 作业失败,并且不再重试
- 无法应用输入或输出变量映射
- 无法评估条件
请注意,当代理发生意外异常(例如NullPointerException、OutOfMemoyError等)时,不会创建事件。
Resolving
为了解决事件,用户必须首先确定并解决问题。然后,用户将事件标记为已解决,代理将尝试继续执行工作流。如果问题仍然存在,则会创建新事件。
Resolving a Job-related Incident
如果一个作业失败,并且不再重试,则会创建一个事件。作业失败的原因可能不同,例如变量不是预期格式,或者服务不可用(例如数据库)。
如果是由变量引起的,用户需要首先更新工作流实例的变量。然后,用户需要增加作业的剩余重试次数,并将事件标记为已解决。
使用Java客户端,这看起来像:
client.newSetVariablesCommand(incident.getElementInstanceKey())
.variables(NEW_PAYLOAD)
.send()
.join();
client.newUpdateRetriesCommand(incident.getJobKey())
.retries(3)
.send()
.join();
client.newResolveIncidentCommand(incident.getKey())
.send()
.join();
事件解决后,定时器可以再次激活该作业。
Resolving a Workflow Instance-related Incident
如果事件是在工作流执行时创建的,并且与作业无关,则通常与工作流实例的变量相关。例如,不能应用输入或输出变量映射。
要解决事件,用户需要首先更新变量,然后将事件标记为已解决。
扫描二维码关注公众号,回复:
6213010 查看本文章
使用Java客户端,这看起来像:
client.newSetVariablesCommand(incident.getElementInstanceKey())
.variables(NEW_VARIABLES)
.send()
.join();
client.newResolveIncidentCommand(incident.getKey())
.send()
.join();
解决事件后,工作流实例将继续。
zeebe qq交流群群号:856546010