[jboss-user] [jBPM] - Re: Combining human and automated tasks

Tommer Wizansky do-not-reply at jboss.com
Tue Dec 13 02:02:46 EST 2011


Tommer Wizansky [http://community.jboss.org/people/twizansk] created the discussion

"Re: Combining human and automated tasks"

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

--------------------------------------------------------------
Yes!  That works!  Registering the task handler when invoking the human task client was the part I was missing.  Thank you.

As it turns out, I don't even need to load the original session.  I can register the task handler with a new stateful session and it still works:

        // Create a new session
        KnowledgeBase kbase = readKnowledgeBase(CREATE_INSTALLER_PROCESS);
        Environment env = KnowledgeBaseFactory.newEnvironment();
        env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);
        env.set(EnvironmentName.TRANSACTION_MANAGER, transactionManager);
        StatefulKnowledgeSession ksession = JPAKnowledgeService
                .newStatefulKnowledgeSession(kbase, null, env);

        // Register a handler 
        CommandBasedWSHumanTaskHandler handler = new CommandBasedWSHumanTaskHandler(ksession);
        handler.connect();
        ksession.getWorkItemManager().registerWorkItemHandler("Human Task", handler);

        // Create a human task client
        TaskClient client = new TaskClient(new MinaTaskClientConnector(
                "MinaConnector", new MinaTaskClientHandler(
                        SystemEventListenerFactory.getSystemEventListener())));
        client.connect("127.0.0.1", 9123);
        Thread.sleep(1000);
        BlockingTaskSummaryResponseHandler taskSummaryResponseHandler = new BlockingTaskSummaryResponseHandler();
        client.getTasksAssignedAsPotentialOwner("krisv", "en-UK",
                taskSummaryResponseHandler);
        List<TaskSummary> tasks = taskSummaryResponseHandler.getResults();
        TaskSummary taskSummary = tasks.get(0);
        long taskId = taskSummary.getId();
        BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
        client.start(taskId, "krisv", responseHandler);

        // Complete the task
        long taskId = taskSummary.getId();
        BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
        client.start(taskId, "krisv", responseHandler);
        client.complete(taskId, "krisv", null, responseHandler);

I'd like to understand the details.  When is it necessary to load an existing session and when can you use a new one?  But, in the meantime, it works.

Thanks again.

Tommer
--------------------------------------------------------------

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

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/20111213/a0c0a48d/attachment-0001.html 


More information about the jboss-user mailing list