Artigo
· jan 10 4min de leitura

E o DMN?

Alguns meses atrás, enfrentei um desafio importante: otimizar o tratamento da lógica de negócios em nosso aplicativo. Meu objetivo era extrair a lógica de negócios do código e passar para analistas. Lidar com várias regras pode resultar facilmente em um código desorganizado com uma infinidade de instruções "if", especialmente se o programador não entende a complexidade ciclomática. Esse código vira uma dor de cabeça para quem trabalha com ele — difícil de escrever, testar e desenvolver.

 

Spoiler

 

Depois de explorar várias opções, incluindo tentar ensinar Python a analistas 😀, me deparei com a técnica Decision Model Notation (DMN) para descrever a lógica de negócios. Ela se mostrou um sucesso — analistas poderiam agora articular a lógica de negócios sozinhos, reduzindo mais de mil linhas de código a apenas três + arquivo de descrição DMN.

Agora, vamos nos aprofundar na solução.

O DMN, concebido em 2015 pelos criadores do BPMN, interage bem com o último, mas também pode ser usado de maneira independente.

O principal conceito do DMN é a capacidade de gerenciar decisões semelhantes a outros aspectos dos seus aplicativos. Por exemplo, considere uma solução para calcular bônus — você pode modificá-la de maneira independente sem afetar outros elementos do aplicativo.

O DMN opera de duas formas:

  1. Analítica: compondo tabelas de solução em programas, programados por desenvolvedores.
  2. Automação: executando tabelas diretamente com o mecanismo do DMN, minimizando o risco de desenvolvedores interpretarem errado as especificações técnicas.

Portanto, nosso código é parecido com isto 

 

 Será uma tabela simples

Basicamente, é uma tabela em que os seguintes itens são definidos:

  1. Dados de entrada com seus tipos (strings, booleanos, inteiros, longos, duplos, datas).
  2. As linhas de regras aplicadas aos dados de entrada.
  3. A política de seleção de regras (política de hits) que determina a ordem e o número de regras acionadas (primeira bem-sucedida, única, todas as correspondentes etc.).
  4. A decisão final correspondente à linha de regras correspondente.

 

Em conclusão, o uso do Decision Model and Notation (DMN) oferece vários benefícios para a gestão da lógica de negócios:

  1. Clareza e transparência: o DMN oferece uma forma clara e transparente de expressar lógica de negócios complexa. Isso permite a representação visual das tabelas de decisão, facilitando para as partes interessas técnicas ou não entenderem e colaborarem nas regras de negócios.
  2. Separação de preocupações: ao extrair a lógica de negócios do código e representá-la no DMN, há uma clara separação de preocupações entre desenvolvedores e analistas de negócios. Os analistas podem articular e modificar as regras sem entrar nas complexidades do código, promovendo a colaboração e agilidade.
  3. Manutenção e flexibilidade: o DMN facilita a manutenção e atualização das regras de negócios. As mudanças na lógica de negócios podem ser implementadas ao ajustar as tabelas do DMN, sem precisar de grandes modificações de código. Isso otimiza a flexibilidade do sistema de se adaptar aos requisitos de negócios em constante mudança.
  4. Menor complexidade do código: utilizar o DMN ajuda a reduzir a complexidade do código. Em vez de incorporar uma lógica complicada de tomada de decisões na base de código, a lógica é encapsulada em um formato visual e estruturado, deixando a base de código mais administrável e compreensível.
  5. Mitigação de riscos: o uso do DMN, especialmente em cenários de tomada de decisão automatizados, mitiga o risco de má interpretação ou implementação das regras de negócios. O mecanismo do DMN garante que as decisões sejam executadas corretamente com base nas regras definidas, minimizando erros.
  6. Eficiência no desenvolvimento: os desenvolvedores podem focar em implementar a interação entre o aplicativo e o mecanismo do DMN, em vez de escrever e depurar lógica complexa de tomada de decisões. Isso pode levar a ciclos de desenvolvimento mais rápidos e menor tempo até o mercado para aplicativos.

E sim, depois de tudo isso, você pode usar seus esquemas do DMN com os dados armazenados no seu banco de dados do IRIS - https://openexchange.intersystems.com/package/iris-dmn

Se você tiver interesse em saber mais sobre o DMN, a linguagem FEEL e o motivo pelo qual a solução foi criada em JAVA, envie suas perguntas, vou responder nos comentários em mais detalhes

 

Informações adicionais sobre o DMN 

https://docs.drools.org/latest/drools-docs/drools/DMN/index.html  - a documentação mais detalhada

https://sandbox.kie.org/ - sandbox online onde você tentar desenhar seu próprio diagrama 

https://learn-dmn-in-15-minutes.com/ - tutorial interativo

Discussão (0)1
Entre ou crie uma conta para continuar