Páginas filhas
  • Integração Descida de Dados Smart Link

Para realizar a descida de dados do TotvsApps é recomendado utilizar a integração com o Smart Link para esse fim.

O ERP deve possuir um dos produtos do TotvsApps Instalado. 

  1. TotvsApps posta uma mensagem na fila do Smart Link com um tipo Específico.
  2. Deve estar compilado no ERP uma classe para leitura dessa mensagem.
  3. O Job FwTotvsLinkJob deve estar cadastrado no schedule para execução.
  4. Assim que a mensagem for recebida no Job ela será repassada para a Classe de Leitura, que fará o processamento da Mensagem

Exemplo: 

  1. Cliente possui o Totvs Antecipa instalado em seu sistema.
  2. É disponibilizada uma mensagem do tipo Financeiro para executar um procedimento:

    Modelo base de mensagem para comunicação entre serviços

    Temos 2 padrões de mensagens entre serviços dentro do contexto aplicativo/solução. Para mais informações acessar a RFC: https://arquitetura.totvs.io/architectural-records/RFCs/Corporativas/RFC000011/

    Padrão Totvs
    {
        "header": {
            "type": "Financeiro",
            "tenantId": "e21c8e75-9dfc-4169-a599-e233538d72a4",
            "erpTenant": {
                       "protheus":"T1"
               },
            "generatedOn": "2021-06-08T15:18:08.367574Z",
            "locale": "pt_BR"
    
        },
        "content": {
            "requestID": "1bc180de-ef14-4b75-83ac-b73ed1fa7518",
            "identifiers": {
                "CPF": "40254898765"
            },
            "roles": []
        }
    }
    Padrão CloudEvents
    {
     	"specversion": "1.0",
        "time": "2022-04-19T19:05:23.9308049Z",
        "correlationid": "f95a7e8c-6f27-48e9-a74e-f0439f9ab540",
        "tenantid": "e21c8e75-9dfc-4169-a599-e233538d72a4",
        "id": "abc3845f-2a76-4ab4-b8bd-8abbb495d2c4",
        "source": "recorrencia",
        "type": "Financeiro",
        "data": {
        	"meu": "dado",
    		"CPF": "40254898765"
        }
    }
  3.  Deve existir uma classe no ERP FinanceiroMessageReader: 

    #include "protheus.ch"
    
    /*/{Protheus.doc} FinanceiroMessageReader
    Exemplo de classe de processamento de mensagens
    @type class
    @author izac.ciszevski
    /*/
    Class FinanceiroMessageReader from LongNameClass
    
        method New()
        method Read()
    
    EndClass
    
    /*/{Protheus.doc} FinanceiroMessageReader::New
    construtor
    @type method
    @author izac.ciszevski
    /*/
    method New() Class FinanceiroMessageReader
    
    return self
    
    /*/{Protheus.doc} FinanceiroMessageReader::Read
    Responsável pela leitura e processamento da mensagem.
    @type method
    @author izac.ciszevski
    @param oLinkMessage, object, Instância de FwTotvsLinkMesage da mensagem
    @return logical, sucesso ou falha. Determina se deve ou não retirar a mensagem da fila.
    /*/
    method Read( oLinkMessage ) Class FinanceiroMessageReader
    
        ConOut( oLinkMessage:RawMessage())
        ConOut( oLinkMessage:Header():toJson())
        ConOut( oLinkMessage:Content():toJson())
        ConOut( oLinkMessage:Type())
        ConOut( oLinkMessage:tenantId())
        ConOut( oLinkMessage:requestID())
    
    return .T.
  4. O Job FwTotvsLinkJob é executado e repasse a mensagem recebida para a Classe FinanceiroMessageReader, que faz o processamento.
  5. Caso a mensagem seja processada com sucesso ela será removida da fila de processamento. Caso contrário ela permanecerá na fila e haverá nova tentativa de execução.