Version 4

    In the business processing world, there has been much discussion about control vs. data flow. (For example, see this page.) The distinction is easier to understand in reference to a diagram:

     

    composite-service-model.jpg

     

    For the sample composite service shown above, what do the links between each service represent? Do they represent that data is sent from one service to another, or do they simply represent that control goes from one service to another? In some languages, such as BPEL (see reference above), the links represent control flow, with data being available in a process context.

     

    While control flow is implicit in data flow, data flow does levy the additional requirement that the link must be compatible with the attached service. In other words, the output message type(s) from the first service must match the input message type(s) for the attached service. (An open issue is whether all of the output message types need to be available as input message types in the attached service, or whether it will suffice to have a minimum of one match.)

     

    At present we are not sure if a supertype abstracting the difference of these two flows makes sense in the Service Modeler. That is, could the links represent a Flow (abstract) that is realized as control or data flow in the target implementation? We also note that this "strict message typing" for services is not specifically required by JBoss ESB: service calls are message type agnostic, with service implementations deciding how to react to different message types. It seems, however, that strict message typing is desirable at the modeling level, though perhaps it could be seen as optional?

     

    <-- Back to SOA Modeling Language