Drools - Sintaxe de regra
Como você viu, o .drl (arquivo de regra) tem sua própria sintaxe, vamos cobrir algumas partes da sintaxe da regra neste capítulo.
Condições nas regras
Uma regra pode conter muitas condições e padrões, como -
- Conta (saldo == 200)
- Cliente (nome == “Vivek”)
As condições acima verificam se o saldo da conta é 200 ou o nome do cliente é “Vivek”.
Variáveis em regras
Um nome de variável no Drools começa com um símbolo de dólar ($).
- $ account - Conta ()
- $ account é a variável para a classe Account ()
O Drools pode funcionar com todos os tipos nativos de Java e até mesmo com Enum.
Comentários nas regras
Os caracteres especiais, # ou //, podem ser usados para marcar comentários de linha única.
Para comentários de várias linhas, use o seguinte formato:
/*
Another line
.........
.........
*/
Variáveis globais
Variáveis globais são variáveis atribuídas a uma sessão. Eles podem ser usados por vários motivos, como segue -
Para parâmetros de entrada (por exemplo, valores constantes que podem ser personalizados de sessão para sessão).
Para parâmetros de saída (por exemplo, relatórios - uma regra poderia gravar alguma mensagem em uma variável de relatório global).
Pontos de entrada para serviços como registro, que podem ser usados dentro de regras.
Funções nas regras
As funções são um recurso conveniente. Eles podem ser usados em condições e consequências. As funções representam uma alternativa às classes utilitárias / auxiliares. Por exemplo,
function double calculateSquare (double value) {
return value * value;
}
Dialeto
Um dialeto especifica a sintaxe usada em qualquer expressão de código que está em uma condição ou em uma consequência. Inclui valores de retorno, evals, evals em linha, predicados, expressões de destaque, consequências e assim por diante. o valor padrão éJava. Drools atualmente suporta mais um dialeto chamadoMVEL. O dialeto padrão pode ser especificado no nível do pacote da seguinte forma -
package org.mycompany.somePackage
dialect "mvel"
Dialeto MVEL
MVEL é uma linguagem de expressão para aplicativos baseados em Java. Ele suporta acesso de campo e método / getter. É baseado na sintaxe Java.
Saliência
Saliência é um recurso muito importante da Sintaxe da Regra. A saliência é usada pela estratégia de resolução de conflito para decidir qual regra disparar primeiro. Por padrão, é o critério principal.
Podemos usar a saliência para definir a ordem das regras de disparo. Saliência tem um atributo, que aceita qualquer expressão que retorne um número do tipo int (tanto os números positivos quanto os negativos são válidos). Quanto maior o valor, maior a probabilidade de uma regra ser escolhida pela estratégia de resolução de conflito para disparar.
salience ($account.balance * 5)
O valor de saliência padrão é 0. Devemos ter isso em mente ao atribuir valores de saliência a apenas algumas regras.
Existem muitos outros recursos / parâmetros na Sintaxe da Regra, mas cobrimos apenas os importantes aqui.
Palavras-chave de consequência da regra
Palavras-chave de consequência da regra são as palavras-chave usadas no “then”Parte da regra.
Modify - Os atributos do fato podem ser modificados no then parte da regra.
Insert - Com base em alguma condição, se verdadeira, pode-se inserir um novo fato na sessão atual do Mecanismo de Regras.
Retract - Se uma determinada condição for verdadeira em uma regra e você não quiser agir de outra forma sobre esse fato, poderá retirar o fato específico do mecanismo de regras.
Note- É considerado uma prática muito ruim ter uma lógica condicional (instruções if) dentro de uma consequência de regra. Na maioria das vezes, uma nova regra deve ser criada.