Andy Yeung [http://community.jboss.org/people/andy.yeung] created the discussion

"Re: Resources Handling on TaskClient in JBPM5"

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

--------------------------------------------------------------
I have trace the code in CommandBasedWSHumanTaskHandler. I find that the 
KnowledgeRuntime pass in constructor is used by the callback handler in 
GetCompletedTaskResponseHandler and GetResultContentResponseHandler only. I 
remove that in constructor and add method registerHumanTaskSession(Long 
pTaskId, KnowledgeRuntime pSession) and deregisterHumanTaskSession(Long 
pTaskId) in it. Before I call TaskClient.completeTask, I first registerr the 
task id and correponding session in the CommandBasedWSHumanTaskHandler. In the 
callback, I change session.getWorkItemManager().completeWorkItem(workItemId, 
results) to 
sessionLookup.get(task.getId()).getWorkItemManager().completeWorkItem(workItemId,
 results);

In this way I can share the TaskClient and 
BlockingComamndBasedWSHumanTaskHandler by multiple process instance.

Also in the connect method,
I configure a flag and only let the registerForEvent execute once only. 
Otherwise multiple callback will be triggered since executeWorkItem call 
connect method implicitly.

I have tested this under 10 concurrent thread and seems having no problem in 
this way. But I am not sure if using a single TaskClient in 
BlockingCommandBasedWSHumanTaskHandler amongs all process instance affects 
performance.
--------------------------------------------------------------

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

Start a new discussion in jBPM at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034]

_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to