Caracteres especiais no XML

Os cabeçalhos das mensagens em XML trafegam, normalmente, a definição do encode (mapa de caracteres) utilizado na mensagem. Quando esta informação não está disponível a mensagem está no padrão UTF-8 (Universal character set Transformation Format). Alguns caracteres fazem parte dos controles utilizados no XML (<, & etc.) e não podem ser enviados de maneira explícita no XML. Estes caracteres devem trocadas pelas entidades de referência em HTML( HyperText Markup Language). Isto pode ser realizado através da função _NoTags(). Esta função recebe uma cadeia de caracteres e a retorna para que seja possível o seu envio no formato esperado. Desta maneira é possível enviar o texto 'Este é o símbolo de maior - < ' na mensagem. Esta função deve ser utilizada sempre que o texto a ser enviado possa conter algum caractere utilizado no controle do XML.

Recebo uma mensagem de outro sistema. Esta mensagem pode iniciar outra mensagem no Protheus?

As mensagens da arquitetura Mensagem Única Protheus e as TOTVSIntegrator, desde que sejam da arquitetura MVC Protheus e estejam no cadastro de adapter não inicializam outra chamada de EAI dentro do Protheus. Existe um controle interno para que uma Mensagem Única TOTVS não inicialize outra mensagem. Na arquitetura da TOTVSIntegrator isto também se faz verdade, desde que esta seja uma mensagem cadastrada no adapter. Para as mensagens TOTVSIntegrator que não estão no cadastro do adapter este controle não existe. O desenvolvedor, caso necessite, deve realizá-lo manualmente.

O EAI Protheus faz a gravação de de-para de registros?

A camada responsável por criar os de-para de registros, quando isto se faz necessário é a camada do adapter EAI. A rotina de processamento é responsável por realizar a manutenção dos registros de de-para quando necessário. Este controle não pertence a camada do EAI Protheus.

Tenho todos os XSDs das mensagens envolvidas, porém ocorre erro de validação na chegada das mensagens

Certifique-se que os XSDs estão mapeados de maneira correta. O que isto significa?
Vejamos o exemplo de um trecho do XSD da Mensagem Única WhoIs:

Figura 20 - Trecho inicial da Mensagem Única WhoIs
Perceba que existe um include para esta mensagem, definido pelo arquivo totvsmsg.xsd. Isto quer dizer pode existir na mensagem estruturas pertencentes a este arquivo. Perceba também que é indicado que este arquivo está em uma pasta um nível acima da pasta onde o XSD da mensagem WhoIs está. Assim sendo, caso o XSD WhoIs.xsd esteja no caminho c:\Protheus_11\Protheus_data\xsd\schema, o XSD totvsmsg.xsd deverá estar no caminho c:\Protheus_11\Protheus_data\xsd. Devem ser verificados todos os XSDs necessários para a mensagem.

Existem mensagens na Fila do EAI Protheus paradas, com canal de envio = ESB. Porque elas não estão sendo processadas?

Mensagens assíncronas, enviadas para o TOTVS ESB possuem um controle de envio. Uma mensagem é enviada, e caso haja erro no recebimento pelo ESB o processo é parado e é realizado a tentativa de reenviar a mensagem com erro. Serão realizadas quatro tentativas de envio. Caso não seja possível o seu envio, todas as mensagens com destino ao TOTVS ESB deixarão de ser processadas, até que o registro com erro seja verificado (seja bloqueado, seja realizada a interação para que o mesmo seja reprocessado, etc). Enquanto este registro estiver na fila com erro, e com a quantidade de tentativas for maior ou igual a 4 a fila, no que diz respeito ao envio ao ESB, continuará parada.

Possuo uma rotina em MVC PROTHEUS, o adapter está cadastrado porém a rotina não é chamada

Verifique se o commit da rotina está sendo realizado pelo commit padrão do MVC ou sua rotina tem um bloco customizado. Caso o bloco não seja o bloco padrão do MVC a integração somente é disparada se a rotina FwFormCommit for executada.

O EAI Protheus realiza a gravação dos dados se a integração não for bem sucedida?

O EAI Protheus, quando as rotinas estão escritas em MVC Protheus e são disparadas pela rotina FwFormCommit (Mensagens únicas TOTVS e TOTVSIntegrator com adapters em MVC e cadastradas no cadastro de adpaters) somente fazem a gravação do modelo de dados se a integração for bem sucedida. Uma integração é bem sucedida se:

Mensagens únicas TOTVS que não estão em fontes MVC Protheus somente tem o controle de transação da rotina se a chamada da rotina FWIntegDef for realizado dentro de um bloco de BEGIN / END TRANSACTION. Nestes casos a camada do EAI Protheus, ao identificar que houve erro na mensagem e que a chamada foi realizada dentro de uma transação, faz o desarme do processo.
Para todos os outros casos este controle, quando necessário, deve ser realizado pelo desenvolvedor.

Quando ocorre erro na integração algumas rotinas mostram a mensagem na tela do usuário e não permitem a gravação. Outras rotinas não permitem a gravação e não mostram a mensagem.

As integrações onde o adpater está escrito em MVC Protheus podem ou não validar a gravação dos dados de acordo com o resultado da integração (vide o tópico O EAI Protheus realiza a gravação dos dados se a integração não for bem sucedida?). As rotinas em MVC também são capazes de informar ao usuário a mensagem recebida no erro do processamento. Para rotinas que não são MVC Protheus este tratamento deve ser realizado pelo desenvolvedor do adapter.