2012-01-31 61 views
0

我在工作流中擁有用戶任務。 我能夠處理人工任務,但流程沒有進一步轉發。 沒有任何例外,流程在那裏停止,用戶任務之後的其他任務沒有得到執行。jbpm5中用戶任務後未轉發的工作流

請在這方面幫助我。 1.是否需要對jbpm5.0進行任何配置更改? 2.還有什麼我想念的。

 KnowledgeBase kbase = readKnowledgeBase("taskprocess.rf"); 
     StatefulKnowledgeSession ksession = createKnowledgeSession(kbase); 

     /*Create the knowledge base for HelloProcss.bpmn */ 

     KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newThreadedFileLogger(ksession, "testlog", 1000); 
     CommandBasedWSHumanTaskHandler taskHandler = new CommandBasedWSHumanTaskHandler(ksession); 
     ksession.getWorkItemManager().registerWorkItemHandler("Human Task", taskHandler); 
     //JPAWorkingMemoryDbLogger logger = new JPAWorkingMemoryDbLogger(ksession); 
     //taskHandler.connect(); 

     System.out.println(" started the humantask"); 
     ksession.startProcess("persistask");  
     ksession.fireAllRules(); 

回答

0

我們需要在「TaskServiceSession」

  taskSession.addUser(new User("administrator")); 

添加用戶名管理員有了這個工作流程的進展,並且用戶在任務完成後完成剩餘的任務。 您必須具有管理員角色才能運行任何進程。這是一個要求

+0

即使admininstrator用戶已經存在於數據庫中,這是否仍然需要? – user325643 2012-12-17 20:27:49

1

這是怎麼回事,因爲註冊人的任務處理線程死亡(ksession.getWorkItemManager()registerWorkItemHandler(「人工任務」,taskHandler);) 你需要有人工任務處理全局會話附上監聽任務完成通知的人工任務組件。

乾杯

+0

感謝krish和salaboy.I瞭解這個問題,但仍然無法找到如何創建一個全球ksession與人類任務處理程序偵聽通知。如果我得到一些例子,會有很大的幫助。 – 2012-02-02 10:51:44

+0

我們需要在「TaskServiceSession」添加用戶名管理員 'taskSession.addUser(新用戶(「管理員」));' 有了這個工作流程的進展,並且用戶在任務完成後完成剩餘的任務。 但我懷疑它是一個錯誤還是必須有管理員的邏輯。 – 2012-02-07 13:34:28

+1

您必須具有管理員角色才能運行任何進程。這是一個要求。 – salaboy 2012-02-08 11:49:49

0

你能否澄清你是如何完成任務,您使用的例如Eclipse或基於Web的客戶端?在開始這個過程之後,你的主類會發生什麼,它會終止嗎?在這種情況下,Salaboy可能是正確的,因爲在完成任務之前創建任務和執行進程的線程可能已經死亡,所以它不會繼續執行。

在主類中添加一個長Thread.sleep可能會允許您繼續執行測試。

相關問題