2017-09-28 10 views
0

J'ai besoin de conseils sur l'écriture d'une règle pour que Drools vérifie des valeurs distinctes.Drools - Vérifier s'il y a plusieurs événements avec des propriétés différentes dans wm

je un événement en tant que tel:

public class Event { 
    int propertyA; 
    String propertyB; 
} 

et je voudrais vérifier s'il y a Event s dans la mémoire de travail afin que leurs propertyA valeurs sont les mêmes, mais ils ont 4+ propertyB distinctes valeurs .

Par exemple: Si Event aurait été un utilisateur, et propertyA aurait été son id et propertyB une couleur t-shirt, je demanderions: S'il y a un utilisateur qui portait des T-shirts avec plus ou égal à (> =) 4 couleurs différentes

Comment puis-je implémenter cette règle? Merci!

Répondre

1

Localisez un événement avec un certain A, puis recueillir l'ensemble des hôtes de tous les événements de cette A.

$e: Event($a: propertyA) // $e ist the last of a group of As 
not Event(this after $e, propertyA == $a) 
accumulate(Event(propertyA == $a, $b: propertyB); 
      $set: collectSet($b); 
      $set.size() >= 4) 
+0

Ah 'collectSet'! –