Páginas filhas
  • Funções e classes utilizáveis no EAI Protheus

Versões comparadas

Chave

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

Abaixo as principais funções do EAI Protheus e dicas de uso:

Âncora
_Toc403759540
_Toc403759540
Classe FWEAI

         A classe FWEAI é a classe responsável por criar os objetos principais do EAI Protheus. Para verificar o funcionamento desta classe, acesse a sua documentação no TDN clicando aqui.

Âncora
_Toc403759553
_Toc403759553
Static Function IntegDef

Veja os tópicos IntegDef em rotinas MVC Protheus e IntegDef em rotinas Não-MVC Protheusa definição da IntegDef aqui.

Âncora
_Toc403759554
_Toc403759554
FWIntegDef


Função de geração de mensagem Única de forma manual, acionando a IntegDef do programa indicado.
FWIntegDef( cSourceCode, cTypeMessage, cType, cXml, cFunName, lOnlyReturn, cVersion )
Parâmetros:

Nome
cSourceCode –

Tipo
Descrição
Default
Obrigatório
cSourceCode
Caracter
Nome do fonte onde se encontra a rotina static IntegDef
cTypeMessage –

GetRotInteg()


cTypeMessage
Caracter
Tipo da
mensagem
Mensagem (BusinessMessage,
etc
BusinessMessage, Etc. )
'20'(EAI_MESSAGE_BUSINESS)


