Mark Proctor wrote:
David Boaz wrote:
Hi all,

Is it possible to determine the Pattern that ‘produced’ a given Fact? For
example, assuming we have the following rule and event handler:

rule r1
    when         p1:Person(...)
        p2:Person(...)
    then
    ...
end

protected class MyAgendaEventHandler extends
        DefaultAgendaEventListener {

    @Override
    public void
afterActivationFired(org.drools.event.rule.AfterActivationFiredEvent event)
{
        String ruleName = event.getActivation().getRule().getName();
        KnowledgeRuntime knowledgeRuntime = event.getKnowledgeRuntime();
for (FactHandle factHandle : event.getActivation().getFactHandles()) {
            Object fact = knowledgeRuntime.getObject(factHandle);
            Pattern pattern= ?;
        }
    }
}

Is it possible to determine the Pattern that originate a Person object? If
yes, how the pattern is identified?
no
We'll that's not exactly true, but it's not something an end user should be doing. But the basic jist is the Activation wraps the AgendaItem if you can get access to that it has a Tuple field, this references the chaines of tuples that make up the row of data. you can iterate that chain and each one has a handle field which you can match up with the facthandle you are searching for. Further more each tuple references the join node it was added via, which also has an index number, so you can deduce the pattern from there. However I seriously doubt this is what you want, and you probably need to think harder about your use case.

Mark
Thanks, David


_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users




_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to