DEV Community

Como melhorei o controle de Estados numa aplicação?

As aplicações sempre crescem a nível de processos de negócio. Esse crescimento nos encaminha para o uso de estados de uma entidade ou operação.

O controle desses estados é fundamental e pode influenciar o fluxo das operações no sistema.

Cenário Comum

A cada mudança no sistema é comum mudar o estado, gravando apenas a data da alteração.
O sistema verifica o estado e segue o fluxo das operações relacionadas.
É uma boa implementação, mas pode ser melhorada.

Alguns Estados

  • Usuário: Activo, Inactivo, Bloqueado
  • Conta: Pendente, Activa, Aberta, Fechada
  • Tarefa: Pendente, Cancelado, Em progresso Terminado.
  • Aprovação: Pendente, Em Análise, Reprovado, Aprovado

Problema dessa abordagem

O problema nesses casos, está com o rastreio do estado anterior. O sistema grava somente o estado actual.

O fluxo segue perfeitamente mas é necessário o histórico das mudança de estados, servindo como dados de rastreio, aumentando a experiência do usuário.

Implementação

Para resolver esse problema, precisamos dos itens:

  • Desenho do workflow dos estados.
  • Estado na entidade principal.
  • Entidade Workflow ou Histórico para rastreio dos estado.
  • Tornar o histórico imutável.
  • Armazenar a mudança e o usuário responsável.
  • Armazenar a data e uma possível descrição.
  • Se necessário, podem ser adicionados dados como anexos ao workflow.

Minha Experiência

Recentemente, abracei o desafio de desenvolver um Sistema de Registo de Ocorrências para uma Instituição de Saúde.

As tecnologias usadas foram: .ASP NET Core com C#, Razor Pages e SQL Server.
Os Utentes registam as ocorrências no portal e devem acompanhar o estado da sua reclamação. A parte administrativa recebe as ocorrências e dá o devido tratamento.

As ocorrências tinham dados como: código sequencial, Identificação do Utente, data da ocorrência, categoria da ocorrência, descrição e anexos(vídeos, imagens ou documentos).

Cada ocorrência passava por diferentes estados de tratamento, de acordo a hierarquia de funcionários estabelecida. Os estados: Pendente, Atribuída, Em Tratamento, Validada, Negada e Finalizada.

Implementei uma tabela de histórico de ocorrências que contém a ocorrência o estado alterado, responsável pela alteração e a descrição. Também permiti o anexo de documentos para cada fase de tratamento.

No final os Utentes podiam acompanhar as fases do tratamento das suas ocorrências, bem como visualizar os detalhes de cada fase.

Resultados

  • Melhoria na experiência do utilizador.
  • Rastreabilidade das operações de um fluxo.
  • Histórico imutável.
  • Podem ser adicionados mais dados ao workflow.
  • Interface mais interativa: listagem e detalhes do estado.

Top comments (0)