En el archivo ESQL, cree un módulo que se asociará a un nodo del flujo de mensajes. Un
módulo se puede asociar con un solo nodo de un tipo determinado
(Compute,
Database o
Filter).
En el módulo puede crear y utilizar funciones y procedimientos al igual que sentencias y funciones suministradas. También puede crear constantes y variables locales.
Si ha creado constantes, funciones o procedimientos a nivel del esquema de intermediario, también puede hacer referencia a los mismos en el módulo.
Puede definir rutinas a un nivel en el que muchos módulos diferentes puedan utilizarlas, con lo cual se ahorrará tiempo de desarrollo y tareas de mantenimiento.
Para crear ESQL para un nodo:
- Vaya a Perspectiva de Desarrollo de aplicaciones de
intermediario.
- En la vista Desarrollo de intermediario, efectúe una doble pulsación en el flujo de mensajes que
incluye el nodo para el que desea crear ESQL. El flujo de mensajes se abre en la vista del editor.
- Pulse el botón derecho del ratón en el nodo (que debe ser
Compute,
Database o
Filter)
y, a continuación, pulse Abrir ESQL. El archivo ESQL predeterminado para este flujo de mensajes,
nombre_flujo_mensajes.esql,
se abre en la vista de editor. El archivo se crea si aún no existe.
Si ya ha creado el archivo, éste se abre en la vista de editor y se crea y se resalta un
nuevo módulo.
Si el archivo se crea automáticamente, contiene al final un módulo de esqueleto
para este nodo. 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 se pueda desplegar
en un intermediario de la
Versión 2.1, debe pasar las
variables de nivel de módulo
InputRoot y
OutputRoot
al procedimiento o a la función como muestra 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 predeterminado es nombre_flujo_mensajes_tipo_nodo.
La función Main contiene llamadas a dos procedimientos, descritos más abajo, que se
declaran en el módulo de nodo Compute
a continuación de la función Main. Estas llamadas están comentadas. Si desea incluir
la función que proporcionan, elimine el signo de comentario de las
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 Copiar cabeceras de mensajes en la vista 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 Copiar mensaje
completo en la vista 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
excepto la primera línea, que dice:
CREATE FILTER MODULE nombre_módulo
- Añada el ESQL a este archivo para personalizar el comportamiento del nodo.
Empiece 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, 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, donde 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.
- Cuando haya terminado de trabajar con este módulo, puede cerrar el archivo ESQL. Guarde el archivo antes de cerrarlo para conservar todos los cambios y validar el ESQL.
Si lo prefiere, puede abrir el archivo ESQL directamente y crear el módulo en dicho archivo utilizando el editor. Para hacerlo:
- Vaya a la Perspectiva de Desarrollo de aplicaciones de
intermediario.
- Seleccione el archivo ESQL en el que desea crear el módulo. Pulse dos veces para abrir este archivo en la vista del editor o pulse con el botón derecho y pulse Abrir.
- En la vista del editor, coloque el cursor en una línea nueva y utilice el asistente de contenido para seleccionar el esqueleto de módulo adecuado para este tipo de nodo, por ejemplo, CREATE COMPUTE MODULE END MODULE;. Puede escribirlo usted mismo si lo prefiere pero debe asegurarse de que el tipo sea coherente con el esqueleto necesario, como se ha mostrado anteriormente. Utilice el asistente de contenido para obtener ayuda adicional insertando solamente ESQL válido e insertando sentencias END coincidentes (por ejemplo, END
MODULE;) donde son necesarias.
- Complete la codificación del módulo según corresponda.
Independientemente del método que utilice para abrir el archivo ESQL, tenga en cuenta que el editor proporciona funciones para ayudarle a codificar ESQL. En
esta sección se hace referencia a la ayuda de contenido;
hay otras funciones disponibles. Para obtener información acerca de estas funciones, consulte Editor ESQL.