3

我正在尝试开发一个应用程序drools

我的rf文件如下图所示。

在此处输入图像描述

对于用户任务,我将演员名称设置为"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"); 
4

1 回答 1

1

每当需要创建任务时,都会调用您的处理程序 (HumanTaskHandler)。无论何时调用它,您都可以从作为参数传递的工作项中获取所有必要的信息。因此,要获取演员 ID,您可以使用:

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

请注意,根据您的要求,还有其他一些方法可以完成任务。例如,在调用 startProcess(..) 之后,您可以使用返回的 ProcessInstance 来访问已创建任务的任务 ID,然后从任务服务中获取完整的详细信息。您还可以在任务服务中查询分配给特定用户或组的任何任务。或者使用一些日志记录来确定在调用 startProcess(..) 期间发生了什么。

克里斯

于 2012-11-12T04:18:56.070 回答