[jboss-user] [jBPM] - CommandBasedWSHumanTaskHandler session, client ???

Gary Struthers do-not-reply at jboss.com
Sun Aug 14 19:06:33 EDT 2011


Gary Struthers [http://community.jboss.org/people/GaryS] created the discussion

"CommandBasedWSHumanTaskHandler session, client ???"

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

--------------------------------------------------------------
To persist a session, I'm trying to use CommandBasedWSHumanTaskHandler in code based on Salaboy's PersistentProcessManager and TaskClientHelper with Mina

private StatefulKnowledgeSession getKnowledgeSession() {
        StatefulKnowledgeSession ksession = null;
if (ksessionId == null) {

            ksession = JPAKnowledgeService.newStatefulKnowledgeSession(
kbase,
null,
env);

ksessionId = ksession.getId();
        } else {
            ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(
ksessionId,
kbase,
null,
env);
        }

humanActivitiesHandler = new CommandBasedWSHumanTaskHandler(ksession);
humanActivitiesHandler.setClient(TaskClientHelper.getInstance().taskClient);
            this.workItemsHandlers.put("Human Task", humanActivitiesHandler);

for (Map.Entry<String, WorkItemHandler> entry : this.workItemsHandlers.entrySet()) {
            ksession.getWorkItemManager().registerWorkItemHandler(entry.getKey(), entry.getValue());
        }

        //Configures a logger for the session
        KnowledgeRuntimeLoggerFactory.newConsoleLogger(ksession);

return ksession;
    }

The handler only accepts a session in the constructor so I guess I'm supposed to construct one every time I get a session from the database and then hope resisterWorkItem works correctly. This doesn't look good. I wish I could create the handler once and then bind it to a session when I have one. I don't know if creating these handlers is idempotent. Then I tried exposing the TaskClient and passing it to the new handler.

Inside the handler the connect method creates a WSHumanTaskHandler. This looks like a bug.  
public class CommandBasedWSHumanTaskHandler implements WorkItemHandler {
 ... 
public void connect() {
if (client == null) {
client = new TaskClient(new MinaTaskClientConnector("org.drools.process.workitem.wsht.WSHumanTaskHandler", 
new MinaTaskClientHandler(SystemEventListenerFactory.getSystemEventListener())));
boolean connected = client.connect(ipAddress, port);

if (!connected) {
throw new IllegalArgumentException("Could not connect task client");
}
}
--------------------------------------------------------------

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

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/20110814/a75f8539/attachment-0001.html 


More information about the jboss-user mailing list