Páginas filhas
  • 6. Utilização dos Adapters em Regras de Negócio

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Recebimento de informações


Modelo Antigo


O recebimento de informações é codificado dentro do adapter, nas funções <Adapter>_recebe_negocio_eai_adapter().

Bloco de código
languageruby
linenumberstrue
#-----------------------#
FUNCTION adp10023_teste()
#-----------------------#
   DEFINE l_mensagem VARCHAR(10),
          l_resposta VARCHAR(10)

#-------------------------------RETIRAR---------------------------------------#
   LET p_user = 'demo'
   LET p_cod_empresa = '21'
#-----------------------------------------------------------------------------#

   LET l_mensagem = _ADVPL_eai_create_message_from_file("C:\\LOGIX\\testes\\adp10023\\adp10023.xml")
   LET l_resposta = adp10023_recebe_negocio_eai_adapter(l_mensagem)

   CALL _ADVPL_eai_write_message_to_file(l_resposta, "C:\\LOGIX\\testes\\adp10023\\resposta_adp10023.xml")

END FUNCTION

Modelo Novo


 EAIAdapter<Transação><Versão>_ReceiveBusinessMessage() (modelo novo). Destas funções é possível chamar funções de negócio existentes ou fazer a manipulação direta no banco através de comandos SQL (DMLs).

Bloco de código
languageruby
linenumberstrue
#--------------------------------------------------------------------------#
 FUNCTION EAIHelperCancelRequest1_recebe_negocio_eai_adapter(l_msg_negocio)
#--------------------------------------------------------------------------#
  DEFINE l_msg_negocio VARCHAR(10),
         l_conteudo    VARCHAR(10)

  CALL EAIHelperCancelRequest1_inicializa_record() # Limpa record da msg
  LET g_eai_msg_negocio = l_msg_negocio
  CALL EAIHelperCancelRequest1_carrega_elementos_xml()
  ### Carrega o tipo da mensagem.
  LET _MessageType = _ADVPL_eai_get_event(g_eai_msg_negocio)
  ### Realiza a carga do RECORD com a mensagem de negócio que chegou
  LET l_conteudo = _ADVPL_eai_get_business_content(g_eai_msg_negocio, _BusinessContent, 'EAIHelperCancelRequest1')
  ### Verifica se o estado da mensagem recebida está ok.
  IF NOT _ADVPL_eai_get_success(l_conteudo) THEN
     CALL _ADVPL_eai_log_add_message(g_eai_msg_negocio, 'error', '0', _ADVPL_eai_get_error_message(l_conteudo))
     RETURN NULL
  END IF
  ### Mensagem de resposta baseada na mensagem de negócio
  LET g_eai_msg_resposta = _ADVPL_eai_create_response(g_eai_msg_negocio)
  ### Tratamento da mensagem de retorno pelo 'Adapter'.
  IF NOT EAIAdapterCancelRequest1_ReceiveBusinessMessage() THEN
     ### Retorna com a descrição dos erros.
     RETURN g_eai_msg_resposta
  END IF
  RETURN g_eai_msg_resposta
END FUNCTION

 

...