2016-11-21 80 views
1

我需要檢索Camunda BPM DelegateListeners和TaskListeners通知方法內的processInstance的已分配和未分配UserTasks的數量。檢索Camunda監聽器中已分配和未分配的UserTasks的數量

從任務查詢獲取值是沒有問題的,但只包含事務範圍。是否有機會在偵聽器通知方法內部也檢索這些值 - 因此也適用於緩存範圍。我已經嘗試將任務查詢與緩存範圍結合起來(例如,通過在TaskListener「分配」事件上增加assignedTaskCount),但很難使事務和緩存範圍同步。

也許有一個可能的解決方案,通過ActivityInstance的過程(像做here由於其他原因) - 但我無法找出是否和如何。對我來說會非常有幫助。

目前,我使用流程變量來存儲分配任務和未分配任務的集合,我更新了流程事件 - 但我寧願避免它。

PS:我用事務範圍任期承諾Camunda狀態和兩個Camunda之間的緩存範圍項,爲國家提交。不知道這是否是正確的術語 - 但我認爲我在某處讀過它。

+0

不知道你指的是哪個類,你總是可以調用BPMPlatform.getProcessEngine()來獲取流程引擎並執行查詢 – webjockey

+0

@webjockey是的我有'DelegateTask '或'DelegateExecution'實例可用。但正如我所說的,查詢不能提供完整的答案,因爲結果不包括上次Camunda提交(我稱爲_cached_狀態)後的「狀態」。 – FrVaBe

+0

在調用委託的服務任務中使用asyncBefore提交事務。服務任務將在異步繼續的幫助下執行。請參閱文檔https://docs.camunda.org/manual/7.5/user-guide/process-engine/transactions-in-processes/#asynchronous-continuations – Zelldon

回答

1

Camunda在事務邊界之間進行批量更新;它甚至可能決定在過程結束時更新提交。活動之後/之前有一個屬性異步;嘗試這些,看看交易是否很快承諾

+0

謝謝。爲了達到我的目標,我寧願不改變交易行爲。但在其他情況下,這可能是一個解決方案。因此+1。 – FrVaBe