[jboss-user] [jBPM] - Re: Message Event (throw and catch problem)
krishanps
do-not-reply at jboss.com
Wed Dec 28 11:04:51 EST 2011
krishanps [http://community.jboss.org/people/krishanps] created the discussion
"Re: Message Event (throw and catch problem)"
To view the discussion, visit: http://community.jboss.org/message/643600#643600
--------------------------------------------------------------
Yes, of course. So I just give a reference to ksession from the main-method to the implemented MessageEventSendTaskHandler.java. So I can use it to call a signalEvent to initiate the message catch event.
My implementation changes:
|| **.java
* ||
| 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();
}
} |
The Implemented SendTaskHandler.java
|| *MessageEventSendTaskHandler.java* ||
| public class MessageEventSendTaskHandler implements WorkItemHandler {
private StatefulKnowledgeSession ksession;
private long processInstanceID;
public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
String message = (String) workItem.getParameter("Message");
System.out.println("Die gesendete Nachricht: " + message);
//starts Message Catch Event
getStatefulKnowledgeSession().signalEvent("Message-_8_Message", "hi", getStatefulKnowledgeSession().getProcessInstance(1).getId());
manager.completeWorkItem(workItem.getId(), null);
}
public void setStatefulKnowledgeSession(StatefulKnowledgeSession ksession){
this.ksession = ksession;
}
public StatefulKnowledgeSession getStatefulKnowledgeSession(){
return this.ksession;
}
} |
If you have questions feel free to post your questions :-)
--------------------------------------------------------------
Reply to this message by going to Community
[http://community.jboss.org/message/643600#643600]
Start a new discussion in jBPM at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20111228/539b1013/attachment.html
More information about the jboss-user
mailing list