I need to make a black board kind of architecture in java which interacts with 3 modules in my system.Specifically i have addEmployee module,deleteEmployee module,and viewEmployee module.These three modules should write their respective objects(ie output) to a common place(black board) and send messages/notify to the remaining two modules that something is written in the black board.Then the other two modules can take the relevant information from the object.Can someone give a rough idea on how to proceed for the same.
If your modules are three separate applications:
You can use JMS, Blaze-DS etc.
If your modules are just a set of java classes that need to be notified, you can use wait/notify mechanism in java.
It really depends on what you mean by a module.
You could even poll a common static class OR database table for changes.
Joined: Jan 04, 2008
Thank you for the reply,atleast i have something to start with now
Joined: Jan 04, 2008
By modules i mean a separate independent application only.but talking about JMS,isn't it related to server programming stuff,what i am looking is
another application(blackboard,some kind of centralized class) .
Assume that we have three separate modules which work on the same input(say a paragraph of text). These modules perform mutually exclusive functionality, but the output of one module processing the input, may be required to be handled by the other two modules. In this scenario, a blackboard architecture would be appropriate to show to all the modules the subsequent output of a single module, and if one of the other modules deems it relevant to process this particular output, it should retrieve the output from the blackboard. I am clueless as to how to implement this architecture in Java.Ideas welcome
Thanks in advance
Joined: Apr 27, 2003
The three different applications can exchange information over SOCKETS.
Well JMS is a simply an application to which you can publish messages, and anyone subscribed to it will receive messages from it. It can run locally on a desktop OR it can be running on server side.
Your design/architecture is largely dependent on whether yours is a web-application or a desktop application.