@wolfgang
Yesterday you told me to use accumulate instead of collect.
But i could not find the right way to use accumulate here.
Please see below my rules when condition [ collect function(Bold & Italic) ] and please tell me how can i use accumulate there. If possible change the conditional element to accumulate with appropriate changes.
when
// "Sensor Data Idem Stream" is where Mule sends the Sensordata facts
// for each Alarm / Sensordata combination that is identified via the vehicle id
$sd : SensorDataIdem ($vid : vehicleId) from entry-point "Sensor Data Idem Stream"
// Set a references for later on the initial facts
$av : AlarmVehicle(vehicleId == $vid)
//The Condition to be added to get the active Alarms from the List of Alarms
eval($av!=null && $av.getAlarms()!=null && $av.getAlarms().size()>0)
$alarms : ArrayList(size>0) from collect (
Alarm(
(
(activation == AlarmConstants.ALWAYS_ACTIVE)
|| (activation == AlarmConstants.ACTIVE_ONLY_ONTOUR && $sd.onTour == true)
|| (activation == AlarmConstants.ACTIVE_ONLY_NOT_ONTOUR && $sd.onTour == false)
|| (activation == AlarmConstants.ACTIVE_ONLY_ONMOVING && $sd.onMove == true)
|| (activation == AlarmConstants.ACTIVE_ON_TIME_WINDOW )
)
&&
(
(
(geofenceCustomer == 0)
|| (geofenceCustomer == 1 && $sd.inCustomerGeoFence == true)
|| (geofenceCustomer == 2 && $sd.inCustomerGeoFence == false)
)
&&
(
(geofenceDepot == 0)
|| (geofenceDepot == 1 && $sd.inDepotGeoFence == true)
|| (geofenceDepot == 2 && $sd.inDepotGeoFence == false)
)
)
)
from $av.getAlarms() )
eval($alarms!=null)
then
...........