8 Replies Latest reply on Aug 23, 2006 4:44 PM by Ronald van Kuijk

    Anyone running jBPM on Oralce AS 10.1.2 ?

    Chad Cummings Newbie

      My company is in the evaluation phase of picking a workflow engine.
      And jBPM looks very promising at the moment, but....

      Our environment is set to Oracle AS 10.1.2 with an Oracle 10g database.

      We would like to have each webapp have it's own jBPM jar and supporting jars (hibernate) bundled with it.

      I have tried tweeking the build.xml in the 3.1.2 starters kit so that it will produce a web-console WAR and EAR with all the jBPM jars and config files for jbpm and hibernate, but have not had any luck yet. I configured the database to point to my local oracleXE DB.

      I'll post more on the problems, if someone is interested in helping me out!

      We would also be interested in training if jBPM is selected.

      Thanks,
      Chad

        • 1. Re: Anyone running jBPM on Oralce AS 10.1.2 ?
          Ronald van Kuijk Master

          Chad,

          It should be the other way aroiund. IF you post more info, someone is likely to at least respond to it. It it good practice to post at least what is going wrong when you post a problem. Or do you mean that you will post more info if someone is willing to help out getting paid for it?

          We run a kind of similar env against 10.1.2 and have no problem. So PLEASE post more info, other than 'Í have not had any luck yet'. For your info, I didn't either, but that was in the casino. For using jBPM I do not trust on luck but on knowledge. maybe you should to :-)

          • 2. Re: Anyone running jBPM on Oralce AS 10.1.2 ?
            Ronald van Kuijk Master

            sorry, we run the DB, not the appserver, but the question about the 'more info'still stands

            • 3. Re: Anyone running jBPM on Oralce AS 10.1.2 ?
              Chad Cummings Newbie

              After further tweaking on the build.xml, I was able to get the webapp console to come up! I'm using jBPM 3.1.2.

              In my earlier attempts, I manually loaded the DB schema with the sql script for oracle.

              But didn't have any data loaded. So I modified the ant task "create.db" to work against oracle so it would load the schema, load the identities, and a sample process.

              I'm able to login as "cookie monster", and see the "Start New Process Execution" list. When I click on the "create new web sale order" link, I get the following error...

              500 Internal Server Error
              OracleJSP:
              
              JSP Error:
              
              Request URI:/jbpm/task.jsp
              
              Exception:
              java.lang.NullPointerException
              



              the log mentions something about the UIViewRoot id="NULL" ???

              Here is the log...
              15:26:32,832 [HttpRequestHandler-11023888] DEBUG LogFilter : request http://localhost:8888/jbpm/faces/home.jsp
              15:26:32,848 [HttpRequestHandler-11023888] DEBUG LogFilter : request parameter [linkDummyForm:_link_hidden_]=_id14_0:_id17
              15:26:32,848 [HttpRequestHandler-11023888] DEBUG LogFilter : request parameter [processDefinitionId]=141
              15:26:32,848 [HttpRequestHandler-11023888] DEBUG LogFilter : session parameter [userBean]=org.jbpm.webapp.bean.UserBean@13ce184
              15:26:32,848 [HttpRequestHandler-11023888] DEBUG LogFilter : session parameter [javax.faces.request.charset]=ISO-8859-1
              15:26:32,848 [HttpRequestHandler-11023888] DEBUG LogFilter : session parameter [taskFormParameters]=[(item,null), (quantity,null), (address,null)]
              15:26:32,848 [HttpRequestHandler-11023888] DEBUG LogFilter : session parameter [monitoringBean]=org.jbpm.webapp.bean.MonitoringBean@1666ada
              15:26:32,848 [HttpRequestHandler-11023888] DEBUG LogFilter : session parameter [org.apache.myfaces.application.jsp.JspStateManagerImpl.SERIALIZED_VIEW-/search_instances.jsp]=[Ljava.lang.Object;@f61227
              15:26:32,848 [HttpRequestHandler-11023888] DEBUG LogFilter : session parameter [processDefinitionBean]=org.jbpm.webapp.bean.ProcessDefinitionBean@f0cda1
              15:26:32,848 [HttpRequestHandler-11023888] DEBUG LogFilter : session parameter [org.apache.myfaces.application.jsp.JspStateManagerImpl.SERIALIZED_VIEW-/process_instances.jsp]=[Ljava.lang.Object;@e0f945
              15:26:32,848 [HttpRequestHandler-11023888] DEBUG LogFilter : session parameter [org.apache.myfaces.application.jsp.JspStateManagerImpl.SERIALIZED_VIEW-/home.jsp]=[Ljava.lang.Object;@6812d
              15:26:32,848 [HttpRequestHandler-11023888] DEBUG JbpmContextInfo : creating jbpm context with service factories '[message, scheduler, logging, persistence, authentication]'
              15:26:32,848 [HttpRequestHandler-11023888] DEBUG JbpmContext : creating JbpmContext
              15:26:32,848 [HttpRequestHandler-11023888] DEBUG ServletExternalContextImpl : Incoming request has Content-Type header without character encoding: application/x-www-form-urlencoded
              15:26:32,848 [HttpRequestHandler-11023888] DEBUG LifecycleImpl : entering restoreView in org.apache.myfaces.lifecycle.LifecycleImpl
              15:26:32,864 [HttpRequestHandler-11023888] DEBUG JspStateManagerImpl : Tree structure restored from server session
              15:26:32,864 [HttpRequestHandler-11023888] DEBUG LifecycleImpl : exiting restoreView in org.apache.myfaces.lifecycle.LifecycleImpl
              15:26:32,864 [HttpRequestHandler-11023888] DEBUG LifecycleImpl : entering applyRequestValues in org.apache.myfaces.lifecycle.LifecycleImpl
              15:26:32,864 [HttpRequestHandler-11023888] DEBUG DbPersistenceServiceFactory : creating persistence service
              15:26:32,864 [HttpRequestHandler-11023888] DEBUG DbPersistenceService : creating hibernate session
              15:26:32,879 [HttpRequestHandler-11023888] DEBUG DbPersistenceService : beginning hibernate transaction
              15:26:32,895 [HttpRequestHandler-11023888] DEBUG LifecycleImpl : exiting applyRequestValues in org.apache.myfaces.lifecycle.LifecycleImpl
              15:26:32,895 [HttpRequestHandler-11023888] DEBUG LifecycleImpl : entering processValidations in org.apache.myfaces.lifecycle.LifecycleImpl
              15:26:32,911 [HttpRequestHandler-11023888] DEBUG LifecycleImpl : exiting processValidations in org.apache.myfaces.lifecycle.LifecycleImpl
              15:26:32,911 [HttpRequestHandler-11023888] DEBUG LifecycleImpl : entering updateModelValues in org.apache.myfaces.lifecycle.LifecycleImpl
              15:26:32,911 [HttpRequestHandler-11023888] DEBUG LifecycleImpl : exiting updateModelValues in org.apache.myfaces.lifecycle.LifecycleImpl
              15:26:32,911 [HttpRequestHandler-11023888] DEBUG LifecycleImpl : entering invokeApplication in org.apache.myfaces.lifecycle.LifecycleImpl
              15:26:32,926 [HttpRequestHandler-11023888] DEBUG GraphElement : event 'process-start' on 'ProcessDefinition(simple)' for 'Token(/)'
              15:26:32,957 [HttpRequestHandler-11023888] WARN StatefulPersistenceContext : Narrowing proxy to class org.jbpm.graph.node.StartState - this operation breaks ==
              15:26:32,973 [HttpRequestHandler-11023888] DEBUG TaskController : creating task instance variable 'color' from process variable 'color', value 'null'
              15:26:32,973 [HttpRequestHandler-11023888] DEBUG VariableContainer : create variable 'color' in 'TaskInstance[start]' with value 'null'
              15:26:32,973 [HttpRequestHandler-11023888] DEBUG TaskController : creating task instance variable 'size' from process variable 'size', value 'null'
              15:26:32,973 [HttpRequestHandler-11023888] DEBUG VariableContainer : create variable 'size' in 'TaskInstance[start]' with value 'null'
              15:26:32,973 [HttpRequestHandler-11023888] DEBUG GraphElement : event 'task-create' on 'Task(start)' for 'Token(/)'
              15:26:32,989 [HttpRequestHandler-11023888] DEBUG GraphElement : event 'task-assign' on 'Task(start)' for 'Token(/)'
              15:26:32,989 [HttpRequestHandler-11023888] DEBUG Services : executing default save operations
              15:26:32,989 [HttpRequestHandler-11023888] DEBUG HibernateSaveOperation : saving process instance
              15:26:33,004 [HttpRequestHandler-11023888] DEBUG SaveLogsOperation : flushing logs to logging service.
              15:26:33,036 [HttpRequestHandler-11023888] DEBUG CascadeSaveOperation : cascading save of 'org.jbpm.graph.exe.ProcessInstance@1db2215'
              15:26:33,036 [HttpRequestHandler-11023888] DEBUG TaskBean : initialized availableTransitions null
              15:26:33,036 [HttpRequestHandler-11023888] DEBUG NavigationHandlerImpl : handleNavigation fromAction=#{homeBean.startProcessInstance} outcome=task toViewId =/task.jsp redirect=false
              15:26:33,036 [HttpRequestHandler-11023888] DEBUG JspViewHandlerImpl : Created view /task.jsp
              15:26:33,036 [HttpRequestHandler-11023888] DEBUG LifecycleImpl : exiting invokeApplication in org.apache.myfaces.lifecycle.LifecycleImpl
              15:26:33,051 [HttpRequestHandler-11023888] DEBUG LifecycleImpl : entering renderResponse in org.apache.myfaces.lifecycle.LifecycleImpl
              15:26:33,051 [HttpRequestHandler-11023888] DEBUG JspViewHandlerImpl : Dispatching to /task.jsp
              15:26:33,114 [HttpRequestHandler-11023888] DEBUG DebugUtils : View after rendering
              ========================================
              
              <UIViewRoot id="NULL" family="javax.faces.ViewRoot" locale="en"
              renderKitId="HTML_BASIC" rendered="true" rendererType="NULL"
              rendersChildren="false" transient="false" viewId="/task.jsp"/>
              
              ========================================
              
              15:26:33,114 [HttpRequestHandler-11023888] DEBUG LifecycleImpl : exiting renderResponse in org.apache.myfaces.lifecycle.LifecycleImpl
              15:26:33,129 [HttpRequestHandler-11023888] DEBUG JbpmContext : closing JbpmContext
              15:26:33,129 [HttpRequestHandler-11023888] DEBUG Services : closing service 'persistence': org.jbpm.persistence.db.DbPersistenceService@11ef9f6
              15:26:33,129 [HttpRequestHandler-11023888] DEBUG DbPersistenceService : committing hibernate transaction
              15:26:33,192 [HttpRequestHandler-11023888] DEBUG DbPersistenceService : closing hibernate session
              15:26:33,192 [HttpRequestHandler-11023888] DEBUG Services : closing service 'logging': org.jbpm.logging.db.DbLoggingService@928095
              15:26:33,192 [HttpRequestHandler-11023888] DEBUG Services : closing service 'authentication': org.jbpm.security.authentication.DefaultAuthenticationService@37c7ee
              


              Thanks for any help,
              Chad

              • 4. Re: Anyone running jBPM on Oralce AS 10.1.2 ?
                Ronald van Kuijk Master

                does oracle have some jsf things in its path? Could be that they collide with the myfaces things.

                • 5. Re: Anyone running jBPM on Oralce AS 10.1.2 ?
                  Chad Cummings Newbie

                  I don't think so... only the myfaces jars, which are in my WAR file.
                  This is the only thing that is deployed to the container. The global applib only has the database driver in it.

                  Here is some more info on the same error I'm getting...

                  I am using the oracle.create.sql from the Wiki page http://wiki.jboss.org/wiki/Wiki.jsp?page=JbpmOnOracle

                  I loaded the database with "/src/resources/hsqldb/identity.db.xml" data using the ant task "loadidentities". This gives me the cookie monster, ernie, bert, and grover Users.

                  I deployed the websale process using the jBPM IDE plugin. The websale process found in "src\process.examples\websale.par".

                  Now, I am running a webapp that has the jBPM.jar bundled with it. It has all the other required libs and configs to get it running.

                  I am able to login, and it shows the home page with the two datatables showing the TaskList and Start New Process Exection.


                  After stepping through the code in debug mode...

                  I put a breakpoint in the TaskBean.java (around line 120) in the initialize() method.

                  When it tries to get the available transitions, the "if" condition is true (size = 1), and then sets availableTranstions and availableTransitionItems to NULL.

                   // get the available transitions
                   availableTransitions = null;
                  
                   availableTransitions = taskInstance.getAvailableTransitions();
                   if ((availableTransitions != null) && (availableTransitions.size() <= 1)) {
                   availableTransitions = null;
                   availableTransitionItems = null;
                   } else {
                   availableTransitionItems = new ArrayList();
                   Iterator iter = availableTransitions.iterator();
                   while (iter.hasNext()) {
                   Transition transition = (Transition) iter.next();
                   SelectItem transitionItem = new SelectItem();
                   transitionItem.setValue(transition.getName());
                   transitionItem.setLabel(transition.getName());
                   transitionItem.setDisabled(false);
                   availableTransitionItems.add(transitionItem);
                   }
                   }
                  


                  any ideas?

                  Did the websale.process get deployed correctly? It said it did from the tool.

                  Do I need to package the websale.process archive in my webapp, since I'm not running jBPM as a service in the Oracle AS container?

                  Thanks,
                  Chad


                    • 6. Re: Anyone running jBPM on Oralce AS 10.1.2 ?
                      Ronald van Kuijk Master

                       

                      Did the websale.process get deployed correctly? It said it did from the tool.


                      Probably, if you see it in the list on the frontpage it has.

                      Do I need to package the websale.process archive in my webapp, since I'm not running jBPM as a service in the Oracle AS container?


                      No, you don't.

                      Is it the default websale process? If not, can you post it.

                      I do not see any info in the logging you posted, only normal debug statements. Is there some more info somewhere else.

                      Setting the transitions to null was (is?) the normal behaviour, since the default transition (the only one) has to be taken.

                      • 7. Re: Anyone running jBPM on Oralce AS 10.1.2 ?
                        Chad Cummings Newbie

                        Found it!!!
                        It is in the task.jsp file.

                        Their are JSF tags inside of JSTL logic c:choose.

                        <c:choose>
                         <c:when test="${!empty taskBean.availableTransitions}">
                         Task Actions:
                         <c:forEach var="availableTransition" items="${taskBean.availableTransitions}">
                         <c:set var="availableTransition" scope="request" value="${availableTransition}" />
                         <h:commandButton id="transitionButton" action="#{taskBean.saveAndClose}"
                         value="#{availableTransition.name}" />
                         </c:forEach>
                         </c:when>
                         <c:otherwise>
                         <h:commandButton id="transitionButton"
                         action="#{taskBean.saveAndClose}" value="Save and Close Task" />
                         </c:otherwise>
                        </c:choose>
                        


                        I commented this block of code out and the page rendered fine.

                        I'll make some changes and try not to use the JSTL tags and post back the results!

                        Thanks,
                        Chad

                        • 8. Re: Anyone running jBPM on Oralce AS 10.1.2 ?
                          Ronald van Kuijk Master

                          ??? why does this work on other servers? Could it be that oracle does have some jstl libs on its path? Or could it be the jsp compiler? hmm....