J'ai des difficultés à écrire une règle qui correspond à une valeur d'énorme dans sa LHS.
Par exemple, si j'ai l'énum suivant: p> i Voudrais l'utiliser dans quelque chose comme ceci: P> rule "my rule"
dialect "java"
when
status : EStatus() // --> this works, but I want to be more specific
// status : EStatus(this == EStatus.OK) // --> doesn't work. How can I make it work?
then
// ...
end
4 Réponses :
Cela fonctionne pour moi: de sorte que cela devrait fonctionner aussi: p> vérifier s'il se produit toujours dans les boursnes 5.3 et le fichier Un bug s'il fait dans Jira P> p>
Merci de le pointer. Maintenant, cela fonctionne aussi pour moi. C'est étrange, parce que j'ai vérifié plusieurs fois la question avant de la publier ici. Le plus probable quelque chose a glissé ...
J'ai essayé d'utiliser Enum sur lhs [ticket (Status == estatus.ok), je reçois une erreur de temps de compilation Quelque chose comme suit:
BuilderRor: Impossible d'analyser l'expression Statut == Estatus.ok ERREUR: Impossible de résoudre la méthode à l'aide du mode strict: .... p>
Solution: strong> p> en règle LHS, nous devons comparer avec une valeur constante ... Par exemple: Utilisateur: Utilisateur (âge> 60) - Nous comparons ici l'âge avec une valeur constante 60. P> Donc pour utiliser Enum, Ticket (Statut == Estatus.ok) ... je J'ai dû utiliser une certaine constante à la place d'Estatus.ok pour la comparer avec le statut. Pour cette raison, j'ai utilisé une méthode statique dans Enum. P> Donc, le LHS de la règle ressemble maintenant à: Ticket (Statut == Estatus.getstatus (1)) P> et ESTATUS Enum est comme suit: P> Publique Enum Estatus
{ p> estatus (int numéro)
{
cela.Value = nombre;
} p> } p> J'ai testé cela à l'aide de JDK 1.6 et à la fois dans l'environnement Linux et Windows. P> aime coder! < / p> p>
Une autre solution. Vous devez juste ajouter Getter dans l'Estatus Enum comme ci-dessous.
rule "my rule" when EStatus(value == EStatus.OK) then ... end
Cela devrait également faire l'affaire:
rule "my rule" when $status : EStatus() eval ( $status == EStatus.OK ) then ... end