Diferencia entre revisiones de «EgImportExport»

De Egeasy
Saltar a: navegación, buscar
(Campos)
(Para la importación (.imp))
Línea 39: Línea 39:
 
</center>
 
</center>
  
<p>Como se puede ver en la imagen anterior, el parámetro '''MODE''' tiene asignado el modo '''ALL'''. Justo debajo de esa línea, aparecen los modos que pueden ser asignados a este parámetro y que tienen que ser incluidos en el fichero de configuración. A continuación, se explicará las particularidades de cada uno de los modos:</p>
+
<p>Como se puede ver en la imagen anterior, el parámetro '''MODE''' tiene asignado el modo '''ALL'''. Éste, es uno de los tres modos de importación que pueden ser asignados. Como se ve en el ejemplo, estos tres modos aparecen incluidos en una línea justo debajo del parámetro "MODE", ya que tienen que estar incluidos en el fichero de configuración.</p>
 +
<p>Veamos a continuación las particularidades de cada modo:</p>
  
 
:*FOUND: en este modo de importación, sólo se importarán aquellos objetos que ya se encuentren creados en el centro, limitándose a actualizar la información de éstos.
 
:*FOUND: en este modo de importación, sólo se importarán aquellos objetos que ya se encuentren creados en el centro, limitándose a actualizar la información de éstos.
Línea 45: Línea 46:
 
:*ALL: esta modalidad es en realidad la unión de las dos anteriores. De manera que si el objeto que queremos importar ya está creado actualiza su información, y si no se encuentra, se crea.
 
:*ALL: esta modalidad es en realidad la unión de las dos anteriores. De manera que si el objeto que queremos importar ya está creado actualiza su información, y si no se encuentra, se crea.
  
<p>Una vez configurado este fichero, ya podemos ejecutar la aplicación y realizar la importación.</p>
+
<p>Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.</p>
 +
<p>Los directorios que hemos especificado en el fichero de configuración deben ser creados manualmente ya que si no están creados, la aplicación no los creará por sí sola.</p>
 +
<p>Una vez creados los directorios, tendremos que almacenar en los directorios correspondientes aquellos ficheros .xml que queramos importar, así como los ficheros .doc que también se quieran importar.</p>
 +
<p>
 +
 
 +
La única restricción en cuanto a la forma de nombrar los archivos a importar, es la no repetir nunca nombre. Una recomendación es establecer alguna regla de nomenclatura que garantice la exclusividad de los mismos. Por ejemplo, nombrarlos mediante el tipo de contenedor y una enumeración siempre creciente.
 +
La importación de un contenedor cuyo archivo se encuentra en el historial, de las exportaciones e importaciones, implica la actualización del contenedor ya existente. Aunque la intención fuera la generar un objeto nuevo.
 +
 
 +
Archivos a importar
 +
 
 +
Para que se lleve a cabo la importación, las declaraciones de los componentes en XML han de coincidir siempre con los declarados en egEasy. Si la intención es la de importar información de otra plataforma, se recomienda la realización de una exportación previa del tipo de contenedor que se quiere generar. Obteniendo la adecuada declaración en XML. Cada contenedor a importar de un mismo tipo, diferirá sólo en los datos; nunca en la estructura.
 +
El dominio es otro punto a cuidar. Si los contenedores a importar tiene como dominio un objeto del sistema, sólo es necesario identificar el tipo y el componente; y la aplicación ubicará correctamente el contenedor. En cambio, si el dominio es otro contenedor, se requiere identificar un contenedor mediante un archivo XML; que permitan a la aplicación diferenciarlo entre todos
 +
los posible contenedores de un mismo tipo. Esto obliga a tener en cuenta no sólo la generación de los nuevos contenedores para la importación, sino además la necesidad de exportar los contenedores que sean dominio de los nuevos.
 +
Entre los ejemplo adjuntos al documento se encuentra un proceso de importación que describe de forma esquemática los pasos recomendados anteriormente.
  
 
===Para la exportación (.exp)===
 
===Para la exportación (.exp)===

Revisión del 10:02 3 nov 2009

EgImportExport es una aplicación perteneciente al paquete de aplicaciones de egeasy. Su finalidad es permitir al administrador importar o exportar objetos a un centro concreto. Para ello, se utiliza la tecnología XML como estándar de intercambio de información, estructurando la información y permitiendo que dicho intercambio se pueda realizar entre diferentes plataformas.

Por tanto, la información de cada objeto que se importe o exporte estará estructurada en un fichero .xml cuyo nombre será el RRC del objeto, el DRC y nombre de su definición separados por arrobas (RRC@DRC@NAME).

Antes de entrar en más detalles, veamos primero cómo configurar los parámetros que va a necesitar la aplicación para ser ejecutada.

Configuración de parámetros

