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如何處理這個問題?