Validar XML con registro de errores
Este ejemplo demuestra cómo crear un trabajo que valida un archivo XML con un esquema. Si el trabajo falla por algún motivo, los detalles del error se escriben en un archivo de registro. Para la validación usaremos la función valxml-withxsd de RaptorXML Server, que ejecutamos bajo el control de FlowForce Server. Además, para la parte de registro de errores, la técnica que se utiliza en este ejemplo no depende de RaptorXML Server y se puede usar en otro tipo de trabajos.
Nota: | Las funciones de RaptorXML Server se habilitan en FlowForce Server una vez se haya instalado RaptorXML Server. |
El trabajo de este ejemplo se definió como un servicio web. Así se podrá desencadenar cuando se necesite con sólo acceder a la URL desde un explorador. Sin embargo, si lo necesita, también puede añadir un temporizador al trabajo (o un desencadenador de sistema de archivos). Incluso puede añadir una combinación de desencadenador y servicio web al mismo trabajo. De este modo, el trabajo no sólo se ejecutará en función de lo que determine el desencadenador, sino que además se ejecutará cuando se llame al servicio web.
Requisitos
•Licencias necesarias: FlowForce Server y RaptorXML Server (o RaptorXML+XBRL Server).
•Los servicios FlowForce Web Server y FlowForce Server deben escuchar en la en la dirección de red y en el puerto configurados previamente.
•Debe tener una cuenta de usuario de FlowForce Server con permisos para uno de los contenedores (en este ejemplo se usa el contenedor /public porque está abierto automáticamente a todos los usuarios autenticados).
•El trabajo de este ejemplo genera un archivo de registro cada vez que se ejecuta. Por tanto, deberá tener permiso para crear archivos en en el sistema operativo donde se ejecuta FlowForce Server (en este ejemplo los archivos se crean en el directorio C:\FlowForceExamples\ValidateXml).
Archivos de ejemplo utilizados
El archivo XML que se valida en este ejemplo está disponible en la carpeta de instalación de RaptorXML Server en esta ruta de acceso: C:\Archivos de programa\Altova\RaptorXMLServer2025\examples\NanonullOrg.xml.
Si ejecuta RaptorXML de 32 bits en un sistema Windows de 64 bits, la ruta de acceso es C:\Archivos de programa (x86)\Altova\RaptorXMLServer2025\examples\NanonullOrg.xml, a no ser que instalara RaptorXML Server en otra carpeta.
También puede usar cualquier otro archivo XML para la validación.
Crear el trabajo
1.Inicie sesión en la interfaz de administración web de FlowForce Server y abra el contenedor /public/Examples. Este contenedor ya existe si lo creó en los ejemplos anteriores; de lo contrario puede crearlo con el comando Crear | Crear contenedor.
2.Haga clic en Crear trabajo. A continuación introduzca un nombre y, si quiere, una descripción para el trabajo que está creando. A este trabajo le hemos asignado el nombre "ValidateXml".
3.En "Parámetros de entrada del trabajo" haga clic en el botón y cree un parámetro nuevo de tipo "cadena como archivo", por ejemplo:
4.En "Pasos de ejecución" haga clic en el botón y seleccione nuevo controlador de errores/operación correcta.
5.En "Ejecutar con controlador de errores/operación correcta si hay errores" haga clic en el botón y agregue un paso de ejecución nuevo con esta configuración:
Ejecutar función | Navegue hasta la función /RaptorXML/valxml-withxsd. |
Parámetros | Junto al parámetro Archivo XML haga clic en y seleccione el parámetro de entrada inputFile que declaró antes. |
6.Bajo la condición "Cuando haya errores" haga clic en el botón para añadir un paso de ejecución nuevo con esta configuración:
Ejecutar función | Navegue hasta la función /system/compute. | |
Parámetros | Establezca el valor de Expression en:
Las partes que ve entre paréntesis son dos expresiones de FlowForce. Esta expresión obtiene el resultado, lo convierte en una secuencia y lo escribe en un archivo en disco:
•La función failed-step devuelve el resultado (result) del paso fallido. Se trata de un tipo abstracto de FlowForce que se debe pasar como argumento a las funciones exitcode, stderr o error-message, véase más abajo. •La función stdout obtiene el resultado estándar de result como secuencia, siempre que haya un resultado estándar. •La función as-file crea un archivo a partir de la secuencia. La ruta se indica en un paso posterior. | |
Asignar el resultado de este paso a | Introduzca un valor que identifique de forma única el resultado de este trabajo, por ejemplo MyResult para declarar este valor como variable y poder usarlo en un paso posterior. |
7.Haga clic en el botón para añadir otro paso de ejecución, esta vez con la configuración siguiente:
Ejecutar función | Navegue hasta la función /system/filesystem/copy. |
Parámetros | Junto al parámetro Origen haga clic en y seleccione la variable MyResult que declaró antes.
Junto al parámetro Destino teclee la ruta en la que quiere guardar el registro (en este ejemplo la ruta es C:\FlowForceExamples\ValidateXml\error.log).
Marque la casilla junto al parámetro Sobrescribir. El archivo de registro se genera cada vez que se ejecuta el trabajo y de esta forma se asegura de que el trabajo no falla aunque el archivo de registro ya exista.
Establezca el parámetro Directorio de trabajo en C:\FlowForceExamples\ValidateXml. |
Ahora la rama "Cuando haya errores" del trabajo debería tener este aspecto:
8.En "Servicio" marque la casilla Permitir acceso a este trabajo por HTTP e introduzca ValidateXmlService como nombre del servicio.
9.En "Credenciales" seleccione un registro de credenciales que ya exista o credenciales locales. Para más detalles consulte Credenciales.
10.Haga clic en Guardar.
Ejecutar el trabajo
Puede ejecutar el trabajo de varias maneras:
•Vaya a Inicio y haga clic en Ver los desencadenadores y servicios activos. Después haga clic en la URL del trabajo que aparece en la columna "Información".
•Introduzca http://127.0.0.1:4646/service/ValidateXmlService en la barra de direcciones del explorador. Tenga en cuenta que esta URL sólo funciona si el servicio FlowForce Server escucha en la dirección host y el nombre de puerto predeterminados. Si su puerto y host tienen otra configuración vaya a la página de configuración y cambie la dirección.
•Si configura el campo Nombre de host de FlowForce Server desde la página de configuración puede ejecutar la llamada al servicio web directamente desde la página de configuración del trabajo. Para ello haga clic en el botón que hay junto a la casilla Permitir acceso a este trabajo por HTTP. Este botón sólo se habilita si configura este campo Nombre de host. Si no lo ha hecho, puede llamar al servicio web escribiendo la URL manualmente en la barra de dirección.
Si la aplicación le pide credenciales al acceder al servicio web, use las mismas que usó para acceder a FlowForce Server.
Recomendamos usar las credenciales de FlowForce Server para la autenticación HTTP sólo en casos de prueba. Para producción es mejor crear un usuario nuevo, darle el permiso Servicio - Uso en el contenedor en el que está el trabajo y después acceder al servicio web con esa cuenta. Para desactivar la autenticación HTTP y hacer público el servicio web debe dar el permiso Servicio - Uso al usuario Anónimo, véase ¿Cómo funcionan los permisos?. |
Este trabajo está configurado para que espere un parámetro como entrada, por lo que el explorador muestra un formulario en el que puede introducir la ruta de acceso al archivo XML que quiere validar.
Introduzca una ruta de acceso a un archivo XML en la caja de texto (por ejemplo C:\Program Files\Altova\RaptorXMLServer2025\examples\NanonullOrg.xml) y haga clic en Enviar.
Si el trabajo se ejecuta correctamente (es decir, si devuelve el código de salida 0) en el explorador aparece el resultado estándar del trabajo, por ejemplo:
file:///C:/Program%20Files/Altova/RaptorXMLServer/examples/NanonullOrg.xml: runtime="16ms" result="OK"
Si el trabajo devuelve un código de salida distinto a 0 (por ejemplo, debido a una ruta incorrecta, errores de validación, etc.) en el explorador aparece el mensaje "Error al ejecutar el servicio" y el resultado se escribe en el archivo C:\FlowForceExamples\ValidateXml\error.log. En caso de que no se genere el archivo de registro puede consultar el registro del trabajo para identificar el error. Puede que, por ejemplo, la función /system/filesystem/copy haya fallado porque no tiene permiso de escritura en la ruta de destino.