Melhores Práticas para Criar Regras de Negócios

Regras mal escritas afetam significativamente todos os aspectos de um aplicativo. A seguir estão algumas das melhores práticas ao criar regras de negócios. Seguir as recomendações de melhores práticas pode conduzir a benefícios significativos de desempenho.

Siga estas principais diretrizes de criação de regras de negócios.

10 Melhores Práticas para Regras

Siga estas recomendações de melhores práticas ao criar regras de negócios. Essas diretrizes podem levar a benefícios significativos de desempenho porque regras mal escritas afetam significativamente todos os aspectos de um aplicativo.

  1. Siga estas diretrizes para os comandos SET:

    • Na parte superior da regra, não use SET CREATEBLOCKONEQ ON nem SET CREATENONMISSINGBLK ON.
    • Não use comandos de tipo administrativo como este em regras de usuário final, pois isso requer uma reestruturação.
      SET CLEARBLOCK
                        EMPTY 
    • Evite ou teste regras usando SET CALCTASKDIMS. (O Oracle Essbase geralmente faz isso automaticamente.)
    • A regra de Cópia de Dados deve incluir o seguinte para evitar a cópia de blocos vazios dentro da instrução Fix.
      SET COPYMISSINGBLOCK
                        OFF 
  2. A Criação de Blocos deve ser feita usando Cópia de Dados ou atribuição de Membro Esparso. As funções @createblockoneq e @createblock devem ser usadas como último recurso em uma instrução Fix limitada.

  3. Evite referências de dimensão ausentes em uma instrução Fix (por exemplo, na Regra de Cópia de Dados). Isso pode desperdiçar tempo de processamento, aumentar a contenção e criar bloqueios desnecessários para todos os níveis das dimensões ausentes.

  4. Remova o cálculo paralelo nas regras de negócios associadas aos formulários. Calc Parallel ou Fix Parallel deve ser usado somente com regras administrativas/lote.

  5. Não crie zeros desnecessários, pois isso leva a bloqueios e explosão de dados. Revise cuidadosamente a lógica de negócios e adicione as condições If necessárias para verificar se há zeros. Converta zeros em #missing.

  6. Elimine várias passagens nos mesmos blocos; em vez disso, defina uma correção externa adequada e mova para dentro e para fora, conforme necessário. Combine instruções If em vez de usar e reutilizar If nas mesmas interseções.

  7. Evite usar referências interdimensionais no lado esquerdo de uma equação. Isso tem um impacto no desempenho.

  8. Agregue dimensões na ordem de criação do maior número de blocos para o menor número de blocos no script, por exemplo, Agg (1ª Dimensão com Mais Blocos, 2ª Dimensão com Mais Blocos, 3ª Dimensão com Mais Blocos). Agg é mais rápido que Calc Dim e é um mecanismo preferencial para agregação. A agregação usando @ancestors nas regras do usuário final até o topo da dimensão pode levar à contenção de blocos.

  9. Use solicitações em tempo de execução, em vez de criar várias regras com a mesma lógica subjacente. Mais regras significam mais manutenção.

  10. Use modelos para dividir e reutilizar a lógica de negócios. No entanto, os modelos não devem ser regras totalmente funcionais com Fix, EndFix. A regra que combina vários modelos deve ter uma correção externa adequada e entrada e saída de peças, conforme necessário.

Adicionar Lógica de Negócios Usando Cálculos

Para incorporar uma lógica de negócios ao seu aplicativo, é possível criar cálculos usando o Calculation Manager. Isso permite que você crie, valide, implante e administre cálculos avançados que resolvem problemas de negócios.

Normalmente, as regras de negócios e os conjuntos de regras são criados para:

  • Executar a modelagem de receita

  • Executar a modelagem de despesa

  • Calcular KPIs

  • Executar alocações

O Calculation Manager inclui estes objetos:

  • Regras: Contêm componentes e modelos

  • Componentes: Ajudam na criação de regras

  • Conjuntos de Regras: Contêm regras que podem ser calculadas de forma simultânea ou sequencial

  • Modelos: inclua modelos de sistema que realizam cálculos e modelos personalizados que podem ser projetados por administradores

  • Componentes: ajudam na criação de regras

Para aprender mais sobre a criação de cálculos, consulte as diretrizes em Como Projetar com o Calculation Manager para Oracle Enterprise Performance Management Cloud.

Criar Agregações

As agregações fazem o roll-up do seu aplicativo em membros de nível de resumo na dimensão, como Entidade ou qualquer outra dimensão esparsa.

O Calculation Manager inclui modelos para ajudá-lo a criar agregações. A seguir mostramos algumas sugestões sobre como usar modelos.

Defina o Ponto de Vista

Quando o ponto de vista é definido, a regra só é executada para os membros selecionados. A utilização de uma solicitação em tempo de execução para as dimensões permitirá que os usuários especifiquem valores membros para essas dimensões ao iniciar a regra. Dessa forma, os usuários poderão iniciar a regra várias vezes por diferentes anos, cenários e versões sem que seja necessário modificar a regra no Calculation Manager.

