API de JavaScript que se pueden utilizar en vistas

Utilice la siguiente información de consulta para obtener información sobre las API de JavaScript que se pueden utilizar en las vistas.

Las siguientes API y el escenario de la vista son específicos de Application Designer. Para obtener una lista de las API de vista que se comparten entre el Diseñador de aplicaciones y el Diseñador de procesos en las funciones de flujo de trabajo tradicionales, consulte Referencia de API.

Si necesita crear una solicitud xhr desde la vista a otros servicios de oferta, debido a la protección de seguridad entre dominios, debe volver a escribir la serie de conexión utilizando el método rewriteURI que está disponible en el objeto de contexto de la vista. rewriteURI añade la serie de conexión con información de conexión de Application Engine Proxy. Cuando se envía la solicitud xhr desde la vista con la serie de conexión actualizada, la solicitud se envía a Application Engine Proxy. El proxy busca el recurso de aplicación de la oferta y a continuación, direcciona la solicitud al servicio de oferta. Es necesario definir un recurso de aplicación para el servicio de oferta y pasar el nombre del recurso de aplicación a la API rewriteURI. Si el recurso de aplicación no está definido o no se encuentra, Application Engine Proxy no direcciona la solicitud y devuelve un error a la vista.

Además, una aplicación que muestra documentos puede utilizar getAddressableUrl para proporcionar al usuario un enlace que se puede compartir para visualizar el documento actual. A continuación, se puede utilizar subscribeAppState para mostrar automáticamente ese documento cuando se utiliza el enlace compartido.

Tabla 1. Funciones JavaScript que se pueden utilizar en vistas.
Función Descripción
context.rewriteURI(uri, ' resourceName, ' resourceKeySuffix) Esta API devuelve una serie URI del proxy para realizar llamadas de la API REST a un servidor de fondo. Si un proxy o resourceName no está definido, se devuelve el URI original.
{string} uri
El URI del servicio de oferta.
{string} resourceName
nombre del recurso de aplicación para el servicio de oferta
{string} resourceKeySuffix
Añadido a la clave de grupo común que está definida en el recurso de aplicación para identificar de forma dinámica un único recurso de un conjunto de recursos. Únicamente para el tipo "Registry Lookup" de un recurso de aplicación.
context.getCSRFTokenHeaderName() Devuelve el nombre de cabecera HTTP para Cross-Site Request Forgery.
context.getCSRFToken() Devuelve el valor de cadena de falsificación de solicitud entre sitios que se va a utilizar en todas las futuras solicitudes HTTP estableciendo la cabecera si este valor no es de tipo "sin definir".
context.loadFile(file, ' callback) Maneja la carga de un archivo en un objeto de negocio DocumentFile.
{file} file
Un objeto de archivo.
{function} callback
Una función a llamar cuando la carga se ha completado. La función de devolución de llamada tiene un único parámetro: un objeto de negocio DocumentFile.
En el siguiente código de ejemplo se muestra cómo utilizar esta API.
var fileInput = this.context.element.getElementsByTagName("input")[0];
var onChangeHandle = connect.connect(fileInput, "onchange", this, function (event) {
  var context = this.context;
  var files = event.target.files;
  var file = files[0];
  if (file) {
    context.loadFile(file, function (docFile) {
      context.binding.set("value", docFile);
    });
  }
});
context.getAddressableUrl(appState, ' withPageId) Devuelve el URL de la aplicación con el estado de aplicación opcional añadido al URL. Si el usuario vuelve a la aplicación utilizando el URL, vuelve a la página de inicio de la aplicación.
{object} appState (opcional)
La información de estado de la aplicación que se va a añadir al URL de la aplicación. Debe ser una matriz o un objeto serializado JSON válido.
{boolean} withPageId (opcional)
Especifica si se debe devolver el URL de la aplicación con el ID de la página actual (opcional, el valor predeterminado es false). Cuando invoque getAddressableUrl con withPageId=true, asegúrese de que la página se puede invocar como una página inicial. Los pasos del flujo que llevan a la página no se invocarán cuando se utilice el URL direccionable para volver a la página.
context.subscribeAppState(callback) Registra una función de devolución de llamada para recibir una notificación asociada al estado de la aplicación. Una función de devolución de llamada se debe registrar en un manejador de sucesos de vista o carga de una vista.
{function} callback
Función a la que se debe llamar después de la inicialización de la página. La función de devolución de llamada tiene un único parámetro: appState, el objeto que se pasa a la llamada de context.getAddressableUrl. A continuación, la devolución de llamada puede utilizar la información de appState para devolver la aplicación al estado correspondiente.
context.isWorkflowPXServer() Comprueba si el servidor es un Workflow Process Service Server. Para la vista en la aplicación, siempre devuelve false.

Ejemplo: Conectarse a Watson Translation Service

  1. Cree un recurso de aplicación "Punto final definido"; por ejemplo, watson. A continuación, añada información de host, puerto y autenticación al recurso de aplicación.
  2. Utilice el siguiente código de ejemplo para enviar la solicitud xhr en la vista.
    var pillarStr = "watson";
    var connectionStr = "/language-translator/api/v3/translate?version=2018-05-01";
    connectionStr = this.context.rewriteURI(connectionStr, pillarStr);
    
    xhr.open("POST", connectionStr, true);
    
    //Send the proper header information along with the request
    xhr.setRequestHeader("Content-Type", "application/json");
    xhr.setRequestHeader("Accept", "application/json");
    
    // set CSRF Token
    xhr.setRequestHeader(this.context.getCSRFTokenHeaderName(), this.context.getCSRFToken());
    
    var _this = this;
    xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && xhr.status === 200) {
    var json = JSON.parse(xhr.responseText);
    console.log("response translation: ", json.translations[0].translation);
    console.log("response: ", json);
    } else {
    console.log("post request problem: " + xhr.readyState);
    console.log("post request problem: " + xhr.status);
    }
    };
    var senddata =
    {text: this.context.binding.get("value"),
    source: this.context.options.fromLang.get("value").name,
    target: this.context.options.toLang.get("value").name
    };
    // Add JSON body
    
    xhr.send(JSON.stringify(senddata));