[jboss-user] [jBPM] - Is SessionID & ProcessID required to complete WorkItem ?

vikas jadon do-not-reply at jboss.com
Fri Apr 29 11:15:59 EDT 2011


vikas jadon [http://community.jboss.org/people/vikasjadon] created the discussion

"Is SessionID & ProcessID required to complete WorkItem ?"

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

--------------------------------------------------------------
I have question about  ProcessID and SessionID and there usage. I will continue to ask after explaining the confusion areas. This is with respect to webapplication, used by multiple users and deployed in clustered env.


EntityManagerFactory emf =  Persistence.createEntityManagerFactory( "org.drools.persistence.jpa" );
   env = KnowledgeBaseFactory.newEnvironment();
   env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, emf );

// create a new knowledge session that uses JPA to store the runtime state. Is this session for the server or I can create per user ? What is best?
// i understand creation session per user will be costly

ksession =   JPAKnowledgeService.newStatefulKnowledgeSession( kBase, null, env );
sessionID = ksession.getId();  // i can persist this,  
ksession.getWorkItemManager().registerWorkItemHandler("handle",my_handler_obj);
ksession.getWorkItemManager().registerWorkItemHandler("handle2",my_handler2_obj);

//starting the process, I think this is for each user
pi1 =(WorkflowProcessInstance) ksession.startProcess("com.sample.bpmn.wfPOC",parameterMap);
// i can get process id of the process started, so i am in the first workItem now.
processID = pi1.getId(); // i can persist this too.
// i have a method in my handler for getting the workItemId. i persisted this workItemId
workItemId = my_handler_obj.getWorkItemId();

At some time later I would like to complete the workItem, understanding the server is restarted 

// I can use JPAKnowledgeService.loadStatefulKnowledgeSession(persisted_sessionID, kBase, null, env); but following also works

ksession =   JPAKnowledgeService.newStatefulKnowledgeSession( kBase, null, env );
sessionID = ksession.getId();  // it is different session
ksession.getWorkItemManager().registerWorkItemHandler("handle",my_handler_obj);
ksession.getWorkItemManager().registerWorkItemHandler("handle2",my_handler2_obj);

// I can complete workItem which was left earlier,

ksession.getWorkItemManager().completeWorkItem(workItemId, null);

*My questions:*
** 
1. What is the use of sessionID, since i can complete workItem without sessionID? is if useful in this scenerio ? (I can load the session)
2. What is the use of processID since i can complete workItem without processID?? is it useful in this scenerio ? (i can start the process with process id)
3. Is only workItemID sufficient to complete a workItem in realtime? or am i missing something
4. How the knowledge session will work in case of clustered env across the JVM's using the load balancer.

Any help is highly appreciated.

thanks
Vikas
--------------------------------------------------------------

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

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/20110429/81d57b39/attachment.html 


More information about the jboss-user mailing list