Para poder ejecutar egImportExport, es necesario que en la misma carpeta donde se encuentre su ejecutable exista un fichero llamado egImportExport.ini. En este fichero especificaremos los parámetros de entrada de la aplicación, que son los siguientes:

  • USER_NAME: usuario con el que se conectará la aplicación para acceder al centro sobre el que se va a realizar la importación o exportación. El usuario debe estar dado de alta en el centro y estar activo.
  • PASSWORD: palabra de paso asociada al usuario, si la tuviera.
  • CENTER: nombre del centro al que se va a conectar la aplicación.
  • DIR_CONFIGURATIONS: ruta donde se encuentran los ficheros de importación o exportación. En estos fichero se incluyen los parámetros de configuración de la importación o exportación.

Ejemplo:

EgIE001.jpg

Una vez tenemos configurado el fichero .ini, veamos cómo crear el fichero de configuración en función de la operación a ejecutar.

Ficheros de configuración

Para la importación (.imp)

Como ya hemos dicho, para realizar una de los dos operaciones, es necesario configurar el fichero asociado a la operación a ejecutar. En este caso, se trata de una importación.

El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión .imp (nombre.imp). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:

  • OBJECT_DIR: ruta donde se encuentran los objetos a importar, representados como ficheros .xml.
  • IMPORTED_DIR: ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.
  • DOCUMENT_DIR: ruta donde se incluyen los documentos que se quieran importar, si los hubiere.
  • MODE: modo de importación.

Veamos un ejemplo a continuación:

EgIE002.jpg

Como se puede ver en la imagen anterior, el parámetro MODE tiene asignado el modo ALL. Éste, es uno de los tres modos de importación que pueden ser asignados. Como se ve en el ejemplo, estos tres modos aparecen incluidos en una línea justo debajo del parámetro "MODE", ya que tienen que estar incluidos en el fichero de configuración.

Veamos a continuación las particularidades de cada modo:

  • FOUND: en este modo de importación, sólo se importarán aquellos objetos que ya se encuentren creados en el centro, limitándose a actualizar la información de éstos.
  • NOT_FOUND: en esta modalidad, se importarán sólo aquellos objetos que no sean encontrados en el centro, de forma que tendrán que ser creados.
  • ALL: esta modalidad es en realidad la unión de las dos anteriores. De manera que si el objeto que queremos importar ya está creado actualiza su información, y si no se encuentra, se crea.

Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.

Los directorios que hemos especificado en el fichero de configuración deben ser creados manualmente ya que si no están creados, la aplicación no los creará por sí sola.

Una vez creados los directorios, tendremos que almacenar en los directorios correspondientes aquellos ficheros .xml que queramos importar, así como los ficheros .doc que también se quieran importar.

La única restricción en cuanto a la forma de nombrar los archivos a importar, es la no repetir nunca nombre. Una recomendación es establecer alguna regla de nomenclatura que garantice la exclusividad de los mismos. Por ejemplo, nombrarlos mediante el tipo de contenedor y una enumeración siempre creciente. La importación de un contenedor cuyo archivo se encuentra en el historial, de las exportaciones e importaciones, implica la actualización del contenedor ya existente. Aunque la intención fuera la generar un objeto nuevo. Archivos a importar Para que se lleve a cabo la importación, las declaraciones de los componentes en XML han de coincidir siempre con los declarados en egEasy. Si la intención es la de importar información de otra plataforma, se recomienda la realización de una exportación previa del tipo de contenedor que se quiere generar. Obteniendo la adecuada declaración en XML. Cada contenedor a importar de un mismo tipo, diferirá sólo en los datos; nunca en la estructura. El dominio es otro punto a cuidar. Si los contenedores a importar tiene como dominio un objeto del sistema, sólo es necesario identificar el tipo y el componente; y la aplicación ubicará correctamente el contenedor. En cambio, si el dominio es otro contenedor, se requiere identificar un contenedor mediante un archivo XML; que permitan a la aplicación diferenciarlo entre todos los posible contenedores de un mismo tipo. Esto obliga a tener en cuenta no sólo la generación de los nuevos contenedores para la importación, sino además la necesidad de exportar los contenedores que sean dominio de los nuevos. Entre los ejemplo adjuntos al documento se encuentra un proceso de importación que describe de forma esquemática los pasos recomendados anteriormente.

Para la exportación (.exp)

<p>Para realizar una exportación de objetos, al igual que para la importación, es necesario incluir un fichero de configuración de la exportación, de extensión .exp, en el directorio especificado en el fichero .ini. Este fichero, incluirá los parámetros de configuración que determinarán el comportamiento de la exportación. Dichos parámetros son:

  • OBJECT_CLASS: nombre de la definición de aquellos objetos que se quieren exportar.
  • OUTPUT_DIR: directorio de destino de los objetos exportados.
  • DOCUMENT_DIR: directorio de destino de aquellos documentos que hayan sido exportados.
  • EXPORT_CASCADE: parámetro booleano que especifica si se activa la exportación en cascada; es decir, que todos aquellos objetos que estén incluidos o vinculados al objeto inicial serán también exportados. Para activarlo le asignaremos la letra "S" y para desactivarlo le asignaremos la letra "N".
  • MODE: al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.

