Viraj
Viraj

Reputation: 5411

Drools how to get object which the rule executed?

I have following specific requirement to be implemented in Drools. Don't know how to do this. If anyone know give me a direction.

In my project drool rules are associated into a java class . Rules are defined as string list filed in the class. I have list of these class objects and I need to execute rules of these classes. I used following code to add rules. Imagine "Test" class has the rules.

for (Test test : testList) {
                List<String> rules = test.getRules();
                if (rules != null) {
                    for (String rule : rules) {
                        System.out.println("Added Rule...");
                        knowledgeBuilder.add(ResourceFactory.newByteArrayResource(rule.getBytes()), ResourceType.DRL);
                    }
                }
            }

as facts "Test" object list and other required objects are added. Rules are executing without an issue. Now i need to get specific "Test" object which the rule succeed. Does anybody have an idea how to do this ? I think there should be a mechanism to combine Test object with rule, but don't know how to do that. Can any one help ?

Thanks in advance .

Upvotes: 0

Views: 1758

Answers (1)

Geoffrey De Smet
Geoffrey De Smet

Reputation: 27337

in the RHS of a rule there's a magic variable called kcontext (an instance of RuleContext), which supports kcontext.getMatch().getObjects().

Or maybe you're looking for the iterator methods available on the Session interface, which iterate through all of the facts in the working memory?

Upvotes: 1

Related Questions