A fórmula padrão da Medida de Impacto é a exibida abaixo. Como resultado, ela retorna a média dos maiores valores de cada tipo de impacto do componente de negócio.
#MaxOperationalImpact = Max(#Operational1Day, #Operational3Days, #Operational5Days, #Operational7Days, #Operational15Days, #Operational30Days);
#MaxFinancialImpact = Max(#Financial1Day, #Financial3Days, #Financial5Days, #Financial7Days, #Financial15Days, #Financial30Days);
#MaxReputationImpact = Max(#Reputation1Day, #Reputation3Days, #Reputation5Days, #Reputation7Days, #Reputation15Days, #Reputation30Days);
#MaxRegulatoryImpact = Max(#Regulatory1Day, #Regulatory3Days, #Regulatory5Days, #Regulatory7Days, #Regulatory15Days, #Regulatory30Days);
#ImpactScore = (#MaxOperationalImpact + #MaxFinancialImpact + #MaxReputationImpact + #MaxRegulatoryImpact) / 4;
É possível customizar essa fórmula padrão utilizando atributos dos componentes de negócio. Para editá-la, é necessário abrir o arquivo web.config, que fica na pasta de instalação do módulo de Continuidade. O atributo value, da chave CriticalityFormula, deve ser editado (veja abaixo).
As fórmulas podem ser compostas por uma ou mais linhas, separadas por ponto e vírgula (;). O valor retornado será calculado de acordo com o resultado da última linha executada.
A forma de escrita mais comum segue a sintaxe abaixo, onde [x] é opcional:
Linha
1:
variável A = <expressão 1>;
Linha
2:
variável B = <expressão 2>;
…
Linha
N:
variável Z = <expressão N>;
As tabelas abaixo listam as variáveis, os operadores e as funções disponíveis com suas descrições:
Variável |
Descrição |
#[CustomVarAttribName] |
Retorna o valor de um atributo do componente de negócio.
Exemplo: #LimiarImpacto = valor do atributo com nome de variável igual a "LimiarImpacto".
Tipos de atributos suportados: Número Texto Parágrafo Data/Hora (com subtipo "Data") Lista de Opções Tópicos Relacionamento |
#MTPD |
MTPD, conforme definido na aba Dados de BIA do componente de negócio. |
#RPO |
RPO, conforme definido na aba Dados de BIA do componente de negócio. |
#RTO |
RTO, conforme definido na aba Dados de BIA do componente de negócio. |
#Financial1Day |
Impacto financeiro após 1 dia de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
#Financial3Days |
Impacto financeiro após 3 dias de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
#Financial5Days |
Impacto financeiro após 5 dias de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
#Financial7Days |
Impacto financeiro após 7 dias de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
#Financial15Days |
Impacto financeiro após 15 dias de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
#Financial30Days |
Impacto financeiro após 30 dias de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
#Reputation1Day |
Impacto na imagem após 1 dia de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
#Reputation3Days |
Impacto na imagem após 3 dias de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
#Reputation5Days |
Impacto na imagem após 5 dias de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
#Reputation7Days |
Impacto na imagem após 7 dias de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
#Reputation15Days |
Impacto na imagem após 15 dias de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
#Reputation30Days |
Impacto na imagem após 30 dias de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
#Regulatory1Day |
Impacto regulatório após 1 dia de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
#Regulatory3Days |
Impacto regulatório após 3 dias de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
#Regulatory5Days |
Impacto regulatório após 5 dias de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
#Regulatory7Days |
Impacto regulatório após 7 dias de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
#Regulatory15Days |
Impacto regulatório após 15 dias de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
#Regulatory30Days |
Impacto regulatório após 30 dias de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
#Operational1Day |
Impacto operacional após 1 dia de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
# Operational3Days |
Impacto operacional após 3 dias de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
# Operational5Days |
Impacto operacional após 5 dias de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
# Operational7Days |
Impacto operacional após 7 dias de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
# Operational15Days |
Impacto operacional após 15 dias de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
# Operational30Days |
Impacto operacional após 30 dias de indisponibilidade, conforme definido na aba Dados de BIA do componente de negócio. |
Operadores Relacionais |
Descrição |
== |
Retorna verdadeiro caso os dois elementos sejam iguais e falso caso contrário. Ex.: "#result = #var == 1" |
!= |
Retorna verdadeiro caso os dois elementos sejam diferentes e falso caso contrário. Ex.: "#result = #var != 1" |
< |
Retorna verdadeiro caso o elemento da esquerda seja menor que o elemento da direita. Ex.: "#result = #var < 1" |
<= |
Retorna verdadeiro caso o elemento da esquerda seja menor ou igual ao elemento da direita. Ex.: "#result = #var <= 1" |
> |
Retorna verdadeiro caso o elemento da esquerda seja maior que o elemento da direita. Ex.: "#result = #var > 1" |
>= |
Retorna verdadeiro caso o elemento da esquerda seja maior ou igual ao elemento da direita. Ex.: "#result = #var >= 1" |
in |
Retorna verdadeiro caso o elemento esteja contido no vetor. Ex.: "#result = 3 in {1,2,3,4}" |
between |
Retorna verdadeiro caso o elemento esteja contido no intervalo definido. Ex.: "#result = 3 between {1,4}" |
Operadores Lógicos |
Descrição |
or |
Retorna verdadeiro caso uma condição seja aceita. Ex.: "#result = (#var == 1) or (#var == 2)" |
and |
Retorna verdadeiro caso todas as condições sejam aceitas. Ex.: "#result = (#var != 1) and (#var != 2)" |
! |
Nega o resultado booleano de uma expressão. Se o resultado for verdadeiro, retorna falso. Se for falso, retorna verdadeiro. Ex.: "#result = !(2 == 1)" |
Operadores Matemáticos |
Descrição |
+ |
Soma. Ex.: "#result = 2 + 3" Retorno: 5 |
- |
Subtração. Ex.: "#result = 2 - 3" Retorno: -1 |
* |
Multiplicação. Ex.: "#result = 2 * 3" Retorno: 6 |
/ |
Divisão. Ex.: "#result = 2.0 / 3.0" Retorno: 0.66666 |
% |
Módulo. Ex.: "#result = 3.0 % 2.0" Retorno: 1 |
^ |
Potência. Ex.: "#result = 2 ^ 3" Retorno: 8 |
Atribuição e Variáveis |
Descrição |
= |
Utilizado para atribuições a uma variável. Ex.: "#var = 5" |
#nome |
Declara o nome de uma variável. Ex.: "#var = 'hello'" |
Operação Ternária (operador condicional) |
Descrição |
<boolean expression> ? <if true then…> : <if false then…> |
Cria uma condição para execução de uma expressão. Ex.: #var >= 5 ? 'High' : 'Low' |
Funções e Constantes Matemáticas |
Descrição |
E |
Consulte também outras funções disponíveis na classe Math do framework .NET 4 em: http://msdn.microsoft.com/en-us/library/system.math.aspx
|
PI | |
Ceiling(double a) | |
Floor(double d) | |
IEEERemainder(double x, double y) | |
Pow(double x, double y) | |
Round(double a) | |
Round(double value, int digits) | |
Sign(double value) | |
Sqrt(double d) | |
Truncate(double d) | |
Max(object val1, object val2, …) |
Estas funções aceitam qualquer número de parâmetros. O retorno é um número do tipo double.
Os parâmetros do tipo object significam ser capazes de receber qualquer parâmetro de tipo numérico (int, long, double, etc.) ou qualquer parâmetro/objeto cuja representação textual (.toString()) possa ser convertida para um número em ponto flutuante (double). Por exemplo: um parâmetro do tipo string de valor “101.23” pode ser usado como parâmetro e será considerado o número 101.23.
Exemplo: Max(10, $result, “15.3”);
Retorna o maior valor entre os parâmetros considerando que todos são convertidos para números em ponto flutuante mesmo que o parâmetro seja um texto (string). |
Min(object val1, object val2,…) |
Outras Funções |
Descrição |
Lookup(object valueToLookup, object expectedResult1, object result1, …) |
Função para realizar uma busca em uma coleção de itens.
Ex.: Lookup(#Severidade, "Baixo", 1, "Médio", 2, "Alto", 3);
Neste exemplo, a função retorna 1 caso o valor da variável #Severidade seja igual a "Baixo", 2 se for igual a "Médio" e 3 se for "Alto". Caso ela não se enquadre em nenhum destes valores, a função retorna 0. |
LookupRange(double valueToLookup, string range1, double val1, string range2, double val2, … ) |
Função que permite comparar um valor numérico com vários intervalos, resultando em um novo valor.
Ex.: LookupRange(#ValorDoAtivo, “0:1000”, 1, “1000:10000”, 2, “10000:1000000”, 3);
Neste exemplo, a função retorna 1 caso o valor da variável #ValorDoAtivo esteja entre 0 e 1000; 2 caso esteja entre 1.000 e 10.000 e 3 caso esteja entre 10.000 e 100.000.
Caso o valor da variável não seja encontrado em nenhum dos intervalos, a função retorna 0. |
FirstBiggerThan(object valueToCompare, value1, value2, …) |
Retorna o índice do primeiro valor que for maior do que o valor sendo procurado.
Ex: FirstBiggerThan(#ImpactValue, 1000, 10000, 20000);
Neste exemplo, a função retorna 0 se o valor da variável #ImpactValue for maior do que 1.000; 1 se for maior do que 10.000 e 2 se for maior do que 20.000 |
FirstBiggerThanOrEqualTo(object valueToCompare, value1, value2, …) |
Retorna o índice do primeiro valor que for maior ou igual ao valor sendo procurado.
Ex: FirstBiggerThan( #ImpactValue, 1000, 10000, 20000);
Neste exemplo, a função retorna 0 se o valor de #ImpactValue for maior ou igual a 1000; 1 se for maior ou igual a 10000 e 2 se for maior ou igual a 20000 |
FirstLessThan(object valueToCompare, value1, value2, …) |
Retorna o índice do primeiro valor que seja maior do que o valor sendo procurado.
Ex: FirstLessThan(#ImpactValue, 1000, 10000, 20000);
Neste exemplo, a função retorna 0 se o valor de #ImpactValue for menor do que 1.000; 1 se for menor do que 10.000 e 2 se for menor do que 20.000 |
FirstLessThanOrEqualTo(object valueToCompare, value1, value2, …) |
Retorna o índice do primeiro valor que seja menor ou igual ao o valor sendo procurado.
Ex: FirstLessThanOrEqualTo(#ImpactValue, 1000, 10000, 20000);
Neste exemplo, a função retorna 0 se o valor de #ImpactValue for menor ou igual a 1.000; 1 se for menor ou igual a 10.000 e 2 se for menor ou igual a 20.000 |
O avaliador de expressões da fórmula da Medida de Impacto é baseado no avaliador de expressões do Spring Framework. Maiores informações acerca das capacidades deste avaliador de expressões podem ser encontradas em http://www.springframework.net/doc-latest/reference/html/expressions.html#expressions-language-ref.