繁体   English   中英

我如何在drools的java程序中获取actor id?

[英]How i can get the actor id in my java program in drools?

我正在尝试开发drools的应用程序,

我的rf文件是下图所示的图像。

在此输入图像描述

对于用户任务,我将actor名称设置为"MyName"

现在我正在我的java program.读取此文件中的规则java program.

我想要name of actorname 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"); 

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

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

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

短剑的一种

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM