Adaptadores de JavaScript

improve this page | report issue

Visión general

Los adaptadores JavaScript proporcionan plantillas para la conexión con sistemas de fondo SQL y HTTP. Proporcionan un conjunto de servicios, denominados procedimientos. Las aplicaciones móviles pueden llamar a estos procedimientos mediante solicitudes AJAX.

Requisito previo: Asegúrese de leer primero la guía de aprendizaje Creación de adaptadores Java y JavaScript.

Estructura de archivos

mvn-adapter

Carpeta adapter-resources

La carpeta adapter-resources contiene un archivo de configuración XML. Este archivo de configuración describe las opciones de conectividad y lista los procedimientos expuestos para la aplicación u otros adaptadores.

<?xml version="1.0" encoding="UTF-8"?>
<mfp:adapter name="JavaScriptAdapter">
    <displayName>JavaScriptAdapter</displayName>
    <description>JavaScriptAdapter</description>

    <connectivity>
        <connectionPolicy>
        ...
        </connectionPolicy>
    </connectivity>

    <procedure name="procedure1"></procedure>
    <procedure name="procedure2"></procedure>

    <property name="name" displayName="username" defaultValue="John"  />
</mfp:adapter>
  • name: Obligatorio. Nombre del adaptador. Este nombre debe ser exclusivo dentro de MobileFirst Server. Puede contener caracteres alfanuméricos y subrayados, y debe comenzar con una letra. Después de definir y desplegar un adaptador, no puede modificar su nombre.
  • <displayName>: Opcional. Nombre del adaptador que se visualiza en MobileFirst Operations Console. Si no se especifica este elemento, se utiliza en su lugar el valor del atributo name.
  • <description>: Opcional. Información adicional sobre el adaptador. Se visualiza en MobileFirst Operations Console.
  • <connectivity>: Obligatorio. Define el mecanismo por el que el adaptador se conecta a la aplicación de fondo. Contiene el subelemento <connectionPolicy>.
  • <procedure>: Obligatorio. Define un proceso para acceder a un servicio que una aplicación de fondo expone.
    • name: Obligatorio. Nombre del procedimiento. Este nombre debe ser exclusivo dentro del adaptador. Puede contener caracteres alfanuméricos y subrayados, y debe comenzar con una letra.
    • audit: Opcional. Define si las llamadas al procedimiento se registran en el registro de auditoría. Los siguientes valores son válidos:
      • true: Las llamadas al procedimiento se registran en el registro de auditoría.
      • false: Predeterminado. Las llamadas al procedimiento no se registran en el registro de auditoría.
    • scope: Opcional. Ámbito de seguridad que protege el procedimiento de recurso del adaptador. El ámbito puede ser una serie de uno o varios elementos de ámbito separados por espacios, o un valor nulo para aplicar el ámbito predeterminado. Un elemento de ámbito puede ser una palabra clave que se correlaciona con una comprobación de seguridad, o el nombre de una comprobación de seguridad. El ámbito predeterminado es RegisteredClient, que es una palabra clave reservada de MobileFirst. La protección predeterminada precisa de una señal de acceso para acceder al recurso.
      Para obtener más información sobre la protección de recursos OAuth de MobileFirst y de cómo configurar la protección de recursos de adaptador de JavaScript, consulte Protección de recursos de adaptador.
      Cuando el valor el atributo secured es false se ignora el atributo scope.
    • secured: Opcional. Define si el procedimiento de adaptador procedimiento está protegido por la infraestructura de seguridad de MobileFirst. Los siguientes valores son válidos:
      • true: Predeterminado. El procedimiento está protegido. Las llamadas al procedimiento requieren una señal de acceso válida.
      • false. El procedimiento no está protegido. Las llamadas al procedimiento no necesitan una señal de acceso. Consulte Recursos no protegidos. Cuando se establece este valor, se ignora el atributo scope.
  • <securityCheckDefinition>: Opcional. Define un objeto de comprobación de seguridad. Obtenga más información sobre comprobaciones de seguridad en la guía de aprendizaje Creación de comprobaciones de seguridad.
  • property: Opcional. Declara una propiedad definida por el usuario. Obtenga más información en la sección Propiedades personalizadas de esta guía de aprendizaje.

Propiedades personalizadas

El archivo adapter.xml también puede contener propiedades personalizadas definidas por el usuario. Los valores que los desarrolladores les asignan durante la creación del adaptador se pueden modificar en el separador MobileFirst Operations Console → [su adaptador] → Configuraciones, sin tener que volver a desplegar el adaptador. Las propiedades definidas por el usuario se pueden leer con la API getPropertyValue y, a continuación, personalizar adicionalmente en tiempo de ejecución.

Nota: Los elementos de propiedades de configuración se deben ubicar siempre debajo de los elementos <procedure>. En el ejemplo anterior se definió una propiedad <displayName> con un valor predeterminado, de forma que se podía utilizar más tarde.

El elemento <property> toma los siguientes atributos:

  • name: Nombre de la propiedad, tal como se define en la clase de configuración.
  • defaultValue: Modifica el valor predeterminado definido en la clase de configuración.
  • displayName: opcional, nombre descriptivo a visualizar en la consola.
  • description: opcional, descripción a visualizar en la consola.
  • type: opcional, asegura que la propiedad es de un tipo específico como, por ejemplo, integer, string, boolean o una lista de valores válidos (por ejemplo type="['1','2','3']").

Propiedades de la consola

Operaciones pull y push

Las propiedades del adaptador personalizado se pueden compartir mediante el archivo de configuración que se encuentra en el separador de Archivos de configuración.
Para ello, utilice los mandatos pull y push que se describen más abajo mediante Maven o mediante MobileFirst CLI. Para poder compartir las propiedades, es necesario cambiar los valores predeterminados asignados a las propiedades.

Ejecute los mandatos desde la carpeta raíz del proyecto Maven de adaptador:

Maven

  • Para hacer pull al archivo de configuraciones
    mvn adapter:configpull -DmfpfConfigFile=config.json
    
  • Para hacer push al archivo de configuraciones
    mvn adapter:configpush -DmfpfConfigFile=config.json
    

MobileFirst CLI

  • Para hacer pull al archivo de configuraciones
    mfpdev adapter pull
    
  • Para hacer push al archivo de configuraciones
    mfpdev adapter push
    

Hacer push a configuraciones a varios servidores

Los mandatos pull y push ayudan a crear varios flujos de DevOps, donde distintos valores son necesarios en los adaptadores según el entorno en que se encuentre (DEV, QA, UAT, PRODUCTION).

Maven
Observe más arriba cómo de forma predeterminada especifica un archivo config.json. Cree archivos con nombre diferentes para dirigirse a distintos destinos.

MobileFirst CLI
Utilice el distintivo –configFile o -c para especificar un archivo de configuración diferente que el predeterminado:

mfpdev adapter pull -c [adapterProject]/alternate_config.json

Obtenga más información utilizando mfpdev help adapter pull/push.

Carpeta js

Esta carpeta contiene el archivo de implementación JavaScript de todos los procedimientos que se declaran en el archivo adapter.xml y sólo puede haber un archivo JavaScript en un adaptador JavaScript. También puede contener ninguno, uno o varios archivos XSL, con un esquema de transformación para datos XML recuperados sin procesar. Los datos que un adaptador recupera se pueden devolver sin procesar o procesados de forma previa por el propio adaptador. En ambos casos, se presenta a la aplicación como un objeto JSON.

Procedimientos de adaptador de JavaScript

Los procedimientos se declaran en XML y se implementan con JavaScript del lado del servidor, para los siguientes propósitos:

  • Para proporcionar funciones de adaptador para la aplicación
  • Para llamar a servicios de fondo para recuperar datos o realizar acciones

Cada uno de los procedimientos que se declara en el archivo adapter.xml debe tener la correspondiente función en el archivo JavaScript.

Mediante la utilización de JavaScript del lado del servidor, un procedimiento puede procesar los datos antes o después de que llame al servicio. Se pueden aplicar filtrado adicional para recuperar datos mediante la utilización de código XSLT simple.
Los procedimientos del adaptador JavaScript se implementan en JavaScript. Sin embargo, puesto que un adaptador es una entidad en el lado del servidor, es posible utilizar código Java en el adaptador.

Utilización de variables globales

MobileFirst Server no se basa en sesiones HTTP y cada solicitud puede dirigirse a un nodo diferente. No se debería basar en variables globales para mantener datos desde una solicitud a la siguiente.

Umbral de respuesta del adaptador

