2014-02-23 64 views
1

,我在Acitivti 5.X與JBPM 5.X有何不同?

   Load Balancer 
        | 
------------------------------------------ 
|     |     | 
Node 1    Node 2    Node 3 
|     |     | 
------------------------------------------ 
        | 
       Common Database 

節點1,2和3此基礎場景將有一個流程引擎的自己的單實例。所有服務器都處於主動 - 主動配置,這意味着請求會以或多或少的循環方式路由到每個節點。

場景1 將請求路由到節點1,節點1啓動ID爲100的進程。Activiti立即將此狀態刷新到數據庫。另一個請求被路由到節點2,其中用戶可能想要在流程實例上執行具有相同標識的人工任務(例如批准),即100。雖然流程實例不在第二節點的內存中在這個特定的節點上查詢它將得到它的數據庫,加載它並允許用戶執行任務。所以沒有問題。 但是由於JBPM 5.4沒有立即將其狀態刷新到數據庫,這會導致問題。 對嗎?

情景2 這是製造商檢查方案。兩個檢查器分別登錄到節點1和節點2。第一個檢查員批准工作項目。第二個檢查員批准相同的工作項目。 Activti如何處理?。它會拋出一個異常,還是會以冪等的方式行事,並讓這兩個操作都成功? JBPM如何處理這個問題?

回答

1

希望這個答案不晚。

我們在集羣環境中使用活動,它在沒有做任何事情的情況下工作得很好。 從頭開始Activiti引擎可以在集羣模式下工作。 沒有額外的配置要完成。只需創建多個流程引擎(在機器上或多臺機器上不關心)並將它們連接到同一個數據庫。 連接到同一個數據庫的所有流程引擎彼此通信(使用數據庫)並自行處理。

另外Activiti文檔/論壇表示沒有特定的需求或工作要做,因爲即使在集羣應用程序上,活動本身也是線程安全的。 我們現在在生產中使用上述方法超過6個月,並且不存在任何問題。

在開始這個過程之前,您需要確認是否已經爲相同的ID(例如100)啓動了此過程。但是您也可以在工作流程中檢查並輸出已經處理完畢的錯誤。

工程就像一個魅力...