[jboss-user] [jBPM] - Re: How to continue process in a web application

Jo Blithe do-not-reply at jboss.com
Mon Jul 25 11:47:40 EDT 2011


Jo Blithe [http://community.jboss.org/people/johnesky] created the discussion

"Re: How to continue process in a web application"

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

--------------------------------------------------------------
Thanks Demain for your reply. Here are some of my condfiguration files...

Persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns=" http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence" xmlns:orm=" http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence        http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd     http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm      http://java.sun.com/xml/ns/persistence/orm_1_0.xsd http://java.sun.com/xml/ns/persistence/orm_1_0.xsd">


    <persistence-unit name="org.jbpm.persistence.jpa" transaction-type="JTA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>java:comp/env/jdbc/testDS1</jta-data-source>

        <class>org.jbpm.persistence.processinstance.ProcessInstanceInfo</class>
        <class>org.jbpm.persistence.processinstance.ProcessInstanceEventInfo</class>    
        <class>org.drools.persistence.info.SessionInfo</class>
        <class>org.drools.persistence.info.WorkItemInfo</class>
        <class>org.jbpm.process.audit.ProcessInstanceLog</class>
        <class>org.jbpm.process.audit.NodeInstanceLog</class>
        <class>org.jbpm.process.audit.VariableInstanceLog</class>
        <properties>

                  <!-- CONFIGURATION TO USE H2 -->
          <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/> 
                              <!-- COMMON CONFIGURATION -->
            <property name="hibernate.max_fetch_depth" value="3"/>
            <property name="hibernate.hbm2ddl.auto" value="create-drop" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.BTMTransactionManagerLookup" />

         </properties> 

    </persistence-unit>
</persistence>





index.jsp
        <%

                PoolingDataSource ds1 = new PoolingDataSource();
                    ds1.setUniqueName("jdbc/testDS1");
                    ds1.setClassName("org.postgresql.xa.PGXADataSource");
                    ds1.setMaxPoolSize(3);
                    ds1.setAllowLocalTransactions(true);
                    ds1.getDriverProperties().put("serverName", "localhost");
                    ds1.getDriverProperties().put("user", "postgres");
                    ds1.getDriverProperties().put("password", "postgres");
                    ds1.getDriverProperties().put("databaseName", "jbpm5");
                    ds1.init();

                readKnowledge redaccion = new readKnowledge();
                    KnowledgeBase kbase = redaccion.readKnowledgeBase();


                 EntityManagerFactory emf1 = Persistence
                    .createEntityManagerFactory("org.jbpm.persistence.jpa");


Environment env = KnowledgeBaseFactory.newEnvironment();
env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf1);
env.set(EnvironmentName.TRANSACTION_MANAGER,
                    TransactionManagerServices.getTransactionManager());


 EntityManagerFactory emf = Persistence.createEntityManagerFactory("org.jbpm.task");

                      SystemEventListener systemEventListener = SystemEventListenerFactory.getSystemEventListener();

                      TaskService taskService = new TaskService(emf, systemEventListener);

                      TaskServiceSession taskSession = taskService.createSession();

                      taskSession.addUser(new User("Administrator"));
                      taskSession.addUser(new User("mina"));


                      MinaTaskServer server = new MinaTaskServer( taskService );
                      Thread thread = new Thread( server );
                      thread.start();


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

                              KnowledgeRuntimeLoggerFactory.newConsoleLogger(ksession);

                              //Logger that will give information about the process state, variables, etc
                              JPAProcessInstanceDbLog processLog = new JPAProcessInstanceDbLog(ksession.getEnvironment());


                      ksession.getWorkItemManager().registerWorkItemHandler("Handler", new JavaHandlerWorkItemHandler(ksession));

                      ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new WSHumanTaskHandler());


                     //KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test");
                      // start a new process instance


                              ProcessInstance process = ksession.createProcessInstance("com.sample.bpmn.hello",
                                                  null);
                              ksession.insert(process);
                              long processInstanceId = process.getId();
                              ksession.startProcessInstance(processInstanceId);
                              Thread.sleep(2000);

                      //ksession.startProcess("com.sample.bpmn.hello");

                    //   ksession.fireAllRules();

                     // logger.close();

                            TaskClient client = new TaskClient(new MinaTaskClientConnector("mina",
                                           new MinaTaskClientHandler(
                                             SystemEventListenerFactory.getSystemEventListener())));

                        try
                                                               {
                                          client.connect("127.0.0.1", 9123);
                                          BlockingTaskSummaryResponseHandler summaryHandler = new BlockingTaskSummaryResponseHandler();
                                          client.getTasksAssignedAsPotentialOwner("mina", "en-UK",
                                            summaryHandler);
                                          List <TaskSummary> tasks = summaryHandler.getResults();
                                          TaskSummary task = null;
                                          for (TaskSummary taskSummary : tasks) {
                                           System.out.println(taskSummary.getId() + " : "
                                             + taskSummary.getName());
                                           task = taskSummary;
                                          }
                                          if (task != null) {
                                                     BlockingTaskOperationResponseHandler operationHandler = new BlockingTaskOperationResponseHandler();
                                                     client.release(task.getId(), "mina", operationHandler);
                                                     client.claim(task.getId(), "Administrator", operationHandler);
                                                     operationHandler.waitTillDone(10000);


                                                     operationHandler = new BlockingTaskOperationResponseHandler();
                                                     client.start(task.getId(), "Administrator", operationHandler);
                                                     operationHandler.waitTillDone(10000);


                                                     operationHandler = new BlockingTaskOperationResponseHandler();
                                                     client.complete(task.getId(), "Administrator", null, operationHandler);
                                                     operationHandler.waitTillDone(10000);


                                                    }

                                          Thread.sleep(1000);

                                          BlockingTaskSummaryResponseHandler summaryHandler2 = new BlockingTaskSummaryResponseHandler();
                                          client.getTasksAssignedAsPotentialOwner("mina", "en-UK",
                                            summaryHandler2);
                                          List <TaskSummary> tasks2 = summaryHandler2.getResults();
                                          TaskSummary task2 = null;
                                          for (TaskSummary taskSummary : tasks2) {
                                           System.out.println(taskSummary.getId() + " : "
                                             + taskSummary.getName());
                                           task2 = taskSummary;
                                          }
                                          if (task2 != null) {
                                                     BlockingTaskOperationResponseHandler operationHandler2 = new BlockingTaskOperationResponseHandler();
                                                     client.release(task2.getId(), "mina", operationHandler2);
                                                     client.claim(task2.getId(), "Administrator", operationHandler2);
                                                     operationHandler2.waitTillDone(10000);


                                                     operationHandler2 = new BlockingTaskOperationResponseHandler();
                                                     client.start(task2.getId(), "Administrator", operationHandler2);
                                                     operationHandler2.waitTillDone(10000);


                                                     operationHandler2 = new BlockingTaskOperationResponseHandler();
                                                     client.complete(task2.getId(), "Administrator", null, operationHandler2);
                                                     operationHandler2.waitTillDone(10000);
                                          }
                              //now check in the logs the process finished.

                                  UserTransaction ut =


  (UserTransaction) new InitialContext().lookup( "java:comp/UserTransaction" );


ut.begin();


                                                  ProcessInstanceLog processInstanceLog = processLog.findProcessInstance(processInstanceId);
                                                  processInstanceLog.getEnd();

                                        ut.commit();


                                                  Thread.sleep(1000);
                                                  client.disconnect();



                                         }  catch (Exception e) {
                                                    e.printStackTrace();
                                         } finally {
                                          try {
                                           client.disconnect();
                                          } catch (Exception e) {
                                           e.printStackTrace();
                                          }
                                  System.exit(0);
                                                                   }
        %>
--------------------------------------------------------------

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

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/20110725/80077e05/attachment-0001.html 


More information about the jboss-user mailing list