Customizar fórmulas  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
Fabricio Cozer Martins
GUJ Ranger
[Avatar]

Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline

Olá,

alguém conhece algum pattern que auxilie na construção de fórmulas para cálculos de regras de negócio ?

Estou querendo que o usuário advanced da aplicação possa alterar as fórmulas de um determinado cálculo.

Por exemplo.

Fórmula cálculo para tirar a média de um determinado aluno:
Parâmetros:
N1 = Nota Primeira Prova
N2 = Nota Segunda Prova
TP = Trabalho Prático
SE = Seminário

Um determinado professor deseja que a média da turma dele, a partir desses parãmetros seja dessa forma:
média = (N1 + N2 + TP + SE )/4

Já um outro professor deseja de uma outra forma, e com parâmetros diferentes:
N1 = Nota Primeira Prova
N2 = Nota Segunda Prova
N3 = Nota Terceira Prova

média = (N1*2 + N2*3 + N3*5 )/10


Existe algum Pattern que se adequa a esse tipo de problema ?

Resumindo para um determinado tipo de cálculo eu teria uma lista de parâmetros (numéricos), uma fórmula (operações aritméticas) relacionando parâmetros e um retorno numérico resultada do cálculo.



Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4
[MSN] [ICQ]
Giuliano Mega
JavaBaby

Membro desde: 22/08/2005 19:01:35
Mensagens: 94
Offline

Oi Fabrício,

Me parece que você quer construir um parser bastante simples.
Talvez dar uma olhada em intepreter e visitor (GoF) ajude.

Abraços,
Fabricio Cozer Martins
GUJ Ranger
[Avatar]

Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline

Hunn ... verdade, o Interpreter pode ajudar
Vai ter que existe um esquema que irá interpretar e converter as expressões, como se fosse um analisador léxico, identificar o que são símbolos de operação matemática e o que são variáveis (parâmetros). Deve existir uma linguagem própria pra isso.

Agora no que o Visitor pode ajudar ?


Alguém já usou http://www.ognl.org/ ?

Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4
[MSN] [ICQ]
Giuliano Mega
JavaBaby

Membro desde: 22/08/2005 19:01:35
Mensagens: 94
Offline


Vai ter que existe um esquema que irá interpretar e converter as expressões, como se fosse um analisador léxico, identificar o que são símbolos de operação matemática e o que são variáveis (parâmetros). Deve existir uma linguagem própria pra isso.


Se você tiver uma definição precisa para isso, você pode usar o JFlex http://jflex.de. Como o seu caso parece bem simples, no entanto, talvez dê para se virar com o pacote de expressões regulares de Java.


Agora no que o Visitor pode ajudar ?


Pode te ajudar a desacoplar o lógica de processamento dos nodos da árvore sintática da implementação deles.

Abraços,

Giuliano
Fabricio Cozer Martins
GUJ Ranger
[Avatar]

Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline

Sim ,esse caso é o mais simples, mas tem mais fórmulas, e tem outras fórmulas que depedem de condições para se tomar outras decisões.

Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4
[MSN] [ICQ]
Giuliano Mega
JavaBaby

Membro desde: 22/08/2005 19:01:35
Mensagens: 94
Offline

Se você estiver com preguiça de escrever o parser e tiver uma gramática pronta para a sua linguagem de expressões, você pode usar o CUP para gerar o parser para você.

O JFlex tem um ponto de integração com o CUP, daí você leva, numa tacada só, parser e analisador léxico (eles geram a árvore sintática para você, te poupando dos detalhes chatos que esse tipo de processamento envolve).

http://www2.cs.tum.edu/projects/cup/

Daí a única coisa que você tem que de fato implementar é o código de processamento da árvore.

Abraços,
Fabricio Cozer Martins
GUJ Ranger
[Avatar]

Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline

tá cara, vou pensar numa outra forma mais simples aqui aí depois eu mando pra cá

Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4
[MSN] [ICQ]
Giuliano Mega
JavaBaby

Membro desde: 22/08/2005 19:01:35
Mensagens: 94
Offline

Tá chamando minha solução de complicada, é?
O JFlex é fácil de usar, tá bom?
Fabricio Cozer Martins
GUJ Ranger
[Avatar]

Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline

hehehehe, não cara, vc me ajudou bastante!!!! anotei esses links aqui, vou dar uma olhada neles depois

Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4
[MSN] [ICQ]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team