Hi all, I'm looking for some distributed solution available with drools. I want to create a distributed Multi-agent architecture for my project using a shared working memory.
Searching for solutions, I found the DJess and Octopus solution that use the Jess inference engine. For Drools, I found this one: http://www.plugtree.com/making-a-non-persistent-ha-knowledge-session/ It seems that Kie is flexible enough to distribute the knowledge session in local ksessions, but I think that the ha-ksession doesn't provide a shared working memory to different kbases. Seeing the sample project, there's just one rule set (drl) with only one rule. I can use as a sample model to do what I want to do. This project showed me how I can extend the Kie and implement my own. I'm not familiar with Drools 6 yet, but I'm reading papers about distributed Rule-Based Systems concerning Multi-Agent Systems solutions and I didn't find any solution using Drools. The majority solutions were provided using a shared working memory with local copies. *Than, it gives me a question: is it possible to create a shared working memory with Drools?* To refresh What I mean, there's an old paper showing differences between Blackboard Systems and Rule-Based Systems (see Figure 1). <http://drools.46999.n3.nabble.com/file/n4029338/production_systems_vs_blackboard_systems.png> In Figure 1, the Blackboard is a shared working memory to insert facts, where each knowledge source (KS) is activated according with the facts inserted. Each KS is a specific expert with your own rules set that look for the blackboard to produce partial solutions that can be seen as new facts to be inserted in the blackboard. These partial solutions can activate more KS to produce new partial solutions until the final solution be reached. In contrast, in production systems, we build a knowledge base with a set o rules that can be activated according with facts inserted in a local working memory (there's no shared working memory between others kbases with their own rules set). In DJess, the authors introduce a model for distributing rule-based inference systems called Web of Inference Systems (WoIS). Each member of WoIS is composed of an inference system (IS) and a rule base, while all ISs operate on a single Shared Working Memory (SWM). WoIS is controlled by a dedicated component called manager (M). Each IS holds a copy of a part of the SWM in its local working memory, while all ISs run independently in parallel. This model was utilized to implement a distributed version of Jess called DJess. Synchronization between interfering rules is achieved by means of shadow facts and ghost facts. A shadow fact is a Jess fact linked to a Java bean object. Each shared fact is implemented as a shadow fact, and thus an associated Java bean object is created. All the proxies corresponding to the same shared fact are linked together by means of a Java remote object called ghost fact. Access of the ISs to the ghost facts are synchronized by acquiring locks during the transition from the conflict resolution stage to the act stage of an inference cycle. If not were done yet, I want to implement my own approach using Drools. I don't know if I can reach the final solution using Drools, but it seems the the Kie is flexible enough to be extend and I implement something. I'm planning to use the FIPA Subscribe protocol to synchronize the Shared Working Memory with a local working memory for each agent. "The FIPA Subscribe Interaction Protocol (IP) allows an agent to request a receiving agent to perform an action on subscription and subsequently when the referenced object changes" <http://fipa.org/specs/fipa00035/SC00035H.html> Regards, Daniel Souza -- View this message in context: http://drools.46999.n3.nabble.com/Distributed-Drools-tp4029338.html Sent from the Drools: User forum mailing list archive at Nabble.com. _______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users