10 Replies Latest reply on May 31, 2008 8:38 AM by marklittle

    Encoding service behaviour with Conversation based actions

    objectiser

      A new work programme has been started, as part of the Overlord governance project, to explore an approach for encoding the behaviour of a service endpoint (derived from a WS-CDL choreography description) as a set of ESB service descriptors with action pipelines. This work will initially tackle a subset of the behaviour that can be expressed in a WS-CDL choreography description, to create a mechanism that is capable of describing the core concepts of WS-CDL. The aim will be to provide:

      a) a generation tool to create an initial implementation of a service (or services) from a choreography description

      b) runtime support for the execution of services described in this manner

      c) sufficient information to infer the service behaviour at compile time, and perform a conformance check against the choreography description to ensure compliance


      There are two main aspects to this work:

      (i) Defining a session management mechanism to represent the stateful behaviour of a service, and ensure messages are only sent or received if the service instance is in an appropriate state (in accordance with the choreography description)

      (ii) Define the set of ESB actions that will provide the description of the service behaviour (for use in conformance checking), and provide the necessary runtime capabilities to enact the behaviour.


      The significance of this work is that it will enable an SOA to be fully testable, from requirements gathering through to implementation.

      Using the pi4soa tool suite (http://www.pi4soa.org), it is possible to gather requirements in the form of scenarios (like sequence diagrams with example messages), and then simulate them against a choreography description to ensure that the requirements are met by the choreography description. Once this work is completed, it will then be possible to generate the JBoss ESB actions required to enact a service endpoint's behaviour, and then continously check the ESB implementation for conformance to the choreography, as the service descriptors (and action pipelines) are modified.

      This will significantly reduce the errors that may occur due to incorrect implementation of the behaviour, that currently can only be detected by testing the system at runtime.

      To ensure continuous governance, it is also possible to monitor the execution of the ESB, to verify that the transactions continue to comply with the choreography description.

        • 1. Re: Encoding service behaviour with Conversation based actio
          marklittle

          Hi Gary. You said "it will then be possible to generate the JBoss ESB actions" but I've always assumed that would be just one possible output "format", i.e., we can tailor this for different environments. Is that what you're thinking too? I've specifically got in mind any changes that may occur when the next generation of JBossESB architecture comes around (don't want to have to revisit the wheel too many times.)

          • 2. Re: Encoding service behaviour with Conversation based actio
            objectiser

            Yes JBoss ESB would just be one possible target.

            My preference would be to generate to the model used by the service modelling tool (which is why I'm interested in the design of this), and then from this model we could generate to any relevant target supported by the service modeller.

            The same would apply to conformance checking - would prefer to drive this off the service modelling tool's model, and then report validation issues against these model components, which are then associated with graphical components - makes the user experience much better.

            This also means that we would need to be able to import JBoss ESB config files (amongst others) into the service modeller.

            • 3. Re: Encoding service behaviour with Conversation based actio
              marklittle

              OK. So I think we need to figure out if this service modeller is the same as (or similar enough to) the one that Thomas Erl donated. We don't want to have more than one. Have you taken a look at the design document?

              • 4. Re: Encoding service behaviour with Conversation based actio
                objectiser

                I had a brief scan though it - I need to have a more detailed look.

                How do you see the modelling tool working with other JBoss components?

                Is the model going to be a design artefact managed within an Eclipse project (and possibly versioned with cvs/svn), and then used to generate implementation artefacts that may then be deployed?

                Or do you see the model itself being an artefact that needs to be stored in a central repository - possibly part of the DNA project?

                • 5. Re: Encoding service behaviour with Conversation based actio
                  objectiser

                  One point about the service modeller - you previously sent me a link to one of your presentations where you showed inset images of a graph of interconnected components overlaid on top of other diagrams (e.g. BPMN).

                  Those inset images - are they provided by an existing tool, or was that your interpretation of how you thought services would be described?

                  • 6. Re: Encoding service behaviour with Conversation based actio
                    marklittle

                     

                    "objectiser" wrote:
                    I had a brief scan though it - I need to have a more detailed look.


                    I'm going to take another look too, to refresh my memory.


                    How do you see the modelling tool working with other JBoss components?

                    Is the model going to be a design artefact managed within an Eclipse project (and possibly versioned with cvs/svn), and then used to generate implementation artefacts that may then be deployed?

                    Or do you see the model itself being an artefact that needs to be stored in a central repository - possibly part of the DNA project?


                    That may depend upon where the model ends and the service contract begins. The contract has to be something that is available in the repository in order for arbitrary clients to locate and bind to the representative service. I'd always thought the model would be closely tied to the contract and as such would also be available in the repository.

                    Obviously there's a time when the service is being developed and no contract (model?) would exist initially - kind of a chicken and egg situation. I prefer to encourage contract driven development rather than implementation driven (with the contract being a second thought in the development process).

                    • 7. Re: Encoding service behaviour with Conversation based actio
                      marklittle

                       

                      "objectiser" wrote:
                      One point about the service modeller - you previously sent me a link to one of your presentations where you showed inset images of a graph of interconnected components overlaid on top of other diagrams (e.g. BPMN).

                      Those inset images - are they provided by an existing tool, or was that your interpretation of how you thought services would be described?


                      No, they were all mock-ups. I would get hung up on the BPMN references either: just an artifact of the mock-up.

                      • 8. Re: Encoding service behaviour with Conversation based actio
                        objectiser

                        I also think both the model and contract should be in the repository, as this will aid conformance checking on many aspects of the contract against the model.

                        Although I agree that contract driven development is better, it should not prevent the contract being specified after service development, and then used to generate an initial model.

                        • 9. Re: Encoding service behaviour with Conversation based actio
                          marklittle

                          I agree. We shouldn't (and neither should the tools) require a step-by-step development and integration approach for the contract work otherwise we'll lose an important user community. It should be possible for developers to come into this from different stages in the service lifecycle (including 'deployed and running'). After all, SOA is about leveraging existing infrastructural investments.

                          • 10. Re: Encoding service behaviour with Conversation based actio
                            marklittle

                            Just in case others haven't seen this before.