Criação de regras

Este tópico explica os métodos e operadores lógicos que podem ser utilizados para criar regras de objetos, de controles e de perguntas. O sistema permite que regras simples e complexas sejam criadas. Regras simples executam somente uma ação, enquanto regras complexas podem executar várias ações utilizando uma única condição. Os métodos suportados pelo sistema para criar regras e os operadores lógicos que podem ser utilizados estão detalhados abaixo.

 

EqualsTo

Esse método só pode ser utilizado nas perguntas do tipo Lista de Opções. Ele é utilizado para testar a resposta fornecida pelo entrevistado para uma pergunta de resposta única. Uma regra que utiliza esse método é considerada verdadeira quando a opção de resposta selecionada pelo entrevistado está associada ao valor definido na regra para a pergunta. O método EqualsTo aceita um único valor como parâmetro.

Quando são criadas opções de resposta para perguntas do tipo Lista de Opções, cada opção de resposta é associada a um valor. Por exemplo, considere que a pergunta 5 de uma determinada pesquisa seja "Com que frequência você faz um backup do seu trabalho?"

Nesse caso, as seguintes opções de resposta poderiam ser criadas para a pergunta:

 

Opção

Valor associado

Diariamente

0

Semanalmente

1

Mensalmente

2

 

Nesse exemplo, a condição Answer[5].EqualsTo("2") será considerada verdadeira se o entrevistado selecionar a opção de resposta "Mensalmente", associada ao valor 2.

 

Contains

Assim como o método EqualsTo, o método Contains é exclusiva de perguntas do tipo Lista de Opções. No entanto, ele é utilizado para testar a resposta fornecida para uma pergunta que aceita mais de uma resposta. Uma regra que usa este método é considerada verdadeira quando o entrevistado seleciona pelo menos uma das opções de resposta associadas aos valores especificados na condição. Por exemplo, a condição…

 

Se (condições)

Answer[6].Contains("0","1","2","3")

 

…será verdadeira se, na pergunta número 6, o entrevistado selecionar ao menos uma das opções de resposta cujos valores são 0, 1, 2 e 3. Outras opções também podem ser selecionadas, mas todas aquelas especificadas pela regra devem ser selecionadas para que a expressão seja verdadeira.

Nas duas primeiras colunas da tabela abaixo, a regra Answer[1].Contains("A","B","C") irá retornar "Verdadeiro" e a ação correspondente será executada no controle associado, já que todas as opções necessárias (A, B e C) foram selecionadas pelo entrevistado. Observe que na segunda coluna, o entrevistado selecionou outras opções, e ainda assim a regra foi considerada verdadeira, já que todas as opções necessárias foram selecionadas. Na terceira coluna, a regra retornou "Falso" e a ação correspondente não foi executada no controle associado já que a opção C não foi selecionada pelo entrevistado.

 

Verdadeiro

Verdadeiro

Falso

A

A

A

B

B

B

C

C

D

 

D

E

 

F

F

 

A relação entre as regras é estabelecida através dos números das perguntas. Observe que cada pergunta possui um número único. Quando existe uma condição como…

 

Se (condições)

Answer[5].EqualsTo("0")

 

…o número 5 indica que essa regra se refere à pergunta número 5, incluída na pesquisa para a qual a regra será criada. O número 0 em EqualsTo("0") refere-se ao valor de uma das opções de resposta criadas para a pergunta. Uma pergunta de resposta única pode ter as seguintes opções de resposta:

 

Opção

Valor Associado

Sim

0

Às vezes

1

Sempre

2

Não

3

 

Assim, se o entrevistado selecionar a resposta "Sim" para a pergunta número 5 na pesquisa de riscos, o valor associado a essa resposta será 0. Nesse caso, a condição Answer[5].EqualsTo("0") será verdadeira, e a ação especificada na regra será executada. Da mesma forma, se o entrevistado selecionar a opção "Não", o valor associado a essa opção é 3. Nesse caso, a condição será avaliada como falsa e nenhuma ação será tomada.

Ao criar condições de regra para perguntas que aceitam somente uma única resposta, apenas o método EqualsTo pode ser usado, já que nesses tipos de pergunta existe apenas uma resposta que pode ser selecionada pelo entrevistado. No entanto, nas perguntas de múltipla-escolha, os métodos Contains e EqualsTo podem ser usados, e em muitos casos pode ser útil combinar os resultados de vários métodos através do uso de operadores booleanos (AND, OR, NOT) para formar expressões mais complexas.

 

