JBoss Community

Task Server Problem

created by Jonathan Albornoz in jBPM - View the full discussion

Hi, i have a problem with my java application with jboss 7.0.2, jbpm 5.3 and oracle.

i run my application and not have problem, but in a few minuts, the server task is blocked, and the log told me that can´t retrieve task.

 

import javax.persistence.EntityManagerFactory;

import javax.persistence.Persistence;

import org.drools.SystemEventListenerFactory;

import org.jbpm.task.service.TaskService;

import org.jbpm.task.service.TaskServiceSession;

import org.jbpm.task.service.mina.MinaTaskServer;

 

public class levantarServidorTareas {

 

public static void main(String[] args) {

try {

                              EntityManagerFactory emf = Persistence

                                                  .createEntityManagerFactory("org.jbpm.task");

                              TaskService taskService = new TaskService(emf,

                                                  SystemEventListenerFactory.getSystemEventListener());

                              TaskServiceSession ts = taskService.createSession();

                              MinaTaskServer server = new MinaTaskServer(taskService);

                              Thread thread = new Thread(server);

                              thread.start();

                              System.out

                                                  .println("Servidor de Tareas se inició Correctamente...!!");  //The server task start correctly

                    } catch (Exception e) {

 

                              System.out.println("Servidor de Tareas no se pudo Iniciar...!!"); //The server task is not correctly

                    }

}

}

 

 

 

 

THIS IS MY CLASE JBPM ASSOCIATED TO MY APPLICATION

 

Clase Jbpm

package cl.mop.ryc.bpm.bo;

 

 

import java.util.HashMap;

import java.util.Map;

import java.util.Properties;

 

 

import javax.persistence.EntityManagerFactory;

import javax.persistence.Persistence;

 

 

import org.drools.KnowledgeBaseFactory;

import org.drools.base.MapGlobalResolver;

import org.drools.builder.KnowledgeBuilder;

import org.drools.builder.KnowledgeBuilderFactory;

import org.drools.builder.ResourceType;

import org.drools.io.ResourceFactory;

import org.drools.persistence.jpa.JPAKnowledgeService;

import org.drools.runtime.Environment;

import org.drools.runtime.EnvironmentName;

import org.drools.runtime.KnowledgeSessionConfiguration;

import org.drools.runtime.StatefulKnowledgeSession;

import org.drools.runtime.process.ProcessInstance;

import org.jbpm.process.audit.JPAWorkingMemoryDbLogger;

import org.jbpm.process.workitem.wsht.MinaHTWorkItemHandler;

 

 

import bitronix.tm.TransactionManagerServices;

 

 

public class ClasesJbpm {

 

 

          public EntityManagerFactory emf;

          public Environment env;

          public StatefulKnowledgeSession ksession;

          public MinaHTWorkItemHandler hornetQHTWorkItemHandler;

          public JPAWorkingMemoryDbLogger logger;

          public org.jbpm.task.TaskService client;

 

 

          public void persistenciaSesion() {

                    emf = Persistence

                                        .createEntityManagerFactory("org.jbpm.persistence.jpa");

                    env = KnowledgeBaseFactory.newEnvironment();

                    env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);

                    env.set(EnvironmentName.TRANSACTION_MANAGER,

                                        TransactionManagerServices.getTransactionManager());

                    env.set(EnvironmentName.GLOBALS, new MapGlobalResolver());

                    Properties properties = new Properties();

                    properties

                                        .put("drools.processInstanceManagerFactory",

                                                            "org.jbpm.persistence.processinstance.JPAProcessInstanceManagerFactory");

                    properties.put("drools.processSignalManagerFactory",

                                        "org.jbpm.persistence.processinstance.JPASignalManagerFactory");

                    KnowledgeSessionConfiguration config = KnowledgeBaseFactory

                                        .newKnowledgeSessionConfiguration(properties);

                    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory

                                        .newKnowledgeBuilder();

                    kbuilder.add(ResourceFactory.newClassPathResource("HumanTask.bpmn"),

                                        ResourceType.BPMN2);

