2009-08-07 3 views
1

私はかなりdroolsに新しいです、そして、私は本当に理解できないいくつかの問題に走っています。 私は割り当ての問題を解決しようとしていると私のLHSの1は、第二の文もあなた私はワーキングメモリ内の一致があると確信しているものと一致していない何らかの理由でこのdroolsのエキスパート/ソルバー - 5.0.1の一致

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

のようになります。上記のコードを次のように変更すると、正常に動作します。

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

これは誰でも私に説明できますか?

ありがとうございます!

+0

SlotAllocation Beanの外観を投稿できますか? – Nick

答えて

1

この質問をd​​roolsユーザーメーリングリストで聞いてみる方がいいでしょう。メールボックスを捨てたくない場合は、ニュースグループリーダーを使ってnews.gmane.orgに接続してください。

あなたの質問には:それは本当に奇妙です。

最初に、DRLのresource == $leftRes)は実際にはgetResource().equals($leftRes)を呼び出しますので、同じ/ポインタチェックではなく、等価チェックであることを知っておく必要があります。

一方、eval(resource == $leftRes)は同じ/ポインタチェックを使用します。 したがって、あなたのResourceクラスがObject.equalsメソッドを上書きし、同じインスタンスのときにtrueを返すという理論はありません...

PS:さらに質問があり、あまりにも彼らに答えてほしい。

+0

答えてくれてありがとうございましたGeoffrey、私はnabbleのdroolsユーザーメーリングリストにアクセスしようとしましたが、私は彼らがnabble 1.0から2.0に移行していると思います。 問題について私はjbossと連絡を取り合い、彼らはそれを検討しています。私はevalと==の違いを知っています。コードをステップ実行していて、equalsメソッドはまったく呼び出されません! BTW - あなたのソルバーを使用しています。本当に好きです。私はそれを少し拡張する必要があるかもしれません(ブランチとバインド?)もしそれが起きた場合、私は間違いなくメインのトランクにそれを含めることをあなたに連絡しようとします – mericano1

+0

ブランチとバインドされた実験は歓迎です私はブランチとバインドを実装したいが、それを行うには、プランナー(=ソルバー)はドメイン(おそらく注釈など)をもっと知る必要があるので、そうする必要がある。 –

+0

しかし、私の経験では、ブランチとバウンドは、プロダクションでの使用に十分に拡張されていません。 –

関連する問題