MoreCompliantThan

O método MoreCompliantThan é utilizado para testar a resposta fornecida pelo entrevistado para uma pergunta do tipo Pergunta de Compliance. Observe que, no caso de perguntas de compliance, as opções de resposta vêm da escala de respostas associada à pesquisa no projeto. Cada opção de resposta tem um Compliance Index (%) e um Nível de Compliance (Atendido, Não Atendido, Parcialmente Atendido) associados. Dessa forma, cada resposta selecionada para perguntas de Compliance tem um valor de Compliance Index associado em uma escala de 0 a 100%. O método MoreCompliantThan é utilizado para comparar o Compliance Index associado com a resposta fornecida pelo entrevistado com um valor definido como parâmetro para o método (entre 0 e 100). Se o valor associado à resposta for maior ou igual ao valor definido como parâmetro para o método, a condição será verdadeira. Por exemplo, a condição…

 

Se (condições)

Answer[1].MoreCompliantThan("60")

 

…será verdadeira se a opção de resposta selecionada para a pergunta número 1 na entrevista tiver sido associada a um Compliance Index maior ou igual a 60. Caso contrário a condição será falsa. Sempre que a expressão for verdadeira, uma ou mais ações da regra serão executadas na pergunta.

Observe o exemplo a seguir, que usa a expressão…

 

Se (condições)

Answer[1].MoreCompliantThan("0")

 

… o valor 0, utilizado entre parênteses, faz com que qualquer resposta dada pelo entrevistado execute as ações definidas na regra, já que todas as opções de resposta devem estar associadas a um Compliance Index maior ou igual a zero.

 

ALWAYS

O método ALWAYS deve ser escrito em maiúsculas e deve estar sozinho no campo Se (condições). Ele pode ser utilizado para que a condição para qualquer tipo de pergunta sempre retorne verdadeiro, independentemente da resposta dada pelo entrevistado. Por exemplo, você pode criar uma regra utilizando o método ALWAYS para que as evidências anexadas a uma pergunta sejam sempre anexadas a um controle, independentemente da resposta dada pelo entrevistado.

O método ALWAYS também é útil nas regras de perguntas. Por exemplo, você pode decidir se uma determinada pergunta estará sempre visível ao escrever ALWAYS no campo Se (condições) e configurar o campo Propriedade para "Visível" e o campo Valor para "Verdadeiro". Você pode, então, escrever uma regra de exceção utilizando EqualsTo, de forma que a pergunta esteja sempre visível, exceto quando a resposta da pergunta número 2 (Answer[2]) for "Sim", cujo valor é 1 (EqualsTo("1")). Nesse caso, a regra que utiliza o método ALWAYS deve ser executada primeiro para que não entre em conflito com a segunda.

 

Regras com operadores lógicos

Podem ser adicionados operadores lógicos a uma regra, permitindo que mais de um método seja utilizado na mesma condição, tornando-a mais complexa. Os operadores lógicos suportados pelo sistema são:

    AND: operador lógico que representa uma conjunção. Quando utilizado dentro de uma regra com uma condição composta, a condição será verdadeira somente quando todas as proposições associadas ao operador também forem verdadeiras. Por exemplo:

 

Se (condições)

Answer[1].EqualsTo("2") AND Answer[2].EqualsTo("3")

Então (ações)

Situação do controle 1234 = Implementado

 

A regra acima impõe que, se a opção de valor 2 for a única selecionada na pergunta número 1 e se a opção de valor 3 for a única selecionada na pergunta número 2, então a situação do controle 1234 será automaticamente alterada para "Implementado". Observe que, nesse exemplo, a regra usa perguntas diferentes para executar uma ação em um controle. Uma única regra pode usar várias perguntas, mas só vai agir sobre um único controle.

 

    OR: operador lógico que representa a disjunção inclusiva. Quando utilizado dentro de uma regra com uma condição composta, fará com que a condição seja verdadeira apenas quando pelo menos uma das proposições associadas ao operador for verdadeira. Por exemplo:

 

Se (condições)

Answer[1].EqualsTo("0") OR Answer[2].EqualsTo("2") OR Answer[3].Contains("1","3")

Então (ações)

Situação do controle 1234 = Não Implementado

 

