<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>https://wiki.egeasy.es/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Irodriguez</id>
		<title>Egeasy - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.egeasy.es/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Irodriguez"/>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php/Especial:Contribuciones/Irodriguez"/>
		<updated>2026-05-04T16:19:16Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.26.4</generator>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=Funciones_especiales&amp;diff=5775</id>
		<title>Funciones especiales</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=Funciones_especiales&amp;diff=5775"/>
				<updated>2011-05-09T11:56:40Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* &amp;lt;code&amp;gt;$DRC&amp;lt;/code&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
===&amp;lt;code&amp;gt;$Si&amp;lt;/code&amp;gt;===&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}, Sino: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Devuelve el resultado de la primera expresión si el resultado de la condición es verdadera, en caso contrario devuelve el resultado de la segunda expresión, si la hubiera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si(a&amp;gt;4, b, c*2)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si($NumeroFilas($Matriz([Tabla]))=0,c)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$Decision&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Decision'''(Expresión: {{T|expresión}}, Valor: {{T|expresión}}, Resultado: {{T|expresión}} {, Valor: {{T|expresión}}, Resultado: {{T|expresión}}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Decision'''(Expresión: {{T|expresión}}, {Valor: {{T|expresión}}, Resultado: {{T|expresión}},} PorDefecto: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Función que evalúa una expresión y si su resultado coincide con alguno de los valores de “Valor” devuelve su resultado asociado “Resultado”. En caso de no coincidir con ninguno y existir “PorDefecto” devuelve ese resultado. (Análogo al «Case», «Switch», etc.)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Decision([Sexo], {{STR|&amp;quot;Hombre&amp;quot;}}, {{STR|&amp;quot;V&amp;quot;}}, {{STR|&amp;quot;Mujer&amp;quot;}}, {{STR|&amp;quot;H&amp;quot;}})&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Decision([Isla], {{STR|&amp;quot;Lanzarote&amp;quot;}}, 35, {{STR|&amp;quot;Fuerteventura&amp;quot;}}, 35, {{STR|&amp;quot;Gran Canaria&amp;quot;}}, 35, 38) {{COM|//si es una de las islas de la provincia de las palmas devuelve 35, si no, devuelve 38.}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$EsTipo&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$EsTipo'''(C: {{RE|contenedor}}, Definición: {{T|texto}}): {{T|lógico}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Función que comprueba si un contenedor pasado por parámetro coincide con una definición específica, introducida también como parámetro de entrada. En caso de que sea cierto, se devuelve verdadero, o falso en contrario&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplo'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$EsTipo([&amp;amp;Dominio],{{STR|&amp;quot;[Fichero]&amp;quot;}}) {{COM|//devuelve verdadero si el contenedor actual es un &amp;quot;Fichero&amp;quot;.}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$Crear&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Crear'''(Ámbito: {{T|definición}}): {{RE|contenedor}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Indica la definición de colección, exportación, etc. donde se ubicará el contenedor a crear.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplo'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Crear([Expedientes de contratación].[Contenido])&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$VariableCentro&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$VariableCentro'''(Nombre: {{T|texto}}): {{T|texto}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Retorna el valor de una variable definida en el modelo de centro: &amp;quot;CenterVariables.dat&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$VariableCentro({{STR|&amp;quot;Ciudad&amp;quot;}}) {{COM|//devuelve &amp;quot;Las Palmas de Gran Canaria&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$VariableCentro({{STR|&amp;quot;Codigo postal&amp;quot;}}) {{COM|//devuelve &amp;quot;35001&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$DRC&amp;lt;/code&amp;gt;===&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$DRC'''(Nombre de la definición: {{T|texto}}): {{T|entero}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Devuelve el DRC de la definición que se introduzca como parámetro.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Se puede utilizar como parte de una sentencia SQL, como por ejemplo, en el atributo -{{AT|sentencia}} de un catálogo.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplo'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$DRC({{STR|&amp;quot;Expediente&amp;quot;}}) {{COM|//devuelve, por ejemplo, el entero 23532}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoría:ODL]]&lt;br /&gt;
[[Categoría:Funciones]]&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=Funciones_especiales&amp;diff=5774</id>
		<title>Funciones especiales</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=Funciones_especiales&amp;diff=5774"/>
				<updated>2011-05-09T11:56:34Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* &amp;lt;code&amp;gt;$DRC&amp;lt;/code&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
===&amp;lt;code&amp;gt;$Si&amp;lt;/code&amp;gt;===&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}, Sino: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Devuelve el resultado de la primera expresión si el resultado de la condición es verdadera, en caso contrario devuelve el resultado de la segunda expresión, si la hubiera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si(a&amp;gt;4, b, c*2)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si($NumeroFilas($Matriz([Tabla]))=0,c)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$Decision&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Decision'''(Expresión: {{T|expresión}}, Valor: {{T|expresión}}, Resultado: {{T|expresión}} {, Valor: {{T|expresión}}, Resultado: {{T|expresión}}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Decision'''(Expresión: {{T|expresión}}, {Valor: {{T|expresión}}, Resultado: {{T|expresión}},} PorDefecto: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Función que evalúa una expresión y si su resultado coincide con alguno de los valores de “Valor” devuelve su resultado asociado “Resultado”. En caso de no coincidir con ninguno y existir “PorDefecto” devuelve ese resultado. (Análogo al «Case», «Switch», etc.)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Decision([Sexo], {{STR|&amp;quot;Hombre&amp;quot;}}, {{STR|&amp;quot;V&amp;quot;}}, {{STR|&amp;quot;Mujer&amp;quot;}}, {{STR|&amp;quot;H&amp;quot;}})&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Decision([Isla], {{STR|&amp;quot;Lanzarote&amp;quot;}}, 35, {{STR|&amp;quot;Fuerteventura&amp;quot;}}, 35, {{STR|&amp;quot;Gran Canaria&amp;quot;}}, 35, 38) {{COM|//si es una de las islas de la provincia de las palmas devuelve 35, si no, devuelve 38.}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$EsTipo&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$EsTipo'''(C: {{RE|contenedor}}, Definición: {{T|texto}}): {{T|lógico}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Función que comprueba si un contenedor pasado por parámetro coincide con una definición específica, introducida también como parámetro de entrada. En caso de que sea cierto, se devuelve verdadero, o falso en contrario&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplo'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$EsTipo([&amp;amp;Dominio],{{STR|&amp;quot;[Fichero]&amp;quot;}}) {{COM|//devuelve verdadero si el contenedor actual es un &amp;quot;Fichero&amp;quot;.}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$Crear&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Crear'''(Ámbito: {{T|definición}}): {{RE|contenedor}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Indica la definición de colección, exportación, etc. donde se ubicará el contenedor a crear.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplo'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Crear([Expedientes de contratación].[Contenido])&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$VariableCentro&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$VariableCentro'''(Nombre: {{T|texto}}): {{T|texto}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Retorna el valor de una variable definida en el modelo de centro: &amp;quot;CenterVariables.dat&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$VariableCentro({{STR|&amp;quot;Ciudad&amp;quot;}}) {{COM|//devuelve &amp;quot;Las Palmas de Gran Canaria&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$VariableCentro({{STR|&amp;quot;Codigo postal&amp;quot;}}) {{COM|//devuelve &amp;quot;35001&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$DRC&amp;lt;/code&amp;gt;===&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$DRC'''(Nombre de la definición: {{T|texto}}): {{T|entero}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Devuelve el DRC de la definición que se introduzca como parámetro.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Se puede utilizar como parte de una sentencia SQL, como por ejemplo, en el atributo -{{AT|sentencia}} de un catálogo.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplo'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$DRC({{STR|&amp;quot;Expediente&amp;quot;}}) {{COM|//Devuelve, por ejemplo, el entero 23532}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoría:ODL]]&lt;br /&gt;
[[Categoría:Funciones]]&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=Funciones_especiales&amp;diff=5773</id>
		<title>Funciones especiales</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=Funciones_especiales&amp;diff=5773"/>
				<updated>2011-05-09T11:54:34Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* &amp;lt;code&amp;gt;$DRC&amp;lt;/code&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
===&amp;lt;code&amp;gt;$Si&amp;lt;/code&amp;gt;===&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}, Sino: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Devuelve el resultado de la primera expresión si el resultado de la condición es verdadera, en caso contrario devuelve el resultado de la segunda expresión, si la hubiera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si(a&amp;gt;4, b, c*2)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si($NumeroFilas($Matriz([Tabla]))=0,c)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$Decision&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Decision'''(Expresión: {{T|expresión}}, Valor: {{T|expresión}}, Resultado: {{T|expresión}} {, Valor: {{T|expresión}}, Resultado: {{T|expresión}}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Decision'''(Expresión: {{T|expresión}}, {Valor: {{T|expresión}}, Resultado: {{T|expresión}},} PorDefecto: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Función que evalúa una expresión y si su resultado coincide con alguno de los valores de “Valor” devuelve su resultado asociado “Resultado”. En caso de no coincidir con ninguno y existir “PorDefecto” devuelve ese resultado. (Análogo al «Case», «Switch», etc.)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Decision([Sexo], {{STR|&amp;quot;Hombre&amp;quot;}}, {{STR|&amp;quot;V&amp;quot;}}, {{STR|&amp;quot;Mujer&amp;quot;}}, {{STR|&amp;quot;H&amp;quot;}})&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Decision([Isla], {{STR|&amp;quot;Lanzarote&amp;quot;}}, 35, {{STR|&amp;quot;Fuerteventura&amp;quot;}}, 35, {{STR|&amp;quot;Gran Canaria&amp;quot;}}, 35, 38) {{COM|//si es una de las islas de la provincia de las palmas devuelve 35, si no, devuelve 38.}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$EsTipo&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$EsTipo'''(C: {{RE|contenedor}}, Definición: {{T|texto}}): {{T|lógico}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Función que comprueba si un contenedor pasado por parámetro coincide con una definición específica, introducida también como parámetro de entrada. En caso de que sea cierto, se devuelve verdadero, o falso en contrario&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplo'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$EsTipo([&amp;amp;Dominio],{{STR|&amp;quot;[Fichero]&amp;quot;}}) {{COM|//devuelve verdadero si el contenedor actual es un &amp;quot;Fichero&amp;quot;.}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$Crear&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Crear'''(Ámbito: {{T|definición}}): {{RE|contenedor}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Indica la definición de colección, exportación, etc. donde se ubicará el contenedor a crear.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplo'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Crear([Expedientes de contratación].[Contenido])&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$VariableCentro&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$VariableCentro'''(Nombre: {{T|texto}}): {{T|texto}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Retorna el valor de una variable definida en el modelo de centro: &amp;quot;CenterVariables.dat&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$VariableCentro({{STR|&amp;quot;Ciudad&amp;quot;}}) {{COM|//devuelve &amp;quot;Las Palmas de Gran Canaria&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$VariableCentro({{STR|&amp;quot;Codigo postal&amp;quot;}}) {{COM|//devuelve &amp;quot;35001&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$DRC&amp;lt;/code&amp;gt;===&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$DRC'''(Nombre de la definición: {{T|texto}}): {{T|entero}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Devuelve el DRC de la definición que se introduzca como parámetro.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Se puede utilizar como parte de una sentencia SQL, como por ejemplo, en el atributo -{{AT|sentencia}} de un catálogo.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$DRC({{STR|&amp;quot;Expediente&amp;quot;}})&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoría:ODL]]&lt;br /&gt;
[[Categoría:Funciones]]&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=Funciones_especiales&amp;diff=5772</id>
		<title>Funciones especiales</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=Funciones_especiales&amp;diff=5772"/>
				<updated>2011-05-09T11:51:27Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* &amp;lt;code&amp;gt;$DRC&amp;lt;/code&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
===&amp;lt;code&amp;gt;$Si&amp;lt;/code&amp;gt;===&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}, Sino: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Devuelve el resultado de la primera expresión si el resultado de la condición es verdadera, en caso contrario devuelve el resultado de la segunda expresión, si la hubiera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si(a&amp;gt;4, b, c*2)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si($NumeroFilas($Matriz([Tabla]))=0,c)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$Decision&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Decision'''(Expresión: {{T|expresión}}, Valor: {{T|expresión}}, Resultado: {{T|expresión}} {, Valor: {{T|expresión}}, Resultado: {{T|expresión}}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Decision'''(Expresión: {{T|expresión}}, {Valor: {{T|expresión}}, Resultado: {{T|expresión}},} PorDefecto: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Función que evalúa una expresión y si su resultado coincide con alguno de los valores de “Valor” devuelve su resultado asociado “Resultado”. En caso de no coincidir con ninguno y existir “PorDefecto” devuelve ese resultado. (Análogo al «Case», «Switch», etc.)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Decision([Sexo], {{STR|&amp;quot;Hombre&amp;quot;}}, {{STR|&amp;quot;V&amp;quot;}}, {{STR|&amp;quot;Mujer&amp;quot;}}, {{STR|&amp;quot;H&amp;quot;}})&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Decision([Isla], {{STR|&amp;quot;Lanzarote&amp;quot;}}, 35, {{STR|&amp;quot;Fuerteventura&amp;quot;}}, 35, {{STR|&amp;quot;Gran Canaria&amp;quot;}}, 35, 38) {{COM|//si es una de las islas de la provincia de las palmas devuelve 35, si no, devuelve 38.}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$EsTipo&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$EsTipo'''(C: {{RE|contenedor}}, Definición: {{T|texto}}): {{T|lógico}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Función que comprueba si un contenedor pasado por parámetro coincide con una definición específica, introducida también como parámetro de entrada. En caso de que sea cierto, se devuelve verdadero, o falso en contrario&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplo'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$EsTipo([&amp;amp;Dominio],{{STR|&amp;quot;[Fichero]&amp;quot;}}) {{COM|//devuelve verdadero si el contenedor actual es un &amp;quot;Fichero&amp;quot;.}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$Crear&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Crear'''(Ámbito: {{T|definición}}): {{RE|contenedor}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Indica la definición de colección, exportación, etc. donde se ubicará el contenedor a crear.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplo'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Crear([Expedientes de contratación].[Contenido])&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$VariableCentro&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$VariableCentro'''(Nombre: {{T|texto}}): {{T|texto}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Retorna el valor de una variable definida en el modelo de centro: &amp;quot;CenterVariables.dat&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$VariableCentro({{STR|&amp;quot;Ciudad&amp;quot;}}) {{COM|//devuelve &amp;quot;Las Palmas de Gran Canaria&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$VariableCentro({{STR|&amp;quot;Codigo postal&amp;quot;}}) {{COM|//devuelve &amp;quot;35001&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$DRC&amp;lt;/code&amp;gt;===&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$DRC'''(Nombre de la definición: {{T|texto}}): {{T|entero}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Devuelve el DRC de la definición que se introduzca como parámetro.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$DRC({{STR|&amp;quot;Expediente&amp;quot;}})&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoría:ODL]]&lt;br /&gt;
[[Categoría:Funciones]]&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=Funciones_especiales&amp;diff=5771</id>
		<title>Funciones especiales</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=Funciones_especiales&amp;diff=5771"/>
				<updated>2011-05-09T11:50:38Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* &amp;lt;code&amp;gt;$DRC&amp;lt;/code&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
===&amp;lt;code&amp;gt;$Si&amp;lt;/code&amp;gt;===&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}, Sino: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Devuelve el resultado de la primera expresión si el resultado de la condición es verdadera, en caso contrario devuelve el resultado de la segunda expresión, si la hubiera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si(a&amp;gt;4, b, c*2)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si($NumeroFilas($Matriz([Tabla]))=0,c)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$Decision&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Decision'''(Expresión: {{T|expresión}}, Valor: {{T|expresión}}, Resultado: {{T|expresión}} {, Valor: {{T|expresión}}, Resultado: {{T|expresión}}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Decision'''(Expresión: {{T|expresión}}, {Valor: {{T|expresión}}, Resultado: {{T|expresión}},} PorDefecto: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Función que evalúa una expresión y si su resultado coincide con alguno de los valores de “Valor” devuelve su resultado asociado “Resultado”. En caso de no coincidir con ninguno y existir “PorDefecto” devuelve ese resultado. (Análogo al «Case», «Switch», etc.)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Decision([Sexo], {{STR|&amp;quot;Hombre&amp;quot;}}, {{STR|&amp;quot;V&amp;quot;}}, {{STR|&amp;quot;Mujer&amp;quot;}}, {{STR|&amp;quot;H&amp;quot;}})&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Decision([Isla], {{STR|&amp;quot;Lanzarote&amp;quot;}}, 35, {{STR|&amp;quot;Fuerteventura&amp;quot;}}, 35, {{STR|&amp;quot;Gran Canaria&amp;quot;}}, 35, 38) {{COM|//si es una de las islas de la provincia de las palmas devuelve 35, si no, devuelve 38.}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$EsTipo&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$EsTipo'''(C: {{RE|contenedor}}, Definición: {{T|texto}}): {{T|lógico}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Función que comprueba si un contenedor pasado por parámetro coincide con una definición específica, introducida también como parámetro de entrada. En caso de que sea cierto, se devuelve verdadero, o falso en contrario&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplo'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$EsTipo([&amp;amp;Dominio],{{STR|&amp;quot;[Fichero]&amp;quot;}}) {{COM|//devuelve verdadero si el contenedor actual es un &amp;quot;Fichero&amp;quot;.}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$Crear&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Crear'''(Ámbito: {{T|definición}}): {{RE|contenedor}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Indica la definición de colección, exportación, etc. donde se ubicará el contenedor a crear.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplo'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Crear([Expedientes de contratación].[Contenido])&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$VariableCentro&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$VariableCentro'''(Nombre: {{T|texto}}): {{T|texto}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Retorna el valor de una variable definida en el modelo de centro: &amp;quot;CenterVariables.dat&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$VariableCentro({{STR|&amp;quot;Ciudad&amp;quot;}}) {{COM|//devuelve &amp;quot;Las Palmas de Gran Canaria&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$VariableCentro({{STR|&amp;quot;Codigo postal&amp;quot;}}) {{COM|//devuelve &amp;quot;35001&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$DRC&amp;lt;/code&amp;gt;===&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$DRC'''(Nombre de la definición: {{T|texto}}): {{T|entero}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Devuelve el DRC de la definición que se introduzca como parámetro.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$DRC(&amp;quot;Expediente&amp;quot;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si($NumeroFilas($Matriz([Tabla]))=0,c)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoría:ODL]]&lt;br /&gt;
[[Categoría:Funciones]]&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=Funciones_especiales&amp;diff=5770</id>
		<title>Funciones especiales</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=Funciones_especiales&amp;diff=5770"/>
				<updated>2011-05-09T11:49:43Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* &amp;lt;code&amp;gt;$DRC&amp;lt;/code&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
===&amp;lt;code&amp;gt;$Si&amp;lt;/code&amp;gt;===&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}, Sino: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Devuelve el resultado de la primera expresión si el resultado de la condición es verdadera, en caso contrario devuelve el resultado de la segunda expresión, si la hubiera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si(a&amp;gt;4, b, c*2)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si($NumeroFilas($Matriz([Tabla]))=0,c)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$Decision&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Decision'''(Expresión: {{T|expresión}}, Valor: {{T|expresión}}, Resultado: {{T|expresión}} {, Valor: {{T|expresión}}, Resultado: {{T|expresión}}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Decision'''(Expresión: {{T|expresión}}, {Valor: {{T|expresión}}, Resultado: {{T|expresión}},} PorDefecto: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Función que evalúa una expresión y si su resultado coincide con alguno de los valores de “Valor” devuelve su resultado asociado “Resultado”. En caso de no coincidir con ninguno y existir “PorDefecto” devuelve ese resultado. (Análogo al «Case», «Switch», etc.)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Decision([Sexo], {{STR|&amp;quot;Hombre&amp;quot;}}, {{STR|&amp;quot;V&amp;quot;}}, {{STR|&amp;quot;Mujer&amp;quot;}}, {{STR|&amp;quot;H&amp;quot;}})&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Decision([Isla], {{STR|&amp;quot;Lanzarote&amp;quot;}}, 35, {{STR|&amp;quot;Fuerteventura&amp;quot;}}, 35, {{STR|&amp;quot;Gran Canaria&amp;quot;}}, 35, 38) {{COM|//si es una de las islas de la provincia de las palmas devuelve 35, si no, devuelve 38.}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$EsTipo&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$EsTipo'''(C: {{RE|contenedor}}, Definición: {{T|texto}}): {{T|lógico}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Función que comprueba si un contenedor pasado por parámetro coincide con una definición específica, introducida también como parámetro de entrada. En caso de que sea cierto, se devuelve verdadero, o falso en contrario&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplo'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$EsTipo([&amp;amp;Dominio],{{STR|&amp;quot;[Fichero]&amp;quot;}}) {{COM|//devuelve verdadero si el contenedor actual es un &amp;quot;Fichero&amp;quot;.}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$Crear&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Crear'''(Ámbito: {{T|definición}}): {{RE|contenedor}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Indica la definición de colección, exportación, etc. donde se ubicará el contenedor a crear.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplo'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Crear([Expedientes de contratación].[Contenido])&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$VariableCentro&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$VariableCentro'''(Nombre: {{T|texto}}): {{T|texto}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Retorna el valor de una variable definida en el modelo de centro: &amp;quot;CenterVariables.dat&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$VariableCentro({{STR|&amp;quot;Ciudad&amp;quot;}}) {{COM|//devuelve &amp;quot;Las Palmas de Gran Canaria&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$VariableCentro({{STR|&amp;quot;Codigo postal&amp;quot;}}) {{COM|//devuelve &amp;quot;35001&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$DRC&amp;lt;/code&amp;gt;===&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$DRC'''(Nombre de la definición: {{T|texto}}): {{T|entero}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Devuelve el DRC de la definición que se introduzca como parámetro.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si(a&amp;gt;4, b, c*2)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si($NumeroFilas($Matriz([Tabla]))=0,c)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoría:ODL]]&lt;br /&gt;
[[Categoría:Funciones]]&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=Funciones_especiales&amp;diff=5769</id>
		<title>Funciones especiales</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=Funciones_especiales&amp;diff=5769"/>
				<updated>2011-05-09T11:49:24Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* &amp;lt;code&amp;gt;$DRC&amp;lt;/code&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
===&amp;lt;code&amp;gt;$Si&amp;lt;/code&amp;gt;===&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}, Sino: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Devuelve el resultado de la primera expresión si el resultado de la condición es verdadera, en caso contrario devuelve el resultado de la segunda expresión, si la hubiera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si(a&amp;gt;4, b, c*2)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si($NumeroFilas($Matriz([Tabla]))=0,c)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$Decision&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Decision'''(Expresión: {{T|expresión}}, Valor: {{T|expresión}}, Resultado: {{T|expresión}} {, Valor: {{T|expresión}}, Resultado: {{T|expresión}}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Decision'''(Expresión: {{T|expresión}}, {Valor: {{T|expresión}}, Resultado: {{T|expresión}},} PorDefecto: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Función que evalúa una expresión y si su resultado coincide con alguno de los valores de “Valor” devuelve su resultado asociado “Resultado”. En caso de no coincidir con ninguno y existir “PorDefecto” devuelve ese resultado. (Análogo al «Case», «Switch», etc.)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Decision([Sexo], {{STR|&amp;quot;Hombre&amp;quot;}}, {{STR|&amp;quot;V&amp;quot;}}, {{STR|&amp;quot;Mujer&amp;quot;}}, {{STR|&amp;quot;H&amp;quot;}})&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Decision([Isla], {{STR|&amp;quot;Lanzarote&amp;quot;}}, 35, {{STR|&amp;quot;Fuerteventura&amp;quot;}}, 35, {{STR|&amp;quot;Gran Canaria&amp;quot;}}, 35, 38) {{COM|//si es una de las islas de la provincia de las palmas devuelve 35, si no, devuelve 38.}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$EsTipo&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$EsTipo'''(C: {{RE|contenedor}}, Definición: {{T|texto}}): {{T|lógico}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Función que comprueba si un contenedor pasado por parámetro coincide con una definición específica, introducida también como parámetro de entrada. En caso de que sea cierto, se devuelve verdadero, o falso en contrario&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplo'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$EsTipo([&amp;amp;Dominio],{{STR|&amp;quot;[Fichero]&amp;quot;}}) {{COM|//devuelve verdadero si el contenedor actual es un &amp;quot;Fichero&amp;quot;.}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$Crear&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Crear'''(Ámbito: {{T|definición}}): {{RE|contenedor}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Indica la definición de colección, exportación, etc. donde se ubicará el contenedor a crear.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplo'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Crear([Expedientes de contratación].[Contenido])&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$VariableCentro&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$VariableCentro'''(Nombre: {{T|texto}}): {{T|texto}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Retorna el valor de una variable definida en el modelo de centro: &amp;quot;CenterVariables.dat&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$VariableCentro({{STR|&amp;quot;Ciudad&amp;quot;}}) {{COM|//devuelve &amp;quot;Las Palmas de Gran Canaria&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$VariableCentro({{STR|&amp;quot;Codigo postal&amp;quot;}}) {{COM|//devuelve &amp;quot;35001&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$DRC&amp;lt;/code&amp;gt;===&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$DRC'''(Nombre de la definición: {{T|texto}}): {{T|entero}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Devuelve el resultado de la primera expresión si el resultado de la condición es verdadera, en caso contrario devuelve el resultado de la segunda expresión, si la hubiera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si(a&amp;gt;4, b, c*2)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si($NumeroFilas($Matriz([Tabla]))=0,c)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoría:ODL]]&lt;br /&gt;
[[Categoría:Funciones]]&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=Funciones_especiales&amp;diff=5768</id>
		<title>Funciones especiales</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=Funciones_especiales&amp;diff=5768"/>
				<updated>2011-05-09T11:49:00Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* &amp;lt;code&amp;gt;$DRC&amp;lt;/code&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
===&amp;lt;code&amp;gt;$Si&amp;lt;/code&amp;gt;===&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}, Sino: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Devuelve el resultado de la primera expresión si el resultado de la condición es verdadera, en caso contrario devuelve el resultado de la segunda expresión, si la hubiera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si(a&amp;gt;4, b, c*2)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si($NumeroFilas($Matriz([Tabla]))=0,c)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$Decision&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Decision'''(Expresión: {{T|expresión}}, Valor: {{T|expresión}}, Resultado: {{T|expresión}} {, Valor: {{T|expresión}}, Resultado: {{T|expresión}}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Decision'''(Expresión: {{T|expresión}}, {Valor: {{T|expresión}}, Resultado: {{T|expresión}},} PorDefecto: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Función que evalúa una expresión y si su resultado coincide con alguno de los valores de “Valor” devuelve su resultado asociado “Resultado”. En caso de no coincidir con ninguno y existir “PorDefecto” devuelve ese resultado. (Análogo al «Case», «Switch», etc.)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Decision([Sexo], {{STR|&amp;quot;Hombre&amp;quot;}}, {{STR|&amp;quot;V&amp;quot;}}, {{STR|&amp;quot;Mujer&amp;quot;}}, {{STR|&amp;quot;H&amp;quot;}})&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Decision([Isla], {{STR|&amp;quot;Lanzarote&amp;quot;}}, 35, {{STR|&amp;quot;Fuerteventura&amp;quot;}}, 35, {{STR|&amp;quot;Gran Canaria&amp;quot;}}, 35, 38) {{COM|//si es una de las islas de la provincia de las palmas devuelve 35, si no, devuelve 38.}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$EsTipo&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$EsTipo'''(C: {{RE|contenedor}}, Definición: {{T|texto}}): {{T|lógico}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Función que comprueba si un contenedor pasado por parámetro coincide con una definición específica, introducida también como parámetro de entrada. En caso de que sea cierto, se devuelve verdadero, o falso en contrario&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplo'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$EsTipo([&amp;amp;Dominio],{{STR|&amp;quot;[Fichero]&amp;quot;}}) {{COM|//devuelve verdadero si el contenedor actual es un &amp;quot;Fichero&amp;quot;.}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$Crear&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Crear'''(Ámbito: {{T|definición}}): {{RE|contenedor}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Indica la definición de colección, exportación, etc. donde se ubicará el contenedor a crear.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplo'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Crear([Expedientes de contratación].[Contenido])&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$VariableCentro&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$VariableCentro'''(Nombre: {{T|texto}}): {{T|texto}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Retorna el valor de una variable definida en el modelo de centro: &amp;quot;CenterVariables.dat&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$VariableCentro({{STR|&amp;quot;Ciudad&amp;quot;}}) {{COM|//devuelve &amp;quot;Las Palmas de Gran Canaria&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$VariableCentro({{STR|&amp;quot;Codigo postal&amp;quot;}}) {{COM|//devuelve &amp;quot;35001&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$DRC&amp;lt;/code&amp;gt;===&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$DRC'''(Nombre de la definición: {{T|texto}}): {{T|entero}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Devuelve el resultado de la primera expresión si el resultado de la condición es verdadera, en caso contrario devuelve el resultado de la segunda expresión, si la hubiera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si(a&amp;gt;4, b, c*2)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si($NumeroFilas($Matriz([Tabla]))=0,c)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoría:ODL]]&lt;br /&gt;
[[Categoría:Funciones]]&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=Funciones_especiales&amp;diff=5767</id>
		<title>Funciones especiales</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=Funciones_especiales&amp;diff=5767"/>
				<updated>2011-05-09T11:47:53Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* &amp;lt;code&amp;gt;$DRC&amp;lt;/code&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
===&amp;lt;code&amp;gt;$Si&amp;lt;/code&amp;gt;===&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}, Sino: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Devuelve el resultado de la primera expresión si el resultado de la condición es verdadera, en caso contrario devuelve el resultado de la segunda expresión, si la hubiera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si(a&amp;gt;4, b, c*2)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si($NumeroFilas($Matriz([Tabla]))=0,c)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$Decision&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Decision'''(Expresión: {{T|expresión}}, Valor: {{T|expresión}}, Resultado: {{T|expresión}} {, Valor: {{T|expresión}}, Resultado: {{T|expresión}}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Decision'''(Expresión: {{T|expresión}}, {Valor: {{T|expresión}}, Resultado: {{T|expresión}},} PorDefecto: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Función que evalúa una expresión y si su resultado coincide con alguno de los valores de “Valor” devuelve su resultado asociado “Resultado”. En caso de no coincidir con ninguno y existir “PorDefecto” devuelve ese resultado. (Análogo al «Case», «Switch», etc.)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Decision([Sexo], {{STR|&amp;quot;Hombre&amp;quot;}}, {{STR|&amp;quot;V&amp;quot;}}, {{STR|&amp;quot;Mujer&amp;quot;}}, {{STR|&amp;quot;H&amp;quot;}})&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Decision([Isla], {{STR|&amp;quot;Lanzarote&amp;quot;}}, 35, {{STR|&amp;quot;Fuerteventura&amp;quot;}}, 35, {{STR|&amp;quot;Gran Canaria&amp;quot;}}, 35, 38) {{COM|//si es una de las islas de la provincia de las palmas devuelve 35, si no, devuelve 38.}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$EsTipo&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$EsTipo'''(C: {{RE|contenedor}}, Definición: {{T|texto}}): {{T|lógico}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Función que comprueba si un contenedor pasado por parámetro coincide con una definición específica, introducida también como parámetro de entrada. En caso de que sea cierto, se devuelve verdadero, o falso en contrario&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplo'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$EsTipo([&amp;amp;Dominio],{{STR|&amp;quot;[Fichero]&amp;quot;}}) {{COM|//devuelve verdadero si el contenedor actual es un &amp;quot;Fichero&amp;quot;.}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$Crear&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Crear'''(Ámbito: {{T|definición}}): {{RE|contenedor}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Indica la definición de colección, exportación, etc. donde se ubicará el contenedor a crear.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplo'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Crear([Expedientes de contratación].[Contenido])&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$VariableCentro&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$VariableCentro'''(Nombre: {{T|texto}}): {{T|texto}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Retorna el valor de una variable definida en el modelo de centro: &amp;quot;CenterVariables.dat&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$VariableCentro({{STR|&amp;quot;Ciudad&amp;quot;}}) {{COM|//devuelve &amp;quot;Las Palmas de Gran Canaria&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$VariableCentro({{STR|&amp;quot;Codigo postal&amp;quot;}}) {{COM|//devuelve &amp;quot;35001&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$DRC&amp;lt;/code&amp;gt;===&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$DRC'''(Nombre de la definición: {{T|texto}}, Si: {{T|expresión}}, Sino: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Devuelve el resultado de la primera expresión si el resultado de la condición es verdadera, en caso contrario devuelve el resultado de la segunda expresión, si la hubiera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si(a&amp;gt;4, b, c*2)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si($NumeroFilas($Matriz([Tabla]))=0,c)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoría:ODL]]&lt;br /&gt;
[[Categoría:Funciones]]&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=Funciones_especiales&amp;diff=5766</id>
		<title>Funciones especiales</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=Funciones_especiales&amp;diff=5766"/>
				<updated>2011-05-09T11:43:56Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
===&amp;lt;code&amp;gt;$Si&amp;lt;/code&amp;gt;===&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}, Sino: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Devuelve el resultado de la primera expresión si el resultado de la condición es verdadera, en caso contrario devuelve el resultado de la segunda expresión, si la hubiera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si(a&amp;gt;4, b, c*2)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si($NumeroFilas($Matriz([Tabla]))=0,c)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$Decision&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Decision'''(Expresión: {{T|expresión}}, Valor: {{T|expresión}}, Resultado: {{T|expresión}} {, Valor: {{T|expresión}}, Resultado: {{T|expresión}}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Decision'''(Expresión: {{T|expresión}}, {Valor: {{T|expresión}}, Resultado: {{T|expresión}},} PorDefecto: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Función que evalúa una expresión y si su resultado coincide con alguno de los valores de “Valor” devuelve su resultado asociado “Resultado”. En caso de no coincidir con ninguno y existir “PorDefecto” devuelve ese resultado. (Análogo al «Case», «Switch», etc.)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Decision([Sexo], {{STR|&amp;quot;Hombre&amp;quot;}}, {{STR|&amp;quot;V&amp;quot;}}, {{STR|&amp;quot;Mujer&amp;quot;}}, {{STR|&amp;quot;H&amp;quot;}})&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Decision([Isla], {{STR|&amp;quot;Lanzarote&amp;quot;}}, 35, {{STR|&amp;quot;Fuerteventura&amp;quot;}}, 35, {{STR|&amp;quot;Gran Canaria&amp;quot;}}, 35, 38) {{COM|//si es una de las islas de la provincia de las palmas devuelve 35, si no, devuelve 38.}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$EsTipo&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$EsTipo'''(C: {{RE|contenedor}}, Definición: {{T|texto}}): {{T|lógico}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Función que comprueba si un contenedor pasado por parámetro coincide con una definición específica, introducida también como parámetro de entrada. En caso de que sea cierto, se devuelve verdadero, o falso en contrario&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplo'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$EsTipo([&amp;amp;Dominio],{{STR|&amp;quot;[Fichero]&amp;quot;}}) {{COM|//devuelve verdadero si el contenedor actual es un &amp;quot;Fichero&amp;quot;.}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$Crear&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$Crear'''(Ámbito: {{T|definición}}): {{RE|contenedor}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Indica la definición de colección, exportación, etc. donde se ubicará el contenedor a crear.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplo'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Crear([Expedientes de contratación].[Contenido])&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$VariableCentro&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$VariableCentro'''(Nombre: {{T|texto}}): {{T|texto}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Retorna el valor de una variable definida en el modelo de centro: &amp;quot;CenterVariables.dat&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$VariableCentro({{STR|&amp;quot;Ciudad&amp;quot;}}) {{COM|//devuelve &amp;quot;Las Palmas de Gran Canaria&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$VariableCentro({{STR|&amp;quot;Codigo postal&amp;quot;}}) {{COM|//devuelve &amp;quot;35001&amp;quot;}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;code&amp;gt;$DRC&amp;lt;/code&amp;gt;===&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 2px solid #993365; background: #FFFFFF; margin:1em 1ex 1ex 1ex; padding: 1em; text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;'''$DRC'''(Condición: {{T|lógico}}, Si: {{T|expresión}}, Sino: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;'''$Si'''(Condición: {{T|lógico}}, Si: {{T|expresión}}): {{T|expresión}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Descripción'''&amp;lt;p&amp;gt;Devuelve el resultado de la primera expresión si el resultado de la condición es verdadera, en caso contrario devuelve el resultado de la segunda expresión, si la hubiera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Ejemplos'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si(a&amp;gt;4, b, c*2)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border: 1px dashed #2F6FAB; background: #FFFFFF; margin:1em 15ex 5ex 15ex; padding: 1em; text-align:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;background: #FFFFFF&amp;quot;&amp;gt;$Si($NumeroFilas($Matriz([Tabla]))=0,c)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoría:ODL]]&lt;br /&gt;
[[Categoría:Funciones]]&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=Funciones_de_librer%C3%ADa&amp;diff=5765</id>
		<title>Funciones de librería</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=Funciones_de_librer%C3%ADa&amp;diff=5765"/>
				<updated>2011-05-09T11:42:40Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Funciones especiales */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
====[[Conversión de tipos]]====&lt;br /&gt;
Funciones que transforman el resultado de una expresión a un tipo de dato específico.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;[[Conversión de tipos#$Entero|$Entero]] - [[Conversión de tipos#$Fecha|$Fecha]] - [[Conversión de tipos#$Logico|$Logico]] - [[Conversión de tipos#$Real|$Real]] - [[Conversión de tipos#$Texto|$Texto]]&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[[Indicadores de tipo]]====&lt;br /&gt;
Funciones que indican el tipo de una expresión. La utilidad de estas funciones radica en devolver el tipo de expresiones que no son evaluadas, como pueden ser aquellas en las que se accede al dominio de algún componente o recurso.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;[[Indicadores de tipo#$Coleccion|$Coleccion]] - [[Indicadores de tipo#$Lista|$Lista]] - [[Indicadores de tipo#$Tabla|$Tabla]] - [[Indicadores de tipo#$Vinculo|$Vinculo]]&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[[Tratamiento de textos]]====&lt;br /&gt;
&amp;lt;p&amp;gt;Funciones que nos permitirán realizar operaciones con datos de tipo texto.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;[[Tratamiento de textos#$CopiarTexto|$CopiarTexto]] - [[Tratamiento de textos#$LongitudTexto|$LongitudTexto]] - [[Tratamiento de textos#$Texto|$Texto]]&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[[Tratamiento de números]]====&lt;br /&gt;
&amp;lt;p&amp;gt;Compendio de funciones que permiten tratar datos numéricos, tanto enteros como reales. Se podrá obtener la parte decimal o entera de un real, saber si un número es par o impar, etc.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;[[Tratamiento de números#$Entero|$Entero]] - [[Tratamiento de números#$EsPar|$EsPar]] - [[Tratamiento de números#$Max|$Max]] - [[Tratamiento de números#$Min|$Min]] - [[Tratamiento de números#$ParteDecimal|$ParteDecimal]] - [[Tratamiento de números#$ParteEntera|$ParteEntera]] - [[Tratamiento de números#$Real|$Real]] - [[Tratamiento de números#$Redondeo|$Redondeo]]&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[[Tratamiento de horas y fechas]]====&lt;br /&gt;
&amp;lt;p&amp;gt;Es muy habitual trabajar con fechas a la hora de programar un sistema de información en ODL. Por ello, se han creado numerosas funciones que nos permitirán manejar el tipo de dato &amp;quot;fecha&amp;quot;. Por ejemplo, podremos obtener datos concretos como el día, mes o año, comparar dos fechas o calcular una fecha a partir de otra, entre otras.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;[[Tratamiento de horas y fechas#$Año|$Año]] - [[Tratamiento de horas y fechas#$CalculaFecha|$CalculaFecha]] - [[Tratamiento de horas y fechas#$Dia|$Dia]] - [[Tratamiento de horas y fechas#$DiferenciaDias|$DiferenciaDias]] - [[Tratamiento de horas y fechas#$DiferenciaFechas|$DiferenciaFechas]] - [[Tratamiento de horas y fechas#$Fecha|$Fecha]] - [[Tratamiento de horas y fechas#$FormatoFecha|$FormatoFecha]] - [[Tratamiento de horas y fechas#$Hoy|$Hoy]] - [[Tratamiento de horas y fechas#$Mes|$Mes]]&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[[Tratamiento de moneda]]====&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;[[Tratamiento de moneda#$Cifra|$Cifra]]&amp;lt;/code&amp;gt; - &amp;lt;code&amp;gt;[[Tratamiento de moneda#$Moneda|$Moneda]]&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[[Manejo de listas de comprobación]]====&lt;br /&gt;
&amp;lt;p&amp;gt;Es posible que en el desarrollo de nuestro sistema de información en ODL nos interese realizar ciertas operaciones con las listas de comprobación. Una operación frecuente es invertir la selección de las filas. Accede al siguiente artículo para conocer, por ejemplo, esta función de uso muy común.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;[[Manejo de listas de comprobación#$InvertirSeleccion|$InvertirSeleccion]] - [[Manejo de listas de comprobación#$Lista|$Lista]]&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[[Creación de matrices]]====&lt;br /&gt;
&amp;lt;p&amp;gt;Crea matrices a partir de otros componentes o recursos de ODL. Además, se podrán crear matrices a partir de los resultados obtenidos en una petición a la base de datos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;[[Creación de matrices#$Matriz(texto)|$Matriz(texto)]] - [[Creación de matrices#$Matriz(componente)|$Matriz(componente)]] - [[Creación de matrices#$Matriz(enumerado,exportación)|$Matriz(enumerado,exportación)]] - [[Creación de matrices#$MatrizSQL|$MatrizSQL]]&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[[Cálculo con matrices]]====&lt;br /&gt;
&amp;lt;p&amp;gt;Conjunto de funciones para realizar diversos cálculos sobre matrices. Sumar columnas, calcular medias, buscar un elemento concreto, buscar el valor máximo o mínimo de una columna, etc.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;[[Cálculo con matrices#$Elemento|$Elemento]] - [[Cálculo con matrices#$Max|$Max]] - [[Cálculo con matrices#$Media|$Media]] - [[Cálculo con matrices#$Min|$Min]] - [[Cálculo con matrices#$NumeroColumnas|$NumeroColumnas]] - [[Cálculo con matrices#$NumeroFilas|$NumeroFilas]] - [[Cálculo con matrices#$Suma|$Suma]]&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[[Manejo de matrices]]====&lt;br /&gt;
&amp;lt;p&amp;gt;En el siguiente artículo se muestran varias funciones que permiten realizar diversas operaciones con matrices. Por ejemplo, filtrar una matriz con un cierto valor, ordenar una matriz, renombrar columnas, etcétera...&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;[[Manejo de matrices#$AgruparSuma|$AgruparSuma]] - [[Manejo de matrices#$Columnas|$Columnas]] - [[Manejo de matrices#$ConcatenarColumna|$ConcatenarColumna]] - [[Manejo de matrices#$EliminarFilasRepetidas|$EliminarFilasRepetidas]] - [[Manejo de matrices#$Filtrar|$Filtrar]] - [[Manejo de matrices#$MatrizFila|$MatrizFila]] - [[Manejo de matrices#$Ordenar|$Ordenar]] - [[Manejo de matrices#$RenombrarColumnas|$RenombrarColumnas]]&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[[Manejo de colecciones]]====&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo facilitamos las funciones que nos permitirán seleccionar un objeto o varios de ellos de una colección concreta, cumpliendo con una definición determinada.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;[[Manejo de colecciones#$SeleccionarObjetoPorDefinicion|$SeleccionarObjetoPorDefinicion]] - [[Manejo de colecciones#$SeleccionarObjetosPorDefinicion|$SeleccionarObjetosPorDefinicion]]&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[[Funciones especiales]]====&lt;br /&gt;
&amp;lt;p&amp;gt;Conjunto de funciones que entre sí no tienen mucho en común, o que no actúan sobre un componente o recurso concreto. No por ello carecen de la misma importancia que las demás. Te recomendamos que accedas, quizás la función que buscas se encuentre en este artículo.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;[[Funciones especiales#$Crear|$Crear]] - [[Funciones especiales#$Decision|$Decision]] - [[Funciones especiales#$DRC|$DRC]] - [[Funciones especiales#$EsTipo|$EsTipo]] - [[Funciones especiales#$Si|$Si]] - [[Funciones especiales#$VariableCentro|$VariableCentro]]&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[[Ejecución de sentencias SQL]]====&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo se muestran dos funciones que nos permitirán obtener, o bien una matriz con los valores obtenidos de una sentencia SQL, o bien el primer valor encontrado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;[[Ejecución de sentencias SQL#$MatrizSQL|$MatrizSQL]] - [[Ejecución de sentencias SQL#$ValorSQL|$ValorSQL]]&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[[Funciones de método]]====&lt;br /&gt;
&amp;lt;p&amp;gt;Aquí se especifican las funciones que se utilizan en el desarrollo de los métodos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;[[Funciones de método#$Crear|$Crear]] - [[Funciones de método#$Ejecutar|$Ejecutar]] - [[Funciones de método#$Firmar|$Firmar]] - [[Funciones de método#$Guardar|$Guardar]] - [[Funciones de método#$Lanzar|$Lanzar]] - [[Funciones de método#$Mover|$Mover]] - [[Funciones de método#$Sellar|$Sellar]]&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoría:ODL]]&lt;br /&gt;
[[Categoría:Funciones]]&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5708</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5708"/>
				<updated>2009-11-03T12:18:31Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación. El centro debe estar arrancado.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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 y cómo se estructura es fundamental para poder realizar las operaciones de exportación o importación de objetos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Formulario====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Form name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;(secciones|campos)&amp;lt;/Form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''secciones|campos''' hace referencia a las declaraciones hechas en el formulario.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sección====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Section name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;campos&amp;lt;/Section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''campos''' hace referencia con cada uno de los campos de la sección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Documento====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Document name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; subject=&amp;quot;texto&amp;quot;&amp;gt;archivo.rtf[tabla de remisiones]&amp;lt;/Document&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Las tablas de remisiones es un componente que puede o no estar definido, pero que sólo aparece una vez.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Tabla de remisiones====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una tabla de remisiones se comporta igual que una tabla de campos exceptuando que permite definir secciones.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Colección====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Collection name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Collection&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La cabecera declara la columna del sistema '''_filename''', que es independiente a la declaración de colección. El resto son las columnas de la definición. Cada fila será la misma cabecera donde las declaraciones '''Column''' contienen los valores de esa entrada en la colección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Clasificador====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Classifier name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Document document_filename=&amp;quot;archivo&amp;quot; document_date=&amp;quot;día/mes/año&amp;quot; document_user=&amp;quot;texto&amp;quot;&amp;gt;archivo&amp;lt;/Document&amp;gt;&amp;lt;/Classifier&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Por cada archivo adjunto existirá una entrada de tipo '''Document'''. En la exportación, el nombre del documento '''document_filename''' varía del nombre del documento exportado por una necesidad de diferenciar documentos de distintos contenedores que coinciden en su denominación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Catálogo====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Catalog name=&amp;quot;Contenido&amp;quot; typeName=&amp;quot;Contenido&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Catalog&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La cabecera se define con las tres columnas independientes de la declaración y el resto de columnas '''Column''' especificadas en la declaración. Cada fila será la misma cabecera donde las columnas contienen los valores de esa entrada en el catálogo.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, que será un fichero .xml. Por tanto, tendremos que realizar antes una exportación del objeto que vamos a vincular, para así obtener su fichero .xml. Si el atributo está vacío, (&amp;quot;&amp;quot;), el campo no tendrá ningún vinculo asignado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una exportación, 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Lista de comprobación=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCheckTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&amp;lt;Item selected=&amp;quot;[yes|no]&amp;quot;&amp;gt;texto&amp;lt;/Item&amp;gt;&amp;lt;/FieldCheckTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;Item&amp;lt;/code&amp;gt; es cada una de las entradas de la lista de comprobación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Tabla=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca '''Column''' es cada una de las columnas declaradas en la tabla, independientemente del tipo de la misma. Cada fila será el conjunto de declaraciones de campos definidas en la cabecera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ejemplos==&lt;br /&gt;
===Ejemplo 1===&lt;br /&gt;
&amp;lt;p&amp;gt;El siguiente ejemplo corresponde con una ficha con datos personales. Formado por un formulario con campos simple y dos secciones.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;12503&amp;quot; name=&amp;quot;12345678E&amp;quot; typeName=&amp;quot;Otra persona física&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;&amp;quot; typeName=&amp;quot;Otras personas físicas&amp;quot; componentName=&amp;quot;contenido&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;2003:11:14&amp;quot; user_id=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;2003:11:14&amp;quot; user_id=&amp;quot;&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       &amp;lt;Form name=&amp;quot;Datos generales&amp;quot; typeName=&amp;quot;Datos generales&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;N.I.F.&amp;quot; typeName=&amp;quot;N.I.F.&amp;quot;&amp;gt;12345678E&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nombre y apellidos&amp;quot; typeName=&amp;quot;Nombre y apellidos&amp;quot;&amp;gt;Carlos Arvelo Mejía&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Domicilio&amp;quot; typeName=&amp;quot;Domicilio&amp;quot;&amp;gt;c\Güimar nº 27&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Código postal&amp;quot; typeName=&amp;quot;Código postal&amp;quot;&amp;gt;35230&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Localidad&amp;quot; typeName=&amp;quot;Localidad&amp;quot;&amp;gt;Arrecife&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Provincia&amp;quot; typeName=&amp;quot;Provincia&amp;quot;&amp;gt;Las Palmas&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Isla&amp;quot; typeName=&amp;quot;Isla&amp;quot;&amp;gt;Lanzarote&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Teléfono&amp;quot; typeName=&amp;quot;Teléfono&amp;quot;&amp;gt;928854323&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Fax&amp;quot; typeName=&amp;quot;Fax&amp;quot;&amp;gt;928854323&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Correo electrónico&amp;quot; typeName=&amp;quot;Correo electrónico&amp;quot;&amp;gt;carvelo@hotmail.com&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;Section name=&amp;quot;Datos a efectos de notificación&amp;quot; typeName=&amp;quot;Datos a efectos de notificación&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Domicilio (a.e.n.)&amp;quot; typeName=&amp;quot;Domicilio (a.e.n.)&amp;quot;&amp;gt;c\Güimar nº 27&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Código postal (a.e.n.)&amp;quot; typeName=&amp;quot;Código postal (a.e.n.)&amp;quot;&amp;gt;35230&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Localidad (a.e.n.)&amp;quot; typeName=&amp;quot;Localidad (a.e.n.)&amp;quot;&amp;gt;Arrecife&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Provincia (a.e.n.)&amp;quot; typeName=&amp;quot;Provincia (a.e.n.)&amp;quot;&amp;gt;Las Palmas&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Isla (a.e.n.)&amp;quot; typeName=&amp;quot;Isla (a.e.n.)&amp;quot;&amp;gt;Lanzarote&amp;lt;/FieldString&amp;gt;&amp;lt;/Section&amp;gt;&lt;br /&gt;
          &amp;lt;FieldMemo name=&amp;quot;Observaciones&amp;quot; typeName=&amp;quot;Observaciones&amp;quot;&amp;gt;Ejemplo de contenedor: Otra persona física&amp;lt;/FieldMemo&amp;gt;&lt;br /&gt;
          &amp;lt;Section name=&amp;quot;Datos personales&amp;quot; typeName=&amp;quot;Datos personales&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;FieldDate name=&amp;quot;Fecha de nacimiento&amp;quot; typeName=&amp;quot;Fecha de nacimiento&amp;quot;&amp;gt;1956:09:24&amp;lt;/FieldDate&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Sexo&amp;quot; typeName=&amp;quot;Sexo&amp;quot;&amp;gt;Hombre&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Nacionalidad&amp;quot; typeName=&amp;quot;Nacionalidad&amp;quot;&amp;gt;Española&amp;lt;/FieldString&amp;gt;&amp;lt;/Section&amp;gt;&amp;lt;/Form&amp;gt;&amp;lt;/Components&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ejemplo 2===&lt;br /&gt;
&amp;lt;p&amp;gt;El siguiente ejemplo corresponde con la exportación de una ficha con datos de un alumno.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;1723&amp;quot; name=&amp;quot;11555&amp;quot; typeName=&amp;quot;Alumno&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;&amp;quot; typeName=&amp;quot;Alumnos&amp;quot; componentName=&amp;quot;Listado&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;2006:02:24&amp;quot; user_id=&amp;quot;Nacho Méndez&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;2006:02:24&amp;quot; user_id=&amp;quot;Nacho Méndez&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       &amp;lt;Form name=&amp;quot;Datos personales&amp;quot; typeName=&amp;quot;Datos personales&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;N.I.F.&amp;quot; typeName=&amp;quot;N.I.F.&amp;quot;&amp;gt;45297666H&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nombre&amp;quot; typeName=&amp;quot;Nombre&amp;quot;&amp;gt;Julian&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Apellidos&amp;quot; typeName=&amp;quot;Apellidos&amp;quot;&amp;gt;Mejias López&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nº Expediente&amp;quot; typeName=&amp;quot;Nº Expediente&amp;quot;&amp;gt;1555&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldTable name=&amp;quot;Asignaturas&amp;quot; typeName=&amp;quot;Asignaturas&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;Header&amp;gt;&lt;br /&gt;
                &amp;lt;Column name=&amp;quot;Nombre asignatura&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Column name=&amp;quot;Puntuación&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;Rows&amp;gt;&lt;br /&gt;
                &amp;lt;Row&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldString name=&amp;quot;Nombre asignatura&amp;quot; typeName=&amp;quot;Nombre asignatura&amp;quot;&amp;gt;Gestión Aplicada&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldSingle name=&amp;quot;Puntuación&amp;quot; typeName=&amp;quot;Puntuación&amp;quot;&amp;gt;7&amp;lt;/FieldSingle&amp;gt;&amp;lt;/Row&amp;gt;&lt;br /&gt;
                &amp;lt;Row&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldString name=&amp;quot;Nombre asignatura&amp;quot; typeName=&amp;quot;Nombre asignatura&amp;quot;&amp;gt;Marketing 2&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldSingle name=&amp;quot;Puntuación&amp;quot; typeName=&amp;quot;Puntuación&amp;quot;&amp;gt;8,5&amp;lt;/FieldSingle&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&amp;lt;/FieldTable&amp;gt;&amp;lt;/Form&amp;gt;&lt;br /&gt;
       &amp;lt;Classifier name=&amp;quot;Datos adjuntos&amp;quot; typeName=&amp;quot;Datos adjuntos&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/Components&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ejemplo 3===&lt;br /&gt;
&amp;lt;p&amp;gt;El siguiente ejemplo es válido para la importación de datos de alumnos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;&amp;quot; name=&amp;quot;&amp;quot; typeName=&amp;quot;Alumno&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;&amp;quot; typeName=&amp;quot;Alumnos&amp;quot; componentName=&amp;quot;Listado&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       &amp;lt;Form name=&amp;quot;Datos personales&amp;quot; typeName=&amp;quot;Datos personales&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;N.I.F.&amp;quot; typeName=&amp;quot;N.I.F.&amp;quot;&amp;gt;43323366G&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nombre&amp;quot; typeName=&amp;quot;Nombre&amp;quot;&amp;gt;Ramón&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Apellidos&amp;quot; typeName=&amp;quot;Apellidos&amp;quot;&amp;gt;Díaz Rodríguez&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nº Expediente&amp;quot; typeName=&amp;quot;Nº Expediente&amp;quot;&amp;gt;1002&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldTable name=&amp;quot;Asignaturas&amp;quot; typeName=&amp;quot;Asignaturas&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;Header&amp;gt;&lt;br /&gt;
                &amp;lt;Column name=&amp;quot;Nombre asignatura&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Column name=&amp;quot;Puntuación&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;Rows&amp;gt;&lt;br /&gt;
                &amp;lt;Row&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldString name=&amp;quot;Nombre asignatura&amp;quot; typeName=&amp;quot;Nombre asignatura&amp;quot;&amp;gt;Gestión Aplicada&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldSingle name=&amp;quot;Puntuación&amp;quot; typeName=&amp;quot;Puntuación&amp;quot;&amp;gt;6&amp;lt;/FieldSingle&amp;gt;&amp;lt;/Row&amp;gt;&lt;br /&gt;
                &amp;lt;Row&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldString name=&amp;quot;Nombre asignatura&amp;quot; typeName=&amp;quot;Nombre asignatura&amp;quot;&amp;gt;Marketing 2&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldSingle name=&amp;quot;Puntuación&amp;quot; typeName=&amp;quot;Puntuación&amp;quot;&amp;gt;4,5&amp;lt;/FieldSingle&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&amp;lt;/FieldTable&amp;gt;&amp;lt;/Form&amp;gt;&lt;br /&gt;
       &amp;lt;Classifier name=&amp;quot;Datos adjuntos&amp;quot; typeName=&amp;quot;Datos adjuntos&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/Components&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Como se observa, para realizar una importación no es necesario especificar por completo la cabecera del contenedor, dichos datos son generados por la aplicación. Pero es imprescindible el typename del contenedor y su dominio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Los atributos de los componentes han de coincidir siempre con los declarados en egEasy, para que la importación se lleve a cabo correctamente. Es lógico realizar una exportación previa a la importación y reconocer en ella la declaración adecuada de todos los componentes de ese tipo de contenedor. Cada contenedor a importar de un mismo tipo diferirá sólo en los datos, nunca en los atributos de cada declaración de componente.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Aplicaciones]]&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5707</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5707"/>
				<updated>2009-11-03T12:16:22Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Ejemplo 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación. El centro debe estar arrancado.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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 y cómo se estructura es fundamental para poder realizar las operaciones de exportación o importación de objetos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Formulario====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Form name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;(secciones|campos)&amp;lt;/Form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''secciones|campos''' hace referencia a las declaraciones hechas en el formulario.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sección====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Section name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;campos&amp;lt;/Section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''campos''' hace referencia con cada uno de los campos de la sección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Documento====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Document name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; subject=&amp;quot;texto&amp;quot;&amp;gt;archivo.rtf[tabla de remisiones]&amp;lt;/Document&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Las tablas de remisiones es un componente que puede o no estar definido, pero que sólo aparece una vez.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Tabla de remisiones====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una tabla de remisiones se comporta igual que una tabla de campos exceptuando que permite definir secciones.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Colección====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Collection name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Collection&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La cabecera declara la columna del sistema '''_filename''', que es independiente a la declaración de colección. El resto son las columnas de la definición. Cada fila será la misma cabecera donde las declaraciones '''Column''' contienen los valores de esa entrada en la colección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Clasificador====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Classifier name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Document document_filename=&amp;quot;archivo&amp;quot; document_date=&amp;quot;día/mes/año&amp;quot; document_user=&amp;quot;texto&amp;quot;&amp;gt;archivo&amp;lt;/Document&amp;gt;&amp;lt;/Classifier&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Por cada archivo adjunto existirá una entrada de tipo '''Document'''. En la exportación, el nombre del documento '''document_filename''' varía del nombre del documento exportado por una necesidad de diferenciar documentos de distintos contenedores que coinciden en su denominación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Catálogo====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Catalog name=&amp;quot;Contenido&amp;quot; typeName=&amp;quot;Contenido&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Catalog&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La cabecera se define con las tres columnas independientes de la declaración y el resto de columnas '''Column''' especificadas en la declaración. Cada fila será la misma cabecera donde las columnas contienen los valores de esa entrada en el catálogo.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, que será un fichero .xml. Por tanto, tendremos que realizar antes una exportación del objeto que vamos a vincular, para así obtener su fichero .xml. Si el atributo está vacío, (&amp;quot;&amp;quot;), el campo no tendrá ningún vinculo asignado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una exportación, 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Lista de comprobación=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCheckTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&amp;lt;Item selected=&amp;quot;[yes|no]&amp;quot;&amp;gt;texto&amp;lt;/Item&amp;gt;&amp;lt;/FieldCheckTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;Item&amp;lt;/code&amp;gt; es cada una de las entradas de la lista de comprobación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Tabla=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca '''Column''' es cada una de las columnas declaradas en la tabla, independientemente del tipo de la misma. Cada fila será el conjunto de declaraciones de campos definidas en la cabecera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ejemplos==&lt;br /&gt;
===Ejemplo 1===&lt;br /&gt;
&amp;lt;p&amp;gt;El siguiente ejemplo corresponde con una ficha con datos personales. Formado por un formulario con campos simple y dos secciones.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;12503&amp;quot; name=&amp;quot;12345678E&amp;quot; typeName=&amp;quot;Otra persona física&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;&amp;quot; typeName=&amp;quot;Otras personas físicas&amp;quot; componentName=&amp;quot;contenido&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;2003:11:14&amp;quot; user_id=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;2003:11:14&amp;quot; user_id=&amp;quot;&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       &amp;lt;Form name=&amp;quot;Datos generales&amp;quot; typeName=&amp;quot;Datos generales&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;N.I.F.&amp;quot; typeName=&amp;quot;N.I.F.&amp;quot;&amp;gt;12345678E&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nombre y apellidos&amp;quot; typeName=&amp;quot;Nombre y apellidos&amp;quot;&amp;gt;Carlos Arvelo Mejía&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Domicilio&amp;quot; typeName=&amp;quot;Domicilio&amp;quot;&amp;gt;c\Güimar nº 27&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Código postal&amp;quot; typeName=&amp;quot;Código postal&amp;quot;&amp;gt;35230&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Localidad&amp;quot; typeName=&amp;quot;Localidad&amp;quot;&amp;gt;Arrecife&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Provincia&amp;quot; typeName=&amp;quot;Provincia&amp;quot;&amp;gt;Las Palmas&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Isla&amp;quot; typeName=&amp;quot;Isla&amp;quot;&amp;gt;Lanzarote&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Teléfono&amp;quot; typeName=&amp;quot;Teléfono&amp;quot;&amp;gt;928854323&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Fax&amp;quot; typeName=&amp;quot;Fax&amp;quot;&amp;gt;928854323&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Correo electrónico&amp;quot; typeName=&amp;quot;Correo electrónico&amp;quot;&amp;gt;carvelo@hotmail.com&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;Section name=&amp;quot;Datos a efectos de notificación&amp;quot; typeName=&amp;quot;Datos a efectos de notificación&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Domicilio (a.e.n.)&amp;quot; typeName=&amp;quot;Domicilio (a.e.n.)&amp;quot;&amp;gt;c\Güimar nº 27&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Código postal (a.e.n.)&amp;quot; typeName=&amp;quot;Código postal (a.e.n.)&amp;quot;&amp;gt;35230&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Localidad (a.e.n.)&amp;quot; typeName=&amp;quot;Localidad (a.e.n.)&amp;quot;&amp;gt;Arrecife&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Provincia (a.e.n.)&amp;quot; typeName=&amp;quot;Provincia (a.e.n.)&amp;quot;&amp;gt;Las Palmas&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Isla (a.e.n.)&amp;quot; typeName=&amp;quot;Isla (a.e.n.)&amp;quot;&amp;gt;Lanzarote&amp;lt;/FieldString&amp;gt;&amp;lt;/Section&amp;gt;&lt;br /&gt;
          &amp;lt;FieldMemo name=&amp;quot;Observaciones&amp;quot; typeName=&amp;quot;Observaciones&amp;quot;&amp;gt;Ejemplo de contenedor: Otra persona física&amp;lt;/FieldMemo&amp;gt;&lt;br /&gt;
          &amp;lt;Section name=&amp;quot;Datos personales&amp;quot; typeName=&amp;quot;Datos personales&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;FieldDate name=&amp;quot;Fecha de nacimiento&amp;quot; typeName=&amp;quot;Fecha de nacimiento&amp;quot;&amp;gt;1956:09:24&amp;lt;/FieldDate&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Sexo&amp;quot; typeName=&amp;quot;Sexo&amp;quot;&amp;gt;Hombre&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Nacionalidad&amp;quot; typeName=&amp;quot;Nacionalidad&amp;quot;&amp;gt;Española&amp;lt;/FieldString&amp;gt;&amp;lt;/Section&amp;gt;&amp;lt;/Form&amp;gt;&amp;lt;/Components&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ejemplo 2===&lt;br /&gt;
&amp;lt;p&amp;gt;El siguiente ejemplo corresponde con la exportación de una ficha con datos de un alumno.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;1723&amp;quot; name=&amp;quot;11555&amp;quot; typeName=&amp;quot;Alumno&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;&amp;quot; typeName=&amp;quot;Alumnos&amp;quot; componentName=&amp;quot;Listado&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;2006:02:24&amp;quot; user_id=&amp;quot;Nacho Méndez&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;2006:02:24&amp;quot; user_id=&amp;quot;Nacho Méndez&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       &amp;lt;Form name=&amp;quot;Datos personales&amp;quot; typeName=&amp;quot;Datos personales&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;N.I.F.&amp;quot; typeName=&amp;quot;N.I.F.&amp;quot;&amp;gt;45297666H&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nombre&amp;quot; typeName=&amp;quot;Nombre&amp;quot;&amp;gt;Julian&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Apellidos&amp;quot; typeName=&amp;quot;Apellidos&amp;quot;&amp;gt;Mejias López&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nº Expediente&amp;quot; typeName=&amp;quot;Nº Expediente&amp;quot;&amp;gt;1555&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldTable name=&amp;quot;Asignaturas&amp;quot; typeName=&amp;quot;Asignaturas&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;Header&amp;gt;&lt;br /&gt;
                &amp;lt;Column name=&amp;quot;Nombre asignatura&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Column name=&amp;quot;Puntuación&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;Rows&amp;gt;&lt;br /&gt;
                &amp;lt;Row&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldString name=&amp;quot;Nombre asignatura&amp;quot; typeName=&amp;quot;Nombre asignatura&amp;quot;&amp;gt;Gestión Aplicada&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldSingle name=&amp;quot;Puntuación&amp;quot; typeName=&amp;quot;Puntuación&amp;quot;&amp;gt;7&amp;lt;/FieldSingle&amp;gt;&amp;lt;/Row&amp;gt;&lt;br /&gt;
                &amp;lt;Row&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldString name=&amp;quot;Nombre asignatura&amp;quot; typeName=&amp;quot;Nombre asignatura&amp;quot;&amp;gt;Marketing 2&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldSingle name=&amp;quot;Puntuación&amp;quot; typeName=&amp;quot;Puntuación&amp;quot;&amp;gt;8,5&amp;lt;/FieldSingle&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&amp;lt;/FieldTable&amp;gt;&amp;lt;/Form&amp;gt;&lt;br /&gt;
       &amp;lt;Classifier name=&amp;quot;Datos adjuntos&amp;quot; typeName=&amp;quot;Datos adjuntos&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/Components&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ejemplo 3===&lt;br /&gt;
&amp;lt;p&amp;gt;El siguiente ejemplo es válido para la importación de datos de alumnos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;&amp;quot; name=&amp;quot;&amp;quot; typeName=&amp;quot;Alumno&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;&amp;quot; typeName=&amp;quot;Alumnos&amp;quot; componentName=&amp;quot;Listado&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       &amp;lt;Form name=&amp;quot;Datos personales&amp;quot; typeName=&amp;quot;Datos personales&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;N.I.F.&amp;quot; typeName=&amp;quot;N.I.F.&amp;quot;&amp;gt;43323366G&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nombre&amp;quot; typeName=&amp;quot;Nombre&amp;quot;&amp;gt;Ramón&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Apellidos&amp;quot; typeName=&amp;quot;Apellidos&amp;quot;&amp;gt;Díaz Rodríguez&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nº Expediente&amp;quot; typeName=&amp;quot;Nº Expediente&amp;quot;&amp;gt;1002&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldTable name=&amp;quot;Asignaturas&amp;quot; typeName=&amp;quot;Asignaturas&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;Header&amp;gt;&lt;br /&gt;
                &amp;lt;Column name=&amp;quot;Nombre asignatura&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Column name=&amp;quot;Puntuación&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;Rows&amp;gt;&lt;br /&gt;
                &amp;lt;Row&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldString name=&amp;quot;Nombre asignatura&amp;quot; typeName=&amp;quot;Nombre asignatura&amp;quot;&amp;gt;Gestión Aplicada&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldSingle name=&amp;quot;Puntuación&amp;quot; typeName=&amp;quot;Puntuación&amp;quot;&amp;gt;6&amp;lt;/FieldSingle&amp;gt;&amp;lt;/Row&amp;gt;&lt;br /&gt;
                &amp;lt;Row&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldString name=&amp;quot;Nombre asignatura&amp;quot; typeName=&amp;quot;Nombre asignatura&amp;quot;&amp;gt;Marketing 2&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldSingle name=&amp;quot;Puntuación&amp;quot; typeName=&amp;quot;Puntuación&amp;quot;&amp;gt;4,5&amp;lt;/FieldSingle&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&amp;lt;/FieldTable&amp;gt;&amp;lt;/Form&amp;gt;&lt;br /&gt;
       &amp;lt;Classifier name=&amp;quot;Datos adjuntos&amp;quot; typeName=&amp;quot;Datos adjuntos&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/Components&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Como se observa, para realizar una importación no es necesario especificar por completo la cabecera del contenedor, dichos datos son generados por la aplicación. Pero es imprescindible el typename del contenedor y su dominio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Los atributos de los componentes han de coincidir siempre con los declarados en egEasy, para que la importación se lleve a cabo correctamente. Es lógico realizar una exportación previa a la importación y reconocer en ella la declaración adecuada de todos los componentes de ese tipo de contenedor. Cada contenedor a importar de un mismo tipo diferirá sólo en los datos, nunca en los atributos de cada declaración de componente.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5706</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5706"/>
				<updated>2009-11-03T12:15:57Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Ejemplo 3= */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación. El centro debe estar arrancado.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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 y cómo se estructura es fundamental para poder realizar las operaciones de exportación o importación de objetos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Formulario====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Form name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;(secciones|campos)&amp;lt;/Form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''secciones|campos''' hace referencia a las declaraciones hechas en el formulario.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sección====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Section name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;campos&amp;lt;/Section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''campos''' hace referencia con cada uno de los campos de la sección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Documento====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Document name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; subject=&amp;quot;texto&amp;quot;&amp;gt;archivo.rtf[tabla de remisiones]&amp;lt;/Document&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Las tablas de remisiones es un componente que puede o no estar definido, pero que sólo aparece una vez.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Tabla de remisiones====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una tabla de remisiones se comporta igual que una tabla de campos exceptuando que permite definir secciones.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Colección====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Collection name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Collection&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La cabecera declara la columna del sistema '''_filename''', que es independiente a la declaración de colección. El resto son las columnas de la definición. Cada fila será la misma cabecera donde las declaraciones '''Column''' contienen los valores de esa entrada en la colección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Clasificador====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Classifier name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Document document_filename=&amp;quot;archivo&amp;quot; document_date=&amp;quot;día/mes/año&amp;quot; document_user=&amp;quot;texto&amp;quot;&amp;gt;archivo&amp;lt;/Document&amp;gt;&amp;lt;/Classifier&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Por cada archivo adjunto existirá una entrada de tipo '''Document'''. En la exportación, el nombre del documento '''document_filename''' varía del nombre del documento exportado por una necesidad de diferenciar documentos de distintos contenedores que coinciden en su denominación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Catálogo====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Catalog name=&amp;quot;Contenido&amp;quot; typeName=&amp;quot;Contenido&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Catalog&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La cabecera se define con las tres columnas independientes de la declaración y el resto de columnas '''Column''' especificadas en la declaración. Cada fila será la misma cabecera donde las columnas contienen los valores de esa entrada en el catálogo.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, que será un fichero .xml. Por tanto, tendremos que realizar antes una exportación del objeto que vamos a vincular, para así obtener su fichero .xml. Si el atributo está vacío, (&amp;quot;&amp;quot;), el campo no tendrá ningún vinculo asignado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una exportación, 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Lista de comprobación=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCheckTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&amp;lt;Item selected=&amp;quot;[yes|no]&amp;quot;&amp;gt;texto&amp;lt;/Item&amp;gt;&amp;lt;/FieldCheckTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;Item&amp;lt;/code&amp;gt; es cada una de las entradas de la lista de comprobación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Tabla=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca '''Column''' es cada una de las columnas declaradas en la tabla, independientemente del tipo de la misma. Cada fila será el conjunto de declaraciones de campos definidas en la cabecera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ejemplos==&lt;br /&gt;
===Ejemplo 1===&lt;br /&gt;
&amp;lt;p&amp;gt;El siguiente ejemplo corresponde con una ficha con datos personales. Formado por un formulario con campos simple y dos secciones.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;12503&amp;quot; name=&amp;quot;12345678E&amp;quot; typeName=&amp;quot;Otra persona física&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;&amp;quot; typeName=&amp;quot;Otras personas físicas&amp;quot; componentName=&amp;quot;contenido&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;2003:11:14&amp;quot; user_id=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;2003:11:14&amp;quot; user_id=&amp;quot;&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       &amp;lt;Form name=&amp;quot;Datos generales&amp;quot; typeName=&amp;quot;Datos generales&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;N.I.F.&amp;quot; typeName=&amp;quot;N.I.F.&amp;quot;&amp;gt;12345678E&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nombre y apellidos&amp;quot; typeName=&amp;quot;Nombre y apellidos&amp;quot;&amp;gt;Carlos Arvelo Mejía&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Domicilio&amp;quot; typeName=&amp;quot;Domicilio&amp;quot;&amp;gt;c\Güimar nº 27&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Código postal&amp;quot; typeName=&amp;quot;Código postal&amp;quot;&amp;gt;35230&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Localidad&amp;quot; typeName=&amp;quot;Localidad&amp;quot;&amp;gt;Arrecife&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Provincia&amp;quot; typeName=&amp;quot;Provincia&amp;quot;&amp;gt;Las Palmas&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Isla&amp;quot; typeName=&amp;quot;Isla&amp;quot;&amp;gt;Lanzarote&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Teléfono&amp;quot; typeName=&amp;quot;Teléfono&amp;quot;&amp;gt;928854323&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Fax&amp;quot; typeName=&amp;quot;Fax&amp;quot;&amp;gt;928854323&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Correo electrónico&amp;quot; typeName=&amp;quot;Correo electrónico&amp;quot;&amp;gt;carvelo@hotmail.com&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;Section name=&amp;quot;Datos a efectos de notificación&amp;quot; typeName=&amp;quot;Datos a efectos de notificación&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Domicilio (a.e.n.)&amp;quot; typeName=&amp;quot;Domicilio (a.e.n.)&amp;quot;&amp;gt;c\Güimar nº 27&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Código postal (a.e.n.)&amp;quot; typeName=&amp;quot;Código postal (a.e.n.)&amp;quot;&amp;gt;35230&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Localidad (a.e.n.)&amp;quot; typeName=&amp;quot;Localidad (a.e.n.)&amp;quot;&amp;gt;Arrecife&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Provincia (a.e.n.)&amp;quot; typeName=&amp;quot;Provincia (a.e.n.)&amp;quot;&amp;gt;Las Palmas&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Isla (a.e.n.)&amp;quot; typeName=&amp;quot;Isla (a.e.n.)&amp;quot;&amp;gt;Lanzarote&amp;lt;/FieldString&amp;gt;&amp;lt;/Section&amp;gt;&lt;br /&gt;
          &amp;lt;FieldMemo name=&amp;quot;Observaciones&amp;quot; typeName=&amp;quot;Observaciones&amp;quot;&amp;gt;Ejemplo de contenedor: Otra persona física&amp;lt;/FieldMemo&amp;gt;&lt;br /&gt;
          &amp;lt;Section name=&amp;quot;Datos personales&amp;quot; typeName=&amp;quot;Datos personales&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;FieldDate name=&amp;quot;Fecha de nacimiento&amp;quot; typeName=&amp;quot;Fecha de nacimiento&amp;quot;&amp;gt;1956:09:24&amp;lt;/FieldDate&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Sexo&amp;quot; typeName=&amp;quot;Sexo&amp;quot;&amp;gt;Hombre&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Nacionalidad&amp;quot; typeName=&amp;quot;Nacionalidad&amp;quot;&amp;gt;Española&amp;lt;/FieldString&amp;gt;&amp;lt;/Section&amp;gt;&amp;lt;/Form&amp;gt;&amp;lt;/Components&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ejemplo 2===&lt;br /&gt;
&amp;lt;p&amp;gt;El siguiente ejemplo corresponde con la exportación de una ficha con datos de un alumno.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;1723&amp;quot; name=&amp;quot;11555&amp;quot; typeName=&amp;quot;Alumno&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;&amp;quot; typeName=&amp;quot;Alumnos&amp;quot; componentName=&amp;quot;Listado&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;2006:02:24&amp;quot; user_id=&amp;quot;Nacho Méndez&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;2006:02:24&amp;quot; user_id=&amp;quot;Nacho Méndez&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       &amp;lt;Form name=&amp;quot;Datos personales&amp;quot; typeName=&amp;quot;Datos personales&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;N.I.F.&amp;quot; typeName=&amp;quot;N.I.F.&amp;quot;&amp;gt;45297666H&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nombre&amp;quot; typeName=&amp;quot;Nombre&amp;quot;&amp;gt;Julian&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Apellidos&amp;quot; typeName=&amp;quot;Apellidos&amp;quot;&amp;gt;Mejias López&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nº Expediente&amp;quot; typeName=&amp;quot;Nº Expediente&amp;quot;&amp;gt;1555&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldTable name=&amp;quot;Asignaturas&amp;quot; typeName=&amp;quot;Asignaturas&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;Header&amp;gt;&lt;br /&gt;
                &amp;lt;Column name=&amp;quot;Nombre asignatura&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Column name=&amp;quot;Puntuación&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;Rows&amp;gt;&lt;br /&gt;
                &amp;lt;Row&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldString name=&amp;quot;Nombre asignatura&amp;quot; typeName=&amp;quot;Nombre asignatura&amp;quot;&amp;gt;Gestión Aplicada&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldSingle name=&amp;quot;Puntuación&amp;quot; typeName=&amp;quot;Puntuación&amp;quot;&amp;gt;7&amp;lt;/FieldSingle&amp;gt;&amp;lt;/Row&amp;gt;&lt;br /&gt;
                &amp;lt;Row&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldString name=&amp;quot;Nombre asignatura&amp;quot; typeName=&amp;quot;Nombre asignatura&amp;quot;&amp;gt;Marketing 2&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldSingle name=&amp;quot;Puntuación&amp;quot; typeName=&amp;quot;Puntuación&amp;quot;&amp;gt;8,5&amp;lt;/FieldSingle&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&amp;lt;/FieldTable&amp;gt;&amp;lt;/Form&amp;gt;&lt;br /&gt;
       &amp;lt;Classifier name=&amp;quot;Datos adjuntos&amp;quot; typeName=&amp;quot;Datos adjuntos&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/Components&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ejemplo 3==&lt;br /&gt;
&amp;lt;p&amp;gt;El siguiente ejemplo es válido para la importación de datos de alumnos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;&amp;quot; name=&amp;quot;&amp;quot; typeName=&amp;quot;Alumno&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;&amp;quot; typeName=&amp;quot;Alumnos&amp;quot; componentName=&amp;quot;Listado&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       &amp;lt;Form name=&amp;quot;Datos personales&amp;quot; typeName=&amp;quot;Datos personales&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;N.I.F.&amp;quot; typeName=&amp;quot;N.I.F.&amp;quot;&amp;gt;43323366G&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nombre&amp;quot; typeName=&amp;quot;Nombre&amp;quot;&amp;gt;Ramón&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Apellidos&amp;quot; typeName=&amp;quot;Apellidos&amp;quot;&amp;gt;Díaz Rodríguez&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nº Expediente&amp;quot; typeName=&amp;quot;Nº Expediente&amp;quot;&amp;gt;1002&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldTable name=&amp;quot;Asignaturas&amp;quot; typeName=&amp;quot;Asignaturas&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;Header&amp;gt;&lt;br /&gt;
                &amp;lt;Column name=&amp;quot;Nombre asignatura&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Column name=&amp;quot;Puntuación&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;Rows&amp;gt;&lt;br /&gt;
                &amp;lt;Row&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldString name=&amp;quot;Nombre asignatura&amp;quot; typeName=&amp;quot;Nombre asignatura&amp;quot;&amp;gt;Gestión Aplicada&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldSingle name=&amp;quot;Puntuación&amp;quot; typeName=&amp;quot;Puntuación&amp;quot;&amp;gt;6&amp;lt;/FieldSingle&amp;gt;&amp;lt;/Row&amp;gt;&lt;br /&gt;
                &amp;lt;Row&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldString name=&amp;quot;Nombre asignatura&amp;quot; typeName=&amp;quot;Nombre asignatura&amp;quot;&amp;gt;Marketing 2&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldSingle name=&amp;quot;Puntuación&amp;quot; typeName=&amp;quot;Puntuación&amp;quot;&amp;gt;4,5&amp;lt;/FieldSingle&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&amp;lt;/FieldTable&amp;gt;&amp;lt;/Form&amp;gt;&lt;br /&gt;
       &amp;lt;Classifier name=&amp;quot;Datos adjuntos&amp;quot; typeName=&amp;quot;Datos adjuntos&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/Components&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Como se observa, para realizar una importación no es necesario especificar por completo la cabecera del contenedor, dichos datos son generados por la aplicación. Pero es imprescindible el typename del contenedor y su dominio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Los atributos de los componentes han de coincidir siempre con los declarados en egEasy, para que la importación se lleve a cabo correctamente. Es lógico realizar una exportación previa a la importación y reconocer en ella la declaración adecuada de todos los componentes de ese tipo de contenedor. Cada contenedor a importar de un mismo tipo diferirá sólo en los datos, nunca en los atributos de cada declaración de componente.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5705</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5705"/>
				<updated>2009-11-03T12:15:51Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Ejemplos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación. El centro debe estar arrancado.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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 y cómo se estructura es fundamental para poder realizar las operaciones de exportación o importación de objetos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Formulario====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Form name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;(secciones|campos)&amp;lt;/Form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''secciones|campos''' hace referencia a las declaraciones hechas en el formulario.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sección====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Section name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;campos&amp;lt;/Section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''campos''' hace referencia con cada uno de los campos de la sección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Documento====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Document name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; subject=&amp;quot;texto&amp;quot;&amp;gt;archivo.rtf[tabla de remisiones]&amp;lt;/Document&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Las tablas de remisiones es un componente que puede o no estar definido, pero que sólo aparece una vez.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Tabla de remisiones====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una tabla de remisiones se comporta igual que una tabla de campos exceptuando que permite definir secciones.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Colección====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Collection name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Collection&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La cabecera declara la columna del sistema '''_filename''', que es independiente a la declaración de colección. El resto son las columnas de la definición. Cada fila será la misma cabecera donde las declaraciones '''Column''' contienen los valores de esa entrada en la colección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Clasificador====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Classifier name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Document document_filename=&amp;quot;archivo&amp;quot; document_date=&amp;quot;día/mes/año&amp;quot; document_user=&amp;quot;texto&amp;quot;&amp;gt;archivo&amp;lt;/Document&amp;gt;&amp;lt;/Classifier&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Por cada archivo adjunto existirá una entrada de tipo '''Document'''. En la exportación, el nombre del documento '''document_filename''' varía del nombre del documento exportado por una necesidad de diferenciar documentos de distintos contenedores que coinciden en su denominación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Catálogo====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Catalog name=&amp;quot;Contenido&amp;quot; typeName=&amp;quot;Contenido&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Catalog&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La cabecera se define con las tres columnas independientes de la declaración y el resto de columnas '''Column''' especificadas en la declaración. Cada fila será la misma cabecera donde las columnas contienen los valores de esa entrada en el catálogo.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, que será un fichero .xml. Por tanto, tendremos que realizar antes una exportación del objeto que vamos a vincular, para así obtener su fichero .xml. Si el atributo está vacío, (&amp;quot;&amp;quot;), el campo no tendrá ningún vinculo asignado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una exportación, 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Lista de comprobación=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCheckTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&amp;lt;Item selected=&amp;quot;[yes|no]&amp;quot;&amp;gt;texto&amp;lt;/Item&amp;gt;&amp;lt;/FieldCheckTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;Item&amp;lt;/code&amp;gt; es cada una de las entradas de la lista de comprobación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Tabla=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca '''Column''' es cada una de las columnas declaradas en la tabla, independientemente del tipo de la misma. Cada fila será el conjunto de declaraciones de campos definidas en la cabecera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ejemplos==&lt;br /&gt;
===Ejemplo 1===&lt;br /&gt;
&amp;lt;p&amp;gt;El siguiente ejemplo corresponde con una ficha con datos personales. Formado por un formulario con campos simple y dos secciones.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;12503&amp;quot; name=&amp;quot;12345678E&amp;quot; typeName=&amp;quot;Otra persona física&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;&amp;quot; typeName=&amp;quot;Otras personas físicas&amp;quot; componentName=&amp;quot;contenido&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;2003:11:14&amp;quot; user_id=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;2003:11:14&amp;quot; user_id=&amp;quot;&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       &amp;lt;Form name=&amp;quot;Datos generales&amp;quot; typeName=&amp;quot;Datos generales&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;N.I.F.&amp;quot; typeName=&amp;quot;N.I.F.&amp;quot;&amp;gt;12345678E&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nombre y apellidos&amp;quot; typeName=&amp;quot;Nombre y apellidos&amp;quot;&amp;gt;Carlos Arvelo Mejía&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Domicilio&amp;quot; typeName=&amp;quot;Domicilio&amp;quot;&amp;gt;c\Güimar nº 27&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Código postal&amp;quot; typeName=&amp;quot;Código postal&amp;quot;&amp;gt;35230&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Localidad&amp;quot; typeName=&amp;quot;Localidad&amp;quot;&amp;gt;Arrecife&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Provincia&amp;quot; typeName=&amp;quot;Provincia&amp;quot;&amp;gt;Las Palmas&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Isla&amp;quot; typeName=&amp;quot;Isla&amp;quot;&amp;gt;Lanzarote&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Teléfono&amp;quot; typeName=&amp;quot;Teléfono&amp;quot;&amp;gt;928854323&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Fax&amp;quot; typeName=&amp;quot;Fax&amp;quot;&amp;gt;928854323&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Correo electrónico&amp;quot; typeName=&amp;quot;Correo electrónico&amp;quot;&amp;gt;carvelo@hotmail.com&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;Section name=&amp;quot;Datos a efectos de notificación&amp;quot; typeName=&amp;quot;Datos a efectos de notificación&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Domicilio (a.e.n.)&amp;quot; typeName=&amp;quot;Domicilio (a.e.n.)&amp;quot;&amp;gt;c\Güimar nº 27&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Código postal (a.e.n.)&amp;quot; typeName=&amp;quot;Código postal (a.e.n.)&amp;quot;&amp;gt;35230&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Localidad (a.e.n.)&amp;quot; typeName=&amp;quot;Localidad (a.e.n.)&amp;quot;&amp;gt;Arrecife&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Provincia (a.e.n.)&amp;quot; typeName=&amp;quot;Provincia (a.e.n.)&amp;quot;&amp;gt;Las Palmas&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Isla (a.e.n.)&amp;quot; typeName=&amp;quot;Isla (a.e.n.)&amp;quot;&amp;gt;Lanzarote&amp;lt;/FieldString&amp;gt;&amp;lt;/Section&amp;gt;&lt;br /&gt;
          &amp;lt;FieldMemo name=&amp;quot;Observaciones&amp;quot; typeName=&amp;quot;Observaciones&amp;quot;&amp;gt;Ejemplo de contenedor: Otra persona física&amp;lt;/FieldMemo&amp;gt;&lt;br /&gt;
          &amp;lt;Section name=&amp;quot;Datos personales&amp;quot; typeName=&amp;quot;Datos personales&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;FieldDate name=&amp;quot;Fecha de nacimiento&amp;quot; typeName=&amp;quot;Fecha de nacimiento&amp;quot;&amp;gt;1956:09:24&amp;lt;/FieldDate&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Sexo&amp;quot; typeName=&amp;quot;Sexo&amp;quot;&amp;gt;Hombre&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Nacionalidad&amp;quot; typeName=&amp;quot;Nacionalidad&amp;quot;&amp;gt;Española&amp;lt;/FieldString&amp;gt;&amp;lt;/Section&amp;gt;&amp;lt;/Form&amp;gt;&amp;lt;/Components&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ejemplo 2===&lt;br /&gt;
&amp;lt;p&amp;gt;El siguiente ejemplo corresponde con la exportación de una ficha con datos de un alumno.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;1723&amp;quot; name=&amp;quot;11555&amp;quot; typeName=&amp;quot;Alumno&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;&amp;quot; typeName=&amp;quot;Alumnos&amp;quot; componentName=&amp;quot;Listado&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;2006:02:24&amp;quot; user_id=&amp;quot;Nacho Méndez&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;2006:02:24&amp;quot; user_id=&amp;quot;Nacho Méndez&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       &amp;lt;Form name=&amp;quot;Datos personales&amp;quot; typeName=&amp;quot;Datos personales&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;N.I.F.&amp;quot; typeName=&amp;quot;N.I.F.&amp;quot;&amp;gt;45297666H&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nombre&amp;quot; typeName=&amp;quot;Nombre&amp;quot;&amp;gt;Julian&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Apellidos&amp;quot; typeName=&amp;quot;Apellidos&amp;quot;&amp;gt;Mejias López&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nº Expediente&amp;quot; typeName=&amp;quot;Nº Expediente&amp;quot;&amp;gt;1555&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldTable name=&amp;quot;Asignaturas&amp;quot; typeName=&amp;quot;Asignaturas&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;Header&amp;gt;&lt;br /&gt;
                &amp;lt;Column name=&amp;quot;Nombre asignatura&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Column name=&amp;quot;Puntuación&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;Rows&amp;gt;&lt;br /&gt;
                &amp;lt;Row&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldString name=&amp;quot;Nombre asignatura&amp;quot; typeName=&amp;quot;Nombre asignatura&amp;quot;&amp;gt;Gestión Aplicada&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldSingle name=&amp;quot;Puntuación&amp;quot; typeName=&amp;quot;Puntuación&amp;quot;&amp;gt;7&amp;lt;/FieldSingle&amp;gt;&amp;lt;/Row&amp;gt;&lt;br /&gt;
                &amp;lt;Row&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldString name=&amp;quot;Nombre asignatura&amp;quot; typeName=&amp;quot;Nombre asignatura&amp;quot;&amp;gt;Marketing 2&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldSingle name=&amp;quot;Puntuación&amp;quot; typeName=&amp;quot;Puntuación&amp;quot;&amp;gt;8,5&amp;lt;/FieldSingle&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&amp;lt;/FieldTable&amp;gt;&amp;lt;/Form&amp;gt;&lt;br /&gt;
       &amp;lt;Classifier name=&amp;quot;Datos adjuntos&amp;quot; typeName=&amp;quot;Datos adjuntos&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/Components&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ejemplo 3===&lt;br /&gt;
&amp;lt;p&amp;gt;El siguiente ejemplo es válido para la importación de datos de alumnos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;&amp;quot; name=&amp;quot;&amp;quot; typeName=&amp;quot;Alumno&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;&amp;quot; typeName=&amp;quot;Alumnos&amp;quot; componentName=&amp;quot;Listado&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       &amp;lt;Form name=&amp;quot;Datos personales&amp;quot; typeName=&amp;quot;Datos personales&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;N.I.F.&amp;quot; typeName=&amp;quot;N.I.F.&amp;quot;&amp;gt;43323366G&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nombre&amp;quot; typeName=&amp;quot;Nombre&amp;quot;&amp;gt;Ramón&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Apellidos&amp;quot; typeName=&amp;quot;Apellidos&amp;quot;&amp;gt;Díaz Rodríguez&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nº Expediente&amp;quot; typeName=&amp;quot;Nº Expediente&amp;quot;&amp;gt;1002&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldTable name=&amp;quot;Asignaturas&amp;quot; typeName=&amp;quot;Asignaturas&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;Header&amp;gt;&lt;br /&gt;
                &amp;lt;Column name=&amp;quot;Nombre asignatura&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Column name=&amp;quot;Puntuación&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;Rows&amp;gt;&lt;br /&gt;
                &amp;lt;Row&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldString name=&amp;quot;Nombre asignatura&amp;quot; typeName=&amp;quot;Nombre asignatura&amp;quot;&amp;gt;Gestión Aplicada&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldSingle name=&amp;quot;Puntuación&amp;quot; typeName=&amp;quot;Puntuación&amp;quot;&amp;gt;6&amp;lt;/FieldSingle&amp;gt;&amp;lt;/Row&amp;gt;&lt;br /&gt;
                &amp;lt;Row&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldString name=&amp;quot;Nombre asignatura&amp;quot; typeName=&amp;quot;Nombre asignatura&amp;quot;&amp;gt;Marketing 2&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldSingle name=&amp;quot;Puntuación&amp;quot; typeName=&amp;quot;Puntuación&amp;quot;&amp;gt;4,5&amp;lt;/FieldSingle&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&amp;lt;/FieldTable&amp;gt;&amp;lt;/Form&amp;gt;&lt;br /&gt;
       &amp;lt;Classifier name=&amp;quot;Datos adjuntos&amp;quot; typeName=&amp;quot;Datos adjuntos&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/Components&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Como se observa, para realizar una importación no es necesario especificar por completo la cabecera del contenedor, dichos datos son generados por la aplicación. Pero es imprescindible el typename del contenedor y su dominio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Los atributos de los componentes han de coincidir siempre con los declarados en egEasy, para que la importación se lleve a cabo correctamente. Es lógico realizar una exportación previa a la importación y reconocer en ella la declaración adecuada de todos los componentes de ese tipo de contenedor. Cada contenedor a importar de un mismo tipo diferirá sólo en los datos, nunca en los atributos de cada declaración de componente.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5704</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5704"/>
				<updated>2009-11-03T11:35:41Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Ejemplos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación. El centro debe estar arrancado.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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 y cómo se estructura es fundamental para poder realizar las operaciones de exportación o importación de objetos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Formulario====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Form name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;(secciones|campos)&amp;lt;/Form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''secciones|campos''' hace referencia a las declaraciones hechas en el formulario.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sección====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Section name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;campos&amp;lt;/Section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''campos''' hace referencia con cada uno de los campos de la sección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Documento====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Document name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; subject=&amp;quot;texto&amp;quot;&amp;gt;archivo.rtf[tabla de remisiones]&amp;lt;/Document&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Las tablas de remisiones es un componente que puede o no estar definido, pero que sólo aparece una vez.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Tabla de remisiones====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una tabla de remisiones se comporta igual que una tabla de campos exceptuando que permite definir secciones.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Colección====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Collection name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Collection&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La cabecera declara la columna del sistema '''_filename''', que es independiente a la declaración de colección. El resto son las columnas de la definición. Cada fila será la misma cabecera donde las declaraciones '''Column''' contienen los valores de esa entrada en la colección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Clasificador====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Classifier name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Document document_filename=&amp;quot;archivo&amp;quot; document_date=&amp;quot;día/mes/año&amp;quot; document_user=&amp;quot;texto&amp;quot;&amp;gt;archivo&amp;lt;/Document&amp;gt;&amp;lt;/Classifier&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Por cada archivo adjunto existirá una entrada de tipo '''Document'''. En la exportación, el nombre del documento '''document_filename''' varía del nombre del documento exportado por una necesidad de diferenciar documentos de distintos contenedores que coinciden en su denominación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Catálogo====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Catalog name=&amp;quot;Contenido&amp;quot; typeName=&amp;quot;Contenido&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Catalog&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La cabecera se define con las tres columnas independientes de la declaración y el resto de columnas '''Column''' especificadas en la declaración. Cada fila será la misma cabecera donde las columnas contienen los valores de esa entrada en el catálogo.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, que será un fichero .xml. Por tanto, tendremos que realizar antes una exportación del objeto que vamos a vincular, para así obtener su fichero .xml. Si el atributo está vacío, (&amp;quot;&amp;quot;), el campo no tendrá ningún vinculo asignado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una exportación, 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Lista de comprobación=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCheckTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&amp;lt;Item selected=&amp;quot;[yes|no]&amp;quot;&amp;gt;texto&amp;lt;/Item&amp;gt;&amp;lt;/FieldCheckTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;Item&amp;lt;/code&amp;gt; es cada una de las entradas de la lista de comprobación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Tabla=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca '''Column''' es cada una de las columnas declaradas en la tabla, independientemente del tipo de la misma. Cada fila será el conjunto de declaraciones de campos definidas en la cabecera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ejemplos==&lt;br /&gt;
===Ejemplo 1===&lt;br /&gt;
&amp;lt;p&amp;gt;El siguiente ejemplo corresponde con una ficha con datos personales. Formado por un formulario con campos simple y dos secciones.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;12503&amp;quot; name=&amp;quot;12345678E&amp;quot; typeName=&amp;quot;Otra persona física&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;&amp;quot; typeName=&amp;quot;Otras personas físicas&amp;quot; componentName=&amp;quot;contenido&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;2003:11:14&amp;quot; user_id=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;2003:11:14&amp;quot; user_id=&amp;quot;&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       &amp;lt;Form name=&amp;quot;Datos generales&amp;quot; typeName=&amp;quot;Datos generales&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;N.I.F.&amp;quot; typeName=&amp;quot;N.I.F.&amp;quot;&amp;gt;12345678E&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nombre y apellidos&amp;quot; typeName=&amp;quot;Nombre y apellidos&amp;quot;&amp;gt;Carlos Arvelo Mejía&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Domicilio&amp;quot; typeName=&amp;quot;Domicilio&amp;quot;&amp;gt;c\Güimar nº 27&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Código postal&amp;quot; typeName=&amp;quot;Código postal&amp;quot;&amp;gt;35230&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Localidad&amp;quot; typeName=&amp;quot;Localidad&amp;quot;&amp;gt;Arrecife&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Provincia&amp;quot; typeName=&amp;quot;Provincia&amp;quot;&amp;gt;Las Palmas&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Isla&amp;quot; typeName=&amp;quot;Isla&amp;quot;&amp;gt;Lanzarote&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Teléfono&amp;quot; typeName=&amp;quot;Teléfono&amp;quot;&amp;gt;928854323&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Fax&amp;quot; typeName=&amp;quot;Fax&amp;quot;&amp;gt;928854323&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Correo electrónico&amp;quot; typeName=&amp;quot;Correo electrónico&amp;quot;&amp;gt;carvelo@hotmail.com&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;Section name=&amp;quot;Datos a efectos de notificación&amp;quot; typeName=&amp;quot;Datos a efectos de notificación&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Domicilio (a.e.n.)&amp;quot; typeName=&amp;quot;Domicilio (a.e.n.)&amp;quot;&amp;gt;c\Güimar nº 27&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Código postal (a.e.n.)&amp;quot; typeName=&amp;quot;Código postal (a.e.n.)&amp;quot;&amp;gt;35230&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Localidad (a.e.n.)&amp;quot; typeName=&amp;quot;Localidad (a.e.n.)&amp;quot;&amp;gt;Arrecife&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Provincia (a.e.n.)&amp;quot; typeName=&amp;quot;Provincia (a.e.n.)&amp;quot;&amp;gt;Las Palmas&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Isla (a.e.n.)&amp;quot; typeName=&amp;quot;Isla (a.e.n.)&amp;quot;&amp;gt;Lanzarote&amp;lt;/FieldString&amp;gt;&amp;lt;/Section&amp;gt;&lt;br /&gt;
          &amp;lt;FieldMemo name=&amp;quot;Observaciones&amp;quot; typeName=&amp;quot;Observaciones&amp;quot;&amp;gt;Ejemplo de contenedor: Otra persona física&amp;lt;/FieldMemo&amp;gt;&lt;br /&gt;
          &amp;lt;Section name=&amp;quot;Datos personales&amp;quot; typeName=&amp;quot;Datos personales&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;FieldDate name=&amp;quot;Fecha de nacimiento&amp;quot; typeName=&amp;quot;Fecha de nacimiento&amp;quot;&amp;gt;1956:09:24&amp;lt;/FieldDate&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Sexo&amp;quot; typeName=&amp;quot;Sexo&amp;quot;&amp;gt;Hombre&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Nacionalidad&amp;quot; typeName=&amp;quot;Nacionalidad&amp;quot;&amp;gt;Española&amp;lt;/FieldString&amp;gt;&amp;lt;/Section&amp;gt;&amp;lt;/Form&amp;gt;&amp;lt;/Components&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ejemplo 2===&lt;br /&gt;
&amp;lt;p&amp;gt;El siguiente ejemplo corresponde con la exportación de una ficha con datos de un alumno.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;1723&amp;quot; name=&amp;quot;11555&amp;quot; typeName=&amp;quot;Alumno&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;&amp;quot; typeName=&amp;quot;Alumnos&amp;quot; componentName=&amp;quot;Listado&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;2006:02:24&amp;quot; user_id=&amp;quot;Nacho Méndez&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;2006:02:24&amp;quot; user_id=&amp;quot;Nacho Méndez&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       &amp;lt;Form name=&amp;quot;Datos personales&amp;quot; typeName=&amp;quot;Datos personales&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;N.I.F.&amp;quot; typeName=&amp;quot;N.I.F.&amp;quot;&amp;gt;45297666H&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nombre&amp;quot; typeName=&amp;quot;Nombre&amp;quot;&amp;gt;Julian&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Apellidos&amp;quot; typeName=&amp;quot;Apellidos&amp;quot;&amp;gt;Mejias López&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nº Expediente&amp;quot; typeName=&amp;quot;Nº Expediente&amp;quot;&amp;gt;1555&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldTable name=&amp;quot;Asignaturas&amp;quot; typeName=&amp;quot;Asignaturas&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;Header&amp;gt;&lt;br /&gt;
                &amp;lt;Column name=&amp;quot;Nombre asignatura&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Column name=&amp;quot;Puntuación&amp;quot;/&amp;gt;&lt;br /&gt;
             &amp;lt;Rows&amp;gt;&lt;br /&gt;
                &amp;lt;Row&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldString name=&amp;quot;Nombre asignatura&amp;quot; typeName=&amp;quot;Nombre asignatura&amp;quot;&amp;gt;Gestión Aplicada&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldSingle name=&amp;quot;Puntuación&amp;quot; typeName=&amp;quot;Puntuación&amp;quot;&amp;gt;7&amp;lt;/FieldSingle&amp;gt;&amp;lt;/Row&amp;gt;&lt;br /&gt;
                &amp;lt;Row&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldString name=&amp;quot;Nombre asignatura&amp;quot; typeName=&amp;quot;Nombre asignatura&amp;quot;&amp;gt;Marketing 2&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
                   &amp;lt;FieldSingle name=&amp;quot;Puntuación&amp;quot; typeName=&amp;quot;Puntuación&amp;quot;&amp;gt;8,5&amp;lt;/FieldSingle&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&amp;lt;/FieldTable&amp;gt;&amp;lt;/Form&amp;gt;&lt;br /&gt;
       &amp;lt;Classifier name=&amp;quot;Datos adjuntos&amp;quot; typeName=&amp;quot;Datos adjuntos&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/Components&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5703</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5703"/>
				<updated>2009-11-03T11:29:27Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Ejemplos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación. El centro debe estar arrancado.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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 y cómo se estructura es fundamental para poder realizar las operaciones de exportación o importación de objetos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Formulario====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Form name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;(secciones|campos)&amp;lt;/Form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''secciones|campos''' hace referencia a las declaraciones hechas en el formulario.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sección====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Section name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;campos&amp;lt;/Section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''campos''' hace referencia con cada uno de los campos de la sección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Documento====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Document name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; subject=&amp;quot;texto&amp;quot;&amp;gt;archivo.rtf[tabla de remisiones]&amp;lt;/Document&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Las tablas de remisiones es un componente que puede o no estar definido, pero que sólo aparece una vez.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Tabla de remisiones====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una tabla de remisiones se comporta igual que una tabla de campos exceptuando que permite definir secciones.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Colección====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Collection name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Collection&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La cabecera declara la columna del sistema '''_filename''', que es independiente a la declaración de colección. El resto son las columnas de la definición. Cada fila será la misma cabecera donde las declaraciones '''Column''' contienen los valores de esa entrada en la colección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Clasificador====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Classifier name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Document document_filename=&amp;quot;archivo&amp;quot; document_date=&amp;quot;día/mes/año&amp;quot; document_user=&amp;quot;texto&amp;quot;&amp;gt;archivo&amp;lt;/Document&amp;gt;&amp;lt;/Classifier&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Por cada archivo adjunto existirá una entrada de tipo '''Document'''. En la exportación, el nombre del documento '''document_filename''' varía del nombre del documento exportado por una necesidad de diferenciar documentos de distintos contenedores que coinciden en su denominación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Catálogo====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Catalog name=&amp;quot;Contenido&amp;quot; typeName=&amp;quot;Contenido&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Catalog&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La cabecera se define con las tres columnas independientes de la declaración y el resto de columnas '''Column''' especificadas en la declaración. Cada fila será la misma cabecera donde las columnas contienen los valores de esa entrada en el catálogo.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, que será un fichero .xml. Por tanto, tendremos que realizar antes una exportación del objeto que vamos a vincular, para así obtener su fichero .xml. Si el atributo está vacío, (&amp;quot;&amp;quot;), el campo no tendrá ningún vinculo asignado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una exportación, 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Lista de comprobación=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCheckTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&amp;lt;Item selected=&amp;quot;[yes|no]&amp;quot;&amp;gt;texto&amp;lt;/Item&amp;gt;&amp;lt;/FieldCheckTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;Item&amp;lt;/code&amp;gt; es cada una de las entradas de la lista de comprobación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Tabla=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca '''Column''' es cada una de las columnas declaradas en la tabla, independientemente del tipo de la misma. Cada fila será el conjunto de declaraciones de campos definidas en la cabecera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ejemplos==&lt;br /&gt;
===Ejemplo 1===&lt;br /&gt;
&amp;lt;p&amp;gt;El siguiente ejemplo corresponde con una ficha con datos personales. Formado por un formulario con campos simple y dos secciones.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;12503&amp;quot; name=&amp;quot;12345678E&amp;quot; typeName=&amp;quot;Otra persona física&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;&amp;quot; typeName=&amp;quot;Otras personas físicas&amp;quot; componentName=&amp;quot;contenido&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;2003:11:14&amp;quot; user_id=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;2003:11:14&amp;quot; user_id=&amp;quot;&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       &amp;lt;Form name=&amp;quot;Datos generales&amp;quot; typeName=&amp;quot;Datos generales&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;N.I.F.&amp;quot; typeName=&amp;quot;N.I.F.&amp;quot;&amp;gt;12345678E&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Nombre y apellidos&amp;quot; typeName=&amp;quot;Nombre y apellidos&amp;quot;&amp;gt;Carlos Arvelo Mejía&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Domicilio&amp;quot; typeName=&amp;quot;Domicilio&amp;quot;&amp;gt;c\Güimar nº 27&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Código postal&amp;quot; typeName=&amp;quot;Código postal&amp;quot;&amp;gt;35230&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Localidad&amp;quot; typeName=&amp;quot;Localidad&amp;quot;&amp;gt;Arrecife&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Provincia&amp;quot; typeName=&amp;quot;Provincia&amp;quot;&amp;gt;Las Palmas&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Isla&amp;quot; typeName=&amp;quot;Isla&amp;quot;&amp;gt;Lanzarote&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Teléfono&amp;quot; typeName=&amp;quot;Teléfono&amp;quot;&amp;gt;928854323&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Fax&amp;quot; typeName=&amp;quot;Fax&amp;quot;&amp;gt;928854323&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;FieldString name=&amp;quot;Correo electrónico&amp;quot; typeName=&amp;quot;Correo electrónico&amp;quot;&amp;gt;carvelo@hotmail.com&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
          &amp;lt;Section name=&amp;quot;Datos a efectos de notificación&amp;quot; typeName=&amp;quot;Datos a efectos de notificación&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Domicilio (a.e.n.)&amp;quot; typeName=&amp;quot;Domicilio (a.e.n.)&amp;quot;&amp;gt;c\Güimar nº 27&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Código postal (a.e.n.)&amp;quot; typeName=&amp;quot;Código postal (a.e.n.)&amp;quot;&amp;gt;35230&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Localidad (a.e.n.)&amp;quot; typeName=&amp;quot;Localidad (a.e.n.)&amp;quot;&amp;gt;Arrecife&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Provincia (a.e.n.)&amp;quot; typeName=&amp;quot;Provincia (a.e.n.)&amp;quot;&amp;gt;Las Palmas&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Isla (a.e.n.)&amp;quot; typeName=&amp;quot;Isla (a.e.n.)&amp;quot;&amp;gt;Lanzarote&amp;lt;/FieldString&amp;gt;&amp;lt;/Section&amp;gt;&lt;br /&gt;
          &amp;lt;FieldMemo name=&amp;quot;Observaciones&amp;quot; typeName=&amp;quot;Observaciones&amp;quot;&amp;gt;Ejemplo de contenedor: Otra persona física&amp;lt;/FieldMemo&amp;gt;&lt;br /&gt;
          &amp;lt;Section name=&amp;quot;Datos personales&amp;quot; typeName=&amp;quot;Datos personales&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;FieldDate name=&amp;quot;Fecha de nacimiento&amp;quot; typeName=&amp;quot;Fecha de nacimiento&amp;quot;&amp;gt;1956:09:24&amp;lt;/FieldDate&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Sexo&amp;quot; typeName=&amp;quot;Sexo&amp;quot;&amp;gt;Hombre&amp;lt;/FieldString&amp;gt;&lt;br /&gt;
             &amp;lt;FieldString name=&amp;quot;Nacionalidad&amp;quot; typeName=&amp;quot;Nacionalidad&amp;quot;&amp;gt;Española&amp;lt;/FieldString&amp;gt;&amp;lt;/Section&amp;gt;&amp;lt;/Form&amp;gt;&amp;lt;/Components&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5702</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5702"/>
				<updated>2009-11-03T11:26:29Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación. El centro debe estar arrancado.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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 y cómo se estructura es fundamental para poder realizar las operaciones de exportación o importación de objetos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Formulario====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Form name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;(secciones|campos)&amp;lt;/Form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''secciones|campos''' hace referencia a las declaraciones hechas en el formulario.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sección====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Section name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;campos&amp;lt;/Section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''campos''' hace referencia con cada uno de los campos de la sección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Documento====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Document name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; subject=&amp;quot;texto&amp;quot;&amp;gt;archivo.rtf[tabla de remisiones]&amp;lt;/Document&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Las tablas de remisiones es un componente que puede o no estar definido, pero que sólo aparece una vez.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Tabla de remisiones====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una tabla de remisiones se comporta igual que una tabla de campos exceptuando que permite definir secciones.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Colección====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Collection name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Collection&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La cabecera declara la columna del sistema '''_filename''', que es independiente a la declaración de colección. El resto son las columnas de la definición. Cada fila será la misma cabecera donde las declaraciones '''Column''' contienen los valores de esa entrada en la colección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Clasificador====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Classifier name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Document document_filename=&amp;quot;archivo&amp;quot; document_date=&amp;quot;día/mes/año&amp;quot; document_user=&amp;quot;texto&amp;quot;&amp;gt;archivo&amp;lt;/Document&amp;gt;&amp;lt;/Classifier&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Por cada archivo adjunto existirá una entrada de tipo '''Document'''. En la exportación, el nombre del documento '''document_filename''' varía del nombre del documento exportado por una necesidad de diferenciar documentos de distintos contenedores que coinciden en su denominación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Catálogo====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Catalog name=&amp;quot;Contenido&amp;quot; typeName=&amp;quot;Contenido&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Catalog&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La cabecera se define con las tres columnas independientes de la declaración y el resto de columnas '''Column''' especificadas en la declaración. Cada fila será la misma cabecera donde las columnas contienen los valores de esa entrada en el catálogo.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, que será un fichero .xml. Por tanto, tendremos que realizar antes una exportación del objeto que vamos a vincular, para así obtener su fichero .xml. Si el atributo está vacío, (&amp;quot;&amp;quot;), el campo no tendrá ningún vinculo asignado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una exportación, 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Lista de comprobación=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCheckTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&amp;lt;Item selected=&amp;quot;[yes|no]&amp;quot;&amp;gt;texto&amp;lt;/Item&amp;gt;&amp;lt;/FieldCheckTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;Item&amp;lt;/code&amp;gt; es cada una de las entradas de la lista de comprobación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Tabla=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca '''Column''' es cada una de las columnas declaradas en la tabla, independientemente del tipo de la misma. Cada fila será el conjunto de declaraciones de campos definidas en la cabecera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ejemplos==&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5701</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5701"/>
				<updated>2009-11-03T11:25:44Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación. El centro debe estar arrancado.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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 y cómo se estructura es fundamental para poder realizar las operaciones de exportación o importación de objetos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, que será un fichero .xml. Por tanto, tendremos que realizar antes una exportación del objeto que vamos a vincular, para así obtener su fichero .xml. Si el atributo está vacío, (&amp;quot;&amp;quot;), el campo no tendrá ningún vinculo asignado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una exportación, 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Lista de comprobación=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCheckTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&amp;lt;Item selected=&amp;quot;[yes|no]&amp;quot;&amp;gt;texto&amp;lt;/Item&amp;gt;&amp;lt;/FieldCheckTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;Item&amp;lt;/code&amp;gt; es cada una de las entradas de la lista de comprobación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Tabla=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca '''Column''' es cada una de las columnas declaradas en la tabla, independientemente del tipo de la misma. Cada fila será el conjunto de declaraciones de campos definidas en la cabecera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Formulario====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Form name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;(secciones|campos)&amp;lt;/Form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''secciones|campos''' hace referencia a las declaraciones hechas en el formulario.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sección====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Section name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;campos&amp;lt;/Section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''campos''' hace referencia con cada uno de los campos de la sección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Documento====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Document name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; subject=&amp;quot;texto&amp;quot;&amp;gt;archivo.rtf[tabla de remisiones]&amp;lt;/Document&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Las tablas de remisiones es un componente que puede o no estar definido, pero que sólo aparece una vez.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Tabla de remisiones====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una tabla de remisiones se comporta igual que una tabla de campos exceptuando que permite definir secciones.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Colección====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Collection name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Collection&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La cabecera declara la columna del sistema '''_filename''', que es independiente a la declaración de colección. El resto son las columnas de la definición. Cada fila será la misma cabecera donde las declaraciones '''Column''' contienen los valores de esa entrada en la colección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Clasificador====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Classifier name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Document document_filename=&amp;quot;archivo&amp;quot; document_date=&amp;quot;día/mes/año&amp;quot; document_user=&amp;quot;texto&amp;quot;&amp;gt;archivo&amp;lt;/Document&amp;gt;&amp;lt;/Classifier&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Por cada archivo adjunto existirá una entrada de tipo '''Document'''. En la exportación, el nombre del documento '''document_filename''' varía del nombre del documento exportado por una necesidad de diferenciar documentos de distintos contenedores que coinciden en su denominación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Catálogo====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Catalog name=&amp;quot;Contenido&amp;quot; typeName=&amp;quot;Contenido&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Catalog&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La cabecera se define con las tres columnas independientes de la declaración y el resto de columnas '''Column''' especificadas en la declaración. Cada fila será la misma cabecera donde las columnas contienen los valores de esa entrada en el catálogo.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ejemplos==&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5700</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5700"/>
				<updated>2009-11-03T11:25:00Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Tabla */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación. El centro debe estar arrancado.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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 y cómo se estructura es fundamental para poder realizar las operaciones de exportación o importación de objetos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, que será un fichero .xml. Por tanto, tendremos que realizar antes una exportación del objeto que vamos a vincular, para así obtener su fichero .xml. Si el atributo está vacío, (&amp;quot;&amp;quot;), el campo no tendrá ningún vinculo asignado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una exportación, 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Lista de comprobación=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCheckTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&amp;lt;Item selected=&amp;quot;[yes|no]&amp;quot;&amp;gt;texto&amp;lt;/Item&amp;gt;&amp;lt;/FieldCheckTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;Item&amp;lt;/code&amp;gt; es cada una de las entradas de la lista de comprobación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Tabla=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca '''Column''' es cada una de las columnas declaradas en la tabla, independientemente del tipo de la misma. Cada fila será el conjunto de declaraciones de campos definidas en la cabecera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Formulario====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Form name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;(secciones|campos)&amp;lt;/Form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''secciones|campos''' hace referencia a las declaraciones hechas en el formulario.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sección====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Section name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;campos&amp;lt;/Section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''campos''' hace referencia con cada uno de los campos de la sección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Documento====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Document name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; subject=&amp;quot;texto&amp;quot;&amp;gt;archivo.rtf[tabla de remisiones]&amp;lt;/Document&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Las tablas de remisiones es un componente que puede o no estar definido, pero que sólo aparece una vez.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Tabla de remisiones====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una tabla de remisiones se comporta igual que una tabla de campos exceptuando que permite definir secciones.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Colección====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Collection name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Collection&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La cabecera declara la columna del sistema '''_filename''', que es independiente a la declaración de colección. El resto son las columnas de la definición. Cada fila será la misma cabecera donde las declaraciones '''Column''' contienen los valores de esa entrada en la colección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Clasificador====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Classifier name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Document document_filename=&amp;quot;archivo&amp;quot; document_date=&amp;quot;día/mes/año&amp;quot; document_user=&amp;quot;texto&amp;quot;&amp;gt;archivo&amp;lt;/Document&amp;gt;&amp;lt;/Classifier&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Por cada archivo adjunto existirá una entrada de tipo '''Document'''. En la exportación, el nombre del documento '''document_filename''' varía del nombre del documento exportado por una necesidad de diferenciar documentos de distintos contenedores que coinciden en su denominación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Catálogo====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Catalog name=&amp;quot;Contenido&amp;quot; typeName=&amp;quot;Contenido&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Catalog&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La cabecera se define con las tres columnas independientes de la declaración y el resto de columnas '''Column''' especificadas en la declaración. Cada fila será la misma cabecera donde las columnas contienen los valores de esa entrada en el catálogo.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5699</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5699"/>
				<updated>2009-11-03T11:24:50Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Formato de los componentes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación. El centro debe estar arrancado.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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 y cómo se estructura es fundamental para poder realizar las operaciones de exportación o importación de objetos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, que será un fichero .xml. Por tanto, tendremos que realizar antes una exportación del objeto que vamos a vincular, para así obtener su fichero .xml. Si el atributo está vacío, (&amp;quot;&amp;quot;), el campo no tendrá ningún vinculo asignado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una exportación, 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Lista de comprobación=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCheckTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&amp;lt;Item selected=&amp;quot;[yes|no]&amp;quot;&amp;gt;texto&amp;lt;/Item&amp;gt;&amp;lt;/FieldCheckTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;Item&amp;lt;/code&amp;gt; es cada una de las entradas de la lista de comprobación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Tabla=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Column&amp;quot; es cada una de las columnas declaradas en la tabla, independientemente del tipo de la misma. Cada fila será el conjunto de declaraciones de campos definidas en la cabecera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Formulario====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Form name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;(secciones|campos)&amp;lt;/Form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''secciones|campos''' hace referencia a las declaraciones hechas en el formulario.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sección====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Section name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;campos&amp;lt;/Section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''campos''' hace referencia con cada uno de los campos de la sección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Documento====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Document name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; subject=&amp;quot;texto&amp;quot;&amp;gt;archivo.rtf[tabla de remisiones]&amp;lt;/Document&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Las tablas de remisiones es un componente que puede o no estar definido, pero que sólo aparece una vez.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Tabla de remisiones====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una tabla de remisiones se comporta igual que una tabla de campos exceptuando que permite definir secciones.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Colección====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Collection name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Collection&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La cabecera declara la columna del sistema '''_filename''', que es independiente a la declaración de colección. El resto son las columnas de la definición. Cada fila será la misma cabecera donde las declaraciones '''Column''' contienen los valores de esa entrada en la colección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Clasificador====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Classifier name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Document document_filename=&amp;quot;archivo&amp;quot; document_date=&amp;quot;día/mes/año&amp;quot; document_user=&amp;quot;texto&amp;quot;&amp;gt;archivo&amp;lt;/Document&amp;gt;&amp;lt;/Classifier&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Por cada archivo adjunto existirá una entrada de tipo '''Document'''. En la exportación, el nombre del documento '''document_filename''' varía del nombre del documento exportado por una necesidad de diferenciar documentos de distintos contenedores que coinciden en su denominación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Catálogo====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Catalog name=&amp;quot;Contenido&amp;quot; typeName=&amp;quot;Contenido&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
          &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Catalog&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La cabecera se define con las tres columnas independientes de la declaración y el resto de columnas '''Column''' especificadas en la declaración. Cada fila será la misma cabecera donde las columnas contienen los valores de esa entrada en el catálogo.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5698</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5698"/>
				<updated>2009-11-03T11:20:52Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Tabla de remisiones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación. El centro debe estar arrancado.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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 y cómo se estructura es fundamental para poder realizar las operaciones de exportación o importación de objetos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, que será un fichero .xml. Por tanto, tendremos que realizar antes una exportación del objeto que vamos a vincular, para así obtener su fichero .xml. Si el atributo está vacío, (&amp;quot;&amp;quot;), el campo no tendrá ningún vinculo asignado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una exportación, 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Lista de comprobación=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCheckTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&amp;lt;Item selected=&amp;quot;[yes|no]&amp;quot;&amp;gt;texto&amp;lt;/Item&amp;gt;&amp;lt;/FieldCheckTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;Item&amp;lt;/code&amp;gt; es cada una de las entradas de la lista de comprobación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Tabla=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Column&amp;quot; es cada una de las columnas declaradas en la tabla, independientemente del tipo de la misma. Cada fila será el conjunto de declaraciones de campos definidas en la cabecera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Formulario====&lt;br /&gt;
 &amp;lt;Form name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;(secciones|campos)&amp;lt;/Form&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''secciones|campos''' hace referencia a las declaraciones hechas en el formulario.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sección====&lt;br /&gt;
 &amp;lt;Section name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;campos&amp;lt;/Section&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''campos''' hace referencia con cada uno de los campos de la sección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Documento====&lt;br /&gt;
 &amp;lt;Document name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; subject=&amp;quot;texto&amp;quot;&amp;gt;archivo.rtf[tabla de remisiones]&amp;lt;/Document&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Las tablas de remisiones es un componente que puede o no estar definido, pero que sólo aparece una vez.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Tabla de remisiones====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una tabla de remisiones se comporta igual que una tabla de campos exceptuando que permite definir secciones.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Colección====&lt;br /&gt;
 &amp;lt;Collection name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
       &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Collection&amp;gt;&lt;br /&gt;
 La cabecera declara la columna del sistema «_filename» , que es independiente a la declaración de colección, el resto son las columnas de la definición. Cada fila será la misma cabecera donde las declaraciones «Column» contienen los valores de esa entrada en la colección.&lt;br /&gt;
&lt;br /&gt;
====Clasificador====&lt;br /&gt;
 &amp;lt;Classifier name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Document document_filename=&amp;quot;archivo&amp;quot; document_date=&amp;quot;día/mes/año&amp;quot; document_user=&amp;quot;texto&amp;quot;&amp;gt;archivo&amp;lt;/Document&amp;gt;&amp;lt;/Classifier&amp;gt;&lt;br /&gt;
Por cada archivo adjunto existirá una entrada de tipo «Document». En la exportación el nombre del documento «document_filename» varía del nombre del documento exportado por una necesidad de diferenciar documentos de distintos contenedores que coinciden en su denominación.&lt;br /&gt;
&lt;br /&gt;
====Catálogo====&lt;br /&gt;
 &amp;lt;Catalog name=&amp;quot;Contenido&amp;quot; typeName=&amp;quot;Contenido&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
       &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&amp;lt;/Catalog&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La cabecera se define con las tres columnas independientes de la declaración y el resto de columnas «Column» especificadas en la declaración. Cada fila será la misma cabecera donde las columnas contienen los valores de esa entrada en el catálogo.&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5697</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5697"/>
				<updated>2009-11-03T11:19:54Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Documento */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación. El centro debe estar arrancado.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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 y cómo se estructura es fundamental para poder realizar las operaciones de exportación o importación de objetos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, que será un fichero .xml. Por tanto, tendremos que realizar antes una exportación del objeto que vamos a vincular, para así obtener su fichero .xml. Si el atributo está vacío, (&amp;quot;&amp;quot;), el campo no tendrá ningún vinculo asignado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una exportación, 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Lista de comprobación=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCheckTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&amp;lt;Item selected=&amp;quot;[yes|no]&amp;quot;&amp;gt;texto&amp;lt;/Item&amp;gt;&amp;lt;/FieldCheckTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;Item&amp;lt;/code&amp;gt; es cada una de las entradas de la lista de comprobación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Tabla=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Column&amp;quot; es cada una de las columnas declaradas en la tabla, independientemente del tipo de la misma. Cada fila será el conjunto de declaraciones de campos definidas en la cabecera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Formulario====&lt;br /&gt;
 &amp;lt;Form name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;(secciones|campos)&amp;lt;/Form&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''secciones|campos''' hace referencia a las declaraciones hechas en el formulario.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sección====&lt;br /&gt;
 &amp;lt;Section name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;campos&amp;lt;/Section&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''campos''' hace referencia con cada uno de los campos de la sección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Documento====&lt;br /&gt;
 &amp;lt;Document name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; subject=&amp;quot;texto&amp;quot;&amp;gt;archivo.rtf[tabla de remisiones]&amp;lt;/Document&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Las tablas de remisiones es un componente que puede o no estar definido, pero que sólo aparece una vez.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Tabla de remisiones====&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
       &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
 Una tabla de remisiones se comporta igual que una tabla de campos exceptuando que permite definir secciones.&lt;br /&gt;
&lt;br /&gt;
====Colección====&lt;br /&gt;
 &amp;lt;Collection name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
       &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Collection&amp;gt;&lt;br /&gt;
 La cabecera declara la columna del sistema «_filename» , que es independiente a la declaración de colección, el resto son las columnas de la definición. Cada fila será la misma cabecera donde las declaraciones «Column» contienen los valores de esa entrada en la colección.&lt;br /&gt;
&lt;br /&gt;
====Clasificador====&lt;br /&gt;
 &amp;lt;Classifier name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Document document_filename=&amp;quot;archivo&amp;quot; document_date=&amp;quot;día/mes/año&amp;quot; document_user=&amp;quot;texto&amp;quot;&amp;gt;archivo&amp;lt;/Document&amp;gt;&amp;lt;/Classifier&amp;gt;&lt;br /&gt;
Por cada archivo adjunto existirá una entrada de tipo «Document». En la exportación el nombre del documento «document_filename» varía del nombre del documento exportado por una necesidad de diferenciar documentos de distintos contenedores que coinciden en su denominación.&lt;br /&gt;
&lt;br /&gt;
====Catálogo====&lt;br /&gt;
 &amp;lt;Catalog name=&amp;quot;Contenido&amp;quot; typeName=&amp;quot;Contenido&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
       &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&amp;lt;/Catalog&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La cabecera se define con las tres columnas independientes de la declaración y el resto de columnas «Column» especificadas en la declaración. Cada fila será la misma cabecera donde las columnas contienen los valores de esa entrada en el catálogo.&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5696</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5696"/>
				<updated>2009-11-03T11:19:42Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Formulario */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación. El centro debe estar arrancado.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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 y cómo se estructura es fundamental para poder realizar las operaciones de exportación o importación de objetos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, que será un fichero .xml. Por tanto, tendremos que realizar antes una exportación del objeto que vamos a vincular, para así obtener su fichero .xml. Si el atributo está vacío, (&amp;quot;&amp;quot;), el campo no tendrá ningún vinculo asignado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una exportación, 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Lista de comprobación=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCheckTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&amp;lt;Item selected=&amp;quot;[yes|no]&amp;quot;&amp;gt;texto&amp;lt;/Item&amp;gt;&amp;lt;/FieldCheckTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;Item&amp;lt;/code&amp;gt; es cada una de las entradas de la lista de comprobación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Tabla=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Column&amp;quot; es cada una de las columnas declaradas en la tabla, independientemente del tipo de la misma. Cada fila será el conjunto de declaraciones de campos definidas en la cabecera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Formulario====&lt;br /&gt;
 &amp;lt;Form name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;(secciones|campos)&amp;lt;/Form&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''secciones|campos''' hace referencia a las declaraciones hechas en el formulario.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sección====&lt;br /&gt;
 &amp;lt;Section name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;campos&amp;lt;/Section&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''campos''' hace referencia con cada uno de los campos de la sección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Documento====&lt;br /&gt;
 &amp;lt;Document name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; subject=&amp;quot;texto&amp;quot;&amp;gt;archivo.rtf[tabla de remisiones]&amp;lt;/Document&amp;gt;&lt;br /&gt;
 Las tablas de remisiones es un componente que puede o no estar definido, pero que sólo aparece una vez.&lt;br /&gt;
&lt;br /&gt;
====Tabla de remisiones====&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
       &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
 Una tabla de remisiones se comporta igual que una tabla de campos exceptuando que permite definir secciones.&lt;br /&gt;
&lt;br /&gt;
====Colección====&lt;br /&gt;
 &amp;lt;Collection name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
       &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Collection&amp;gt;&lt;br /&gt;
 La cabecera declara la columna del sistema «_filename» , que es independiente a la declaración de colección, el resto son las columnas de la definición. Cada fila será la misma cabecera donde las declaraciones «Column» contienen los valores de esa entrada en la colección.&lt;br /&gt;
&lt;br /&gt;
====Clasificador====&lt;br /&gt;
 &amp;lt;Classifier name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Document document_filename=&amp;quot;archivo&amp;quot; document_date=&amp;quot;día/mes/año&amp;quot; document_user=&amp;quot;texto&amp;quot;&amp;gt;archivo&amp;lt;/Document&amp;gt;&amp;lt;/Classifier&amp;gt;&lt;br /&gt;
Por cada archivo adjunto existirá una entrada de tipo «Document». En la exportación el nombre del documento «document_filename» varía del nombre del documento exportado por una necesidad de diferenciar documentos de distintos contenedores que coinciden en su denominación.&lt;br /&gt;
&lt;br /&gt;
====Catálogo====&lt;br /&gt;
 &amp;lt;Catalog name=&amp;quot;Contenido&amp;quot; typeName=&amp;quot;Contenido&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
       &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&amp;lt;/Catalog&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La cabecera se define con las tres columnas independientes de la declaración y el resto de columnas «Column» especificadas en la declaración. Cada fila será la misma cabecera donde las columnas contienen los valores de esa entrada en el catálogo.&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5695</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5695"/>
				<updated>2009-11-03T11:19:34Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Sección */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación. El centro debe estar arrancado.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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 y cómo se estructura es fundamental para poder realizar las operaciones de exportación o importación de objetos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, que será un fichero .xml. Por tanto, tendremos que realizar antes una exportación del objeto que vamos a vincular, para así obtener su fichero .xml. Si el atributo está vacío, (&amp;quot;&amp;quot;), el campo no tendrá ningún vinculo asignado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una exportación, 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Lista de comprobación=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCheckTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&amp;lt;Item selected=&amp;quot;[yes|no]&amp;quot;&amp;gt;texto&amp;lt;/Item&amp;gt;&amp;lt;/FieldCheckTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;Item&amp;lt;/code&amp;gt; es cada una de las entradas de la lista de comprobación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Tabla=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Column&amp;quot; es cada una de las columnas declaradas en la tabla, independientemente del tipo de la misma. Cada fila será el conjunto de declaraciones de campos definidas en la cabecera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Formulario====&lt;br /&gt;
 &amp;lt;Form name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;(secciones|campos)&amp;lt;/Form&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;(secciones|campos) hace referencia a las declaraciones hechas en el formulario.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sección====&lt;br /&gt;
 &amp;lt;Section name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;campos&amp;lt;/Section&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;'''campos''' hace referencia con cada uno de los campos de la sección.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Documento====&lt;br /&gt;
 &amp;lt;Document name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; subject=&amp;quot;texto&amp;quot;&amp;gt;archivo.rtf[tabla de remisiones]&amp;lt;/Document&amp;gt;&lt;br /&gt;
 Las tablas de remisiones es un componente que puede o no estar definido, pero que sólo aparece una vez.&lt;br /&gt;
&lt;br /&gt;
====Tabla de remisiones====&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
       &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
 Una tabla de remisiones se comporta igual que una tabla de campos exceptuando que permite definir secciones.&lt;br /&gt;
&lt;br /&gt;
====Colección====&lt;br /&gt;
 &amp;lt;Collection name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
       &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Collection&amp;gt;&lt;br /&gt;
 La cabecera declara la columna del sistema «_filename» , que es independiente a la declaración de colección, el resto son las columnas de la definición. Cada fila será la misma cabecera donde las declaraciones «Column» contienen los valores de esa entrada en la colección.&lt;br /&gt;
&lt;br /&gt;
====Clasificador====&lt;br /&gt;
 &amp;lt;Classifier name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Document document_filename=&amp;quot;archivo&amp;quot; document_date=&amp;quot;día/mes/año&amp;quot; document_user=&amp;quot;texto&amp;quot;&amp;gt;archivo&amp;lt;/Document&amp;gt;&amp;lt;/Classifier&amp;gt;&lt;br /&gt;
Por cada archivo adjunto existirá una entrada de tipo «Document». En la exportación el nombre del documento «document_filename» varía del nombre del documento exportado por una necesidad de diferenciar documentos de distintos contenedores que coinciden en su denominación.&lt;br /&gt;
&lt;br /&gt;
====Catálogo====&lt;br /&gt;
 &amp;lt;Catalog name=&amp;quot;Contenido&amp;quot; typeName=&amp;quot;Contenido&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
       &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&amp;lt;/Catalog&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La cabecera se define con las tres columnas independientes de la declaración y el resto de columnas «Column» especificadas en la declaración. Cada fila será la misma cabecera donde las columnas contienen los valores de esa entrada en el catálogo.&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5694</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5694"/>
				<updated>2009-11-03T11:18:51Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Formulario */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación. El centro debe estar arrancado.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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 y cómo se estructura es fundamental para poder realizar las operaciones de exportación o importación de objetos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, que será un fichero .xml. Por tanto, tendremos que realizar antes una exportación del objeto que vamos a vincular, para así obtener su fichero .xml. Si el atributo está vacío, (&amp;quot;&amp;quot;), el campo no tendrá ningún vinculo asignado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una exportación, 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Lista de comprobación=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCheckTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&amp;lt;Item selected=&amp;quot;[yes|no]&amp;quot;&amp;gt;texto&amp;lt;/Item&amp;gt;&amp;lt;/FieldCheckTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;Item&amp;lt;/code&amp;gt; es cada una de las entradas de la lista de comprobación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Tabla=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Column&amp;quot; es cada una de las columnas declaradas en la tabla, independientemente del tipo de la misma. Cada fila será el conjunto de declaraciones de campos definidas en la cabecera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Formulario====&lt;br /&gt;
 &amp;lt;Form name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;(secciones|campos)&amp;lt;/Form&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;(secciones|campos) hace referencia a las declaraciones hechas en el formulario.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sección====&lt;br /&gt;
 &amp;lt;Section name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;campos&amp;lt;/Section&amp;gt;&lt;br /&gt;
 «campos» hace referencia con cada uno de los campos de la sección.&lt;br /&gt;
&lt;br /&gt;
====Documento====&lt;br /&gt;
 &amp;lt;Document name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; subject=&amp;quot;texto&amp;quot;&amp;gt;archivo.rtf[tabla de remisiones]&amp;lt;/Document&amp;gt;&lt;br /&gt;
 Las tablas de remisiones es un componente que puede o no estar definido, pero que sólo aparece una vez.&lt;br /&gt;
&lt;br /&gt;
====Tabla de remisiones====&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
       &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
 Una tabla de remisiones se comporta igual que una tabla de campos exceptuando que permite definir secciones.&lt;br /&gt;
&lt;br /&gt;
====Colección====&lt;br /&gt;
 &amp;lt;Collection name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
       &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Collection&amp;gt;&lt;br /&gt;
 La cabecera declara la columna del sistema «_filename» , que es independiente a la declaración de colección, el resto son las columnas de la definición. Cada fila será la misma cabecera donde las declaraciones «Column» contienen los valores de esa entrada en la colección.&lt;br /&gt;
&lt;br /&gt;
====Clasificador====&lt;br /&gt;
 &amp;lt;Classifier name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Document document_filename=&amp;quot;archivo&amp;quot; document_date=&amp;quot;día/mes/año&amp;quot; document_user=&amp;quot;texto&amp;quot;&amp;gt;archivo&amp;lt;/Document&amp;gt;&amp;lt;/Classifier&amp;gt;&lt;br /&gt;
Por cada archivo adjunto existirá una entrada de tipo «Document». En la exportación el nombre del documento «document_filename» varía del nombre del documento exportado por una necesidad de diferenciar documentos de distintos contenedores que coinciden en su denominación.&lt;br /&gt;
&lt;br /&gt;
====Catálogo====&lt;br /&gt;
 &amp;lt;Catalog name=&amp;quot;Contenido&amp;quot; typeName=&amp;quot;Contenido&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
       &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&amp;lt;/Catalog&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La cabecera se define con las tres columnas independientes de la declaración y el resto de columnas «Column» especificadas en la declaración. Cada fila será la misma cabecera donde las columnas contienen los valores de esa entrada en el catálogo.&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5693</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5693"/>
				<updated>2009-11-03T11:18:39Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Formulario */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación. El centro debe estar arrancado.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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 y cómo se estructura es fundamental para poder realizar las operaciones de exportación o importación de objetos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, que será un fichero .xml. Por tanto, tendremos que realizar antes una exportación del objeto que vamos a vincular, para así obtener su fichero .xml. Si el atributo está vacío, (&amp;quot;&amp;quot;), el campo no tendrá ningún vinculo asignado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una exportación, 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Lista de comprobación=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCheckTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&amp;lt;Item selected=&amp;quot;[yes|no]&amp;quot;&amp;gt;texto&amp;lt;/Item&amp;gt;&amp;lt;/FieldCheckTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;Item&amp;lt;/code&amp;gt; es cada una de las entradas de la lista de comprobación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Tabla=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Column&amp;quot; es cada una de las columnas declaradas en la tabla, independientemente del tipo de la misma. Cada fila será el conjunto de declaraciones de campos definidas en la cabecera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Formulario====&lt;br /&gt;
 &amp;lt;Form name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;(secciones|campos)&amp;lt;/Form&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;(secciones|campos) hace referencia a las declaraciones hechas en el formulario.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sección====&lt;br /&gt;
 &amp;lt;Section name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;campos&amp;lt;/Section&amp;gt;&lt;br /&gt;
 «campos» hace referencia con cada uno de los campos de la sección.&lt;br /&gt;
&lt;br /&gt;
====Documento====&lt;br /&gt;
 &amp;lt;Document name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; subject=&amp;quot;texto&amp;quot;&amp;gt;archivo.rtf[tabla de remisiones]&amp;lt;/Document&amp;gt;&lt;br /&gt;
 Las tablas de remisiones es un componente que puede o no estar definido, pero que sólo aparece una vez.&lt;br /&gt;
&lt;br /&gt;
====Tabla de remisiones====&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
       &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
 Una tabla de remisiones se comporta igual que una tabla de campos exceptuando que permite definir secciones.&lt;br /&gt;
&lt;br /&gt;
====Colección====&lt;br /&gt;
 &amp;lt;Collection name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
       &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Collection&amp;gt;&lt;br /&gt;
 La cabecera declara la columna del sistema «_filename» , que es independiente a la declaración de colección, el resto son las columnas de la definición. Cada fila será la misma cabecera donde las declaraciones «Column» contienen los valores de esa entrada en la colección.&lt;br /&gt;
&lt;br /&gt;
====Clasificador====&lt;br /&gt;
 &amp;lt;Classifier name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Document document_filename=&amp;quot;archivo&amp;quot; document_date=&amp;quot;día/mes/año&amp;quot; document_user=&amp;quot;texto&amp;quot;&amp;gt;archivo&amp;lt;/Document&amp;gt;&amp;lt;/Classifier&amp;gt;&lt;br /&gt;
Por cada archivo adjunto existirá una entrada de tipo «Document». En la exportación el nombre del documento «document_filename» varía del nombre del documento exportado por una necesidad de diferenciar documentos de distintos contenedores que coinciden en su denominación.&lt;br /&gt;
&lt;br /&gt;
====Catálogo====&lt;br /&gt;
 &amp;lt;Catalog name=&amp;quot;Contenido&amp;quot; typeName=&amp;quot;Contenido&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
       &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&amp;lt;/Catalog&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La cabecera se define con las tres columnas independientes de la declaración y el resto de columnas «Column» especificadas en la declaración. Cada fila será la misma cabecera donde las columnas contienen los valores de esa entrada en el catálogo.&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5692</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5692"/>
				<updated>2009-11-03T11:15:29Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Estructura de un objeto en fichero XML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación. El centro debe estar arrancado.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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 y cómo se estructura es fundamental para poder realizar las operaciones de exportación o importación de objetos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, que será un fichero .xml. Por tanto, tendremos que realizar antes una exportación del objeto que vamos a vincular, para así obtener su fichero .xml. Si el atributo está vacío, (&amp;quot;&amp;quot;), el campo no tendrá ningún vinculo asignado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una exportación, 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Lista de comprobación=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCheckTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&amp;lt;Item selected=&amp;quot;[yes|no]&amp;quot;&amp;gt;texto&amp;lt;/Item&amp;gt;&amp;lt;/FieldCheckTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;Item&amp;lt;/code&amp;gt; es cada una de las entradas de la lista de comprobación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Tabla=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Column&amp;quot; es cada una de las columnas declaradas en la tabla, independientemente del tipo de la misma. Cada fila será el conjunto de declaraciones de campos definidas en la cabecera.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Formulario====&lt;br /&gt;
 &amp;lt;Form name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;(secciones|campos)&amp;lt;/Form&amp;gt;&lt;br /&gt;
«(secciones|campos)» hace referencia a las declaraciones hechas en el formulario.&lt;br /&gt;
&lt;br /&gt;
====Sección====&lt;br /&gt;
 &amp;lt;Section name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;campos&amp;lt;/Section&amp;gt;&lt;br /&gt;
 «campos» hace referencia con cada uno de los campos de la sección.&lt;br /&gt;
&lt;br /&gt;
====Documento====&lt;br /&gt;
 &amp;lt;Document name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; subject=&amp;quot;texto&amp;quot;&amp;gt;archivo.rtf[tabla de remisiones]&amp;lt;/Document&amp;gt;&lt;br /&gt;
 Las tablas de remisiones es un componente que puede o no estar definido, pero que sólo aparece una vez.&lt;br /&gt;
&lt;br /&gt;
====Tabla de remisiones====&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
       &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
 Una tabla de remisiones se comporta igual que una tabla de campos exceptuando que permite definir secciones.&lt;br /&gt;
&lt;br /&gt;
====Colección====&lt;br /&gt;
 &amp;lt;Collection name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
       &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&lt;br /&gt;
 &amp;lt;/Collection&amp;gt;&lt;br /&gt;
 La cabecera declara la columna del sistema «_filename» , que es independiente a la declaración de colección, el resto son las columnas de la definición. Cada fila será la misma cabecera donde las declaraciones «Column» contienen los valores de esa entrada en la colección.&lt;br /&gt;
&lt;br /&gt;
====Clasificador====&lt;br /&gt;
 &amp;lt;Classifier name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Document document_filename=&amp;quot;archivo&amp;quot; document_date=&amp;quot;día/mes/año&amp;quot; document_user=&amp;quot;texto&amp;quot;&amp;gt;archivo&amp;lt;/Document&amp;gt;&amp;lt;/Classifier&amp;gt;&lt;br /&gt;
Por cada archivo adjunto existirá una entrada de tipo «Document». En la exportación el nombre del documento «document_filename» varía del nombre del documento exportado por una necesidad de diferenciar documentos de distintos contenedores que coinciden en su denominación.&lt;br /&gt;
&lt;br /&gt;
====Catálogo====&lt;br /&gt;
 &amp;lt;Catalog name=&amp;quot;Contenido&amp;quot; typeName=&amp;quot;Contenido&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
       &amp;lt;Rows&amp;gt;&lt;br /&gt;
       &amp;lt;Row&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;_filename&amp;quot;/&amp;gt;archivo.xml&amp;lt;/Column&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/Column&amp;gt;&amp;lt;/Row&amp;gt;&amp;lt;/Rows&amp;gt;&amp;lt;/Catalog&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La cabecera se define con las tres columnas independientes de la declaración y el resto de columnas «Column» especificadas en la declaración. Cada fila será la misma cabecera donde las columnas contienen los valores de esa entrada en el catálogo.&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5691</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5691"/>
				<updated>2009-11-03T11:10:45Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Campos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación. El centro debe estar arrancado.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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 y cómo se estructura es fundamental para poder realizar las operaciones de exportación o importación de objetos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, que será un fichero .xml. Por tanto, tendremos que realizar antes una exportación del objeto que vamos a vincular, para así obtener su fichero .xml. Si el atributo está vacío, (&amp;quot;&amp;quot;), el campo no tendrá ningún vinculo asignado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una exportación, 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Lista de comprobación=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCheckTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&amp;lt;Item selected=&amp;quot;[yes|no]&amp;quot;&amp;gt;texto&amp;lt;/Item&amp;gt;&amp;lt;/FieldCheckTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;Item&amp;lt;/code&amp;gt; es cada una de las entradas de la lista de comprobación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Tabla=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldTable name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Column name=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Rows/&amp;gt;&lt;br /&gt;
 &amp;lt;/FieldTable&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Column&amp;quot; es cada una de las columnas declaradas en la tabla, independientemente del tipo de la misma. Cada fila será el conjunto de declaraciones de campos definidas en la cabecera.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5690</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5690"/>
				<updated>2009-11-03T11:05:22Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Configuración de parámetros */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación. El centro debe estar arrancado.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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 y cómo se estructura es fundamental para poder realizar las operaciones de exportación o importación de objetos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, que será un fichero .xml. Por tanto, tendremos que realizar antes una exportación del objeto que vamos a vincular, para así obtener su fichero .xml. Si el atributo está vacío, (&amp;quot;&amp;quot;), el campo no tendrá ningún vinculo asignado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una exportación, 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.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5689</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5689"/>
				<updated>2009-11-03T11:04:35Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Vínculo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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 y cómo se estructura es fundamental para poder realizar las operaciones de exportación o importación de objetos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, que será un fichero .xml. Por tanto, tendremos que realizar antes una exportación del objeto que vamos a vincular, para así obtener su fichero .xml. Si el atributo está vacío, (&amp;quot;&amp;quot;), el campo no tendrá ningún vinculo asignado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una exportación, 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.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5688</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5688"/>
				<updated>2009-11-03T10:54:40Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Para la importación (.imp) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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 y cómo se estructura es fundamental para poder realizar las operaciones de exportación o importación de objetos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, 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.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5687</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5687"/>
				<updated>2009-11-03T10:53:54Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Estructura de un objeto en fichero XML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos un ejemplo a continuación:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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 y cómo se estructura es fundamental para poder realizar las operaciones de exportación o importación de objetos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, 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.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5686</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5686"/>
				<updated>2009-11-03T10:53:19Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Para la importación (.imp) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos un ejemplo a continuación:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, 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.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5685</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5685"/>
				<updated>2009-11-03T10:52:40Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Para la exportación (.exp) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos un ejemplo a continuación:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|thumb|403px|Parámetros para la importación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, 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.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5684</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5684"/>
				<updated>2009-11-03T10:51:55Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Para la importación (.imp) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos un ejemplo a continuación:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|thumb|406px|Parámetros para la exportación]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|border|403px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, 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.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5683</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5683"/>
				<updated>2009-11-03T10:51:28Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Configuración de parámetros */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|thumb|305px|Parámetros de egImportExport]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos un ejemplo a continuación:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|border|406px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|border|403px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, 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.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5682</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5682"/>
				<updated>2009-11-03T10:47:58Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En este artículo explicaremos cómo configurar la aplicación para ejecutar tanto una exportación como una importación, así como a saber interpretar y entender la información en los ficheros XML ya que se trabajará con ellos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|border|305px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos un ejemplo a continuación:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|border|406px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|border|403px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, 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.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5681</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5681"/>
				<updated>2009-11-03T10:44:48Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|border|305px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos un ejemplo a continuación:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|border|406px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|border|403px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, 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.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5680</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5680"/>
				<updated>2009-11-03T10:44:00Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Para la exportación (.exp) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|border|305px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos un ejemplo a continuación:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|border|406px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|border|403px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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). Si por el contrario tenemos seleccionado el modo MODIFIED, la forma de saber si un contenedor que se va a exportar ha sido modificado en comparación con su última exportación, es accediendo al atributo &amp;lt;code&amp;gt;Modified&amp;lt;/code&amp;gt; en la cabecera del fichero .xml de la última exportación. Ese valor se comparará con la propiedad que guarda la última fecha de modificación del objeto en egeasy, y si son distintas, se procederá a una nueva exportación. Para que la comparación sea posible, es necesario mantener los ficheros .xml de la última exportación en el directorio especificado para ello, o si lo cambiamos, mover los ficheros al nuevo directorio.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez ejecutada la exportación, la nomenclatura de los nombres de los ficheros .xml generados será la siguiente '''RRC@DRC@NOMBRE_DEL_OBJETO'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, 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.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5679</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5679"/>
				<updated>2009-11-03T10:19:47Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Para la exportación (.exp) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|border|305px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos un ejemplo a continuación:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|border|406px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*'''MODE''': al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|border|403px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, 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.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5678</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5678"/>
				<updated>2009-11-03T10:18:51Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Para la exportación (.exp) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|border|305px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos un ejemplo a continuación:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|border|406px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_CLASS''': nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*'''OUTPUT_DIR''': directorio de destino de los objetos exportados.&lt;br /&gt;
:*'''DOCUMENT_DIR''': directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*'''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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*MODE: al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|border|403px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''NOT_EXPORTED''': se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*'''MODIFIED''': se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, 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.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5677</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5677"/>
				<updated>2009-11-03T10:17:56Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Para la importación (.imp) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|border|305px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''OBJECT_DIR''': ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*'''IMPORTED_DIR''': ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*'''DOCUMENT_DIR''': ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*'''MODE''': modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos un ejemplo a continuación:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|border|406px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*OBJECT_CLASS: nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*OUTPUT_DIR: directorio de destino de los objetos exportados.&lt;br /&gt;
:*DOCUMENT_DIR: directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*MODE: al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|border|403px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*NOT_EXPORTED: se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*MODIFIED: se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, 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.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5676</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5676"/>
				<updated>2009-11-03T10:17:28Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Configuración de parámetros */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''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.&lt;br /&gt;
:*'''PASSWORD''': palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*'''CENTER''': nombre del centro al que se va a conectar la aplicación.&lt;br /&gt;
:*'''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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|border|305px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*OBJECT_DIR: ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*IMPORTED_DIR: ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*DOCUMENT_DIR: ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*MODE: modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos un ejemplo a continuación:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|border|406px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*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.&lt;br /&gt;
:*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.&lt;br /&gt;
:*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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*OBJECT_CLASS: nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*OUTPUT_DIR: directorio de destino de los objetos exportados.&lt;br /&gt;
:*DOCUMENT_DIR: directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*MODE: al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|border|403px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*NOT_EXPORTED: se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*MODIFIED: se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, 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.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5675</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5675"/>
				<updated>2009-11-03T10:16:41Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Para la exportación (.exp) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*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.&lt;br /&gt;
:*PASSWORD: palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*CENTER: nombre del centro al que se va a conectar la aplicación.&lt;br /&gt;
:*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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|border|305px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*OBJECT_DIR: ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*IMPORTED_DIR: ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*DOCUMENT_DIR: ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*MODE: modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos un ejemplo a continuación:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|border|406px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*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.&lt;br /&gt;
:*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.&lt;br /&gt;
:*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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*OBJECT_CLASS: nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*OUTPUT_DIR: directorio de destino de los objetos exportados.&lt;br /&gt;
:*DOCUMENT_DIR: directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*MODE: al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|border|403px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*NOT_EXPORTED: se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*MODIFIED: se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, 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.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5674</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5674"/>
				<updated>2009-11-03T10:16:33Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Para la exportación (.exp) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*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.&lt;br /&gt;
:*PASSWORD: palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*CENTER: nombre del centro al que se va a conectar la aplicación.&lt;br /&gt;
:*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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|border|305px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*OBJECT_DIR: ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*IMPORTED_DIR: ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*DOCUMENT_DIR: ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*MODE: modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos un ejemplo a continuación:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|border|406px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*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.&lt;br /&gt;
:*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.&lt;br /&gt;
:*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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*OBJECT_CLASS: nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*OUTPUT_DIR: directorio de destino de los objetos exportados.&lt;br /&gt;
:*DOCUMENT_DIR: directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*MODE: al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE003.jpg|border|406px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*NOT_EXPORTED: se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*MODIFIED: se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, 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.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5673</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5673"/>
				<updated>2009-11-03T10:15:45Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Para la importación (.imp) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*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.&lt;br /&gt;
:*PASSWORD: palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*CENTER: nombre del centro al que se va a conectar la aplicación.&lt;br /&gt;
:*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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|border|305px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*OBJECT_DIR: ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*IMPORTED_DIR: ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*DOCUMENT_DIR: ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*MODE: modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos un ejemplo a continuación:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|border|406px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*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.&lt;br /&gt;
:*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.&lt;br /&gt;
:*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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A la hora de almacenar los ficheros .xml en la carpeta de documentos a importar, es necesario tener en cuenta el nombre que tendrán estos ficheros. El único aspecto a controlar es que no se repita ningún 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 quiera 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El dominio es otro punto a tener en cuenta. Si los contenedores a importar tienen 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 ese contenedor mediante un fichero .xml; que permita 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez comprobados todos los parámetros y requisitos que necesita la importación para ejecutarse correctamente, ya es posible lanzar la aplicación egImportExport y efectuar la importación. Si el proceso se realiza correctamente, los ficheros .xml importados se moverán a la carpeta especificada en el parámetro &amp;quot;IMPORTED_DIR&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Téngase en cuenta, que 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*OBJECT_CLASS: nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*OUTPUT_DIR: directorio de destino de los objetos exportados.&lt;br /&gt;
:*DOCUMENT_DIR: directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*MODE: al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|border|406px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*NOT_EXPORTED: se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*MODIFIED: se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, 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.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5672</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5672"/>
				<updated>2009-11-03T10:02:27Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Para la importación (.imp) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*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.&lt;br /&gt;
:*PASSWORD: palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*CENTER: nombre del centro al que se va a conectar la aplicación.&lt;br /&gt;
:*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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|border|305px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*OBJECT_DIR: ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*IMPORTED_DIR: ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*DOCUMENT_DIR: ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*MODE: modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos un ejemplo a continuación:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|border|406px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;quot;MODE&amp;quot;, ya que tienen que estar incluidos en el fichero de configuración.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos a continuación las particularidades de cada modo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*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.&lt;br /&gt;
:*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.&lt;br /&gt;
:*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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez hemos terminado de configurar el fichero, hay que tener en cuenta ciertos aspectos antes de iniciar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Archivos a importar&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Entre los ejemplo adjuntos al documento se encuentra un proceso de importación que describe de forma esquemática los pasos recomendados anteriormente.&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*OBJECT_CLASS: nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*OUTPUT_DIR: directorio de destino de los objetos exportados.&lt;br /&gt;
:*DOCUMENT_DIR: directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*MODE: al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|border|406px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*NOT_EXPORTED: se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*MODIFIED: se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, 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.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5671</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5671"/>
				<updated>2009-11-03T09:37:48Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Campos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*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.&lt;br /&gt;
:*PASSWORD: palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*CENTER: nombre del centro al que se va a conectar la aplicación.&lt;br /&gt;
:*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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|border|305px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*OBJECT_DIR: ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*IMPORTED_DIR: ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*DOCUMENT_DIR: ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*MODE: modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos un ejemplo a continuación:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|border|406px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*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.&lt;br /&gt;
:*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.&lt;br /&gt;
:*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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez configurado este fichero, ya podemos ejecutar la aplicación y realizar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*OBJECT_CLASS: nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*OUTPUT_DIR: directorio de destino de los objetos exportados.&lt;br /&gt;
:*DOCUMENT_DIR: directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*MODE: al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|border|406px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*NOT_EXPORTED: se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*MODIFIED: se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; se especifica el cargo de la persona que firma.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Timbre=====&lt;br /&gt;
 &amp;lt;FieldStamp name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;número&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldStamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Cuando realizamos una importación, el objeto vinculado se especifica en el atributo &amp;lt;code&amp;gt;target_filename&amp;lt;/code&amp;gt;, 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.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5670</id>
		<title>EgImportExport</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgImportExport&amp;diff=5670"/>
				<updated>2009-11-02T15:01:58Z</updated>
		
		<summary type="html">&lt;p&gt;Irodriguez: /* Campos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuración de parámetros==&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*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.&lt;br /&gt;
:*PASSWORD: palabra de paso asociada al usuario, si la tuviera.&lt;br /&gt;
:*CENTER: nombre del centro al que se va a conectar la aplicación.&lt;br /&gt;
:*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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE001.jpg|border|305px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ficheros de configuración==&lt;br /&gt;
===Para la importación (.imp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;El fichero de configuración de una importación tendrá como nombre el que se le quiera dar, seguido de la extensión '''.imp''' (&amp;lt;code&amp;gt;nombre.imp&amp;lt;/code&amp;gt;). En su contenido se incluirán aquellos parámetros que configurarán las características de la importación. Dichos parámetros son:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*OBJECT_DIR: ruta donde se encuentran los objetos a importar, representados como ficheros .xml.&lt;br /&gt;
:*IMPORTED_DIR: ruta donde se irán moviendo los ficheros .xml cuyos objetos se hayan importado con éxito.&lt;br /&gt;
:*DOCUMENT_DIR: ruta donde se incluyen los documentos que se quieran importar, si los hubiere.&lt;br /&gt;
:*MODE: modo de importación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Veamos un ejemplo a continuación:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|border|406px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*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.&lt;br /&gt;
:*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.&lt;br /&gt;
:*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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Una vez configurado este fichero, ya podemos ejecutar la aplicación y realizar la importación.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Para la exportación (.exp)===&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*OBJECT_CLASS: nombre de la definición de aquellos objetos que se quieren exportar.&lt;br /&gt;
:*OUTPUT_DIR: directorio de destino de los objetos exportados.&lt;br /&gt;
:*DOCUMENT_DIR: directorio de destino de aquellos documentos que hayan sido exportados.&lt;br /&gt;
:*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 &amp;quot;'''S'''&amp;quot; y para desactivarlo le asignaremos la letra &amp;quot;'''N'''&amp;quot;.&lt;br /&gt;
:*MODE: al igual que para las importaciones, puede haber varios modos de exportar objetos que explicaremos más adelante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ejemplo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |[[Imagen:egIE002.jpg|border|406px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;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:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*NOT_EXPORTED: se exportan aquellos objetos que nunca han sido exportados.&lt;br /&gt;
:*MODIFIED: se exportan aquellos objetos que han sido modificados respecto a su última exportación&lt;br /&gt;
:*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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pero, ¿cómo sabe la aplicación qué objetos han sido o no exportados alguna vez?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;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 &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Estructura de un objeto en fichero XML==&lt;br /&gt;
&amp;lt;p&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A continuación iremos explicando las marcas equivalentes a todas aquellas definiciones que afecten a un objeto en ODL.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Formato del contenedor===&lt;br /&gt;
&amp;lt;p&amp;gt;La estructura base para representar un contenedor en XML es la siguiente:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Container id=&amp;quot;RRC&amp;quot; name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Header&amp;gt;&lt;br /&gt;
       &amp;lt;Domain domain_filename=&amp;quot;archivo.xml&amp;quot; typeName=&amp;quot;texto&amp;quot; componentName=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Created date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;Modified date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot;/&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;
    &amp;lt;Components&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;Components/&amp;gt;&lt;br /&gt;
 &amp;lt;/Container&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;La marca &amp;quot;Container&amp;quot; contiene tres atributos cuya utilidad es identificar al objeto. El atributo &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; contendrá el RRC del objeto, el atributo &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; el nombre del objeto y el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la marca &amp;quot;Header&amp;quot; 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;En la etiqueta &amp;quot;Domain&amp;quot; se especificará el dominio del objeto utilizando tres atributos. El atributo &amp;lt;code&amp;gt;domain_filename&amp;lt;/code&amp;gt; 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 (&amp;quot;&amp;quot;). En el atributo &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt; se especificará el objeto del sistema en el que está alojada el componente especificado en el atributo &amp;lt;code&amp;gt;componentName&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Las marcas &amp;quot;Created&amp;quot; y &amp;quot;Modified&amp;quot; tienen dos atributos: &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;user_id&amp;lt;/code&amp;gt;. 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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por último, tenemos la marca &amp;quot;Components&amp;quot;, donde se incluyen todas aquellas definiciones que se pueden declarar en un contenedor, que a continuación iremos explicando.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formato de los componentes===&lt;br /&gt;
&amp;lt;p&amp;gt;Existen dos atributos que son compartidos por todos los componentes y que lo identifican: los atributos &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;typeName&amp;lt;/code&amp;gt;. Además, muchos de ellos comparten una misma estructura a la hora de declararlos en XML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Campos====&lt;br /&gt;
=====Texto, entero, real, lógico, memo, fecha y hora=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldString name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldString&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldInteger name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldInteger&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldSingle name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldSingle&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldBoolean name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;[si|no]&amp;lt;/FieldBoolean&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldMemo name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldMemo&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldDate name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;año:mes:día&amp;lt;/FieldDate&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
 &amp;lt;FieldTime name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot;&amp;gt;hora:minutos:segundo&amp;lt;/FieldTime&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Moneda=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCurrency name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; currency=&amp;quot;texto&amp;quot;&amp;gt;número&amp;lt;/FieldCurrency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En el atributo &amp;lt;code&amp;gt;currency&amp;lt;/code&amp;gt; se especifica la moneda a utilizar. Sus posibles valores son &amp;quot;euro&amp;quot; o &amp;quot;peseta&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Código=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldCode name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; code=&amp;quot;texto&amp;quot;&amp;gt;texto&amp;lt;/FieldCode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El atributo &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; corresponderá al código introducido. Y el valor de la declaración es el rótulo asociado al código dado.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Firma=====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;FieldSignature name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; date=&amp;quot;año:mes:día&amp;quot; user_id=&amp;quot;texto&amp;quot; user_drc=&amp;quot;número&amp;quot; user_name=&amp;quot;texto&amp;quot; position=&amp;quot;texto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Por su condición, no es posible importar una firma, aunque se permite su declaración por coherencia. El permitir que su declaración se pueda incluir en una importación, es por coherencia en que todo lo que se pueda exportar se puede importar; pero en realidad es ignorada.&lt;br /&gt;
&lt;br /&gt;
=====Vínculo=====&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;FieldReference name=&amp;quot;texto&amp;quot; typeName=&amp;quot;texto&amp;quot; target_filename=&amp;quot;archivo.xml&amp;quot;&amp;gt;texto&amp;lt;/FieldReference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;El contenedor vinculado es target_filename, 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.&lt;/div&gt;</summary>
		<author><name>Irodriguez</name></author>	</entry>

	</feed>