Tipos de Variáveis de Regras

É possível designar tipos de valores diferentes às variáveis de regras.

Uma variável de regra pode representar uma constante, uma expressão, um termo de negócios ou uma coleção de termos de negócios. Uma variável de regra é definida fornecendo a ela um nome e um valor. Você escolhe o nome, e o valor pode ser texto, um número ou uma expressão aritmética. O valor também pode ser um termo de negócio predefinido que já está em sua regra (por exemplo, customer). Depois de configurar uma variável, você pode usá-la em qualquer parte da regra que declare a variável.

Variáveis de Regras que Definem Constantes

O uso mais simples de uma variável de regra é declarar um valor constante.

Por exemplo, a variável maxAmount facilita o entendimento da seguinte regra e assegura que as partes if e then da regra usem o mesmo valor:

definições
	set maxAmount to 1000000;
 se
	the amount of 'the loan'  is at least maxAmount 
então
	in 'the loan report', reject the data with the message "The loan cannot exceed " + maxAmount;

Restrições nas Variáveis de Regras

É possível restringir mais uma variável na parte definitions de uma regra usando o operador where.

Exemplo

Na seguinte regra, where restringe a variável loyal customer a clientes na categoria Ouro:

definições
	set 'loyal customer' to a customer 
		em que a categoria desse cliente é Gold; 
se
	the value of the shopping cart of 'loyal customer' is more than $200 
então
	apply the super discount;

Exemplo

A seguinte regra declara que a variável senior Gold customer deve ser um cliente que esteja na categoria Ouro e que tenha pelo menos 65 anos:

definições
	set 'senior Gold customer' to a customer 
		where all the following conditions are true: 
			- the category of this customer is Gold 
			- the age of this customer is at least 65;

Variáveis de Regras que Consultam mais de Uma Ocorrência de um Termo de Negócios

Se um termo de negócios tiver mais de uma definição em uma regra, você deverá definir as diferentes definições.

Quando os desenvolvedores ativam a variável automática para um termo de negócios, a palavra the identifica a variável automática nos códigos de idioma que usam esse tipo de artigo. Por exemplo, se você usar a palavra cliente como um termo de negócios nas regras, os desenvolvedores poderão definir uma variável automática chamada the customer, à qual você poderá se referir nas regras.

Se houver uma regra que requeira a consulta a mais de uma ocorrência de um cliente, você deverá definir as outras ocorrências na parte definitions da regra, por exemplo:

definições
	conjunto de candidatos para um cliente. 
	set 'loyal customer' to a customer; 
se
	all of the following conditions are true: 
		- applicant is married to 'loyal customer' 
		- 'loyal customer' is insured 
então
	upgrade applicant's rating; 

Variáveis são úteis em regras que se refiram a relacionamentos entre duas ou mais coisas do mesmo tipo.

Por exemplo, a seguinte condição envolve dois clientes diferentes:

se
	’customer 1’ is married to ’customer 2’ 

A condição identifica e nomeia dois clientes diferentes: customer 1 e customer 2. O termo de negócios "customer" varia e é possível definir duas variáveis de cliente para gravar uma regra, como a seguinte:

definições
	set ’customer 1’ to a customer; 
	set ’customer 2’ to a customer; 
se
	’customer 1’ is married to ’customer 2’ 
	and ’customer 2’ is insured 
então
	upgrade ’customer 1’’s rating;
Nota: Quando uma regra contém várias ocorrências de um termo de negócio, a regra dispara várias vezes para cobrir todas as permutações. No exemplo, há dois clientes, portanto, a regra é disparada duas vezes. Se a regra tivesse três clientes, ela seria disparada seis vezes.

Variáveis de Regras que Recuperam todas as Ocorrências de um Termo de Negócios

É possível usar o operador BAL all <...> para criar uma variável que recupere uma lista de todas as ocorrências de um termo de negócios, por exemplo:

definições 
	set 'gold customers' to all customers 
		where the category of this customer is gold; 
	set 'junior gold customer' to a customer in 'gold customers' 
		where the age of this customer is at most 15; 
	set 'senior gold customer' to a customer in 'gold customers' 
		where the age of this customer is at least 65;

O exemplo cria três variáveis:

  • gold customers: Uma lista dos clientes na categoria ouro.
  • junior gold customer: Um cliente da lista de clientes ouro cuja idade máxima é de 15 anos.
  • senior gold customer: Um cliente da lista de clientes ouro cuja idade é ao menos 65 anos.