                    ksession = JPAKnowledgeService.newStatefulKnowledgeSession(

                                        kbuilder.newKnowledgeBase(), config, env);

          }

 

 

          public void persistenciaSesionLoad(int id) {

                    emf = Persistence

                                        .createEntityManagerFactory("org.jbpm.persistence.jpa");

                    env = KnowledgeBaseFactory.newEnvironment();

                    env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);

                    env.set(EnvironmentName.TRANSACTION_MANAGER,

                                        TransactionManagerServices.getTransactionManager());

                    env.set(EnvironmentName.GLOBALS, new MapGlobalResolver());

                    Properties properties = new Properties();

                    properties

                                        .put("drools.processInstanceManagerFactory",

                                                            "org.jbpm.persistence.processinstance.JPAProcessInstanceManagerFactory");

                    properties.put("drools.processSignalManagerFactory",

                                        "org.jbpm.persistence.processinstance.JPASignalManagerFactory");

                    KnowledgeSessionConfiguration config = KnowledgeBaseFactory

                                        .newKnowledgeSessionConfiguration(properties);

                    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory

                                        .newKnowledgeBuilder();

                    kbuilder.add(ResourceFactory.newClassPathResource("HumanTask.bpmn"),

                                        ResourceType.BPMN2);

                    ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(id,

                                        kbuilder.newKnowledgeBase(), config, env);

          }

 

 

          public void persistenciaSesionConcesion() {

                    emf = Persistence

                                        .createEntityManagerFactory("org.jbpm.persistence.jpa");

                    env = KnowledgeBaseFactory.newEnvironment();

                    env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);

                    env.set(EnvironmentName.TRANSACTION_MANAGER,

                                        TransactionManagerServices.getTransactionManager());

                    env.set(EnvironmentName.GLOBALS, new MapGlobalResolver());

                    Properties properties = new Properties();

                    properties

                                        .put("drools.processInstanceManagerFactory",

                                                            "org.jbpm.persistence.processinstance.JPAProcessInstanceManagerFactory");

                    properties.put("drools.processSignalManagerFactory",

                                        "org.jbpm.persistence.processinstance.JPASignalManagerFactory");

                    KnowledgeSessionConfiguration config = KnowledgeBaseFactory

                                        .newKnowledgeSessionConfiguration(properties);

                    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory

                                        .newKnowledgeBuilder();

                    kbuilder.add(ResourceFactory.newClassPathResource("Concesiones.bpmn"),

                                        ResourceType.BPMN2);

                    ksession = JPAKnowledgeService.newStatefulKnowledgeSession(

                                        kbuilder.newKnowledgeBase(), config, env);

          }

 

 

          public void persistenciaSesionTransparencia() {

                    emf = Persistence

                                        .createEntityManagerFactory("org.jbpm.persistence.jpa");

                    env = KnowledgeBaseFactory.newEnvironment();

                    env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);

                    env.set(EnvironmentName.TRANSACTION_MANAGER,

                                        TransactionManagerServices.getTransactionManager());

                    env.set(EnvironmentName.GLOBALS, new MapGlobalResolver());

                    Properties properties = new Properties();

                    properties

                                        .put("drools.processInstanceManagerFactory",

                                                            "org.jbpm.persistence.processinstance.JPAProcessInstanceManagerFactory");

                    properties.put("drools.processSignalManagerFactory",

                                        "org.jbpm.persistence.processinstance.JPASignalManagerFactory");

                    KnowledgeSessionConfiguration config = KnowledgeBaseFactory

                                        .newKnowledgeSessionConfiguration(properties);

                    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory

                                        .newKnowledgeBuilder();

                    kbuilder.add(

                                        ResourceFactory.newClassPathResource("Transparencia.bpmn"),

                                        ResourceType.BPMN2);

                    ksession = JPAKnowledgeService.newStatefulKnowledgeSession(

                                        kbuilder.newKnowledgeBase(), config, env);

          }

 

 

          public void persistenciaSesionActoresRelevantes() {

                    emf = Persistence

                                        .createEntityManagerFactory("org.jbpm.persistence.jpa");

                    env = KnowledgeBaseFactory.newEnvironment();

                    env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);

                    env.set(EnvironmentName.TRANSACTION_MANAGER,

                                        TransactionManagerServices.getTransactionManager());

                    env.set(EnvironmentName.GLOBALS, new MapGlobalResolver());

                    Properties properties = new Properties();

                    properties

                                        .put("drools.processInstanceManagerFactory",

                                                            "org.jbpm.persistence.processinstance.JPAProcessInstanceManagerFactory");

                    properties.put("drools.processSignalManagerFactory",

                                        "org.jbpm.persistence.processinstance.JPASignalManagerFactory");

                    KnowledgeSessionConfiguration config = KnowledgeBaseFactory

                                        .newKnowledgeSessionConfiguration(properties);

                    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory

                                        .newKnowledgeBuilder();

                    kbuilder.add(

                                        ResourceFactory.newClassPathResource("ActoresRelevantes.bpmn"),

                                        ResourceType.BPMN2);

                    ksession = JPAKnowledgeService.newStatefulKnowledgeSession(

                                        kbuilder.newKnowledgeBase(), config, env);

          }

 

 

          public void persistenciaSesionLoadActoresRelevantes(int id) {

                    emf = Persistence

                                        .createEntityManagerFactory("org.jbpm.persistence.jpa");

                    env = KnowledgeBaseFactory.newEnvironment();

                    env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);

                    env.set(EnvironmentName.TRANSACTION_MANAGER,

                                        TransactionManagerServices.getTransactionManager());

                    env.set(EnvironmentName.GLOBALS, new MapGlobalResolver());

                    Properties properties = new Properties();

                    properties

                                        .put("drools.processInstanceManagerFactory",

                                                            "org.jbpm.persistence.processinstance.JPAProcessInstanceManagerFactory");

                    properties.put("drools.processSignalManagerFactory",

                                        "org.jbpm.persistence.processinstance.JPASignalManagerFactory");

                    KnowledgeSessionConfiguration config = KnowledgeBaseFactory

                                        .newKnowledgeSessionConfiguration(properties);

                    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory

                                        .newKnowledgeBuilder();

                    kbuilder.add(

                                        ResourceFactory.newClassPathResource("ActoresRelevantes.bpmn"),

                                        ResourceType.BPMN2);

                    ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(id,

                                        kbuilder.newKnowledgeBase(), config, env);

          }

 

 

          public void persistenciaSesionLoadTransparencia(int id) {

                    emf = Persistence

                                        .createEntityManagerFactory("org.jbpm.persistence.jpa");

                    env = KnowledgeBaseFactory.newEnvironment();

                    env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);

                    env.set(EnvironmentName.TRANSACTION_MANAGER,

                                        TransactionManagerServices.getTransactionManager());

                    env.set(EnvironmentName.GLOBALS, new MapGlobalResolver());

                    Properties properties = new Properties();

                    properties

                                        .put("drools.processInstanceManagerFactory",

                                                            "org.jbpm.persistence.processinstance.JPAProcessInstanceManagerFactory");

                    properties.put("drools.processSignalManagerFactory",

                                        "org.jbpm.persistence.processinstance.JPASignalManagerFactory");

                    KnowledgeSessionConfiguration config = KnowledgeBaseFactory

                                        .newKnowledgeSessionConfiguration(properties);

                    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory

                                        .newKnowledgeBuilder();

                    kbuilder.add(

                                        ResourceFactory.newClassPathResource("Transparencia.bpmn"),

                                        ResourceType.BPMN2);

                    ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(id,

                                        kbuilder.newKnowledgeBase(), config, env);

          }

 

 

          public void persistenciaSesionLoadConcesion(int id) {

                    emf = Persistence

                                        .createEntityManagerFactory("org.jbpm.persistence.jpa");

                    env = KnowledgeBaseFactory.newEnvironment();

                    env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);

                    env.set(EnvironmentName.TRANSACTION_MANAGER,

                                        TransactionManagerServices.getTransactionManager());

                    env.set(EnvironmentName.GLOBALS, new MapGlobalResolver());

                    Properties properties = new Properties();

                    properties

                                        .put("drools.processInstanceManagerFactory",

                                                            "org.jbpm.persistence.processinstance.JPAProcessInstanceManagerFactory");

                    properties.put("drools.processSignalManagerFactory",

                                        "org.jbpm.persistence.processinstance.JPASignalManagerFactory");

                    KnowledgeSessionConfiguration config = KnowledgeBaseFactory

                                        .newKnowledgeSessionConfiguration(properties);

                    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory

                                        .newKnowledgeBuilder();

                    kbuilder.add(ResourceFactory.newClassPathResource("Concesiones.bpmn"),

                                        ResourceType.BPMN2);

                    ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(id,

                                        kbuilder.newKnowledgeBase(), config, env);

          }

 

 

          public void registrarWorkItemHandler() {

                    hornetQHTWorkItemHandler = new MinaHTWorkItemHandler(ksession);

                    ksession.getWorkItemManager().registerWorkItemHandler("Human Task",

                                        hornetQHTWorkItemHandler);

                    hornetQHTWorkItemHandler.setIpAddress("127.0.0.1");

                    hornetQHTWorkItemHandler.setPort(9123);

                    hornetQHTWorkItemHandler.connect();

                    ksession.getWorkItemManager().registerWorkItemHandler("Human Task",

                                        hornetQHTWorkItemHandler);

          }

 

 

          public void registrarLogger() {

                    logger = new JPAWorkingMemoryDbLogger(ksession);

          }

 

 

          public void instanciarProceso(String idProceso, Map<String, Object> params) {

                    ksession.startProcess(idProceso, params);

          }

 

 

          public ProcessInstance instanciarProceso(String idProceso) {

                    ProcessInstance pi = ksession.startProcess(idProceso);

                    return pi;

 

 

          }

 

 

          public ProcessInstance instanciarProcesoParam(String idProceso,

                              HashMap<String, Object> param) {

                    ProcessInstance pi = ksession.startProcess(idProceso, param);

                    return pi;

 

 

          }

 

 

          public void obtenerCliente() {

                    client = hornetQHTWorkItemHandler.getClient();

          }

 

 

          public void cerrarConexion() {

                    try {

                              client.disconnect();

                              hornetQHTWorkItemHandler.dispose();

                    } catch (Exception e) {

                              e.printStackTrace();

                    }

                    logger.dispose();

                    ksession.dispose();

          }

}


 

