CONTEÚDO
- Visão Geral
- Configurações Gerais
- Parametrização dos agendamentos do AUTONFE para processamento em sequencial (Monothread)
- Parametrização dos agendamentos do AUTONFE para processamento em paralelo (Multithread)
- Uso de licenças do AUTONFE
01. VISÃO GERAL
Permitir a configuração do agendamento (schedule) das rotinas automáticas de Transmissão (AUTONFETRANS), Monitoramento (AUTONFEMON) e Cancelamento (AUTONFECANC) de Nota(s) Fiscal(is) Eletrônica(s) - AUTONFE - de forma sequencial ou paralela, onde:
Execução Sequencial (padrão): Quando todo o processamento de Transmissão ou Monitoramento ou Cancelamento é executado por uma única instancia (thread) do programa.
Execução Paralela (multithread): Quando todo o processamento de Transmissão ou Monitoramento ou Cancelamento é executado por mais de uma instancia (thread) do programa.
Ambos os casos serão detalhados em cada tópico.
Rotinas do AUTONFE:
Rotina de Transmissão: AUTONFETRANS
Rotina de Monitoramento: AUTONFEMON
Rotina de Cancelamento: AUTONFECANC
02. CONFIGURAÇÕES GERAIS
Para releases inferiores à Microsiga Protheus 12.1.33 será necessário realizar a seguinte configuração do dicionário de perguntas do Protheus.
No módulo do Configurador (SIGACFG), acesse Base de Dados / Dicionário / Base de Dados:
Selecione a opção Perguntas:
Clique na lupa de pesquisa:
Informe AUTONFE no campo de busca, e clique no botão Buscar. Em seguida clique em Editar:
Inclua na segunda linha (pressionar tecla para baixo) as seguintes informações exibidas em tela. Depois pressionar o botão Confirmar.
Pronto, já podemos configurar as rotinas do AUTONFE.
03. PARAMETRIZAÇÃO DOS AGENDAMENTOS DO AUTONFE PARA PROCESSAMENTO EM SEQUENCIAL (MONOTHREAD)
Quando se configura as rotinas do AUTONFE indicadas anteriormente, para cada uma delas é possível realizar o processo de forma simultânea, ou seja, ao configurar por exemplo, na rotina de transmissão de notas (AUTONFETRANS) o parâmetro Nro de Processos simultâneos? com conteúdo maior ou igual a 2, isto será interpretado pela rotina que ela deverá abrir novas threads para enviar/transmitir as notas. Desta forma a rotina irá trabalhar utilizando o processo principal, que será o gerenciador de threads a serem abertas, mais a quantidade de threads informados no parâmetro, para que estas realizem todas as transmissões de notas da serie informada no parâmetro de Serie.
Este processo torna o processamento das notas muito mais rápido, porem consome mais licenças e recursos de maquina (memoria/CPU).
Abaixo, como exemplo apenas, será mostrado o processo de configuração da rotina de Transmissão de Notas AUTONFETRANS de forma paralela (multithread):
No módulo Configurador (SIGACFG), acesse Ambiente / Schedule / Schedule :
Em Schedule / Agendamentos / Cadastro, clicar no botão Incluir:
Preencher os campos conforme desejado.
Ao preencher o nome da rotina com uma das rotinas do AUTONFE informadas anteriormente, será apresentado tela de parâmetros com o novo parâmetro de Numero de Processos Simultâneos. Para que seja realizado o processo de forma paralela, deve-se informar um número igual ou maior a 2. Em seguida clicar em OK
Importante
Ao preencher o campo de Empresa/Filial o próprio agendamento se encarregará de "disparar" um processo para cada empresa/filial configurada. Este comportamento é padrão dos agendamentos Protheus e é independente da configuração do parâmetro realizado no passo anterior.
Neste caso exemplificado acima, serão disparados dois processos (threads) de transmissão de notas, um para cada Empresas/Filiais configurada. Para cada processo de transmissão, a rotina do AUTONFE identificará o parâmetro de Numero de Processos Simultâneos e assim realizara aberturas de processo (threads) em paralelo, neste caso serão abertos mais 5 threads, totalizando 6 threads, onde:
Nro de Threads | Operação da Thread |
---|---|
1 | Processo gerenciador de threads |
5 | Numero de threads que serão abertas para processamento paralelo de transmissão, monitoramento ou cancelamento de documento. |
Desta forma, para esse exemplo, para a filial T1-X TSS01 serão abertas e consumidas um total de 6 threads/licenças par realizar todo o processamento. Caso sejam apresentadas mais filiais no agendamento, caso exemplificado acima, o numero será proporcional ao numero de filiais, neste caso serão utilizadas 12 threads/licenças como um todo.
Utilizando parâmetro do Fórmulas
No caso da utilização do Fórmula é necessário que o valor retornado seja numérico, conforme exemplo abaixo:
04. PARAMETRIZAÇÃO DOS AGENDAMENTOS DO AUTONFE PARA PROCESSAMENTO EM PARALELO (MULTITHREAD)
Quando se configura as rotinas do AUTONFE indicadas anteriormente, para cada uma delas é possível realizar o processo de forma sequencial, ou seja, ao configurar por exemplo, na rotina de transmissão de notas (AUTONFETRANS) o parâmetro Nro de Processos simultâneos? com conteúdo igual a 0 ou 1, isto será interpretado pela rotina que ela não deverá abrir novas threads para enviar/transmitir as notas. Desta forma a rotina irá trabalhar utilizando apenas a própria thread aberta no agendamento para realizar toda transmissão das notas informadas no parâmetro de Serie.
Isto implica em um processamento mais lento porem que consumirá apenas uma das licenças disponíveis.
Abaixo, como exemplo apenas, será mostrado o processo de configuração da rotina de Transmissão de Notas AUTONFETRANS de forma sequencial (monothread):
No módulo Configurador (SIGACFG), acesse Ambiente / Schedule / Schedule :
Em Schedule / Agendamentos / Cadastro, clicar no botão Incluir:
Preencher os campos conforme desejado.
Ao preencher o nome da rotina com uma das rotinas do AUTONFE informadas acima, será apresentado tela de parâmetros com o novo parâmetro de Numero de Processos Simultâneos. Para que seja respeitado o uso de apenas 1 processo em execução para a transmissão das notas, basta informar 0 ou 1. Em seguida clicar em OK
Importante
Ao preencher o campo de Empresa/Filial o próprio agendamento se encarregará de "disparar" um processo para cada empresa/filial configurada. Este comportamento é padrão dos agendamentos Protheus e é independente da configuração do parâmetro realizado no passo anterior.
Neste caso mostrado acima, serão disparados dois processos (threads) de transmissão de notas, pois temos duas empresas/filiais configuradas. Para cada processo de transmissão, a rotina do AUTONFE identificará o parâmetro de Numero de Processos Simultâneos e assim não realizara mais nenhum outra abertura de processo em paralelo, realizando toda a operação no mesmo processo (thread) aberto pelo agendamento.
Utilizando parâmetro do Fórmulas
No caso da utilização do Fórmula é necessário que o valor retornado seja numérico, conforme exemplo abaixo:
05. USO DE LICENÇAS DO AUTONFE
O uso de licenças irá depender do valor informado no parâmetro de Numero de Processos Simultâneos presente nas rotinas de Transmissao, Monitoramente e Cancelamento do AUTONFE.
Processo Monothread
Caso seja informado o numero de processos simultâneos com valor 0 ou 1, para cada rotina/processo do AUTONFE será consumido apenas 1 licença.
Processo MultiThread
Caso seja informado no parâmetro numero de processos simultâneos um valor maior ou igual a 2, o numero de thread que será aberto ao executar a rotina, será:
Total de Threads = Nro de Processos Simultâneos + 1
Exemplo 1:
Caso informado no parâmetro Nro de Processos Simultâneos o valor 2, teremos 3 threads sendo executadas, sendo 1 para gerenciamento de threads e 2 threads realizando o processo do AUTONFE (transmissão, monitoramento ou cancelamento).
Exemplo 2:
Caso informado no parâmetro Nro de Processos Simultâneos o valor 10, serão abertas 11 threads, sendo 1 para gerenciamento de threads e 10 threads realizando o processo do AUTONFE (transmissão, monitoramento ou cancelamento).
Importante
Vale ressaltar que este controle de numero de threads é realizado pelas rotinas do AUTONFE, porem deve-se atentar ao numero de Empresa/filial configurada para cada JOB (processo) do AUTONFE, pois o disparado de cada filial não esta associado ao controle de numero de processos simultâneos. Os disparos do JOB por Empresa/Filial é um comportamento nativo da rotina de Agendamento (Schdule) do módulo Configurador.