Módulo de dispatch para serviços de terceiros
O módulo de dispach para serviços de terceiros é uma biblioteca utilizada para fazer a ligação entre um sistema Senior e um serviço de terceiro, que deve ser desenvolvida obedecendo as seguintes especificações:
Método CallTPWS
O método CallTPWS é chamado para executar o serviço solicitado pelo usuário, e tem a seguinte assinatura (em pascal):
function CallTPWS(const aEndPointURL: WideString; const aMethodName: WideString; aTimeout: Cardinal; const aProxyIP: WideString;
aProxyPort: Smallint; const aProxyUser: WideString; const aProxyPwd: WideString; const aParams: WideString): WideString; stdcall;
Parâmetros
Nome | Tipo | Descrição |
---|---|---|
aEndPointURL | WideString | Nome do serviço concatenado à URL do servidor. |
aMethodName | WideString | Nome da porta de serviço que está sendo executada. |
aTimeout | Cardinal | Timeout da porta. |
aProxyIP | WideString | IP do servidor de proxy. |
aProxyPort | Smallint | Porta do proxy. |
aProxyUser | WideString | Usuário do proxy. |
aProxyPwd | WideString | Senha do usuário do proxy. |
aParams | WideString | Valores do parâmetros de entrada da porta de serviço no formato XML. |
Formato do XML de parâmetros de entrada
<?xml version="1.0"
encoding="ISO-8859-1"?>
<request>
<params>
<Alfanumerico>
<![CDATA[Valor
do parâmetro alfanumérico.]]>
</Alfanumerico>
<Inteiro>2007</Inteiro>
<Texto
isbase64='1'>VmFsb3IgZG8gcGFy4m1ldHJvIHRleHRvLg0KTGluaGEgZG9pcy4=</Texto>
<Tabela>
<line>
<Coluna1>
<![CDATA[Valor da coluna
alfanumérica.]]>
</Coluna1>
<Coluna2>1012</Coluna2>
</line>
<line>
<Coluna1>
<![CDATA[Valor da linha
2.]]>
</Coluna1>
<Coluna2>129</Coluna2>
</line>
</Tabela>
</params>
</request>
O XML de entrada não é case sensitive.
Retorno
Deve retornar o valor de todos os parâmetros de saída no formato XML.
O XML de retorno deve seguir a mesma especificação do XML dos parâmetros
de entrada, porém, ao invés do nó principal ser <request>,
deve ser <response>.
Caso ocorra algum erro inesperado na chamada do serviço, pode-se devolver diretamente a mensagem de erro. Neste caso, será mostrada uma exceção indicando Falha de comunicação com o servidor.
Tipos dos parâmetros
Os parâmetros da porta de serviço podem ser de entrada, de saída ou ambos, e podem ser dos seguintes tipos:
Tipo | XML |
---|---|
Alfanumérico | <nome>Valor</nome> ou <nome><![CDATA[Valor < 5.]]></nome> ou <nomeisbase64='1'>VmFsb3IgPCAY</nome> |
Inteiro |
<nome>2007</nome> |
Decimal |
<nome>99,999</nome> |
Hora |
<nome>HH:mm:ss</nome> |
Data e hora |
<nome>dd/mm/yyyyHH:mm:ss</nome> |
Texto (Blob) |
<nome isbase64='1'>VmFsb3IgZG8gcGFy4m1ldH=</nome> |
Tabela |
<nome_tabela>
|
- O formato de um parâmetro alfanumérico pode variar de acordo com o valor contido nele. Quando possível, é passado na forma simples, senão é passado como CDATA. Quando o atributo isbase64 existir e for igual 1, quer dizer que foi necessário codificar o valor em Base64;
- O valor de um parâmetro texto é primeiramente codificado como alfanumérico e depois em Base64;
- As colunas das tabelas podem ser ser do tipo alfanumérico, inteiro, decimal, hora e data e hora, seguindo sempre as mesmas especificações dos tipos de parâmetros correspondentes como descrito na tabela acima.
Com exceção das tabelas, os parâmetros que não tiverem valor informado seguem o seguinte padrão:
<nome_parametro isnull='1'/>
O mesmo vale para as colunas das tabelas.