0
votes

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 .

1

1 Answers

1
votes

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?