Histórico da Página
...
O conceito de contexto no EAI tem por finalidade aumentar o controle no envio de mensagens para diversos destinos. Este documento descreverá os passos necessários para habilitar o suporte a este conceito nos adapters. Para mais informações sobre contexto, acessar este link.
Novos Adapters
...
O programa de geração de adapters (EAI0032) já insere as funções e trechos de código necessários para suportar o conceito, sendo necessário alguns poucos ajustes no código.
Sintaxe
...
language | ruby |
---|
No fonte do adapter (EAIAdapter<Transação><Versão>.4gl):
- Alterar a função EAIAdapter<Transacao><Versao>_getContextNames() e informar a lista de contextos que o adapter suporta. Os elementos da lista devem estar separados por vírgula. Use a função AdvPl eai_get_default_context() para retornar o contexto padrão.
...
No fonte do helper não é necessária nenhuma alteração.
Adapters existentes usando modelo helper/adapter
...
No fonte do adapter (EAIAdapter<Transação><Versão>.4gl):
...
- Incluir chamada à função EAIHelper<Transacao><Versao>_set_contextNames() após a chamada à função _ADVPL_eai_create_message().
- Criar a função EAIHelper<Transacao><Versao>_set_contextNames() com o seguinte corpo:
Exemplo
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
#----------------------------------------------------------------# FUNCTION EAIHelperUnitOfMeasure2_set_ContextNames(l_contextNames) #----------------------------------------------------------------# DEFINE l_contextNames VARCHAR(100) LET _ContextNames = l_contextNames IF _ContextNames IS NOT NULL AND g_eai_msg_negocio IS NOT NULL THEN CALL _ADVPL_eai_set_context_names(g_eai_msg_negocio, _ContextNames) END IF END FUNCTION |
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
_ADVPL_eai_is_send_configured(
EAIHelper<Transacao><Versao>_get_transaction_name(),
EAIHelper<Transacao><Versao>_get_adapter_version(),
_ContextNames ) |
Adapters existentes usando modelo antigo (apenas adapter)
...
No fonte do adapter alterar a função <Adapter>_envia_mensagem_eai_adapter() para:
- Definir a variável modular _ContextNames como VARCHAR(100)
- Recuperar o contexto enviado pelo programa de negócio usando a função EAIMapper_getString().
- Passar o contexto na chamada à função _ADVPL_eai_is_send_configured().
- Atualizar o contexto na mensagem usando a função _ADVPL_eai_set_context_names(). Observe que a mensagem já deve ter sido criada pela função_ADVPL_eai_create_message().
Exemplo
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
#--- Recupera o contexto informado para a mensagem ---# LET _ContextNames = EAIMapper_getString("ContextNames") #== Integração com outros sistemas ativa? IF NOT _ADVPL_eai_is_send_configured(adp10004_get_transaction_name(), adp10004_get_adapter_version(), _ContextNames) THEN CALL adp10004_inicializa_record() RETURN TRUE #Não pode retornar FALSE neste caso. END IF #== Cria a mensagem que será enviada CASE l_operacao WHEN 'IN' LET l_mensagem = _ADVPL_eai_create_message('CurrencyQuotation','upsert') WHEN 'MO' LET l_mensagem = _ADVPL_eai_create_message('CurrencyQuotation','upsert') WHEN 'EX' LET l_mensagem = _ADVPL_eai_create_message('CurrencyQuotation','delete') OTHERWISE CALL log0030_processa_mensagem('Operação inválida','info',l_modo_exibicao) CALL adp10004_inicializa_record() RETURN FALSE END CASE CALL adp10004_carrega_elementos_xml() #--- Atribuição do contexto na mensagem ---# IF l_contexts IS NOT NULL THEN CALL _ADVPL_eai_set_context_names( l_mensagem, _ContextNames ) END IF |
- Criar a função <Adapter>_getContextNames() para retornar a lista de contextos do adapter. Veja exemplo de corpo da função na seção Adapters existentes usando modelo helper/adapter.
- Alterar a função <Adapter>_esta_configurado_para_envio() para enviar a versão do adapter e os contextos para a função_ADVPL_eai_is_send_configured().
Exemplo
Bloco de código | ||||
---|---|---|---|---|
| ||||
#---------------------------------------------#
FUNCTION adp10004_esta_configurado_para_envio()
#---------------------------------------------#
IF NOT _ADVPL_eai_is_send_configured(adp10004_get_transaction_name(), adp10004_get_adapter_version, _ContextNames) THEN
RETURN FALSE
END IF
RETURN TRUE
END FUNCTION |
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas