6 Replies Latest reply on Aug 26, 2010 5:46 AM by objectiser

    The choreography execution environment

    glaucus

      Hi,

       

       

      I've been studying choreographies, starting with pi4soa and now with Savara.

       

       

      I don't have a clear concept on how the choreographies are executed, I mean, there's a engine to "run"(verify) the ws-cdl file?

       

      There's a way to execute a choreography just with ws-cdl and wsdl files or it'll always need a ws-bpel and his engine?

       

       

      In the TrailBlazer example, it seems like it uses jms to comunicate between the services. The project does not support yet web services?

       

       

      I'm sorry if I'm asking about some obvious thing or in the wrong place

       

       

      Thank you in advance

        • 1. Re: The choreography execution environment
          objectiser

          Hi

          I don't have a clear concept on how the choreographies are executed, I mean, there's a engine to "run"(verify) the ws-cdl file?

           

          There's a way to execute a choreography just with ws-cdl and wsdl files or it'll always need a ws-bpel and his engine?

           

          Choreographies are not intended to be executable. They provide a description of the externally observable behaviour of a set of interacting services.

           

          So you will always need service implementations, not necessarily BPEL though - could be any implementation language/technology, and theoretically any communication approach, async messaging (e.g. JMS), web services, etc.

           

          In the TrailBlazer example, it seems like it uses jms to comunicate between the services. The project does not support yet web services?

           

          The Trailblazer example uses ESB services, and the ESB uses JMS as its transport mechanism - so indirectly the example is using JMS.

           

          At present, the Savara Service Validators only monitor the JBossESB, but version 1.1 of Savara should also monitor web services.

           

          Regards

          Gary

          • 2. Re: The choreography execution environment
            glaucus

            Hi,

             

            Thank you for the explanation.

             

            You are saying that I can use java and web services for example, to execute my choreographies, right?

             

            The Savara's eclipse plugin provides me a way to generate the wsdl from a choreography. Eclipse provides me a way to generate the skeleton java from a wsdl. So, if I use both functions, might it work? will I have the choreography running (not exactly) at the end? in the latest version of Savara?

             

            I'm asking this because I've been tried this, and when I attempt to generate the java code from de wsdl it gives errors to me.

             

            Sorry if I've been this kind of pertinent, but I really want to execute a choreography and I think you could explain me how.

             

            Thank you

            • 3. Re: The choreography execution environment
              objectiser
              You are saying that I can use java and web services for example, to execute my choreographies, right?

               

               

              Yes, although I wouldn't use the word 'execute' - that is like saying I am going to execute my WSDL using Java. WSDL and WS-CDL are just descriptions of an interface between services - WSDL is a functional interface, whereas WS-CDL can be considered a behavioural interface.

               

              The Savara's eclipse plugin provides me a way to generate the wsdl from a choreography. Eclipse provides me a way to generate the skeleton java from a wsdl. So, if I use both functions, might it work? will I have the choreography running (not exactly) at the end? in the latest version of Savara?

               

              I'm asking this because I've been tried this, and when I attempt to generate the java code from de wsdl it gives errors to me.

               

              Sorry if I've been this kind of pertinent, but I really want to execute a choreography and I think you could explain me how.


               

              The approach you describe is one way to take a choreography and produce executable services that could then participate in enacting the choreography. However using this approach means that the Java implemented web services will be stateless - they won't enforce the behaviour defined in the choreography, i.e. any operation on the service could be called in any order.

               

              Whereas the choreography defines the ordering of operations called on a particular service - so the better way using the current Savara tools is to generate the WS-BPEL (aswell as WSDL), as the BPEL will enforce the behaviour.

               

              Regards

              Gary

              • 4. Re: The choreography execution environment
                objectiser

                Forgot to mention - what errors are you getting when generating Java from the WSDL?

                • 5. Re: The choreography execution environment
                  glaucus

                  Thank you again

                   

                  I've tryed to create the java from the generated wsdl using three different configurations:

                   

                  Tomcat6 and Axis:

                   

                  IWAB0399E Error in generating Java from WSDL:  java.io.IOException: Element quote is referenced but not defined.
                      java.io.IOException: Element quote is referenced but not defined.
                      at org.apache.axis.wsdl.symbolTable.SymbolTable.checkForUndefined(SymbolTable.java:670)
                      at org.apache.axis.wsdl.symbolTable.SymbolTable.add(SymbolTable.java:545)
                      at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:518)
                      at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:495)
                      at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361)
                      at java.lang.Thread.run(Thread.java:619)

                   

                  Tomcat6 and Axis2:

                   

                  IWAB0014E Unexpected exception occurred.
                   
                        java.lang.NullPointerException
                        at org.eclipse.jst.ws.internal.consumption.command.common.CreateFacetedProjectCommand.containsWebFacet(CreateFacetedProjectCommand.java:106)
                        at org.eclipse.jst.ws.internal.consumption.command.common.CreateFacetedProjectCommand.getDataModelForTemplate(CreateFacetedProjectCommand.java:134)
                        at org.eclipse.jst.ws.internal.consumption.command.common.CreateFacetedProjectCommand.execute(CreateFacetedProjectCommand.java:163)
                        at org.eclipse.jst.ws.internal.creation.ui.extension.PreServiceAssembleCommand.execute(PreServiceAssembleCommand.java:102)
                        at org.eclipse.wst.command.internal.env.core.fragment.CommandFragmentEngine.runCommand(CommandFragmentEngine.java:419)

                   

                  (and continues)

                   

                  JBoss5.1.0 ans JBossWS:

                   

                  Failed to generate implementation class
                      org.eclipse.core.runtime.CoreException: Failed to Generate Web Service code, please check the log for more details
                      at org.jboss.tools.ws.creation.core.commands.ImplementationClassCreationCommand.getCompilationUnitForInterface(ImplementationClassCreationCommand.java:446)
                      at org.jboss.tools.ws.creation.core.commands.ImplementationClassCreationCommand.generateImplClass(ImplementationClassCreationCommand.java:133)
                      at org.jboss.tools.ws.creation.core.commands.ImplementationClassCreationCommand.execute(ImplementationClassCreationCommand.java:97)
                      at org.eclipse.wst.command.internal.env.core.fragment.CommandFragmentEngine.runCommand(CommandFragmentEngine.java:419)

                   

                  (and continues)

                   

                   

                  The first stack looks like more accurate.

                   

                  I'll try to execute the first example of the getting started (the Purchase example) in ODE.

                   

                  I really want to enact my first choreography!

                   

                  thank you!

                  • 6. Re: The choreography execution environment
                    objectiser

                    Hi

                     

                    Could you create a jira bug attaching the choreography, the generated wsdl and the details of what you do to try generating the web service. Also include all you environment details.

                     

                    Thanks in advance.

                     

                    Regards

                    Gary