AND FINALLY MY PERSISTENCE.XML ASSOCIATED TO THE APP

 

<?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>

        <mapping-file>META-INF/JBPMorm.xml</mapping-file>

        <mapping-file>META-INF/ProcessInstanceInfo.hbm.xml</mapping-file>

        <class>org.drools.persistence.info.SessionInfo</class>

        <class>org.jbpm.persistence.processinstance.ProcessInstanceInfo</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>

            <property name="hibernate.max_fetch_depth" value="3"/>

            <property name="hibernate.hbm2ddl.auto" value="update" />

            <property name="hibernate.show_sql" value="false" />

            <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>

            <property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver" />

            <property name="hibernate.connection.url" value="jdbc:oracle:thin:@172.16.1.35:1521:prodbeta" />

            <property name="hibernate.connection.username" value="jbpm5" />

            <property name="hibernate.connection.password" value="ryc" />

            <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.BTMTransactionManagerLookup" />

        </properties>       

    </persistence-unit>

   

    <persistence-unit name="org.jbpm.task">

    <provider>org.hibernate.ejb.HibernatePersistence</provider>

          <mapping-file>META-INF/Taskorm.xml</mapping-file>

    <class>org.jbpm.task.Attachment</class>

    <class>org.jbpm.task.Content</class>

    <class>org.jbpm.task.BooleanExpression</class>

    <class>org.jbpm.task.Comment</class>

    <class>org.jbpm.task.Deadline</class>

    <class>org.jbpm.task.Comment</class>

    <class>org.jbpm.task.Deadline</class>

    <class>org.jbpm.task.Delegation</class>

    <class>org.jbpm.task.Escalation</class>

    <class>org.jbpm.task.Group</class>

    <class>org.jbpm.task.I18NText</class>

    <class>org.jbpm.task.Notification</class>

    <class>org.jbpm.task.EmailNotification</class>

    <class>org.jbpm.task.EmailNotificationHeader</class>

    <class>org.jbpm.task.PeopleAssignments</class>

    <class>org.jbpm.task.Reassignment</class>

    <class>org.jbpm.task.Status</class>

    <class>org.jbpm.task.Task</class>

    <class>org.jbpm.task.TaskData</class>

    <class>org.jbpm.task.SubTasksStrategy</class>

    <class>org.jbpm.task.OnParentAbortAllSubTasksEndStrategy</class>

    <class>org.jbpm.task.OnAllSubTasksEndParentEndStrategy</class>

    <class>org.jbpm.task.User</class>

    <properties>

      <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>

      <property name="hibernate.default_schema" value="jbpm5"/>

            <property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver"/>

      <property name="hibernate.connection.url" value="jdbc:oracle:thin:@172.16.1.35:1521:prodbeta" />

      <property name="hibernate.connection.username" value="jbpm5"/>

      <property name="hibernate.connection.password" value="ryc"/>

      <property name="hibernate.connection.autocommit" value="false" />

      <property name="hibernate.max_fetch_depth" value="3"/>

      <property name="hibernate.hbm2ddl.auto" value="update" />

      <property name="hibernate.show_sql" value="false" />

    </properties>

  </persistence-unit>

</persistence>

Reply to this message by going to Community

Start a new discussion in jBPM at Community