If we were going to make new services like 2Service and 3Services 
composed of combination of "detailed" services,
that would be a lot of services.

H.Ozawa

ash galal wrote:
>   Every service must be designed alone and encapsulated its own governance.
>    
>   Then when the customer wanted to have the three services together, this 
> will create a new service l call it, 3Service (composed of the 3 individual 
> services, dynamically at run time), which has its own governance and of 
> course more coarse-grained that is governed by business rules that allow for 
> such discount.
>   If the customer decided to cancel one of the service, then another composed 
> service lets call it, 2Servcies, that has its own governance. 
>   The 3Servcies has its own business rules that applied in case of 
> cancellation of one or more of its composed services and get back some of the 
> offered discounts, or take off all the discounts and follow the 2Servcies 
> governance policy. This is what is meant by business agility when work with 
> SOA since such business rules are designed by business people, which they can 
> change any time without affecting the IT or any SW that implementing the 
> services. 
>    
>    
> Thank you
>   Ashraf Galal  
> Hitoshi Ozawa <[EMAIL PROTECTED]> wrote:
>   Hi all,
> Just got another project with a major company! That said, this sounds 
> interesting.
>
> What if the hotel gave a discount when a customer reserved all 3 of a 
> room, a buttler, and a car.
> If there are made into 3 independent services, how would you handle when 
> a customer only wanted to cancel a buttler or a car?
> On the other hand, if they are made into 1 service with 3 interfaces, 
> how would you handle when a new hotel service to dining
> is to be added or when the hotel decided to outsource or change hotel's 
> car service?
>
> IMHO, services shouldn't be designed just based on IT but should take 
> into account business considerations such as how they will be used.
>
> H.Ozawa
>
>
> Michael Poulin wrote:
>   
>> Yes, Chris, you have asked many interesting questions. I will try to answer 
>> them one by one. 
>>
>> @Michael
>> In fact, this hotel booking example seems clear to me. Over that long time 
>> period I would implement an interface in that hotel service which allows to 
>> cancel a booking.
>> What I'm struggling with is the more detailed view on a service. Maybe it's 
>> more an architectural issue 
>> - how to define services - granularity?
>>
>> So, let's say the hotel service (for VIP guests)
>> - books a room
>> - books a private (hotel) buttler
>> - books a (hotel) car
>>
>> Would one define those 3 as services? 
>> Or as interfaces of hotel service? From my point of view they should be 
>> stand alone services, because maybe the car can be booked from another 
>> system, which doesn't know the hotel service.
>>
>> - A question about Service interface granularity one of the most painful but 
>> crucial questions in SOA. I do not know if there is a commonly recognised 
>> Best Practice except a recommendation of making the interface 
>> coarse-grained. My approach to defining multiple interfaces vs. multiple 
>> services is based on finding a logical communality between the service 
>> subjects. For example, does it make sense or is it allowed by the hotel 
>> policy to book a private butler w/o booking a room? I guess, room and car 
>> bookings are obviously separate things… (BTW, even if a car may be booked 
>> from another system, the hotel can provide a book-wrapper service just to 
>> hold on the user in the hotel’s realm and disallow him/her to go to another 
>> business unsupervised (where another hotel might be offered in addition to 
>> the car)).
>>
>> I know, that I should concentrate at the business view, 
>> but at the end it comes (often) down to database entries ;-)
>> - Y’r bet!
>>
>> So, assume these 3 actions are encaspulated in 3 services 
>> which are used by hotel service. 
>> They will be called synchronous one after the other without having 6 weeks 
>> of time between.
>> - I am not in favor of synchronous calls to the services because this 
>> couples the caller with uncontrolled service implementation and its 
>> resources.
>>
>> You mean, that also in this situation the services would commit database 
>> entries? Or would the orchestration software do this? 
>> - Certainly, this should be each service because it is the self-contained 
>> business (in spite of its ability to engage other services); orchestration 
>> only knows which service to invoke in what situation/order including 
>> compensation services.
>>
>> Does that mean, that every service must have a compensation implemented?
>> - I believe that good practice requires compensation for each service 
>> dealing with resources (i.e. if a service action can change the resource 
>> state). Nonetheless, this is usually skipped in the practice – many people 
>> have ‘positive’ approach to design in general and to process and/or business 
>> service design in particular, which is very wrong. I have noticed that it is 
>> not an exclusive problem of the IT; business has this sin as well.
>>
>> I couldn't find (in that short term) some best practises -
>> maybe that's what I'm looking for. You mentioned optimistic locking, which 
>> is in fact nothing else than the reservation concept Steve was talking about.
>> - I would say YES and NO. It may be the Steve’s reservation concept – each 
>> booking is done separately in full but not paid yet; in this case the 
>> booking condition is the postponed payment which has to be performed within 
>> certain time-widow. It also may be an optimistic locking, which does not 
>> prevent a competitor from taking your booking while it is not paid, i.e. the 
>> booking in this case is does not hold the reservation for you.
>>
>> Is it part of the definition of a service, that it must run in one session 
>> and within one transaction - I thing not.
>> - Agree
>>
>> At least I couldn't deviate this from any service definitions I found in the 
>> internet (e.g. see attached IBM definition).
>>
>> Maybe I mix up SOA service with webservice ...
>> - I do not think you mix
>>
>> However, I'm involved in the planing of a bigger project
>> and the preferred method is SOA by now. But of course
>> we need to become more familiar with this. (It's hard to find good training 
>> courses or consultants ...)
>>
>> We also had a look at different (technological) suppliers
>> and I don't want to start a big discussion here, but maybe ...
>>
>> BEA or Oracle SOA suite?
>>
>> What about the global transaction concept coming with Oracle ESB?
>> Is this feature feasible? 
>> Is it conform with any standards, which means would it run in any other 
>> Application Server? – I doubt.
>> - I was a big fan of BEA for many years. However, Oracle did impress me in 
>> its thoughtful and consistent approach to SOA ( I did not have hands-on 
>> experience with it, unfortunately) 
>>
>> hm .... many questions ... and still far 
>> away from omniscience ...
>>
>> Chris
>>
>> IBM:
>>
>> What is a service?
>>
>> A service in SOA is an application function packaged as a reusable component 
>> for use in a business process. It either provides information or facilitates 
>> a change to business data from one valid and consistent state to another. 
>> - With all respect to IBM, I do not think this definition is fully correct. 
>> I would rather used the one given in the SOA RM standard. First of all, SOA 
>> Service is not necessary an application function – it may include 
>> non-application functions like orchestrations, workflows and even manual 
>> operations. Second, a lot of services are not reusable in sense of reusable 
>> API but rather extendable due to its coarse-grained interfaces. Third, 
>> business process is unrelated to the application components. Fourth, SOA 
>> Service can do other things like orchestration of processes/services instead 
>> of dealing with data or information(?)
>>
>>
>> The process used to implement a particular service does not matter, as long 
>> as it responds to your commands and offers the quality of service you 
>> require.
>>
>> Through defined communication protocols, services can be invoked that stress 
>> interoperability and location transparency. A service has the appearance of 
>> a software component, in that it looks like a self-contained function from 
>> the service requester's perspective. 
>> However, the service implementation may actually involve many steps executed 
>> on different computers within one enterprise or on computers owned by a 
>> number of business partners. 
>>
>> A service might or might not be a component in the sense of encapsulated 
>> software. 
>> - Oh, how about “application function packaged as a reusable component”? It 
>> is not a good compilation after all.
>>
>> - Michael
>>
>> Christof wrote: Hi all,
>>
>> thanks a lot for your response. Maybe I'm thinking in 
>> a smaller granularity - regarding service definition 
>> and also execution time.
>>
>> @Michael
>> In fact, this hotel booking example seems clear to me. Over that 
>> long time period I would implement an interface in that 
>> hotel service which allows to cancel a booking.
>> What I'm struggling with is the more detailed view on 
>> a service. Maybe it's more an architectural issue 
>> - how to define services - granularity?
>>
>> So, let's say the hotel service (for VIP guests)
>> - books a room
>> - books a private (hotel) buttler
>> - books a (hotel) car
>>
>> Would one define those 3 as services? 
>> Or as interfaces of hotel service? From my point of 
>> view they should be stand alone services, because maybe
>> the car can be booked from another system, 
>> which doesn't know the hotel service.
>>
>> I know, that I should concentrate at the business view, 
>> but at the end it comes (often) down to database entries ;-)
>>
>> So, assume these 3 actions are encaspulated in 3 services 
>> which are used by hotel service. 
>> They will be called synchronous one after 
>> the other without having 6 weeks of time between.
>> You mean, that also in this situation the services 
>> would commit database entries? Or would the orchestration
>> software do this? 
>> Does that mean, that every service must have a 
>> compensation implemented?
>>
>> I couldn't find (in that short term) some best practises -
>> maybe that's what I'm looking for. You mentioned 
>> optimistic locking, which is in fact nothing 
>> else than the reservation concept Steve was
>> talking about.
>>
>> Is it part of the definition of a service,
>> that it must run in one session and
>> within one transaction - I thing not.
>>
>> At least I couldn't deviate this from any service definitions I
>> found in the internet (e.g. see attached IBM definition).
>>
>> Maybe I mix up SOA service with webservice ...
>>
>> However, I'm involved in the planing of a bigger project
>> and the preferred method is SOA by now. But of course
>> we need to become more familiar with this. (It's hard to find
>> good training courses or consultants ...)
>>
>> We also had a look at different (technological) suppliers
>> and I don't want to start a big discussion here, but maybe ...
>>
>> BEA or Oracle SOA suite?
>>
>> What about the global transaction concept coming 
>> with Oracle ESB?
>> Is this feature feasible? 
>> Is it conform with any standards, which means
>> would it run in any other Application Server?
>>
>> hm .... many questions ... and still far 
>> away from omniscience ...
>>
>> Chris
>>
>> IBM:
>>
>> What is a service?
>>
>> A service in SOA is an application function packaged as a reusable 
>> component for use in a business process. It either provides 
>> information 
>> or facilitates a change to business data from one valid and 
>> consistent state to another. The process used to implement a 
>> particular service does not matter, as long as it responds to 
>> your commands and offers the quality of service you require.
>>
>> Through defined communication protocols, services can be invoked 
>> that stress interoperability and location transparency. A service 
>> has the appearance of a software component, in that it looks 
>> like a self-contained function from the service requester's 
>> perspective. 
>> However, the service implementation may actually involve many steps 
>> executed on different computers within one enterprise or on computers 
>> owned by a number of business partners. A service might or might 
>> not be a component in the sense of encapsulated software. 
>> Like a class object, the requester application is capable 
>> of treating the service as one.
>>
>> Web services are based on invocation using SOAP messages 
>> which are described using WSDL over a standard protocol 
>> such as HTTP. Use of Web services is a best practice 
>> when communicating with external business partners.
>>
>> --- In [email protected], "Steve Jones" 
>> wrote:
>>     
>>> My take, and I'm sure Eric will want to jump in :)
>>>
>>> On 19/06/07, Christof wrote:
>>>       
>>>>
>>>>
>>>>
>>>>
>>>> Hi,
>>>>
>>>> I'm just trying to understand the concepts of SOA.
>>>> Comming from database development I'm maybe thinking to strong
>>>> in transactions, but exactly at this point I missed some answers
>>>> in the SOA world.
>>>>
>>>> I allready tried to find out some things by browsing the 
>>>>         
>> internet,
>>     
>>>> but that didn't really satisfy me. 2PC doesn't seem to be the
>>>> preferred method to handle transactions in a SOA environment and 
>>>>         
>> I
>>     
>>>> didn't fully understand how compensation services can fill the 
>>>>         
>> gap.
>>     
>>>> Maybe somebody from this group can clarify those points to me:
>>>>
>>>> - Does every service by definition includes a "commit" at the 
>>>>         
>> end?
>>     
>>>> Of course only talking about services which do some
>>>> insert/update/delete operations on a database.
>>>>         
>>> In database speak I'd say the best practice is "yes" and its not 
>>>       
>> just
>>     
>>> about database operations its about any operations so if you ask 
>>>       
>> for a
>>     
>>> forecast to be calculated then at the end of that interaction the
>>> calculation will have been done.
>>>
>>>       
>>>> - Or is the "calling" system (frontend, BPEL Engine ...) 
>>>>         
>> responsible
>>     
>>>> to commit changes to the database - or close the transaction?
>>>>         
>>> Only in the world of WS-TX, and I still haven't seen a strong use-
>>>       
>> case for that.
>>     
>>>> - How can a rollback be performed ( across multiple services )
>>>> e.g. the well know example of those 3 services:
>>>>
>>>> 1. book hotel
>>>> 2. book flight
>>>> 3. book car
>>>>
>>>> assume that those service calls are done in parallel and 1. and 
>>>>         
>> 2.
>>     
>>>> were working and left a commited status in different databases 
>>>>         
>> (or
>>     
>>>> even tables).
>>>>
>>>> service 3 gave an error and 1. and 2. needed to be undone.
>>>>
>>>> Without any restrictions this can of course be done with
>>>> compensation services, but what happens if anybody else in the
>>>> meantime changes the database entry which was created in 1. -
>>>> maybe, an hotel manager assigns this record to a work plan 
>>>>         
>> for the
>>     
>>>> cleaning team or anything else ....
>>>>         
>>> First off I'll say that databases are just a fancy file storage
>>> mechanism, secondly I'll say that many ERP systems don't have the
>>> concept of Rollback (just compensations) and thirdly having worked 
>>>       
>> in
>>     
>>> exactly this industry the answer is simple... you send a cancel
>>> message back saying "I don't need that hotel" and "I don't need that
>>> flight" now the issue you then jump on is "ah but what if payment 
>>>       
>> has
>>     
>>> been taken" which is where the concept of reservation comes in, so 
>>>       
>> you
>>     
>>> reserve the flight and hotel, but only submit payment and 
>>>       
>> confirmation
>>     
>>> after you've done all three.
>>>
>>> Every day Avis, BA, United, Hertz, Crowne Plaza, Hilton et al do
>>> exactly this and manage to cope without transactions.
>>>
>>>       
>>>> If nobody didn't update anything on those new records than it 
>>>>         
>> won't
>>     
>>>> be a problem, but otherwise ... ????
>>>>
>>>> How should one handle such situations in a SOA or at least 
>>>>         
>> service
>>     
>>>> oriented environment?
>>>>         
>>> Decent design that takes into account the unreliability of networked
>>> interactions and the potential for failure.
>>>
>>> Don't use WS-TX because it makes sense when you think about it from 
>>>       
>> a
>>     
>>> database perspective.
>>>       
>>>> Thanks for a short answer
>>>>
>>>> Chris
>>>>
>>>>
>>>>         
>>
>>
>>
>>
>> ---------------------------------
>> Boardwalk for $500? In 2007? Ha! 
>> Play Monopoly Here and Now (it's updated for today's economy) at Yahoo! 
>> Games.
>>
>>     
>
>
>
>
> Yahoo! Groups Links
>
>
>
>
>
>   



 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/service-orientated-architecture/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/service-orientated-architecture/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:[EMAIL PROTECTED] 
    mailto:[EMAIL PROTECTED]

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 

Reply via email to