Perfect! I am very happy you like it. I was not sure if I could transmit my message in an understandable way (I came drunken from a birthday party of my buddy but wasnt tired ;) All in all we have very cool stuff in our pipeline. I think the best stuff is yet to come!
I have read the thread and I am happy that you will make a roadmap / project plan. I will definitely contribute!
About this business process execution project (code name BPE; the name changes if I find a better (viral) one ;-).
I think BPE should be a separated project on top of vertigo as it uses higher level concepts (SBPM) and keep vertigo focused on the network level.
I plan to add the following features in BPE & vertigo:
*
BPE: Integrate Yoke for nice and easy to use web stuff
*
BPE: Actor (User or Machine), Subject and Role rights management. (requirement of SBPM)
*
BPE: model business processes and generate code stubs
* first a command line tool (like a compiler)
* second a UI with runtime process integration
*
vertigo & BPE: Proxy components / subjects, so on network instantiation a component is represented by a proxy and the proxy is replaced by a component instance on a condition (A Customer sends a purchase order and the concrete Employee instance (which represents a real employee) is later delegated (by the boss / task scheduler) to execute the customer purchase.)
*
vertigo: integrate ScopeSelector in vertigo for fail-save & high performance network instantiation. The ScopeSelector uses message attributes like a primary key to instantiate a process or lookup a running one. I think this concept is interesting, maybe we could use a similar key to address specific componet instances. This is very similar to hash selector.
*
vertigo & BPE: state persistence of components / subjects. Maybe we need to persist all previous so that business processes can be investigated later (think of a customer purchase process which customers aborted half the time, so you need all previous states to see what has happened and lead to the abortion)
*
MAYBE vertigo & BPE: use a single component instance in multiple networks; not sure if we have such a requirement; maybe the proxy components are enough
PS: As a side note to efficient a message acking: I talked last week with the founders
of Flink (
http://flink.incubator.apache.org/) and ask them how they
handle message acking efficiently. Basicly they put multiple messages in
a bucket and ack the whole bucket, which reduced the acking overhead
dramatically. I was puzzled because this solution is simple and leads to
good results in environments with low error rate. Maybe this trick
helps you to increase vertigo performance.