Hi all,
There are several atomic services described in the CongoProcess
file that neither have outputs nor effects. I was wondering how can
these services be of use to us (entities other than the author). In my
understanding services either provide you with some information (e.g..
ISBN lookup service with the ISBN number as the output) or do some world
altering activity (e.g. the ExpressCongoBuy service whose execution
results in the book being shipped to its destination). The former has an
output and the latter has some effect. Here the output or effect implies
some sort of a change.
If a service does not indicate a change of state (i.e., if it does not
have i/e) then how can someone who discovers the service use it (say for
composition). Something does change when the service is executed but the
service does not reveal it. I would like to draw an analogy between such
services with methods that have return type "void". Take the example of
a program that implements a counter. The increment method in this
program returns void after incrementing the counter. I further name the
method foo. If I advertise this method as a web service how will one use
it since he/she has no idea about its internal workings. But if I return
a message (add an effect/output) that says "Counter_Incremented" then
won't it be much easier to comprehend what the service does (assuming
there is a Genie that maps Counter_Incremented to an my concept of
counter increment)..
What I make out of this is that as long as I don't provide an output or
effect, only I, as the writer of the program can use it. By describing
the effect, I describe the service to the extent that someone else might
be able to use it.
Do I make any sense or have I completely lost it.
mithun