Ejemplo:

EgIE002.jpg

Al realizar una exportación, es posible que nos interese realizar una exportación que afecte sólamente a los objetos que cumplan ciertas características. Para ello, seleccionaremos uno de los tres modos de exportación que explicamos a continuación:

  • NOT_EXPORTED: se exportan aquellos objetos que nunca han sido exportados.
  • MODIFIED: se exportan aquellos objetos que han sido modificados respecto a su última exportación
  • ALL: es la unión de los dos modos anteriores. En este modo, los objetos que no se exportarán serán aquellos que hayan sido exportados anteriormente y que desde entonces, no han sido modificados.

Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?

Para ello existe una tabla en la base de datos del centro, que se crea automáticamente al instalar el centro, donde se registran los objetos que han sido exportados y cuándo han sido exportados por última vez. Por tanto, cuando elegimos un modo de exportación concreto, utilizará esta tabla para saber si ha sido exportado el objeto (para el modo NOT_EXPORTED) o

Estructura de un objeto en fichero XML

Como ya sabemos, la tecnología utilizada por egImportExport para representar objetos y poder realizar el intercambio de información es XML. Es por ello que saber interpretar la información que incluye un fichero .xml es fundamental para poder realizar las operaciones de exportación o importación de objetos.

A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.

Formato del contenedor

La estructura base para representar un contenedor en XML es la siguiente:

<Container id="RRC" name="texto" typeName="texto">
   <Header>
      <Domain domain_filename="archivo.xml" typeName="texto" componentName="texto"/>
      <Created date="año:mes:día" user_id="texto"/>
      <Modified date="año:mes:día" user_id="texto"/></Header>
   <Components>
      ...
   <Components/>
</Container>

La marca "Container" contiene tres atributos cuya utilidad es identificar al objeto. El atributo id contendrá el RRC del objeto, el atributo name el nombre del objeto y el atributo typeName contendrá el nombre de la definición del contenedor. Si se utilizan prefijos en la definición del contenedor, tienen que ser incluidos en el typeName.

En la marca "Header" se muestra información relativa a propiedades del objeto como su dominio, su fecha de creación o su fecha de modificación. A su vez, existe una marca para cada una de estas propiedades.

En la etiqueta "Domain" se especificará el dominio del objeto utilizando tres atributos. El atributo domain_filename sólo se utilizará cuando el dominio del objeto que vamos a importar es otro objeto que también importaremos, de manera que tendremos que especificar su fichero .xml. Para el resto de los casos, incluida la exportación, este atributo estará vacío (""). En el atributo typeName se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo componentName.

Las marcas "Created" y "Modified" tienen dos atributos: date y user_id. Si queremos realizar una importación, estos atributos estarán vacíos, ya que se le asigna la fecha y usuario asociado a la importación. Para el caso de la exportación, los valores se tomarán del objeto exportado.

Por último, tenemos la marca "Components", donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.

Formato de los componentes

Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos name y typeName. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.

Campos

Texto, entero, real, lógico, memo, fecha y hora
<FieldString name="texto" typeName="texto">texto</FieldString>
<FieldInteger name="texto" typeName="texto">número</FieldInteger>
<FieldSingle name="texto" typeName="texto">número</FieldSingle>
<FieldBoolean name="texto" typeName="texto">[si|no]</FieldBoolean>
<FieldMemo name="texto" typeName="texto">texto</FieldMemo>
<FieldDate name="texto" typeName="texto">año:mes:día</FieldDate>
<FieldTime name="texto" typeName="texto">hora:minutos:segundo</FieldTime>
Moneda
<FieldCurrency name="texto" typeName="texto" currency="texto">número</FieldCurrency>

En el atributo currency se especifica la moneda a utilizar. Sus posibles valores son "euro" o "peseta".

Código
<FieldCode name="texto" typeName="texto" code="texto">texto</FieldCode>

El atributo code corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.

Firma
<FieldSignature name="texto" typeName="texto" date="año:mes:día" user_id="texto" user_drc="número" user_name="texto" position="texto"/>

La importación de una firma no es posible por su particularidad respecto a otros tipos de campos, aunque se permite su declaración en el fichero .xml, aunque realmente, ésta será ignorada.

En el atributo position se especifica el cargo de la persona que firma.

Timbre
<FieldStamp name="texto" typeName="texto" date="año:mes:día" user_id="número" user_drc="número" user_name="texto">texto</FieldStamp>

Comparte la particularidad del campo firma, ya que éste tampoco se puede importar. Al igual que el campo firma, se permite su declaración pero a la hora de importar, será ignorada.

Vínculo
<FieldReference name="texto" typeName="texto" target_filename="archivo.xml">texto</FieldReference>

Cuando realizamos una importación, el objeto vinculado se especifica en el atributo target_filename, que será un fichero .xml. y el vacío indica que no existe el vínculo. El valor de la declaración es la etiqueta del mismo y es informativo. El valor es ignorado en la importación del campo, pues es determinado por el sistema.