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 = (N12 + N23 + 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.
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.
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.
Pode te ajudar a desacoplar o lógica de processamento dos nodos da árvore sintática da implementação deles.
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).