2017-07-25 4 views
1

J'utilise Drools 6.2.0Comment supprimer le focus par défaut de l'agenda MAIN, dans Drools?

Je veux regrouper mes règles en 3 groupes (FIRST, MAIN, DERNIER), et de les exécuter dans cet ordre:

  • PREMIER
  • MAIN
  • DERNIER

Pour ce faire, j'utilise groupe de l'ordre du jour "FIRST" et agenda-groupe "LAST" dans les règles nécessaires. Les autres règles, par défaut, appartiennent à l'ordre du jour MAIN.

J'utilise ce code pour spécifier l'ordre:

private void configureAgendas() { 
    Agenda agenda = session.getAgenda(); 

    agenda.getAgendaGroup("LAST").setFocus(); 
    agenda.getAgendaGroup("MAIN").setFocus(); 
    agenda.getAgendaGroup("FIRST").setFocus(); 
} 

Mon problème est que l'ordre du jour MAIN est toujours exécuté à la fin. Donc, je vais avoir l'ordre du jour principal exécuté deux fois:

  • PREMIER
  • MAIN
  • DERNIER
  • MAIN (Exécuté à nouveau, je veux sauter cette dernière exécution.)

Comment puis-je réaliser ceci?

Si je ne peux pas désactiver cette exécution automatique de l'ordre du jour principal, comment puis-je créer une règle qui sera la dernière règle à être exécutée?

Note: J'ai déjà essayé avec saillance Integer.MIN_VALUE, mais j'ai encore des règles d'ordre MAIN en cours d'exécution après celle-ci.

Répondre

0

Si vous avez vraiment besoin de contrôler l'exécution de la règle de cette façon, vous devez éviter complètement le groupe par défaut et placer toutes vos règles dans l'un de "un", "deux", "trois". Notez qu'un attribut de règle en dehors de rule ... end est valide pour toutes les règles suivantes jusqu'à annulation ou modification, il n'est donc pas nécessaire de définir le groupe de règles par règle.

(Il est étrange qu'il y ait encore des règles de tir après MAIN après MAIN et LAST sont épuisés, je ne voudrais pas que ce scénario..)

EDIT: Une autre option consiste à ajouter une règle en dernière avec le plus bas priorité pour changer le focus à FIRST. Vous pouvez en avoir besoin d'un autre pour "rembobiner" cette dernière règle en LAST afin qu'elle se déclenche à nouveau à la fin du tour suivant.

+0

Merci @laune, je ne m'attendais pas à ce comportement aussi. Et mon problème est pire, parce que je ne peux pas changer les cent autres règles, parce qu'elles sont toujours créées dans la base de données de production, etc. Donc, je dois travailler avec des règles dans l'ordre du jour MAIN + minages – Topera

+0

Ajouté un autre truc pour éviter de tomber en MAIN. – laune