长期活动服务任务

问题描述 投票:0回答:1

我们在激活过程中有很多自动化任务,这需要大量时间才能完成。像对外部系统的REST调用或JMS消息发送和接收响应。

我可以使用两个选项:

  1. 服务异步任务
  2. 发送-接收任务:这里我们可以有一个任务,该任务将调用关联ID为执行ID的外部程序,然后转到下一步,即接收任务。一旦我们从外部系统得到响应,就可以向该过程发出信号。

有人可以验证在活动中处理此问题的正确方法或任何更好的方法。

java activiti
1个回答
0
投票

如果您可以控制接收器服务,也可以使用中间消息事件来暂停执行,并通过注入消息使外部(长期运行)服务释放该过程。

您的两种方法各有优缺点

服务异步任务-我假设您打算将“暂停”逻辑保留在服务任务中,并只是阻塞该任务,直到外部服务恢复。尽管这比较整洁,并且将逻辑保留在服务任务实现中,但是如果服务超时,则不允许边界计时器事件或其他BPMN错误/超时处理继续进行该过程。当然,您可以抛出一个BPMNError,它将冒泡,但是这会使实际逻辑更难理解。

发送-接收任务-这假定您可以控制外部服务,因为它与我提到的使用中间消息事件的第三个选项非常相似。我倾向于采用这种方法,因为其逻辑清晰明了。但是,这确实意味着您必须具有外部服务的能力,才能将某些东西“发送”回接收任务以继续执行流程。

无论哪种方式,这两种选择都有其位置,并且在很大程度上取决于外部服务的性质。

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.