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 に答える