O elemento <variable> define uma variável e contém informações em uma forma que pode ser referenciada por expressões. Uma variável pode ser definida no nível do conjunto de regras, de um bloco de regra ou de uma regra.
As variáveis podem ter o mesmo nome em níveis diferentes na hierarquia da regra. Quando uma variável é acessada, é utilizada sua definição mais local. Por exemplo, se uma variável for definida no nível do conjunto de regras, nível do bloco de regra e nível de regra com o mesmo nome, a definição da variável no nível de regra será utilizada pelas expressões dessa regra.
Quando as variáveis forem definidas no nível do conjunto de regras ou do bloco de regra, várias regras obterão e definirão essas variáveis em momentos diferentes. Portanto, para assegurar que os valores das variáveis sejam mantidos corretamente, preste atenção em como codificará as interações entre as variáveis no conjunto de regras.
Se a variável for definida no nível do conjunto de regras ou do bloco de regra, ela não será reinicializada depois que o padrão de regra for correspondido.
Se uma regra for definida com uma chave de agrupamento, as variáveis de regra definidas pelo elemento <variable> não serão válidas nas ações do ciclo de vida ou em um elemento <filteringPredicate> contido em um elemento <activateOnEvent> ou <deactivateOnEvent> contido em um elemento <activationInterval>. Isso ocorre porque, nesse caso, as variáveis da regra são aplicadas somente a uma instância da regra e as instâncias de regras não existem na hora em que essas expressões são executadas.
<variable> possui os seguintes atributos:
Nome | Descrição | Tipo de dado | Obrigatório? |
---|---|---|---|
name | Identifica uma variável específica. Uma variável é referenciada por seu nome. | xsd:NMTOKEN | Sim |
dataType | Identifica o tipo de informações que uma variável contém. Deve ser um tipo de dado completo, como java.lang.String. | xsd:NMTOKEN | Sim |
<variable> contém os elementos a seguir.
Os elementos devem ser codificados na ordem mostrada. Se um elemento for opcional, ele não precisará ser codificado, mas todos os elementos que forem codificados deverão seguir a ordem correta.
Elemento | Obrigatório ou opcional? |
---|---|
<comment> | Opcional. 0 ou 1 ocorrência é permitida. |
<varInitializer> | Obrigatório. 1 ocorrência é permitida. |