0 votes

drools expert / solver - 5.0.1 matches

Je suis assez nouveau dans le domaine des drools et je rencontre quelques problèmes que je ne comprends pas vraiment. J'essaie de résoudre un problème d'allocation et l'une de mes LHS ressemble à ceci

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

pour une raison quelconque, la deuxième déclaration ne correspond à rien, même si je suis sûr qu'il y a une correspondance dans la mémoire de travail. Si je remplace le code ci-dessus par le suivant, cela fonctionne bien.

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

Quelqu'un peut-il m'expliquer cela ?

Gracias.

0voto

Il est probablement préférable de poser cette question sur la liste de diffusion des utilisateurs de drools (utilisez un lecteur de newsgroups pour vous connecter à news.gmane.org si vous ne voulez pas encombrer votre boîte aux lettres).

Quant à votre question : c'est vraiment étrange. Je ne vois qu'une seule explication improbable :

Tout d'abord, vous devez savoir que resource == $leftRes) dans le DRL va en fait appeler getResource().equals($leftRes) Il ne s'agit donc pas d'une vérification de la même chose ou d'un pointeur, mais d'une vérification des égalités.

D'un autre côté, eval(resource == $leftRes) utilisera un contrôle de type identique/pointeur. Donc, cette théorie improbable est que votre classe Resource écrase la classe Object.equals et ne retourne même pas vrai quand il s'agit de la même instance...

PS : Poursuivez cette discussion sur la liste de diffusion des utilisateurs si vous avez d'autres questions et que vous souhaitez également obtenir des réponses.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X