簡體   English   中英

如何從 Camunda 的任何流程點跳轉到事件?

[英]How to jump to the event from any process point in Camunda?

我有一個中等復雜性的 BPMN 流程,其中包含多個任務和網關。 BPMN 引擎與 Spring Boot 配合使用。

現在,我有以下任務:如果我收到對我的端點的請求,我需要觸發一個特殊的流程事件,無論流程目前處於哪個步驟。 我嘗試使用信號事件,但找不到允許我不在特定點上拋出事件,而是以編程方式拋出到特定流程實例(使用其執行 ID)的解決方案。

我想我需要一種來自 C++ 的goto運算符模擬或來自 Spring Boot 事件模型的@EventListener模擬,但不確定 Camunda 是否提供這樣的功能。

對此有何想法?

您可以為不同的“范圍”定義捕獲事件。 例如,可以將接收消息邊界事件附加到嵌入式子進程。 這樣,進程將准備好在嵌入式子進程的整個持續時間內接收消息,無論它當前處於哪個任務中。請參閱: https : //docs.camunda.org/manual/latest/reference/bpmn20/ subprocesses/embedded-subprocess/這些邊界事件可以是中斷的(嵌入式子流程)或非中斷的(來自單獨分支的新令牌)

另一種解決方案是使用基於事件的子流程。 這些可以放置在嵌入式子流程中以將它們限制在流程的定義范圍/部分,或者可以放置在父流程中,在那里它們充當“全局”事件處理程序。 請參閱: https : //docs.camunda.org/manual/latest/reference/bpmn20/subprocesses/event-subprocess/

一旦流程實例達到消息接收狀態,您就可以向流程實例發送消息(或信號)以影響其行為。 要將消息與眾多流程實例中的正確流程實例相匹配,您需要一個相關性標准。 最簡單和最好的解決方案是給每個流程實例一個唯一的業務密鑰(特殊流程數據)。 然后,可以將此業務密鑰用作消息 API 上的參數,以將消息與正確的流程實例相關聯。 請參閱: https : //docs.camunda.org/manual/latest/reference/rest/message/post-message/如果沒有可用的業務密鑰,則可以將流程數據(的組合)用作關聯標准。

暫無
暫無

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

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