The heart of a typical service is in implementing the [http://umlaut.rubyforge.org/api/classes/Service.html#handle handle] method. When Umlaut wants a service to do it's thing, Umlaut will pass the request in, and it's up to the Service to do it's work.
The service can examine all metadata from the request, and even examine ServiceResponses generated by other services, and the status of other services in progress or finished. (See [http://umlaut.rubyforge.org/api/classes/Request.html#dispatched_services Request#
dispatched_services ], [http://umlaut.rubyforge.org/api/classes/Request.html# dispatched? Request#dispatched ] , [http://umlaut.rubyforge.org/api/classes/ Request.html# services_in_progress Request#services_in_progress], etc. )