Bom dia, estou precisando da seguinte ajuda:
Estou criando um sistema (SWING) onde o usuário vai definir diversos Scripts para calcular valores das NotasFiscais, Pedidos, etc.
Esses Scripts vão ser criados/editados em uma tela dentro do próprio sistema, e eu vou grava-los no Banco de Dados para que assim eu possa distribuir os scripts para todos os terminais de maneira transparente. Coloquei abaixo um exemplo de como eu vou executar esses Scripts na hora de calcular um NF por exemplo:
try {
//Carregar o Script do BD
String scriptTeste = "public class teste{" +
" public void calcNF(teste.NotaFiscal nf) {" +
" nf.valor = 50;" +
" }" +
"}";
ClassLoader parent = getClass().getClassLoader();
GroovyClassLoader loader = new GroovyClassLoader(parent);
Class groovyClass = loader.parseClass(scriptTeste );
GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance();
NotaFiscal nf = new NotaFiscal();
Object[] args = {nf};
groovyObject.invokeMethod("calcNF", args);
System.out.println(nf.getValor());
} catch (Exception e) {
e.printStackTrace();
}
Está tudo funcionando normal.
A edição desses Scripts é feita pelos clientes MUITO raramente, então eu criei também uma maneira de controlar a versão do Script no Banco de Dados, sendo assim, eu só precisaria compilar o Script (Que é um processo lento) quando ele for alterado.
O PROBLEMA É:
Existe alguma maneira de eu Serializar aquele objecto “groovyClass” que é um objeto tipo Class? Para que quando eu for executar de novo o Script eu verifico a versão se ela não foi alterada eu não preciso compilar o texto do Script que está no banco de dados é só eu dar um load nesse Class que está no HD.
Muito obrigado pela ajuda.


