OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

soa-rm message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]

Subject: Re: [soa-rm] service composition scenarios

It seems that you see this as an atoms and molecules distinction. I can 
see that that would make sense.

On the POA front, that is a new distinction to me. I always assumed 
that SOA was equivalent to POA; but I am willing to be educated!

I agree completely that

"a service should not care whether it is being consumed as a single 
service or as part of some process. "

Why I think we might need to embrace POA is to be able to account for 
service intermediaries.

On reflection, I would agree that the WSA is much more a POA than a SOA


On Apr 20, 2005, at 2:43 PM, Duane Nickull wrote:

> Frank:
> I think I understand your point of view now.  The scenario you 
> describe above sounds similar to how I interpret Martin's process 
> management concept.  We wrote an architectural pattern for process as 
> a layer over top of SOA to illustrate that service consumers may 
> consume more than one services as a functional work unit.  There were 
> two basic patterns for consumption of multiple services - serial and 
> parallel. (see attached).
> The basic premise is that each service is an autonomous, oblivious 
> atom.  The layer of logic that maps out the 
> orchestration/choreography/rules of consuming more than one service is 
> the "POA" concept.  This equates to the process management concept 
> Martin referred to.  From a services perspective, I submit that a 
> service should not care whether it is being consumed as a single 
> service or as part of some process.  There is no distinction that the 
> service itself has to be aware of.  Note: If a service is to be used 
> as part of a process involving serial or parallel consumption of 
> multiple services, AND there is some sort of ACID policy, the service 
> probably needs to have functions for both "put()" and "commit()".
> This would be in alignment with the W3C WSA and WS* architecture.
> I can see that there is an open question regarding the scope of SOA.  
> Does it include the service consumer (either normative or in a non 
> normative manner).  If it does, should the concept be discussed since 
> process management is part of the service consumers functionality, not 
> the service itself.  My taking is that for the SOA Reference model, 
> this is probably out of bounds, but still open to discussion on this 
> matter.  I think that this is probably the basis for a second 
> reference model called Process Oriented Architecture (which suffers 
> from the same ambiguity as SOA due to the multiple perceptions of what 
> it really is.
> Nevertheless, it may be good to make note of this to help facilitate 
> understanding of how POA relates and dovetails into SOA.  I have some 
> axioms in mind:
> 1. Architecture may be both SOA and POA concurrently. (based on our 
> limited assumptions and understanding of what each of those are)
> 2. A service does not need to distinguish from services requests that 
> are part of a process involving more than one service vs. a single 
> call.  Any logic, choreography and/or orchestration for "transparent 
> service consumption's" MUST be kept away from the service itself. 3. 
> (however) Services MAY logically be in alignment with the types of 
> services required for a Service Consumer to execute a process 
> involving multiple services, either in parallel or serial invocation.
> We may need to consider how we can explain this is a section.  For 
> now, perhaps it can be added as place holder.
> My $0.02 CAD worth.
> Duane
> Francis McCabe wrote:
>> Duane:
>>  All your comments are fine. However, there is still the case of what 
>> I have referred to as the "transparent service combination".
>>  In that case, the services are combined, perhaps without the 
>> knowledge of the owners of those services, in a transparent manner -- 
>> where it is obvious that there are component services.
>>  A transparent service would typically not have a *single* provider 
>> -- or owner. The scenario is something like this: provider A offers a 
>> full meta description of service A, B likewise. A third party offers 
>> a transparent service as a combination of A & B. This third party 
>> need not have any a priori connection to either A or B.
>>  This is like the difference between a playlist and the MP3 file 
>> itself. The playlist tells you which tracks to play without embodying 
>> the music itself. You can trade playlists, merge them, etc. 
>> independently of the underlying music files.
>> Finally, there is another situation. Even supposing the intervention 
>> of an offering agent for a combined service, there are likely to be 
>> cases where the abstraction breaks down -- in error cases for 
>> example. In that case you will get faults along the lines of "you did 
>> not get your book because the Fedex dog ate it"
>> Frank
>> On Apr 20, 2005, at 12:54 PM, Duane Nickull wrote:
>>> TC:
>>> Although this may not be part of the core RM, this is probably an 
>>> interesting discussion to have.  The concept of service composition 
>>> has been raised a few times on the list.  I wanted to state a few 
>>> observations about this concept.  Please see attached diagram for 
>>> details.
>>> 1. Services are opaque by nature.  That means that the service 
>>> consumer cannot see anything beyond the interface (service 
>>> interface) it uses.  If one service is actually aggregating two 
>>> other services, the service consumer cannot and should not know 
>>> this.  From a service consumers viewpoint, a service is merely an 
>>> agent or interface that offer some function(s).  Whether those 
>>> functions are mapped to a set of classes in some native language or 
>>> another service is not important or relevant (other than the service 
>>> metadata stating what invoking the service means or does)
>>> 2. The service function (for service A) is described in the service 
>>> description specific to that service.  If completing the function 
>>> depends on two or more serial or parallel paths of execution 
>>> successfully completing behind the service interface (like calling 
>>> services B and C) within a certain time frame, that is not relevant 
>>> to state in the service description for service A.  The service 
>>> consumer is only concerned with the service's ultimate success or 
>>> failure.  Mapping the functionality to success and failure is the 
>>> responsibility of the service provider.
>>> Do you agree with this?  This supports the notion of opaqueness.
>>> 3. # 1 and # 2 above are mandatory to comply with a services 
>>> autonomous nature as described in the W3C WSA and subsequent 
>>> services architectures.  A service alone must determine whether the 
>>> service succeeds or fails.  If a service consumer can see any 
>>> specifics behind the service, this violates several of the core 
>>> principles of SOA.  If visibility beyond the offered service is 
>>> required, then the service does nor meet the demand of the service 
>>> consumer.  Accordingly, the service provider and consumer should 
>>> discuss and re engineer.
>>> When implementing, more complex patterns of service invocation can 
>>> be facilitated while keeping these three axioms.  If a transaction 
>>> sequence is needed, a service interface can offer two services - a 
>>> put() and a commit().
>>> Duane
>>> -- 
>>> ***********
>>> Senior Standards Strategist - Adobe Systems, Inc. - 
>>> http://www.adobe.com
>>> Vice Chair - UN/CEFACT Bureau Plenary - http://www.unece.org/cefact/
>>> Adobe Enterprise Developer Resources  - 
>>> http://www.adobe.com/enterprise/developer/main.html
>>> ***********
>>> <compositeServiceA.png>
> -- 
> ***********
> Senior Standards Strategist - Adobe Systems, Inc. - 
> http://www.adobe.com
> Vice Chair - UN/CEFACT Bureau Plenary - http://www.unece.org/cefact/
> Adobe Enterprise Developer Resources  - 
> http://www.adobe.com/enterprise/developer/main.html
> ***********
> <parallelServicePattern.png><serialServicePattern.png>

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]