Copiar archivos

www.altova.com Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Ejemplos de trabajos >

Copiar archivos

En este ejemplo explicamos cómo copiar varios archivos en el sistema local de archivos con ayuda de un trabajo de FlowForce Server.

 

Imaginemos que quiere copiar todos los archivos de un directorio de origen (p.ej. C:\Source) a uno de destino (p. ej. C:\Target). (Si usa un sistema UNIX deberá adaptar las rutas como corresponda). Para lograr este objetivo usaremos un paso "for-each" que se repita con todos los archivos de un directorio y después invocaremos la función /system/filesystem/copy para cada uno de los elementos del bucle.

 

Requisitos

Licencias necesarias: FlowForce Server
FlowForce Server debe ejecutarse en la dirección y en el puerto de red configurados (véase Definir la dirección de red y el puerto).
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á automáticamente abierto a todos los usuarios autenticados).
Este trabajo copia archivos del directorio de origen al directorio de destino. Por tanto, asegúrese de que crea estos directorios en el sistema de archivos local antes de crear el trabajo y de que incluye un par de archivos en el directorio de origen para poder probar el trabajo.

 

Crear el trabajo

Primero debe iniciar sesión en la interfaz de administración de FlowForce Server y hacer clic en Configuración. Ahora abra el contenedor /public y cree un trabajo nuevo. Asígnele un nombre (p. ej. "CopiarArchivos") y, si quiere, una descripción.

ff_example_copy_01

El paso "for-each" de FlowForce Server sirve para iterar todos los elementos de una lista. Este paso itera en una secuencia o lista de elementos, del primero al último. En este ejemplo la secuencia de elementos es la lista de archivos del directorio de origen. Para crear esta lista haga clic en Nuevo paso de ejecución y teclee /system/compute junto a "Ejecutar función". También puede seleccionar esta ruta en una lista desplegable, como se muestra a continuación.

ff_example_copy_02

Ahora introduzca la siguiente expresión en el campo Expresión:

 

list-files("C:\Source\*.*")

 

Después introduzca un nombre para la lista en el campo Asignar el resultado de este paso a (en este caso el nombre es list). Esto nos sirve para poder hacer referencia en el siguiente paso a la lista de archivos que acabamos de crear. El primer paso de ejecución del trabajo debe tener este aspecto:

ff_example_copy_03

La expresión de la imagen anterior invoca la función de expresión list-files. La función toma una ruta como argumento (en este caso C:\Source\*.*) y devuelve la lista de archivos (o directorios) en la ruta indicada. Observe que la ruta contiene el comodín *.* para seleccionar todos los archivos del directorio. Si lo necesita puede modificar el comodín para que se seleccionen solo ciertas extensiones de archivos, como *.txt. Para más información sobre expresiones en FlowForce consulte el apartado Lenguaje de expresiones de FlowForce.

 

Ahora ya puede crear el paso de iteración "for-each". Haga clic en Nuevo paso For-each y teclee list en la casilla de la secuencia. (Esto afecta al elemento list que creó en el paso de ejecución anterior).

ff_example_copy_04

Consejo: también puede copiar la expresión list-files("C:\Source\*.*") y pegarla en la casilla "de la secuencia" del paso "for-each" para no tener que configurar el primer paso de ejecución.

 

A continuación, haga clic en el botón add y añada un paso de ejecución nuevo dentro del paso "for-each". Este paso invoca la función /system/filesystem/copy para cada uno de los elementos del bucle, como se ve en la imagen siguiente.

ff_example_copy_05

Como se ve en la imagen anterior, se llama a la función copy con los siguientes argumentos:

 

El argumento Origen es el elemento (archivo) activo en el bucle. Puede teclearlo en la casilla Source o hacer clic en el botón ff_ic_set_to y seleccionar el elemento item.
El argumento Destino es la ruta de destino. En este ejemplo hemos introducido la ruta como se ve, pero también la puede dar como argumento para el trabajo.
La opción Sobrescribir está habilitada, lo que significa que si ya existe un archivo con el mismo nombre en el directorio de origen, el nuevo lo sobrescribirá. Para deshabilitar esta opción, haga clic en el botón delete.

 

Para simplificar, en este ejemplo no damos los otros dos argumentos. Para más información consulte la descripción de la función /system/filesystem/copy.

 

En este punto, el trabajo que hemos creado incluye todos los pasos de procesamiento necesarios, pero aún no contiene ningún desencadenador. Para desencadenar el trabajo a intervalos regulares puede usar un temporizados (consulte Desencadenadores temporizadores). También puede vigilar si hay cambios en el directorio de origen y desencadenar el trabajo con un desencadenador de sistema de archivos (consulte Desencadenadores de sistema de archivos). Por último, puede desencadenar el trabajo bajo demanda como llamada a un servicio web.

 

En este ejemplo desencadenaremos el trabajo bajo demanda haciendo clic en una URL en el navegador (que invoca el trabajo como servicio web). Para convertir el trabajo en un servicio web, marque la casilla Permitir acceso a este trabajo por HTTP en la dirección URL e introduzca el nombre del servicio web.

ff_example_copy_06

Por último, para ejecutar el trabajo son necesarias unas credenciales. Introduzca el nombre de usuario de su sistema operativo y su contraseña (no sus credenciales de FlowForce Server) en la sección "Credenciales", como se muestra a continuación. Esto indica al sistema operativo que usted autoriza que FlowForce copie esos archivos. Otra alternativa, si ha creado antes credenciales individuales, como se explica en el apartado Definir credenciales, es seleccionarlas con la opción Seleccione una credencial.

fs_deploy_mapping_05

 

Un registro de credencial es la combinación del nombre de usuario y la contraseña asociados a la cuenta de usuario del sistema operativo donde se debe ejecutar el trabajo de FlowForce Server. Por tanto, al definir un trabajo en FlowForce Server deberá dar las credenciales con las que se debe ejecutar el trabajo. Recuerde que si la cuenta de usuario asociada a las credenciales dadas no tiene suficientes permisos en el sistema operativo, el trabajo no se ejecutará correctamente.

 

Ejecutar el trabajo

Para probar el trabajo, introduzca http://127.0.0.1:4646/service/CopiarArchivosServicio en la barra de dirección del navegador, siempre y cuando FlowForce Server se esté ejecutando con el host y el nombre de puerto predeterminados. Si ha definido otras opciones para el host y el puerto en la página Configuración, cambie la dirección como corresponda, tal y como se describe en Definir la configuración de red. Si la aplicación solicita sus credenciales para acceder al servicio web, use las mismas que usó para iniciar sesión en FlowForce Server (con estas credenciales estamos confirmando a FlowForce Server que tenemos permiso para acceder al trabajo, que en este caso es un servicio web).

 

Si se ejecuta correctamente, el trabajo copiará todos los archivos del directorio de origen en el directorio de destino. De lo contrario, en el navegador aparecerá el mensaje indicando que ha habido un error en la ejecución del servicio. Si eso ocurre, consulte el registro del trabajo para más información (consulte Ver el registro de trabajos). El error puede deberse, entre otros motivos, a credenciales o rutas de archivos incorrectas o permisos insuficientes en el sistema de archivos. Por ejemplo, el trabajo fallará si no se ha marcado la casilla Sobrescribir y en el directorio de destino ya existe un archivo con el mismo nombre, como se ve a continuación.

 

ff_example_copy_07_zoom50


© 2019 Altova GmbH