Anveo EDI Connect / Config / Automatização / ANVEDI Job Handler
Esta é uma tradução automática. O post original está disponível em Inglês .

ANVEDI Job Handler

Microsoft Dynamics 365 Business Central possui um sistema de programação de tarefas que permite executar codeunits em determinados momentos. Anveo EDI Connect oferece uma codeunit específica que pode ser utilizada. A codeunit tem o ID 5327312 e chama-se ANVEDI Job Handler.

Exemplo de configuração de fila de trabalhos no Microsoft Dynamics 365 Business Central

Esta codeunit oferece diferentes tarefas e pode ser controlada pela cadeia de parâmetros. Esta cadeia segue regras simples e vamos mostrar-lhe exemplos para cada uma das acções disponíveis. A sintaxe geral deste parâmetro é:

ACTION_NAME(Parameter1=Value1, Parameter2=Value2)

Existem dois parâmetros que estão disponíveis para a maioria das tarefas, excepto para as Transacções comerciais:

ProcessFollowing

Controla se os pós-processamentos são executados automaticamente. A predefinição é False, se não for especificado.

True

O pós-processamento deve ser executado depois

False

A configuração predefinida determinará se os pós-processamentos serão executados.

ProcessQueueView

Este parâmetro é facultativo. O valor predefinido é sem vista de tabela. Este parâmetro especifica uma visão na tabela para a EDI Processing Queue que é utilizada se ProcessFollowing=True. A cadeia tem de ser uma vista de tabela Microsoft Dynamics 365 Business Central, como WHERE(Project Code=FILTER(A*)).

Acções frequentemente utilizadas

Na maior parte das vezes, será necessário utilizar uma das seguintes acções:

Recepção de dados

Esta acção irá receber dados para um canal de comunicação ou pasta especificados.

RECEIVE(Channel=MY_COMM_CHANNEL, ProcessFollowing=True)
Exemplo de parâmetro String: Receber dados do canal de comunicação MY_COMM_CHANNEL

Terá de especificar um dos seguintes parâmetros:

Channel

Especifica uma cadeia de filtros para o código do canal de comunicação. Este pode ser o código completo ou uma cadeia de filtros.

Folder

Especifica uma cadeia de filtros para o código da pasta de transmissão. Este pode ser o código completo ou uma cadeia de filtros.

Executar um mapping

Muitas vezes, quando se pretende exportar dados, começa-se por uma tarefa de transacção comercial ou por um NAV mapping. Mas o sistema de programação pode executar qualquer tipo de mapping.

RUN(ProjectFilter=TEST, FormatFilter=NAV, CodeFilter=EXPORT_JOB, ProcessFollowing=True)
Exemplo de cadeia de parâmetros: Executar o mapping TEST, NAV, EXPORT_JOB.
RUN(ProjectFilter=TEST, FormatFilter=NAV, CodeFilter=*, MultipleAllowed=True, ProcessFollowing=True)
Exemplo Cadeia de parâmetros: Executar todos os mapeamentos NAV do projecto TEST.

Os parâmetros permitidos são:

ProjectFilter

O código do projecto ou uma cadeia de filtro no código do projecto.

FormatFilter

O código de formato ou uma cadeia de filtros sobre o código de formato.

CodeFilter

O código mapping ou uma cadeia de filtros sobre o código mapping.

MultipleAllowed

Elemento de segurança. Se devem ser executados vários mapeamentos. A predefinição é False.

True

Podem ser executados vários mapeamentos.

False

Não podem ser executados mapeamentos múltiplos.

Recolher dados de transacções comerciais

Se existir um tipo de transacção comercial com recolha de dados, é possível utilizar a seguinte cadeia de parâmetros:

BT_COLLECT(Code=MY_BT_TYPE)
Exemplo de cadeia de parâmetros: Recolher os dados como definido no tipo de transacção comercial MY_BT_TYPE.

Existe apenas um parâmetro:

Code

O código do tipo de transacção comercial. Este parâmetro não permite filtros.

Manutenção

