簡體   English   中英

長時間運行的activiti服務任務

[英]Long running activiti service task

我們在一個 activiti 過程中有很多自動化任務,這需要花費大量時間才能完成。 像 REST 調用外部系統或 JMS 消息發送和接收響應。

我可以使用兩個選項來做到這一點:

  1. 服務異步任務
  2. 發送 - 接收任務:這里我們可以有一個任務,它將以相關 ID 作為執行 ID 調用外部程序,然后進入下一步,這將是一個接收任務。 一旦我們從外部系統獲得響應,我們就可以向該過程發出信號。

有人可以驗證在活動中處理這個問題的正確方法或更好的方法嗎?

如果您可以控制接收器服務,您還可以使用中間消息事件來暫停執行,並讓外部(長期運行的)服務通過注入消息來釋放進程。

您的兩種方法各有優缺點

服務異步任務 - 我假設您建議將“暫停”邏輯保留在服務任務中,並簡單地阻止該任務,直到外部服務返回。 雖然這更簡潔並且將邏輯保留在服務任務實現中,但它不允許邊界計時器事件或其他 BPMN 錯誤/超時處理在服務超時時繼續處理流程。 當然,你可以拋出一個 BPMNError,它會冒泡,但它會使實際邏輯更難遵循。

發送接收任務 - 這假設您可以控制外部服務,因為它與我提到的使用中間消息事件的第三個選項非常相似。 我傾向於更喜歡這種方法,因為邏輯清晰明了。 但是,這確實意味着您必須有能力讓外部服務將某些內容“發送”回接收任務以推進流程。

無論哪種方式,這兩種選擇都有自己的位置,很大程度上取決於您的外部服務的性質。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM