我有一個Activiti工作流程,其中包含一個ReceiveTask我在哪裏分組任務。我有一個Listener在ReceiveTask的事件開始處觸發,我在此檢查新添加的任務的屬性,以查看具有相同屬性的其他人是否在ReceiveTask中。如果是的話,那麼我想引發他們全部進入下一步。Trigger Activiti工作流程任務坐在ReceiveTask循環
<receiveTask id="IssuePost" name="Issue Post">
<extensionElements>
<activiti:executionListener event="start" delegateExpression="${IssuePost}"></activiti:executionListener>
</extensionElements>
</receiveTask>
當任務移動到ReceiveTask時,我的Java偵聽器類IssuePost被調用。我可以看到其他任務列表中的ReceiveTask。我遇到了觸發任務轉移到工作流程下一步的問題。在任務中調用「signal」時,我會陷入循環。 IssuePost監聽器繼續在無限循環中觸發,直到Alfresco/Activiti放棄並拋出異常。
List<NodeRef> siblingNodes = searchService.selectNodes(parent, xpath, null, namespacePrefixResolver, false);
if(siblingNodes.size() == batchCount)
{
for(int i=0; i < siblingNodes.size(); i++)
{
List<WorkflowInstance> workflows = workflowService.getWorkflowsForContent(siblingNodes.get(i), true);
// this line causes the loop.
workflowService.signal(workflows.get(0).getId(), null);
我怎麼能信號在ReceiveTask的任務移動到工作流程中的下一個步驟,而不會觸發我的聽衆?只有一個流程從ReceiveTask流向工作流中的下一個步驟。
謝謝。任何想法'endTask'實際上做了什麼? javadoc的評論有點欠缺。我不需要填寫下一個轉換,因爲當前工作流節點只有一條路徑。好像我需要在調試中運行整個Alfresco服務才能看到發生了什麼。在我看來,我試圖完成的是一項基本的操作。 – MonkeyWrench 2013-04-03 17:17:02
是的,我知道,自從JBPM以來變得越來越困難。在這種情況下,你可以從執行中獲得當前的任務並結束它。 結束只是意味着完成任務(單擊下一個UI),因此在進行多次轉換時,更多地進行轉換。所以我認爲如果你實現上面的代碼,這是默認代碼,它應該工作。 – 2013-04-04 12:03:57
這看起來像一個Activit交易問題。該任務在事務內部移動到工作流中的接收任務中。調用「信號」以某種方式打破了這一點。 – MonkeyWrench 2013-04-04 17:38:32