7 Replies Latest reply on May 17, 2008 7:56 PM by Ronald van Kuijk

    While starting process from a servlet error arise

    Alex Kavo Novice

      Hi!

      I created a servlet to start the standard jbpm process "websale". I simply deployed it to the server. This is the code:

      import java.io.IOException;
      
      import javax.servlet.ServletException;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      
      import org.jbpm.graph.def.ProcessDefinition;
      import org.jbpm.JbpmConfiguration;
      import org.jbpm.JbpmContext;
      import org.jbpm.db.GraphSession;
      import org.jbpm.graph.exe.ProcessInstance;
      
      public class HelloWorld extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
       static final long serialVersionUID = 1L;
      
       private void startProcessDefinition() {
       String processDefinitionName = new String("websale");
       JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
       JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
       try {
       GraphSession graphSession = jbpmContext.getGraphSession();
       ProcessDefinition definition = graphSession.findLatestProcessDefinition(processDefinitionName);
       ProcessInstance instance = definition.createProcessInstance();
       instance.signal();
       jbpmContext.save(instance);
       } finally {
       jbpmContext.close();
       }
       }
      
       public HelloWorld() {
       super();
       }
      
       protected void doGet( HttpServletRequest request,
       HttpServletResponse response)
       throws ServletException, IOException {
       startProcessDefinition();
       }
      }

      But when I execute it the following error comes up:
      org.jbpm.JbpmException: couldn't find process definition 'websale'
      org.jbpm.db.GraphSession.findLatestProcessDefinition(GraphSession.java:170)
      HelloWorld.startProcessDefinition(HelloWorld.java:24)
      HelloWorld.doGet(HelloWorld.java:43)
      javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
      javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
      org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

      The process is deployed and works fine.
      I tried to configure the hibernate.cfg.xml (located in the WebContent directory) file and also tried to find some help in the docu.
      Hope you can help me.

      Bye

        • 1. Re: While starting process from a servlet error arise
          Ronald van Kuijk Master

           

          The process is deployed and works fine.

          and
          org.jbpm.JbpmException: couldn't find process definition 'websale'


          are contradictory, at least to some extend. I'm sure it is deployed somewhere, just not there where the engine tries to find it. Most of the time this is due to hibernate/datasource config issues (having 2 databases e.g.)

          • 2. Re: While starting process from a servlet error arise
            Alex Kavo Novice

            Ok, now it is getting more clear. Thanks.

            The process is deployed and works fine.

            Here I mean, that I deployed it with the plugin of eclipse so that I can go to the jbpm-console, login and see the process.
            My idea was to start this process (the same I see in the jbpm-console).
            I don't have 2 databases.
            Can you plase tell me which files I have to configure?
            This is how my project directories looks like:
            http://farm4.static.flickr.com/3150/2495261558_4455a2350f.jpg?v=0
            I just copied the hiberante.cfg.xml in the WebContent otherwise I get another error ("hibernate.cfg.xml not found").

            Hope I can solve the problem soon.

            Bye

            • 3. Re: While starting process from a servlet error arise
              wjq Newbie

              I met the same problem when begin to test jbpm.
              The reason is i have not config the table mapping in the file hibernate.cfg.xml used by jbpm. i.e the following config raise the error:

              <!DOCTYPE hibernate-configuration PUBLIC
               "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
               "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
              
              <hibernate-configuration>
               <session-factory>
               <property name="connection.url">
               jdbc:postgresql://localhost:5432/jbpm_test
               </property>
               <property name="connection.driver_class">
               org.postgresql.Driver
               </property>
              
               <!-- other hibernate properties -->
              
               </session-factory>
              </hibernate-configuration>

              After add the mapping in it,the error gone.
              <!DOCTYPE hibernate-configuration PUBLIC
               "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
               "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
              
              <hibernate-configuration>
               <session-factory>
               <property name="connection.url">
               jdbc:postgresql://localhost:5432/jbpm_test
               </property>
               <property name="connection.driver_class">
               org.postgresql.Driver
               </property>
              
               <!-- other hibernate properties -->
              
               <!--
               here is the mapping files.
               A lot more mapping should following ... chech the default hibernate config file to find them.
               -->
               <mapping resource="org/jbpm/graph/def/ProcessDefinition.hbm.xml" />
              
               </session-factory>
              </hibernate-configuration>


              • 4. Re: While starting process from a servlet error arise
                Alex Kavo Novice

                Ok, great. Now this is a hibernate configuration problem?
                My hibernate.cfg.xml:

                <?xml version='1.0' encoding='utf-8'?>
                
                <!DOCTYPE hibernate-configuration PUBLIC
                 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
                
                <hibernate-configuration>
                 <session-factory>
                 <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
                 <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
                 <property name="hibernate.connection.url">jdbc:hsqldb:mem:jbpm</property>
                 <property name="hibernate.connection.username">sa</property>
                 <property name="hibernate.connection.password"></property>
                 <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
                 <mapping resource="org/jbpm/graph/action/Script.hbm.xml"/>
                 <mapping resource="org/jbpm/identity/User.hbm.xml"/>
                 <mapping resource="org/jbpm/identity/Group.hbm.xml"/>
                 <mapping resource="org/jbpm/identity/Membership.hbm.xml"/>
                 <mapping resource="org/jbpm/db/hibernate.queries.hbm.xml" />
                 <mapping resource="org/jbpm/graph/action/MailAction.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/def/ProcessDefinition.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/def/Node.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/def/Transition.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/def/Event.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/def/Action.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/def/SuperState.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/def/ExceptionHandler.hbm.xml"/>
                 <mapping resource="org/jbpm/instantiation/Delegation.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/node/StartState.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/node/EndState.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/node/ProcessState.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/node/Decision.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/node/Fork.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/node/Join.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/node/MailNode.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/node/State.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/node/TaskNode.hbm.xml"/>
                 <mapping resource="org/jbpm/context/def/ContextDefinition.hbm.xml"/>
                 <mapping resource="org/jbpm/context/def/VariableAccess.hbm.xml"/>
                 <mapping resource="org/jbpm/taskmgmt/def/TaskMgmtDefinition.hbm.xml"/>
                 <mapping resource="org/jbpm/taskmgmt/def/Swimlane.hbm.xml"/>
                 <mapping resource="org/jbpm/taskmgmt/def/Task.hbm.xml"/>
                 <mapping resource="org/jbpm/taskmgmt/def/TaskController.hbm.xml"/>
                 <mapping resource="org/jbpm/module/def/ModuleDefinition.hbm.xml"/>
                 <mapping resource="org/jbpm/bytes/ByteArray.hbm.xml"/>
                 <mapping resource="org/jbpm/file/def/FileDefinition.hbm.xml"/>
                 <mapping resource="org/jbpm/scheduler/def/CreateTimerAction.hbm.xml"/>
                 <mapping resource="org/jbpm/scheduler/def/CancelTimerAction.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/exe/Comment.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/exe/ProcessInstance.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/exe/Token.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/exe/RuntimeAction.hbm.xml"/>
                 <mapping resource="org/jbpm/module/exe/ModuleInstance.hbm.xml"/>
                 <!-- context.exe mapping files -->
                 <mapping resource="org/jbpm/context/exe/ContextInstance.hbm.xml"/>
                 <mapping resource="org/jbpm/context/exe/TokenVariableMap.hbm.xml"/>
                 <mapping resource="org/jbpm/context/exe/VariableInstance.hbm.xml"/>
                 <mapping resource="org/jbpm/context/exe/variableinstance/ByteArrayInstance.hbm.xml"/>
                 <mapping resource="org/jbpm/context/exe/variableinstance/DateInstance.hbm.xml"/>
                 <mapping resource="org/jbpm/context/exe/variableinstance/DoubleInstance.hbm.xml"/>
                 <mapping resource="org/jbpm/context/exe/variableinstance/HibernateLongInstance.hbm.xml"/>
                 <mapping resource="org/jbpm/context/exe/variableinstance/HibernateStringInstance.hbm.xml"/>
                 <mapping resource="org/jbpm/context/exe/variableinstance/LongInstance.hbm.xml"/>
                 <mapping resource="org/jbpm/context/exe/variableinstance/NullInstance.hbm.xml"/>
                 <mapping resource="org/jbpm/context/exe/variableinstance/StringInstance.hbm.xml"/>
                 <!-- job mapping files -->
                 <mapping resource="org/jbpm/job/Job.hbm.xml"/>
                 <mapping resource="org/jbpm/job/Timer.hbm.xml"/>
                 <mapping resource="org/jbpm/job/ExecuteNodeJob.hbm.xml"/>
                 <mapping resource="org/jbpm/job/ExecuteActionJob.hbm.xml"/>
                 <!-- taskmgmt.exe mapping files -->
                 <mapping resource="org/jbpm/taskmgmt/exe/TaskMgmtInstance.hbm.xml"/>
                 <mapping resource="org/jbpm/taskmgmt/exe/TaskInstance.hbm.xml"/>
                 <mapping resource="org/jbpm/taskmgmt/exe/PooledActor.hbm.xml"/>
                 <mapping resource="org/jbpm/taskmgmt/exe/SwimlaneInstance.hbm.xml"/>
                
                 <!-- logging mapping files -->
                 <mapping resource="org/jbpm/logging/log/ProcessLog.hbm.xml"/>
                 <mapping resource="org/jbpm/logging/log/MessageLog.hbm.xml"/>
                 <mapping resource="org/jbpm/logging/log/CompositeLog.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/log/ActionLog.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/log/NodeLog.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/log/ProcessInstanceCreateLog.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/log/ProcessInstanceEndLog.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/log/ProcessStateLog.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/log/SignalLog.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/log/TokenCreateLog.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/log/TokenEndLog.hbm.xml"/>
                 <mapping resource="org/jbpm/graph/log/TransitionLog.hbm.xml"/>
                 <mapping resource="org/jbpm/context/log/VariableLog.hbm.xml"/>
                 <mapping resource="org/jbpm/context/log/VariableCreateLog.hbm.xml"/>
                 <mapping resource="org/jbpm/context/log/VariableDeleteLog.hbm.xml"/>
                 <mapping resource="org/jbpm/context/log/VariableUpdateLog.hbm.xml"/>
                 <mapping resource="org/jbpm/context/log/variableinstance/ByteArrayUpdateLog.hbm.xml"/>
                 <mapping resource="org/jbpm/context/log/variableinstance/DateUpdateLog.hbm.xml"/>
                 <mapping resource="org/jbpm/context/log/variableinstance/DoubleUpdateLog.hbm.xml"/>
                 <mapping resource="org/jbpm/context/log/variableinstance/HibernateLongUpdateLog.hbm.xml"/>
                 <mapping resource="org/jbpm/context/log/variableinstance/HibernateStringUpdateLog.hbm.xml"/>
                 <mapping resource="org/jbpm/context/log/variableinstance/LongUpdateLog.hbm.xml"/>
                 <mapping resource="org/jbpm/context/log/variableinstance/StringUpdateLog.hbm.xml"/>
                 <mapping resource="org/jbpm/taskmgmt/log/TaskLog.hbm.xml"/>
                 <mapping resource="org/jbpm/taskmgmt/log/TaskCreateLog.hbm.xml"/>
                 <mapping resource="org/jbpm/taskmgmt/log/TaskAssignLog.hbm.xml"/>
                 <mapping resource="org/jbpm/taskmgmt/log/TaskEndLog.hbm.xml"/>
                 <mapping resource="org/jbpm/taskmgmt/log/SwimlaneLog.hbm.xml"/>
                 <mapping resource="org/jbpm/taskmgmt/log/SwimlaneCreateLog.hbm.xml"/>
                 <mapping resource="org/jbpm/taskmgmt/log/SwimlaneAssignLog.hbm.xml"/>
                 </session-factory>
                </hibernate-configuration>
                

                It is the standard file that is created by the JBoss-IDE Eclipse plugin.
                It contains the parts you've posted but I still have the same problem.

                • 5. Re: While starting process from a servlet error arise
                  Ronald van Kuijk Master

                  you use an in memory database, that is certainly *not* shared, so it's a different database than the console uses. Look at the hibernate config from the console as well

                  • 6. Re: While starting process from a servlet error arise
                    Alex Kavo Novice

                    MANY THANKS! Now it is working! Wow. I copied the hibernate.cfg.xml from the jbpm-console project to my project and it worked.
                    But still I don't really understand this database problem. I couldn't find any infos in the documentation about it.

                    • 7. Re: While starting process from a servlet error arise
                      Ronald van Kuijk Master

                      lots of info/documentation on it. Strange thing is that an in-memory database is almost never used as a default, so someone has configured it.

                      It is an option to run hsqldb in memory, just look at the docs of hsqldb. How to configure hibernate is also well documented as. That 2 jbpm engines in this case the console app and your app, whould point to the same database if they want to share data is also 'logical'. As is that they didn't (read my first response in this thread). So I'd suggest (without wanting to offend you) to learn some basics of these technologies.