[rules-users] Collect and hibernate
richarda
richard.ambridge at gmail.com
Thu Oct 29 13:02:16 EDT 2009
Thanks for all help.
To complete this thread, bug logged;
https://jira.jboss.org/jira/browse/JBRULES-2319
Edson Tirelli-4 wrote:
>
> Ouch. Bug. Would you please add a JIRA for that and a test case?
>
> Thanks,
> Edson
>
> 2009/10/29 richarda <richard.ambridge at gmail.com>
>
>>
>> Ok, I have found if I run in:
>> conf.setOption( EventProcessingOption.CLOUD );
>> it works..
>>
>> but in
>> conf.setOption( EventProcessingOption.STREAM );
>>
>> i get Null for the object
>>
>> any idea why?
>>
>>
>>
>> richarda wrote:
>> >
>> > Thanks for the continued help... but
>> >
>> > ---
>> > ArrayList<MessageAsEvent> a=new ArrayList<MessageAsEvent>();
>> > MessageAsEvent a1=new MessageAsEvent(); a1.setSerial("serial123");
>> > a1.setUuid("mesC:7"); a1.setId(888); a.add(a1);
>> > MessageAsEvent a2=new MessageAsEvent(); a2.setSerial("serial123");
>> > a2.setUuid("mesC:7"); a2.setId(889);a.add(a2);
>> >
>> > ksession.setGlobal("hibernateSession", hibernateSession);
>> > ksession.setGlobal("data", a);
>> >
>> > ----
>> >
>> > global java.util.ArrayList data;
>> >
>> > rule "Repeating as signature"
>> > when
>> > $m : MessageAsEvent(uuid=="mesC:7")
>> > $others : MessageAsEvent(uuid=="mesC:7", id!=$m.id)
>> > from data
>> > then
>> > System.out.println("++++++++++++Gathering in signatures
>> m="+$m+"
>> > data="+$others);
>> > insert($others);
>> > end
>> >
>> > ----
>> >
>> > and I still get;
>> > Audit:-
>> >
>> > <org.drools.audit.event.ActivationLogEvent>
>> > <type>4</type>
>> > <activationId>Repeating as signature [15, 14]</activationId>
>> > <rule>Repeating as signature</rule>
>> > <declarations>$others=MessageAsEvent:[888] uuid=mesC:7
>> serial=serial123
>> > count=0(15); $m=MessageAsEvent:[254] uuid=mesC:7 serial=serial123
>> > count=7(14)</declarations>
>> > <ruleFlowGroup>Signature</ruleFlowGroup>
>> > </org.drools.audit.event.ActivationLogEvent>
>> > <org.drools.audit.event.ActivationLogEvent>
>> > <type>4</type>
>> > <activationId>Repeating as signature [16, 14]</activationId>
>> > <rule>Repeating as signature</rule>
>> > <declarations>$others=MessageAsEvent:[889] uuid=mesC:7
>> serial=serial123
>> > count=0(16); $m=MessageAsEvent:[254] uuid=mesC:7 serial=serial123
>> > count=7(14)</declarations>
>> > <ruleFlowGroup>Signature</ruleFlowGroup>
>> > </org.drools.audit.event.ActivationLogEvent>
>> >
>> > Console:-
>> > ++++++++++++Gathering in signatures m=MessageAsEvent:[254] uuid=mesC:7
>> > serial=serial123 count=7 data=null
>> > ++++++++++++Gathering in signatures m=MessageAsEvent:[254] uuid=mesC:7
>> > serial=serial123 count=7 data=null
>> >
>> > with data=null being shown
>> >
>> >
>> >
>> > Edson Tirelli-4 wrote:
>> >>
>> >> You must be having a problem with the hibernate query then. Just as
>> a
>> >> test, try replacing the query call with an arbitrary method call that
>> >> returns a couple objects.
>> >>
>> >> Edson
>> >>
>> >>
>> >>
>> >> 2009/10/29 richarda <richard.ambridge at gmail.com>
>> >>
>> >>>
>> >>> Using Drools 5.0.1
>> >>>
>> >>> I get the same results with the below rule.
>> >>> I leave the System.out.println in, and the rule executes the number
>> of
>> >>> times for the number of items that should be loaded from the
>> hibernate,
>> >>> but each time the $o is still null.
>> >>>
>> >>> the insert seems to be ignored, audit shows no record of it, but I
>> >>> assume
>> >>> insert(null) is ignored by drools
>> >>>
>> >>>
>> >>> Edson Tirelli-4 wrote:
>> >>> >
>> >>> > Did you tried this?
>> >>> >
>> >>> > when
>> >>> > $m : MessageAsEvent(uuid=="mesC:7")
>> >>> > $o : MessageAsEvent(uuid=="mesC:7", id!=$m.id)
>> from
>> >>> > hibernateSession.createQuery("from MessageAsEvent where
>> >>> > serial=?").setParameter(0,$m.serial).list()
>> >>> > then
>> >>> > insert($o)
>> >>> > end
>> >>> >
>> >>> > In any case, collect should work too. Which version of drools
>> are
>> >>> you
>> >>> > using?
>> >>> >
>> >>> > []s
>> >>> > Edson
>> >>> >
>> >>> > 2009/10/29 richarda <richard.ambridge at gmail.com>
>> >>> >
>> >>> >>
>> >>> >> Hi again,
>> >>> >>
>> >>> >> I wish to have a rule that when an Event has a certain uuid then
>> load
>> >>> >> into
>> >>> >> working memory all other events that have been received for this
>> >>> unit...
>> >>> >>
>> >>> >> So I write the rule:
>> >>> >>
>> >>> >> rule "Repeating"
>> >>> >>
>> >>> >> when
>> >>> >> $m : MessageAsEvent(uuid=="mesC:7")
>> >>> >> $others : LinkedList() from collect (
>> >>> >> MessageAsEvent(uuid=="mesC:7",
>> id!=$m.id)
>> >>> >> from
>> hibernateSession.createQuery("from
>> >>> >> MessageAsEvent where
>> >>> >> serial=?").setParameter(0,$m.serial).list()
>> >>> >> )
>> >>> >> then
>> >>> >> System.out.println("Gathering m="+$m+"
>> >>> data="+$others);
>> >>> >> end
>> >>> >>
>> >>> >>
>> >>> >> Audit log shows: (wish cut and paste would work from Eclipse audit
>> >>> view)
>> >>> >>
>> >>> >> <activationId>Repeating [131, 14]</activationId>
>> >>> >> <rule>Repeating FAN</rule>
>> >>> >> <declarations>$others=[MessageAsEvent:[124] uuid=mesC:7
>> >>> serial=serial123
>> >>> >> count=7, MessageAsEvent:[94] uuid=mesC:7 serial=serial123 count=7,
>> >>> >> MessageAsEvent:[64] uuid=mesC:7 serial=serial123 count=7,
>> >>> >> MessageAsEvent:[118] uuid=mesC:7 serial=serial123 count=7,
>> >>> >> MessageAsEvent:[112] uuid=mesC:7 serial=serial123 count=7,
>> >>> >> MessageAsEvent:[106] uuid=mesC:7 serial=serial123 count=7,
>> >>> >> MessageAsEvent:[100] uuid=mesC:7 serial=serial123 count=7,
>> >>> >> MessageAsEvent:[88] uuid=mesC:7 serial=serial123 count=7,
>> >>> >> MessageAsEvent:[82] uuid=mesC:7 serial=serial123 count=7,
>> >>> >> MessageAsEvent:[76] uuid=mesC:7 serial=serial123 count=7,
>> >>> >> MessageAsEvent:[70] uuid=mesC:7 serial=serial123 count=7,
>> >>> >> MessageAsEvent:[58] uuid=mesC:7 serial=serial123 count=7,
>> >>> >> MessageAsEvent:[52] uuid=mesC:7 serial=serial123 count=7,
>> >>> >> MessageAsEvent:[46] uuid=mesC:7 serial=serial123 count=7,
>> >>> >> MessageAsEvent:[40] uuid=mesC:7 serial=serial123 count=7,
>> >>> >> MessageAsEvent:[34] uuid=mesC:7 serial=serial123 count=7](131);
>> >>> >> $m=MessageAsEvent:[130] uuid=mesC:7 serial=serial123
>> >>> >> count=7(14)</declarations>
>> >>> >> <ruleFlowGroup>Gathering</ruleFlowGroup>
>> >>> >>
>> >>> >>
>> >>> >>
>> >>> >> So, you can see that the rule fired with $others having all the
>> data,
>> >>> >> and
>> >>> >> $m being the main uuid
>> >>> >>
>> >>> >>
>> >>> >> but the output of the rule is:
>> >>> >> Gathering m=MessageAsEvent:[130] uuid=mesC:7 serial=serial123
>> count=7
>> >>> >> data=null
>> >>> >>
>> >>> >> so, the $others has been translated to a null.
>> >>> >>
>> >>> >> I'm trying to copy the Expert example:
>> >>> >>
>> >>> >> import java.util.LinkedList;
>> >>> >>
>> >>> >> rule "Send a message to all mothers"
>> >>> >> when
>> >>> >> $town : Town( name == 'Paris' )
>> >>> >> $mothers : LinkedList()
>> >>> >> from collect( Person( gender == 'F', children > 0 )
>> >>> >> from $town.getPeople()
>> >>> >> )
>> >>> >> then
>> >>> >> # send a message to all mothers
>> >>> >> end
>> >>> >>
>> >>> >> which indicates that $mothers will be available in the RHS
>> >>> >>
>> >>> >> for reference, the audit log shows when the rule fires:
>> >>> >>
>> >>> >>
>> >>> >> <org.drools.audit.event.ActivationLogEvent>
>> >>> >> <type>6</type>
>> >>> >> <activationId>Repeating [-1, 14]</activationId>
>> >>> >> <rule>Repeating FAN</rule>
>> >>> >> <declarations>$m=MessageAsEvent:[130] uuid=mesC:7
>> serial=serial123
>> >>> >> count=7(14)</declarations>
>> >>> >> <ruleFlowGroup>Gathering</ruleFlowGroup>
>> >>> >>
>> >>> >>
>> >>> >> What am I doing wrong?
>> >>> >> I basically want all the MessageAsEvent added to working memory,
>> so
>> >>> later
>> >>> >> other rules will do work on all the events.
>> >>> >>
>> >>> >> Cheers
>> >>> >> Ric
>> >>> >>
>> >>> >> --
>> >>> >> View this message in context:
>> >>> >>
>> http://www.nabble.com/Collect-and-hibernate-tp26112042p26112042.html
>> >>> >> Sent from the drools - user mailing list archive at Nabble.com.
>> >>> >>
>> >>> >> _______________________________________________
>> >>> >> rules-users mailing list
>> >>> >> rules-users at lists.jboss.org
>> >>> >> https://lists.jboss.org/mailman/listinfo/rules-users
>> >>> >>
>> >>> >
>> >>> >
>> >>> >
>> >>> > --
>> >>> > Edson Tirelli
>> >>> > JBoss Drools Core Development
>> >>> > JBoss by Red Hat @ www.jboss.com
>> >>> >
>> >>> > _______________________________________________
>> >>> > rules-users mailing list
>> >>> > rules-users at lists.jboss.org
>> >>> > https://lists.jboss.org/mailman/listinfo/rules-users
>> >>> >
>> >>> >
>> >>>
>> >>> --
>> >>> View this message in context:
>> >>> http://www.nabble.com/Collect-and-hibernate-tp26112042p26113182.html
>> >>> Sent from the drools - user mailing list archive at Nabble.com.
>> >>>
>> >>> _______________________________________________
>> >>> rules-users mailing list
>> >>> rules-users at lists.jboss.org
>> >>> https://lists.jboss.org/mailman/listinfo/rules-users
>> >>>
>> >>
>> >>
>> >>
>> >> --
>> >> Edson Tirelli
>> >> JBoss Drools Core Development
>> >> JBoss by Red Hat @ www.jboss.com
>> >>
>> >> _______________________________________________
>> >> rules-users mailing list
>> >> rules-users at lists.jboss.org
>> >> https://lists.jboss.org/mailman/listinfo/rules-users
>> >>
>> >>
>> >
>> >
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Collect-and-hibernate-tp26112042p26115484.html
>> Sent from the drools - user mailing list archive at Nabble.com.
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>
>
>
> --
> Edson Tirelli
> JBoss Drools Core Development
> JBoss by Red Hat @ www.jboss.com
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
--
View this message in context: http://www.nabble.com/Collect-and-hibernate-tp26112042p26116993.html
Sent from the drools - user mailing list archive at Nabble.com.
More information about the rules-users
mailing list