Fila de Solicitações Diferidas

Há casos de uso em que uma entidade é definida com um status que aguarda que uma tarefa subsequente seja executada de forma assíncrona para que ela avance no ciclo de vida. Essa tarefa é implementada usando regras de monitoramento conectadas à definição de status do objeto de negócios da entidade juntamente com um controle batch. Essas regras de monitoramento não são processadas imediatamente quando o registro insere esse status, mas sim quando o batch associado é executado em seguida.

Quando a tarefa diferida deve ser processada o mais rápido possível, uma mensagem pode ser adicionada à Fila de Solicitações Diferidas para executar a tarefa quase em tempo real. Esse mecanismo oferece uma fila gerenciada de mensagens, cada uma representando uma solicitação para executar as regras de monitoramento diferido de uma determinada entidade, semelhante à forma como essas regras são processadas em batch.
Observação: esse mecanismo só está disponível em uma instalação na nuvem.
CUIDADO: esse recurso só deve ser usado para dar suporte a fluxos de negócios com eventos dependentes de tempo que exigem processamento quase em tempo real. Todos os outros fluxos assíncronos devem permanecer diferidos para o processo em batch.

As seções a seguir descrevem conceitos e recursos do mecanismo de processamento quase em tempo real.

Solicitando Processamento Quase em Tempo Real

Quando uma entidade insere um status associado às regras de monitoramento diferido dependente de tempo, é possível fazer uma solicitação para processar essas regras o mais rápido possível após a confirmação da transação atual.

O produto suporta as seguintes opções para solicitar o monitoramento quase em tempo real de uma entidade:
  • Para sempre enviar a entidade para processamento quase em tempo real quando atingir um status específico, adicione o algoritmo "Adicionar uma Solicitação Diferida" (F1-DFREQADDN) "Inserir" à respectiva definição de status do objeto de negócios. Consulte a descrição detalhada do algoritmo para obter mais informações.

  • Você pode usar a função DeferredRequestAPI em um algoritmo baseado em Groovy para implementar regras personalizadas a respeito de quando e como adicionar essa solicitação à fila.

  • Quando aplicável, a funcionalidade Sincronização de Dados Genéricos também oferece suporte a uma opção para processamento quase em tempo real que usa a fila de Solicitações Diferidas.

Tratamento de Exceções

Quando a solicitação diferida é processada com sucesso pelo agente da fila em tempo real, a entidade relacionada é atualizada de acordo com suas regras de objeto de negócios. No entanto, se a solicitação continuar falhando após várias tentativas, o agente da fila descartará a solicitação e a entidade relacionada permanecerá em seu status atual, aguardando para ser selecionada pelo monitoramento em batch diferido correspondente. Nesse ponto, se o erro persistir, o batch reportará o problema como de costume.
Aviso: não remova o controle batch diferido das definições de status do objeto de negócios. Esses fluxos devem permanecer diferidos para o batch conforme planejado por motivos de integridade de dados.

Quando aplicável, o envio de entidades a serem processadas quase em tempo real permite que o batch de monitoramento correspondente seja programado com menos frequência, pois não precisa mais atender aos requisitos de frequência quase em tempo real. Com a maioria dos registros processados com sucesso pelo mecanismo quase em tempo real, o batch de monitoramento é usado principalmente para tratar exceções.

Solicitações Correlacionadas

Por padrão, as mensagens na fila são processadas sem uma ordem específica. Em situações em que várias mensagens atualizam o mesmo recurso, pode haver a necessidade de processá-las em série para evitar erros de simultaneidade.

Quando adicionada à fila, a mensagem pode fazer referência à entidade principal que ela atualiza para correlacioná-la com outras mensagens que atualizam a mesma entidade. As mensagens que fazem referência explícita à mesma entidade principal são processadas em série.

Aplicar Atraso de Polling

Quando o status atual de uma entidade é associado a regras de monitoramento que aguardam que uma condição específica seja atendida para determinar o próximo status para o qual a entidade deve fazer a transição, não é suficiente executar essas regras de monitoramento uma vez. A condição pode não ser atendida inicialmente, mas isso pode ocorrer pouco tempo depois. Nessa situação, a solicitação diferida colocada na fila pode indicar que ela requer intervalo de polling.

Quando o intervalo de polling é solicitado, a mensagem de solicitação diferida na fila é processada da seguinte forma:

  • Quando a mensagem é adicionada à fila, o status atual da entidade relacionada é anotado.
  • Após o processamento bem-sucedido da mensagem, se o status da entidade relacionada permanecer inalterado, o agente da fila concluirá a mensagem atual e adicionará outra mensagem à fila juntamente com um pequeno atraso, ou seja, definirá a entidade a ser processada novamente mais tarde.
  • Este processo se repete para um número limitado de tentativas. A cada tentativa, o atraso em segundos aumenta.
  • Se o status da entidade relacionada permanecer inalterado após todas as tentativas, a mensagem será descartada sem exceção. A entidade relacionada seria monitorada normalmente pela próxima execução em batch programada.