Quando habilitado para trabalhar com o Processamento por demanda, o processamento dos documentos é realizado com os dados em memória, ou seja, ao invés de buscar registro registros na base de dados para o processamento, as rotinas responsáveis pelo de processamento recebem os dados através de parâmetros, enviados pelas rotinas rotinas de recepção dos documentos. Essa característica exige a criação uma contingência para casos de falhas durante o processamento, pois todo o processo está sendo realizado com dados em memoria da aplicação.
As falhas de processamento podem ser provocadas devido à fatores que possam provocar a interrupção do processamento. Seja por falha de acesso a serviços externos de integração com a aplicação(como a indisponibilidade dos serviços do Fisco de documentos: Sefaz, Prefeituras etc... ) ou até mesmo pela queda(desligamento) do servidor da aplicação.
Para que haja a contingência do processamento, os dados para processamento são persistidos na base de dados. Todas requisições referente a processamento de documentos geram Processos dentro do TSS. E é através desses Processos que o Job de Contingência garantirá o processamento. O fato de todos os Processos serem gravados na tabela de processos, faz com que o JOB filtre os registros para processamento. O filtro é realizado através do Status de processamento do documento.
Os processos são gravados com "Status = 2: ( Em processamento )". Em caso de falha, a execução atual do Processo é encerrada e o Status passa para "Status= 1(Aguardando Processamento)" para que o JOB possa dar continuidade no processamento.
Porém as situações em que a interrupção do processamento ocorra de forma involuntária, impossibilita a atualização do STATUS, exigindo que o JOB utiliza outros critérios para o Filtro dos registros. Neste caso além do STATUS, o JOB compara a data e horário atual com a data e horário do início do processamento e caso tenha ultrapassado 5 minutos, o registro será reprocessado.
No exemplo abaixo temos uma ilustração de um processo de Emissao de NFe. Neste exemplo onde o Processamento por Demanda foi interrompido no Sub Processo de Consulta de retorno do processamento na Sefaz. Neste caso o JOB de Contingência garante o reprocessamento a partir do Sub Processo que apresentou a falha.
Fluxo do Processo:
1 - Rotina de Recepção realiza a remessa do documento na Tabela de Negócio.
...
6 - O registro do Processo é retornado na consulta realizada pelo JOB na tabela de PocessosProcessos
7 - O JOB de Contingência reinicia o processamento a partir do Sub Processo que apresentou a falha.
...