Package com.wordpress.salaboy.smarttasks.server.jbpm5

Source Code of com.wordpress.salaboy.smarttasks.server.jbpm5.JBPM5TaskManager

package com.wordpress.salaboy.smarttasks.server.jbpm5;

import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.SystemEventListenerFactory;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderError;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.io.impl.ClassPathResource;
import org.drools.logger.KnowledgeRuntimeLogger;
import org.drools.logger.KnowledgeRuntimeLoggerFactory;
import org.drools.runtime.StatefulKnowledgeSession;
import org.jbpm.process.workitem.wsht.WSHumanTaskHandler;
import org.jbpm.task.User;
import org.jbpm.task.service.TaskServer;
import org.jbpm.task.service.TaskService;
import org.jbpm.task.service.TaskServiceSession;
import org.jbpm.task.service.mina.MinaTaskServer;

import com.wordpress.salaboy.smarttasks.server.SampleInstanceManager;

public class JBPM5TaskManager implements SampleInstanceManager {
  private KnowledgeRuntimeLogger logger;
  private StatefulKnowledgeSession ksession;
  private boolean running;
  private TaskServer taskServer;

  public JBPM5TaskManager() {
    this.running = false;
  }

  public void startService() {
    if (isRunning())
      throw new IllegalStateException("Server is already started");
    this.running = true;
    EntityManagerFactory entityManagerFactory = Persistence
        .createEntityManagerFactory("org.drools.task");
    TaskService taskService = new TaskService(entityManagerFactory,
        SystemEventListenerFactory.getSystemEventListener());
    TaskServiceSession taskSession = taskService.createSession();
    MockUserInfo userInfo = new MockUserInfo();
    taskService.setUserinfo(userInfo);

    for (String userName : getDefaultUsers()) {
      taskSession.addUser(new User(userName));
    }

    taskServer = new MinaTaskServer(taskService);
    Thread thread = new Thread(taskServer);
    thread.start();
  }

  public void startSampleInstance() {
    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory
        .newKnowledgeBuilder();

    kbuilder.add(new ClassPathResource("process/jbpm5/humanTask.bpmn"),
        ResourceType.BPMN2);
    System.out.println("Compiling resources");
    if (kbuilder.hasErrors()) {
      if (kbuilder.getErrors().size() > 0) {
        for (KnowledgeBuilderError error : kbuilder.getErrors()) {
          System.out.println("Error building kbase: "
              + error.getMessage());
        }
      }
      throw new RuntimeException("Error building kbase!");
    }

    KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
    kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());

    ksession = kbase.newStatefulKnowledgeSession();
    logger = KnowledgeRuntimeLoggerFactory.newConsoleLogger(ksession);
    ksession.getWorkItemManager().registerWorkItemHandler("Human Task",
        new WSHumanTaskHandler());
    ksession.startProcess("org.plugtree.training.jbpm.humantasks.client",
        null);

  }

  public void stopService() {
    if (!isRunning())
      return;
    try {
      taskServer.stop();
    } catch (Exception e) {
      throw new RuntimeException(e);
    }
  }

  public boolean isRunning() {
    return running;
  }

  private String[] getDefaultUsers() {
    return new String[] { "salaboy", "translator", "reviewer",
        "Administrator" };
  }

}
TOP

Related Classes of com.wordpress.salaboy.smarttasks.server.jbpm5.JBPM5TaskManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.