Child pages
  • 1. EAIAdapter_ReceiveBusinessMessage

Função responsável por extrair as informações de uma mensagem de negócio (BusinessMessage) vindas de um aplicativo externo.

Essa função será chamada automaticamente com todo o conteúdo da mensagem de negócio guardada na Record do Helper. Não é necessário saber se a mensagem é síncrono ou assíncrono.

Sintaxe


EAIAdapter<Transação><versão>_ReceiveBusinessMessage()

Retorno


TipoValorDescrição
BoolTRUEIndica que a extração do conteúdo do BusinessContent foi executado com sucesso.
FALSEIndica que a ocorreram erros durante a extração do conteúdo, interromperá a seção, indicando para a Engine do EAI2 que deverá retornar com erro a resposta.

Observação


Os valores obtidos da mensagem, através do Helper da mensagem, podem ser enviados para o programa através do uso do Mapper.

Exemplo


#----------------------------------------------------------#
 FUNCTION EAIAdapterUnitOfMeasure1_ReceiveBusinessMessage()
#----------------------------------------------------------#
  #Função responsável por extrair o conteudo da BusinessMessage recebida e executar a regra de negócio.
  DEFINE lr_unid_med RECORD
            cod_unid_med    LIKE unid_med.cod_unid_med,
            den_unid_med_30 LIKE unid_med.den_unid_med_30
         END RECORD,
         
         l_status           SMALLINT
         l_msg_erro         CHAR(30)
  
  LET lr_unid_med.cod_unid_med    = EAIHelperUnitOfMeasure1_get_BusinessContent_Code()
  LET lr_unid_med.den_unid_med_30 = EAIHelperUnitOfMeasure1_get BusinessContent_Description()
  
  IF lr_unid_med.cod_unid_med IS NULL THEN
     CALL EAIHelperSalesOrder1_add_error_message("Código da unidade de medida não informado na integração.",'0')
     RETURN FALSE
  END IF
  
  #Testando o tipo de mensagem.     
  CASE EAIHelperUnitOfMeasure1_get_MessageType()
     WHEN 'upsert' #Event - upsert
        IF lr_unid_med.den_unid_med_30 IS NULL THEN
           CALL EAIHelperSalesOrder1_add_error_message("Descrição da unidade de medida não informado na integração.",'0')
           RETURN FALSE
        END IF
        
        CALL manm217_unid_med_leitura(_BusinessContent._Code,TRUE,1)
           RETURNING l_status,
                     l_msg_erro
        
        CALL manm217_unid_med_set_null()
        CALL manm217_unid_med_set_cod_unid_med(_BusinessContent._Code)
        CALL manm217_unid_med_set_den_unid_med_30(_BusinessContent._Description)
  
        IF l_status THEN
           CALL manm217_unid_med_inclui(FALSE,TRUE)
              RETURNING l_status, l_msg_erro
              
           IF NOT l_status THEN
              CALL EAIHelperSalesOrder1_add_error_message(l_msg_erro,'0')
              RETURN FALSE
           END IF
        ELSE
           CALL manm217_unid_med_modifica(FALSE,TRUE)
              RETURNING l_status,
                        l_msg_erro
           
           IF NOT l_status THEN
              CALL EAIHelperSalesOrder1_add_error_message(l_msg_erro,'0')
              RETURN FALSE
           END IF
        END IF
  
     WHEN 'delete' #Event - delete
        WHENEVER ERROR CONTINUE
          DELETE FROM unid_med
           WHERE cod_unid_med = lr_unid_med.cod_unid_med
        WHENEVER ERROR STOP
        IF sqlca.sqlcode <> 0 THEN
           CALL log0030_processar_err_sql("DELETE","unid_med",1)
           CALL EAIHelperSalesOrder1_add_error_message(l_msg_erro,'0')
           RETURN FALSE
        END IF
     OTHERWISE     #Request
  END CASE
  
  RETURN TRUE
END FUNCTION