Se você utiliza o drools e seu plugin para Eclipse, pode ter visto que na mais nova versão, para que você consiga usar DSLs, é preciso renomear o arquivo de regras para .dslr, desta forma você consegue atribuir um “expander” e trabalhar com sua linguagem natural. Como no exemplo:
package com.sample
expander pt_BR.dsl
import com.sample.DroolsTest.Message;
import com.sample.ChamadaTelefonica;
import com.sample.Tarifador;rule “chamada local”
when
quando a chamada eh local
then
o valor do minuto eh 2.00
endrule “chamada longa distancia”
when
quando a chamada eh longa distancia
then
o valor do minuto eh 4.00
end
O código acima processa um exemplo de um objeto que seria uma “Chamada Telefonica”, você pode estar se perguntando onde estão os comandos reais, a resposta é que está no pt_BR.dsl, veja o exemplo abaixo:
[condition][]quando a chamada eh local=c : ChamadaTelefonica( local==destino)
[condition][]quando a chamada eh longa distancia=c : ChamadaTelefonica( local!=destino)
[consequence][]o valor do minuto eh {valor}=c.setValor( Tarifador.minutesBetween(c.getInicio(), c.getFim())*{valor});
Por último, ao carregar meu arquivo de regras, eu também associo meu arquivos de DSL ao de regras:
Reader source = new InputStreamReader( DroolsTest.class.getResourceAsStream( “/Sample.dslr” ) );
Reader dsl = new InputStreamReader( DroolsTest.class.getResourceAsStream( “/pt_BR.dsl” ) );
PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( source,dsl );
Pronto, agora podemos ter a liberdade de lidar com as regras da forma que bem entendermos. Maiores informações sobre o projeto Drools: http://www.jboss.org/drools. Claro, que deixo aqui o agradecimento ao meu amigo Tirelli (core-developer do drools), que sempre me tirar as dúvidas necessárias para montar nossos projetos.
E

Entries (RSS)