É 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.
A criação de uma biblioteca de métodos envolve dois estágios:
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>
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.
Os métodos SOAP são implementados na forma de função JavaScript agrupada em um script que representa uma biblioteca.
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:
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]
}