Sincronização e assincronia de processos

O mundo pode aprender muito com os programadores. Ele já está aprendendo, mas não da maneira errada. Por exemplo, peguei processos e algoritmos, mas não percebi uma abordagem como assincronia.

Qualquer programador entende o que são sincronismo e assincronia. É o quanto isso é entendido pelo programador, por isso é incompreensível para os desenvolvedores de processos comuns.

Ações síncronas de um processo são aquelas executadas no encadeamento principal, em uma instância do processo. A principal diferença entre o modo síncrono: a próxima ação começa apenas quando a anterior é concluída. Assim, até que uma ação seja concluída, o processo está em jogo.

Ações assíncronas são aquelas executadas em paralelo com o encadeamento principal, na mesma instância do processo ou em outro processo completamente. A principal diferença entre o modo assíncrono: execução paralela de dois ou mais ramos do processo.

Processos síncronos, como programas, são muito mais fáceis de escrever e depurar, portanto essa abordagem ao design de processos é muito comum. Há muito a ver com assincronia, especialmente com a designação de pontos de transição para execução paralela e retorno ao mainstream. Não há promessas na vida.

Por exemplo, o mesmo processo de aquisição, mediante solicitação. Ele é desenhado como uma sequência padrão de ações: apareceu uma solicitação, o fornecedor seleciona o fornecedor, solicita os termos e o custo, concorda com o vendedor ou o departamento de controle interno, faz um pedido com o fornecedor, solicita a avaliação da contraparte no departamento jurídico ou no departamento contábil, cria um pedido de pagamento, aguarda esse pagamento, monitora o pedido, depois organiza ou rastreia o lançamento no armazém, para que, no final, feche o aplicativo. O processo é completamente sincronizado.

Agora imagine - em nosso sistema de informação, o serviço de avaliação de fornecedores não está conectado. Portanto, o departamento jurídico precisa coletar informações de fontes abertas. Isso significa que a avaliação leva tempo. Dada a fila de pedidos de advogados, três dias se passarão.

O que acontecerá com o processo neste momento? De acordo com a lógica síncrona, ele permanecerá em jogo. O fornecedor, sendo um elemento verdadeiro do sistema, não levantará um dedo até que ele receba a avaliação do fornecedor - especialmente se houver sanções por trabalhar com contrapartes não verificadas.

Podemos adicionar assincronia aqui? Claro. Nesse momento, quando o fornecedor escolhe o fornecedor, ele pode enviar um pedido de avaliação da contraparte ao departamento jurídico e, enquanto negocia, acorda preços e termos. Quando ele estiver pronto para fazer um pedido, a avaliação chegará a tempo. O processo terminará antes de três dias.

Obviamente, os advogados podem ficar indignados - para que avaliaremos o fornecedor, se você ainda não tiver decidido claramente o que fazer, pedirá a ele? O que eles deveriam responder?

A solução se sugere, já a indicamos acima - para conectar o serviço de avaliação de fornecedores. Agora, entendemos ainda melhor por que é necessário - dar assincronia e acelerar o processo. Embora, o serviço provavelmente seja apenas síncrono. O que você acha?

Se o serviço não estiver conectado, essa avaliação poderá ser justificada pelo trabalho de "uso futuro". Se o seu sistema de informações tiver um local para registrar os dados da avaliação, na próxima vez que você precisar trabalhar com esse fornecedor, não precisará mais entrar em contato com o departamento jurídico. Obviamente, uma avaliação tem uma data de validade, mas pode ser usada dentro de certos limites razoáveis.

Na assincronia, a ausência de garantias geralmente é assustadora, ou seja, o risco de um resultado negativo em um dos ramos paralelos do processo. E se a reconciliação falhar?

Aqui você precisa de estatísticas. Se você estiver trabalhando com um processo existente, imagine aproximadamente, ou com precisão, com que freqüência determinadas ações terminam negativamente - por exemplo, coordenação. É a partir dessa probabilidade que se deve proceder iniciando a execução paralela.

A assincronia implora diretamente por todos os processos de coordenação. Se você trabalha lá apenas no modo síncrono, e até segue a liderança dos coordenadores, são construídas longas cadeias interdependentes, gerando burocracia e responsabilidade mútua.

Um exemplo típico: "Eu concordarei apenas depois que ele concordar". Ou "examinarei este contrato somente depois dos financiadores". Embora, de acordo com as estatísticas e o senso comum, essas declarações não sejam justificadas e sejam apenas uma maneira de mudar a responsabilidade.

O principal aqui é não se preocupar, e não enfrentar tudo de uma vez. Tente selecionar o modo assíncrono primeiro um ramo da coordenação. Pode ser necessário revisar a tarefa, os parâmetros de coordenação - para eliminar a interdependência.

Por exemplo, permita que o departamento financeiro, na cadeia de aprovação de contratos, observe apenas as condições de pagamento. Deixe que ele tenha seus próprios critérios de avaliação claros. É melhor que eles sejam formalizados na forma de um modelo de contrato - por exemplo, 100% pós-pagamento para fornecedores, 100% pré-pagamento para compradores. Nesse caso, os contratos que atendem aos critérios caem de cada vez. E os financiadores não terão motivos para esperar uma avaliação dos mesmos advogados.

A única coisa que é importante: processos assíncronos são muito difíceis de implementar sem automação. Se os processos, sua execução e rastreamento forem implementados apenas no papel, a adição de ramificações paralelas os transformará em caos. Precisa de automação.

O princípio da "Tarefa automática" é mais adequado para essa automação. Embora você possa se dar bem com os meios padrão de desenhar processos que estão em plataformas modernas, você só precisa mexer.

O "desenho" padrão dos processos exigirá que você identifique todo o processo, todos os ramos e relacionamentos. Se o processo for complexo e longo, você encontrará um problema - ele simplesmente deixará de caber na tela, em largura. Se você estudou no instituto como programador, lembre-se desta regra para projetar algoritmos: não mais que três ramificações verticais paralelas. A regra não foi apenas inventada - se houver mais ramificações, será problemático entender o esquema do algoritmo.

As tarefas automáticas eliminam esse problema - não há imagem do processo, porque não existe tal entidade - um processo. Existem tarefas. Se você realmente quiser, poderá montar um processo a partir deles. Mas não o contrário. Um tipo de método dedutivo para desenhar processos.

Além da assincronia, existe um método de otimização ainda mais poderoso - o buffer do processo. Sobre ele - outra hora.

Source: https://habr.com/ru/post/pt453192/


All Articles