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)