2017-06-06 4 views
0

Je travaille sur une exigence sur la mise à jour de la règle de manière dynamique. J'ai scheduler qui choisit des règles de DB une fois dans chaque heure. L'exigence consiste à rejeter entièrement les règles précédemment chargées avec le nouvel ensemble de règles lu par DB.Drools mise à jour dynamique des règles

Actuellement, j'ai initialisé le système de fichiers et cela est réinitialisé chaque fois que le planificateur lit les règles à chaque fois.

private KieServices kieServices = KieServices.Factory.get(); 
private KieFileSystem kieFileSystem = kieServices.newKieFileSystem(); 

public reinitialize() { 
    kieServices = KieServices.Factory.get(); 
    kieFileSystem = kieServices.newKieFileSystem(); 
} 

Mais je ne suis pas sûr si c'est une bonne approche. Ce que j'ai lu de la documentation de Drools, c'est que les règles sont écrites en tant que bibliothèque avec un fichier POM. Je ne suis pas sûr si cette approche se terminera avec beaucoup de système de fichiers en mémoire et au système de fin sera très lent.

Quelqu'un peut-il suggérer la bonne façon de remplacer dynamiquement les anciennes règles par de nouvelles règles?

Répondre

0

Pour charger/mettre à jour des règles dynamiquement au moment de l'exécution, vous pouvez utiliser les API de KieScanner. Son approche basée sur maven, une fois kjar mis à jour est disponible dans le client du référentiel maven, choisira la dernière version de kjar et les règles mises à jour seront exécutées. Passez par document pour plus de détails sur cette approche.