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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top