JBoss Community

Re: How to continue process in a web application

created by Jo Blithe in jBPM - View the full discussion

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" xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="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/orm     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

Start a new discussion in jBPM at Community