[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [stp-dev] Re: Follow on meeting about the Hybrid Model

Guillaume Nodet ha scritto:
On 9/7/07, Andrea Zoppello <andrea.zoppello@xxxxxx> wrote:
Hi Guillaume,

I try to explain briefly about your doubt what are the means of the
entities in that model.


Guillaume Nodet ha scritto:
I'm sorry I missed this meeting... :-(

I have a few questions wrt to the meta model described at
http://wiki.eclipse.org/STP_Metamodel

The model defines the notion of service, binding and endpoint, but the
comments below do not put any definition behind these concepts ? Do
they have the same meaning than in WSDL ? If yes, where is the
Interface ? In which case would a service have more than one endpoint
?

This model aims to define both:

1) the concept of service in very similar way as it's in the
webservices world so this is
the reason for the presence of Service, ServiceBinding and Enpoint entities.

Well, I assumed that, hence my question about the PortType / Interface. Usually a service has a collection of endpoint. Each endpoint has a binding, and each binding has an interface. The interface is the abstract model, the binding has the protocol informations and the endpoint has the location information.

2) The concept of Process as a set of steps and transitions, each steps
use a services with
    a particular binding.

    When you're using the model to define business process you really
don't care about the
    services you just need to use in your step.

    Makin a very simple example suppose you have a business process
defined in terms of
    three step.

    - Take Input -> Make Some Business Transformation -> Make Data
Persistent -> Get Output

    this could be mapped to the service in:

    - TakeInput ( InputService) -> MakeSomeBusinessTransformation (
BusinessService ) -> MakeDataPersistent( BusinessService) -> GetOuptut(
OutputService)

    In that way you've a process with four step and two of that are
reusing the BusinessService.

    Then you coul put there the binding so you could have

    - TakeInput( InputService, JBIHttpInputBinding )
    ->MakeSomeBusinessTransformation ( BusinessService,
JBI-XSLT-ServiceEngineBinding )
    ->MakeDataPersistent( BusinessService, JBI-JDBC-ServiceEngineBinding )
    ->GetOuptut(OutputService, JBIHttpOutputComponent)

    But the "same business process" could have different "technological
details" changing the binding association in the step instances so the
same process could
    result in:

    - TakeInput( InputService, JBIJmsInputBinding )
    ->MakeSomeBusinessTransformation ( BusinessService,
JBI-XSLT-ServiceEngineBinding )
    ->MakeDataPersistent( BusinessService, JBI-JDBC-ServiceEngineBinding )
    ->GetOuptut(OutputService, JBIJmsOutputBinding)


Also I don't really see why a process step would be linked to a
binding ? It seems to me it should be linked to an Interface or an
Endpoint (if we want the physical location)...


Ok i'll try to explain in that term.

You can see the service as the Interface and the bindings as a particular service implementation.
Take the example of "BusinessTransformationService" you can do with:


- JBI XSLT Service Engine

- JBI-JavaBean Service Engine

- Whatever you want

this are the bindings...

So in step you simply decide which implementation you choose for a particular process
It's like to instantiate a service instance with a particular binding.


Whe choose to put that type of bind ( Step, Service, ServiceBinding ) in the Step
class, so you could.


1) Resuse the Service ( maybe with different bindings ) across multiple processes.

2) Resuse the same binding for more than one services

Speaking in JBI terms a Step will be mapped to an endpoint, the properties associated to that
step will configure the endpoint that will go on configuration files.



The physical location URI and other details are expresses as properties
of the steps.

I'm not sure if you mean that the same process can be used with
different bindings (it actually only uses the abstract model) or if
you want to bind it to real endpoints.
In the first case, I'd say there is a confusion between binding /
interface. In the second case, the process should reference an
endpoint (with the location information).


Sorry If I missed something...

All technical details like URI and so on will be expressed as properties.

I hope that now is clear, by the way i'm trying to get a working example that will generate
code for servicemix runtime with a basic process.


Andrea Zoppello
Engineering Eng. Informatica