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.
Siga estas diretrizes para os comandos SET:
SET CREATEBLOCKONEQ ON
nem SET CREATENONMISSINGBLK ON
.SET CLEARBLOCK EMPTY
SET CALCTASKDIMS
. (O Oracle Essbase geralmente faz isso automaticamente.)SET COPYMISSINGBLOCK OFF
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.
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.
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.
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
.
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.
Evite usar referências interdimensionais no lado esquerdo de uma equação. Isso tem um impacto no desempenho.
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.
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.
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:
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.
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.
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 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.