3 Replies Latest reply on Dec 8, 2011 10:50 AM by melc

    Alternatives to the jBPM web console

    wendyschmitz

      I have recently downloaded and ran examples that came with jBPM 5, as well as reviewed the User Guide. I am researching on how to embed the jBPM engine into a custom web app, which will provide the UI (currently plan on using RichFaces) to invoke user/human task actions, kick off process instances etc.

       

      I am still unclear on how all the components of jBPM fits together and how I can achieve my goal. A few questions below.

       

      Please see the diagram here for a breakdown of the jBPM components/terminologies.

       

      1. Is it correct to say that my custom Richfaces webapp will replace the entire GWT console that came shipped in the installation, and that it will communicate directly with the Process Engine?
      2. What is the need for GWT Server component running on client machines?
      3. If I defined my own web console to communicate with the Process Engine, it means that it needs to work off a different implementation of the Integration Layer. How does the Integration Layer Impl interact with the Process Engine - what API is involved and where are the Javadocs located? I should also mention that I have trouble locating Javadocs for jbpm (org.jbpm.* packages). The only Javadoc that came with the install was Knowledge API (org.drools.* packages).
      4. Is Knowledge API the only interface that my custom web app will interact with in order to execute the Process Engine?

       

       

      Thanks,

      Wendy

        • 1. Re: Alternatives to the jBPM web console
          bpmn2user
          1. Is it correct to say that my custom Richfaces webapp will replace the entire GWT console that came shipped in the installation, and that it will communicate directly with the Process Engine?
          2. What is the need for GWT Server component running on client machines?

           

          It mainly depends on your design criteria. You can have  RichFaces client that will communicate directly with ProcessEngine. You can embed the jBPM runtime in the same application, instead of running on a seperate server if you choose to.

           

          3. If I defined my own web console to communicate with the Process Engine, it means that it needs to work off a different implementation of the Integration Layer. How does the Integration Layer Impl interact with the Process Engine - what API is involved and where are the Javadocs located? I should also mention that I have trouble locating Javadocs for jbpm (org.jbpm.* packages). The only Javadoc that came with the install was Knowledge API (org.drools.* packages).

          4. Is Knowledge API the only interface that my custom web app will interact with in order to execute the Process Engine?

           

          You can have mutiple design options for integration. Here is a simple web example that shows the usage of API from a simple jsp/servlet.

          http://community.jboss.org/people/bpmn2user/blog/2011/09/21/jbpm5-web-example#comment-8347

          • 2. Re: Alternatives to the jBPM web console
            wendyschmitz

            Thanks for the great resources and examples! I will try them out.

            • 3. Re: Alternatives to the jBPM web console
              melc

              Hi,

              We have created an alternative to gwt-console and are using only the server part gwt-console-server at the moment via its REST API, exactly as the existing gwt-console client communicates. That is a quick solution, alternatively you can also write your own gwt-console-server or as you already mentioned embed everything in one web application.

               

              1. I think the console that comes shipped in the installation is mostly great for testing purposes . For a real application you will probably need to modify layout/style and captions, display extra information (i.e. from your business domain) or remove some, maybe i18n etc. The communication with the process engine is done either by using the existing gwt-console-server or writing your own module using the jbpm5 engine.

               

              2. Yes you can certainly have everything in one web app, however by having the logic on a server component you can actually retrieve information and interact with your process engine from other systems  as well. For example you may want another app's screen to show the tasks that are pending for a specific user, nothing else....Of course you could publish web services from your web app but that is less loose coupled and not modular. A good example is gwt-console/gwt-console-sever.... we are able to create a different console client by reusing the server component. Also the console client is being used by other jboss modules of other frameworks (server components) i.e. Riftsaw, DroolsFlow

               

              3. I would advice to simply write your own integration layer that basicly handles the communication with the REST API of the gwt-console-server

              you can find info regarding the available methods from your jbpm5 installation   http://yourJBPMServer/gwt-console-server/rs/server/resources  

              It gives you flexibility on the way you delegate control to the server and how you retrieve data. However the code of the console is here, https://github.com/heiko-braun/bpm-console as well as docs.

               

              4. As bpmn2user mentioned there many design options so It really depends on the imlementation you choose... .whether you use directly the process core engine that you keep in your application or with a server component that handles a process engine i.e. the existing gwt-console-server