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]

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

Reply via email to