Pulse con el botón derecho el nodo (que debe ser Compute, Database o Filter)
y pulse Abrir ESQL. El archivo ESQL por omisión para este flujo de mensajes,
<nombre_flujo_mensajes>.esql, se abre en la vista
del editor (si todavía no existe, se creará el archivo).
Si ya ha creado el archivo por omisión y pulsa Abrir ESQL,
se abrirá el archivo en la vista del editor y se creará y resaltará el nuevo módulo.
Se creará un módulo esqueleto para este nodo al final del archivo ESQL. El contenido exacto depende del tipo de nodo.
Se crea el módulo siguiente para un nodo Compute:
CREATE COMPUTE MODULE <nombre_módulo>
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
-- CALL CopyMessageHeaders();
-- CALL CopyEntireMessage();
RETURN TRUE;
END;
CREATE PROCEDURE CopyMessageHeaders() BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
WHILE I < J DO
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1;
END WHILE;
END;
CREATE PROCEDURE CopyEntireMessage() BEGIN
SET OutputRoot = InputRoot;
END;
END MODULE;
Para que el ESQL
anterior pueda desplegarse en un intermediario de la Versión 2.1, debe
pasar las variables a nivel de módulo
InputRoot y
OutputRoot al procedimiento o función tal y como indica
el texto en negrita del ejemplo siguiente:
CREATE COMPUTE MODULE <nombre_módulo>
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
-- CALL CopyMessageHeaders(InputRoot, OutputRoot);
-- CALL CopyEntireMessage(InputRoot, OutputRoot);
RETURN TRUE;
END;
CREATE PROCEDURE CopyMessageHeaders(IN InputRoot REFERENCE, IN
OutputRoot REFERENCE) BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
WHILE I < J DO
CREATE LASTCHILD OF OutputRoot DOMAIN FIELDNAME (
InputRoot.*[I] ); /*crear el analizador para OutputRoot*/
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1;
END WHILE;
END;
CREATE PROCEDURE CopyEntireMessage(IN InputRoot REFERENCE, IN
OutputRoot REFERENCE) BEGIN
SET OutputRoot = InputRoot;
END;
END MODULE;
El nombre del módulo se determina mediante el valor que ha establecido para la propiedad de nodo correspondiente. El
valor por omisión es <nombre_flujo_mensajes>_<tipo_nodo>.
La función Main contiene llamadas a dos procedimientos que se describen a continuación, que se declaran en el módulo del nodo Compute después de la función Main. Estas llamadas están comentadas. Si desea incluir la función que proporcionan, descomente estas líneas y colóquelas en el punto adecuado del ESQL que crea para Main.
- CopyMessageHeaders
- Este procedimiento recorre en bucle las cabeceras contenidas en el mensaje de entrada y las copia en el mensaje de salida.
Si está migrando desde la
Versión 2.1, este procedimiento es equivalente al código que se genera cuando selecciona el botón para copiar las cabeceras de mensajes del diálogo de propiedades del nodo Compute.
- CopyEntireMessage
- Este procedimiento copia todo el contenido del mensaje de entrada, incluidas las cabeceras, en el mensaje de salida.
Si está migrando desde la
Versión 2.1, este procedimiento es equivalente al código que se genera cuando selecciona el botón para copiar todo el mensaje del diálogo de propiedades del nodo Compute.
Si crea un módulo ESQL para un nodo Database, se crea el módulo siguiente:
CREATE DATABASE MODULE <nombre_módulo>
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
RETURN TRUE;
END;
END MODULE;
Para un nodo Filter, el módulo es idéntico al que se crea para el nodo
Database con excepción de la primera línea, que es:
CREATE FILTER MODULE <nombre_módulo>
Añada el ESQL a este archivo para personalizar el comportamiento del nodo.
Debe empezar añadiendo las sentencias
ESQL dentro de la función Main, es decir, después de la sentencia
BEGIN y antes de RETURN TRUE. Puede añadir sentencias DECLARE en el módulo que no estén contenidas en la función Main. Para añadir una línea nueva al archivo, pulse Intro.
Para ayudarle a codificar ESQL válido, el editor visualiza una lista de sentencias y funciones validas en el punto del cursor. Para invocar esta ayuda, pulse .
En algunos sistemas, también puede utilizar la combinación
de teclas Control+Espacio.
Desplácese por la lista visualizada para encontrar y resaltar la que desee y pulse Intro. El código adecuado se insertará en el módulo y la lista desaparecerá.
Se proporciona un asistente de contenido para las áreas siguientes:
- Palabras clave aplicables basadas en la sintaxis del idioma.
- Bloques de código que aparecen juntos, por ejemplo, BEGIN END;.
- Constantes que ha definido, identificadores, etiquetas, funciones y procedimientos que se pueden utilizar, en las que las rutinas pueden estar en cualquier proyecto, incluso si el proyecto actual no hace referencia a las mismas.
- Nombres de tablas y esquemas de base de datos después del nombre de correlación de base de datos, al igual que nombres de columnas de tablas en sentencias
INSERT, UPDATE, DELETE y SELECT
y, en la mayor parte de los casos, las cláusulas WHERE de dichas sentencias.
- Elementos de referencia del campo de mensaje: nombres de dominio de tiempo de ejecución (analizador), identificadores de espacio de nombres, elemento calificado de espacio de nombres y nombres de atributos y formato de expresión de índice.
- Contenido de la carpeta propiedades bajo la raíz del mensaje de salida.
- Para la sentencia DECLARE NAMESPACE, espacios de nombres de destino de los conjuntos de mensajes y nombres de esquemas.
El asistente de contenido sólo funciona si ESQL se puede analizar correctamente.
Los errores como, por ejemplo, que falte END después de BEGIN y otras sentencias de bloque sin finalizar generan errores del analizador y no se proporciona el asistente de contenido. Intente ejecutar el asistente de contenido en otras áreas alrededor de la sentencia en la que no funciona para aislar más el punto de error. Alternativamente, guarde el archivo ESQL ya que al guardar el archivo los errores de validación y todos los errores de sintaxis se graban en la vista de tareas. Consulte los informes de errores generados para comprender y corregir la sintaxis ESQL. Si utiliza el asistente de contenido para generar la mayor parte de las sentencias (por ejemplo, sentencias de bloque), estas se introducen correctamente y existe menos posibilidades de errores.