Hmmmm... this may be the way it works, but it's not clear from the documentation-

"The Conditional Element from enables users to specify an arbitrary source for data to be matched by LHS patterns. This allows the engine to reason over data not in the Working Memory. The data source could be a sub-field on a bound variable or the results of a method call. It is a powerful construction that allows out of the box integration with other application components and frameworks. One common example is the integration with data retrieved on-demand from databases using hibernate named queries."

I therefore assume "...or the results of a method call" should mean "...or the results of a method call on a Fact" and the following should work:-

rule "dao"
  when
    $cs : CustomerRepository( )
    k : Customer(  ) from $cs.getCustomerService().findAll()

  then
    System.out.println( "Drools "+drools.getRule().getName()+"
: " +k.getName());
end

?

2011/10/31 Wolfgang Laun <wolfgang.laun@gmail.com>
If the "donator" isn't a fact, it's not visible to the engine.

Globals are OK on the RHS and as a provider for constant (!) data used as stand-in for literals on the LHS. Other than this: beware!

-W



2011/10/31 Michael Anstis <michael.anstis@gmail.com>

I thought use of the "from" keyword allowed you to reason over facts (potentially) not in WM. I believe the OP's example is mentioned in the docs?

sent on the move

On 31 Oct 2011 15:08, "Wolfgang Laun" <wolfgang.laun@gmail.com> wrote:

Globals cannot to be used - directly or indirectly - as objects that should trigger
the firing of rules. It is only insert, modify or update, and retract that cause (re-)evaluation of LHS conditions.

-W

On 31 October 2011 15:05, elsdestickere <elsdestickere@yahoo.com> wrote:
Hi,

I read docs about global and Hibernate to access your DB from the rules.
I tried something simular for in memory DAO's.
But some rules fire ("WM" in RHS) as the DAO has 3 items, but others ("dao"
in LHS) don't, how is that possible?

global RepositoryFactory repFact;
rule "dao"
   when
      k : Customer(  ) from repFact.getCustomerRepository().findAll();
   then
       System.out.println( "Drools "+drools.getRule().getName()+": "
+k.getName());
end
rule "WM"
   when
      k : Customer(  ) ;
   then
       System.out.println( "Drools "+drools.getRule().getName()+": "
+k.getName()+" + size: "+repFact.getCustomerRepository().findAll().size());
end
...
RepositoryFactory repFact = Registry.getRepositoryFactory();
ksession.setGlobal("repFact", repFact);
...
CustomerRepository customerRepo = Registry.getRepositoryFactory()
                               .getCustomerRepository();
customerRepo.add(tom);
customerRepo.add(elise);
customerRepo.add(bert);
ksession.insert(bert);
ksession.fireAllRules();

...
Output:
Drools WM: Bert + size: 3

br,
Els


--
View this message in context: http://drools.46999.n3.nabble.com/global-as-link-to-DB-different-results-tp3467897p3467897.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


_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users



_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users