OpenRules governa apenas em um banco de dados possível?
-
19-09-2019 - |
Pergunta
Eu estou experimentando com OpenRules e Java e eu gostaria de armazenar todos os meus regras em apenas um banco de dados. Se eu entendi a documentação corretamente, eu preciso ter um "Main.xls", no qual a armazenar as configurações de ambiente. Agora a pergunta: Existe uma maneira de contornar completamente este arquivo .xls física? Melhor caso seria, se eu pudesse chamar algo como
defineOpenRulesDatabase();
OpenRulesEngine engine = new OpenRulesEngine("db:myFile.xls");
engine.run();
onde o método defineOpenRulesDatabase () define todas as configurações que são definidas no arquivo db.properties mencionado na documentação.
Qualquer ideia sobre isso?
Solução
Sim. acordo com a documentação , você pode passar em qualquer URL que suporte Java (ou seja, qualquer coisa para que URL.openStream()
retornará algo útil).
Então você pode simplesmente incorporar o Jetty servidor web em seu aplicativo, criar um servlet que retorna o arquivo e OpenRulesEngine()
então chamada com a URL do servlet.
Ou você pode fazer o download do arquivo a partir do banco de dados e uso File.createTempFile()
para criar um arquivo temporário para configurar o mecanismo de regras.
Ou você poderia registrar um bug contra o projeto e pedir outro construtor que lhe permite passar em uma InputStream
.
[EDIT] Eu acho que você já viu este documento que explica como colocar as regras em um banco de dados. Pelo que vejo, não é possível criar o mecanismo de regras sem um arquivo Main.xls existente, pelo menos no seu classpath.
Mas esse arquivo não tem que contêm muito:
regras / main / Main.xls o arquivo principal para um motor de regras para começar. Ele contém apenas a tabela de Meio Ambiente
Assim, você pode simplesmente colocar um arquivo estático no classpath e carregar todas as regras do DB.