You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by Jamie McCrindle <ja...@gmail.com> on 2006/03/12 20:26:02 UTC

[ANN] BpmScript - Rhino Continuations based framework for ServiceMix

Hi all,

i've been working on a Business Process Engine written using Rhino
continuations for Servicemix 3.0. there's still a fair bit of work to
be done but you can check it out here: http://www.bpmscript.org.
current features are:

* Rhino based continuation framework for rapidly building and
deploying business processes
* The ability to call other processes (or even call a process recursively)
* Process versioning (i.e. processes can be updated by running process
instances will continue on the process they started on)
* Remote api for managing processes
* Web console
* Worklist
* Future based API for parallel processing

Check out the user guide at http://www.bpmscript.org/userguide.html
for information on how to get started.

Any suggestions, comments etc. would be much appreciated.

oh, and it's apache 2.0 licensed.

Jamie.

Re: [ANN] BpmScript - Rhino Continuations based framework for ServiceMix

Posted by Jamie McCrindle <ja...@gmail.com>.
hi Paul,

Thanks for you comments.

> - Correlation / instance identity: How do I know which instance I'll
> get by calling the BPMScript SE?

I've been pondering this. The way BPEL handles correlation is neat
(i.e. that you can correlate on arbitrary message content). There are
a couple of things:

* it should be relatively simple to target running instances (e.g.
register them as endpoints) -- i was considering this approach for
admin messages (i.e. if you wanted to send a friendly HUP to a process
instance rather than just killing it) or for retries.

* a lot of the time, when you're correlating you're waiting for a
specific message. in this case it's easier to have the javascript call
out to register interest in a particular message (based on some
corellation criteria) and then pause waiting for the response.

> - Non-trivial port bindings: Can I hit a named JavaScript function as a port?

You can currently hit a named Javascript function. Currently it's
using an "operation" property on the inbound message. In the future,
I'd like to align bpmscript more closely with the jbi/soa discovery
mechanisms e.g. allow you to deploy a wsdl for your process (closer to
BPEL :)

> It would be more interesting, to me at least, if this had more of a
> coroutine feel to it -- one JavaScript interpreter stack with multiple
> pointers into multiple functions with possibly suspended execution.

not sure if it's obvious enough from the docs but currently bpmscript
does support:

* multiple functions (from above)
* suspended execution
* multiple pointers into those functions (each process instance is a
single pointer into a process)

re: coroutines:

again, not sure if it's obvious but bpmscript will suspend execution
on a future.get(). this lets you do the loanbroker something like
this:

var bank1Future = sender.send("bank1"....);
var bank2Future = sender.send("bank2"....);
var bank3Future = sender.send("bank3"....);

var bank1Result = bank1Future.get();
var bank2Result = bank2Future.get();
var bank3Result = bank3Future.get();

and execution will be suspended on each of the future.get()'s. (or you
could use sender.waitForAll(bank1Future,bank2Future,bank3Future)).

basically the coroutine is hidden a little further up the stack but i
could expose it a little further down if it feels better to use.

> You realize, of course, that you're going to slide down the slope
> toward BPEL -- correlation, concurrency, XML manipulation, etc. -- but
> that's OK.  JavaScript-y syntax would be a nice variant.

yup. in some respects this project was born while waiting for the
exciting stuff you guys are putting together :)

Give bpmscript a go, though. It takes about 5 minutes to create a
business process using the Web Console and it's kinda fun.

Regards,
Jamie.

On 3/12/06, Paul Brown <pa...@gmail.com> wrote:
> Hi, Jamie --
>
> > i've been working on a Business Process Engine written using Rhino
> > continuations for Servicemix 3.0. there's still a fair bit of work to
> > be done but you can check it out here: http://www.bpmscript.org.
> > current features are: [...]
>
> Cute.
>
> The missing features based on a quick traversal of the documentation:
>
> - Correlation / instance identity: How do I know which instance I'll
> get by calling the BPMScript SE?
> - Non-trivial port bindings: Can I hit a named JavaScript function as a port?
>
> It would be more interesting, to me at least, if this had more of a
> coroutine feel to it -- one JavaScript interpreter stack with multiple
> pointers into multiple functions with possibly suspended execution.
>
> You realize, of course, that you're going to slide down the slope
> toward BPEL -- correlation, concurrency, XML manipulation, etc. -- but
> that's OK.  JavaScript-y syntax would be a nice variant.
>
> Paul
> ---
> http://mult.ifario.us
>

Re: [ANN] BpmScript - Rhino Continuations based framework for ServiceMix

Posted by Paul Brown <pa...@gmail.com>.
Hi, Jamie --

> i've been working on a Business Process Engine written using Rhino
> continuations for Servicemix 3.0. there's still a fair bit of work to
> be done but you can check it out here: http://www.bpmscript.org.
> current features are: [...]

Cute.

The missing features based on a quick traversal of the documentation:

- Correlation / instance identity: How do I know which instance I'll
get by calling the BPMScript SE?
- Non-trivial port bindings: Can I hit a named JavaScript function as a port?

It would be more interesting, to me at least, if this had more of a
coroutine feel to it -- one JavaScript interpreter stack with multiple
pointers into multiple functions with possibly suspended execution.

You realize, of course, that you're going to slide down the slope
toward BPEL -- correlation, concurrency, XML manipulation, etc. -- but
that's OK.  JavaScript-y syntax would be a nice variant.

Paul
---
http://mult.ifario.us