Usar el servicio de ejecución de scripts en AEM Forms en JEE Workbench para generar datos XML

Hay mucho XML relacionado con los flujos de trabajo de AEM Forms en JEE Process Management, por ejemplo: la información XML se puede crear en un proceso y enviarse a una aplicación de Flex en AEM Forms en JEE Workspace, utilizarse para la configuración de sistemas o pasar información desde y hacia formularios. Hay muchos casos en los que un desarrollador de AEM Forms en JEE necesita administrar XML y muchas veces esto requiere que el XML se administre a través de un proceso de AEM Forms en JEE.

Cuando se trata de una configuración XML simple, se puede utilizar la variable Set Value , que es un servicio predeterminado de AEM Forms en JEE. Este servicio establece el valor de uno o más elementos de datos en el modelo de datos de proceso. Para una lógica condicional muy simple, los escenarios "si esto es así, entonces es así", este servicio puede adaptarse al propósito.

Sin embargo, en situaciones más complejas, el servicio Establecer valor no es tan eficaz. En estas situaciones, es necesario confiar en un conjunto más robusto de comandos de programación, como los que proporciona un lenguaje de programación como Java. El uso de Java para generar XML complejo puede ser mucho más fácil y claro que la creación de un documento XML a partir de texto simple dentro del servicio Establecer valor. Además, es más fácil incluir la programación condicional en Java que dentro de un servicio Set Value.

Uso del servicio Ejecutar script en un proceso

Dentro del conjunto de servicios estándar de AEM Forms en JEE disponibles en AEM Forms en JEE Workbench, se encuentra el Execute Script servicio. Este servicio permite ejecutar scripts en procesos y proporciona el executeScript operación para hacerlo.

Crear una aplicación y un proceso con el servicio "Ejecutar script" definido como actividad

La creación general de aplicaciones y procesos está fuera de ámbito para este tutorial, pero para esta instrucción, hemos creado una aplicación denominada "DemoApplication02". Suponiendo que ya se ha creado una aplicación, es necesario crear un proceso en esta aplicación para llamar al servicio executeScript. Para agregar un proceso a la aplicación que incluye Execute Script servicio:

  1. Haga clic con el botón derecho en la aplicación y seleccione Nuevo. Entrada Nuevo menú deslizable, seleccionar Proceso. Asigne un nombre al proceso, añada una descripción si es necesario y seleccione el icono que desea que represente este proceso. Para los fines de este tutorial, hemos creado un proceso y lo hemos denominado executeScriptDemoProcess.
  2. Defina sus puntos de inicio o simplemente opte por añadir sus puntos de inicio más adelante.
  3. El proceso se creará y se abrirá automáticamente en Diseño de procesos ventana. En esta ventana, haga clic en el icono Selector de actividad en la parte superior de la ventana Diseño del proceso y arrastre la nueva actividad a la pista de natación. En este punto, la variable Ventana Definición de Actividad (consulte la figura siguiente).
    Definir actividad
  4. El servicio executeScript se encuentra en Foundation conjunto de servicios. El nombre Servicios enumera el objeto como Execute Script – 1.0 con el nombre de la operación executeScript. Haga clic para seleccionar este elemento.
  5. Este proceso debe crearse y, de forma predeterminada, la variable Propiedades del proceso La ventana de debe aparecer en el panel de la izquierda.

Añadir un script al proceso con el servicio "Ejecutar script"

Una vez creado el proceso con la actividad del servicio "Ejecutar script" definida, se puede añadir una secuencia de comandos a este proceso. Para agregar una secuencia de comandos a este proceso:

  1. Vaya a Propiedades del proceso paleta. Dentro de esta paleta, expanda el Entrada y haga clic en el icono "…".

  2. En el cuadro de texto que aparece, escriba el script. Cuando se haya escrito el script, pulse OK (ver la figura siguiente).
    Ejecutar script

Crear XML mediante el servicio Ejecutar script

Una vez creado un proceso con el servicio Ejecutar script incluido, se puede utilizar este script para crear XML. Se escribirían los scripts que se describen a continuación en el cuadro de texto descrito en Agregar un script al proceso con Execute Script Sección de servicio anterior.

Acerca de la tecnología del servicio Ejecutar script

Para saber cuáles son las capacidades y limitaciones del servicio Ejecutar Script, es necesario conocer los fundamentos tecnológicos del servicio. AEM Forms en JEE utiliza el analizador del modelo de objetos de documento (DOM) de Apache Xerces para crear y almacenar variables XML en procesos. Xerces es una implementación Java de la especificación del Modelo de objetos de documento de W3C; definici ó n aquí. La especificación DOM es una forma estándar de manipular XML que existe desde 1998. La implementación Java de Xerces, Xerces-J, es compatible con DOM Nivel 2 versión 1.0.

Las clases Java utilizadas para almacenar variables XML son:

  • org.apache.xerces.dom.NodeImpl y

  • org.apache.xerces.dom.DocumentImpl

DocumentImpl es una subclase de NodeImpl, por lo que se puede suponer que cualquier variable de proceso XML es una derivación de NodeImpl. Puede encontrar la documentación de NodeImpl aquí.

Creación de XML de ejemplo mediante el servicio Ejecutar script

Este es un ejemplo de creación de XML, dentro de un servicio Ejecutar script. El proceso tiene una variable, node, que es de tipo XML. El resultado final de esta actividad será un documento XML. Lo que hace ese documento, o cómo se aplica al proceso general, está fuera de ámbito para este tutorial; en última instancia, se reduce a lo que el XML debe hacer en la aplicación general. Como se mencionó en la introducción, el XML se puede utilizar para muchos fines en AEM Forms en formularios y procesos JEE; esta es simplemente una explicación de cómo codificar la actividad Ejecutar script para generar un documento XML simple.

Un script Java simple para generar XML tendría este aspecto:

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

que los objetos DOM mencionados deben importarse en la secuencia de comandos.

El resultado de este script simple es un nuevo documento XML con un nodo de variable establecido en:

<resources>

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

</resources>

Uso de un bucle iterativo para agregar nodos al XML

Los nodos también se pueden agregar a una variable XML existente dentro del proceso. La variable, node, contiene el objeto XML que acabamos de crear.

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>

En esta página