v7

Implementar métodos SOAP

Introdução

É possível criar métodos SOAP em JavaScript. Essa função simplesmente habilita processos aplicativos, pode evitar o desenvolvimento de JSPs e sua chamada nos formulários.

Esses métodos SOAP se comportam da mesma forma que os definidos nativamente no aplicativo. Os mesmos atributos são suportados: static, key only e const.

Definir uma biblioteca de métodos

A criação de uma biblioteca de métodos envolve dois estágios:

  • A declaração do método SOAP,
  • Definição (ou implementação) em JavaScript.

Declaração

Comece declarando os métodos nos schemas (para obter mais informações sobre como criar e editar schemas, consulte nesta seção).

A declaração deles é semelhante à dos métodos nativos, exceto que é necessário adicionar o atributo "biblioteca" especificando o nome da biblioteca de métodos onde a definição está localizada.

Esse nome coincide com o nome (com o namespace) da entidade do tipo "Código JavaScript".

Exemplo:

O método testLog(msg) é declarado em uma extensão nms:recipient

<method name="testLog" static="true" library="cus:test">
     <parameters>
       <param name="message" type="string" inout="in"/>
     </parameters>
   </method>
OBSERVAÇÃO

O namespace e o nome usado para a biblioteca são independentes do namespace e do nome do esquema em que a declaração é encontrada.

Definição

Os métodos SOAP são implementados na forma de função JavaScript agrupada em um script que representa uma biblioteca.

OBSERVAÇÃO

Uma biblioteca de métodos pode agrupar funções para vários esquemas, ou vice-versa. As funções de um esquema podem ser definidas em bibliotecas separadas.

O script pode conter código a ser executado durante o carregamento inicial da biblioteca.

1. Nome

O nome da função deve estar em conformidade com o seguinte formato:

 <schema-namespace>_<schema-name>_<method-name>

Exemplo:

A seguinte função do JavaScript é a implementação do método descrito acima. Deve ser definida na entidade de tipo "JavaScript Code" utilizando o nome "cus:test".

function nms_recipient_testLog(message)
 {
   logInfo("*** " + message)
 }

2. Assinatura

A assinatura da função deve incluir um argumento para cada parâmetro 'in' ou 'inout' da declaração.

Casos específicos:

  • métodos não estáticos: a função deve incluir um argumento adicional primeiro, coincidindo com a entidade XML transmitida na forma de um objeto de tipo "xml" (E4X).
  • métodos do tipo "somente chave": a função deve incluir um argumento adicional primeiro, coincidindo com a chave transmitida na forma de cadeias de caracteres.

3. Valores retornados

A função deve retornar um valor para cada parâmetro de tipo 'out' ou 'inout'. Caso específico: se o método for declarado sem nenhum dos atributos "static", "key only" ou "const", o primeiro valor retornado deverá coincidir com a entidade modificada. É possível retornar um novo objeto ou retornar o primeiro parâmetro modificado.

Por exemplo:

function nms_recipient_setLastName(self, name)
 {
   self.@lastName = name
   return self
 }

Quando vários valores forem retornados, eles deverão ser exibidos em uma tabela.

Exemplo:

function nms_recipient_getKey(self)
 {
   return [self.@firstName, self.@lastName]
 }

Nesta página