Las llamadas del adaptador no están diseñadas para devolver grandes estructuras de datos porque la respuesta del adaptador se almacena en la memoria de MobileFirst Server como una serie. Por lo tanto, los datos que sobrepasen la cantidad de memoria disponible pueden originar excepciones de falta de memoria y hacer que falle la invocación al adaptador. Para evitar dichas anomalías, configure un valor de umbral a partir del cual MobileFirst Server devuelva las respuestas HTTP comprimidas con gzip. El protocolo HTTP tiene cabeceras estándar para dar soporte a la compresión gzip. La aplicación de cliente también debe poder dar soporte a contenido gzip en HTTP.

Lado del servidor

En MobileFirst Operations Console, bajo Tiempos de ejecución > Valores > Umbral de compresión de GZIP para respuestas de adaptador, establezca el valor de umbral deseado. El valor predeterminado es de 20 KB.
Nota: Una vez guardado el cambio en MobileFirst Operations Console, es efectivo de forma inmediata en el tiempo de ejecución.

Lado del cliente

Asegúrese de habilitar el cliente para analizar una respuesta gzip, estableciendo el valor de la cabecera Accept-Encoding en gzip en cada solicitud de cliente. Utilice el método addHeader con su variable de solicitud, por ejemplo:request.addHeader("Accept-Encoding","gzip");

API del lado del servidor

Los adaptadores JavaScript pueden utilizar API del lado del servidor para realizar operaciones relacionadas con MobileFirst Server, como por ejemplo, llamar a otros adaptadores JavaScript, crear registros de servidor, obtener valores de las propiedades de configuración, crear informes de actividades para las analíticas u obtener la identidad del emisor de solicitudes.

getPropertyValue

Utilice la API MFP.Server.getPropertyValue(propertyName) para recuperar las propiedades definidas en adapter.xml o en MobileFirst Operations Console:

MFP.Server.getPropertyValue("name");

getTokenIntrospectionData

Utilice la API MFP.Server.getTokenIntrospectionData() para:

Obtener el ID de usuario actual utilice:

function getAuthUserId(){
   var securityContext = MFP.Server.getTokenIntrospectionData();
   var user = securityContext.getAuthenticatedUser();

   return "User ID: " + user.getId;
}

getAdapterName

Utilice la API getAdapterName() para recuperar el nombre de adaptador.

invokeHttp

Utilice la API MFP.Server.invokeHttp(options) en adaptadores HTTP.
Utilice los ejemplos de uso en la guía de aprendizaje Adaptador JavaScript HTTP.

invokeSQL

Utilice las API MFP.Server.invokeSQLStatement(options) y MFP.Server.invokeSQLStoredProcedure(options) en adaptadores de SQL.
Utilice los ejemplos de uso en la guía de aprendizaje Adaptador JavaScript SQL.

addResponseHeader

Utilice la API MFP.Server.addResponseHeader(name,value) para añadir una o varias nuevas cabeceras a la respuesta:

MFP.Server.addResponseHeader("Expires","Sun, 5 October 2014 18:00:00 GMT");

getClientRequest

Utilice la API MFP.Server.getClientRequest() para obtener una referencia al objeto Java HttpServletRequest que se utilizó para invocar un procedimiento de adaptador:

var request = MFP.Server.getClientRequest();
var userAgent = request.getHeader("User-Agent");

invokeProcedure

Utilice MFP.Server.invokeProcedure(invocationData) para llamar a otros adaptadores JavaScript.
Utilice los ejemplos de uso en la guía de aprendizaje Mashup y utilización de adaptador avanzada.

Registro

La API JavaScript proporciona funcionalidades de registro a través de la clase MFP.Logger. Contiene cuatro funciones que corresponden a los cuatro niveles de registro estándar.
Consulte la guía de aprendizaje recopilación de registro del lado del servidor para obtener más información.

Ejemplos de adaptador de JavaScript

Inclusive terminology note: The Mobile First Platform team is making changes to support the IBM® initiative to replace racially biased and other discriminatory language in our code and content with more inclusive language. While IBM values the use of inclusive language, terms that are outside of IBM's direct influence are sometimes required for the sake of maintaining user understanding. As other industry leaders join IBM in embracing the use of inclusive language, IBM will continue to update the documentation to reflect those changes.
Last modified on February 18, 2019