[rules-users] looping in drools
Davide Sottara
dsotty at gmail.com
Mon Mar 10 14:39:46 EDT 2014
"from" will iterate for you, exactly like "accumulate" counted the events.
If you need more details, please consult the documentation
On 03/10/2014 07:29 PM, Sandhya Sree wrote:
> The problem here is even if multiple files are added, there is only
> one event object created. i want to have like say if 3 new files are
> added, 3 event objects must be created, and all three event objects
> must be added to List<Event> listOfEvents.
>
>
> Thanks.
>
>
> On Mon, Mar 10, 2014 at 11:48 PM, Davide Sottara <dsotty at gmail.com
> <mailto:dsotty at gmail.com>> wrote:
>
> The "accumulates" should not be in the "then" part of a rule (see
> my previous email).
> That rule gave you two lists, in the variables $plus and $mins,
> that you can use in the consequence.
>
> If you need to process each file separately, you may want to do
> something like this:
>
> rule "new file"
> when
> FileData($old : fileOld, $new : fileNew, fileOld != fileNew)
> $newFile : String( this not memberOf $old ) from $new
> then
> // create new event for a new file : new Event(...)
> // add to list : Event.listOfEvents.add(...)
> end
>
> You'll need another rule for the files that have been removed.
>
> Notice that your Event class has no way to distinguish "added"
> from "removed" files, you may want to
> add a boolean or something there.
> Best
> Davide
>
>
> On 03/10/2014 07:04 PM, Sandhya Sree wrote:
>> hi,
>> im new to drools..im trying to create a project as follows. i
>> have a class called Monitor which monitors a folder and creates
>> two lists called fileOld( which is the list of filenames in that
>> folder at time t1) and fileNew(which is the list of filenames in
>> that folder at time t2). i have another class called FileData
>> which contains two members fileOld and fileNew (list of strings)
>> with getters,setters and constructor. fileOld and fileNew from
>> Monitor Class are passed to FileData class.
>>
>> i also have another class called Event which is as follows:
>> public class Event {
>> public static String name;
>> private File source;
>> private Date timeStamp;
>> public static List<Event> listOfEvents = new
>> ArrayList<Event>();
>>
>> public Event(String name, File source, Date timeStamp) {
>> this.name <http://this.name> = name;
>> this.source = source;
>> this.timeStamp = timeStamp;
>> }
>> public String getName() {
>> return name;
>> }
>> public void setName(String name) {
>> this.name <http://this.name> = name;
>> }
>> public File getSource() {
>> return source;
>> }
>> public void setSource(File source) {
>> this.source = source;
>> }
>> public Date getTimeStamp() {
>> return timeStamp;
>> }
>> public void setTimeStamp(Date timeStamp) {
>> this.timeStamp = timeStamp;
>> }
>>
>> now i have to compare these two lists(fileOld and fileNew) in a
>> rule file and if they are not equal i have to create an event
>> object for every file added and deleted and put it in the
>> List<Event> listOfEvents.
>>
>> here is my rule file:
>>
>> rrule "files are equal"
>> when
>> FileData( fileOld == fileNew)
>> then
>> System.out.println("files are equal");
>> end
>>
>>
>> rule "files not equal"
>> when
>> FileData($old : fileOld, $new : fileNew, fileOld != fileNew)
>>
>> then
>> accumulate( $s : String( this not memberOf $old ) from $new,
>> $plus : collectList( $s ) )
>> accumulate( $t : String( this not memberOf $new ) from $old,
>> $mins : collectList( $t ) )
>> System.out.println("files added:" + $plus );
>> System.out.println( "files deleted:" + $mins );
>> end
>>
>>
>>
>> how can i loop through each of the file added or deleted and
>> create an Event Class object for every file added and deleted
>> and finally add all the created objects to List<Event>
>> listOfEvents..
>>
>>
>> Thanks.
>>
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org <mailto:rules-users at lists.jboss.org>
>> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org <mailto:rules-users at lists.jboss.org>
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20140310/ab700298/attachment-0001.html
More information about the rules-users
mailing list