2009-04-29 7 views
0

Ich habe eine Regel LHS wie diegeifert sammeln Muster Problem

when 
    $location : Location() 
    $cabinets : ArrayList() from collect (Cabinet() from $location.elements()) 
then 

ein, wenn ich den Inhalt @cabinets in RHS drucke ich sehen, dass es alle Elemente enthält (auch solche, die nicht der Klasse Cabinet sind).

Ich möchte nur Schränke von $ location> elements() sammeln.

Was habe ich falsch gemacht?

Antwort

-1

ich glaube, Sie etwas entlang der Linien von

Cabinet(class == Cabinet.class) 

sagen würde, ich denke nicht, daß das geifert eine explizite Typprüfung der Cabinet Klassen tut, wie Sie sie afaik haben.

+0

nach tun, dass ich kann keinen Feldwert des Typs ‚Valuetype =‚Objekt‘‘ und den Wert ‚Cabinet.class‘ erstellen: [Regelnamen = Urządzenia bez szafy, agendagruppe = MAIN, salienz = 0, no-loop = false] java.lang.NoSuchFieldException: classUnable zum Erstellen einer Einschränkung '[QualifiedIndentifierRestr: == Cabinet.class]' für das Feld 'class' in der Regel ' Urządzenia bez szafy ': [Name der Regel = Urządzenia bez szafy, agendagruppe = MAIN, salienz = 0, no-loop = falsch] so ist es wahrscheinlich falsch –

-1

Ihre Frage bezieht sich auf das "von" Muster, nicht das "Sammeln".

folgende Regel sollte Test helfen:

when 
    $location : Location() 
    $cabinet : Cabinet() from $location.elements() 
then 

Diese Regel für jedes Kabinett in Position feuern sollte.

Sie können versuchen, Ihre Frage zu stellen auf den rule-users user list

+0

Yse aber was ist, wenn ich die Menge der gesammelten Schränke? –

+0

so $ Schränke: ArrayList (Größe == 3) von Collect (Cabinet() von $ location.elements()) –

+0

Sicher dann müssen Sie sammeln verwenden, aber das Problem, das Sie haben, ist, dass 'von' zurück Elemente von anderem Typ als Cabinet. Wenn Sie also "von" haben können, um nur Schränke zurückzugeben, können Sie Collect verwenden, um eine ArrayList zu erstellen, die nur Schränke enthält ... – pgras