Messaging

Simple event patterns using reactions with annotations and guards

Annotations and guards are useful for any general purpose rules. Messaging and reaction rules are no exception. rules/reloaded/guard.prova now contains an additional example that shows how annotations and guards can be used to detect sequential event patterns. First, let's look at the client.

:- eval(client()). 

client() :- 
	% Send all the test messages from a separate thread
	switch_thread(),

	sendMsg(XID,task,0,request,login(user1,'10.10.10.10')),
	% Wait synchronously, could have waited asynchronously instead
	java.lang.Thread.sleep(500L),

News on Prova rewrite

Prova rewrite is progressing further with partitioned reactions and ESB messaging re-implementation. The updated Mule Prova Agents project now has all previous tests working against new Prova. Apart from small differences in Prova syntax, the most significant difference for ESB messaging is that Prova agents send and receive ProvaListImpl objects instead of now obsolete RMessage. Check it out here: https://mandarax.svn.sourceforge.net/svnroot/mandarax/mule-prova-agents2.... All tests beginning with the word Prova (for example, ProvaPetriDeferredChoiceTest) are using the Prova rewrite code.

Mule Prova+Drools Agents updated to Mule 2.1.2

I have updated the Mule Prova Agents project at https://mandarax.svn.sourceforge.net/svnroot/mandarax/mule-prova-agents2... and all tests run fine now. The project uses the latest build of Prova, Mule 2.1.2 and Drools 5.0.0.M5.

There are at least three ways Prova or Drools could be brought into the Mule world:

a) Mule transports,
b) Mule agents,
c) Mule components.

Big cleanup: concurrency and messaging

Concurrency and messaging and rules in combination is a fairly grey area and the old Prova attempted to propose a solution. The new redesign should feel more consistent and useful. All details will be on http://prova.ws/confluence site but here is a short outline. Prova agents execute protocols and send and receive messages asynchronously.

More messaging updates: control messages and conversations thread affinity

More updates to messaging in the "new" Prova.

1. Added the spawn predicate that runs Java calls as tasks on the task thread pool. The result is shipped back as a message.
2. Added rcvMult reactions that are kept after a matching message arrives. This is comparable with the "every" construct in the Esper event processing language.
3. Any conversations with conversation XID are now always pinned to the same thread so that message ordering is preserved in any given conversation at all times.

Messaging on its way back to the "reloaded" Prova

We've started to add basic messaging capabilities to the new "reloaded" Prova version. The "old" version has an extensive agent, workflows and event programming framework so porting this functionality to the "new" version that is rewritten from scratch will take some time. So far, the basic in-process sendMsg and rcvMsg (both global and inline reactions) have been added. See the new tests in ProvaMessagingTest.java. For example, this is the already working use of inline reactions:

:- eval(msg002()).
msg002() :-
	println(["==========Messaging test 002=========="]),
Syndicate content