cType
– Tipo da transação (Envio ou recebimento)
  • cXml – Xml a ser tratado (normalmente só para recebimento)
  • cFunName – Função chamadora da rotina. Quando a mensagem é disparada de um fonte diferente da rotina chamada no Menu, pode usar este recurso para forçar a rotina de tratamento do EAI

  • Caracter
    Envio ou Recepcao
    '1' (TRANS_SEND)


    cXml
    Caracter
    XML a ser tratado quando Recepção




    cFunName
    Caracter
    Força o GetRotInteg(), indicando para o EAI qual é a rotina que possui o adapter
    GetRotInteg()


    lOnlyReturn
    Lógico
    Quando for um Envio: .T. Define que sera gerado apenas o retorno da INTEGDEF e nao sera fetio o Envio
    .F.


    cVersion
    Caracter
    Versão da mensagem Única
    1.000


    nPage
    Numérico
    Numero da página
    0


    nPageSize
    Numérico
    Tamanho da página
    0


    Dica
    titleMelhoria disponibilizada no label 04032016

    A partir do label 04032016 o retorno da FwIntegdef traz, quando existe erro de integração, o erro apresentado no segundo parâmetro do Array de resposta.

    O primeiro parâmetro deste array é um lógico, indicando se a integração ocorreu com sucesso (caso o adapter não esteja cadastrado é retornado sucesso) ou não. O segundo é a mensagem de erro associada ao evento.

    Para verificar o sucesso ou não da integração nos adapters é necessário validar o retorno da rotina (o retorno pode ser nil caso o adapter não esteja cadastrado. Neste caso, a integração ocorreu com 'sucesso', pois não foi necessário executá-la.). Exemplo:

    aRet:=FwIntegdf(........)

    If aRet <> nil

    //avalia o retorno dos parâmetros


    Dica
    titleMelhoria disponibilizada no label 20231121

    A partir do label 20231120 a função estará preparada para receber os parâmetros nPage e nPageSize a fim de sanar possíveis inconsistências, de timeout, devidos a arquivos muito grandes.

    Caso seja uma integração síncrona, o conteúdo o nPage e nPageSize sempre será zero, por padrão

    lOnlyReturn – Utilizável somente quando a mensagem é enviada – Define que será gerada apenas a mensagem da IntegDef, e seu envio não será realizado. Desta maneira, não será gerado todo o corpo da Mensagem Única

    .

    Âncora
    _Toc403759555
    _Toc403759555
    FWEAIBusEvent


    Cria bloco de XML referente a Business Event da Business Message da Mensagem Única
    FWEAIBusEvent( cEntity, nOperation, aKeys )
    Parâmetros:

    Nome
    Tipo
    Descrição
    cEntity -

    Default
    Obrigatório
    cEntity
    Caracter
    Entidade da mensagem (nome da mensagem única)




    nOperation
    -

    Numérico
    Operação: 3 ou 4 = upsert / 5 = delete
    2


    aKeys
    -

    Array
    Vetor bidimensional com campos no formato {Campo, Conteúdo}


    { }






    Exemplo:
    cXMLRet := FWEAIBusEvent( "ITEM", 5, { { "Code", SB1->B1_COD } } )
    Retorno:
    XML a ser utilizado:
    <BusinessEvent>
    <Entity>ITEM</Entity>
    <Event>delete</Event>
    <Identification>
    <key name="code">0000000001</key>
    </Identification>
    </BusinessEvent>

    Âncora
    _Toc403759556
    _Toc403759556
    FWEAIBusRequest


    Cria bloco de XML referente à Business Request da Business Message da Mensagem Única
    FWEAIBusRequest( cRequest )

    Parâmetros:

    Nome
    Tipo
    Descrição
    Default
    Obrigatório
    cRequest
    -

    Caracter
    Nome da requisição (nome da mensagem)





    Exemplo:
    cXMLRet := FWEAIBusRequest( "AccountBalance" )

    Retorno:
    XML a ser utilizado :
    <BusinessRequest>
    <Operation>AccountBalance </Operation>
    </BusinessRequest>

    Âncora
    _Toc403759557
    _Toc403759557
    FWEAILOfMessages

    Função para geração de múltiplas mensagens de retorno na Response Message da mensagem única
    FWEAILOfMessages( aMessages )
    Parâmetros:

    aMessages -
    Nome
    Tipo
    Descrição
    Default
    Obrigatório
    aMessages
    Array

    Vetor bidimensional com os dados para a criação da mensagem no formato:

    [1] Caracter - Mensagem

    [2] Numérico - Tipo da mensagem: 1=error ou 2=warning

    [3] Caracter - Codigo de Erro da mensagem conforme a mensagem




     X

    Exemplo:
    aMessages := {}
    aAdd( aMessages, { 'Estado nao existe' , 1, '001' } )
    aAdd( aMessages, { 'CNPJ invalido' , 1, 'A10' } )
    aAdd( aMessages, { 'Nao informado tipo', 2, '500' } )
    cRet := FWEAILOfMessages( aMessages )
    // cRet será
    //<Message type="error" code="001">Estado nao existe</Message>
    //<Message type="error" code="A10">CNPJ invalido</Message>
    //<Message type="warning" code="500">Nao informado tipo</Message>

    Âncora
    _Toc403759558
    _Toc403759558
    FWEAIEMPFIL


    Verifica e retorna o de/para de empresa filial no Protheus para o CompanyId e BranchId das Mensagem Única no recebimento .
    FWEAIEMPFIL( cCompanyID, cBranchId, cProduct,lExternal )

    Parâmetros:

    cCompanyID -
    Nome
    Tipo
    Descrição
    Default
    Obrigatório
    cCompanyID
    Caracter
    Codigo da companhia (CompanyID) recebido no XML da mensagem


     X
    cBranchId
    -

    Caracter
    Codigo da unidade (BranchID) recebido no XML da mensagem


    X
    cProduct
    -

    Caracter
    Codigo do produto (Product) recebido no XML da mensagem


    X
    lExternal
    Lógico
    Indica se os dados recebidos são do Protheus e que o retorno deve ser o correspondente do sistema externo
        .F.



    Retorno:
    Vetor com { Empresa , Filial } ou vazio, caso a informação não seja encontrada. 


    Exemplo:

    Buscando o par de grupo/filial do Protheus através dos dados recebidos do RM:

    aEmpFil := FwEaiEmpFil('01','0001','RM') → Caso seja encontrado correspondente no cadastro de adapters de grupos e filiais irá retornar o grupo e filial do Protheus


    Buscando o par de empresa/filial do RM no Protheus 

    aEmpFil := FwEaiEmpFil('18','D MG 01','RM',.T.) → Caso seja encontrado correspondente no cadastro de adapters de grupos e filiais irá retornar o grupo e filial do RM.

    Âncora
    _Toc403759559
    _Toc403759559
    CFGA070Int


    Obtém um código interno da tabela de/para através de um código externo
    CFGA070Int( cRefer, cAlias, cField, cValExt,cTable )
    Parâmetros:

    cRefer -
    Nome
    Tipo
    Descrição
    Default
    Obrigatório
    cRefer
    Caracter
    Referencia. Normalmente a "marca" da mensagem: PROTHEUS / LOGIX / RM / DATASUL, etc.


     X
    cAlias
    -

    Caracter
    Alias do de/para (SA1, SA2, etc.)


    X
    cField
    -

    Caracter
    É
    a
    o campo de referencia do De/para (A1_COD, B1_COD, etc. )


    X
    cValExt
    -

    Caracter
    Código externo para busca do código interno


    X
    cTable
    -

    Caracter
    Nome físico da tabela de dados ao qual o de-para se refere. Não é necessário que seja passado
    . Seu valor default é o RetSqlName do cAlias.

    RetSqlName(cAlias)



    Retorno:
    Código Externo

    Âncora
    _Toc403759560
    _Toc403759560
    CFGA070Ext


    Obtém um código externo da tabela de/para através de um código interno
    CFGA070IntCFGA070Ext( cRefer, cAlias, cField, cValInt,cTable)
    Parâmetros:

    Nome
    Tipo
    Descrição
    cRefer -

    Default
    Obrigatório
    cRefer
    Caracter
    Referencia. Normalmente a "marca" da mensagem: PROTHEUS / LOGIX / RM / DATASUL, etc.


     X
    cAlias
    -

    Caracter
    Alias do de/para (SA1, SA2, etc.)


    X
    cField
    -

    Caracter
    É
    a
    o campo de referencia do De/para (A1_COD, B1_COD, etc. )


    X
    cValInt
    -

    Caracter
    Código interno para busca do código externo


    X
    cTable
    -

    Caracter
    Nome físico da tabela de dados ao qual o de-para se refere. Não é necessário que seja passado
    . Seu valor default é o RetSqlName do cAlias.

    RetSqlName(cAlias)



    Retorno:
    Código Externo

    Âncora
    _Toc403759561
    _Toc403759561
    CFGA070Mnt


    Faz a Inclusão /Alteração / Exclusão dos dados na tabela de/para
    CFGA070Mnt( cRefer, cAlias, cField, cValExt, cValInt, lDelete, nOrdem,cTable,cOwnerMsg )

    Parâmetros:

    cRefer -
    Nome
    Tipo
    Descrição
    Default
    Obrigatório
    cRefer
    Caracter
    Referencia. Normalmente a "marca" da mensagem: PROTHEUS / LOGIX / RM / DATASUL, etc.




    cAlias
    -

    Caracter
    Alias do de/para (SA1, SA2, etc.)


    X
    cField
    -

    Caracter
    É
    a
    o campo de referencia do De/para (A1_COD, B1_COD, etc. )


    X
    cValExt
    -

    Caracter
    Código externo para gravacao




    cValInt
    -

    Caracter
    Código
    externo
    interno para
    gravaçao
    gravação


    X
    lDelete
    -

    Lógico
    Indica a deleção do registro
    .F.


    nOrdem
    -

    Numérico
    Ordem para busca
    cTable -

    Se DELETE e não enviada a cRefer, assume 3, senão assume 2. Se for UPSERT assume 1.


    cTable
    Caracter
    Nome físico da tabela de dados ao qual o de-para se refere. Não é necessário que seja passado
    . Seu valor default é o RetSqlName do cAlias.

    RetSqlName(cAlias)


    cOwnerMsg 
    Caracter

    Informa qual a mensagem única pai do de-para. Por exemplo, a mensagem pai do de-para da tabela SA1 é a CUSTOMERVENDOR. Porém mais de uma mensagem podem gravar aquele de-para, mas somente uma é o 'pai' do registro. Ex. A mensagem única FINANCING grava o de-para da tabela SE1, porém a mensagem ACCOUNTRECEIVABLEDOCUMENT também faz a gravação, sendo esta o 'pai' do de-para.

    Este campo somente é habilitado em repositórios Protheus com Lib de versão maior ou igual a 10102016, representada pelo campo XXF_UNMESS.







    O Delete dos registros pode ser realizado de duas maneiras diferentes.

    • Ao chamar a função para excluir os de-para e não passar a variável cRefer (a marca), todos os registros que possuem aquele InternalId, independente de qual foi a marca geradora, serão apagados. Exemplo de chamada:
      • CFGA070Mnt( , 'SA1', 'A1_COD', , '18|D MG 01002|01|C', .T. ) - Neste caso, serão excluídos da tabela XXF todo InternalId da tabela SA1, de chave A1_COD que possuam o código 18|D MG 01002|01|C, independente da marca que o gerou;
    • Pode-se excluir exclusivamente o de-para de uma única marca, deste modo, esta deve ser passada na chamada da função:
      • CFGA070Mnt('RM' , 'SA1', 'A1_COD', , '18|D MG 01002|01|C', .T. ) - Desta maneira, somente serão excluídos os de-para de código interno 18|D MG 01002|01|C que foram gerados em uma integração com o produto RM.
    Nota
    titleAtenção

    cOwnerMsg disponível a partir da lib label 10102016, com previsão de liberação em dezembro de 2016.



    Âncora
    _Toc403759561
    _Toc403759561
    SetRotInteg


    Ajusta a rotina de integração no EAI (o GetRotInteg()), quando a rotina chamada não é a rotina de contexto da integração. Ao utilizar esta rotina, após a chamada da integração é aconselhável utilizá-la para voltar o GetRotInteg() ao estado original.
    SetRotInteg( cFunction )

    Parâmetros:

    Nome
    Tipo
    Descrição
    Default
    Obrigatório
    cFunction
    Caracter
    Rotina que se deseja iniciar a integração


     X

    Exemplo

    SetRotInteg('CTBA030')



    Âncora
    _Toc403759561
    _Toc403759561
    GetRotInteg


    Devolve a rotina de contexto de integração na Mensagem Única
    GetRotInteg( )

    Exemplo

    cRotina:=GetRotInteg()


    Âncora
    _Toc403759561
    _Toc403759561
    _NoTags


    Ajusta uma string trocando os caracteres de controle do XML por suas entidades de referência
    _NoTags( cTexto)

    Parâmetros:

    Nome
    Tipo
    Descrição
    Default
    Obrigatório
    cTexto
    Caracter
    String na qual se deseja mudar os caracteres não permitidos


     X

    Exemplo

    cRetorno:=_NoTags( 'Quero enviar Pais&Filhos ->"Novo Texto" ')

    cRetorno assumirá

    Quero enviar Pais&amp;Filhos-&gt;&quot;Novo Texto&quot;



    Âncora
    _Toc403759561
    _Toc403759561
    FWHasEai


    Verifica se uma rotina possui configuração de EAI
    FWHasEAI( cFunction, lVerifySend, lVerifyRec, lVerifyUMess,lRestArea )

    Parâmetros:

    Nome
    Tipo
    Descrição
    Default
    Obrigatório
    cFunction
    Caracter
    Nome da função para verificação
     GetRotInteg()


    lVerifySend
    Lógico
    Verifica se está configurado para envio
    .F.


    lVerifyRec
    Lógico
    Verifica se está configurado para recepção
    .F.


    lVerifyUmess
    Lógico
    Verifica se está configurada como Mensagem Única Totvs
    .F.


    lRestArea 
    lógico
    Retorna a posição inicial da XX4, caso passado como .T.
    .F.


             

              Se todos os parâmetros forem omitidos, será verificado apenas se há uma configuração de EAI para a rotina independentemente de se ter o envio ou recebimento habilitados.


    Exemplo

    lRetorno:=FWHasEai('MATA020',.T.,,.T.) //verifica se existe a mensagem única do fonte MATA020 cadastrada para envio


    Nota
    titleAtenção

    lRestArea disponível a partir da lib label 30012019, com previsão de liberação em fevereiro de 2019

    Âncora
    _Toc403759559
    _Toc403759559
    FwEAiSndTo

    Dica
    titleDisponível a partir do label 08062016


    Função que retorna  para qual produto cadastrado no Roteamento EAI a mensagem está sendo enviada

    FwEaiSndTo( )

    Retorno:

    Produto cadastrado na rota (DATASUL, RM, etc.)

    Obs: Caso não exista rota cadastrada é retornado uma string vazia.


    Âncora
    _Toc403759559
    _Toc403759559
    FwAdapterVersion

    Dica
    titleDisponível a partir do label 18022019


    Função que retorna a versão de uma dado adapter cadastrado. 

    FwAdapterVersion( cRotina, cModel)

    Parametros:

    NomeTipoDescriçãoDefaultObrigatório
    cRotinaCaracterRotina como esta cadastrada na XX4

    cModelCaracterNome da mensagem como esta cadastrado na XX4


    Retorno:

    Versão cadastrada na XX4, Exemplo : "2.003"

    Obs: Caso o adapter não esteja cadastrado o retorno será vazio


    Âncora
    _Toc403759559
    _Toc403759559
    FwAdapterInfo

    Dica
    titleDisponível a partir do label 31062019


    Função que retorna Informações de um determinado adapter

    FwAdapterInfo( cRotina, cModel)

    Parametros:

    NomeTipoDescriçãoDefaultObrigatório
    cRotinaCaracterRotina como esta cadastrada na XX4
    Sim
    cModelCaracterNome da mensagem como esta cadastrado na XX4
    Sim


    Retorno:

    Array com os dados conforma cadastrado na XX4. utilizando fwadaptereai.ch atualizado pode se usar os seguintes defines para acessar as informações

    DefineInformaçãoTipo
    ADAPTER_INFO_MODELNome da MensagemCaractere
    ADAPTER_INFO_ROTINARotina da TransaçãoCaractere
    ADAPTER_INFO_SENDSe esta configurado para envioLogico
    ADAPTER_INFO_RECEIVESe esta configurado para recebimentoLogico
    ADAPTER_INFO_METHODMétodo da Transação(PROC_SYNC,PROC_ASYNC)Caractere
    ADAPTER_INFO_OPERATIONQual operação ele esta configuradoCaractere
    ADAPTER_INFO_CHANNELQual canal ele esta configuradoCaractere
    ADAPTER_INFO_VERSIONQual a versão que esta configuradaCaractere
    ADAPTER_INFO_CONDITIONCondição cadastrada na XX4, que indica se será executado ou não

    Caractere

    ADAPTER_INFO_FORMATIndica se o formato será JSON ou XMLCaractere


    Obs: Caso o adapter não esteja cadastrado o retorno será um array vazio 


    Status do documentoConcluído
    Data18/11/2014
    Versão1.0
    Versão anterior1.0
    Autores
    Índice resumido
    Índice
    maxLevel1
    indent10px
    Índice
    Índice
    outlinetrue
    indent10px