A regra acima impõe que, se a opção de valor 0 for a única selecionada na pergunta número 1, ou se a opção com valor 2 for a única selecionada na pergunta número 2, ou as opções de valores 1 e 3 forem selecionadas para a pergunta número 3, então a situação do controle 1234 será automaticamente alterada para "Não Implementado". Observe que essa condição composta combina os métodos EqualsTo e Contains e avalia as respostas dadas para três perguntas diferentes.

 

    NOT: operador lógico que representa a negação. Esse valor inverte o valor de verdadeiro da expressão na qual é aplicado. Por exemplo, se a expressão Answer[1].EqualsTo("0") for verdadeira, então a expressão NOT Answer[1].EqualsTo("0") será falsa.

Como a expressão Answer[1].EqualsTo("0") apenas será verdadeira se o entrevistado selecionar a resposta cujo valor é 0 para a pergunta número 1, a sua negação (NOT Answer[1].EqualsTo("0")) será verdadeira se o entrevistado selecionar qualquer outra opção de resposta cujo valor não seja 0.

 

As operações executadas por meio desses operadores são lidas da esquerda para a direita, ou seja, se existirem mais de dois operadores, o primeiro a ser avaliado será aquele que estiver na extrema esquerda. O uso de parênteses altera a precedência, como ocorre em operações matemáticas. Na expressão…

 

(Answer[1].EqualsTo("0") AND Answer[2].EqualsTo("2")) OR Answer[3].Contains("1","3")

 

…a ordem de avaliação dos operadores será da esquerda para a direita (primeiro o AND, em seguida o OR).

 

Abaixo estão listados alguns exemplos adicionais para a criação de regras com condições compostas.

Exemplo 1: dada uma pergunta de número 1 de resposta múltipla e cujas opções de resposta sejam:

 

Alto – Valor 0

Médio – Valor 1

Baixo – Valor 2

Muito Baixo – Valor 3

 

Suponha que o entrevistado deva selecionar as respostas "Alto" e "Médio", cujos valores são 0 e 1, respectivamente, mas não possa escolher a opção "Baixo", cujo valor é 2, para que a condição seja considerada verdadeira. Nesse caso, a condição (SE) da regra pode ser expressa da seguinte maneira:

 

Se (condições)

Answer[1].EqualsTo("0") AND Answer[1].EqualsTo("1") AND NOT Answer[1].EqualsTo("2")

Então (ações)

Situação do controle 1234 = Implementado

 

Essa expressão só será verdadeira se o entrevistado selecionar as opções "Alto" e "Médio" na pergunta, cujos valores são 0 e 1, e ao mesmo tempo não selecionar a opção "Baixo" ao responder a pergunta. Quando a expressão for verdadeira, a ação para a regra será alterar a situação do controle 1234 para "Implementado".

Exemplo 2: dada uma pergunta de número 5 de resposta múltipla e cujas opções de resposta sejam:

 

A) Sempre – Valor 0

B) Apenas quando solicitado – Valor 1

C) Apenas quando solicitado e aprovado pelo meu gerente – Valor 2

D) Nunca – Valor 3

 

Suponha que o entrevistado selecione as opções B e C, cujos valores sejam 1 e 2, respectivamente, mas não possa selecionar qualquer outra opção para que a condição seja considerada verdadeira. Nesse caso, a condição (SE) da regra pode usar o método EqualsTo duas vezes em uma expressão composta. A condição seria expressa como:

 

Se (condições)

Answer[5].EqualsTo("1") AND Answer[5].EqualsTo("2")

Então (ações)

Situação do controle 1234 = Implementado

 

Observe que, nesse caso, o método Contains não pode ser usado, pois se utilizarmos a expressão Answer[5].Contains("1","2"), a condição para regra será verdadeira se o entrevistado selecionar apenas as duas opções, mas também será verdadeira se todas as opções forem selecionadas e a condição não foi destinada para isso.

Como alternativa, os métodos EqualsTo e Contains podem ser combinados, como a seguir:

 

Se (condições)

Answer[5].Contains("1","2") AND NOT Answer[5].EqualsTo("0") AND NOT Answer[5].EqualsTo("3")

Então (ações)

Situação do controle 1234 = Implementado

 

Essa expressão será verdadeira se o entrevistado selecionar somente as opções "Apenas quando solicitado" e "Apenas quando solicitado pelo meu gerente", mas não selecionar "Sempre" ou "Nunca".