zeebe入门课程18-工作流生命周期5 Incidents(事件)

版权声明:本文为博主原创文章,未经博主允许不得转载。不经过允许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

猜你喜欢

转载自blog.csdn.net/qq_30739519/article/details/89576348