public static final void main(String[] args) { try { // load up the knowledge base KnowledgeBase kbase = readKnowledgeBase(); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); //creates an own SendTaskHandler to work on the same ksession to initiate a message event catch call MessageSendTaskHandler msgSendTaskHandler = new MessageEventSendTaskHandler(); msgSendTaskHandler.setStatefulKnowledgeSession(ksession); KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test"); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new DoNothingWorkItemHandler()); ksession.getWorkItemManager().registerWorkItemHandler("Send Task", msgSendTaskHandler); Map<String, Object> params = new HashMap<String, Object>(); params.put("x", "MyValue"); params.put("y", "OtherValue"); // start a new process instance ProcessInstance processInstance = ksession.startProcess("IntermediateCatchEvent", params); logger.close(); } catch (Throwable t) { t.printStackTrace(); } } private static KnowledgeBase readKnowledgeBase() throws Exception { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newClassPathResource("BPMN2-IntermediateCatchEventMessage.bpmn2"), ResourceType.BPMN2); return kbuilder.newKnowledgeBase(); } } |