2017-07-18 74 views
1

讓我先解釋一下我將開發的應用程序。 ,我們有以下設置工作流程,在Camunda開發:使用Dockers設計應用程序和部署策略的體系結構需要幫助

  1. 全局子流程工作流像fetchImageAttributes, fetchFileAttributes,等...
  2. 文件傳輸工作流程。
  3. FileConverter工作流程。

Overview

文件傳輸工作流程使用全局子流程與呼叫活動任務的camunda的幫助下,同樣FileConverter工作流程還採用了子過程與呼叫活動任務的幫助。 全局進程是長時間運行的進程,因此無論何時任何子進程啓動,它都會在特定的兔子隊列中發送消息,並等待特定兔子隊列中的響應以使用接收任務恢復子進程。 FileTransfer工作流程& FileConverter工作流程可以獨立調用。我們在彈簧中創建了一個兔子隊列列表器,它將監聽各自工作流的特定隊列,並且無論何時在這些隊列中放入消息,工作流將被調用。

在開發過程中,所有三個工作流程將在單個tomcat實例中進行部署和測試,因此工作流程無需擔心。

現在計劃將使用docker將它們託管到雲端,計劃是在3個docker容器中託管這三個工作流程。

  • 容器1將包含全局子流程工作流程。
  • 容器2將包含FileTransfer工作流程。
  • 容器3將包含FileConverter工作流程。

所有三camunda工作流程將使用相同的數據庫來存儲特定的工作流程活動和變量。面對

挑戰:

  1. 由於文件傳輸工作流程& FileConverter工作流程都採用使用全局子過程調用活動,因爲它們不是在同一個運行時引擎可將失敗。我們應該使用Camunda Rest服務嗎?

爲了克服我認爲 部署計劃2以上挑戰:

  • 容器1將包含全球子流程工作流&文件傳輸工作流程。
  • 容器2將包含全局子流程工作流程& FileConverter工作流程。面對

挑戰:

  1. 由於全球子流程工作流存在於兩個集裝箱的可能場景中的文件傳輸工作流程的響應可能會通過,因爲全球子過程的FileConverter工作流程拉在聽同樣的兔子隊列在兩個容器中,因此它可能導致錯誤的地方找不到流程實例。

因此,如果任何人都可以幫助我建立一個更好的體系結構,或者任何在camunda中有良好經驗並在異構集羣中部署的人都可以指導我。

謝謝。

回答

1

你可以推斷,過程之間的溝通是如何實現的。由於您將部署分開,所以子流程/呼叫活動不是一種選擇。更好的方法是使用BPMN消息並在流程之間創建一個編排。如果您已經在使用兔子,您可以開發一個BPMN消息給兔子適配器並傳遞消息。

還有其他兩種方法用於連接系統:使用外部服務的任務

  • 採用一種新的方法

  • 相關問題