@Override public void connect() { try { final Field field = WSHumanTaskHandler.class.getDeclaredField("client"); TaskClient client = (TaskClient) field.get(this); if (client == null) { client = new TaskClient( new JMSTaskClientConnector( "org.jbpm.process.workitem.wsht.WSThroughJMSHumanTaskHandler", new JMSTaskClientHandler(SystemEventListenerFactory.getSystemEventListener()), WSHumanTaskJMSProperties.getInstance().getProperties(), new InitialContext(WSHumanTaskJMSProperties.getInstance().getProperties()))); field.set(this, client); boolean connected = client.connect(); if (!connected) { throw new IllegalArgumentException("Could not connect to the task client"); } } super.connect(); } catch (NoSuchFieldException e) { throw new RuntimeException("Problem configuring the human task connector", e); } catch (IllegalAccessException e) { throw new RuntimeException("Problem accessing the human task connector", e); } catch (NamingException e) { throw new RuntimeException("Problem accesing the JNDI directory", e); } }
@SuppressWarnings("unchecked") private void start() throws Exception { Properties conf = new Properties(); conf.setProperty("mail.smtp.host", "localhost"); conf.setProperty("mail.smtp.port", "2345"); conf.setProperty("from", "*****@*****.**"); conf.setProperty("replyTo", "*****@*****.**"); conf.setProperty("defaultLanguage", "en-UK"); SendIcal.initInstance(conf); // Use persistence.xml configuration emf = Persistence.createEntityManagerFactory("org.drools.task"); taskService = new TaskService(emf, SystemEventListenerFactory.getSystemEventListener()); MockUserInfo userInfo = new MockUserInfo(); taskService.setUserinfo(userInfo); Map<String, Object> vars = new HashMap(); Reader reader = new InputStreamReader(RunTaskService.class.getResourceAsStream("LoadUsers.mvel")); Map<String, User> users = (Map<String, User>) eval(reader, vars); reader = new InputStreamReader(RunTaskService.class.getResourceAsStream("LoadGroups.mvel")); Map<String, Group> groups = (Map<String, Group>) eval(reader, vars); taskService.addUsersAndGroups(users, groups); server = new MinaTaskServer(taskService); Thread thread = new Thread(server); thread.start(); Thread.sleep(500); System.out.println("Server started ..."); }
public static final void main(String[] args) { try { // load up the knowledge base KnowledgeBase kbase = readKnowledgeBase(); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newThreadedFileLogger(ksession, "test", 1000); HornetQHTWorkItemHandler hornetQHTWorkItemHandler = new HornetQHTWorkItemHandler(ksession); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", hornetQHTWorkItemHandler); // start a new process instance Map<String, Object> params = new HashMap<String, Object>(); params.put("employee", "krisv"); params.put("reason", "Yearly performance evaluation"); ksession.startProcess("com.sample.evaluation", params); SystemEventListenerFactory.setSystemEventListener(new SystemEventListener()); TaskService taskClient = new SyncTaskServiceWrapper(new AsyncHornetQTaskClient("EvaluationExample2-testClient")); taskClient.connect("127.0.0.1", 5153); Thread.sleep(1000); // "krisv" executes his own performance evaluation TaskSummary task1 = taskClient.getTasksAssignedAsPotentialOwner("krisv", "en-UK").get(0); System.out.println( "Krisv executing task " + task1.getName() + "(" + task1.getId() + ": " + task1.getDescription() + ")"); taskClient.start(task1.getId(), "krisv"); taskClient.complete(task1.getId(), "krisv", null); Thread.sleep(1000); // "john", part of the "PM" group, executes a performance evaluation List<String> groups = new ArrayList<String>(); groups.add("PM"); TaskSummary task2 = taskClient.getTasksAssignedAsPotentialOwner("john", groups, "en-UK").get(0); System.out.println( "John executing task " + task2.getName() + "(" + task2.getId() + ": " + task2.getDescription() + ")"); taskClient.claim(task2.getId(), "john", groups); taskClient.start(task2.getId(), "john"); taskClient.complete(task2.getId(), "john", null); Thread.sleep(1000); // "mary", part of the "HR" group, delegates a performance evaluation groups = new ArrayList<String>(); groups.add("HR"); TaskSummary task3 = taskClient.getTasksAssignedAsPotentialOwner("mary", groups, "en-UK").get(0); System.out.println( "Mary delegating task " + task3.getName() + "(" + task3.getId() + ": " + task3.getDescription() + ") to krisv"); taskClient.claim(task3.getId(), "mary", groups); taskClient.delegate(task3.getId(), "mary", "krisv"); // "administrator" delegates the task back to mary System.out.println("Administrator delegating task back to mary"); taskClient.delegate(task3.getId(), "Administrator", "mary"); Thread.sleep(1000); // mary executing the task TaskSummary task3b = taskClient.getTasksAssignedAsPotentialOwner("mary", "en-UK").get(0); System.out.println( "Mary executing task " + task3b.getName() + "(" + task3b.getId() + ": " + task3b.getDescription() + ")"); taskClient.start(task3b.getId(), "mary"); taskClient.complete(task3b.getId(), "mary", null); taskClient.disconnect(); hornetQHTWorkItemHandler.dispose(); Thread.sleep(1000); logger.close(); System.exit(0); } catch (Throwable t) { t.printStackTrace(); } }