Hi,

We've been thinking recently of how scary ODE could seem for anybody who
hasn't an intimate (and slightly obsessive) relationship with an XML parser.
Tooling is good but if you can't show anything that get fed into the engine
because it's several pages long, it gets harder to encourage adoption. And
basically, everybody ends up writing pseudo-code that is kind of BPEL but
not really, using names for services that make sense without necessarily
caring about partner link types, ports and port types.

So I've been trying to see how we could make all that much simpler to get
into without necessarily breaking what we have already (not completely
breaking BPEL) but making both needs cohabit. And that's probably not so
hard. For now I see principally two directions:

   1. Build an ODE Interface Layer to support easy embedding. Basically
   you would do something like:

       EmbeddedServer ode = new EmbeddedServer();
       ode.deploy(some_bpel);
       ode.send(some_xml_message);

   This would allow developers to come and mess around and also would
   encourage people to use orchestration directly inside their app without
   needing a full blown server and remote layers. There's a lot of
   simplifications that are possible here as people would just have to
   implement a couple of interfaces to get messages back from ODE or have ODE
   invoke their services. So I think we could go there essentially without WSDL
   (by mocking it).

   Making both modes (local invocations and remote invocations) cohabit
   could be a bit more tricky but I think that's doable. And then, call me
   crazy, but a local ODE could talk to a remote ODE, both invoking all kind of
   services and all sort of fun things could be built.

   2. Build a simple language, sort of equivalent to BPEL but easier on
   the eyes. Something like:

   process HelloWorld  {
     client.receive => request
     var replyVar = concat('Hello ', request)
     client.reply <= replyVar
   }

   That's just a dumb example and it would require some thinking to have
   a nice little language that supports all use cases with some syntactic sugar
   sprinkled on top. But writing a parser for this would then be pretty
   straightforward and as long as it can be translated to our internal object
   model we'd be able to execute it. Ideally we'd even be able to round-trip
   BPEL to and from it.

I think these 2 things could be very helpful in helping developers stop
wondering which namespaces to use or why a complex-typed message on a
doc/lit service doesn't work. And maybe some of them could start actually
think of solving real problems.

What do you think?

Matthieu

Reply via email to