Configurações comuns:

  • Agregação densa completa: preencha esta seção se os valores pais nas suas dimensões densas não forem definidos como cálculos dinâmicos. Em geral, essa guia permanece vazia.

  • Agregação esparsa completa: selecione a dimensão esparsa que precisa ser agregada. A ordem das dimensões selecionadas não é relevante.

  • Agregação parcial da dimensão, densa: preencha esta seção se os valores pais nas suas dimensões densas não forem definidos como cálculos dinâmicos. Em geral, essa guia permanece vazia.

  • Agregar os dados na moeda local: Não

  • Agregar os valores ausentes no Banco de Dados: Sim

  • Otimizar o Cálculo na dimensão Esparsa: Desativado

  • Selecionar um valor para o cache da calculadora: Padrão

  • Deseja ativar o modo de depuração para este assistente?: Assistente de Depuração Ativado ou Assistente de Depuração Desativado. Selecione a opção Assistente de Depuração Ativado se quiser ver um script gerado para exibir seleções em relação a algumas das Solicitações de Tempo de Design neste modelo.

Melhores práticas:

  • Utilizar solicitações de tempo de execução para membros como Entidade, Cenário e Versão. Isso permite que a sua regra seja dinâmica e seja executada com base na entrada do usuário.

  • Em geral, dimensões densas como Conta e Período não precisam ser agregadas. Se esse for o caso, você poderá definir membros pais como cálculo dinâmico. No entanto, se você tiver fórmulas de membro em dimensões densas e elas não estiverem definidas como cálculos dinâmicos, será necessária uma regra de Dimensão de Cálculo.

Criar Cálculos Detalhados

Você usa o Calculation Manager para criar, validar, implantar e administrar cálculos que resolvem problemas de negócios.

Há três tipos de objeto que podem ser calculados no Calculation Manager:

  • Conjuntos de Regras: Contêm regras que podem ser calculadas de forma simultânea ou sequencial

  • Regras: Contêm componentes e modelos

  • Componentes: Contêm componentes de fórmula, componentes de script, componentes de condição, componentes de intervalo e componentes de loop fixo

Melhores práticas:

  • Como primeira etapa na criação das suas regras, certifique-se de compreender a lógica de negócios e as entidades ou departamentos a que a regra se aplica. Por exemplo, conheça as contas envolvidas na regra.

  • Certifique-se de conhecer as contas de origem e destino.

  • Depois que você compreender completamente os drivers do cálculo, use o componente de objeto adequado ou o modelo para criar a regra. Os componentes e os modelos facilitam a seleção de membros para ajudar a implantar as regras.

  • A utilização de solicitações em tempo de execução para membros como Entidade, Cenário e Versão permite que as suas regras sejam dinâmicas e sejam executadas com base na entrada do usuário.

Diagnóstico do Calculation Manager

Execute erros e avisos antes de implantar regras. Isso fornece informações úteis, incluindo:

  • O número de passagens pelo banco de dados
  • Quaisquer avisos necessários
  • Informações sobre o número de blocos e se as dimensões estão faltando
  • Quaisquer regras que precisam ser otimizadas
  • Se qualquer um dos componentes do lado direito da equação contiver um zero, o membro derivado será 0. Então, após a agregação, há muitos zeros.
  • Para resolver isso, a regra deve incluir uma instrução if informando if (<q>Earned Premium</q><>0). Dessa forma, os zeros não serão tão significativos no aplicativo.

Problemas e Soluções da Regra de Exemplo

Exemplo 1: Regra que Faz Várias Passagens pelo Banco de Dados

A regra a seguir faz 10 passagens pelo banco de dados para anos e período, moeda e contas.

Regra de Exemplo - Várias Passagens pelo banco de dados

Exemplo 2: Regra que Faz Somente uma Passagem pelo Banco de Dados

A regra a seguir faz apenas uma passagem pelo banco de dados. Esta é uma redução importante no total de células afetadas.

Regra revisada - Passagem única pelo banco de dados

Exemplo 3: Regra que Copia e Cria Zeros

Nesta regra, se qualquer um dos componentes do lado direito da equação contiver um 0, o membro derivado será 0. Após a agregação, haverá muitos zeros. Para resolver isso, a regra deve incluir uma instrução if informando if ("Earned Premium"<>0). Dessa forma, os zeros não serão tão significativos no aplicativo.

Exemplo de uma regra que copia e cria zeros

Exemplo 4: Remoção de Zeros de Cubos BSO

A fórmula a seguir resulta no valor original ou, se for 0, mudará para #missing.

"DenseMbr" = "DenseMbr" * "DenseMbr"/"DenseMbr";

"SparseMbr" = "SparseMbr" * "SparseMbr"/"SparseMbr";

Para resolver isso, crie uma regra aproveitando a fórmula. Use uma dimensão esparsa que tenha menos membros (como Ano, Cenário ou Versão), porque o cálculo precisa ser feito para cada membro.

Fix(idescendants(Entity),@levmbrs(Accounts,0),@levmbrs(Period,0),@idescendants(Custom dimensions),
@levmbrs(Years,0),@levmbrs(Versions))
Actual=Actual*Actual/Actual;
   Fix("Actual")
      CLEARBLOCK EMPTY:
   Endfix
Endfix

Lembre-se de fazer uma reestruturação depois. Caso contrário, os blocos vazios não serão excluídos.