OpenRules governa solo in un database possibile?
-
19-09-2019 - |
Domanda
sto sperimentando con OpenRules e Java e vorrei per memorizzare tutte le mie regole solo in un database. Se ho ben capito il correttamente, ho bisogno di avere uno "Main.xls" in cui memorizzare le impostazioni di ambiente. Ora la domanda: C'è un modo per aggirare completamente questo file .xls fisico? Nel migliore dei casi sarebbe, se solo potessi chiamare qualcosa come
defineOpenRulesDatabase();
OpenRulesEngine engine = new OpenRulesEngine("db:myFile.xls");
engine.run();
in cui il metodo defineOpenRulesDatabase () definisce tutte le impostazioni che sono definite nel file db.properties menzionati nella documentazione.
Qualche idea su questo?
Soluzione
Sì. Secondo la documentazione , è possibile passare in qualsiasi URL che supporti Java (vale a dire qualsiasi cosa per che URL.openStream()
restituirà qualcosa di utile).
Quindi, semplicemente è possibile incorporare il Jetty web server nell'applicazione, creare un servlet che restituisce il file e quindi chiamare OpenRulesEngine()
con l'URL del servlet.
In alternativa è possibile scaricare il file dal DB e utilizzare File.createTempFile()
per creare un file temporaneo per impostare il motore di regole.
In alternativa è possibile aprire un bug contro il progetto e chiedere un altro costruttore, che permette di passare in un InputStream
.
[EDIT] Immagino che hai già visto questo documento che spiega come mettere le regole in un database. Da quello che vedo, non è possibile creare il motore di regole, senza un file esistente Main.xls almeno nel classpath.
Ma quel file non deve contenere più di tanto:
regole / main / Main.xls il file principale per un motore di regole per iniziare. Esso contiene solo la tabella Ambiente
Così si può semplicemente mettere un file statico nel classpath e caricare tutte le regole dal DB.