Utilizzo del servizio di script execute in AEM Forms su JEE Workbench per creare dati XML

C'è molto XML coinvolto con AEM Forms sui flussi di lavoro JEE Process Management, ad esempio: Le informazioni XML possono essere create in un processo e inviate a un’applicazione Flex in AEM Forms su JEE Workspace, utilizzate per le impostazioni di sistema o per passare informazioni da e verso i moduli. Ci sono molte istanze in cui uno sviluppatore AEM Forms su JEE deve gestire XML e molte volte questo richiede che il XML sia gestito tramite un processo AEM Forms su JEE.

Quando si utilizzano impostazioni XML semplici, è possibile utilizzare il servizio Set Value, che è un servizio AEM Forms predefinito su JEE. Questo servizio imposta il valore di uno o più elementi dati nel modello dati del processo. Per una logica condizionale molto semplice "se questo, allora quello" scenari, questo servizio può soddisfare lo scopo.

Tuttavia, in situazioni più complesse, il servizio Imposta valore non è altrettanto efficace. In queste situazioni, è necessario affidarsi a un set più solido di comandi di programmazione, come quelli forniti da un linguaggio di programmazione come Java. L'utilizzo di Java per creare XML complessi può essere molto più semplice e chiaro rispetto alla creazione di un documento XML da testo semplice all'interno del servizio Imposta valore. Inoltre, è più facile includere la programmazione condizionale in Java che all’interno di un servizio Set Value.

Utilizzo del servizio Esegui script in un processo

All’interno dell’insieme dei servizi AEM Forms standard su JEE disponibili in AEM Forms su JEE Workbench, è presente il servizio Execute Script . Questo servizio consente di eseguire script nei processi e fornisce l'operazione executeScript per eseguire tale operazione.

Creare un'applicazione e un processo con il servizio "Esegui script" definito come attività

La creazione complessiva di applicazioni e processi non rientra nell’ambito di applicazione di questa esercitazione, ma per questo motivo è stata creata un’applicazione denominata "DemoApplication02". Presupponendo che un'applicazione sia già stata creata, è necessario creare un processo in questa applicazione per chiamare il servizio executeScript. Per aggiungere all'applicazione un processo che include il servizio Execute Script :

  1. Fai clic con il pulsante destro del mouse sull'applicazione e seleziona Nuovo. Nel menu a tendina Nuovo, selezionare Processo. Assegna un nome al processo di conseguenza, aggiungi una descrizione se necessario e seleziona l'icona che desideri rappresentare il processo. Ai fini di questa esercitazione, è stato creato un processo denominato executeScriptDemoProcess .
  2. Definisci i punti di inizio o la scelta semplice per aggiungere i punti di inizio in un secondo momento.
  3. Il processo viene ora creato e deve essere aperto automaticamente nella finestra Progettazione processi. In questa finestra, fai clic sull’icona Selettore attività nella parte superiore della finestra Progettazione processi e trascina la nuova attività sulla corsia a nuoto. A questo punto, dovrebbe apparire la Definisci finestra attività (vedi la figura seguente).
    Definisci attività
  4. Il servizio executeScript si trova nel set di servizi Foundation . Il nome Servizi elenca l'oggetto come Execute Script – 1.0 con il nome Operazione executeScript. Fare clic per selezionare l'elemento.
  5. Questo processo deve essere creato e per impostazione predefinita la finestra Proprietà processo deve essere visualizzata nel riquadro a sinistra.

Aggiungi uno script al processo con il servizio "Esegui script"

Una volta creato il processo con l’attività "Esegui script" definita, è possibile aggiungere uno script a questo processo. Per aggiungere uno script a questo processo:

  1. Passa alla palette Proprietà processo . All’interno di questa palette, espandi la sezione Input e fai clic sull’icona "…".

  2. Nella casella di testo che appare scrivere lo script. Quando lo script è stato scritto, premere OK (vedi Figura qui sotto).
    Esegui script

Creazione di XML tramite il servizio Esegui script

Una volta creato un processo con il servizio Esegui script incluso, è possibile utilizzare questo script per creare XML. Uno scriverebbe gli script descritti di seguito nella casella di testo descritta nella sezione Aggiungi uno script al processo con la sezione Execute Script Service di cui sopra.

Informazioni sulla tecnologia di Execute Script Service

Per sapere quali sono le capacità e i limiti del servizio Execute Script, è necessario conoscere i fondamenti tecnologici del servizio. AEM Forms su JEE utilizza il parser DOM (Document Object Model) di Apache Xerces per creare e memorizzare variabili XML all'interno dei processi. Xerces è un’implementazione Java delle specifiche del modello di oggetto documento di W3C; definito qui. La specifica DOM è un modo standard di manipolare XML esistente dal 1998. L'implementazione Java di Xerces, Xerces-J, supporta la versione 1.0 di DOM Level 2.

Le classi Java utilizzate per memorizzare le variabili XML sono le seguenti:

  • org.apache.xerces.dom.NodeImpl e

  • org.apache.xerces.dom.DocumentImpl

DocumentImpl è una sottoclasse di NodeImpl, quindi si può supporre che qualsiasi variabile di processo XML sia una derivazione NodeImpl. È possibile trovare la documentazione per NodeImpl qui.

Creazione XML di esempio utilizzando il servizio Esegui script

Esempio di creazione di XML all'interno di un servizio Execute Script. Il processo ha una variabile, un nodo, di tipo XML. Il risultato finale di questa attività sarà un documento XML. L'attività di quel documento o il modo in cui viene applicato al processo generale non rientrano nell'ambito di questa esercitazione; alla fine, si riduce a ciò che il codice XML deve fare nell'applicazione complessiva. Come accennato nell’introduzione, XML può essere utilizzato per molti scopi in AEM Forms su moduli e processi JEE, si tratta semplicemente di una spiegazione di come codificare l’attività Esegui script per generare un semplice documento XML.

Un semplice script Java per l'output di un file XML ha un aspetto simile al seguente:

import org.apache.xerces.dom.DocumentImpl;

import org.w3c.dom.Document;

import org.w3c.dom.Element;



Document document = new DocumentImpl();

Element topLevelResources = document.createElement("resources");

Element resource = document.createElement("resource");

resource.setAttribute("id", "first item id");

resource.setAttribute("value", "first item value");

topLevelResources.appendChild(resource);

document.appendChild(topLevelResources);

patExecContext.setProcessDataValue("/process_data/node", document);
NOTA

che gli oggetti DOM di cui sopra devono essere importati nello script.

Il risultato di questo semplice script è un nuovo documento XML con un nodo variabile impostato su:

<resources>

<resource id="first item id" value="first item value"/>

</resources>

Utilizzo di un ciclo iterativo per aggiungere nodi al codice XML

I nodi possono essere aggiunti anche a una variabile XML esistente all'interno del processo. La variabile, node, contiene l’oggetto XML appena creato.

Document document = patExecContext.getProcessDataValue("/process_data/node");

NodeList childNodes = document.getChildNodes();

int numChildren = childNodes.getLength();

for (int i = 0; i < numChildren; i++)

{

Node currentChild = childNodes.item(i);

if (currentChild.getNodeType() == Node.ELEMENT_NODE)

{

// found the top level node

Element newResource = document.createElement("resource");

newResource.setAttribute("id", "second item id");

newResource.setAttribute("value", "second item value");

currentChild.appendChild(newResource);

break;

}

}

patExecContext.setProcessDataValue("/process_data/node", document);
The variable node in the XML is now set to:

<resources> 

<resource id="first item id" value="first item value"/> 

<resource id="second item id" value="second item value"/> 

</resources>

In questa pagina