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/
