API JavaScript che è possibile utilizzare nelle viste

Utilizzare le seguenti informazioni di riferimento per informazioni sulle API JavaScript che possono essere utilizzate nelle viste.

Le seguenti API di visualizzazione e scenario sono specifici di Application Designer. Per un elenco delle API di visualizzazione condivise tra Application Designer e Process Designer nelle capacità del workflow tradizionale, consultare Riferimento API.

Se è necessario effettuare una richiesta xhr dalla propria vista ad altri servizi dell'offerta, a causa della protezione di sicurezza tra domini, è necessario riscrivere la stringa di connessione xhr utilizzando il metodo rewriteURI disponibile nell'oggetto di contesto della vista. rewriteURI accoda la stringa di connessione con le informazioni di connessione proxy Application Engine . Quando si invia la richiesta xhr dalla vista con la stringa di connessione aggiornata, la richiesta viene inviata al proxy di Application Engine . Il proxy cerca la risorsa applicativa per la tua offerta e poi instrada la tua richiesta al servizio di offerta. È necessario definire una risorsa dell'applicazione per il servizio dell'offerta e passare il nome della risorsa dell'applicazione all'API rewriteURI . Se la risorsa dell'applicazione non viene definita o trovata, il proxy di Application Engine non instrada la richiesta e restituisce un errore alla vista.

Inoltre, un'applicazione che visualizza documenti può utilizzare getAddressableUrl per fornire all'utente un collegamento condivisibile per visualizzare il documento corrente. Quindi, subscribeAppState può essere utilizzato automaticamente per visualizzare il documento quando viene utilizzato il collegamento condiviso.

Tabella 1. Funzioni JavaScript che possono essere utilizzate nelle viste.
Funzione Descrizione
context.rewriteURI(uri, 'resourceName, 'resourceKeySuffix) Questa API restituisce una stringa URI proxy per effettuare chiamate REST API ad un server di backend. Se non è definito un proxy o resourceName , viene restituito l'URI originale.
{string} uri
L'URI del servizio di offerta.
{string} resourceName
nome risorsa applicazione del servizio di offerta
{string} resourceKeySuffix
Accostato alla chiave di gruppo comune che viene definita nella risorsa dell'applicazione per identificare dinamicamente una singola risorsa da una serie di risorse. Solo per il tipo di risorsa di applicazione "Registry Lookup".
context.getCSRFTokenHeaderName() Restituisce il nome dell'intestazione HTTP per CSRF (Cross-Site Request Forgery).
context.getCSRFToken() Restituisce il valore del token cross site request forgery da utilizzare in tutte le richieste HTTP future, impostando l'intestazione se questo valore non è "undefined".
context.loadFile(file, 'callback) Gestisce il caricamento di un file in un oggetto di business DocumentFile .
{file} file
Un oggetto file.
{function} callback
Una funzione da richiamare quando il caricamento è completo. La funzione callback ha un singolo parametro: un oggetto di business DocumentFile .
Il seguente codice di esempio mostra come utilizzare questa 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) Restituisce l' URL dell'applicazione con lo stato opzionale dell'applicazione aggiunto all' URL. Se l'utente torna all'applicazione utilizzando l' URL, viene riportato alla pagina iniziale dell'applicazione.
{object} appState (facoltativo)
Le informazioni sullo stato dell'applicazione da aggiungere all' URL dell'applicazione. Deve essere un oggetto o un array JSON serializzato valido.
{boolean} withPageId (facoltativo)
Specifica se restituire l' URL dell'applicazione con l'ID della pagina corrente (facoltativo, valore predefinito false). Quando si chiama getAddressableUrl con withPageId=true, assicurarsi che la pagina possa essere richiamata come pagina iniziale. Tutte le fasi del flusso che conducono alla pagina non verranno richiamate quando si utilizza l' URL indirizzabile per tornare alla pagina.
context.subscribeAppState (callback) Registra una funzione di callback per ricevere una notifica associata allo stato di applicazione. Una funzione di callback deve essere registrata in un gestore di eventi di carico o di visualizzazione.
{function} callback
Una funzione da richiamare dopo l'inizializzazione della pagina. La funzione callback ha un singolo parametro: appState, l'oggetto passato alla chiamata context.getAddressableUrl . Il callback può quindi utilizzare le informazioni in appState per riportare l'applicazione allo stato corrispondente.
context.isWorkflowPXServer() Verifica se il server è un server Workflow Process Service . Per la vista nella tua applicazione, questo restituisce sempre false.

Esempio: Connettersi al servizio di traduzione Watson

  1. Creare una risorsa dell'applicazione "Endpoint definito"; ad esempio, watson. Quindi, aggiungere informazioni host, porta e autenticazione alla risorsa applicativa.
  2. Utilizzare il seguente codice di esempio per inviare la richiesta xhr a 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));