2009-08-07 8 views
1

Ich bin ziemlich neu zu drools und ich renne in einige Probleme, die ich nicht wirklich verstehen kann. Ich versuche, ein Zuordnungsproblem und einer meiner LHS wie dieser aus irgendeinem GrundeDrools Experte/Solver - 5.0.1 passt

 
$leftAlloc: SlotAllocation($leftRes: resource) 
$rightAlloc: SlotAllocation(this != $leftAlloc, resource == $leftRes) 

geht zu lösen die zweite Aussage nichts paßt auch ich mich bin sicher, dass es eine Übereinstimmung in dem Arbeitsspeicher ist. Wenn ich den Code oben mit dem folgenden ändern, funktioniert es gut

Kann mir jemand dies erklären?

Danke!

+0

Können Sie posten, wie Ihre SlotAllocation-Bean aussieht? – Nick

Antwort

1

Sie sind wahrscheinlich besser dran, diese Frage auf der Drools-Benutzer-Mailing-Liste zu stellen (verwenden Sie einen Newsgroup-Reader, um eine Verbindung zu news.gmane.org herzustellen, wenn Sie Ihre Mailbox nicht verunreinigen möchten).

Wie für Ihre Frage: das ist wirklich seltsam. Ich sehe nur eine unwahrscheinliche Erklärung:

Zuerst sollten Sie wissen, dass resource == $leftRes) in der DRL tatsächlich getResource().equals($leftRes) aufrufen wird, so ist es nicht eine gleiche/Zeigerüberprüfung, sondern eine Gleich-Überprüfung.

Auf der anderen Seite wird eval(resource == $leftRes) einen gleichen/Zeiger überprüfen. Damit unwahrscheinliche Theorie ist, dass die Ressourcen-Klasse die Object.equals Methode überschreibt und nicht einmal zurückkehrt wahr, wenn es die gleiche Instanz ist ...

PS: Setzen Sie diese Diskussion auf der Liste Benutzer Mailing, wenn Sie weitere Fragen haben, und Sie will diese auch beantwortet haben.

+0

Danke für deine Antwort Geoffrey, ich habe versucht, Zugriff auf die Drools Benutzer-Mailing-Liste auf Nabble zu bekommen, aber ich denke, sie bewegen sich von Nabble 1.0 zu 2.0 und ich wurde nie akzeptiert? Wie auch immer über das Problem, ich war in Kontakt mit Jboss und sie suchen sich das an. Ich kenne den Unterschied zwischen eval und == und ich ging durch den Code und die equals-Methode wird überhaupt nicht aufgerufen! BTW - Ich verwende Ihren Solver und ich mag es wirklich. Wir müssen es vielleicht ein wenig erweitern (Zweig und Grenze?) Wenn das passiert, werde ich definitiv versuchen, mit Ihnen in Kontakt zu treten, wenn Sie es in den Hauptstamm aufnehmen möchten – mericano1

+0

Ein Zweig-und-Grenze-Experiment ist willkommen, nur Gabel uns auf GitHub und senden Sie mir eine Pull-Anfrage :) Ich möchte auch Branch und gebunden implementieren, aber um es zu tun, muss Planer (= Löser) mehr über die Domäne (möglicherweise mit Anmerkungen oder etwas) wissen, so dass dies richtig gemacht werden muss . –

+0

Aber für meine Erfahrung, Branch und Grenze skaliert nicht gut genug, um in der Produktion verwendet werden. –