Se pretender utilizar a funcionalidade de repetição automática dos mapeamentos ou canais de comunicação, tem de configurar uma tarefa de manutenção simples. Este trabalho é muito rápido se não houver nada para fazer e pode ser executado com bastante frequência. Tenha em conta que a tarefa tem de ser executada pelo menos tantas vezes quantas as acções que pretende repetir.

MAINTENANCE()
Exemplo Cadeia de parâmetros: Executar processos automáticos como tentativas.

A tarefa não tem parâmetros.

Acções avançadas

As acções seguintes são mais especializadas e não são utilizadas com tanta frequência.

Processamento em lote de dados de transacções comerciais

BT_BATCH(Batch=MY_BATCH_CODE)
Exemplo de cadeia de parâmetros: Executar a acção de lote com o código MY_BATCH_CODE.
Batch

O código do Batch. Este parâmetro não permite filtros.

Recolher e processar em lote dados de transacções comerciais

Trata-se de uma combinação de BT_COLLECT e BT_BATCH.

BT_COLLECT_BATCH(Code=MY_BT_TYPE, Batch=MY_BATCH_CODE)
Exemplo de cadeia de parâmetros: Recolher dados de MY_BT_TYPE e executar a acção batch com o código MY_BATCH_CODE.
Batch

O código do Batch. Este parâmetro não permite filtros.

Code

O código do tipo de transacção comercial. Este parâmetro não permite filtros.

Processar filas de processamento abertas

Se não executar o pós-processamento automaticamente, pode configurar tarefas para executar determinadas acções em aberto.

PROCESS(ProcessQueueView=WHERE(Project Code=FILTER(MY_PROJECT)))
Exemplo de cadeia de parâmetros: Processar entradas abertas do projecto MY_PROJECT.

É possível utilizar os parâmetros ProcessQueueView e ProcessFollowing.

Enviar transmissões abertas

Normalmente, o envio de dados é efectuado como uma etapa posterior à execução do mapping. Se, no entanto, quiser enviar ficheiros abertos numa determinada altura, pode utilizar uma tarefa.

SEND(Channel=MY_CHANNEL)
Exemplo Parâmetro String: Enviar a transmissão aberta de MY_CHANNEL.
Channel

Especifica uma cadeia de filtros para o código do canal de comunicação. Este pode ser o código completo ou uma cadeia de filtros.

Folder

Especifica uma cadeia de filtros para o código da pasta de transmissão. Pode ser o código completo ou uma cadeia de filtros.

Executar chamada de retorno de código personalizado

Pode utilizar a codeunit do manipulador de tarefas para executar o seu código personalizado.

Pode especificar tantos parâmetros quantos os necessários. Recomendamos a utilização de um parâmetro Name para especificar um identificador de retorno de chamada. É possível aceder aos parâmetros a partir da codeunit ANVEDI Callback. Na codeunit ANVEDI Callback, na função CallbackRegistration, é possível reagir ao evento OnJobCallback implementando o seguinte bloco CASE:

CallbackSupport.OnJobCallback(ParameterDictionary):
  BEGIN
    IF NOT ParameterDictionary.GETBYKEY('NAME', Tmp) THEN
      ERROR(Text001);

    Name := Tmp;
    CASE UPPERCASE(Name) OF
      'Example':
        BEGIN
          IF NOT ParameterDictionary.GETBYKEY('MYPARAM1', Tmp) THEN
            ERROR(Text001);
         MyParam1 := tmp;

         IF NOT ParameterDictionary.GETBYKEY('MYPARAM2', Tmp) THEN
           ERROR(Text001);
         MyParam2 := tmp;

        // Do something with the parameters MyParam1 and MyParam2
     END;
  ELSE
    ERROR(Text002, Name);
  END;
END;
Exemplo de código em ANVEDI Callback Codeunit.

Tenha em atenção que os nomes dos parâmetros são convertidos para maiúsculas na variável ParameterDictionary. Pode utilizar a seguinte cadeia de parâmetros na fila de tarefas para chamar a chamada de retorno:

CALLBACK(Name=Example, MyParam1=Hello, MyParam2=World)
Exemplo de cadeia de parâmetros: Chamar código personalizado