1 2 3 Previous Next 30 Replies Latest reply on Jun 25, 2007 5:06 AM by Fady Matar Go to original post
      • 15. Re: jBPM integration question
        Pete Muir Master

        You just need

        @Name("org.jboss.seam.core.jbpm.init")
        @Install(true)
        public class JbpmInitializer extends Jbpm {


        to get it to start.

        I'm not sure which lines actually start jbpm, but I guess you know ;)

        I would do a super.startup() as well, to make sure that all the standard seam init occurs...

        • 16. Re: jBPM integration question
          Fady Matar Novice

          thanks for the feedback. I gave it a try at a simple level and I don't think it's working out. How can I check if the component has been initialized?

          • 17. Re: jBPM integration question
            Pete Muir Master

            It will appear in the startup log and on the debug page in application scope as xxx.component

            • 18. Re: jBPM integration question
              Fady Matar Novice

              I guess it's working, checked the logs and found the following

              2007-04-06 14:04:30,031 INFO [org.jboss.seam.Component] Component: org.jboss.seam.core.jbpm.init, scope: APPLICATION, type: JAVA_BEAN, class: org.jbpm.console.core.JbpmInitializer
              


              • 19. Re: jBPM integration question
                Fady Matar Novice

                upon installation the executed code is done in the startup method right?

                • 20. Re: jBPM integration question
                  Pete Muir Master

                  Yes, thats working. As the base component is annotated @Startup and in the application startup, then the component will be created during application startup, and hence, the method annotated @create will be run

                  • 21. Re: jBPM integration question
                    Thorsten Kunz Novice

                    This one works well for me

                    @Intercept(NEVER)
                    @Name("org.jboss.seam.core.jbpm.init")
                    @Startup(depends={"org.jboss.seam.core.jbpm"})
                    @Install(dependencies="org.jboss.seam.core.jbpm")
                    public class JbpmInitializer extends Jbpm {
                    
                     private static final LogProvider log = Logging.getLogProvider(JbpmInitializer.class);
                    
                     public void startup() throws Exception {
                     super.startup();
                     if(getProcessDefinitions() == null || getProcessDefinitions().length < 1 ) {
                     try {
                     getJbpmConfiguration().createJbpmContext().getContextSession();
                     } catch(Exception e) {
                     log.error("jBPM Initialization Exception: " + e.getMessage());
                     e.printStackTrace();
                     }
                     }
                     }
                    
                    }

                    With it you can either deploy your processes with Seam or with something external. It will only be used if you enable JBPM in your components.xml and if no process definitions are set it will handle your schema creation/update.

                    • 22. Re: jBPM integration question
                      Fady Matar Novice

                      Thanks a lot, got it working. I had commented out the jbpm configuration in components.xml

                      • 23. Re: jBPM integration question
                        Fady Matar Novice

                        Now this approach does not work out anymore since I upgraded from CVS to version 1.3.0.BETA1

                        @Interceptor(NEVER) is no longer there because of a change in API. I have created my modification as follows and still the jbpm database is not being deployed automatically without having any process definition or page flow declared.

                        package org.jboss.jbpm.console.console;
                        
                        import org.jboss.seam.annotations.Install;
                        import org.jboss.seam.annotations.Logger;
                        import org.jboss.seam.annotations.Name;
                        import org.jboss.seam.annotations.Startup;
                        import org.jboss.seam.annotations.intercept.Interceptor;
                        import org.jboss.seam.bpm.Jbpm;
                        import org.jboss.seam.log.Log;
                        
                        import static org.jboss.seam.annotations.intercept.InterceptorType.ANY;
                        
                        @Interceptor(type = ANY)
                        @Name("org.jboss.console.bpm.init")
                        @Startup(depends = { "org.jboss.seam.bpm.jbpm" })
                        @Install(dependencies = "org.jboss.seam.bpm.jbpm")
                        
                        public class JbpmInitializer extends Jbpm {
                        
                         @Logger
                         Log log;
                        
                         /**
                         * Startup method to start the jbpm context
                         */
                         public void startup() throws Exception {
                         super.startup();
                         if (getProcessDefinitions() == null
                         || getProcessDefinitions().length < 1) {
                         try {
                         log.debug("Starting up jBPM");
                         getJbpmConfiguration().createJbpmContext().getContextSession();
                         log.debug("jBPM initialized");
                         } catch (Exception e) {
                         log.error("jBPM Initialization Exception: " + e.getMessage());
                         e.printStackTrace();
                         }
                         }
                         }
                        }
                        
                        


                        • 24. Re: jBPM integration question
                          Gavin King Master

                          @BypassInterceptors is the replacement.

                          • 25. Re: jBPM integration question
                            Fady Matar Novice

                            Thanks Gavin but still that didn't work. Is there any parameter for the
                            BypassInterceptors ?

                            • 26. Re: jBPM integration question
                              Gavin King Master

                              I just added a new protected method, so you can do:

                              @Scope(ScopeType.APPLICATION)
                              @BypassInterceptors
                              @Startup
                              @Name("org.jboss.seam.bpm.jbpm")
                              public class MyJbpm extends org.jboss.seam.bpm.Jbpm
                              {
                               protected boolean isProcessDeploymentEnabled()
                               {
                               return true;
                               }
                              }


                              • 27. Re: jBPM integration question
                                Fady Matar Novice

                                Great, I'll checkout again from CVS and give it a try.

                                • 28. Re: jBPM integration question
                                  Fady Matar Novice

                                  Gavin, I have followed the approach and I can see the hibernate mappings on the console, however the tables are not being created and I'm sure that the datasource configuration is correct pointing to the right database.

                                  On the other end when commenting out the bpm configuration from the components.xml

                                  <bpm:jbpm>
                                   <bpm:process-definitions></bpm:process-definitions>
                                   <bpm:pageflow-definitions></bpm:pageflow-definitions>
                                  </bpm:jbpm>
                                  


                                  an exception is thrown indicating that the content of the XML elements cannot be empty

                                  • 29. Re: jBPM integration question
                                    Fady Matar Novice

                                    I figured out the error. The namespace wasn't declared in component.xml since it moved from 'core' to 'jbpm'

                                    But still the database contains no tables.