[jboss-user] [jBPM] - Re: How to access a processInstance within a work item

Tobias Wittur do-not-reply at jboss.com
Mon Aug 29 00:39:37 EDT 2011


Tobias Wittur [http://community.jboss.org/people/tob1as] created the discussion

"Re: How to access a processInstance within a work item"

To view the discussion, visit: http://community.jboss.org/message/623389#623389

--------------------------------------------------------------
Thanks Tihomir.

Here some example code.

processTest.java

> package TestingBPMN;
> 
> import java.util.HashMap;
> import java.util.Map;
> 
> import org.drools.KnowledgeBase;
> import org.drools.builder.KnowledgeBuilder;
> import org.drools.builder.KnowledgeBuilderFactory;
> import org.drools.builder.ResourceType;
> import org.drools.io.ResourceFactory;
> import org.drools.logger.KnowledgeRuntimeLogger;
> import org.drools.logger.KnowledgeRuntimeLoggerFactory;
> import org.drools.runtime.StatefulKnowledgeSession;
> import org.drools.runtime.process.WorkflowProcessInstance;
> import org.jbpm.process.workitem.wsht.WSHumanTaskHandler;
> import org.jbpm.bpmn2.handler.SendTaskHandler;
> import org.jbpm.bpmn2.handler.ServiceTaskHandler;
> /**
>  * This is a sample file to launch a process.
>  */
> public class ProcessTest {
> 
>     public static final void main(String[] args) {
>         try {
> 
>             KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
>             kbuilder.add(ResourceFactory.newClassPathResource("TestingBPMN/TestingBPMN2.bpmn2"), ResourceType.BPMN2);
>             KnowledgeBase kbase = kbuilder.newKnowledgeBase();
> 
>             StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
> 
>             /*
>              * Register work item handlers
>              * 
>              */
>             ksession.getWorkItemManager().registerWorkItemHandler(
>                      "Service Task", 
>                      //Pass session into work item handler
>                      new CustomerServiceTaskHandler(ksession)
>             );
>             ksession.getWorkItemManager().registerWorkItemHandler(
>                     "Send Task", 
>                     new CustomSendTaskHandler()
>             );
> 
>             /*
>              * Create parameters
>              */
>             HashMap<String, String> m = new HashMap<String, String>();
>             m.put("name", "Karsten");
>             m.put("request", "test");
> 
>             /*
>              * Message based process start passing values
>              */
> 
>             ksession.signalEvent("Message-StartProcessMessage", m);
>             ksession.signalEvent("Message-StartProcessMessage", m);
>             ksession.signalEvent("Message-StartProcessMessage", m);
>             ksession.signalEvent("Message-StartProcessMessage", m);
>             ksession.signalEvent("Message-StartProcessMessage", m);
> 
> 
>         } catch (Throwable t) {
>             t.printStackTrace();
>         }
>     }
> 

CustomerServiceTaskHandler.java
> package TestingBPMN;
> 
> import java.lang.reflect.InvocationTargetException;
> import java.lang.reflect.Method;
> import java.util.HashMap;
> import java.util.Map;
> 
> import org.drools.runtime.StatefulKnowledgeSession;
> import org.drools.runtime.process.WorkItem;
> import org.drools.runtime.process.WorkItemHandler;
> import org.drools.runtime.process.WorkItemManager;
> import org.drools.runtime.process.ProcessInstance;
> /*
>  *  https://github.com/droolsjbpm/jbpm/blob/master/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/handler/ServiceTaskHandler.java https://github.com/droolsjbpm/jbpm/blob/master/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/handler/ServiceTaskHandler.java
>  * 
>  */
> public class CustomerServiceTaskHandler implements WorkItemHandler {
>     private StatefulKnowledgeSession ksession = null;
>     public CustomerServiceTaskHandler(StatefulKnowledgeSession ksession) {
>         this.ksession = ksession;
>     }
> 
>     public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
> 
>         //Print Process Instance Id
>         System.out.println(workItem.getProcessInstanceId());
> 
>         //Get Current process Instance
>         ProcessInstance p = this.ksession.getProcessInstance(workItem.getProcessInstanceId());
> 
>         //Abort the current process if it has an id of 3
>         if(workItem.getProcessInstanceId()==3){
>             this.ksession.abortProcessInstance(workItem.getProcessInstanceId());
>         }
> 
>         //if the current state is 3, the process has been aborted!
>         if(p.getState()==3){
>             System.out.println("aborted!");
>         }
> 
>         System.out.println("");
>     }
> 
>     public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {}
> 
>
--------------------------------------------------------------

Reply to this message by going to Community
[http://community.jboss.org/message/623389#623389]

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/20110829/e889f73b/attachment.html 


More information about the jboss-user mailing list