Usar o Drools 5

O Drools 5 introduz o conceito de palavras-chave fixas e flexíveis.

Palavras-chave fixas

As palavras-chave fixas são reservadas — não é possível usar uma palavra-chave fixa ao nomear objetos de domínio, propriedades, métodos, funções e outros elementos usados no texto da regra. A seguinte lista de palavras-chave fixas deve ser evitada como identificadores ao escrever regras:

  • true
  • false
  • null

Palavras-chave flexíveis

As palavras-chave flexíveis são reconhecidas apenas em seu contexto, permitindo-o usar essas palavras em qualquer outro lugar se desejar, embora a Genesys recomende evitá-las, se possível, para não gerar confusão. A lista de palavras-chave flexíveis é:

  • lock-on-active
  • date-effective
  • date-expires
  • no-loop
  • auto-focus
  • activation-group
  • agenda-group
  • ruleflow-group
  • entry-point
  • duration
  • package
  • import
  • dialect
  • salience
  • enabled
  • attributes
  • rule
  • extend
  • when
  • then
  • template
  • query
  • declare
  • function
  • global
  • eval
  • not
  • in
  • or
  • and
  • exists
  • forall
  • accumulate
  • collect
  • from
  • action
  • reverse
  • result
  • end
  • over
  • init

É possível usar essas palavras (fixas e flexíveis) como parte de um nome de método em maiúsculas e minúsculas, por exemplo notSomething() ou accumulateSomething() sem problemas.

Escapando palavras-chave fixas

Embora seja improvável que as três palavras-chave fixas acima sejam usadas nos seus modelos de domínio existentes, caso seja absolutamente necessário usá-las como identificadores em vez de palavras-chave, a linguagem do DRL fornecerá a capacidade de escapar de palavras-chave fixas no texto da regra. Para escapar de uma palavra, basta colocá-la entre acentos graves, assim:

Holiday( `true` == "yes" ) // 

Observe que o Drools resolverá essa referência ao método:

Holiday.isTrue()
Esta página foi modificada pela última vez em 22 de novembro de 2019, às 09h31min
Comments or questions about this documentation? Contact us for support!