2012-11-07 25 views
3

我正在嘗試開發一個應用程序drools,如何在drools中的java程序中獲取演員ID?

我的​​文件如下圖所示。

enter image description here

對於用戶的任務,我已經設置了演員的名字爲"MyName"

現在我讀此文件中的規則,我java program.

我想name of actor

我怎麼能得到演員的名字?

我的Java代碼:

 TaskServiceSession taskSession = taskService.createSession(); 

     MinaTaskServer server = new MinaTaskServer(taskService); 
     Thread thread = new Thread(server); 
     thread.start(); 
     StatefulKnowledgeSession ksession = knowledgeBase.newStatefulKnowledgeSession(); 
     HumanTaskHandler handler1 = new HumanTaskHandler(); 

     ksession.getWorkItemManager().registerWorkItemHandler("Log", handler1); 
     WSHumanTaskHandler handler = new WSHumanTaskHandler(); 

     ksession.getWorkItemManager().registerWorkItemHandler("Human Task", handler); 

     KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test"); 
     // start a new process instance 
     ksession.startProcess("HumanTaskSample"); 

回答

1

你的處理器(HumanTaskHandler)將被稱爲每當一個任務需要創建。無論什麼時候調用它,都可以從作爲參數傳遞的工作項中獲取所有必要的信息。因此,要獲得演員ID(S),你可以使用:

public class HumanTaskHandler implements WorkItemHandler { 
    public void executeWorkItem(WorkItem workItem, WorkItemManager manager) { 
    String actorId = (String) workItem.getParameter("ActorId"); 
    .... 
    } 
    ... 
} 

需要注意的是,根據您的要求,也有越來越的任務,以及其他一些方式。例如,在調用startProcess(..)之後,可以使用返回的ProcessInstance訪問創建的任務的任務ID,然後從任務服務獲取完整詳細信息。您還可以向任務服務查詢分配給特定用戶或組的任何任務。或者使用一些日誌記錄來確定在調用startProcess(..)期間發生了什麼。

克里斯

相關問題