[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [xmlblaster] Rule Based Publishing



Heinrich Götzger wrote:
Hi,

I'm planning to have a client connected to xmlBlaster which subscribes a
certain number of messages. This client is able to publish some other
messages. However the content of these published messages should be
dependent on the content of the subscribed messages.

I imagine a list of rules which get the subscribed messages as an input
and decide whether a certain message have to be published or not or a
message has to have a certain content.

This would be like a function: activity is dependent on the airTemperature
and waterTemperature.

for example:
activity(airTemperature, waterTemperature)
{
	if airTemperature > 30C
		if waterTemperature > 25C
			return "goSwimming"
		else
			return "orderCoolBeer"
	else
		return "orderHotChocolate"
}

But to be very flexible, I'd like to change the rules dynamically.

Yes, this is a good idea, i would prefer wodka if waterTemperature < 5°C

I.e. all of a sudden I don't like CoolBeer any longer and would prefer
CoolWhiteWine. Normally the process would be stopped, and a new one can be
started now. But I need to have a programmer, a compiler and so on. My
imagination is that the rule can be a message itself. And therefore can be
published and changed like every other message too.

Yes, handling the rules with messages gives you max. flexibility.

A "bath attendant" can change a rule in a browser
window and configure the system to wodka on the fly ...


How could I approach this requirement? Could it be just another plugin?

Yes and no. You can start the client as a separate process or embed it natively for better performance and one process less to handle.

See
 http://www.xmlblaster.org/xmlBlaster/doc/requirements/protocol.html
and
 xmlBlaster/src/java/org/xmlBlaster/protocol/nativ
for such a plugin.

The other plugin interfaces (authenication interceptor,
mime based publish interceptor and
mime based access interceptor)
are probably not appropriate for this task.

How could the rules be interpreted?

The Javascript approach with liveconnect (see Micheles mail) could be a simple and powerful solution. Every web developer knows the simple Javascript grammar, and other can learn it in a day.

see

 xmlBlaster/demo/javaclients/svg/rhino/chessRhino.svg

where Michele talks diectly from SVG with xmlBlaster (using Javascript).
(We have the rhino javascript parser in our distribution already).


Any suggestions, ideas or comments are very welcome.

Probably a rule based language (Lisp?) or some KI stuff is a better approach - but i don't know anything about this.

A nice GUI which allows the administrator to click the rules
graphically (a decision tree) would be a nice add on.

regards,

Marcel




-- Marcel Ruff mailto:ruff at swand.lake.de http://www.lake.de/home/lake/swand/ http://www.xmlBlaster.org