<?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=Amendez</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=Amendez"/>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php/Especial:Contribuciones/Amendez"/>
		<updated>2026-05-04T16:18:45Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.26.4</generator>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5821</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5821"/>
				<updated>2014-01-14T13:28:08Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: /* Información sobre trámites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Novedades==&lt;br /&gt;
En esta [[Novedades|sección]] podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&lt;br /&gt;
No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
&lt;br /&gt;
== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
'''egEasy''' es una plataforma que permite desarrollar e implantar Sistemas de Información automatizados en organizaciones. &lt;br /&gt;
Entre las ventajas de usar '''egEasy''' para el desarrollo de Sistemas de Información encontramos:&lt;br /&gt;
*Desarrollo rápido de prototipos.&lt;br /&gt;
*Facilidad de adaptación continua a los cambios demandados.&lt;br /&gt;
*Experiencia de usuario unificada entre diferentes secciones de su organización.&lt;br /&gt;
&lt;br /&gt;
===Tutoriales===&lt;br /&gt;
&lt;br /&gt;
Se han desarrollado una serie de tutoriales para documentar el desarrollo de Sistemas de Información con '''egEasy'''.&lt;br /&gt;
*[[Desarrollar con egEasy paso a paso]]&lt;br /&gt;
&lt;br /&gt;
Este tutorial te enseña paso a paso cómo construir un registro de entrada y salida para una organización. El tutorial se divide en 10 tareas que van mostrando progresivamente los conceptos más importantes en el desarrollo con la plataforma '''egEasy'''. Todas las tareas tienen ejemplos prácticos y algunas de ellas proponen ejercicios para el lector. &lt;br /&gt;
&lt;br /&gt;
Si eres un nuevo desarrollador de '''egEasy''', deberías empezar por aquí.&lt;br /&gt;
&lt;br /&gt;
*[[Cómo_compilar_paso_a_paso|Cómo compilar paso a paso]]&lt;br /&gt;
&lt;br /&gt;
La plataforma egEasy implementa un paradigma de desarrollo orientado por modelos. Por lo tanto, todo proyecto desarrollado con la plataforma debe compilarse para generar el modelo del sistema de gestión. En este tutorial te mostramos paso a paso cómo compilar un proyecto e instalar el modelo que genera.&lt;br /&gt;
&lt;br /&gt;
==STE==&lt;br /&gt;
El '''STE''' (Servicio de Tramitación de Expedientes) forma parte de la plataforma '''egEasy'''.&lt;br /&gt;
El '''STE''' ofrece la posibilidad a usuarios externos a la organización de iniciar trámites de forma telemática con la misma, así como llevar un seguimiento del estado de tramitación de los mismos. Pude recibir notificaciones, requerimientos, aportar documentación adicional, etc.&lt;br /&gt;
&lt;br /&gt;
Para el usuario externo, el '''STE''' ofrece dos posibilidades de uso:&lt;br /&gt;
*Una mediante una aplicación Web que le permite, usando un navegador, iniciar trámites, editar formularios, adjuntar documentos, consultar los trámites iniciados, así como firmar digitalmente la documentación aportada y los formularios cumplimentados.&lt;br /&gt;
*Otra, mediante el uso de una [[API]] de SOAP (Servicio Web), que permite que otras aplicaciones puedan realizar automáticamente el inicio, cumplimentación y envío de trámites a la organización.&lt;br /&gt;
&lt;br /&gt;
====Información sobre trámites====&lt;br /&gt;
En la actualidad se han desarrollado multitud de trámites usando la plataforma '''egEasy''' y el '''STE'''. A continuación ponemos un listado de aquellos trámites que disponen de documentación publicada en esta wiki.&lt;br /&gt;
&lt;br /&gt;
=====Gobierno de Canarias. Consejería de Industria, Comercio y Empleo=====&lt;br /&gt;
*[[Remisión telemática de certificados de revisión de ascensores]]&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5820</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5820"/>
				<updated>2014-01-14T13:27:57Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: /* Gobierno de Canarias. Consejería de Industria, Comercio y Empleo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Novedades==&lt;br /&gt;
En esta [[Novedades|sección]] podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&lt;br /&gt;
No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
&lt;br /&gt;
== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
'''egEasy''' es una plataforma que permite desarrollar e implantar Sistemas de Información automatizados en organizaciones. &lt;br /&gt;
Entre las ventajas de usar '''egEasy''' para el desarrollo de Sistemas de Información encontramos:&lt;br /&gt;
*Desarrollo rápido de prototipos.&lt;br /&gt;
*Facilidad de adaptación continua a los cambios demandados.&lt;br /&gt;
*Experiencia de usuario unificada entre diferentes secciones de su organización.&lt;br /&gt;
&lt;br /&gt;
===Tutoriales===&lt;br /&gt;
&lt;br /&gt;
Se han desarrollado una serie de tutoriales para documentar el desarrollo de Sistemas de Información con '''egEasy'''.&lt;br /&gt;
*[[Desarrollar con egEasy paso a paso]]&lt;br /&gt;
&lt;br /&gt;
Este tutorial te enseña paso a paso cómo construir un registro de entrada y salida para una organización. El tutorial se divide en 10 tareas que van mostrando progresivamente los conceptos más importantes en el desarrollo con la plataforma '''egEasy'''. Todas las tareas tienen ejemplos prácticos y algunas de ellas proponen ejercicios para el lector. &lt;br /&gt;
&lt;br /&gt;
Si eres un nuevo desarrollador de '''egEasy''', deberías empezar por aquí.&lt;br /&gt;
&lt;br /&gt;
*[[Cómo_compilar_paso_a_paso|Cómo compilar paso a paso]]&lt;br /&gt;
&lt;br /&gt;
La plataforma egEasy implementa un paradigma de desarrollo orientado por modelos. Por lo tanto, todo proyecto desarrollado con la plataforma debe compilarse para generar el modelo del sistema de gestión. En este tutorial te mostramos paso a paso cómo compilar un proyecto e instalar el modelo que genera.&lt;br /&gt;
&lt;br /&gt;
==STE==&lt;br /&gt;
El '''STE''' (Servicio de Tramitación de Expedientes) forma parte de la plataforma '''egEasy'''.&lt;br /&gt;
El '''STE''' ofrece la posibilidad a usuarios externos a la organización de iniciar trámites de forma telemática con la misma, así como llevar un seguimiento del estado de tramitación de los mismos. Pude recibir notificaciones, requerimientos, aportar documentación adicional, etc.&lt;br /&gt;
&lt;br /&gt;
Para el usuario externo, el '''STE''' ofrece dos posibilidades de uso:&lt;br /&gt;
*Una mediante una aplicación Web que le permite, usando un navegador, iniciar trámites, editar formularios, adjuntar documentos, consultar los trámites iniciados, así como firmar digitalmente la documentación aportada y los formularios cumplimentados.&lt;br /&gt;
*Otra, mediante el uso de una [[API]] de SOAP (Servicio Web), que permite que otras aplicaciones puedan realizar automáticamente el inicio, cumplimentación y envío de trámites a la organización.&lt;br /&gt;
&lt;br /&gt;
===Información sobre trámites===&lt;br /&gt;
En la actualidad se han desarrollado multitud de trámites usando la plataforma '''egEasy''' y el '''STE'''. A continuación ponemos un listado de aquellos trámites que disponen de documentación publicada en esta wiki.&lt;br /&gt;
&lt;br /&gt;
=====Gobierno de Canarias. Consejería de Industria, Comercio y Empleo=====&lt;br /&gt;
*[[Remisión telemática de certificados de revisión de ascensores]]&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5819</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5819"/>
				<updated>2014-01-14T13:27:42Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: /* Información sobre trámites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Novedades==&lt;br /&gt;
En esta [[Novedades|sección]] podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&lt;br /&gt;
No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
&lt;br /&gt;
== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
'''egEasy''' es una plataforma que permite desarrollar e implantar Sistemas de Información automatizados en organizaciones. &lt;br /&gt;
Entre las ventajas de usar '''egEasy''' para el desarrollo de Sistemas de Información encontramos:&lt;br /&gt;
*Desarrollo rápido de prototipos.&lt;br /&gt;
*Facilidad de adaptación continua a los cambios demandados.&lt;br /&gt;
*Experiencia de usuario unificada entre diferentes secciones de su organización.&lt;br /&gt;
&lt;br /&gt;
===Tutoriales===&lt;br /&gt;
&lt;br /&gt;
Se han desarrollado una serie de tutoriales para documentar el desarrollo de Sistemas de Información con '''egEasy'''.&lt;br /&gt;
*[[Desarrollar con egEasy paso a paso]]&lt;br /&gt;
&lt;br /&gt;
Este tutorial te enseña paso a paso cómo construir un registro de entrada y salida para una organización. El tutorial se divide en 10 tareas que van mostrando progresivamente los conceptos más importantes en el desarrollo con la plataforma '''egEasy'''. Todas las tareas tienen ejemplos prácticos y algunas de ellas proponen ejercicios para el lector. &lt;br /&gt;
&lt;br /&gt;
Si eres un nuevo desarrollador de '''egEasy''', deberías empezar por aquí.&lt;br /&gt;
&lt;br /&gt;
*[[Cómo_compilar_paso_a_paso|Cómo compilar paso a paso]]&lt;br /&gt;
&lt;br /&gt;
La plataforma egEasy implementa un paradigma de desarrollo orientado por modelos. Por lo tanto, todo proyecto desarrollado con la plataforma debe compilarse para generar el modelo del sistema de gestión. En este tutorial te mostramos paso a paso cómo compilar un proyecto e instalar el modelo que genera.&lt;br /&gt;
&lt;br /&gt;
==STE==&lt;br /&gt;
El '''STE''' (Servicio de Tramitación de Expedientes) forma parte de la plataforma '''egEasy'''.&lt;br /&gt;
El '''STE''' ofrece la posibilidad a usuarios externos a la organización de iniciar trámites de forma telemática con la misma, así como llevar un seguimiento del estado de tramitación de los mismos. Pude recibir notificaciones, requerimientos, aportar documentación adicional, etc.&lt;br /&gt;
&lt;br /&gt;
Para el usuario externo, el '''STE''' ofrece dos posibilidades de uso:&lt;br /&gt;
*Una mediante una aplicación Web que le permite, usando un navegador, iniciar trámites, editar formularios, adjuntar documentos, consultar los trámites iniciados, así como firmar digitalmente la documentación aportada y los formularios cumplimentados.&lt;br /&gt;
*Otra, mediante el uso de una [[API]] de SOAP (Servicio Web), que permite que otras aplicaciones puedan realizar automáticamente el inicio, cumplimentación y envío de trámites a la organización.&lt;br /&gt;
&lt;br /&gt;
===Información sobre trámites===&lt;br /&gt;
En la actualidad se han desarrollado multitud de trámites usando la plataforma '''egEasy''' y el '''STE'''. A continuación ponemos un listado de aquellos trámites que disponen de documentación publicada en esta wiki.&lt;br /&gt;
&lt;br /&gt;
====Gobierno de Canarias. Consejería de Industria, Comercio y Empleo====&lt;br /&gt;
*[[Remisión telemática de certificados de revisión de ascensores]]&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5818</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5818"/>
				<updated>2014-01-14T13:25:06Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: /* STE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Novedades==&lt;br /&gt;
En esta [[Novedades|sección]] podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&lt;br /&gt;
No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
&lt;br /&gt;
== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
'''egEasy''' es una plataforma que permite desarrollar e implantar Sistemas de Información automatizados en organizaciones. &lt;br /&gt;
Entre las ventajas de usar '''egEasy''' para el desarrollo de Sistemas de Información encontramos:&lt;br /&gt;
*Desarrollo rápido de prototipos.&lt;br /&gt;
*Facilidad de adaptación continua a los cambios demandados.&lt;br /&gt;
*Experiencia de usuario unificada entre diferentes secciones de su organización.&lt;br /&gt;
&lt;br /&gt;
===Tutoriales===&lt;br /&gt;
&lt;br /&gt;
Se han desarrollado una serie de tutoriales para documentar el desarrollo de Sistemas de Información con '''egEasy'''.&lt;br /&gt;
*[[Desarrollar con egEasy paso a paso]]&lt;br /&gt;
&lt;br /&gt;
Este tutorial te enseña paso a paso cómo construir un registro de entrada y salida para una organización. El tutorial se divide en 10 tareas que van mostrando progresivamente los conceptos más importantes en el desarrollo con la plataforma '''egEasy'''. Todas las tareas tienen ejemplos prácticos y algunas de ellas proponen ejercicios para el lector. &lt;br /&gt;
&lt;br /&gt;
Si eres un nuevo desarrollador de '''egEasy''', deberías empezar por aquí.&lt;br /&gt;
&lt;br /&gt;
*[[Cómo_compilar_paso_a_paso|Cómo compilar paso a paso]]&lt;br /&gt;
&lt;br /&gt;
La plataforma egEasy implementa un paradigma de desarrollo orientado por modelos. Por lo tanto, todo proyecto desarrollado con la plataforma debe compilarse para generar el modelo del sistema de gestión. En este tutorial te mostramos paso a paso cómo compilar un proyecto e instalar el modelo que genera.&lt;br /&gt;
&lt;br /&gt;
==STE==&lt;br /&gt;
El '''STE''' (Servicio de Tramitación de Expedientes) forma parte de la plataforma '''egEasy'''.&lt;br /&gt;
El '''STE''' ofrece la posibilidad a usuarios externos a la organización de iniciar trámites de forma telemática con la misma, así como llevar un seguimiento del estado de tramitación de los mismos. Pude recibir notificaciones, requerimientos, aportar documentación adicional, etc.&lt;br /&gt;
&lt;br /&gt;
Para el usuario externo, el '''STE''' ofrece dos posibilidades de uso:&lt;br /&gt;
*Una mediante una aplicación Web que le permite, usando un navegador, iniciar trámites, editar formularios, adjuntar documentos, consultar los trámites iniciados, así como firmar digitalmente la documentación aportada y los formularios cumplimentados.&lt;br /&gt;
*Otra, mediante el uso de una [[API]] de SOAP (Servicio Web), que permite que otras aplicaciones puedan realizar automáticamente el inicio, cumplimentación y envío de trámites a la organización.&lt;br /&gt;
&lt;br /&gt;
===Información sobre trámites===&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5817</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5817"/>
				<updated>2014-01-14T13:13:58Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Novedades==&lt;br /&gt;
En esta [[Novedades|sección]] podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&lt;br /&gt;
No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
&lt;br /&gt;
== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
'''egEasy''' es una plataforma que permite desarrollar e implantar Sistemas de Información automatizados en organizaciones. &lt;br /&gt;
Entre las ventajas de usar '''egEasy''' para el desarrollo de Sistemas de Información encontramos:&lt;br /&gt;
*Desarrollo rápido de prototipos.&lt;br /&gt;
*Facilidad de adaptación continua a los cambios demandados.&lt;br /&gt;
*Experiencia de usuario unificada entre diferentes secciones de su organización.&lt;br /&gt;
&lt;br /&gt;
===Tutoriales===&lt;br /&gt;
&lt;br /&gt;
Se han desarrollado una serie de tutoriales para documentar el desarrollo de Sistemas de Información con '''egEasy'''.&lt;br /&gt;
*[[Desarrollar con egEasy paso a paso]]&lt;br /&gt;
&lt;br /&gt;
Este tutorial te enseña paso a paso cómo construir un registro de entrada y salida para una organización. El tutorial se divide en 10 tareas que van mostrando progresivamente los conceptos más importantes en el desarrollo con la plataforma '''egEasy'''. Todas las tareas tienen ejemplos prácticos y algunas de ellas proponen ejercicios para el lector. &lt;br /&gt;
&lt;br /&gt;
Si eres un nuevo desarrollador de '''egEasy''', deberías empezar por aquí.&lt;br /&gt;
&lt;br /&gt;
*[[Cómo_compilar_paso_a_paso|Cómo compilar paso a paso]]&lt;br /&gt;
&lt;br /&gt;
La plataforma egEasy implementa un paradigma de desarrollo orientado por modelos. Por lo tanto, todo proyecto desarrollado con la plataforma debe compilarse para generar el modelo del sistema de gestión. En este tutorial te mostramos paso a paso cómo compilar un proyecto e instalar el modelo que genera.&lt;br /&gt;
&lt;br /&gt;
==STE==&lt;br /&gt;
El '''STE''' (Servicio de Tramitación de Expedientes) forma parte de la plataforma '''egEasy'''.&lt;br /&gt;
El '''STE''' ofrece la posibilidad a usuarios externos a la organización de iniciar trámites de forma telemática con la misma, así como llevar un seguimiento del estado de tramitación de los mismos. Pude recibir notificaciones, requerimientos, aportar documentación adicional, etc.&lt;br /&gt;
&lt;br /&gt;
Para el usuario externo, el '''STE''' ofrece dos posibilidades de uso:&lt;br /&gt;
*Una mediante una aplicación Web que le permite, usando un navegador, iniciar trámites, editar formularios, adjuntar documentos, consultar los trámites iniciados, así como firmar digitalmente la documentación aportada y los formularios cumplimentados.&lt;br /&gt;
*Otra, mediante el uso de una [[API]] de SOAP (Servicio Web), que permite que otras aplicaciones puedan realizar automáticamente el inicio, cumplimentación y envío de trámites a la organización.&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5816</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5816"/>
				<updated>2014-01-14T13:13:34Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Novedades==&lt;br /&gt;
En esta [[Novedades|sección]] podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&lt;br /&gt;
No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
&lt;br /&gt;
== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''egEasy''' es una plataforma que permite desarrollar e implantar Sistemas de Información automatizados en organizaciones. &lt;br /&gt;
Entre las ventajas de usar '''egEasy''' para el desarrollo de Sistemas de Información encontramos:&lt;br /&gt;
*Desarrollo rápido de prototipos.&lt;br /&gt;
*Facilidad de adaptación continua a los cambios demandados.&lt;br /&gt;
*Experiencia de usuario unificada entre diferentes secciones de su organización.&lt;br /&gt;
&lt;br /&gt;
===Tutoriales===&lt;br /&gt;
&lt;br /&gt;
Se han desarrollado una serie de tutoriales para documentar el desarrollo de Sistemas de Información con '''egEasy'''.&lt;br /&gt;
*[[Desarrollar con egEasy paso a paso]]&lt;br /&gt;
&lt;br /&gt;
Este tutorial te enseña paso a paso cómo construir un registro de entrada y salida para una organización. El tutorial se divide en 10 tareas que van mostrando progresivamente los conceptos más importantes en el desarrollo con la plataforma '''egEasy'''. Todas las tareas tienen ejemplos prácticos y algunas de ellas proponen ejercicios para el lector. &lt;br /&gt;
&lt;br /&gt;
Si eres un nuevo desarrollador de '''egEasy''', deberías empezar por aquí.&lt;br /&gt;
&lt;br /&gt;
*[[Cómo_compilar_paso_a_paso|Cómo compilar paso a paso]]&lt;br /&gt;
&lt;br /&gt;
La plataforma egEasy implementa un paradigma de desarrollo orientado por modelos. Por lo tanto, todo proyecto desarrollado con la plataforma debe compilarse para generar el modelo del sistema de gestión. En este tutorial te mostramos paso a paso cómo compilar un proyecto e instalar el modelo que genera.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==STE==&lt;br /&gt;
El '''STE''' (Servicio de Tramitación de Expedientes) forma parte de la plataforma '''egEasy'''.&lt;br /&gt;
El '''STE''' ofrece la posibilidad a usuarios externos a la organización de iniciar trámites de forma telemática con la misma, así como llevar un seguimiento del estado de tramitación de los mismos. Pude recibir notificaciones, requerimientos, aportar documentación adicional, etc.&lt;br /&gt;
&lt;br /&gt;
Para el usuario externo, el '''STE''' ofrece dos posibilidades de uso:&lt;br /&gt;
*Una mediante una aplicación Web que le permite, usando un navegador, iniciar trámites, editar formularios, adjuntar documentos, consultar los trámites iniciados, así como firmar digitalmente la documentación aportada y los formularios cumplimentados.&lt;br /&gt;
*Otra, mediante el uso de una [[API]] de SOAP (Servicio Web), que permite que otras aplicaciones puedan realizar automáticamente el inicio, cumplimentación y envío de trámites a la organización.&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5815</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5815"/>
				<updated>2014-01-14T13:12:48Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
===Novedades===&lt;br /&gt;
En esta [[Novedades|sección]] podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&lt;br /&gt;
No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
&lt;br /&gt;
===egEasy===&lt;br /&gt;
'''egEasy''' es una plataforma que permite desarrollar e implantar Sistemas de Información automatizados en organizaciones. &lt;br /&gt;
Entre las ventajas de usar '''egEasy''' para el desarrollo de Sistemas de Información encontramos:&lt;br /&gt;
*Desarrollo rápido de prototipos.&lt;br /&gt;
*Facilidad de adaptación continua a los cambios demandados.&lt;br /&gt;
*Experiencia de usuario unificada entre diferentes secciones de su organización.&lt;br /&gt;
&lt;br /&gt;
====Tutoriales====&lt;br /&gt;
&lt;br /&gt;
Se han desarrollado una serie de tutoriales para documentar el desarrollo de Sistemas de Información con '''egEasy'''.&lt;br /&gt;
*[[Desarrollar con egEasy paso a paso]]&lt;br /&gt;
&lt;br /&gt;
Este tutorial te enseña paso a paso cómo construir un registro de entrada y salida para una organización. El tutorial se divide en 10 tareas que van mostrando progresivamente los conceptos más importantes en el desarrollo con la plataforma '''egEasy'''. Todas las tareas tienen ejemplos prácticos y algunas de ellas proponen ejercicios para el lector. &lt;br /&gt;
&lt;br /&gt;
Si eres un nuevo desarrollador de '''egEasy''', deberías empezar por aquí.&lt;br /&gt;
&lt;br /&gt;
*[[Cómo_compilar_paso_a_paso|Cómo compilar paso a paso]]&lt;br /&gt;
&lt;br /&gt;
La plataforma egEasy implementa un paradigma de desarrollo orientado por modelos. Por lo tanto, todo proyecto desarrollado con la plataforma debe compilarse para generar el modelo del sistema de gestión. En este tutorial te mostramos paso a paso cómo compilar un proyecto e instalar el modelo que genera.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===STE===&lt;br /&gt;
El '''STE''' (Servicio de Tramitación de Expedientes) forma parte de la plataforma '''egEasy'''.&lt;br /&gt;
El '''STE''' ofrece la posibilidad a usuarios externos a la organización de iniciar trámites de forma telemática con la misma, así como llevar un seguimiento del estado de tramitación de los mismos. Pude recibir notificaciones, requerimientos, aportar documentación adicional, etc.&lt;br /&gt;
&lt;br /&gt;
Para el usuario externo, el '''STE''' ofrece dos posibilidades de uso:&lt;br /&gt;
*Una mediante una aplicación Web que le permite, usando un navegador, iniciar trámites, editar formularios, adjuntar documentos, consultar los trámites iniciados, así como firmar digitalmente la documentación aportada y los formularios cumplimentados.&lt;br /&gt;
*Otra, mediante el uso de una [[API]] de SOAP (Servicio Web), que permite que otras aplicaciones puedan realizar automáticamente el inicio, cumplimentación y envío de trámites a la organización.&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5814</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5814"/>
				<updated>2014-01-14T13:12:06Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
===[[Novedades]]===&lt;br /&gt;
En esta sección podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&lt;br /&gt;
No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
&lt;br /&gt;
===egEasy===&lt;br /&gt;
'''egEasy''' es una plataforma que permite desarrollar e implantar Sistemas de Información automatizados en organizaciones. &lt;br /&gt;
Entre las ventajas de usar '''egEasy''' para el desarrollo de Sistemas de Información encontramos:&lt;br /&gt;
*Desarrollo rápido de prototipos.&lt;br /&gt;
*Facilidad de adaptación continua a los cambios demandados.&lt;br /&gt;
*Experiencia de usuario unificada entre diferentes secciones de su organización.&lt;br /&gt;
&lt;br /&gt;
====Tutoriales====&lt;br /&gt;
&lt;br /&gt;
Se han desarrollado una serie de tutoriales para documentar el desarrollo de Sistemas de Información con '''egEasy'''.&lt;br /&gt;
*[[Desarrollar con egEasy paso a paso]]&lt;br /&gt;
&lt;br /&gt;
Este tutorial te enseña paso a paso cómo construir un registro de entrada y salida para una organización. El tutorial se divide en 10 tareas que van mostrando progresivamente los conceptos más importantes en el desarrollo con la plataforma '''egEasy'''. Todas las tareas tienen ejemplos prácticos y algunas de ellas proponen ejercicios para el lector. &lt;br /&gt;
&lt;br /&gt;
Si eres un nuevo desarrollador de '''egEasy''', deberías empezar por aquí.&lt;br /&gt;
&lt;br /&gt;
*[[Cómo_compilar_paso_a_paso|Cómo compilar paso a paso]]&lt;br /&gt;
&lt;br /&gt;
La plataforma egEasy implementa un paradigma de desarrollo orientado por modelos. Por lo tanto, todo proyecto desarrollado con la plataforma debe compilarse para generar el modelo del sistema de gestión. En este tutorial te mostramos paso a paso cómo compilar un proyecto e instalar el modelo que genera.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===STE===&lt;br /&gt;
El '''STE''' (Servicio de Tramitación de Expedientes) forma parte de la plataforma '''egEasy'''.&lt;br /&gt;
El '''STE''' ofrece la posibilidad a usuarios externos a la organización de iniciar trámites de forma telemática con la misma, así como llevar un seguimiento del estado de tramitación de los mismos. Pude recibir notificaciones, requerimientos, aportar documentación adicional, etc.&lt;br /&gt;
&lt;br /&gt;
Para el usuario externo, el '''STE''' ofrece dos posibilidades de uso:&lt;br /&gt;
*Una mediante una aplicación Web que le permite, usando un navegador, iniciar trámites, editar formularios, adjuntar documentos, consultar los trámites iniciados, así como firmar digitalmente la documentación aportada y los formularios cumplimentados.&lt;br /&gt;
*Otra, mediante el uso de una [[API]] de SOAP (Servicio Web), que permite que otras aplicaciones puedan realizar automáticamente el inicio, cumplimentación y envío de trámites a la organización.&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5813</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5813"/>
				<updated>2014-01-14T13:10:43Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
===[[Novedades]]===&lt;br /&gt;
En esta sección podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&lt;br /&gt;
No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
&lt;br /&gt;
===egEasy===&lt;br /&gt;
'''egEasy''' es una plataforma que permite desarrollar e implantar Sistemas de Información automatizados en organizaciones. &lt;br /&gt;
Entre las ventajas de usar '''egEasy''' para el desarrollo de Sistemas de Información encontramos:&lt;br /&gt;
*Desarrollo rápido de prototipos.&lt;br /&gt;
*Facilidad de adaptación continua a los cambios demandados.&lt;br /&gt;
*Experiencia de usuario unificada entre diferentes secciones de su organización.&lt;br /&gt;
&lt;br /&gt;
====Tutoriales====&lt;br /&gt;
&lt;br /&gt;
Se han desarrollado una serie de tutoriales para documentar el desarrollo de Sistemas de Información con '''egEasy'''.&lt;br /&gt;
*[[Desarrollar con egEasy paso a paso]]&lt;br /&gt;
Este tutorial te enseña paso a paso cómo construir un registro de entrada y salida para una organización. El tutorial se divide en 10 tareas que van mostrando progresivamente los conceptos más importantes en el desarrollo con la plataforma '''egEasy'''. Todas las tareas tienen ejemplos prácticos y algunas de ellas proponen ejercicios para el lector. &lt;br /&gt;
Si eres un nuevo desarrollador de '''egEasy''', deberías empezar por aquí.&lt;br /&gt;
&lt;br /&gt;
*[[Cómo_compilar_paso_a_paso|Cómo compilar paso a paso]]&lt;br /&gt;
La plataforma egEasy implementa un paradigma de desarrollo orientado por modelos. Por lo tanto, todo proyecto desarrollado con la plataforma debe compilarse para generar el modelo del sistema de gestión. En este tutorial te mostramos paso a paso cómo compilar un proyecto e instalar el modelo que genera.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===STE===&lt;br /&gt;
El '''STE''' (Servicio de Tramitación de Expedientes) forma parte de la plataforma '''egEasy'''.&lt;br /&gt;
El '''STE''' ofrece la posibilidad a usuarios externos a la organización de iniciar trámites de forma telemática con la misma, así como llevar un seguimiento del estado de tramitación de los mismos. Pude recibir notificaciones, requerimientos, aportar documentación adicional, etc.&lt;br /&gt;
&lt;br /&gt;
Para el usuario externo, el '''STE''' ofrece dos posibilidades de uso:&lt;br /&gt;
*Una mediante una aplicación Web que le permite, usando un navegador, iniciar trámites, editar formularios, adjuntar documentos, consultar los trámites iniciados, así como firmar digitalmente la documentación aportada y los formularios cumplimentados.&lt;br /&gt;
*Otra, mediante el uso de una [[API]] de SOAP (Servicio Web), que permite que otras aplicaciones puedan realizar automáticamente el inicio, cumplimentación y envío de trámites a la organización.&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5812</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5812"/>
				<updated>2014-01-14T13:10:23Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
===[[Novedades]]===&lt;br /&gt;
En esta sección podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&lt;br /&gt;
No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
&lt;br /&gt;
===egEasy===&lt;br /&gt;
'''egEasy''' es una plataforma que permite desarrollar e implantar Sistemas de Información automatizados en organizaciones. &lt;br /&gt;
Entre las ventajas de usar '''egEasy''' para el desarrollo de Sistemas de Información encontramos:&lt;br /&gt;
*Desarrollo rápido de prototipos.&lt;br /&gt;
*Facilidad de adaptación continua a los cambios demandados.&lt;br /&gt;
*Experiencia de usuario unificada entre diferentes secciones de su organización.&lt;br /&gt;
&lt;br /&gt;
====Tutoriales====&lt;br /&gt;
&lt;br /&gt;
Se han desarrollado una serie de tutoriales para documentar el desarrollo de Sistemas de Información con '''egEasy'''.&lt;br /&gt;
*[[Desarrollar con egEasy paso a paso]]&lt;br /&gt;
Este tutorial te enseña paso a paso cómo construir un registro de entrada y salida para una organización. El tutorial se divide en 10 tareas que van mostrando progresivamente los conceptos más importantes en el desarrollo con la plataforma '''egEasy'''. Todas las tareas tienen ejemplos prácticos y algunas de ellas proponen ejercicios para el lector. Si eres un nuevo desarrollador de '''egEasy''', deberías empezar por aquí.&lt;br /&gt;
&lt;br /&gt;
*[[Cómo_compilar_paso_a_paso|Cómo compilar paso a paso]]&lt;br /&gt;
La plataforma egEasy implementa un paradigma de desarrollo orientado por modelos. Por lo tanto, todo proyecto desarrollado con la plataforma debe compilarse para generar el modelo del sistema de gestión. En este tutorial te mostramos paso a paso cómo compilar un proyecto e instalar el modelo que genera.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===STE===&lt;br /&gt;
El '''STE''' (Servicio de Tramitación de Expedientes) forma parte de la plataforma '''egEasy'''.&lt;br /&gt;
El '''STE''' ofrece la posibilidad a usuarios externos a la organización de iniciar trámites de forma telemática con la misma, así como llevar un seguimiento del estado de tramitación de los mismos. Pude recibir notificaciones, requerimientos, aportar documentación adicional, etc.&lt;br /&gt;
&lt;br /&gt;
Para el usuario externo, el '''STE''' ofrece dos posibilidades de uso:&lt;br /&gt;
*Una mediante una aplicación Web que le permite, usando un navegador, iniciar trámites, editar formularios, adjuntar documentos, consultar los trámites iniciados, así como firmar digitalmente la documentación aportada y los formularios cumplimentados.&lt;br /&gt;
*Otra, mediante el uso de una [[API]] de SOAP (Servicio Web), que permite que otras aplicaciones puedan realizar automáticamente el inicio, cumplimentación y envío de trámites a la organización.&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5811</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5811"/>
				<updated>2014-01-14T13:09:41Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
===[[Novedades]]===&lt;br /&gt;
En esta sección podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&lt;br /&gt;
No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
&lt;br /&gt;
===egEasy===&lt;br /&gt;
'''egEasy''' es una plataforma que permite desarrollar e implantar Sistemas de Información automatizados en organizaciones. &lt;br /&gt;
Entre las ventajas de usar '''egEasy''' para el desarrollo de Sistemas de Información encontramos:&lt;br /&gt;
*Desarrollo rápido de prototipos.&lt;br /&gt;
*Facilidad de adaptación continua a los cambios demandados.&lt;br /&gt;
*Experiencia de usuario unificada entre diferentes secciones de su organización.&lt;br /&gt;
&lt;br /&gt;
====Tutoriales====&lt;br /&gt;
&lt;br /&gt;
Se han desarrollado una serie de tutoriales para documentar el desarrollo de Sistemas de Información con '''egEasy'''.&lt;br /&gt;
*[[Desarrollar con egEasy paso a paso]]&lt;br /&gt;
Este tutorial te enseña paso a paso cómo construir un registro de entrada y salida para una organización. El tutorial se divide en 10 tareas que van mostrando progresivamente los conceptos más importantes en el desarrollo con la plataforma '''egEasy'''. Todas las tareas tienen ejemplos prácticos y algunas de ellas proponen ejercicios para el lector.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Si eres un nuevo desarrollador de '''egEasy''', deberías empezar por aquí.&lt;br /&gt;
&lt;br /&gt;
*[[Cómo_compilar_paso_a_paso|Cómo compilar paso a paso]]La plataforma egEasy implementa un paradigma de desarrollo orientado por modelos. Por lo tanto, todo proyecto desarrollado con la plataforma debe compilarse para generar el modelo del sistema de gestión. En este tutorial te mostramos paso a paso cómo compilar un proyecto e instalar el modelo que genera.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===STE===&lt;br /&gt;
El '''STE''' (Servicio de Tramitación de Expedientes) forma parte de la plataforma '''egEasy'''.&lt;br /&gt;
El '''STE''' ofrece la posibilidad a usuarios externos a la organización de iniciar trámites de forma telemática con la misma, así como llevar un seguimiento del estado de tramitación de los mismos. Pude recibir notificaciones, requerimientos, aportar documentación adicional, etc.&lt;br /&gt;
&lt;br /&gt;
Para el usuario externo, el '''STE''' ofrece dos posibilidades de uso:&lt;br /&gt;
*Una mediante una aplicación Web que le permite, usando un navegador, iniciar trámites, editar formularios, adjuntar documentos, consultar los trámites iniciados, así como firmar digitalmente la documentación aportada y los formularios cumplimentados.&lt;br /&gt;
*Otra, mediante el uso de una [[API]] de SOAP (Servicio Web), que permite que otras aplicaciones puedan realizar automáticamente el inicio, cumplimentación y envío de trámites a la organización.&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5810</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5810"/>
				<updated>2014-01-14T13:09:24Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
===[[Novedades]]===&lt;br /&gt;
En esta sección podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&lt;br /&gt;
No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
&lt;br /&gt;
===egEasy===&lt;br /&gt;
'''egEasy''' es una plataforma que permite desarrollar e implantar Sistemas de Información automatizados en organizaciones. &lt;br /&gt;
Entre las ventajas de usar '''egEasy''' para el desarrollo de Sistemas de Información encontramos:&lt;br /&gt;
*Desarrollo rápido de prototipos.&lt;br /&gt;
*Facilidad de adaptación continua a los cambios demandados.&lt;br /&gt;
*Experiencia de usuario unificada entre diferentes secciones de su organización.&lt;br /&gt;
&lt;br /&gt;
====Tutoriales====&lt;br /&gt;
&lt;br /&gt;
Se han desarrollado una serie de tutoriales para documentar el desarrollo de Sistemas de Información con '''egEasy'''.&lt;br /&gt;
*[[Desarrollar con egEasy paso a paso]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|[[Image:Registro_con_iconos.jpg|100px|left|Registro de entrada y salida]]&lt;br /&gt;
&amp;lt;p&amp;gt;Este tutorial te enseña paso a paso cómo construir un registro de entrada y salida para una organización. El tutorial se divide en 10 tareas que van mostrando progresivamente los conceptos más importantes en el desarrollo con la plataforma '''egEasy'''. Todas las tareas tienen ejemplos prácticos y algunas de ellas proponen ejercicios para el lector.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Si eres un nuevo desarrollador de '''egEasy''', deberías empezar por aquí.&lt;br /&gt;
&lt;br /&gt;
*[[Cómo_compilar_paso_a_paso|Cómo compilar paso a paso]]La plataforma egEasy implementa un paradigma de desarrollo orientado por modelos. Por lo tanto, todo proyecto desarrollado con la plataforma debe compilarse para generar el modelo del sistema de gestión. En este tutorial te mostramos paso a paso cómo compilar un proyecto e instalar el modelo que genera.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===STE===&lt;br /&gt;
El '''STE''' (Servicio de Tramitación de Expedientes) forma parte de la plataforma '''egEasy'''.&lt;br /&gt;
El '''STE''' ofrece la posibilidad a usuarios externos a la organización de iniciar trámites de forma telemática con la misma, así como llevar un seguimiento del estado de tramitación de los mismos. Pude recibir notificaciones, requerimientos, aportar documentación adicional, etc.&lt;br /&gt;
&lt;br /&gt;
Para el usuario externo, el '''STE''' ofrece dos posibilidades de uso:&lt;br /&gt;
*Una mediante una aplicación Web que le permite, usando un navegador, iniciar trámites, editar formularios, adjuntar documentos, consultar los trámites iniciados, así como firmar digitalmente la documentación aportada y los formularios cumplimentados.&lt;br /&gt;
*Otra, mediante el uso de una [[API]] de SOAP (Servicio Web), que permite que otras aplicaciones puedan realizar automáticamente el inicio, cumplimentación y envío de trámites a la organización.&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5809</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5809"/>
				<updated>2014-01-14T12:55:09Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
===[[Novedades]]===&lt;br /&gt;
En esta sección podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&lt;br /&gt;
No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
&lt;br /&gt;
===egEasy===&lt;br /&gt;
'''egEasy''' es una plataforma que permite desarrollar e implantar Sistemas de Información automatizados en organizaciones. &lt;br /&gt;
Entre las ventajas de usar '''egEasy''' para el desarrollo de Sistemas de Información encontramos:&lt;br /&gt;
*Desarrollo rápido de prototipos.&lt;br /&gt;
*Facilidad de adaptación continua a los cambios demandados.&lt;br /&gt;
*Experiencia de usuario unificada entre diferentes secciones de su organización.&lt;br /&gt;
&lt;br /&gt;
Contiene la documentación necesaria para desarrollar en la plataforma '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
===STE===&lt;br /&gt;
El '''STE''' (Servicio de Tramitación de Expedientes) forma parte de la plataforma '''egEasy'''.&lt;br /&gt;
El '''STE''' ofrece la posibilidad a usuarios externos a la organización de iniciar trámites de forma telemática con la misma, así como llevar un seguimiento del estado de tramitación de los mismos. Pude recibir notificaciones, requerimientos, aportar documentación adicional, etc.&lt;br /&gt;
&lt;br /&gt;
Para el usuario externo, el '''STE''' ofrece dos posibilidades de uso:&lt;br /&gt;
*Una mediante una aplicación Web que le permite, usando un navegador, iniciar trámites, editar formularios, adjuntar documentos, consultar los trámites iniciados, así como firmar digitalmente la documentación aportada y los formularios cumplimentados.&lt;br /&gt;
*Otra, mediante el uso de una [[API]] de SOAP (Servicio Web), que permite que otras aplicaciones puedan realizar automáticamente el inicio, cumplimentación y envío de trámites a la organización.&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5808</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5808"/>
				<updated>2014-01-14T12:45:13Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
===[[Novedades]]===&lt;br /&gt;
En esta sección podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&lt;br /&gt;
No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
&lt;br /&gt;
===egEasy===&lt;br /&gt;
'''egEasy''' es una plataforma que permite desarrollar e implantar Sistemas de Información automatizados en organizaciones. &lt;br /&gt;
Entre las ventajas de usar '''egEasy''' para el desarrollo de Sistemas de Información encontramos:&lt;br /&gt;
*Desarrollo rápido de prototipos.&lt;br /&gt;
*Facilidad de adaptación continua a los cambios demandados.&lt;br /&gt;
*Experiencia de usuario unificada entre diferentes secciones de su organización.&lt;br /&gt;
&lt;br /&gt;
Contiene la documentación necesaria para desarrollar en la plataforma '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
===STE===&lt;br /&gt;
Aquí podrá encontrar información para conocer las posibilidades del entorno de tramitación '''STE'''.&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5807</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5807"/>
				<updated>2014-01-14T12:44:25Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
===[[Novedades]]===&lt;br /&gt;
En esta sección podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&lt;br /&gt;
No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
&lt;br /&gt;
===egEasy===&lt;br /&gt;
'''egEasy''' es una plataforma que permite desarrollar e implantar Sistemas de Información automatizados en organizaciones. &lt;br /&gt;
Entre las ventajas de usar '''egEasy''' para el desarrollo de Sistemas de Información encontramos:&lt;br /&gt;
*Desarrollo rápido de prototipos.&lt;br /&gt;
*Facilidad de adaptación continua a los cambios demandados.&lt;br /&gt;
*Experiencia de usuario unificada entre diferentes secciones de su organización.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Contiene la documentación necesaria para desarrollar en la plataforma '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
===[[STE]]===&lt;br /&gt;
Aquí podrá encontrar información para conocer las posibilidades del entorno de tramitación '''STE'''.&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgEasy&amp;diff=5805</id>
		<title>EgEasy</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgEasy&amp;diff=5805"/>
				<updated>2014-01-14T12:27:18Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: EgEasyold trasladada a EgEasy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|cellspacing=&amp;quot;3&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
!&amp;lt;div style=&amp;quot;background: #F0F8FF&amp;quot;&amp;gt;&lt;br /&gt;
====[[Desarrollar con egEasy paso a paso]]====&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|[[Image:Registro_con_iconos.jpg|100px|left|Registro de entrada y salida]]&lt;br /&gt;
&amp;lt;p&amp;gt;Este tutorial te enseña paso a paso cómo construir un registro de entrada y salida para una organización. El tutorial se divide en 10 tareas que van mostrando progresivamente los conceptos más importantes en el desarrollo con la plataforma '''egEasy'''. Todas las tareas tienen ejemplos prácticos y algunas de ellas proponen ejercicios para el lector.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Si eres un nuevo desarrollador de '''egEasy''', deberías empezar por aquí.&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;3&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
!&amp;lt;div style=&amp;quot;background: #F0F8FF&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[[Cómo_compilar_paso_a_paso|Cómo compilar paso a paso]]====&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;p&amp;gt;La plataforma egEasy implementa un paradigma de desarrollo orientado por modelos. Por lo tanto, todo proyecto desarrollado con la plataforma debe compilarse para generar el modelo del sistema de gestión. En este tutorial te mostramos paso a paso cómo compilar un proyecto e instalar el modelo que genera.&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgEasyold&amp;diff=5806</id>
		<title>EgEasyold</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgEasyold&amp;diff=5806"/>
				<updated>2014-01-14T12:27:18Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: EgEasyold trasladada a EgEasy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[EgEasy]]&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgEasy&amp;diff=5803</id>
		<title>EgEasy</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgEasy&amp;diff=5803"/>
				<updated>2014-01-14T12:27:10Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: EgEasy trasladada a EgEasyold&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|cellspacing=&amp;quot;3&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
!&amp;lt;div style=&amp;quot;background: #F0F8FF&amp;quot;&amp;gt;&lt;br /&gt;
====[[Desarrollar con egEasy paso a paso]]====&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|[[Image:Registro_con_iconos.jpg|100px|left|Registro de entrada y salida]]&lt;br /&gt;
&amp;lt;p&amp;gt;Este tutorial te enseña paso a paso cómo construir un registro de entrada y salida para una organización. El tutorial se divide en 10 tareas que van mostrando progresivamente los conceptos más importantes en el desarrollo con la plataforma '''egEasy'''. Todas las tareas tienen ejemplos prácticos y algunas de ellas proponen ejercicios para el lector.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Si eres un nuevo desarrollador de '''egEasy''', deberías empezar por aquí.&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;3&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
!&amp;lt;div style=&amp;quot;background: #F0F8FF&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[[Cómo_compilar_paso_a_paso|Cómo compilar paso a paso]]====&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;p&amp;gt;La plataforma egEasy implementa un paradigma de desarrollo orientado por modelos. Por lo tanto, todo proyecto desarrollado con la plataforma debe compilarse para generar el modelo del sistema de gestión. En este tutorial te mostramos paso a paso cómo compilar un proyecto e instalar el modelo que genera.&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5802</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5802"/>
				<updated>2014-01-14T12:25:16Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
===[[Novedades]]===&lt;br /&gt;
En esta sección podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&lt;br /&gt;
No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
&lt;br /&gt;
===[[egEasy]]===&lt;br /&gt;
Contiene la documentación necesaria para desarrollar en la plataforma '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
===[[STE]]===&lt;br /&gt;
Aquí podrá encontrar información para conocer las posibilidades del entorno de tramitación '''STE'''.&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5801</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5801"/>
				<updated>2014-01-14T12:23:30Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
====[[Novedades]]====&lt;br /&gt;
En esta sección podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&lt;br /&gt;
No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
&lt;br /&gt;
====[[egEasy]]====&lt;br /&gt;
Contiene la documentación necesaria para desarrollar en la plataforma '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
====[[STE]]====&lt;br /&gt;
Aquí podrá encontrar información para conocer las posibilidades del entorno de tramitación '''STE'''.&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5800</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5800"/>
				<updated>2014-01-14T12:23:17Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
====[[Novedades]]====&lt;br /&gt;
En esta sección podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&lt;br /&gt;
No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
&lt;br /&gt;
====[[egEasy]]====&lt;br /&gt;
Contiene la documentación necesaria para desarrollar en la plataforma '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
====[[STE]]====&lt;br /&gt;
&amp;lt;p&amp;gt;Aquí podrá encontrar información para conocer las posibilidades del entorno de tramitación '''STE'''.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5799</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5799"/>
				<updated>2014-01-14T12:22:59Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
====[[Novedades]]====&lt;br /&gt;
&amp;lt;p&amp;gt;En esta sección podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&amp;lt;/p&amp;gt; No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[[egEasy]]====&lt;br /&gt;
Contiene la documentación necesaria para desarrollar en la plataforma '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
====[[STE]]====&lt;br /&gt;
&amp;lt;p&amp;gt;Aquí podrá encontrar información para conocer las posibilidades del entorno de tramitación '''STE'''.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5798</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5798"/>
				<updated>2014-01-14T12:22:13Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
====[[Novedades]]====&lt;br /&gt;
&amp;lt;p&amp;gt;En esta sección podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&amp;lt;/p&amp;gt; No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{|cellspacing=&amp;quot;3&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
!&amp;lt;div style=&amp;quot;background: #F0F8FF&amp;quot;&amp;gt;&lt;br /&gt;
====[[egEasy]]====&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;p&amp;gt;Contiene la documentación necesaria para desarrollar en la plataforma '''egEasy'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{|cellspacing=&amp;quot;3&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
!&amp;lt;div style=&amp;quot;background: #F0F8FF&amp;quot;&amp;gt;&lt;br /&gt;
====[[STE]]====&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;p&amp;gt;Aquí podrá encontrar información para conocer las posibilidades del entorno de tramitación '''STE'''.&amp;lt;/p&amp;gt; &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5797</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5797"/>
				<updated>2014-01-14T12:20:54Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{|cellspacing=&amp;quot;3&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
!&amp;lt;div style=&amp;quot;background: #F0F8FF&amp;quot;&amp;gt;&lt;br /&gt;
====[[Novedades]]====&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;p&amp;gt;En esta sección podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&amp;lt;/p&amp;gt; No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{|cellspacing=&amp;quot;3&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
!&amp;lt;div style=&amp;quot;background: #F0F8FF&amp;quot;&amp;gt;&lt;br /&gt;
====[[egEasy]]====&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;p&amp;gt;Contiene la documentación necesaria para desarrollar en la plataforma '''egEasy'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{|cellspacing=&amp;quot;3&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
!&amp;lt;div style=&amp;quot;background: #F0F8FF&amp;quot;&amp;gt;&lt;br /&gt;
====[[STE]]====&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;p&amp;gt;Aquí podrá encontrar información para conocer las posibilidades del entorno de tramitación '''STE'''.&amp;lt;/p&amp;gt; &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5796</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5796"/>
				<updated>2014-01-14T12:20:28Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{|cellspacing=&amp;quot;3&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
!&amp;lt;div style=&amp;quot;background: #F0F8FF&amp;quot;&amp;gt;&lt;br /&gt;
====[[Novedades]]====&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;p&amp;gt;En esta sección podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&amp;lt;/p&amp;gt; No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{|cellspacing=&amp;quot;3&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
!&amp;lt;div style=&amp;quot;background: #F0F8FF&amp;quot;&amp;gt;&lt;br /&gt;
====[[egEasy]]====&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;p&amp;gt;Contiene la documentación necesaria para desarrollar en la plataforma '''egEasy'''.&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{|cellspacing=&amp;quot;3&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
!&amp;lt;div style=&amp;quot;background: #F0F8FF&amp;quot;&amp;gt;&lt;br /&gt;
====[[STE]]====&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;p&amp;gt;Aquí podrá encontrar información para conocer las posibilidades del entorno de tramitación '''STE'''.&amp;lt;/p&amp;gt; |}&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5795</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5795"/>
				<updated>2014-01-14T12:17:45Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{|cellspacing=&amp;quot;3&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
!&amp;lt;div style=&amp;quot;background: #F0F8FF&amp;quot;&amp;gt;&lt;br /&gt;
====[[Novedades]]====&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;p&amp;gt;En esta sección podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&amp;lt;/p&amp;gt; No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[egEasy]]&lt;br /&gt;
[[STE]]&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=EgEasy&amp;diff=5794</id>
		<title>EgEasy</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=EgEasy&amp;diff=5794"/>
				<updated>2014-01-14T12:17:01Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|cellspacing=&amp;quot;3&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
!&amp;lt;div style=&amp;quot;background: #F0F8FF&amp;quot;&amp;gt;&lt;br /&gt;
====[[Desarrollar con egEasy paso a paso]]====&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|[[Image:Registro_con_iconos.jpg|100px|left|Registro de entrada y salida]]&lt;br /&gt;
&amp;lt;p&amp;gt;Este tutorial te enseña paso a paso cómo construir un registro de entrada y salida para una organización. El tutorial se divide en 10 tareas que van mostrando progresivamente los conceptos más importantes en el desarrollo con la plataforma '''egEasy'''. Todas las tareas tienen ejemplos prácticos y algunas de ellas proponen ejercicios para el lector.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Si eres un nuevo desarrollador de '''egEasy''', deberías empezar por aquí.&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;3&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
!&amp;lt;div style=&amp;quot;background: #F0F8FF&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[[Cómo_compilar_paso_a_paso|Cómo compilar paso a paso]]====&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;p&amp;gt;La plataforma egEasy implementa un paradigma de desarrollo orientado por modelos. Por lo tanto, todo proyecto desarrollado con la plataforma debe compilarse para generar el modelo del sistema de gestión. En este tutorial te mostramos paso a paso cómo compilar un proyecto e instalar el modelo que genera.&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=Desarrollar_con_egEasy_paso_a_paso&amp;diff=5792</id>
		<title>Desarrollar con egEasy paso a paso</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=Desarrollar_con_egEasy_paso_a_paso&amp;diff=5792"/>
				<updated>2014-01-14T12:14:49Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: Desarrollar con egeasy paso a paso trasladada a Desarrollar con egEasy paso a paso: Capitalización&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Esta sección es un tutorial para aprender a desarrollar con la plataforma egEasy. &amp;lt;br/&amp;gt;Describiremos un sencillo [http://es.wikipedia.org/wiki/Sistemas_de_información sistema de información] y veremos, paso a paso, cómo implementarlo en la plataforma.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
==Registro de entrada y salida==&lt;br /&gt;
[[Imagen:Registro_entrada_y_salida.jpg|thumb|250px|Registro entrada y salida]]&amp;lt;p&amp;gt;La mayoría de las organizaciones, tanto públicas como privadas, necesitan un registro de entrada y salida que les permita llevar un control sobre el flujo de documentación entre la organización y el exterior. Normalmente, este registro se lleva a cabo disponiendo libros específicos para cada operación. Cada vez que se produce una entrada (o salida) se realiza una anotación en el libro correspondiente, asignándole un número y apuntado la fecha, el destinatario y la documentación adjunta. El siguiente esquema describiría los conceptos básicos que le darían soporte al registro.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;En esta figura lo que decimos es:&lt;br /&gt;
*Un libro de entrada se compone de muchas entradas. Cada Entrada tiene Número, Fecha, Remitente (quien presenta la documentación) y Destinatario (a qué departamento de la organización se dirige). Adicionalmente, puede tener uno o más documentos adjuntos. &lt;br /&gt;
*Un libro de salida se compone de muchas salidas. Cada Salida tiene Número, Fecha, Origen (departamento de la organización de donde sale el documento) y Destinatario (persona a la que va dirigido). Además, puede tener uno o más documentos adjuntos.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Por el momento es suficiente. A lo largo del tutorial iremos modificando y complicando este esquema.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tareas==&lt;br /&gt;
&lt;br /&gt;
:*'''Tarea A: Libros y Registro de entrada y salida'''&amp;lt;p&amp;gt;En esta sección, vamos a implementar el registro de entrada y salida que acabamos de definir. Para comenzar a trabajar, te recomendamos que descargues este proyecto básico que te servirá como punto de partida.&amp;lt;/p&amp;gt;[[Tarea_A:_Libros_y_registro_de_entrada_y_salida|''Realizar la tarea'']]&lt;br /&gt;
&lt;br /&gt;
:*'''Tarea B: Mejorando la numeración del registro'''&amp;lt;p&amp;gt;Mejoramos el sistema de registro implementado en la tarea anterior añadiendo numeración automática para las entradas y las salidas. Se explican los campos de tipo timbre y los modos de edición disponibles para los campos de un formulario.&amp;lt;/p&amp;gt;[[Tarea_B:_Mejorando_la_numeración_del_registro|''Realizar la tarea'']]&lt;br /&gt;
&lt;br /&gt;
:*'''Tarea C: Evolucionando la arquitectura del registro'''&amp;lt;p&amp;gt;En esta tarea mejoramos la arquitectura de la información abstrayendo el concepto de Tercero, que actuará como remitente y destinatario ante el registro. Aprenderás a utilizar los campos de tipo vínculo, a definir enumerados y a incrustar tablas en los formularios&amp;lt;/p&amp;gt;[[Tarea_C:_Evolucionando_la_arquitectura_del_registro|''Realizar la tarea'']]&lt;br /&gt;
&lt;br /&gt;
:*'''Tarea D: Validar la introducción de datos'''&amp;lt;p&amp;gt;Modificaremos el sistema para que valide la introducción de ciertos datos para garantizar la integridad de la información. En esta sección, se explica el concepto de validación y cómo añadir condiciones de validaciones a los campos de un formulario.&amp;lt;/p&amp;gt;[[Tarea_D:_Validar_la_introducción_de_datos|''Realizar la tarea'']]&lt;br /&gt;
&lt;br /&gt;
:*'''Tarea E: Utilizar el registro como un almacén de documentación'''&amp;lt;p&amp;gt;Mejoraremos el registro para que cualquier departamento de la organización pueda conocer toda la documentación que un Tercero ha presentado a lo largo de la vida del registro. Para ofrecer esta funcionalidad, en esta sección se introducen los conceptos de exportación y catálogo. Además, se explica el ciclo de eventos que se producen cuando se almacena un [[Contenedores|contenedor]].&amp;lt;/p&amp;gt;[[Tarea_E:_Utilizar_el_registro_como_un_almacén_de_documentación|''Realizar la tarea'']]&lt;br /&gt;
&lt;br /&gt;
:*'''Tarea F: Abriendo el registro al resto de las oficinas'''&amp;lt;p&amp;gt;Modificaremos el sistema para permitir que usuarios de otros departamentos puedan acceder a la oficina del registro para consultar datos de la base de terceros y del registro. Para garantizar que el acceso es sólo de lectura, limitaremos sus permisos. Para garantizar estos requisitos introduciremos los conceptos de rol y de privacidad sobre objetos.&amp;lt;/p&amp;gt;[[Tarea F: Abriendo el registro al resto de las oficinas|''Realizar la tarea'']]&lt;br /&gt;
&lt;br /&gt;
:*'''Tarea G: Evitando la replicación de código''' &amp;lt;p&amp;gt;Clasificadores, herencia y polimorfismo en ODL.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;[[Tarea G: Evitando la replicación de código|''Realizar la tarea'']]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Tarea H: Emitir certificados de documentación''' &amp;lt;p&amp;gt;Cómo elaborar escritos automáticamente y hacer uso de la firma electrónica.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;[[Tarea H: Emitir certificados de documentación|''Realizar la tarea'']]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Tarea I: Creando una oficina sin papeles''' &amp;lt;p&amp;gt;Cómo desarrollar un ''workflow'' en '''egeasy'''.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;[[Tarea I: Creando una oficina sin papeles|''Realizar la tarea'']]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:*'''Tarea J: Importar la base de datos de terceros de otra aplicación''' &amp;lt;p&amp;gt;Cómo importar datos en '''egeasy''' haciendo uso de XML, CSV y las herramienta '''egExport''' y '''egImportExport'''.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;[[Tarea J: Importar la base de datos de terceros de otra aplicación|''Realizar la tarea'']]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoría:ODL]]&lt;br /&gt;
[[Categoría:Tutoriales]]&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=Desarrollar_con_egeasy_paso_a_paso&amp;diff=5793</id>
		<title>Desarrollar con egeasy paso a paso</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=Desarrollar_con_egeasy_paso_a_paso&amp;diff=5793"/>
				<updated>2014-01-14T12:14:49Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: Desarrollar con egeasy paso a paso trasladada a Desarrollar con egEasy paso a paso: Capitalización&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Desarrollar con egEasy paso a paso]]&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5791</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=P%C3%A1gina_principal&amp;diff=5791"/>
				<updated>2014-01-14T12:13:07Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== egEasy ==&lt;br /&gt;
Bienvenido al espacio de referencia para el entorno de gestión de expedientes '''egEasy'''.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{|cellspacing=&amp;quot;3&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
!&amp;lt;div style=&amp;quot;background: #F0F8FF&amp;quot;&amp;gt;&lt;br /&gt;
====[[Novedades]]====&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;p&amp;gt;En esta sección podrás acceder a los artículos más recientes que se van creando sobre '''egEasy'''.&amp;lt;/p&amp;gt; No dejes de consultarla, puede haber documentación nueva que te interese.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;3&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
!&amp;lt;div style=&amp;quot;background: #F0F8FF&amp;quot;&amp;gt;&lt;br /&gt;
====[[Desarrollar con egEasy paso a paso]]====&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|[[Image:Registro_con_iconos.jpg|100px|left|Registro de entrada y salida]]&lt;br /&gt;
&amp;lt;p&amp;gt;Este tutorial te enseña paso a paso cómo construir un registro de entrada y salida para una organización. El tutorial se divide en 10 tareas que van mostrando progresivamente los conceptos más importantes en el desarrollo con la plataforma '''egEasy'''. Todas las tareas tienen ejemplos prácticos y algunas de ellas proponen ejercicios para el lector.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Si eres un nuevo desarrollador de '''egEasy''', deberías empezar por aquí.&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;3&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
!&amp;lt;div style=&amp;quot;background: #F0F8FF&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[[Cómo_compilar_paso_a_paso|Cómo compilar paso a paso]]====&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&amp;lt;p&amp;gt;La plataforma egEasy implementa un paradigma de desarrollo orientado por modelos. Por lo tanto, todo proyecto desarrollado con la plataforma debe compilarse para generar el modelo del sistema de gestión. En este tutorial te mostramos paso a paso cómo compilar un proyecto e instalar el modelo que genera.&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=STE&amp;diff=5790</id>
		<title>STE</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=STE&amp;diff=5790"/>
				<updated>2014-01-14T12:11:38Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El STE (Servicio de Tramitación de Expedientes) forma parte de la plataforma [[egEasy]].&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=Desarrollar_con_el_STE&amp;diff=5764</id>
		<title>Desarrollar con el STE</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=Desarrollar_con_el_STE&amp;diff=5764"/>
				<updated>2010-04-06T09:05:52Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: /* Formulario de registro de usuarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
=¿Que es un trámite?=&lt;br /&gt;
Un trámite es la definición del conjunto de tareas, pertenecientes al ''workflow'', que van a interactuar con la aplicación web STE. Los trámites definidos están orientados a ser iniciados por el usuario ,desde la aplicación web, o haciendo uso del servicio web, para que, a continuación, se inicie un proceso de ''workflow'' programado en ODL para la plataforma egeasy.&lt;br /&gt;
==Como se define un trámite en ODL==&lt;br /&gt;
&amp;lt;p&amp;gt;Para definir un trámite tenemos que indicar el nombre del trámite y declararlo como tipo trámite. La sintaxis de un trámite sería la siguiente.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 [Nombre del trámite] es tramite&lt;br /&gt;
   -ATRIBUTOS&lt;br /&gt;
   incluye TAREA&lt;br /&gt;
        .&lt;br /&gt;
        .&lt;br /&gt;
        .&lt;br /&gt;
   incluye TAREA&lt;br /&gt;
 fin&lt;br /&gt;
==Atributos de un trámite==&lt;br /&gt;
Los atributos que podemos declarar para un trámite son los siguientes:&lt;br /&gt;
*'''etiqueta''': Atributo opcional que permite indicar el nombre que se tendrá el trámite de cara al usuario. Si no existe, se toma como nombre el nombre de la definición.&lt;br /&gt;
*'''descripcion''': Proporciona un texto descriptivo sobre el trámite que se muestra en la interfaz web al crear el trámite.&lt;br /&gt;
*'''grupo''': Los trámites se pueden agrupar para que se muestren organizados al usuario. Indicar aquí el grupo al que pertenece el trámite.&lt;br /&gt;
*'''habitacion''': Indica en qué habitación de nuestro sistema de información queremos que esté disponible el trámite para su realización.&lt;br /&gt;
*'''estado''': Indica qué tabla y columna de una exportación va a almacenar el estado de un trámite.&lt;br /&gt;
*'''asunto''': Permite indicar un campo que se usará como asunto del trámite y se usará para mostrarlo en los listados de procedimientos iniciados. Por defecto toma en valor ''&amp;lt;tipo de tramite&amp;gt; - &amp;lt;fecha&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
==La clausula incluye==&lt;br /&gt;
Dentro de la definición del trámite, debemos especificar cuáles son las tareas del ''workflow'' que queremos que interactúen con el STE. Para ello, disponemos de la cláusula '''incluye'''. &lt;br /&gt;
Hay que usar una clausula '''incluye''' para cada tarea que se desee incluir, seguido a continuación por el nombre de definición de la tarea incluida. &lt;br /&gt;
&lt;br /&gt;
Cuando se incluye una tarea, hay que indicar que tipo de tarea es. En el STE podemos encontrar cuatro tipos de tareas, que son:&lt;br /&gt;
&lt;br /&gt;
*'''Tareas de inicio''': Solo puede haber una tarea de inicio en cada trámite, y es la tarea que tiene que rellenar el usuario cuando inicia un trámite.&lt;br /&gt;
&lt;br /&gt;
*'''Tareas de envío de documentación''': Son tareas que puede crear y enviar un interesado en cualquier momento, con el fin de aportar una documentación que considere oportuna.&lt;br /&gt;
&lt;br /&gt;
*'''Tareas de notificación''': Son tareas que envía la plataforma egeasy al STE con el fin de notificar al interesado cualquier cosa que sea necesaria durante la gestión del procedimiento.&lt;br /&gt;
&lt;br /&gt;
*'''Tareas de requerimiento''': Son tareas que envía la plataforma egeasy al STE para que el interesado aporte información adicional al trámite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Atributos de incluye===&lt;br /&gt;
Los atributos aplicables a las tareas que incluimos en un trámite pueden variar dependiendo del valor del atributo ''tipo'', por ejemplo, los atributos de respuesta sólo son aplicables a las tareas con el valor en el atributo tipo igual a REQUERIMIENTO. Dicho esto, pasamos a listar los distintos atributos aplicables a la clausula incluye:&lt;br /&gt;
&lt;br /&gt;
*'''Etiqueta''': Atributo que permite establecer el nombre que va a tener la tarea en la aplicación web del STE.&lt;br /&gt;
&lt;br /&gt;
*'''Tipo''': Atributo que indica qué tipo de comportamiento va a tener la tarea. Los distintos valores que acepta este atributo son: INICIO, REQUERIMIENTO, NOTIFICACION y ENVIO_DOCUMENTACION.&lt;br /&gt;
&lt;br /&gt;
*'''respuesta.etiqueta''': Atributo que indica qué nombre va a tener la tarea respuesta correspondiente &lt;br /&gt;
&lt;br /&gt;
*'''respuesta.descripcion''': Atributo para indicar una descripción sobre la tarea respuesta.&lt;br /&gt;
&lt;br /&gt;
*'''respuesta.formulario''': Atributo para indicar el nombre del formulario, perteneciente al ''target'' de la tarea de tipo REQUERIMIENTO, que se va a mostrar en la tarea de respuesta.&lt;br /&gt;
&lt;br /&gt;
*'''respuesta.clasificador''': Atributo para indicar el nombre del clasificador, perteneciente al ''target'' de la tarea de tipo REQUERIMIENTO, donde se van a guardar los documentos que se pueden adjuntar a una tarea respuesta, perteneciente a una tarea de tipo REQUERIMIENTO.&lt;br /&gt;
&lt;br /&gt;
=Colecciones=&lt;br /&gt;
Para el desarrollo correcto de los trámites en la aplicación web STE, debemos crear al menos una colección para almacenar los contenedores que se crean al iniciar un trámite. Al definir un trámite su ''main target'' tiene que ser el contenedor que se mostrará en la web para que el usuario introduzca los datos iniciales para comenzar el ''workflow'', y no un expediente como se suele hacer cuando programamos un sistema de información en egeasy, de ahí la necesidad de crearnos una colección. (Véase [[Colecciones]]) Posteriormente se moverán esos contenedores creados a su lugar dentro de alguna colección dentro de un expediente.&lt;br /&gt;
&lt;br /&gt;
=Estado de un trámite=&lt;br /&gt;
Los trámites en la aplicación web STE tienen estado. El estado de un trámite acabado de iniciar, pero no enviado, tiene el valor de ''borrador''. Una vez enviado a su primera tarea del trámite, éste pasa a tener el valor de ''En trámite''. Por último, cuando el trámite ha finalizado en la plataforma egeasy, pasa a tener el estado de ''finalizado''. Estos valores comentados para el estado de un trámite definen el comportamiento por defecto de la aplicación web STE. Si queremos cambiar el estado de un trámite debemos hacerlo mediante el atributo '''estado''' y su mecanismo para controlarlo, el cual vamos a proceder a explicar a continuación.&lt;br /&gt;
&lt;br /&gt;
Para poder modificar el estado de un trámite durante la vida del ''workflow'' asociado al mismo, debemos crearnos un campo en el contenedor que es ''maintarget'' del ''workflow''. Una vez creado ese campo, debemos exportarlo a alguna colección de nuestra elección. Si hay alguna duda sobre como crear una exportación, véase [[Exportaciones]]. Con la exportación del campo creada, debemos poner en el atributo '''estado''' del trámite, una ristra con el nombre de la tabla en la base de datos seguida de un punto y a continuación el nombre de la columna que representa el campo en la exportación. Para que quede mas claro, vamos a ver un ejemplo:&lt;br /&gt;
&lt;br /&gt;
Esto sería un ejemplo de la exportación creada, donde tenemos un campo en ODL llamado [Estado tramite], el cual se exporta a la tabla de nombre TR$SOLICITUD_TRAMITACION y en la columna ESTADO_TRAMITE.&lt;br /&gt;
&lt;br /&gt;
 [EP::Solicitudes de tramitación electrónica] {{PR|es}} exportacion&lt;br /&gt;
   -{{AT|nombre_tabla}} = {{STR|&amp;quot;TR$SOLICITUD_TRAMITACION&amp;quot;}};&lt;br /&gt;
   -{{AT|universo}} = [Solicitud de tramitación electrónica para acreditación del profesorado];&lt;br /&gt;
   {{PR|columna}} [Denominación/Apellidos y nombre]&lt;br /&gt;
     -{{AT|columna_bd.nombre}} = {{STR|&amp;quot;DENOMINACION&amp;quot;}};&lt;br /&gt;
     -{{AT|columna_bd}}.{{PR|tipo}} = texto;&lt;br /&gt;
     -{{AT|origen}} =[Datos generales].[Denominación/Apellidos y nombre];&lt;br /&gt;
   {{PR|columna}} [C.I.F./N.I.F.]&lt;br /&gt;
     -{{AT|columna_bd.nombre}} = {{STR|&amp;quot;CIF_NIF&amp;quot;}};&lt;br /&gt;
     -{{AT|columna_bd}}.{{PR|tipo}} = texto;&lt;br /&gt;
     -{{AT|origen}} = [Datos generales].[C.I.F./N.I.F.];&lt;br /&gt;
   {{PR|columna}} [Estado tramite]&lt;br /&gt;
     -{{AT|columna_bd.nombre}} = {{STR|&amp;quot;ESTADO_TRAMITE&amp;quot;}};&lt;br /&gt;
     -{{AT|columna_bd}}.{{PR|tipo}} = texto;&lt;br /&gt;
     -{{AT|origen}} = [Datos generales].[Estado tramite];&lt;br /&gt;
 {{PR|fin}}&lt;br /&gt;
&lt;br /&gt;
A continuación, un ejemplo de como se declararía un trámite utilizando el atributo '''estado'''.&lt;br /&gt;
&lt;br /&gt;
 [Trámite de Acreditación del profesorado] {{PR|es}} tramite&lt;br /&gt;
  -{{AT|descripcion}}='Procedimiento de tramitación para la aceditación del profesorado para la ACECAU';&lt;br /&gt;
  -{{AT|grupo}}='Trámites Acecau';&lt;br /&gt;
  -{{AT|Habitacion}}=[Oficina de evaluación del profesorado];&lt;br /&gt;
  -{{AT|estado}}={{STR|&amp;quot;TR$SOLTRAMI_ACRE_PROF.ESTADO_TRAMITE&amp;quot;}};&lt;br /&gt;
&lt;br /&gt;
Una vez declarado el atributo estado en el trámite, ya podemos proceder a modificarlo mediante código de método del lenguaje ODL. Para ello, sólo debemos acceder, mediante código ODL, al campo que representa el estado y asignarle el valor deseado que queremos que se muestre en la aplicación web del STE.&lt;br /&gt;
&lt;br /&gt;
  metodo ejemplo()&lt;br /&gt;
      var Contenedor1 : contenedor;&lt;br /&gt;
  inicio&lt;br /&gt;
           ...&lt;br /&gt;
      Contenedor1.[Estado] = &amp;quot;En trámite&amp;quot;;&lt;br /&gt;
           ...&lt;br /&gt;
  fin&lt;br /&gt;
&lt;br /&gt;
=Atributos especiales para los campos de ODL=&lt;br /&gt;
En la aplicación web STE disponemos, para el lenguaje ODL, de unos atributos especiales aplicables a la definición de componentes para poder definir ciertos aspectos de su comportamiento al interactuar con la aplicación web STE. A continuación, listaremos y definiremos los atributos que ha añadido el STE al lenguage ODL.&lt;br /&gt;
&lt;br /&gt;
'''tramitacion.visible'''&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Atributo que permite ocultar un campo para que no se visualice en la aplicación web del STE, pero sí en la plataforma egeasy. Este atributo es aplicable a todos los campos de ODL. El valor por defecto para este atributo es verdadero.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
'''tramitacion.requerida'''&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Atributo que permite especificar qué campos son de obligada cumplimentación por parte del usuario. El valor por defecto es falso. Este atributo se puede usar en combinación con las validaciones de ODL para indicar cómo se debe cumplimentar un campo.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
'''tramitacion.valor'''&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Atributo que permite establecer el valor del campo al que se le aplica el atributo. Se pueden indicar campos del formulario de registro, además de los campos obligatorios, que son ''Nombre de usuario'', ''Nombre completo'', ''Nif'', ''Direccion de correo'' y ''Organizacion''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
'''tramitacion.editable'''&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Atributo que permite indicar si el campo es editable o no. El valor por defecto es verdadero.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Formulario de registro de usuarios=&lt;br /&gt;
En la aplicación web STE, podemos crear a nuestra medida un formulario de registro de usuarios, pudiendo definir los campos que queremos que el usuario cumplimente al darse de alta en la aplicación web STE. El fichero donde se definen los campos del registro es un fichero XML, y se indica como un parámetro del [[Cómo integrar el Sistema de Tramitación Electrónica en egeasy#Fichero de configuración|fichero de configuración]].&lt;br /&gt;
Por defecto, sin que sea necesario indicarlo, hay una serie de campos obligatorios que se añaden a los descritos en el formulario de registro. Estos campos son:&lt;br /&gt;
&lt;br /&gt;
*Nombre de usuario&lt;br /&gt;
*Nombre completo&lt;br /&gt;
*Nif&lt;br /&gt;
*Direccion de correo&lt;br /&gt;
*Organizacion&lt;br /&gt;
&lt;br /&gt;
A continuación mostramos un ejemplo de un fichero de registro.&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;registration_form&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Género&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;allowed_values&amp;gt;&lt;br /&gt;
       &amp;lt;item&amp;gt;Masculino&amp;lt;/item&amp;gt;&lt;br /&gt;
       &amp;lt;item&amp;gt;Femenino&amp;lt;/item&amp;gt;&lt;br /&gt;
     &amp;lt;/allowed_values&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Teléfono 1&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Teléfono 2&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Dirección&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Código postal&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Localidad&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Provincia&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Fax&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
 &amp;lt;/registration_form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Tramitación electrónica]]&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=Desarrollar_con_el_STE&amp;diff=5763</id>
		<title>Desarrollar con el STE</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=Desarrollar_con_el_STE&amp;diff=5763"/>
				<updated>2010-04-06T09:05:35Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: /* Formulario de registro de usuarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
=¿Que es un trámite?=&lt;br /&gt;
Un trámite es la definición del conjunto de tareas, pertenecientes al ''workflow'', que van a interactuar con la aplicación web STE. Los trámites definidos están orientados a ser iniciados por el usuario ,desde la aplicación web, o haciendo uso del servicio web, para que, a continuación, se inicie un proceso de ''workflow'' programado en ODL para la plataforma egeasy.&lt;br /&gt;
==Como se define un trámite en ODL==&lt;br /&gt;
&amp;lt;p&amp;gt;Para definir un trámite tenemos que indicar el nombre del trámite y declararlo como tipo trámite. La sintaxis de un trámite sería la siguiente.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 [Nombre del trámite] es tramite&lt;br /&gt;
   -ATRIBUTOS&lt;br /&gt;
   incluye TAREA&lt;br /&gt;
        .&lt;br /&gt;
        .&lt;br /&gt;
        .&lt;br /&gt;
   incluye TAREA&lt;br /&gt;
 fin&lt;br /&gt;
==Atributos de un trámite==&lt;br /&gt;
Los atributos que podemos declarar para un trámite son los siguientes:&lt;br /&gt;
*'''etiqueta''': Atributo opcional que permite indicar el nombre que se tendrá el trámite de cara al usuario. Si no existe, se toma como nombre el nombre de la definición.&lt;br /&gt;
*'''descripcion''': Proporciona un texto descriptivo sobre el trámite que se muestra en la interfaz web al crear el trámite.&lt;br /&gt;
*'''grupo''': Los trámites se pueden agrupar para que se muestren organizados al usuario. Indicar aquí el grupo al que pertenece el trámite.&lt;br /&gt;
*'''habitacion''': Indica en qué habitación de nuestro sistema de información queremos que esté disponible el trámite para su realización.&lt;br /&gt;
*'''estado''': Indica qué tabla y columna de una exportación va a almacenar el estado de un trámite.&lt;br /&gt;
*'''asunto''': Permite indicar un campo que se usará como asunto del trámite y se usará para mostrarlo en los listados de procedimientos iniciados. Por defecto toma en valor ''&amp;lt;tipo de tramite&amp;gt; - &amp;lt;fecha&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
==La clausula incluye==&lt;br /&gt;
Dentro de la definición del trámite, debemos especificar cuáles son las tareas del ''workflow'' que queremos que interactúen con el STE. Para ello, disponemos de la cláusula '''incluye'''. &lt;br /&gt;
Hay que usar una clausula '''incluye''' para cada tarea que se desee incluir, seguido a continuación por el nombre de definición de la tarea incluida. &lt;br /&gt;
&lt;br /&gt;
Cuando se incluye una tarea, hay que indicar que tipo de tarea es. En el STE podemos encontrar cuatro tipos de tareas, que son:&lt;br /&gt;
&lt;br /&gt;
*'''Tareas de inicio''': Solo puede haber una tarea de inicio en cada trámite, y es la tarea que tiene que rellenar el usuario cuando inicia un trámite.&lt;br /&gt;
&lt;br /&gt;
*'''Tareas de envío de documentación''': Son tareas que puede crear y enviar un interesado en cualquier momento, con el fin de aportar una documentación que considere oportuna.&lt;br /&gt;
&lt;br /&gt;
*'''Tareas de notificación''': Son tareas que envía la plataforma egeasy al STE con el fin de notificar al interesado cualquier cosa que sea necesaria durante la gestión del procedimiento.&lt;br /&gt;
&lt;br /&gt;
*'''Tareas de requerimiento''': Son tareas que envía la plataforma egeasy al STE para que el interesado aporte información adicional al trámite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Atributos de incluye===&lt;br /&gt;
Los atributos aplicables a las tareas que incluimos en un trámite pueden variar dependiendo del valor del atributo ''tipo'', por ejemplo, los atributos de respuesta sólo son aplicables a las tareas con el valor en el atributo tipo igual a REQUERIMIENTO. Dicho esto, pasamos a listar los distintos atributos aplicables a la clausula incluye:&lt;br /&gt;
&lt;br /&gt;
*'''Etiqueta''': Atributo que permite establecer el nombre que va a tener la tarea en la aplicación web del STE.&lt;br /&gt;
&lt;br /&gt;
*'''Tipo''': Atributo que indica qué tipo de comportamiento va a tener la tarea. Los distintos valores que acepta este atributo son: INICIO, REQUERIMIENTO, NOTIFICACION y ENVIO_DOCUMENTACION.&lt;br /&gt;
&lt;br /&gt;
*'''respuesta.etiqueta''': Atributo que indica qué nombre va a tener la tarea respuesta correspondiente &lt;br /&gt;
&lt;br /&gt;
*'''respuesta.descripcion''': Atributo para indicar una descripción sobre la tarea respuesta.&lt;br /&gt;
&lt;br /&gt;
*'''respuesta.formulario''': Atributo para indicar el nombre del formulario, perteneciente al ''target'' de la tarea de tipo REQUERIMIENTO, que se va a mostrar en la tarea de respuesta.&lt;br /&gt;
&lt;br /&gt;
*'''respuesta.clasificador''': Atributo para indicar el nombre del clasificador, perteneciente al ''target'' de la tarea de tipo REQUERIMIENTO, donde se van a guardar los documentos que se pueden adjuntar a una tarea respuesta, perteneciente a una tarea de tipo REQUERIMIENTO.&lt;br /&gt;
&lt;br /&gt;
=Colecciones=&lt;br /&gt;
Para el desarrollo correcto de los trámites en la aplicación web STE, debemos crear al menos una colección para almacenar los contenedores que se crean al iniciar un trámite. Al definir un trámite su ''main target'' tiene que ser el contenedor que se mostrará en la web para que el usuario introduzca los datos iniciales para comenzar el ''workflow'', y no un expediente como se suele hacer cuando programamos un sistema de información en egeasy, de ahí la necesidad de crearnos una colección. (Véase [[Colecciones]]) Posteriormente se moverán esos contenedores creados a su lugar dentro de alguna colección dentro de un expediente.&lt;br /&gt;
&lt;br /&gt;
=Estado de un trámite=&lt;br /&gt;
Los trámites en la aplicación web STE tienen estado. El estado de un trámite acabado de iniciar, pero no enviado, tiene el valor de ''borrador''. Una vez enviado a su primera tarea del trámite, éste pasa a tener el valor de ''En trámite''. Por último, cuando el trámite ha finalizado en la plataforma egeasy, pasa a tener el estado de ''finalizado''. Estos valores comentados para el estado de un trámite definen el comportamiento por defecto de la aplicación web STE. Si queremos cambiar el estado de un trámite debemos hacerlo mediante el atributo '''estado''' y su mecanismo para controlarlo, el cual vamos a proceder a explicar a continuación.&lt;br /&gt;
&lt;br /&gt;
Para poder modificar el estado de un trámite durante la vida del ''workflow'' asociado al mismo, debemos crearnos un campo en el contenedor que es ''maintarget'' del ''workflow''. Una vez creado ese campo, debemos exportarlo a alguna colección de nuestra elección. Si hay alguna duda sobre como crear una exportación, véase [[Exportaciones]]. Con la exportación del campo creada, debemos poner en el atributo '''estado''' del trámite, una ristra con el nombre de la tabla en la base de datos seguida de un punto y a continuación el nombre de la columna que representa el campo en la exportación. Para que quede mas claro, vamos a ver un ejemplo:&lt;br /&gt;
&lt;br /&gt;
Esto sería un ejemplo de la exportación creada, donde tenemos un campo en ODL llamado [Estado tramite], el cual se exporta a la tabla de nombre TR$SOLICITUD_TRAMITACION y en la columna ESTADO_TRAMITE.&lt;br /&gt;
&lt;br /&gt;
 [EP::Solicitudes de tramitación electrónica] {{PR|es}} exportacion&lt;br /&gt;
   -{{AT|nombre_tabla}} = {{STR|&amp;quot;TR$SOLICITUD_TRAMITACION&amp;quot;}};&lt;br /&gt;
   -{{AT|universo}} = [Solicitud de tramitación electrónica para acreditación del profesorado];&lt;br /&gt;
   {{PR|columna}} [Denominación/Apellidos y nombre]&lt;br /&gt;
     -{{AT|columna_bd.nombre}} = {{STR|&amp;quot;DENOMINACION&amp;quot;}};&lt;br /&gt;
     -{{AT|columna_bd}}.{{PR|tipo}} = texto;&lt;br /&gt;
     -{{AT|origen}} =[Datos generales].[Denominación/Apellidos y nombre];&lt;br /&gt;
   {{PR|columna}} [C.I.F./N.I.F.]&lt;br /&gt;
     -{{AT|columna_bd.nombre}} = {{STR|&amp;quot;CIF_NIF&amp;quot;}};&lt;br /&gt;
     -{{AT|columna_bd}}.{{PR|tipo}} = texto;&lt;br /&gt;
     -{{AT|origen}} = [Datos generales].[C.I.F./N.I.F.];&lt;br /&gt;
   {{PR|columna}} [Estado tramite]&lt;br /&gt;
     -{{AT|columna_bd.nombre}} = {{STR|&amp;quot;ESTADO_TRAMITE&amp;quot;}};&lt;br /&gt;
     -{{AT|columna_bd}}.{{PR|tipo}} = texto;&lt;br /&gt;
     -{{AT|origen}} = [Datos generales].[Estado tramite];&lt;br /&gt;
 {{PR|fin}}&lt;br /&gt;
&lt;br /&gt;
A continuación, un ejemplo de como se declararía un trámite utilizando el atributo '''estado'''.&lt;br /&gt;
&lt;br /&gt;
 [Trámite de Acreditación del profesorado] {{PR|es}} tramite&lt;br /&gt;
  -{{AT|descripcion}}='Procedimiento de tramitación para la aceditación del profesorado para la ACECAU';&lt;br /&gt;
  -{{AT|grupo}}='Trámites Acecau';&lt;br /&gt;
  -{{AT|Habitacion}}=[Oficina de evaluación del profesorado];&lt;br /&gt;
  -{{AT|estado}}={{STR|&amp;quot;TR$SOLTRAMI_ACRE_PROF.ESTADO_TRAMITE&amp;quot;}};&lt;br /&gt;
&lt;br /&gt;
Una vez declarado el atributo estado en el trámite, ya podemos proceder a modificarlo mediante código de método del lenguaje ODL. Para ello, sólo debemos acceder, mediante código ODL, al campo que representa el estado y asignarle el valor deseado que queremos que se muestre en la aplicación web del STE.&lt;br /&gt;
&lt;br /&gt;
  metodo ejemplo()&lt;br /&gt;
      var Contenedor1 : contenedor;&lt;br /&gt;
  inicio&lt;br /&gt;
           ...&lt;br /&gt;
      Contenedor1.[Estado] = &amp;quot;En trámite&amp;quot;;&lt;br /&gt;
           ...&lt;br /&gt;
  fin&lt;br /&gt;
&lt;br /&gt;
=Atributos especiales para los campos de ODL=&lt;br /&gt;
En la aplicación web STE disponemos, para el lenguaje ODL, de unos atributos especiales aplicables a la definición de componentes para poder definir ciertos aspectos de su comportamiento al interactuar con la aplicación web STE. A continuación, listaremos y definiremos los atributos que ha añadido el STE al lenguage ODL.&lt;br /&gt;
&lt;br /&gt;
'''tramitacion.visible'''&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Atributo que permite ocultar un campo para que no se visualice en la aplicación web del STE, pero sí en la plataforma egeasy. Este atributo es aplicable a todos los campos de ODL. El valor por defecto para este atributo es verdadero.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
'''tramitacion.requerida'''&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Atributo que permite especificar qué campos son de obligada cumplimentación por parte del usuario. El valor por defecto es falso. Este atributo se puede usar en combinación con las validaciones de ODL para indicar cómo se debe cumplimentar un campo.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
'''tramitacion.valor'''&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Atributo que permite establecer el valor del campo al que se le aplica el atributo. Se pueden indicar campos del formulario de registro, además de los campos obligatorios, que son ''Nombre de usuario'', ''Nombre completo'', ''Nif'', ''Direccion de correo'' y ''Organizacion''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
'''tramitacion.editable'''&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Atributo que permite indicar si el campo es editable o no. El valor por defecto es verdadero.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Formulario de registro de usuarios=&lt;br /&gt;
En la aplicación web STE, podemos crear a nuestra medida un formulario de registro de usuarios, pudiendo definir los campos que queremos que el usuario cumplimente al darse de alta en la aplicación web STE. El fichero donde se definen los campos del registro es un fichero XML, y se indica como un parámetro del [[Cómo integrar el Sistema de Tramitación Electrónica en egeasy#Fichero de configuración|fichero de configuración]].&lt;br /&gt;
Por defecto, sin que sea necesario indicarlo, hay una serie de campos obligatorios que se añaden a los descritos en el formulario de registro. Estos campos son:&lt;br /&gt;
&lt;br /&gt;
*'''Nombre de usuario'''&lt;br /&gt;
*'''Nombre completo'''&lt;br /&gt;
*'''Nif'''&lt;br /&gt;
*'''Direccion de correo'''&lt;br /&gt;
*'''Organizacion'''&lt;br /&gt;
&lt;br /&gt;
A continuación mostramos un ejemplo de un fichero de registro.&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;registration_form&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Género&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;allowed_values&amp;gt;&lt;br /&gt;
       &amp;lt;item&amp;gt;Masculino&amp;lt;/item&amp;gt;&lt;br /&gt;
       &amp;lt;item&amp;gt;Femenino&amp;lt;/item&amp;gt;&lt;br /&gt;
     &amp;lt;/allowed_values&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Teléfono 1&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Teléfono 2&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Dirección&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Código postal&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Localidad&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Provincia&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Fax&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
 &amp;lt;/registration_form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Tramitación electrónica]]&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=Desarrollar_con_el_STE&amp;diff=5762</id>
		<title>Desarrollar con el STE</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=Desarrollar_con_el_STE&amp;diff=5762"/>
				<updated>2010-04-06T09:04:45Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: /* Formulario de registro de usuarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
=¿Que es un trámite?=&lt;br /&gt;
Un trámite es la definición del conjunto de tareas, pertenecientes al ''workflow'', que van a interactuar con la aplicación web STE. Los trámites definidos están orientados a ser iniciados por el usuario ,desde la aplicación web, o haciendo uso del servicio web, para que, a continuación, se inicie un proceso de ''workflow'' programado en ODL para la plataforma egeasy.&lt;br /&gt;
==Como se define un trámite en ODL==&lt;br /&gt;
&amp;lt;p&amp;gt;Para definir un trámite tenemos que indicar el nombre del trámite y declararlo como tipo trámite. La sintaxis de un trámite sería la siguiente.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 [Nombre del trámite] es tramite&lt;br /&gt;
   -ATRIBUTOS&lt;br /&gt;
   incluye TAREA&lt;br /&gt;
        .&lt;br /&gt;
        .&lt;br /&gt;
        .&lt;br /&gt;
   incluye TAREA&lt;br /&gt;
 fin&lt;br /&gt;
==Atributos de un trámite==&lt;br /&gt;
Los atributos que podemos declarar para un trámite son los siguientes:&lt;br /&gt;
*'''etiqueta''': Atributo opcional que permite indicar el nombre que se tendrá el trámite de cara al usuario. Si no existe, se toma como nombre el nombre de la definición.&lt;br /&gt;
*'''descripcion''': Proporciona un texto descriptivo sobre el trámite que se muestra en la interfaz web al crear el trámite.&lt;br /&gt;
*'''grupo''': Los trámites se pueden agrupar para que se muestren organizados al usuario. Indicar aquí el grupo al que pertenece el trámite.&lt;br /&gt;
*'''habitacion''': Indica en qué habitación de nuestro sistema de información queremos que esté disponible el trámite para su realización.&lt;br /&gt;
*'''estado''': Indica qué tabla y columna de una exportación va a almacenar el estado de un trámite.&lt;br /&gt;
*'''asunto''': Permite indicar un campo que se usará como asunto del trámite y se usará para mostrarlo en los listados de procedimientos iniciados. Por defecto toma en valor ''&amp;lt;tipo de tramite&amp;gt; - &amp;lt;fecha&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
==La clausula incluye==&lt;br /&gt;
Dentro de la definición del trámite, debemos especificar cuáles son las tareas del ''workflow'' que queremos que interactúen con el STE. Para ello, disponemos de la cláusula '''incluye'''. &lt;br /&gt;
Hay que usar una clausula '''incluye''' para cada tarea que se desee incluir, seguido a continuación por el nombre de definición de la tarea incluida. &lt;br /&gt;
&lt;br /&gt;
Cuando se incluye una tarea, hay que indicar que tipo de tarea es. En el STE podemos encontrar cuatro tipos de tareas, que son:&lt;br /&gt;
&lt;br /&gt;
*'''Tareas de inicio''': Solo puede haber una tarea de inicio en cada trámite, y es la tarea que tiene que rellenar el usuario cuando inicia un trámite.&lt;br /&gt;
&lt;br /&gt;
*'''Tareas de envío de documentación''': Son tareas que puede crear y enviar un interesado en cualquier momento, con el fin de aportar una documentación que considere oportuna.&lt;br /&gt;
&lt;br /&gt;
*'''Tareas de notificación''': Son tareas que envía la plataforma egeasy al STE con el fin de notificar al interesado cualquier cosa que sea necesaria durante la gestión del procedimiento.&lt;br /&gt;
&lt;br /&gt;
*'''Tareas de requerimiento''': Son tareas que envía la plataforma egeasy al STE para que el interesado aporte información adicional al trámite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Atributos de incluye===&lt;br /&gt;
Los atributos aplicables a las tareas que incluimos en un trámite pueden variar dependiendo del valor del atributo ''tipo'', por ejemplo, los atributos de respuesta sólo son aplicables a las tareas con el valor en el atributo tipo igual a REQUERIMIENTO. Dicho esto, pasamos a listar los distintos atributos aplicables a la clausula incluye:&lt;br /&gt;
&lt;br /&gt;
*'''Etiqueta''': Atributo que permite establecer el nombre que va a tener la tarea en la aplicación web del STE.&lt;br /&gt;
&lt;br /&gt;
*'''Tipo''': Atributo que indica qué tipo de comportamiento va a tener la tarea. Los distintos valores que acepta este atributo son: INICIO, REQUERIMIENTO, NOTIFICACION y ENVIO_DOCUMENTACION.&lt;br /&gt;
&lt;br /&gt;
*'''respuesta.etiqueta''': Atributo que indica qué nombre va a tener la tarea respuesta correspondiente &lt;br /&gt;
&lt;br /&gt;
*'''respuesta.descripcion''': Atributo para indicar una descripción sobre la tarea respuesta.&lt;br /&gt;
&lt;br /&gt;
*'''respuesta.formulario''': Atributo para indicar el nombre del formulario, perteneciente al ''target'' de la tarea de tipo REQUERIMIENTO, que se va a mostrar en la tarea de respuesta.&lt;br /&gt;
&lt;br /&gt;
*'''respuesta.clasificador''': Atributo para indicar el nombre del clasificador, perteneciente al ''target'' de la tarea de tipo REQUERIMIENTO, donde se van a guardar los documentos que se pueden adjuntar a una tarea respuesta, perteneciente a una tarea de tipo REQUERIMIENTO.&lt;br /&gt;
&lt;br /&gt;
=Colecciones=&lt;br /&gt;
Para el desarrollo correcto de los trámites en la aplicación web STE, debemos crear al menos una colección para almacenar los contenedores que se crean al iniciar un trámite. Al definir un trámite su ''main target'' tiene que ser el contenedor que se mostrará en la web para que el usuario introduzca los datos iniciales para comenzar el ''workflow'', y no un expediente como se suele hacer cuando programamos un sistema de información en egeasy, de ahí la necesidad de crearnos una colección. (Véase [[Colecciones]]) Posteriormente se moverán esos contenedores creados a su lugar dentro de alguna colección dentro de un expediente.&lt;br /&gt;
&lt;br /&gt;
=Estado de un trámite=&lt;br /&gt;
Los trámites en la aplicación web STE tienen estado. El estado de un trámite acabado de iniciar, pero no enviado, tiene el valor de ''borrador''. Una vez enviado a su primera tarea del trámite, éste pasa a tener el valor de ''En trámite''. Por último, cuando el trámite ha finalizado en la plataforma egeasy, pasa a tener el estado de ''finalizado''. Estos valores comentados para el estado de un trámite definen el comportamiento por defecto de la aplicación web STE. Si queremos cambiar el estado de un trámite debemos hacerlo mediante el atributo '''estado''' y su mecanismo para controlarlo, el cual vamos a proceder a explicar a continuación.&lt;br /&gt;
&lt;br /&gt;
Para poder modificar el estado de un trámite durante la vida del ''workflow'' asociado al mismo, debemos crearnos un campo en el contenedor que es ''maintarget'' del ''workflow''. Una vez creado ese campo, debemos exportarlo a alguna colección de nuestra elección. Si hay alguna duda sobre como crear una exportación, véase [[Exportaciones]]. Con la exportación del campo creada, debemos poner en el atributo '''estado''' del trámite, una ristra con el nombre de la tabla en la base de datos seguida de un punto y a continuación el nombre de la columna que representa el campo en la exportación. Para que quede mas claro, vamos a ver un ejemplo:&lt;br /&gt;
&lt;br /&gt;
Esto sería un ejemplo de la exportación creada, donde tenemos un campo en ODL llamado [Estado tramite], el cual se exporta a la tabla de nombre TR$SOLICITUD_TRAMITACION y en la columna ESTADO_TRAMITE.&lt;br /&gt;
&lt;br /&gt;
 [EP::Solicitudes de tramitación electrónica] {{PR|es}} exportacion&lt;br /&gt;
   -{{AT|nombre_tabla}} = {{STR|&amp;quot;TR$SOLICITUD_TRAMITACION&amp;quot;}};&lt;br /&gt;
   -{{AT|universo}} = [Solicitud de tramitación electrónica para acreditación del profesorado];&lt;br /&gt;
   {{PR|columna}} [Denominación/Apellidos y nombre]&lt;br /&gt;
     -{{AT|columna_bd.nombre}} = {{STR|&amp;quot;DENOMINACION&amp;quot;}};&lt;br /&gt;
     -{{AT|columna_bd}}.{{PR|tipo}} = texto;&lt;br /&gt;
     -{{AT|origen}} =[Datos generales].[Denominación/Apellidos y nombre];&lt;br /&gt;
   {{PR|columna}} [C.I.F./N.I.F.]&lt;br /&gt;
     -{{AT|columna_bd.nombre}} = {{STR|&amp;quot;CIF_NIF&amp;quot;}};&lt;br /&gt;
     -{{AT|columna_bd}}.{{PR|tipo}} = texto;&lt;br /&gt;
     -{{AT|origen}} = [Datos generales].[C.I.F./N.I.F.];&lt;br /&gt;
   {{PR|columna}} [Estado tramite]&lt;br /&gt;
     -{{AT|columna_bd.nombre}} = {{STR|&amp;quot;ESTADO_TRAMITE&amp;quot;}};&lt;br /&gt;
     -{{AT|columna_bd}}.{{PR|tipo}} = texto;&lt;br /&gt;
     -{{AT|origen}} = [Datos generales].[Estado tramite];&lt;br /&gt;
 {{PR|fin}}&lt;br /&gt;
&lt;br /&gt;
A continuación, un ejemplo de como se declararía un trámite utilizando el atributo '''estado'''.&lt;br /&gt;
&lt;br /&gt;
 [Trámite de Acreditación del profesorado] {{PR|es}} tramite&lt;br /&gt;
  -{{AT|descripcion}}='Procedimiento de tramitación para la aceditación del profesorado para la ACECAU';&lt;br /&gt;
  -{{AT|grupo}}='Trámites Acecau';&lt;br /&gt;
  -{{AT|Habitacion}}=[Oficina de evaluación del profesorado];&lt;br /&gt;
  -{{AT|estado}}={{STR|&amp;quot;TR$SOLTRAMI_ACRE_PROF.ESTADO_TRAMITE&amp;quot;}};&lt;br /&gt;
&lt;br /&gt;
Una vez declarado el atributo estado en el trámite, ya podemos proceder a modificarlo mediante código de método del lenguaje ODL. Para ello, sólo debemos acceder, mediante código ODL, al campo que representa el estado y asignarle el valor deseado que queremos que se muestre en la aplicación web del STE.&lt;br /&gt;
&lt;br /&gt;
  metodo ejemplo()&lt;br /&gt;
      var Contenedor1 : contenedor;&lt;br /&gt;
  inicio&lt;br /&gt;
           ...&lt;br /&gt;
      Contenedor1.[Estado] = &amp;quot;En trámite&amp;quot;;&lt;br /&gt;
           ...&lt;br /&gt;
  fin&lt;br /&gt;
&lt;br /&gt;
=Atributos especiales para los campos de ODL=&lt;br /&gt;
En la aplicación web STE disponemos, para el lenguaje ODL, de unos atributos especiales aplicables a la definición de componentes para poder definir ciertos aspectos de su comportamiento al interactuar con la aplicación web STE. A continuación, listaremos y definiremos los atributos que ha añadido el STE al lenguage ODL.&lt;br /&gt;
&lt;br /&gt;
'''tramitacion.visible'''&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Atributo que permite ocultar un campo para que no se visualice en la aplicación web del STE, pero sí en la plataforma egeasy. Este atributo es aplicable a todos los campos de ODL. El valor por defecto para este atributo es verdadero.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
'''tramitacion.requerida'''&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Atributo que permite especificar qué campos son de obligada cumplimentación por parte del usuario. El valor por defecto es falso. Este atributo se puede usar en combinación con las validaciones de ODL para indicar cómo se debe cumplimentar un campo.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
'''tramitacion.valor'''&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Atributo que permite establecer el valor del campo al que se le aplica el atributo. Se pueden indicar campos del formulario de registro, además de los campos obligatorios, que son ''Nombre de usuario'', ''Nombre completo'', ''Nif'', ''Direccion de correo'' y ''Organizacion''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
'''tramitacion.editable'''&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Atributo que permite indicar si el campo es editable o no. El valor por defecto es verdadero.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Formulario de registro de usuarios=&lt;br /&gt;
En la aplicación web STE, podemos crear a nuestra medida un formulario de registro de usuarios, pudiendo definir los campos que queremos que el usuario cumplimente al darse de alta en la aplicación web STE. El fichero donde se definen los campos del registro es un fichero XML, y se indica como un parámetro del [[Cómo integrar el Sistema de Tramitación Electrónica en egeasy#Fichero de configuración|fichero de configuración]].&lt;br /&gt;
Por defecto, sin que sea necesario indicarlo, hay una serie de campos obligatorios que se añaden a los descritos en el formulario de registro. Estos campos son:&lt;br /&gt;
&lt;br /&gt;
'''Nombre de usuario'''&lt;br /&gt;
'''Nombre completo'''&lt;br /&gt;
'''Nif'''&lt;br /&gt;
'''Direccion de correo'''&lt;br /&gt;
'''Organizacion'''&lt;br /&gt;
&lt;br /&gt;
A continuación mostramos un ejemplo de un fichero de registro.&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;registration_form&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Género&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;allowed_values&amp;gt;&lt;br /&gt;
       &amp;lt;item&amp;gt;Masculino&amp;lt;/item&amp;gt;&lt;br /&gt;
       &amp;lt;item&amp;gt;Femenino&amp;lt;/item&amp;gt;&lt;br /&gt;
     &amp;lt;/allowed_values&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Teléfono 1&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Teléfono 2&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Dirección&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Código postal&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Localidad&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Provincia&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Fax&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
 &amp;lt;/registration_form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Tramitación electrónica]]&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=Desarrollar_con_el_STE&amp;diff=5761</id>
		<title>Desarrollar con el STE</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=Desarrollar_con_el_STE&amp;diff=5761"/>
				<updated>2010-04-06T09:02:39Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: /* Atributos especiales para los campos de ODL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
=¿Que es un trámite?=&lt;br /&gt;
Un trámite es la definición del conjunto de tareas, pertenecientes al ''workflow'', que van a interactuar con la aplicación web STE. Los trámites definidos están orientados a ser iniciados por el usuario ,desde la aplicación web, o haciendo uso del servicio web, para que, a continuación, se inicie un proceso de ''workflow'' programado en ODL para la plataforma egeasy.&lt;br /&gt;
==Como se define un trámite en ODL==&lt;br /&gt;
&amp;lt;p&amp;gt;Para definir un trámite tenemos que indicar el nombre del trámite y declararlo como tipo trámite. La sintaxis de un trámite sería la siguiente.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 [Nombre del trámite] es tramite&lt;br /&gt;
   -ATRIBUTOS&lt;br /&gt;
   incluye TAREA&lt;br /&gt;
        .&lt;br /&gt;
        .&lt;br /&gt;
        .&lt;br /&gt;
   incluye TAREA&lt;br /&gt;
 fin&lt;br /&gt;
==Atributos de un trámite==&lt;br /&gt;
Los atributos que podemos declarar para un trámite son los siguientes:&lt;br /&gt;
*'''etiqueta''': Atributo opcional que permite indicar el nombre que se tendrá el trámite de cara al usuario. Si no existe, se toma como nombre el nombre de la definición.&lt;br /&gt;
*'''descripcion''': Proporciona un texto descriptivo sobre el trámite que se muestra en la interfaz web al crear el trámite.&lt;br /&gt;
*'''grupo''': Los trámites se pueden agrupar para que se muestren organizados al usuario. Indicar aquí el grupo al que pertenece el trámite.&lt;br /&gt;
*'''habitacion''': Indica en qué habitación de nuestro sistema de información queremos que esté disponible el trámite para su realización.&lt;br /&gt;
*'''estado''': Indica qué tabla y columna de una exportación va a almacenar el estado de un trámite.&lt;br /&gt;
*'''asunto''': Permite indicar un campo que se usará como asunto del trámite y se usará para mostrarlo en los listados de procedimientos iniciados. Por defecto toma en valor ''&amp;lt;tipo de tramite&amp;gt; - &amp;lt;fecha&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
==La clausula incluye==&lt;br /&gt;
Dentro de la definición del trámite, debemos especificar cuáles son las tareas del ''workflow'' que queremos que interactúen con el STE. Para ello, disponemos de la cláusula '''incluye'''. &lt;br /&gt;
Hay que usar una clausula '''incluye''' para cada tarea que se desee incluir, seguido a continuación por el nombre de definición de la tarea incluida. &lt;br /&gt;
&lt;br /&gt;
Cuando se incluye una tarea, hay que indicar que tipo de tarea es. En el STE podemos encontrar cuatro tipos de tareas, que son:&lt;br /&gt;
&lt;br /&gt;
*'''Tareas de inicio''': Solo puede haber una tarea de inicio en cada trámite, y es la tarea que tiene que rellenar el usuario cuando inicia un trámite.&lt;br /&gt;
&lt;br /&gt;
*'''Tareas de envío de documentación''': Son tareas que puede crear y enviar un interesado en cualquier momento, con el fin de aportar una documentación que considere oportuna.&lt;br /&gt;
&lt;br /&gt;
*'''Tareas de notificación''': Son tareas que envía la plataforma egeasy al STE con el fin de notificar al interesado cualquier cosa que sea necesaria durante la gestión del procedimiento.&lt;br /&gt;
&lt;br /&gt;
*'''Tareas de requerimiento''': Son tareas que envía la plataforma egeasy al STE para que el interesado aporte información adicional al trámite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Atributos de incluye===&lt;br /&gt;
Los atributos aplicables a las tareas que incluimos en un trámite pueden variar dependiendo del valor del atributo ''tipo'', por ejemplo, los atributos de respuesta sólo son aplicables a las tareas con el valor en el atributo tipo igual a REQUERIMIENTO. Dicho esto, pasamos a listar los distintos atributos aplicables a la clausula incluye:&lt;br /&gt;
&lt;br /&gt;
*'''Etiqueta''': Atributo que permite establecer el nombre que va a tener la tarea en la aplicación web del STE.&lt;br /&gt;
&lt;br /&gt;
*'''Tipo''': Atributo que indica qué tipo de comportamiento va a tener la tarea. Los distintos valores que acepta este atributo son: INICIO, REQUERIMIENTO, NOTIFICACION y ENVIO_DOCUMENTACION.&lt;br /&gt;
&lt;br /&gt;
*'''respuesta.etiqueta''': Atributo que indica qué nombre va a tener la tarea respuesta correspondiente &lt;br /&gt;
&lt;br /&gt;
*'''respuesta.descripcion''': Atributo para indicar una descripción sobre la tarea respuesta.&lt;br /&gt;
&lt;br /&gt;
*'''respuesta.formulario''': Atributo para indicar el nombre del formulario, perteneciente al ''target'' de la tarea de tipo REQUERIMIENTO, que se va a mostrar en la tarea de respuesta.&lt;br /&gt;
&lt;br /&gt;
*'''respuesta.clasificador''': Atributo para indicar el nombre del clasificador, perteneciente al ''target'' de la tarea de tipo REQUERIMIENTO, donde se van a guardar los documentos que se pueden adjuntar a una tarea respuesta, perteneciente a una tarea de tipo REQUERIMIENTO.&lt;br /&gt;
&lt;br /&gt;
=Colecciones=&lt;br /&gt;
Para el desarrollo correcto de los trámites en la aplicación web STE, debemos crear al menos una colección para almacenar los contenedores que se crean al iniciar un trámite. Al definir un trámite su ''main target'' tiene que ser el contenedor que se mostrará en la web para que el usuario introduzca los datos iniciales para comenzar el ''workflow'', y no un expediente como se suele hacer cuando programamos un sistema de información en egeasy, de ahí la necesidad de crearnos una colección. (Véase [[Colecciones]]) Posteriormente se moverán esos contenedores creados a su lugar dentro de alguna colección dentro de un expediente.&lt;br /&gt;
&lt;br /&gt;
=Estado de un trámite=&lt;br /&gt;
Los trámites en la aplicación web STE tienen estado. El estado de un trámite acabado de iniciar, pero no enviado, tiene el valor de ''borrador''. Una vez enviado a su primera tarea del trámite, éste pasa a tener el valor de ''En trámite''. Por último, cuando el trámite ha finalizado en la plataforma egeasy, pasa a tener el estado de ''finalizado''. Estos valores comentados para el estado de un trámite definen el comportamiento por defecto de la aplicación web STE. Si queremos cambiar el estado de un trámite debemos hacerlo mediante el atributo '''estado''' y su mecanismo para controlarlo, el cual vamos a proceder a explicar a continuación.&lt;br /&gt;
&lt;br /&gt;
Para poder modificar el estado de un trámite durante la vida del ''workflow'' asociado al mismo, debemos crearnos un campo en el contenedor que es ''maintarget'' del ''workflow''. Una vez creado ese campo, debemos exportarlo a alguna colección de nuestra elección. Si hay alguna duda sobre como crear una exportación, véase [[Exportaciones]]. Con la exportación del campo creada, debemos poner en el atributo '''estado''' del trámite, una ristra con el nombre de la tabla en la base de datos seguida de un punto y a continuación el nombre de la columna que representa el campo en la exportación. Para que quede mas claro, vamos a ver un ejemplo:&lt;br /&gt;
&lt;br /&gt;
Esto sería un ejemplo de la exportación creada, donde tenemos un campo en ODL llamado [Estado tramite], el cual se exporta a la tabla de nombre TR$SOLICITUD_TRAMITACION y en la columna ESTADO_TRAMITE.&lt;br /&gt;
&lt;br /&gt;
 [EP::Solicitudes de tramitación electrónica] {{PR|es}} exportacion&lt;br /&gt;
   -{{AT|nombre_tabla}} = {{STR|&amp;quot;TR$SOLICITUD_TRAMITACION&amp;quot;}};&lt;br /&gt;
   -{{AT|universo}} = [Solicitud de tramitación electrónica para acreditación del profesorado];&lt;br /&gt;
   {{PR|columna}} [Denominación/Apellidos y nombre]&lt;br /&gt;
     -{{AT|columna_bd.nombre}} = {{STR|&amp;quot;DENOMINACION&amp;quot;}};&lt;br /&gt;
     -{{AT|columna_bd}}.{{PR|tipo}} = texto;&lt;br /&gt;
     -{{AT|origen}} =[Datos generales].[Denominación/Apellidos y nombre];&lt;br /&gt;
   {{PR|columna}} [C.I.F./N.I.F.]&lt;br /&gt;
     -{{AT|columna_bd.nombre}} = {{STR|&amp;quot;CIF_NIF&amp;quot;}};&lt;br /&gt;
     -{{AT|columna_bd}}.{{PR|tipo}} = texto;&lt;br /&gt;
     -{{AT|origen}} = [Datos generales].[C.I.F./N.I.F.];&lt;br /&gt;
   {{PR|columna}} [Estado tramite]&lt;br /&gt;
     -{{AT|columna_bd.nombre}} = {{STR|&amp;quot;ESTADO_TRAMITE&amp;quot;}};&lt;br /&gt;
     -{{AT|columna_bd}}.{{PR|tipo}} = texto;&lt;br /&gt;
     -{{AT|origen}} = [Datos generales].[Estado tramite];&lt;br /&gt;
 {{PR|fin}}&lt;br /&gt;
&lt;br /&gt;
A continuación, un ejemplo de como se declararía un trámite utilizando el atributo '''estado'''.&lt;br /&gt;
&lt;br /&gt;
 [Trámite de Acreditación del profesorado] {{PR|es}} tramite&lt;br /&gt;
  -{{AT|descripcion}}='Procedimiento de tramitación para la aceditación del profesorado para la ACECAU';&lt;br /&gt;
  -{{AT|grupo}}='Trámites Acecau';&lt;br /&gt;
  -{{AT|Habitacion}}=[Oficina de evaluación del profesorado];&lt;br /&gt;
  -{{AT|estado}}={{STR|&amp;quot;TR$SOLTRAMI_ACRE_PROF.ESTADO_TRAMITE&amp;quot;}};&lt;br /&gt;
&lt;br /&gt;
Una vez declarado el atributo estado en el trámite, ya podemos proceder a modificarlo mediante código de método del lenguaje ODL. Para ello, sólo debemos acceder, mediante código ODL, al campo que representa el estado y asignarle el valor deseado que queremos que se muestre en la aplicación web del STE.&lt;br /&gt;
&lt;br /&gt;
  metodo ejemplo()&lt;br /&gt;
      var Contenedor1 : contenedor;&lt;br /&gt;
  inicio&lt;br /&gt;
           ...&lt;br /&gt;
      Contenedor1.[Estado] = &amp;quot;En trámite&amp;quot;;&lt;br /&gt;
           ...&lt;br /&gt;
  fin&lt;br /&gt;
&lt;br /&gt;
=Atributos especiales para los campos de ODL=&lt;br /&gt;
En la aplicación web STE disponemos, para el lenguaje ODL, de unos atributos especiales aplicables a la definición de componentes para poder definir ciertos aspectos de su comportamiento al interactuar con la aplicación web STE. A continuación, listaremos y definiremos los atributos que ha añadido el STE al lenguage ODL.&lt;br /&gt;
&lt;br /&gt;
'''tramitacion.visible'''&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Atributo que permite ocultar un campo para que no se visualice en la aplicación web del STE, pero sí en la plataforma egeasy. Este atributo es aplicable a todos los campos de ODL. El valor por defecto para este atributo es verdadero.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
'''tramitacion.requerida'''&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Atributo que permite especificar qué campos son de obligada cumplimentación por parte del usuario. El valor por defecto es falso. Este atributo se puede usar en combinación con las validaciones de ODL para indicar cómo se debe cumplimentar un campo.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
'''tramitacion.valor'''&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Atributo que permite establecer el valor del campo al que se le aplica el atributo. Se pueden indicar campos del formulario de registro, además de los campos obligatorios, que son ''Nombre de usuario'', ''Nombre completo'', ''Nif'', ''Direccion de correo'' y ''Organizacion''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
'''tramitacion.editable'''&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Atributo que permite indicar si el campo es editable o no. El valor por defecto es verdadero.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Formulario de registro de usuarios=&lt;br /&gt;
En la aplicación web STE, podemos crear a nuestra medida un formulario de registro de usuarios, pudiendo definir los campos que queremos que el usuario cumplimente al darse de alta en la aplicación web STE. El fichero donde se definen los campos del registro es un fichero XML, y se indica como un parámetro del [[Cómo integrar el Sistema de Tramitación Electrónica en egeasy#Fichero de configuración|fichero de configuración]].&lt;br /&gt;
&lt;br /&gt;
A continuación mostramos un ejemplo de un fichero de registro.&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;registration_form&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Género&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;allowed_values&amp;gt;&lt;br /&gt;
       &amp;lt;item&amp;gt;Masculino&amp;lt;/item&amp;gt;&lt;br /&gt;
       &amp;lt;item&amp;gt;Femenino&amp;lt;/item&amp;gt;&lt;br /&gt;
     &amp;lt;/allowed_values&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Teléfono 1&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Teléfono 2&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Dirección&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Código postal&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Localidad&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Provincia&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Fax&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
 &amp;lt;/registration_form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Tramitación electrónica]]&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=Desarrollar_con_el_STE&amp;diff=5760</id>
		<title>Desarrollar con el STE</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=Desarrollar_con_el_STE&amp;diff=5760"/>
				<updated>2010-04-06T09:02:29Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: /* Atributos especiales para los campos de ODL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
=¿Que es un trámite?=&lt;br /&gt;
Un trámite es la definición del conjunto de tareas, pertenecientes al ''workflow'', que van a interactuar con la aplicación web STE. Los trámites definidos están orientados a ser iniciados por el usuario ,desde la aplicación web, o haciendo uso del servicio web, para que, a continuación, se inicie un proceso de ''workflow'' programado en ODL para la plataforma egeasy.&lt;br /&gt;
==Como se define un trámite en ODL==&lt;br /&gt;
&amp;lt;p&amp;gt;Para definir un trámite tenemos que indicar el nombre del trámite y declararlo como tipo trámite. La sintaxis de un trámite sería la siguiente.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 [Nombre del trámite] es tramite&lt;br /&gt;
   -ATRIBUTOS&lt;br /&gt;
   incluye TAREA&lt;br /&gt;
        .&lt;br /&gt;
        .&lt;br /&gt;
        .&lt;br /&gt;
   incluye TAREA&lt;br /&gt;
 fin&lt;br /&gt;
==Atributos de un trámite==&lt;br /&gt;
Los atributos que podemos declarar para un trámite son los siguientes:&lt;br /&gt;
*'''etiqueta''': Atributo opcional que permite indicar el nombre que se tendrá el trámite de cara al usuario. Si no existe, se toma como nombre el nombre de la definición.&lt;br /&gt;
*'''descripcion''': Proporciona un texto descriptivo sobre el trámite que se muestra en la interfaz web al crear el trámite.&lt;br /&gt;
*'''grupo''': Los trámites se pueden agrupar para que se muestren organizados al usuario. Indicar aquí el grupo al que pertenece el trámite.&lt;br /&gt;
*'''habitacion''': Indica en qué habitación de nuestro sistema de información queremos que esté disponible el trámite para su realización.&lt;br /&gt;
*'''estado''': Indica qué tabla y columna de una exportación va a almacenar el estado de un trámite.&lt;br /&gt;
*'''asunto''': Permite indicar un campo que se usará como asunto del trámite y se usará para mostrarlo en los listados de procedimientos iniciados. Por defecto toma en valor ''&amp;lt;tipo de tramite&amp;gt; - &amp;lt;fecha&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
==La clausula incluye==&lt;br /&gt;
Dentro de la definición del trámite, debemos especificar cuáles son las tareas del ''workflow'' que queremos que interactúen con el STE. Para ello, disponemos de la cláusula '''incluye'''. &lt;br /&gt;
Hay que usar una clausula '''incluye''' para cada tarea que se desee incluir, seguido a continuación por el nombre de definición de la tarea incluida. &lt;br /&gt;
&lt;br /&gt;
Cuando se incluye una tarea, hay que indicar que tipo de tarea es. En el STE podemos encontrar cuatro tipos de tareas, que son:&lt;br /&gt;
&lt;br /&gt;
*'''Tareas de inicio''': Solo puede haber una tarea de inicio en cada trámite, y es la tarea que tiene que rellenar el usuario cuando inicia un trámite.&lt;br /&gt;
&lt;br /&gt;
*'''Tareas de envío de documentación''': Son tareas que puede crear y enviar un interesado en cualquier momento, con el fin de aportar una documentación que considere oportuna.&lt;br /&gt;
&lt;br /&gt;
*'''Tareas de notificación''': Son tareas que envía la plataforma egeasy al STE con el fin de notificar al interesado cualquier cosa que sea necesaria durante la gestión del procedimiento.&lt;br /&gt;
&lt;br /&gt;
*'''Tareas de requerimiento''': Son tareas que envía la plataforma egeasy al STE para que el interesado aporte información adicional al trámite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Atributos de incluye===&lt;br /&gt;
Los atributos aplicables a las tareas que incluimos en un trámite pueden variar dependiendo del valor del atributo ''tipo'', por ejemplo, los atributos de respuesta sólo son aplicables a las tareas con el valor en el atributo tipo igual a REQUERIMIENTO. Dicho esto, pasamos a listar los distintos atributos aplicables a la clausula incluye:&lt;br /&gt;
&lt;br /&gt;
*'''Etiqueta''': Atributo que permite establecer el nombre que va a tener la tarea en la aplicación web del STE.&lt;br /&gt;
&lt;br /&gt;
*'''Tipo''': Atributo que indica qué tipo de comportamiento va a tener la tarea. Los distintos valores que acepta este atributo son: INICIO, REQUERIMIENTO, NOTIFICACION y ENVIO_DOCUMENTACION.&lt;br /&gt;
&lt;br /&gt;
*'''respuesta.etiqueta''': Atributo que indica qué nombre va a tener la tarea respuesta correspondiente &lt;br /&gt;
&lt;br /&gt;
*'''respuesta.descripcion''': Atributo para indicar una descripción sobre la tarea respuesta.&lt;br /&gt;
&lt;br /&gt;
*'''respuesta.formulario''': Atributo para indicar el nombre del formulario, perteneciente al ''target'' de la tarea de tipo REQUERIMIENTO, que se va a mostrar en la tarea de respuesta.&lt;br /&gt;
&lt;br /&gt;
*'''respuesta.clasificador''': Atributo para indicar el nombre del clasificador, perteneciente al ''target'' de la tarea de tipo REQUERIMIENTO, donde se van a guardar los documentos que se pueden adjuntar a una tarea respuesta, perteneciente a una tarea de tipo REQUERIMIENTO.&lt;br /&gt;
&lt;br /&gt;
=Colecciones=&lt;br /&gt;
Para el desarrollo correcto de los trámites en la aplicación web STE, debemos crear al menos una colección para almacenar los contenedores que se crean al iniciar un trámite. Al definir un trámite su ''main target'' tiene que ser el contenedor que se mostrará en la web para que el usuario introduzca los datos iniciales para comenzar el ''workflow'', y no un expediente como se suele hacer cuando programamos un sistema de información en egeasy, de ahí la necesidad de crearnos una colección. (Véase [[Colecciones]]) Posteriormente se moverán esos contenedores creados a su lugar dentro de alguna colección dentro de un expediente.&lt;br /&gt;
&lt;br /&gt;
=Estado de un trámite=&lt;br /&gt;
Los trámites en la aplicación web STE tienen estado. El estado de un trámite acabado de iniciar, pero no enviado, tiene el valor de ''borrador''. Una vez enviado a su primera tarea del trámite, éste pasa a tener el valor de ''En trámite''. Por último, cuando el trámite ha finalizado en la plataforma egeasy, pasa a tener el estado de ''finalizado''. Estos valores comentados para el estado de un trámite definen el comportamiento por defecto de la aplicación web STE. Si queremos cambiar el estado de un trámite debemos hacerlo mediante el atributo '''estado''' y su mecanismo para controlarlo, el cual vamos a proceder a explicar a continuación.&lt;br /&gt;
&lt;br /&gt;
Para poder modificar el estado de un trámite durante la vida del ''workflow'' asociado al mismo, debemos crearnos un campo en el contenedor que es ''maintarget'' del ''workflow''. Una vez creado ese campo, debemos exportarlo a alguna colección de nuestra elección. Si hay alguna duda sobre como crear una exportación, véase [[Exportaciones]]. Con la exportación del campo creada, debemos poner en el atributo '''estado''' del trámite, una ristra con el nombre de la tabla en la base de datos seguida de un punto y a continuación el nombre de la columna que representa el campo en la exportación. Para que quede mas claro, vamos a ver un ejemplo:&lt;br /&gt;
&lt;br /&gt;
Esto sería un ejemplo de la exportación creada, donde tenemos un campo en ODL llamado [Estado tramite], el cual se exporta a la tabla de nombre TR$SOLICITUD_TRAMITACION y en la columna ESTADO_TRAMITE.&lt;br /&gt;
&lt;br /&gt;
 [EP::Solicitudes de tramitación electrónica] {{PR|es}} exportacion&lt;br /&gt;
   -{{AT|nombre_tabla}} = {{STR|&amp;quot;TR$SOLICITUD_TRAMITACION&amp;quot;}};&lt;br /&gt;
   -{{AT|universo}} = [Solicitud de tramitación electrónica para acreditación del profesorado];&lt;br /&gt;
   {{PR|columna}} [Denominación/Apellidos y nombre]&lt;br /&gt;
     -{{AT|columna_bd.nombre}} = {{STR|&amp;quot;DENOMINACION&amp;quot;}};&lt;br /&gt;
     -{{AT|columna_bd}}.{{PR|tipo}} = texto;&lt;br /&gt;
     -{{AT|origen}} =[Datos generales].[Denominación/Apellidos y nombre];&lt;br /&gt;
   {{PR|columna}} [C.I.F./N.I.F.]&lt;br /&gt;
     -{{AT|columna_bd.nombre}} = {{STR|&amp;quot;CIF_NIF&amp;quot;}};&lt;br /&gt;
     -{{AT|columna_bd}}.{{PR|tipo}} = texto;&lt;br /&gt;
     -{{AT|origen}} = [Datos generales].[C.I.F./N.I.F.];&lt;br /&gt;
   {{PR|columna}} [Estado tramite]&lt;br /&gt;
     -{{AT|columna_bd.nombre}} = {{STR|&amp;quot;ESTADO_TRAMITE&amp;quot;}};&lt;br /&gt;
     -{{AT|columna_bd}}.{{PR|tipo}} = texto;&lt;br /&gt;
     -{{AT|origen}} = [Datos generales].[Estado tramite];&lt;br /&gt;
 {{PR|fin}}&lt;br /&gt;
&lt;br /&gt;
A continuación, un ejemplo de como se declararía un trámite utilizando el atributo '''estado'''.&lt;br /&gt;
&lt;br /&gt;
 [Trámite de Acreditación del profesorado] {{PR|es}} tramite&lt;br /&gt;
  -{{AT|descripcion}}='Procedimiento de tramitación para la aceditación del profesorado para la ACECAU';&lt;br /&gt;
  -{{AT|grupo}}='Trámites Acecau';&lt;br /&gt;
  -{{AT|Habitacion}}=[Oficina de evaluación del profesorado];&lt;br /&gt;
  -{{AT|estado}}={{STR|&amp;quot;TR$SOLTRAMI_ACRE_PROF.ESTADO_TRAMITE&amp;quot;}};&lt;br /&gt;
&lt;br /&gt;
Una vez declarado el atributo estado en el trámite, ya podemos proceder a modificarlo mediante código de método del lenguaje ODL. Para ello, sólo debemos acceder, mediante código ODL, al campo que representa el estado y asignarle el valor deseado que queremos que se muestre en la aplicación web del STE.&lt;br /&gt;
&lt;br /&gt;
  metodo ejemplo()&lt;br /&gt;
      var Contenedor1 : contenedor;&lt;br /&gt;
  inicio&lt;br /&gt;
           ...&lt;br /&gt;
      Contenedor1.[Estado] = &amp;quot;En trámite&amp;quot;;&lt;br /&gt;
           ...&lt;br /&gt;
  fin&lt;br /&gt;
&lt;br /&gt;
=Atributos especiales para los campos de ODL=&lt;br /&gt;
En la aplicación web STE disponemos, para el lenguaje ODL, de unos atributos especiales aplicables a la definición de componentes para poder definir ciertos aspectos de su comportamiento al interactuar con la aplicación web STE. A continuación, listaremos y definiremos los atributos que ha añadido el STE al lenguage ODL.&lt;br /&gt;
&lt;br /&gt;
'''tramitacion.visible'''&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Atributo que permite ocultar un campo para que no se visualice en la aplicación web del STE, pero sí en la plataforma egeasy. Este atributo es aplicable a todos los campos de ODL. El valor por defecto para este atributo es verdadero.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
'''tramitacion.requerida'''&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Atributo que permite especificar qué campos son de obligada cumplimentación por parte del usuario. El valor por defecto es falso. Este atributo se puede usar en combinación con las validaciones de ODL para indicar cómo se debe cumplimentar un campo.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
'''tramitacion.valor'''&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Atributo que permite establecer el valor del campo al que se le aplica el atributo. Se pueden indicar campos del formulario de registro, además de los campos obligatorios, que son ''Nombre de usuario'', ''Nombre completo', ''Nif'', ''Direccion de correo'' y ''Organizacion''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
'''tramitacion.editable'''&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Atributo que permite indicar si el campo es editable o no. El valor por defecto es verdadero.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Formulario de registro de usuarios=&lt;br /&gt;
En la aplicación web STE, podemos crear a nuestra medida un formulario de registro de usuarios, pudiendo definir los campos que queremos que el usuario cumplimente al darse de alta en la aplicación web STE. El fichero donde se definen los campos del registro es un fichero XML, y se indica como un parámetro del [[Cómo integrar el Sistema de Tramitación Electrónica en egeasy#Fichero de configuración|fichero de configuración]].&lt;br /&gt;
&lt;br /&gt;
A continuación mostramos un ejemplo de un fichero de registro.&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;registration_form&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Género&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;allowed_values&amp;gt;&lt;br /&gt;
       &amp;lt;item&amp;gt;Masculino&amp;lt;/item&amp;gt;&lt;br /&gt;
       &amp;lt;item&amp;gt;Femenino&amp;lt;/item&amp;gt;&lt;br /&gt;
     &amp;lt;/allowed_values&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Teléfono 1&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Teléfono 2&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Dirección&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Código postal&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Localidad&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Provincia&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
   &amp;lt;field_value Field_Name=&amp;quot;Fax&amp;quot; Field_Type=&amp;quot;ftString&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/field_value&amp;gt;&lt;br /&gt;
 &amp;lt;/registration_form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Tramitación electrónica]]&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5759</id>
		<title>API del Web Service STE</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5759"/>
				<updated>2010-04-06T08:48:14Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Tipos=&lt;br /&gt;
&lt;br /&gt;
==Basicos==&lt;br /&gt;
 TGArrayInteger = array of integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSSerializedDateTime = String;&lt;br /&gt;
&lt;br /&gt;
 TGWSIdentifier = String;&lt;br /&gt;
&lt;br /&gt;
 TGSignature = TByteDynArray; &lt;br /&gt;
 &lt;br /&gt;
    Array de bytes usado para enviar datos binarios (ficheros, firmas, etc.).&lt;br /&gt;
&lt;br /&gt;
==Errores==&lt;br /&gt;
 TGWSErrorCode = Integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldError = class&lt;br /&gt;
    property FieldDefinitionPath: String;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción de error en un campo. Indica el campo afectado y el error correspondiente.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldError = array of TGWSFieldError;&lt;br /&gt;
&lt;br /&gt;
 TGWSError = class&lt;br /&gt;
    property ErrorCode: TGWSErrorCode;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Error general.&lt;br /&gt;
&lt;br /&gt;
 TGWSErrorValidate = class(TGWSError)&lt;br /&gt;
    property FieldErrors: TGWSArrayFieldError;&lt;br /&gt;
    &lt;br /&gt;
    Error en la validación o envío de una tarea o un formulario de registro de usuario. &lt;br /&gt;
    Detalla los errores de los campos.&lt;br /&gt;
&lt;br /&gt;
==Procedimentos (definiciones)==&lt;br /&gt;
 TGWSFieldType = (ftDummy, ftBoolean, ftInteger, ftReal, ftString, ftMemo, ftDatetime, ftCurrency, ftTable);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property LabelField: String;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Section: String;&lt;br /&gt;
    property Visible: Boolean;&lt;br /&gt;
    property Editable: Boolean;&lt;br /&gt;
    property Required: Boolean;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de campo. Si es un campo tabla, incluye las definiciones de las columnas.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldDefinition = array of TGWSFieldDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldDefinition = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition; &lt;br /&gt;
&lt;br /&gt;
 TGWSTaskType = (ttStart, ttSendDocumentation, ttRequirement, ttNotification, ttResponse);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de tarea. &lt;br /&gt;
    Todo proceso ha de tener al menos una tarea de inicio (ttStart). &lt;br /&gt;
    Las tareas de envío de documentación (ttSendDocumentation) permiten añadir documentación a un trámite &lt;br /&gt;
    en cualquier momento.&lt;br /&gt;
    Las tareas de requerimiento se usan para solicitar la participación del interesado en algún momento del trámite, &lt;br /&gt;
    requiriendole para que aporte más documentación a un trámite, por medio de una tarea de respuesta (ttResponse).&lt;br /&gt;
    Las tareas de notificación sirven para informar al interesado de cualquier incidencia en el trámite. &lt;br /&gt;
    Se debe acusar recibo de este tipo de tareas para poder consultar el trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSTaskDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameTask: String;&lt;br /&gt;
    property LabelTask: String;&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property TaskType: TGWSTaskType;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de tarea. Incluye las definiciones de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTaskDefinition = array of TGWSTaskDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcedure = class&lt;br /&gt;
    property Identifier: TGWSIdentifier&lt;br /&gt;
    property NameProcedure: String&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property Group: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada del procedimento, que se usa obtener los datos fundamentales de un procedimento &lt;br /&gt;
    al cargar listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcedure = array of TGWSRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcedure = class&lt;br /&gt;
    property RefProcedures: TGWSArrayRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcedure = class(TGWSRefProcedure)&lt;br /&gt;
    property TaskDefinitions: TGWSArrayTaskDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Descripción completa del procedimiento.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 TGWSProcessStatus = (psCreated, psStarted, psFinished, psArchived, psDeleted, psAll);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar un trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayProcessStatus = array of TGWSProcessStatus;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcess = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property RefProcedure: TGWSRefProcedure;&lt;br /&gt;
    property LabelProcess: String;&lt;br /&gt;
    property Status: TGWSProcessStatus;&lt;br /&gt;
    property CreateDate: TGWSSerializedDateTime;&lt;br /&gt;
    property StartDate: TGWSSerializedDateTime;&lt;br /&gt;
    property EndDate: TGWSSerializedDateTime;&lt;br /&gt;
    property TramitationStatus: String; &lt;br /&gt;
    property TaskCount: Integer;&lt;br /&gt;
    property LastTaskName: String;&lt;br /&gt;
    property LastTaskDate: TGWSSerializedDateTime;&lt;br /&gt;
    property HasPendingTasks: Boolean read;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada de un trámite, usada para obtener los datos fundamentales de un &lt;br /&gt;
    trámite en listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcess = array of TGWSRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcess = class&lt;br /&gt;
    property RefProcesses: TGWSArrayRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcess = class(TGWSRefProcess)&lt;br /&gt;
    property Tasks: TGWSArrayTasks read FTasks write FTasks;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos del trámite, incluyendo las tareas que forman parte del mismo.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchProcessArg = class&lt;br /&gt;
    property Status: TGWSArrayProcessStatus;&lt;br /&gt;
    property Condition: String;&lt;br /&gt;
    &lt;br /&gt;
    Parámetros de búsqueda usados para indicar los criterios de búsqueda de trámites.&lt;br /&gt;
&lt;br /&gt;
==Tareas==&lt;br /&gt;
 TGWSTaskStatus = (wsTaskCreated, wsTaskSended, wsTaskReceived, wsTaskResponsed);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSTask = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property Status: TGWSTaskStatus;&lt;br /&gt;
    property CreateOrReceiveDate: TGWSSerializedDateTime;&lt;br /&gt;
    property SendOrResponseDate: TGWSSerializedDateTime;&lt;br /&gt;
    property Files: TGWSArrayRefFiles;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    property Signature: TGSignature;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una tarea. Incluye la información de los campos y los archivos adjuntos, &lt;br /&gt;
    así como la firma digital de la tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTasks = array of TGWSTask;&lt;br /&gt;
&lt;br /&gt;
==Campos==&lt;br /&gt;
 TGWSArrayValues = array of String;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldAllowedValues = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property AllowedValues: TGWSArrayValues;&lt;br /&gt;
    &lt;br /&gt;
    Listado de valores permitidos para un campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldAllowedValues = array of TGWSFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldAllowedValues = class&lt;br /&gt;
    property FieldAllowedValues: TGWSArrayFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldValue = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Value: String read FValue write FValue;&lt;br /&gt;
    property RowsAllowedValues: TGWSListFieldAllowedValues; &lt;br /&gt;
    property Rows: TGWSArrayRows;&lt;br /&gt;
    &lt;br /&gt;
    Campo. Para facilitar la operación con este tipo, se ha añadido el atributo “tipo”, &lt;br /&gt;
    que también está disponible en la definición de campo. Si el campo es de tipo tabla, &lt;br /&gt;
    incluye la información de las filas de la tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldValue = array of TGWSFieldValue;&lt;br /&gt;
&lt;br /&gt;
 TGWSRow = class&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    &lt;br /&gt;
    Fila de campos tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRows = array of TGWSRow;&lt;br /&gt;
&lt;br /&gt;
==Ficheros==&lt;br /&gt;
 TGWSRefFile = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameFile: String;&lt;br /&gt;
    property AttachDate: TGWSSerializedDateTime;&lt;br /&gt;
    &lt;br /&gt;
    Datos de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefFiles = array of TGWSRefFile;&lt;br /&gt;
&lt;br /&gt;
 TGWSFile = class(TGWSRefFile)&lt;br /&gt;
    property Content: TByteDynArray;&lt;br /&gt;
    &lt;br /&gt;
    Contenido completo de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
==Notificaciones==&lt;br /&gt;
 TGWSNotification = class&lt;br /&gt;
    property Identifier: String read FIdentifier write FIdentifier;&lt;br /&gt;
    property Name: String read FName write FName;&lt;br /&gt;
    &lt;br /&gt;
    Notificación pendiente en un trámite. Incluye el identificador de la tarea de notificación &lt;br /&gt;
    que está pendiente de acusar recibo y un nombre descriptivo para mostrar al usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayNotifications = array of TGWSNotification;&lt;br /&gt;
&lt;br /&gt;
 TGWSListNotifications = class(TRemotable)&lt;br /&gt;
    property Notifications: TGWSArrayNotifications read FNotifications write FNotifications;&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 TGWSRegistrationForm = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    &lt;br /&gt;
    Formulario de registro de un usuario. Incluye solo los campos adicionales. Los campos &lt;br /&gt;
    obligatorios (nombre, nombre completo, nif, correo electrónico), no están incluidos en el &lt;br /&gt;
    formulario. La definición de los campos de registro se describe en un fichero XML.&lt;br /&gt;
&lt;br /&gt;
 TGWSRefUser = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property UserName: String;&lt;br /&gt;
    property FullName: String;&lt;br /&gt;
    property Nif: String;&lt;br /&gt;
    property EMail: String;&lt;br /&gt;
    property IdOrganization;&lt;br /&gt;
    &lt;br /&gt;
    Datos básicos de un usuario, se usa para listados de usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefUsers = array of TGWSRefUser;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefUsers = class&lt;br /&gt;
    property RefUsers: TGWSArrayRefUsers;&lt;br /&gt;
&lt;br /&gt;
 TGWSUser = class(TGWSRefUser)&lt;br /&gt;
    property RegistrationForm: TGWSRegistrationForm;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos de un usuario, incluyendo los datos del formulario de registro.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchUsersArg = class&lt;br /&gt;
    property Condition: STring;&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 TGWSOrganization = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property Name: String read;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una organización. La organización permite agrupar los usuarios, de forma que los &lt;br /&gt;
    todos los usuarios individuales que pertenezcan a una organización tienen acceso a todos los &lt;br /&gt;
    trámites que haya iniciado cualquier miembro de la organización.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayOrganizations = array of TGWSOrganization;&lt;br /&gt;
&lt;br /&gt;
 TGWSListOrganizations = class&lt;br /&gt;
    property Organizations: TGWSArrayOrganizations;&lt;br /&gt;
&lt;br /&gt;
=API de usuario=&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSession(IdUnit: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdUnit: Identificador del usuario o centro gestor que inicia sesión.&lt;br /&gt;
         Data: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSession(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: TGWSRefUser; out Error: TGWSError)&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
         Data: Datos básicos del usuario que inició sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado &lt;br /&gt;
         válido de la FNMT o DNIe. &lt;br /&gt;
         El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSession(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 RegisterAllowed(out Data: Boolean; out Error: TGWSError)&lt;br /&gt;
 Indica si el resgistro libre de nuevos usuarios está disponible.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Verdadero si está permitido el registro libre de usuarios.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadRegisterForm(out Data: TGWSRegistrationForm; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el formulario de registro de usuarios.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Formulario de registro de usuarios.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     El formulario de registro contiene los campos adicionales a los 4 campos obligatorios que son “nombre”, “nombre completo”, &lt;br /&gt;
     “nif” y “correo electrónico”.&lt;br /&gt;
&lt;br /&gt;
 RegisterUser(const UserName: String; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
              RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; out Error: TGWSErrorValidate)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
     cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. El formulario de registro se puede obtener llamando a la &lt;br /&gt;
     función “LoadRegisterForm”. Esta función solo está disponible si el registro libre está permitido. &lt;br /&gt;
     Consultar la función “RegisterAllowed”.&lt;br /&gt;
&lt;br /&gt;
 LoadUser(IdSession: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Permite obtener los datos del usuario actual que inició sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Datos del usuario.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveUser(IdSession: TGWSIdentifier; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
          RegistrationData: TGWSRegistrationForm; out Error: TGWSErrorValidate)&lt;br /&gt;
 Permite modificar los datos del usuario actual.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Error:Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
     cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
==Procedimientos==&lt;br /&gt;
 LoadProcedures(IdSession: TGWSIdentifier; out Data: TGWSListRefProcedure; out Error: TGWSError)&lt;br /&gt;
 Obtiene lista de definiciones básicas de procedimientos.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Lista de definiciones básicas de procedimiento.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcedure(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; out Data: TGWSProcedure; out Error: TGWSError)&lt;br /&gt;
 Permite obtener la definición completa de un procedimiento que se indique.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento.&lt;br /&gt;
     Data: Definición completa del procedimiento.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 LoadProcesses(IdSession: TGWSIdentifier; SearchParams: TGWSSearchProcessArg; out Data: TGWSListRefProcess; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de trámites (descripción abreviada) del usuario que cumplan las condiciones indicadas &lt;br /&gt;
 en el parámetro de búsqueda.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de trámites (descripción abreviada).&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Carga un trámite completo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Contenido completo del trámite.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     Si el trámite tiene notificaciones pendientes, el sistema no permite abrir el trámite. Es necesario confirmar &lt;br /&gt;
     la recepción de las notificaciones antes de abrir el trámite, haciendo uso de las tareas &lt;br /&gt;
     “LoadProcessNotifications”, “LoadTaskSerialization” y “SendTask”.&lt;br /&gt;
&lt;br /&gt;
 LoadProcessNotifications(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; &lt;br /&gt;
                          out Data: TGWSListNotifications; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de las notificaciones pendientes del trámite. &lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Lista de notificaciones pendientes del trámite.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles: &lt;br /&gt;
     Cuando un proceso tenga notificaciones pendientes, será necesario cargar cada una de las tareas &lt;br /&gt;
     indicadas por las notificaciones, firmarlas y enviarlas para confirmar la recepción de dichas notificaciones.&lt;br /&gt;
&lt;br /&gt;
 CreateProcess(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; &lt;br /&gt;
               out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Crea un trámite basado en una definición de procedimiento. Le asigna una etiqueta al nuevo trámite creado, &lt;br /&gt;
 para facilitar la localización del mismo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento que sirve como definición del trámite a crear.&lt;br /&gt;
     Data: Proceso creado.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda eliminar un trámite, es necesario que no se haya enviado ninguna tarea asociada al mismo.&lt;br /&gt;
&lt;br /&gt;
 ArchiveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Archiva el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda archivar el trámite, es necesario que este haya finalizado.&lt;br /&gt;
&lt;br /&gt;
==Tareas de los trámites==&lt;br /&gt;
 CreateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTaskDefinition: TGWSIdentifier; out Data: TGWSTask; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Crea una tarea dentro del trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTaskDefinition: Tipo de tarea a crear.&lt;br /&gt;
     Data: Tarea creada.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; Task: TGWSTask; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios realizados en una tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Task: Tarea que se va a modificar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser guardada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 RemoveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea a eliminar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser eliminada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 LoadTaskSerialization(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; &lt;br /&gt;
                       out Data: String; out Error: TGWSError)&lt;br /&gt;
 Carga el contenido serializado de una tarea. Este contenido serializado es el que habrá de ser firmado &lt;br /&gt;
 cuando se quiera enviar la tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Data: Serialización de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 ValidateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSErrorValidate); &lt;br /&gt;
 Comprueba las condiciones de validación que se hayan definido sobre la tarea. Si no se cumplen alguna o algunas de las &lt;br /&gt;
 condiciones, vendrá indicado en el parámetro de salida “Error”.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 SendTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; Signature: TGSignature; &lt;br /&gt;
          out Error: TGWSErrorValidate)&lt;br /&gt;
 Envía la tarea al backoffice, para que continue el trámite. La tarea ha de cumplir las validaciones definidas.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Signature: Firma de la serialización de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 ResponseTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Genera una tarea de respuesta a una tarea que haya sido recibida.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadFieldValues(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; Task: TGWSTask; FieldIdentifier: TGWSIdentifier; &lt;br /&gt;
                 RowIdentifier: Integer; out Data: TGWSFieldAllowedValues; out Error: TGWSError)&lt;br /&gt;
 Carga los valores posibles de un campo en función del valor del resto de campos de la tarea. Es necesario usar esta &lt;br /&gt;
 función para aquellos campos de tipo selección que tengan valores.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Task: Tarea actual, con los valores de los campos cargados.&lt;br /&gt;
     FieldIdentifier: Indentificador del campo para el cual queremos obtener los valores.&lt;br /&gt;
     RowIdentifier: Contador de fila para indicar qué fila queremos rellenar, en caso de campos tabla.&lt;br /&gt;
     Data: Lista de valores posibles del campo.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Ficheros adjuntos de los trámites==&lt;br /&gt;
 LoadFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
          out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el contenido de un fichero que pertenezca una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 AttachFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; FileName: String; Content: TByteDynArray; &lt;br /&gt;
            out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Adjunta un nuevo fichero a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     FileName: Nombre del fichero.&lt;br /&gt;
     Content: Contenido del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Elimina un fichero que haya sido adjuntado a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles.&lt;br /&gt;
     Para que un fichero pueda ser eliminado de la tarea, la tarea no puede haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
=Api de administración=&lt;br /&gt;
&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSessionAdmin(IdAdmin: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión de administración con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdUnit: Identificador del usuario administrador que inicia sesión.&lt;br /&gt;
     Data: Identificador de la sesión.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSessionAdmin(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: String; out Error: TGWSError)&lt;br /&gt;
&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.&lt;br /&gt;
     Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
     Data: Nombre del usuario administrador.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado válido &lt;br /&gt;
     de la FNMT o DNIe. El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSessionAdmin(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 LoadOrganizations(IdSession: TGWSIdentifier; out Data: TGWSListOrganizations; out Error: TGWSError)&lt;br /&gt;
 Carga la lista de organizaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     Data: Lista de organizaciones.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadOrganization(IdSession: TGWSIdentifier; IdOrganization: TGWSIdentifier; out Data: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
&lt;br /&gt;
 Carga una organización concreta.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     IdOrganization: Identificador de la organización.&lt;br /&gt;
     Data: Datos de la organización.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 CreateOrganization(IdSession: TGWSIdentifier; const Name: String; out Data: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
 Crea una nueva organización en el sistema.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     Name: Nombre de la nueva organización.&lt;br /&gt;
     Data: Datos de la organización creada.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveOrganization(IdSession: TGWSIdentifier; Organization: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios que se realicen en una organización.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     Organización: Datos de la organización que se quiere modificar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveOrganization(IdSession: TGWSIdentifier; IdOrganization: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una organización.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     IdOrganización: Identificador de la organización que se quiere eliminar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     No se podrá eliminar una organización a la que estén adscritos usuarios. Sería necesario primero cambiar los &lt;br /&gt;
     usuarios de organización o eliminarlos.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 LoadUsers(IdSession: TGWSIdentifier; SearchParams: TGWSSearchUsersArg; out Data: TGWSListRefUsers; out Error: TGWSError)&lt;br /&gt;
 Carga una lista de  usuarios dados de alta en el sistema según los criterios de búsqueda proporcionados en los parámetros.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSessión: Identificador de la sesión.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de datos básicos de usuario.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadUserById(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Carga los datos de un usuario según un identificador proporcionado.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSessión: Identificador de la sesión.&lt;br /&gt;
 IdUser: Identificador del usuario.&lt;br /&gt;
 Data: Datos completos del usuario.&lt;br /&gt;
     Error: Código y mensaje de error&lt;br /&gt;
&lt;br /&gt;
 CreateUser(IdSession: TGWSIdentifier; const UserName: String; const FullName: String; const NIF: String; const EMail:&lt;br /&gt;
            String; Organization: TGWSIdentifier; RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; &lt;br /&gt;
            out Error: TGWSErrorValidate)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSessión: Identificador de la sesión.&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     Organization: Identificador de la organización a la que pertenence el usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
     cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. &lt;br /&gt;
&lt;br /&gt;
 SaveUserById(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; User: TGWSUser; out Error: TGWSErrorValidate)&lt;br /&gt;
 Permite modificar los datos de un usuario que ya exista.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdUser: Identificador del usuario.&lt;br /&gt;
     User: Datos del usuario a modificar.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
     cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 RemoveUser(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina un usuario registrado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdUser: Identificador del usuario.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que pueda ser eliminado un usuario, este no debe haber iniciado trámites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Tramitación electrónica]]&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5758</id>
		<title>API del Web Service STE</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5758"/>
				<updated>2010-04-06T08:47:26Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: /* Errores */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Tipos=&lt;br /&gt;
&lt;br /&gt;
==Basicos==&lt;br /&gt;
 TGArrayInteger = array of integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSSerializedDateTime = String;&lt;br /&gt;
&lt;br /&gt;
 TGWSIdentifier = String;&lt;br /&gt;
&lt;br /&gt;
 TGSignature = TByteDynArray; &lt;br /&gt;
 &lt;br /&gt;
    Array de bytes usado para enviar datos binarios (ficheros, firmas, etc.).&lt;br /&gt;
&lt;br /&gt;
==Errores==&lt;br /&gt;
 TGWSErrorCode = Integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldError = class&lt;br /&gt;
    property FieldDefinitionPath: String;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción de error en un campo. Indica el campo afectado y el error correspondiente.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldError = array of TGWSFieldError;&lt;br /&gt;
&lt;br /&gt;
 TGWSError = class&lt;br /&gt;
    property ErrorCode: TGWSErrorCode;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Error general.&lt;br /&gt;
&lt;br /&gt;
 TGWSErrorValidate = class(TGWSError)&lt;br /&gt;
    property FieldErrors: TGWSArrayFieldError;&lt;br /&gt;
    &lt;br /&gt;
    Error en la validación o envío de una tarea o un formulario de registro de usuario. &lt;br /&gt;
    Detalla los errores de los campos.&lt;br /&gt;
&lt;br /&gt;
==Procedimentos (definiciones)==&lt;br /&gt;
 TGWSFieldType = (ftDummy, ftBoolean, ftInteger, ftReal, ftString, ftMemo, ftDatetime, ftCurrency, ftTable);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property LabelField: String;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Section: String;&lt;br /&gt;
    property Visible: Boolean;&lt;br /&gt;
    property Editable: Boolean;&lt;br /&gt;
    property Required: Boolean;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de campo. Si es un campo tabla, incluye las definiciones de las columnas.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldDefinition = array of TGWSFieldDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldDefinition = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition; &lt;br /&gt;
&lt;br /&gt;
 TGWSTaskType = (ttStart, ttSendDocumentation, ttRequirement, ttNotification, ttResponse);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de tarea. &lt;br /&gt;
    Todo proceso ha de tener al menos una tarea de inicio (ttStart). &lt;br /&gt;
    Las tareas de envío de documentación (ttSendDocumentation) permiten añadir documentación a un trámite &lt;br /&gt;
    en cualquier momento.&lt;br /&gt;
    Las tareas de requerimiento se usan para solicitar la participación del interesado en algún momento del trámite, &lt;br /&gt;
    requiriendole para que aporte más documentación a un trámite, por medio de una tarea de respuesta (ttResponse).&lt;br /&gt;
    Las tareas de notificación sirven para informar al interesado de cualquier incidencia en el trámite. &lt;br /&gt;
    Se debe acusar recibo de este tipo de tareas para poder consultar el trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSTaskDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameTask: String;&lt;br /&gt;
    property LabelTask: String;&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property TaskType: TGWSTaskType;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de tarea. Incluye las definiciones de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTaskDefinition = array of TGWSTaskDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcedure = class&lt;br /&gt;
    property Identifier: TGWSIdentifier&lt;br /&gt;
    property NameProcedure: String&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property Group: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada del procedimento, que se usa obtener los datos fundamentales de un procedimento &lt;br /&gt;
    al cargar listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcedure = array of TGWSRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcedure = class&lt;br /&gt;
    property RefProcedures: TGWSArrayRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcedure = class(TGWSRefProcedure)&lt;br /&gt;
    property TaskDefinitions: TGWSArrayTaskDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Descripción completa del procedimiento.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 TGWSProcessStatus = (psCreated, psStarted, psFinished, psArchived, psDeleted, psAll);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar un trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayProcessStatus = array of TGWSProcessStatus;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcess = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property RefProcedure: TGWSRefProcedure;&lt;br /&gt;
    property LabelProcess: String;&lt;br /&gt;
    property Status: TGWSProcessStatus;&lt;br /&gt;
    property CreateDate: TGWSSerializedDateTime;&lt;br /&gt;
    property StartDate: TGWSSerializedDateTime;&lt;br /&gt;
    property EndDate: TGWSSerializedDateTime;&lt;br /&gt;
    property TramitationStatus: String; &lt;br /&gt;
    property TaskCount: Integer;&lt;br /&gt;
    property LastTaskName: String;&lt;br /&gt;
    property LastTaskDate: TGWSSerializedDateTime;&lt;br /&gt;
    property HasPendingTasks: Boolean read;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada de un trámite, usada para obtener los datos fundamentales de un &lt;br /&gt;
    trámite en listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcess = array of TGWSRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcess = class&lt;br /&gt;
    property RefProcesses: TGWSArrayRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcess = class(TGWSRefProcess)&lt;br /&gt;
    property Tasks: TGWSArrayTasks read FTasks write FTasks;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos del trámite, incluyendo las tareas que forman parte del mismo.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchProcessArg = class&lt;br /&gt;
    property Status: TGWSArrayProcessStatus;&lt;br /&gt;
    property Condition: String;&lt;br /&gt;
    &lt;br /&gt;
    Parámetros de búsqueda usados para indicar los criterios de búsqueda de trámites.&lt;br /&gt;
&lt;br /&gt;
==Tareas==&lt;br /&gt;
 TGWSTaskStatus = (wsTaskCreated, wsTaskSended, wsTaskReceived, wsTaskResponsed);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSTask = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property Status: TGWSTaskStatus;&lt;br /&gt;
    property CreateOrReceiveDate: TGWSSerializedDateTime;&lt;br /&gt;
    property SendOrResponseDate: TGWSSerializedDateTime;&lt;br /&gt;
    property Files: TGWSArrayRefFiles;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    property Signature: TGSignature;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una tarea. Incluye la información de los campos y los archivos adjuntos, &lt;br /&gt;
    así como la firma digital de la tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTasks = array of TGWSTask;&lt;br /&gt;
&lt;br /&gt;
==Campos==&lt;br /&gt;
 TGWSArrayValues = array of String;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldAllowedValues = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property AllowedValues: TGWSArrayValues;&lt;br /&gt;
    &lt;br /&gt;
    Listado de valores permitidos para un campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldAllowedValues = array of TGWSFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldAllowedValues = class&lt;br /&gt;
    property FieldAllowedValues: TGWSArrayFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldValue = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Value: String read FValue write FValue;&lt;br /&gt;
    property RowsAllowedValues: TGWSListFieldAllowedValues; &lt;br /&gt;
    property Rows: TGWSArrayRows;&lt;br /&gt;
    &lt;br /&gt;
    Campo. Para facilitar la operación con este tipo, se ha añadido el atributo “tipo”, &lt;br /&gt;
    que también está disponible en la definición de campo. Si el campo es de tipo tabla, &lt;br /&gt;
    incluye la información de las filas de la tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldValue = array of TGWSFieldValue;&lt;br /&gt;
&lt;br /&gt;
 TGWSRow = class&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    &lt;br /&gt;
    Fila de campos tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRows = array of TGWSRow;&lt;br /&gt;
&lt;br /&gt;
==Ficheros==&lt;br /&gt;
 TGWSRefFile = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameFile: String;&lt;br /&gt;
    property AttachDate: TGWSSerializedDateTime;&lt;br /&gt;
    &lt;br /&gt;
    Datos de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefFiles = array of TGWSRefFile;&lt;br /&gt;
&lt;br /&gt;
 TGWSFile = class(TGWSRefFile)&lt;br /&gt;
    property Content: TByteDynArray;&lt;br /&gt;
    &lt;br /&gt;
    Contenido completo de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
==Notificaciones==&lt;br /&gt;
 TGWSNotification = class&lt;br /&gt;
    property Identifier: String read FIdentifier write FIdentifier;&lt;br /&gt;
    property Name: String read FName write FName;&lt;br /&gt;
    &lt;br /&gt;
    Notificación pendiente en un trámite. Incluye el identificador de la tarea de notificación &lt;br /&gt;
    que está pendiente de acusar recibo y un nombre descriptivo para mostrar al usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayNotifications = array of TGWSNotification;&lt;br /&gt;
&lt;br /&gt;
 TGWSListNotifications = class(TRemotable)&lt;br /&gt;
    property Notifications: TGWSArrayNotifications read FNotifications write FNotifications;&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 TGWSRegistrationForm = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    &lt;br /&gt;
    Formulario de registro de un usuario. Incluye solo los campos adicionales. Los campos &lt;br /&gt;
    obligatorios (nombre, nombre completo, nif, correo electrónico), no están incluidos en el &lt;br /&gt;
    formulario. La definición de los campos de registro se describe en un fichero XML.&lt;br /&gt;
&lt;br /&gt;
 TGWSRefUser = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property UserName: String;&lt;br /&gt;
    property FullName: String;&lt;br /&gt;
    property Nif: String;&lt;br /&gt;
    property EMail: String;&lt;br /&gt;
    property IdOrganization;&lt;br /&gt;
    &lt;br /&gt;
    Datos básicos de un usuario, se usa para listados de usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefUsers = array of TGWSRefUser;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefUsers = class&lt;br /&gt;
    property RefUsers: TGWSArrayRefUsers;&lt;br /&gt;
&lt;br /&gt;
 TGWSUser = class(TGWSRefUser)&lt;br /&gt;
    property RegistrationForm: TGWSRegistrationForm;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos de un usuario, incluyendo los datos del formulario de registro.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchUsersArg = class&lt;br /&gt;
    property Condition: STring;&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 TGWSOrganization = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property Name: String read;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una organización. La organización permite agrupar los usuarios, de forma que los &lt;br /&gt;
    todos los usuarios individuales que pertenezcan a una organización tienen acceso a todos los &lt;br /&gt;
    trámites que haya iniciado cualquier miembro de la organización.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayOrganizations = array of TGWSOrganization;&lt;br /&gt;
&lt;br /&gt;
 TGWSListOrganizations = class&lt;br /&gt;
    property Organizations: TGWSArrayOrganizations;&lt;br /&gt;
&lt;br /&gt;
=API de usuario=&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSession(IdUnit: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdUnit: Identificador del usuario o centro gestor que inicia sesión.&lt;br /&gt;
         Data: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSession(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: TGWSRefUser; out Error: TGWSError)&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
         Data: Datos básicos del usuario que inició sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado &lt;br /&gt;
         válido de la FNMT o DNIe. &lt;br /&gt;
         El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSession(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 RegisterAllowed(out Data: Boolean; out Error: TGWSError)&lt;br /&gt;
 Indica si el resgistro libre de nuevos usuarios está disponible.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Verdadero si está permitido el registro libre de usuarios.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadRegisterForm(out Data: TGWSRegistrationForm; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el formulario de registro de usuarios.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Formulario de registro de usuarios.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     El formulario de registro contiene los campos adicionales a los 4 campos obligatorios que son “nombre”, “nombre completo”, &lt;br /&gt;
     “nif” y “correo electrónico”.&lt;br /&gt;
&lt;br /&gt;
 RegisterUser(const UserName: String; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
              RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; out Error: TGWSErrorValidate)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
     cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. El formulario de registro se puede obtener llamando a la &lt;br /&gt;
     función “LoadRegisterForm”. Esta función solo está disponible si el registro libre está permitido. &lt;br /&gt;
     Consultar la función “RegisterAllowed”.&lt;br /&gt;
&lt;br /&gt;
 LoadUser(IdSession: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Permite obtener los datos del usuario actual que inició sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Datos del usuario.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveUser(IdSession: TGWSIdentifier; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
          RegistrationData: TGWSRegistrationForm; out Error: TGWSErrorValidate)&lt;br /&gt;
 Permite modificar los datos del usuario actual.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Error:Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
     cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
==Procedimientos==&lt;br /&gt;
 LoadProcedures(IdSession: TGWSIdentifier; out Data: TGWSListRefProcedure; out Error: TGWSError)&lt;br /&gt;
 Obtiene lista de definiciones básicas de procedimientos.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Lista de definiciones básicas de procedimiento.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcedure(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; out Data: TGWSProcedure; out Error: TGWSError)&lt;br /&gt;
 Permite obtener la definición completa de un procedimiento que se indique.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento.&lt;br /&gt;
     Data: Definición completa del procedimiento.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 LoadProcesses(IdSession: TGWSIdentifier; SearchParams: TGWSSearchProcessArg; out Data: TGWSListRefProcess; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de trámites (descripción abreviada) del usuario que cumplan las condiciones indicadas &lt;br /&gt;
 en el parámetro de búsqueda.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de trámites (descripción abreviada).&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Carga un trámite completo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Contenido completo del trámite.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     Si el trámite tiene notificaciones pendientes, el sistema no permite abrir el trámite. Es necesario confirmar &lt;br /&gt;
     la recepción de las notificaciones antes de abrir el trámite, haciendo uso de las tareas &lt;br /&gt;
     “LoadProcessNotifications”, “LoadTaskSerialization” y “SendTask”.&lt;br /&gt;
&lt;br /&gt;
 LoadProcessNotifications(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; &lt;br /&gt;
                          out Data: TGWSListNotifications; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de las notificaciones pendientes del trámite. &lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Lista de notificaciones pendientes del trámite.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles: &lt;br /&gt;
     Cuando un proceso tenga notificaciones pendientes, será necesario cargar cada una de las tareas &lt;br /&gt;
     indicadas por las notificaciones, firmarlas y enviarlas para confirmar la recepción de dichas notificaciones.&lt;br /&gt;
&lt;br /&gt;
 CreateProcess(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; &lt;br /&gt;
               out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Crea un trámite basado en una definición de procedimiento. Le asigna una etiqueta al nuevo trámite creado, &lt;br /&gt;
 para facilitar la localización del mismo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento que sirve como definición del trámite a crear.&lt;br /&gt;
     Data: Proceso creado.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda eliminar un trámite, es necesario que no se haya enviado ninguna tarea asociada al mismo.&lt;br /&gt;
&lt;br /&gt;
 ArchiveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Archiva el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda archivar el trámite, es necesario que este haya finalizado.&lt;br /&gt;
&lt;br /&gt;
==Tareas de los trámites==&lt;br /&gt;
 CreateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTaskDefinition: TGWSIdentifier; out Data: TGWSTask; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Crea una tarea dentro del trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTaskDefinition: Tipo de tarea a crear.&lt;br /&gt;
     Data: Tarea creada.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; Task: TGWSTask; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios realizados en una tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Task: Tarea que se va a modificar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser guardada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 RemoveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea a eliminar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser eliminada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 LoadTaskSerialization(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; &lt;br /&gt;
                       out Data: String; out Error: TGWSError)&lt;br /&gt;
 Carga el contenido serializado de una tarea. Este contenido serializado es el que habrá de ser firmado &lt;br /&gt;
 cuando se quiera enviar la tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Data: Serialización de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 ValidateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSErrorValidateTask); &lt;br /&gt;
 Comprueba las condiciones de validación que se hayan definido sobre la tarea. Si no se cumplen alguna o algunas de las &lt;br /&gt;
 condiciones, vendrá indicado en el parámetro de salida “Error”.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 SendTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; Signature: TGSignature; &lt;br /&gt;
          out Error: TGWSErrorValidateTask)&lt;br /&gt;
 Envía la tarea al backoffice, para que continue el trámite. La tarea ha de cumplir las validaciones definidas.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Signature: Firma de la serialización de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 ResponseTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Genera una tarea de respuesta a una tarea que haya sido recibida.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadFieldValues(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; Task: TGWSTask; FieldIdentifier: TGWSIdentifier; &lt;br /&gt;
                 RowIdentifier: Integer; out Data: TGWSFieldAllowedValues; out Error: TGWSError)&lt;br /&gt;
 Carga los valores posibles de un campo en función del valor del resto de campos de la tarea. Es necesario usar esta &lt;br /&gt;
 función para aquellos campos de tipo selección que tengan valores.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Task: Tarea actual, con los valores de los campos cargados.&lt;br /&gt;
     FieldIdentifier: Indentificador del campo para el cual queremos obtener los valores.&lt;br /&gt;
     RowIdentifier: Contador de fila para indicar qué fila queremos rellenar, en caso de campos tabla.&lt;br /&gt;
     Data: Lista de valores posibles del campo.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Ficheros adjuntos de los trámites==&lt;br /&gt;
 LoadFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
          out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el contenido de un fichero que pertenezca una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 AttachFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; FileName: String; Content: TByteDynArray; &lt;br /&gt;
            out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Adjunta un nuevo fichero a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     FileName: Nombre del fichero.&lt;br /&gt;
     Content: Contenido del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Elimina un fichero que haya sido adjuntado a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles.&lt;br /&gt;
     Para que un fichero pueda ser eliminado de la tarea, la tarea no puede haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
=Api de administración=&lt;br /&gt;
&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSessionAdmin(IdAdmin: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión de administración con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdUnit: Identificador del usuario administrador que inicia sesión.&lt;br /&gt;
     Data: Identificador de la sesión.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSessionAdmin(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: String; out Error: TGWSError)&lt;br /&gt;
&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.&lt;br /&gt;
     Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
     Data: Nombre del usuario administrador.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado válido &lt;br /&gt;
     de la FNMT o DNIe. El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSessionAdmin(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 LoadOrganizations(IdSession: TGWSIdentifier; out Data: TGWSListOrganizations; out Error: TGWSError)&lt;br /&gt;
 Carga la lista de organizaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     Data: Lista de organizaciones.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadOrganization(IdSession: TGWSIdentifier; IdOrganization: TGWSIdentifier; out Data: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
&lt;br /&gt;
 Carga una organización concreta.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     IdOrganization: Identificador de la organización.&lt;br /&gt;
     Data: Datos de la organización.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 CreateOrganization(IdSession: TGWSIdentifier; const Name: String; out Data: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
 Crea una nueva organización en el sistema.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     Name: Nombre de la nueva organización.&lt;br /&gt;
     Data: Datos de la organización creada.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveOrganization(IdSession: TGWSIdentifier; Organization: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios que se realicen en una organización.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     Organización: Datos de la organización que se quiere modificar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveOrganization(IdSession: TGWSIdentifier; IdOrganization: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una organización.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     IdOrganización: Identificador de la organización que se quiere eliminar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     No se podrá eliminar una organización a la que estén adscritos usuarios. Sería necesario primero cambiar los &lt;br /&gt;
     usuarios de organización o eliminarlos.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 LoadUsers(IdSession: TGWSIdentifier; SearchParams: TGWSSearchUsersArg; out Data: TGWSListRefUsers; out Error: TGWSError)&lt;br /&gt;
 Carga una lista de  usuarios dados de alta en el sistema según los criterios de búsqueda proporcionados en los parámetros.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSessión: Identificador de la sesión.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de datos básicos de usuario.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadUserById(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Carga los datos de un usuario según un identificador proporcionado.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSessión: Identificador de la sesión.&lt;br /&gt;
 IdUser: Identificador del usuario.&lt;br /&gt;
 Data: Datos completos del usuario.&lt;br /&gt;
     Error: Código y mensaje de error&lt;br /&gt;
&lt;br /&gt;
 CreateUser(IdSession: TGWSIdentifier; const UserName: String; const FullName: String; const NIF: String; const EMail:&lt;br /&gt;
            String; Organization: TGWSIdentifier; RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; &lt;br /&gt;
            out Error: TGWSErrorValidate)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSessión: Identificador de la sesión.&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     Organization: Identificador de la organización a la que pertenence el usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
     cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. &lt;br /&gt;
&lt;br /&gt;
 SaveUserById(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; User: TGWSUser; out Error: TGWSErrorValidate)&lt;br /&gt;
 Permite modificar los datos de un usuario que ya exista.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdUser: Identificador del usuario.&lt;br /&gt;
     User: Datos del usuario a modificar.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
     cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 RemoveUser(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina un usuario registrado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdUser: Identificador del usuario.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que pueda ser eliminado un usuario, este no debe haber iniciado trámites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Tramitación electrónica]]&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5757</id>
		<title>API del Web Service STE</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5757"/>
				<updated>2010-04-06T08:45:59Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: /* Usuarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Tipos=&lt;br /&gt;
&lt;br /&gt;
==Basicos==&lt;br /&gt;
 TGArrayInteger = array of integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSSerializedDateTime = String;&lt;br /&gt;
&lt;br /&gt;
 TGWSIdentifier = String;&lt;br /&gt;
&lt;br /&gt;
 TGSignature = TByteDynArray; &lt;br /&gt;
 &lt;br /&gt;
    Array de bytes usado para enviar datos binarios (ficheros, firmas, etc.).&lt;br /&gt;
&lt;br /&gt;
==Errores==&lt;br /&gt;
 TGWSErrorCode = Integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldError = class&lt;br /&gt;
    property FieldDefinitionPath: String;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción de error en un campo. Indica el campo afectado y el error correspondiente.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldError = array of TGWSFieldError;&lt;br /&gt;
&lt;br /&gt;
 TGWSError = class&lt;br /&gt;
    property ErrorCode: TGWSErrorCode;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Error general.&lt;br /&gt;
&lt;br /&gt;
 TGWSErrorValidateTask = class(TGWSError)&lt;br /&gt;
    property FieldErrors: TGWSArrayFieldError;&lt;br /&gt;
    &lt;br /&gt;
    Error en la validación o envío de una tarea. Detalla los errores de los campos.&lt;br /&gt;
&lt;br /&gt;
==Procedimentos (definiciones)==&lt;br /&gt;
 TGWSFieldType = (ftDummy, ftBoolean, ftInteger, ftReal, ftString, ftMemo, ftDatetime, ftCurrency, ftTable);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property LabelField: String;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Section: String;&lt;br /&gt;
    property Visible: Boolean;&lt;br /&gt;
    property Editable: Boolean;&lt;br /&gt;
    property Required: Boolean;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de campo. Si es un campo tabla, incluye las definiciones de las columnas.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldDefinition = array of TGWSFieldDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldDefinition = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition; &lt;br /&gt;
&lt;br /&gt;
 TGWSTaskType = (ttStart, ttSendDocumentation, ttRequirement, ttNotification, ttResponse);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de tarea. &lt;br /&gt;
    Todo proceso ha de tener al menos una tarea de inicio (ttStart). &lt;br /&gt;
    Las tareas de envío de documentación (ttSendDocumentation) permiten añadir documentación a un trámite &lt;br /&gt;
    en cualquier momento.&lt;br /&gt;
    Las tareas de requerimiento se usan para solicitar la participación del interesado en algún momento del trámite, &lt;br /&gt;
    requiriendole para que aporte más documentación a un trámite, por medio de una tarea de respuesta (ttResponse).&lt;br /&gt;
    Las tareas de notificación sirven para informar al interesado de cualquier incidencia en el trámite. &lt;br /&gt;
    Se debe acusar recibo de este tipo de tareas para poder consultar el trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSTaskDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameTask: String;&lt;br /&gt;
    property LabelTask: String;&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property TaskType: TGWSTaskType;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de tarea. Incluye las definiciones de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTaskDefinition = array of TGWSTaskDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcedure = class&lt;br /&gt;
    property Identifier: TGWSIdentifier&lt;br /&gt;
    property NameProcedure: String&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property Group: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada del procedimento, que se usa obtener los datos fundamentales de un procedimento &lt;br /&gt;
    al cargar listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcedure = array of TGWSRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcedure = class&lt;br /&gt;
    property RefProcedures: TGWSArrayRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcedure = class(TGWSRefProcedure)&lt;br /&gt;
    property TaskDefinitions: TGWSArrayTaskDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Descripción completa del procedimiento.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 TGWSProcessStatus = (psCreated, psStarted, psFinished, psArchived, psDeleted, psAll);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar un trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayProcessStatus = array of TGWSProcessStatus;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcess = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property RefProcedure: TGWSRefProcedure;&lt;br /&gt;
    property LabelProcess: String;&lt;br /&gt;
    property Status: TGWSProcessStatus;&lt;br /&gt;
    property CreateDate: TGWSSerializedDateTime;&lt;br /&gt;
    property StartDate: TGWSSerializedDateTime;&lt;br /&gt;
    property EndDate: TGWSSerializedDateTime;&lt;br /&gt;
    property TramitationStatus: String; &lt;br /&gt;
    property TaskCount: Integer;&lt;br /&gt;
    property LastTaskName: String;&lt;br /&gt;
    property LastTaskDate: TGWSSerializedDateTime;&lt;br /&gt;
    property HasPendingTasks: Boolean read;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada de un trámite, usada para obtener los datos fundamentales de un &lt;br /&gt;
    trámite en listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcess = array of TGWSRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcess = class&lt;br /&gt;
    property RefProcesses: TGWSArrayRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcess = class(TGWSRefProcess)&lt;br /&gt;
    property Tasks: TGWSArrayTasks read FTasks write FTasks;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos del trámite, incluyendo las tareas que forman parte del mismo.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchProcessArg = class&lt;br /&gt;
    property Status: TGWSArrayProcessStatus;&lt;br /&gt;
    property Condition: String;&lt;br /&gt;
    &lt;br /&gt;
    Parámetros de búsqueda usados para indicar los criterios de búsqueda de trámites.&lt;br /&gt;
&lt;br /&gt;
==Tareas==&lt;br /&gt;
 TGWSTaskStatus = (wsTaskCreated, wsTaskSended, wsTaskReceived, wsTaskResponsed);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSTask = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property Status: TGWSTaskStatus;&lt;br /&gt;
    property CreateOrReceiveDate: TGWSSerializedDateTime;&lt;br /&gt;
    property SendOrResponseDate: TGWSSerializedDateTime;&lt;br /&gt;
    property Files: TGWSArrayRefFiles;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    property Signature: TGSignature;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una tarea. Incluye la información de los campos y los archivos adjuntos, &lt;br /&gt;
    así como la firma digital de la tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTasks = array of TGWSTask;&lt;br /&gt;
&lt;br /&gt;
==Campos==&lt;br /&gt;
 TGWSArrayValues = array of String;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldAllowedValues = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property AllowedValues: TGWSArrayValues;&lt;br /&gt;
    &lt;br /&gt;
    Listado de valores permitidos para un campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldAllowedValues = array of TGWSFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldAllowedValues = class&lt;br /&gt;
    property FieldAllowedValues: TGWSArrayFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldValue = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Value: String read FValue write FValue;&lt;br /&gt;
    property RowsAllowedValues: TGWSListFieldAllowedValues; &lt;br /&gt;
    property Rows: TGWSArrayRows;&lt;br /&gt;
    &lt;br /&gt;
    Campo. Para facilitar la operación con este tipo, se ha añadido el atributo “tipo”, &lt;br /&gt;
    que también está disponible en la definición de campo. Si el campo es de tipo tabla, &lt;br /&gt;
    incluye la información de las filas de la tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldValue = array of TGWSFieldValue;&lt;br /&gt;
&lt;br /&gt;
 TGWSRow = class&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    &lt;br /&gt;
    Fila de campos tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRows = array of TGWSRow;&lt;br /&gt;
&lt;br /&gt;
==Ficheros==&lt;br /&gt;
 TGWSRefFile = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameFile: String;&lt;br /&gt;
    property AttachDate: TGWSSerializedDateTime;&lt;br /&gt;
    &lt;br /&gt;
    Datos de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefFiles = array of TGWSRefFile;&lt;br /&gt;
&lt;br /&gt;
 TGWSFile = class(TGWSRefFile)&lt;br /&gt;
    property Content: TByteDynArray;&lt;br /&gt;
    &lt;br /&gt;
    Contenido completo de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
==Notificaciones==&lt;br /&gt;
 TGWSNotification = class&lt;br /&gt;
    property Identifier: String read FIdentifier write FIdentifier;&lt;br /&gt;
    property Name: String read FName write FName;&lt;br /&gt;
    &lt;br /&gt;
    Notificación pendiente en un trámite. Incluye el identificador de la tarea de notificación &lt;br /&gt;
    que está pendiente de acusar recibo y un nombre descriptivo para mostrar al usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayNotifications = array of TGWSNotification;&lt;br /&gt;
&lt;br /&gt;
 TGWSListNotifications = class(TRemotable)&lt;br /&gt;
    property Notifications: TGWSArrayNotifications read FNotifications write FNotifications;&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 TGWSRegistrationForm = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    &lt;br /&gt;
    Formulario de registro de un usuario. Incluye solo los campos adicionales. Los campos &lt;br /&gt;
    obligatorios (nombre, nombre completo, nif, correo electrónico), no están incluidos en el &lt;br /&gt;
    formulario. La definición de los campos de registro se describe en un fichero XML.&lt;br /&gt;
&lt;br /&gt;
 TGWSRefUser = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property UserName: String;&lt;br /&gt;
    property FullName: String;&lt;br /&gt;
    property Nif: String;&lt;br /&gt;
    property EMail: String;&lt;br /&gt;
    property IdOrganization;&lt;br /&gt;
    &lt;br /&gt;
    Datos básicos de un usuario, se usa para listados de usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefUsers = array of TGWSRefUser;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefUsers = class&lt;br /&gt;
    property RefUsers: TGWSArrayRefUsers;&lt;br /&gt;
&lt;br /&gt;
 TGWSUser = class(TGWSRefUser)&lt;br /&gt;
    property RegistrationForm: TGWSRegistrationForm;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos de un usuario, incluyendo los datos del formulario de registro.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchUsersArg = class&lt;br /&gt;
    property Condition: STring;&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 TGWSOrganization = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property Name: String read;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una organización. La organización permite agrupar los usuarios, de forma que los &lt;br /&gt;
    todos los usuarios individuales que pertenezcan a una organización tienen acceso a todos los &lt;br /&gt;
    trámites que haya iniciado cualquier miembro de la organización.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayOrganizations = array of TGWSOrganization;&lt;br /&gt;
&lt;br /&gt;
 TGWSListOrganizations = class&lt;br /&gt;
    property Organizations: TGWSArrayOrganizations;&lt;br /&gt;
&lt;br /&gt;
=API de usuario=&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSession(IdUnit: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdUnit: Identificador del usuario o centro gestor que inicia sesión.&lt;br /&gt;
         Data: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSession(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: TGWSRefUser; out Error: TGWSError)&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
         Data: Datos básicos del usuario que inició sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado &lt;br /&gt;
         válido de la FNMT o DNIe. &lt;br /&gt;
         El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSession(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 RegisterAllowed(out Data: Boolean; out Error: TGWSError)&lt;br /&gt;
 Indica si el resgistro libre de nuevos usuarios está disponible.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Verdadero si está permitido el registro libre de usuarios.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadRegisterForm(out Data: TGWSRegistrationForm; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el formulario de registro de usuarios.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Formulario de registro de usuarios.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     El formulario de registro contiene los campos adicionales a los 4 campos obligatorios que son “nombre”, “nombre completo”, &lt;br /&gt;
     “nif” y “correo electrónico”.&lt;br /&gt;
&lt;br /&gt;
 RegisterUser(const UserName: String; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
              RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; out Error: TGWSErrorValidate)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
     cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. El formulario de registro se puede obtener llamando a la &lt;br /&gt;
     función “LoadRegisterForm”. Esta función solo está disponible si el registro libre está permitido. &lt;br /&gt;
     Consultar la función “RegisterAllowed”.&lt;br /&gt;
&lt;br /&gt;
 LoadUser(IdSession: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Permite obtener los datos del usuario actual que inició sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Datos del usuario.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveUser(IdSession: TGWSIdentifier; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
          RegistrationData: TGWSRegistrationForm; out Error: TGWSErrorValidate)&lt;br /&gt;
 Permite modificar los datos del usuario actual.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Error:Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
     cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
==Procedimientos==&lt;br /&gt;
 LoadProcedures(IdSession: TGWSIdentifier; out Data: TGWSListRefProcedure; out Error: TGWSError)&lt;br /&gt;
 Obtiene lista de definiciones básicas de procedimientos.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Lista de definiciones básicas de procedimiento.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcedure(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; out Data: TGWSProcedure; out Error: TGWSError)&lt;br /&gt;
 Permite obtener la definición completa de un procedimiento que se indique.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento.&lt;br /&gt;
     Data: Definición completa del procedimiento.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 LoadProcesses(IdSession: TGWSIdentifier; SearchParams: TGWSSearchProcessArg; out Data: TGWSListRefProcess; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de trámites (descripción abreviada) del usuario que cumplan las condiciones indicadas &lt;br /&gt;
 en el parámetro de búsqueda.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de trámites (descripción abreviada).&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Carga un trámite completo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Contenido completo del trámite.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     Si el trámite tiene notificaciones pendientes, el sistema no permite abrir el trámite. Es necesario confirmar &lt;br /&gt;
     la recepción de las notificaciones antes de abrir el trámite, haciendo uso de las tareas &lt;br /&gt;
     “LoadProcessNotifications”, “LoadTaskSerialization” y “SendTask”.&lt;br /&gt;
&lt;br /&gt;
 LoadProcessNotifications(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; &lt;br /&gt;
                          out Data: TGWSListNotifications; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de las notificaciones pendientes del trámite. &lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Lista de notificaciones pendientes del trámite.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles: &lt;br /&gt;
     Cuando un proceso tenga notificaciones pendientes, será necesario cargar cada una de las tareas &lt;br /&gt;
     indicadas por las notificaciones, firmarlas y enviarlas para confirmar la recepción de dichas notificaciones.&lt;br /&gt;
&lt;br /&gt;
 CreateProcess(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; &lt;br /&gt;
               out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Crea un trámite basado en una definición de procedimiento. Le asigna una etiqueta al nuevo trámite creado, &lt;br /&gt;
 para facilitar la localización del mismo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento que sirve como definición del trámite a crear.&lt;br /&gt;
     Data: Proceso creado.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda eliminar un trámite, es necesario que no se haya enviado ninguna tarea asociada al mismo.&lt;br /&gt;
&lt;br /&gt;
 ArchiveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Archiva el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda archivar el trámite, es necesario que este haya finalizado.&lt;br /&gt;
&lt;br /&gt;
==Tareas de los trámites==&lt;br /&gt;
 CreateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTaskDefinition: TGWSIdentifier; out Data: TGWSTask; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Crea una tarea dentro del trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTaskDefinition: Tipo de tarea a crear.&lt;br /&gt;
     Data: Tarea creada.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; Task: TGWSTask; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios realizados en una tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Task: Tarea que se va a modificar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser guardada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 RemoveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea a eliminar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser eliminada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 LoadTaskSerialization(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; &lt;br /&gt;
                       out Data: String; out Error: TGWSError)&lt;br /&gt;
 Carga el contenido serializado de una tarea. Este contenido serializado es el que habrá de ser firmado &lt;br /&gt;
 cuando se quiera enviar la tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Data: Serialización de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 ValidateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSErrorValidateTask); &lt;br /&gt;
 Comprueba las condiciones de validación que se hayan definido sobre la tarea. Si no se cumplen alguna o algunas de las &lt;br /&gt;
 condiciones, vendrá indicado en el parámetro de salida “Error”.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 SendTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; Signature: TGSignature; &lt;br /&gt;
          out Error: TGWSErrorValidateTask)&lt;br /&gt;
 Envía la tarea al backoffice, para que continue el trámite. La tarea ha de cumplir las validaciones definidas.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Signature: Firma de la serialización de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 ResponseTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Genera una tarea de respuesta a una tarea que haya sido recibida.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadFieldValues(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; Task: TGWSTask; FieldIdentifier: TGWSIdentifier; &lt;br /&gt;
                 RowIdentifier: Integer; out Data: TGWSFieldAllowedValues; out Error: TGWSError)&lt;br /&gt;
 Carga los valores posibles de un campo en función del valor del resto de campos de la tarea. Es necesario usar esta &lt;br /&gt;
 función para aquellos campos de tipo selección que tengan valores.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Task: Tarea actual, con los valores de los campos cargados.&lt;br /&gt;
     FieldIdentifier: Indentificador del campo para el cual queremos obtener los valores.&lt;br /&gt;
     RowIdentifier: Contador de fila para indicar qué fila queremos rellenar, en caso de campos tabla.&lt;br /&gt;
     Data: Lista de valores posibles del campo.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Ficheros adjuntos de los trámites==&lt;br /&gt;
 LoadFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
          out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el contenido de un fichero que pertenezca una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 AttachFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; FileName: String; Content: TByteDynArray; &lt;br /&gt;
            out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Adjunta un nuevo fichero a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     FileName: Nombre del fichero.&lt;br /&gt;
     Content: Contenido del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Elimina un fichero que haya sido adjuntado a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles.&lt;br /&gt;
     Para que un fichero pueda ser eliminado de la tarea, la tarea no puede haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
=Api de administración=&lt;br /&gt;
&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSessionAdmin(IdAdmin: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión de administración con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdUnit: Identificador del usuario administrador que inicia sesión.&lt;br /&gt;
     Data: Identificador de la sesión.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSessionAdmin(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: String; out Error: TGWSError)&lt;br /&gt;
&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.&lt;br /&gt;
     Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
     Data: Nombre del usuario administrador.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado válido &lt;br /&gt;
     de la FNMT o DNIe. El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSessionAdmin(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 LoadOrganizations(IdSession: TGWSIdentifier; out Data: TGWSListOrganizations; out Error: TGWSError)&lt;br /&gt;
 Carga la lista de organizaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     Data: Lista de organizaciones.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadOrganization(IdSession: TGWSIdentifier; IdOrganization: TGWSIdentifier; out Data: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
&lt;br /&gt;
 Carga una organización concreta.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     IdOrganization: Identificador de la organización.&lt;br /&gt;
     Data: Datos de la organización.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 CreateOrganization(IdSession: TGWSIdentifier; const Name: String; out Data: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
 Crea una nueva organización en el sistema.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     Name: Nombre de la nueva organización.&lt;br /&gt;
     Data: Datos de la organización creada.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveOrganization(IdSession: TGWSIdentifier; Organization: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios que se realicen en una organización.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     Organización: Datos de la organización que se quiere modificar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveOrganization(IdSession: TGWSIdentifier; IdOrganization: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una organización.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     IdOrganización: Identificador de la organización que se quiere eliminar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     No se podrá eliminar una organización a la que estén adscritos usuarios. Sería necesario primero cambiar los &lt;br /&gt;
     usuarios de organización o eliminarlos.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 LoadUsers(IdSession: TGWSIdentifier; SearchParams: TGWSSearchUsersArg; out Data: TGWSListRefUsers; out Error: TGWSError)&lt;br /&gt;
 Carga una lista de  usuarios dados de alta en el sistema según los criterios de búsqueda proporcionados en los parámetros.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSessión: Identificador de la sesión.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de datos básicos de usuario.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadUserById(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Carga los datos de un usuario según un identificador proporcionado.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSessión: Identificador de la sesión.&lt;br /&gt;
 IdUser: Identificador del usuario.&lt;br /&gt;
 Data: Datos completos del usuario.&lt;br /&gt;
     Error: Código y mensaje de error&lt;br /&gt;
&lt;br /&gt;
 CreateUser(IdSession: TGWSIdentifier; const UserName: String; const FullName: String; const NIF: String; const EMail:&lt;br /&gt;
            String; Organization: TGWSIdentifier; RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; &lt;br /&gt;
            out Error: TGWSErrorValidate)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSessión: Identificador de la sesión.&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     Organization: Identificador de la organización a la que pertenence el usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
     cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. &lt;br /&gt;
&lt;br /&gt;
 SaveUserById(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; User: TGWSUser; out Error: TGWSErrorValidate)&lt;br /&gt;
 Permite modificar los datos de un usuario que ya exista.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdUser: Identificador del usuario.&lt;br /&gt;
     User: Datos del usuario a modificar.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
     cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 RemoveUser(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina un usuario registrado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdUser: Identificador del usuario.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que pueda ser eliminado un usuario, este no debe haber iniciado trámites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Tramitación electrónica]]&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5756</id>
		<title>API del Web Service STE</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5756"/>
				<updated>2010-04-06T08:45:25Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Tipos=&lt;br /&gt;
&lt;br /&gt;
==Basicos==&lt;br /&gt;
 TGArrayInteger = array of integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSSerializedDateTime = String;&lt;br /&gt;
&lt;br /&gt;
 TGWSIdentifier = String;&lt;br /&gt;
&lt;br /&gt;
 TGSignature = TByteDynArray; &lt;br /&gt;
 &lt;br /&gt;
    Array de bytes usado para enviar datos binarios (ficheros, firmas, etc.).&lt;br /&gt;
&lt;br /&gt;
==Errores==&lt;br /&gt;
 TGWSErrorCode = Integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldError = class&lt;br /&gt;
    property FieldDefinitionPath: String;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción de error en un campo. Indica el campo afectado y el error correspondiente.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldError = array of TGWSFieldError;&lt;br /&gt;
&lt;br /&gt;
 TGWSError = class&lt;br /&gt;
    property ErrorCode: TGWSErrorCode;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Error general.&lt;br /&gt;
&lt;br /&gt;
 TGWSErrorValidateTask = class(TGWSError)&lt;br /&gt;
    property FieldErrors: TGWSArrayFieldError;&lt;br /&gt;
    &lt;br /&gt;
    Error en la validación o envío de una tarea. Detalla los errores de los campos.&lt;br /&gt;
&lt;br /&gt;
==Procedimentos (definiciones)==&lt;br /&gt;
 TGWSFieldType = (ftDummy, ftBoolean, ftInteger, ftReal, ftString, ftMemo, ftDatetime, ftCurrency, ftTable);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property LabelField: String;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Section: String;&lt;br /&gt;
    property Visible: Boolean;&lt;br /&gt;
    property Editable: Boolean;&lt;br /&gt;
    property Required: Boolean;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de campo. Si es un campo tabla, incluye las definiciones de las columnas.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldDefinition = array of TGWSFieldDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldDefinition = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition; &lt;br /&gt;
&lt;br /&gt;
 TGWSTaskType = (ttStart, ttSendDocumentation, ttRequirement, ttNotification, ttResponse);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de tarea. &lt;br /&gt;
    Todo proceso ha de tener al menos una tarea de inicio (ttStart). &lt;br /&gt;
    Las tareas de envío de documentación (ttSendDocumentation) permiten añadir documentación a un trámite &lt;br /&gt;
    en cualquier momento.&lt;br /&gt;
    Las tareas de requerimiento se usan para solicitar la participación del interesado en algún momento del trámite, &lt;br /&gt;
    requiriendole para que aporte más documentación a un trámite, por medio de una tarea de respuesta (ttResponse).&lt;br /&gt;
    Las tareas de notificación sirven para informar al interesado de cualquier incidencia en el trámite. &lt;br /&gt;
    Se debe acusar recibo de este tipo de tareas para poder consultar el trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSTaskDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameTask: String;&lt;br /&gt;
    property LabelTask: String;&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property TaskType: TGWSTaskType;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de tarea. Incluye las definiciones de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTaskDefinition = array of TGWSTaskDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcedure = class&lt;br /&gt;
    property Identifier: TGWSIdentifier&lt;br /&gt;
    property NameProcedure: String&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property Group: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada del procedimento, que se usa obtener los datos fundamentales de un procedimento &lt;br /&gt;
    al cargar listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcedure = array of TGWSRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcedure = class&lt;br /&gt;
    property RefProcedures: TGWSArrayRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcedure = class(TGWSRefProcedure)&lt;br /&gt;
    property TaskDefinitions: TGWSArrayTaskDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Descripción completa del procedimiento.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 TGWSProcessStatus = (psCreated, psStarted, psFinished, psArchived, psDeleted, psAll);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar un trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayProcessStatus = array of TGWSProcessStatus;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcess = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property RefProcedure: TGWSRefProcedure;&lt;br /&gt;
    property LabelProcess: String;&lt;br /&gt;
    property Status: TGWSProcessStatus;&lt;br /&gt;
    property CreateDate: TGWSSerializedDateTime;&lt;br /&gt;
    property StartDate: TGWSSerializedDateTime;&lt;br /&gt;
    property EndDate: TGWSSerializedDateTime;&lt;br /&gt;
    property TramitationStatus: String; &lt;br /&gt;
    property TaskCount: Integer;&lt;br /&gt;
    property LastTaskName: String;&lt;br /&gt;
    property LastTaskDate: TGWSSerializedDateTime;&lt;br /&gt;
    property HasPendingTasks: Boolean read;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada de un trámite, usada para obtener los datos fundamentales de un &lt;br /&gt;
    trámite en listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcess = array of TGWSRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcess = class&lt;br /&gt;
    property RefProcesses: TGWSArrayRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcess = class(TGWSRefProcess)&lt;br /&gt;
    property Tasks: TGWSArrayTasks read FTasks write FTasks;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos del trámite, incluyendo las tareas que forman parte del mismo.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchProcessArg = class&lt;br /&gt;
    property Status: TGWSArrayProcessStatus;&lt;br /&gt;
    property Condition: String;&lt;br /&gt;
    &lt;br /&gt;
    Parámetros de búsqueda usados para indicar los criterios de búsqueda de trámites.&lt;br /&gt;
&lt;br /&gt;
==Tareas==&lt;br /&gt;
 TGWSTaskStatus = (wsTaskCreated, wsTaskSended, wsTaskReceived, wsTaskResponsed);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSTask = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property Status: TGWSTaskStatus;&lt;br /&gt;
    property CreateOrReceiveDate: TGWSSerializedDateTime;&lt;br /&gt;
    property SendOrResponseDate: TGWSSerializedDateTime;&lt;br /&gt;
    property Files: TGWSArrayRefFiles;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    property Signature: TGSignature;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una tarea. Incluye la información de los campos y los archivos adjuntos, &lt;br /&gt;
    así como la firma digital de la tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTasks = array of TGWSTask;&lt;br /&gt;
&lt;br /&gt;
==Campos==&lt;br /&gt;
 TGWSArrayValues = array of String;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldAllowedValues = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property AllowedValues: TGWSArrayValues;&lt;br /&gt;
    &lt;br /&gt;
    Listado de valores permitidos para un campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldAllowedValues = array of TGWSFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldAllowedValues = class&lt;br /&gt;
    property FieldAllowedValues: TGWSArrayFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldValue = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Value: String read FValue write FValue;&lt;br /&gt;
    property RowsAllowedValues: TGWSListFieldAllowedValues; &lt;br /&gt;
    property Rows: TGWSArrayRows;&lt;br /&gt;
    &lt;br /&gt;
    Campo. Para facilitar la operación con este tipo, se ha añadido el atributo “tipo”, &lt;br /&gt;
    que también está disponible en la definición de campo. Si el campo es de tipo tabla, &lt;br /&gt;
    incluye la información de las filas de la tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldValue = array of TGWSFieldValue;&lt;br /&gt;
&lt;br /&gt;
 TGWSRow = class&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    &lt;br /&gt;
    Fila de campos tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRows = array of TGWSRow;&lt;br /&gt;
&lt;br /&gt;
==Ficheros==&lt;br /&gt;
 TGWSRefFile = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameFile: String;&lt;br /&gt;
    property AttachDate: TGWSSerializedDateTime;&lt;br /&gt;
    &lt;br /&gt;
    Datos de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefFiles = array of TGWSRefFile;&lt;br /&gt;
&lt;br /&gt;
 TGWSFile = class(TGWSRefFile)&lt;br /&gt;
    property Content: TByteDynArray;&lt;br /&gt;
    &lt;br /&gt;
    Contenido completo de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
==Notificaciones==&lt;br /&gt;
 TGWSNotification = class&lt;br /&gt;
    property Identifier: String read FIdentifier write FIdentifier;&lt;br /&gt;
    property Name: String read FName write FName;&lt;br /&gt;
    &lt;br /&gt;
    Notificación pendiente en un trámite. Incluye el identificador de la tarea de notificación &lt;br /&gt;
    que está pendiente de acusar recibo y un nombre descriptivo para mostrar al usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayNotifications = array of TGWSNotification;&lt;br /&gt;
&lt;br /&gt;
 TGWSListNotifications = class(TRemotable)&lt;br /&gt;
    property Notifications: TGWSArrayNotifications read FNotifications write FNotifications;&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 TGWSRegistrationForm = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    &lt;br /&gt;
    Formulario de registro de un usuario. Incluye solo los campos adicionales. Los campos &lt;br /&gt;
    obligatorios (nombre, nombre completo, nif, correo electrónico), no están incluidos en el &lt;br /&gt;
    formulario. La definición de los campos de registro se describe en un fichero XML.&lt;br /&gt;
&lt;br /&gt;
 TGWSRefUser = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property UserName: String;&lt;br /&gt;
    property FullName: String;&lt;br /&gt;
    property Nif: String;&lt;br /&gt;
    property EMail: String;&lt;br /&gt;
    property IdOrganization;&lt;br /&gt;
    &lt;br /&gt;
    Datos básicos de un usuario, se usa para listados de usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefUsers = array of TGWSRefUser;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefUsers = class&lt;br /&gt;
    property RefUsers: TGWSArrayRefUsers;&lt;br /&gt;
&lt;br /&gt;
 TGWSUser = class(TGWSRefUser)&lt;br /&gt;
    property RegistrationForm: TGWSRegistrationForm;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos de un usuario, incluyendo los datos del formulario de registro.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchUsersArg = class&lt;br /&gt;
    property Condition: STring;&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 TGWSOrganization = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property Name: String read;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una organización. La organización permite agrupar los usuarios, de forma que los &lt;br /&gt;
    todos los usuarios individuales que pertenezcan a una organización tienen acceso a todos los &lt;br /&gt;
    trámites que haya iniciado cualquier miembro de la organización.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayOrganizations = array of TGWSOrganization;&lt;br /&gt;
&lt;br /&gt;
 TGWSListOrganizations = class&lt;br /&gt;
    property Organizations: TGWSArrayOrganizations;&lt;br /&gt;
&lt;br /&gt;
=API de usuario=&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSession(IdUnit: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdUnit: Identificador del usuario o centro gestor que inicia sesión.&lt;br /&gt;
         Data: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSession(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: TGWSRefUser; out Error: TGWSError)&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
         Data: Datos básicos del usuario que inició sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado &lt;br /&gt;
         válido de la FNMT o DNIe. &lt;br /&gt;
         El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSession(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 RegisterAllowed(out Data: Boolean; out Error: TGWSError)&lt;br /&gt;
 Indica si el resgistro libre de nuevos usuarios está disponible.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Verdadero si está permitido el registro libre de usuarios.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadRegisterForm(out Data: TGWSRegistrationForm; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el formulario de registro de usuarios.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Formulario de registro de usuarios.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     El formulario de registro contiene los campos adicionales a los 4 campos obligatorios que son “nombre”, “nombre completo”, &lt;br /&gt;
     “nif” y “correo electrónico”.&lt;br /&gt;
&lt;br /&gt;
 RegisterUser(const UserName: String; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
              RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; out Error: TGWSErrorValidate)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
     cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. El formulario de registro se puede obtener llamando a la &lt;br /&gt;
     función “LoadRegisterForm”. Esta función solo está disponible si el registro libre está permitido. &lt;br /&gt;
     Consultar la función “RegisterAllowed”.&lt;br /&gt;
&lt;br /&gt;
 LoadUser(IdSession: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Permite obtener los datos del usuario actual que inició sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Datos del usuario.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveUser(IdSession: TGWSIdentifier; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
          RegistrationData: TGWSRegistrationForm; out Error: TGWSErrorValidate)&lt;br /&gt;
 Permite modificar los datos del usuario actual.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Error:Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
     cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
==Procedimientos==&lt;br /&gt;
 LoadProcedures(IdSession: TGWSIdentifier; out Data: TGWSListRefProcedure; out Error: TGWSError)&lt;br /&gt;
 Obtiene lista de definiciones básicas de procedimientos.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Lista de definiciones básicas de procedimiento.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcedure(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; out Data: TGWSProcedure; out Error: TGWSError)&lt;br /&gt;
 Permite obtener la definición completa de un procedimiento que se indique.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento.&lt;br /&gt;
     Data: Definición completa del procedimiento.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 LoadProcesses(IdSession: TGWSIdentifier; SearchParams: TGWSSearchProcessArg; out Data: TGWSListRefProcess; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de trámites (descripción abreviada) del usuario que cumplan las condiciones indicadas &lt;br /&gt;
 en el parámetro de búsqueda.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de trámites (descripción abreviada).&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Carga un trámite completo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Contenido completo del trámite.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     Si el trámite tiene notificaciones pendientes, el sistema no permite abrir el trámite. Es necesario confirmar &lt;br /&gt;
     la recepción de las notificaciones antes de abrir el trámite, haciendo uso de las tareas &lt;br /&gt;
     “LoadProcessNotifications”, “LoadTaskSerialization” y “SendTask”.&lt;br /&gt;
&lt;br /&gt;
 LoadProcessNotifications(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; &lt;br /&gt;
                          out Data: TGWSListNotifications; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de las notificaciones pendientes del trámite. &lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Lista de notificaciones pendientes del trámite.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles: &lt;br /&gt;
     Cuando un proceso tenga notificaciones pendientes, será necesario cargar cada una de las tareas &lt;br /&gt;
     indicadas por las notificaciones, firmarlas y enviarlas para confirmar la recepción de dichas notificaciones.&lt;br /&gt;
&lt;br /&gt;
 CreateProcess(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; &lt;br /&gt;
               out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Crea un trámite basado en una definición de procedimiento. Le asigna una etiqueta al nuevo trámite creado, &lt;br /&gt;
 para facilitar la localización del mismo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento que sirve como definición del trámite a crear.&lt;br /&gt;
     Data: Proceso creado.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda eliminar un trámite, es necesario que no se haya enviado ninguna tarea asociada al mismo.&lt;br /&gt;
&lt;br /&gt;
 ArchiveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Archiva el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda archivar el trámite, es necesario que este haya finalizado.&lt;br /&gt;
&lt;br /&gt;
==Tareas de los trámites==&lt;br /&gt;
 CreateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTaskDefinition: TGWSIdentifier; out Data: TGWSTask; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Crea una tarea dentro del trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTaskDefinition: Tipo de tarea a crear.&lt;br /&gt;
     Data: Tarea creada.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; Task: TGWSTask; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios realizados en una tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Task: Tarea que se va a modificar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser guardada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 RemoveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea a eliminar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser eliminada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 LoadTaskSerialization(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; &lt;br /&gt;
                       out Data: String; out Error: TGWSError)&lt;br /&gt;
 Carga el contenido serializado de una tarea. Este contenido serializado es el que habrá de ser firmado &lt;br /&gt;
 cuando se quiera enviar la tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Data: Serialización de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 ValidateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSErrorValidateTask); &lt;br /&gt;
 Comprueba las condiciones de validación que se hayan definido sobre la tarea. Si no se cumplen alguna o algunas de las &lt;br /&gt;
 condiciones, vendrá indicado en el parámetro de salida “Error”.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 SendTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; Signature: TGSignature; &lt;br /&gt;
          out Error: TGWSErrorValidateTask)&lt;br /&gt;
 Envía la tarea al backoffice, para que continue el trámite. La tarea ha de cumplir las validaciones definidas.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Signature: Firma de la serialización de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 ResponseTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Genera una tarea de respuesta a una tarea que haya sido recibida.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadFieldValues(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; Task: TGWSTask; FieldIdentifier: TGWSIdentifier; &lt;br /&gt;
                 RowIdentifier: Integer; out Data: TGWSFieldAllowedValues; out Error: TGWSError)&lt;br /&gt;
 Carga los valores posibles de un campo en función del valor del resto de campos de la tarea. Es necesario usar esta &lt;br /&gt;
 función para aquellos campos de tipo selección que tengan valores.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Task: Tarea actual, con los valores de los campos cargados.&lt;br /&gt;
     FieldIdentifier: Indentificador del campo para el cual queremos obtener los valores.&lt;br /&gt;
     RowIdentifier: Contador de fila para indicar qué fila queremos rellenar, en caso de campos tabla.&lt;br /&gt;
     Data: Lista de valores posibles del campo.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Ficheros adjuntos de los trámites==&lt;br /&gt;
 LoadFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
          out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el contenido de un fichero que pertenezca una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 AttachFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; FileName: String; Content: TByteDynArray; &lt;br /&gt;
            out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Adjunta un nuevo fichero a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     FileName: Nombre del fichero.&lt;br /&gt;
     Content: Contenido del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Elimina un fichero que haya sido adjuntado a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles.&lt;br /&gt;
     Para que un fichero pueda ser eliminado de la tarea, la tarea no puede haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
=Api de administración=&lt;br /&gt;
&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSessionAdmin(IdAdmin: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión de administración con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdUnit: Identificador del usuario administrador que inicia sesión.&lt;br /&gt;
     Data: Identificador de la sesión.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSessionAdmin(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: String; out Error: TGWSError)&lt;br /&gt;
&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.&lt;br /&gt;
     Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
     Data: Nombre del usuario administrador.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado válido &lt;br /&gt;
     de la FNMT o DNIe. El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSessionAdmin(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 LoadOrganizations(IdSession: TGWSIdentifier; out Data: TGWSListOrganizations; out Error: TGWSError)&lt;br /&gt;
 Carga la lista de organizaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     Data: Lista de organizaciones.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadOrganization(IdSession: TGWSIdentifier; IdOrganization: TGWSIdentifier; out Data: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
&lt;br /&gt;
 Carga una organización concreta.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     IdOrganization: Identificador de la organización.&lt;br /&gt;
     Data: Datos de la organización.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 CreateOrganization(IdSession: TGWSIdentifier; const Name: String; out Data: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
 Crea una nueva organización en el sistema.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     Name: Nombre de la nueva organización.&lt;br /&gt;
     Data: Datos de la organización creada.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveOrganization(IdSession: TGWSIdentifier; Organization: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios que se realicen en una organización.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     Organización: Datos de la organización que se quiere modificar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveOrganization(IdSession: TGWSIdentifier; IdOrganization: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una organización.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     IdOrganización: Identificador de la organización que se quiere eliminar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     No se podrá eliminar una organización a la que estén adscritos usuarios. Sería necesario primero cambiar los &lt;br /&gt;
     usuarios de organización o eliminarlos.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 LoadUsers(IdSession: TGWSIdentifier; SearchParams: TGWSSearchUsersArg; out Data: TGWSListRefUsers; out Error: TGWSError)&lt;br /&gt;
 Carga una lista de  usuarios dados de alta en el sistema según los criterios de búsqueda proporcionados en los parámetros.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSessión: Identificador de la sesión.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de datos básicos de usuario.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadUserById(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Carga los datos de un usuario según un identificador proporcionado.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSessión: Identificador de la sesión.&lt;br /&gt;
 IdUser: Identificador del usuario.&lt;br /&gt;
 Data: Datos completos del usuario.&lt;br /&gt;
     Error: Código y mensaje de error&lt;br /&gt;
&lt;br /&gt;
 CreateUser(IdSession: TGWSIdentifier; const UserName: String; const FullName: String; const NIF: String; const EMail:&lt;br /&gt;
            String; Organization: TGWSIdentifier; RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; out Error: TGWSErrorValidate)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSessión: Identificador de la sesión.&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     Organization: Identificador de la organización a la que pertenence el usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
     cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. &lt;br /&gt;
&lt;br /&gt;
 SaveUserById(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; User: TGWSUser; out Error: TGWSErrorValidate)&lt;br /&gt;
 Permite modificar los datos de un usuario que ya exista.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdUser: Identificador del usuario.&lt;br /&gt;
     User: Datos del usuario a modificar.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
     cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 RemoveUser(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina un usuario registrado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdUser: Identificador del usuario.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que pueda ser eliminado un usuario, este no debe haber iniciado trámites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Tramitación electrónica]]&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5755</id>
		<title>API del Web Service STE</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5755"/>
				<updated>2010-04-06T08:44:19Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Tipos=&lt;br /&gt;
&lt;br /&gt;
==Basicos==&lt;br /&gt;
 TGArrayInteger = array of integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSSerializedDateTime = String;&lt;br /&gt;
&lt;br /&gt;
 TGWSIdentifier = String;&lt;br /&gt;
&lt;br /&gt;
 TGSignature = TByteDynArray; &lt;br /&gt;
 &lt;br /&gt;
    Array de bytes usado para enviar datos binarios (ficheros, firmas, etc.).&lt;br /&gt;
&lt;br /&gt;
==Errores==&lt;br /&gt;
 TGWSErrorCode = Integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldError = class&lt;br /&gt;
    property FieldDefinitionPath: String;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción de error en un campo. Indica el campo afectado y el error correspondiente.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldError = array of TGWSFieldError;&lt;br /&gt;
&lt;br /&gt;
 TGWSError = class&lt;br /&gt;
    property ErrorCode: TGWSErrorCode;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Error general.&lt;br /&gt;
&lt;br /&gt;
 TGWSErrorValidateTask = class(TGWSError)&lt;br /&gt;
    property FieldErrors: TGWSArrayFieldError;&lt;br /&gt;
    &lt;br /&gt;
    Error en la validación o envío de una tarea. Detalla los errores de los campos.&lt;br /&gt;
&lt;br /&gt;
==Procedimentos (definiciones)==&lt;br /&gt;
 TGWSFieldType = (ftDummy, ftBoolean, ftInteger, ftReal, ftString, ftMemo, ftDatetime, ftCurrency, ftTable);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property LabelField: String;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Section: String;&lt;br /&gt;
    property Visible: Boolean;&lt;br /&gt;
    property Editable: Boolean;&lt;br /&gt;
    property Required: Boolean;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de campo. Si es un campo tabla, incluye las definiciones de las columnas.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldDefinition = array of TGWSFieldDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldDefinition = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition; &lt;br /&gt;
&lt;br /&gt;
 TGWSTaskType = (ttStart, ttSendDocumentation, ttRequirement, ttNotification, ttResponse);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de tarea. &lt;br /&gt;
    Todo proceso ha de tener al menos una tarea de inicio (ttStart). &lt;br /&gt;
    Las tareas de envío de documentación (ttSendDocumentation) permiten añadir documentación a un trámite &lt;br /&gt;
    en cualquier momento.&lt;br /&gt;
    Las tareas de requerimiento se usan para solicitar la participación del interesado en algún momento del trámite, &lt;br /&gt;
    requiriendole para que aporte más documentación a un trámite, por medio de una tarea de respuesta (ttResponse).&lt;br /&gt;
    Las tareas de notificación sirven para informar al interesado de cualquier incidencia en el trámite. &lt;br /&gt;
    Se debe acusar recibo de este tipo de tareas para poder consultar el trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSTaskDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameTask: String;&lt;br /&gt;
    property LabelTask: String;&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property TaskType: TGWSTaskType;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de tarea. Incluye las definiciones de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTaskDefinition = array of TGWSTaskDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcedure = class&lt;br /&gt;
    property Identifier: TGWSIdentifier&lt;br /&gt;
    property NameProcedure: String&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property Group: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada del procedimento, que se usa obtener los datos fundamentales de un procedimento &lt;br /&gt;
    al cargar listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcedure = array of TGWSRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcedure = class&lt;br /&gt;
    property RefProcedures: TGWSArrayRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcedure = class(TGWSRefProcedure)&lt;br /&gt;
    property TaskDefinitions: TGWSArrayTaskDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Descripción completa del procedimiento.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 TGWSProcessStatus = (psCreated, psStarted, psFinished, psArchived, psDeleted, psAll);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar un trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayProcessStatus = array of TGWSProcessStatus;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcess = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property RefProcedure: TGWSRefProcedure;&lt;br /&gt;
    property LabelProcess: String;&lt;br /&gt;
    property Status: TGWSProcessStatus;&lt;br /&gt;
    property CreateDate: TGWSSerializedDateTime;&lt;br /&gt;
    property StartDate: TGWSSerializedDateTime;&lt;br /&gt;
    property EndDate: TGWSSerializedDateTime;&lt;br /&gt;
    property TramitationStatus: String; &lt;br /&gt;
    property TaskCount: Integer;&lt;br /&gt;
    property LastTaskName: String;&lt;br /&gt;
    property LastTaskDate: TGWSSerializedDateTime;&lt;br /&gt;
    property HasPendingTasks: Boolean read;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada de un trámite, usada para obtener los datos fundamentales de un &lt;br /&gt;
    trámite en listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcess = array of TGWSRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcess = class&lt;br /&gt;
    property RefProcesses: TGWSArrayRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcess = class(TGWSRefProcess)&lt;br /&gt;
    property Tasks: TGWSArrayTasks read FTasks write FTasks;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos del trámite, incluyendo las tareas que forman parte del mismo.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchProcessArg = class&lt;br /&gt;
    property Status: TGWSArrayProcessStatus;&lt;br /&gt;
    property Condition: String;&lt;br /&gt;
    &lt;br /&gt;
    Parámetros de búsqueda usados para indicar los criterios de búsqueda de trámites.&lt;br /&gt;
&lt;br /&gt;
==Tareas==&lt;br /&gt;
 TGWSTaskStatus = (wsTaskCreated, wsTaskSended, wsTaskReceived, wsTaskResponsed);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSTask = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property Status: TGWSTaskStatus;&lt;br /&gt;
    property CreateOrReceiveDate: TGWSSerializedDateTime;&lt;br /&gt;
    property SendOrResponseDate: TGWSSerializedDateTime;&lt;br /&gt;
    property Files: TGWSArrayRefFiles;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    property Signature: TGSignature;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una tarea. Incluye la información de los campos y los archivos adjuntos, &lt;br /&gt;
    así como la firma digital de la tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTasks = array of TGWSTask;&lt;br /&gt;
&lt;br /&gt;
==Campos==&lt;br /&gt;
 TGWSArrayValues = array of String;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldAllowedValues = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property AllowedValues: TGWSArrayValues;&lt;br /&gt;
    &lt;br /&gt;
    Listado de valores permitidos para un campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldAllowedValues = array of TGWSFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldAllowedValues = class&lt;br /&gt;
    property FieldAllowedValues: TGWSArrayFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldValue = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Value: String read FValue write FValue;&lt;br /&gt;
    property RowsAllowedValues: TGWSListFieldAllowedValues; &lt;br /&gt;
    property Rows: TGWSArrayRows;&lt;br /&gt;
    &lt;br /&gt;
    Campo. Para facilitar la operación con este tipo, se ha añadido el atributo “tipo”, &lt;br /&gt;
    que también está disponible en la definición de campo. Si el campo es de tipo tabla, &lt;br /&gt;
    incluye la información de las filas de la tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldValue = array of TGWSFieldValue;&lt;br /&gt;
&lt;br /&gt;
 TGWSRow = class&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    &lt;br /&gt;
    Fila de campos tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRows = array of TGWSRow;&lt;br /&gt;
&lt;br /&gt;
==Ficheros==&lt;br /&gt;
 TGWSRefFile = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameFile: String;&lt;br /&gt;
    property AttachDate: TGWSSerializedDateTime;&lt;br /&gt;
    &lt;br /&gt;
    Datos de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefFiles = array of TGWSRefFile;&lt;br /&gt;
&lt;br /&gt;
 TGWSFile = class(TGWSRefFile)&lt;br /&gt;
    property Content: TByteDynArray;&lt;br /&gt;
    &lt;br /&gt;
    Contenido completo de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
==Notificaciones==&lt;br /&gt;
 TGWSNotification = class&lt;br /&gt;
    property Identifier: String read FIdentifier write FIdentifier;&lt;br /&gt;
    property Name: String read FName write FName;&lt;br /&gt;
    &lt;br /&gt;
    Notificación pendiente en un trámite. Incluye el identificador de la tarea de notificación &lt;br /&gt;
    que está pendiente de acusar recibo y un nombre descriptivo para mostrar al usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayNotifications = array of TGWSNotification;&lt;br /&gt;
&lt;br /&gt;
 TGWSListNotifications = class(TRemotable)&lt;br /&gt;
    property Notifications: TGWSArrayNotifications read FNotifications write FNotifications;&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 TGWSRegistrationForm = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    &lt;br /&gt;
    Formulario de registro de un usuario. Incluye solo los campos adicionales. Los campos &lt;br /&gt;
    obligatorios (nombre, nombre completo, nif, correo electrónico), no están incluidos en el &lt;br /&gt;
    formulario. La definición de los campos de registro se describe en un fichero XML.&lt;br /&gt;
&lt;br /&gt;
 TGWSRefUser = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property UserName: String;&lt;br /&gt;
    property FullName: String;&lt;br /&gt;
    property Nif: String;&lt;br /&gt;
    property EMail: String;&lt;br /&gt;
    property IdOrganization;&lt;br /&gt;
    &lt;br /&gt;
    Datos básicos de un usuario, se usa para listados de usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefUsers = array of TGWSRefUser;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefUsers = class&lt;br /&gt;
    property RefUsers: TGWSArrayRefUsers;&lt;br /&gt;
&lt;br /&gt;
 TGWSUser = class(TGWSRefUser)&lt;br /&gt;
    property RegistrationForm: TGWSRegistrationForm;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos de un usuario, incluyendo los datos del formulario de registro.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchUsersArg = class&lt;br /&gt;
    property Condition: STring;&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 TGWSOrganization = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property Name: String read;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una organización. La organización permite agrupar los usuarios, de forma que los &lt;br /&gt;
    todos los usuarios individuales que pertenezcan a una organización tienen acceso a todos los &lt;br /&gt;
    trámites que haya iniciado cualquier miembro de la organización.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayOrganizations = array of TGWSOrganization;&lt;br /&gt;
&lt;br /&gt;
 TGWSListOrganizations = class&lt;br /&gt;
    property Organizations: TGWSArrayOrganizations;&lt;br /&gt;
&lt;br /&gt;
=API de usuario=&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSession(IdUnit: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdUnit: Identificador del usuario o centro gestor que inicia sesión.&lt;br /&gt;
         Data: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSession(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: TGWSRefUser; out Error: TGWSError)&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
         Data: Datos básicos del usuario que inició sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado &lt;br /&gt;
         válido de la FNMT o DNIe. &lt;br /&gt;
         El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSession(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 RegisterAllowed(out Data: Boolean; out Error: TGWSError)&lt;br /&gt;
 Indica si el resgistro libre de nuevos usuarios está disponible.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Verdadero si está permitido el registro libre de usuarios.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadRegisterForm(out Data: TGWSRegistrationForm; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el formulario de registro de usuarios.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Formulario de registro de usuarios.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     El formulario de registro contiene los campos adicionales a los 4 campos obligatorios que son “nombre”, “nombre completo”, &lt;br /&gt;
     “nif” y “correo electrónico”.&lt;br /&gt;
&lt;br /&gt;
 RegisterUser(const UserName: String; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
              RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; out Error: TGWSErrorValidate)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
     cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. El formulario de registro se puede obtener llamando a la &lt;br /&gt;
     función “LoadRegisterForm”. Esta función solo está disponible si el registro libre está permitido. &lt;br /&gt;
     Consultar la función “RegisterAllowed”.&lt;br /&gt;
&lt;br /&gt;
 LoadUser(IdSession: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Permite obtener los datos del usuario actual que inició sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Datos del usuario.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveUser(IdSession: TGWSIdentifier; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
          RegistrationData: TGWSRegistrationForm; out Error: TGWSErrorValidate)&lt;br /&gt;
 Permite modificar los datos del usuario actual.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Error:Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
     cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
==Procedimientos==&lt;br /&gt;
 LoadProcedures(IdSession: TGWSIdentifier; out Data: TGWSListRefProcedure; out Error: TGWSError)&lt;br /&gt;
 Obtiene lista de definiciones básicas de procedimientos.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Lista de definiciones básicas de procedimiento.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcedure(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; out Data: TGWSProcedure; out Error: TGWSError)&lt;br /&gt;
 Permite obtener la definición completa de un procedimiento que se indique.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento.&lt;br /&gt;
     Data: Definición completa del procedimiento.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 LoadProcesses(IdSession: TGWSIdentifier; SearchParams: TGWSSearchProcessArg; out Data: TGWSListRefProcess; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de trámites (descripción abreviada) del usuario que cumplan las condiciones indicadas &lt;br /&gt;
 en el parámetro de búsqueda.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de trámites (descripción abreviada).&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Carga un trámite completo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Contenido completo del trámite.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     Si el trámite tiene notificaciones pendientes, el sistema no permite abrir el trámite. Es necesario confirmar &lt;br /&gt;
     la recepción de las notificaciones antes de abrir el trámite, haciendo uso de las tareas &lt;br /&gt;
     “LoadProcessNotifications”, “LoadTaskSerialization” y “SendTask”.&lt;br /&gt;
&lt;br /&gt;
 LoadProcessNotifications(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; &lt;br /&gt;
                          out Data: TGWSListNotifications; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de las notificaciones pendientes del trámite. &lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Lista de notificaciones pendientes del trámite.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles: &lt;br /&gt;
     Cuando un proceso tenga notificaciones pendientes, será necesario cargar cada una de las tareas &lt;br /&gt;
     indicadas por las notificaciones, firmarlas y enviarlas para confirmar la recepción de dichas notificaciones.&lt;br /&gt;
&lt;br /&gt;
 CreateProcess(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; &lt;br /&gt;
               out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Crea un trámite basado en una definición de procedimiento. Le asigna una etiqueta al nuevo trámite creado, &lt;br /&gt;
 para facilitar la localización del mismo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento que sirve como definición del trámite a crear.&lt;br /&gt;
     Data: Proceso creado.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda eliminar un trámite, es necesario que no se haya enviado ninguna tarea asociada al mismo.&lt;br /&gt;
&lt;br /&gt;
 ArchiveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Archiva el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda archivar el trámite, es necesario que este haya finalizado.&lt;br /&gt;
&lt;br /&gt;
==Tareas de los trámites==&lt;br /&gt;
 CreateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTaskDefinition: TGWSIdentifier; out Data: TGWSTask; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Crea una tarea dentro del trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTaskDefinition: Tipo de tarea a crear.&lt;br /&gt;
     Data: Tarea creada.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; Task: TGWSTask; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios realizados en una tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Task: Tarea que se va a modificar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser guardada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 RemoveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea a eliminar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser eliminada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 LoadTaskSerialization(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; &lt;br /&gt;
                       out Data: String; out Error: TGWSError)&lt;br /&gt;
 Carga el contenido serializado de una tarea. Este contenido serializado es el que habrá de ser firmado &lt;br /&gt;
 cuando se quiera enviar la tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Data: Serialización de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 ValidateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSErrorValidateTask); &lt;br /&gt;
 Comprueba las condiciones de validación que se hayan definido sobre la tarea. Si no se cumplen alguna o algunas de las &lt;br /&gt;
 condiciones, vendrá indicado en el parámetro de salida “Error”.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 SendTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; Signature: TGSignature; &lt;br /&gt;
          out Error: TGWSErrorValidateTask)&lt;br /&gt;
 Envía la tarea al backoffice, para que continue el trámite. La tarea ha de cumplir las validaciones definidas.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Signature: Firma de la serialización de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 ResponseTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Genera una tarea de respuesta a una tarea que haya sido recibida.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadFieldValues(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; Task: TGWSTask; FieldIdentifier: TGWSIdentifier; &lt;br /&gt;
                 RowIdentifier: Integer; out Data: TGWSFieldAllowedValues; out Error: TGWSError)&lt;br /&gt;
 Carga los valores posibles de un campo en función del valor del resto de campos de la tarea. Es necesario usar esta &lt;br /&gt;
 función para aquellos campos de tipo selección que tengan valores.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Task: Tarea actual, con los valores de los campos cargados.&lt;br /&gt;
     FieldIdentifier: Indentificador del campo para el cual queremos obtener los valores.&lt;br /&gt;
     RowIdentifier: Contador de fila para indicar qué fila queremos rellenar, en caso de campos tabla.&lt;br /&gt;
     Data: Lista de valores posibles del campo.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Ficheros adjuntos de los trámites==&lt;br /&gt;
 LoadFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
          out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el contenido de un fichero que pertenezca una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 AttachFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; FileName: String; Content: TByteDynArray; &lt;br /&gt;
            out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Adjunta un nuevo fichero a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     FileName: Nombre del fichero.&lt;br /&gt;
     Content: Contenido del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Elimina un fichero que haya sido adjuntado a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles.&lt;br /&gt;
     Para que un fichero pueda ser eliminado de la tarea, la tarea no puede haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
=Api de administración=&lt;br /&gt;
&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSessionAdmin(IdAdmin: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión de administración con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdUnit: Identificador del usuario administrador que inicia sesión.&lt;br /&gt;
     Data: Identificador de la sesión.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSessionAdmin(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: String; out Error: TGWSError)&lt;br /&gt;
&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.&lt;br /&gt;
     Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
     Data: Nombre del usuario administrador.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado válido &lt;br /&gt;
     de la FNMT o DNIe. El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSessionAdmin(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 LoadOrganizations(IdSession: TGWSIdentifier; out Data: TGWSListOrganizations; out Error: TGWSError)&lt;br /&gt;
 Carga la lista de organizaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     Data: Lista de organizaciones.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadOrganization(IdSession: TGWSIdentifier; IdOrganization: TGWSIdentifier; out Data: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
&lt;br /&gt;
 Carga una organización concreta.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     IdOrganization: Identificador de la organización.&lt;br /&gt;
     Data: Datos de la organización.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 CreateOrganization(IdSession: TGWSIdentifier; const Name: String; out Data: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
 Crea una nueva organización en el sistema.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     Name: Nombre de la nueva organización.&lt;br /&gt;
     Data: Datos de la organización creada.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveOrganization(IdSession: TGWSIdentifier; Organization: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios que se realicen en una organización.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     Organización: Datos de la organización que se quiere modificar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveOrganization(IdSession: TGWSIdentifier; IdOrganization: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una organización.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     IdOrganización: Identificador de la organización que se quiere eliminar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     No se podrá eliminar una organización a la que estén adscritos usuarios. Sería necesario primero cambiar los &lt;br /&gt;
     usuarios de organización o eliminarlos.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 LoadUsers(IdSession: TGWSIdentifier; SearchParams: TGWSSearchUsersArg; out Data: TGWSListRefUsers; out Error: TGWSError)&lt;br /&gt;
 Carga una lista de  usuarios dados de alta en el sistema según los criterios de búsqueda proporcionados en los parámetros.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSessión: Identificador de la sesión.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de datos básicos de usuario.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadUserById(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Carga los datos de un usuario según un identificador proporcionado.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSessión: Identificador de la sesión.&lt;br /&gt;
 IdUser: Identificador del usuario.&lt;br /&gt;
 Data: Datos completos del usuario.&lt;br /&gt;
     Error: Código y mensaje de error&lt;br /&gt;
&lt;br /&gt;
 CreateUser(IdSession: TGWSIdentifier; const UserName: String; const FullName: String; const NIF: String; const EMail:&lt;br /&gt;
            String; Organization: TGWSIdentifier; RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; out Error: TGWSErrorValidate)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSessión: Identificador de la sesión.&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     Organization: Identificador de la organización a la que pertenence el usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
     cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. &lt;br /&gt;
&lt;br /&gt;
 SaveUserById(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; User: TGWSUser; out Error: TGWSErrorValidate)&lt;br /&gt;
 Permite modificar los datos de un usuario que ya exista.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdUser: Identificador del usuario.&lt;br /&gt;
     User: Datos del usuario a modificar.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
     cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 RemoveUser(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina un usuario registrado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdUser: Identificador del usuario.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que pueda ser eliminado un usuario, este no debe haber iniciado trámites.&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5754</id>
		<title>API del Web Service STE</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5754"/>
				<updated>2010-04-06T08:42:50Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: /* Usuarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Tipos=&lt;br /&gt;
&lt;br /&gt;
==Basicos==&lt;br /&gt;
 TGArrayInteger = array of integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSSerializedDateTime = String;&lt;br /&gt;
&lt;br /&gt;
 TGWSIdentifier = String;&lt;br /&gt;
&lt;br /&gt;
 TGSignature = TByteDynArray; &lt;br /&gt;
 &lt;br /&gt;
    Array de bytes usado para enviar datos binarios (ficheros, firmas, etc.).&lt;br /&gt;
&lt;br /&gt;
==Errores==&lt;br /&gt;
 TGWSErrorCode = Integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldError = class&lt;br /&gt;
    property FieldDefinitionPath: String;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción de error en un campo. Indica el campo afectado y el error correspondiente.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldError = array of TGWSFieldError;&lt;br /&gt;
&lt;br /&gt;
 TGWSError = class&lt;br /&gt;
    property ErrorCode: TGWSErrorCode;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Error general.&lt;br /&gt;
&lt;br /&gt;
 TGWSErrorValidateTask = class(TGWSError)&lt;br /&gt;
    property FieldErrors: TGWSArrayFieldError;&lt;br /&gt;
    &lt;br /&gt;
    Error en la validación o envío de una tarea. Detalla los errores de los campos.&lt;br /&gt;
&lt;br /&gt;
==Procedimentos (definiciones)==&lt;br /&gt;
 TGWSFieldType = (ftDummy, ftBoolean, ftInteger, ftReal, ftString, ftMemo, ftDatetime, ftCurrency, ftTable);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property LabelField: String;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Section: String;&lt;br /&gt;
    property Visible: Boolean;&lt;br /&gt;
    property Editable: Boolean;&lt;br /&gt;
    property Required: Boolean;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de campo. Si es un campo tabla, incluye las definiciones de las columnas.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldDefinition = array of TGWSFieldDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldDefinition = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition; &lt;br /&gt;
&lt;br /&gt;
 TGWSTaskType = (ttStart, ttSendDocumentation, ttRequirement, ttNotification, ttResponse);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de tarea. &lt;br /&gt;
    Todo proceso ha de tener al menos una tarea de inicio (ttStart). &lt;br /&gt;
    Las tareas de envío de documentación (ttSendDocumentation) permiten añadir documentación a un trámite &lt;br /&gt;
    en cualquier momento.&lt;br /&gt;
    Las tareas de requerimiento se usan para solicitar la participación del interesado en algún momento del trámite, &lt;br /&gt;
    requiriendole para que aporte más documentación a un trámite, por medio de una tarea de respuesta (ttResponse).&lt;br /&gt;
    Las tareas de notificación sirven para informar al interesado de cualquier incidencia en el trámite. &lt;br /&gt;
    Se debe acusar recibo de este tipo de tareas para poder consultar el trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSTaskDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameTask: String;&lt;br /&gt;
    property LabelTask: String;&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property TaskType: TGWSTaskType;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de tarea. Incluye las definiciones de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTaskDefinition = array of TGWSTaskDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcedure = class&lt;br /&gt;
    property Identifier: TGWSIdentifier&lt;br /&gt;
    property NameProcedure: String&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property Group: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada del procedimento, que se usa obtener los datos fundamentales de un procedimento &lt;br /&gt;
    al cargar listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcedure = array of TGWSRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcedure = class&lt;br /&gt;
    property RefProcedures: TGWSArrayRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcedure = class(TGWSRefProcedure)&lt;br /&gt;
    property TaskDefinitions: TGWSArrayTaskDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Descripción completa del procedimiento.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 TGWSProcessStatus = (psCreated, psStarted, psFinished, psArchived, psDeleted, psAll);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar un trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayProcessStatus = array of TGWSProcessStatus;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcess = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property RefProcedure: TGWSRefProcedure;&lt;br /&gt;
    property LabelProcess: String;&lt;br /&gt;
    property Status: TGWSProcessStatus;&lt;br /&gt;
    property CreateDate: TGWSSerializedDateTime;&lt;br /&gt;
    property StartDate: TGWSSerializedDateTime;&lt;br /&gt;
    property EndDate: TGWSSerializedDateTime;&lt;br /&gt;
    property TramitationStatus: String; &lt;br /&gt;
    property TaskCount: Integer;&lt;br /&gt;
    property LastTaskName: String;&lt;br /&gt;
    property LastTaskDate: TGWSSerializedDateTime;&lt;br /&gt;
    property HasPendingTasks: Boolean read;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada de un trámite, usada para obtener los datos fundamentales de un &lt;br /&gt;
    trámite en listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcess = array of TGWSRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcess = class&lt;br /&gt;
    property RefProcesses: TGWSArrayRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcess = class(TGWSRefProcess)&lt;br /&gt;
    property Tasks: TGWSArrayTasks read FTasks write FTasks;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos del trámite, incluyendo las tareas que forman parte del mismo.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchProcessArg = class&lt;br /&gt;
    property Status: TGWSArrayProcessStatus;&lt;br /&gt;
    property Condition: String;&lt;br /&gt;
    &lt;br /&gt;
    Parámetros de búsqueda usados para indicar los criterios de búsqueda de trámites.&lt;br /&gt;
&lt;br /&gt;
==Tareas==&lt;br /&gt;
 TGWSTaskStatus = (wsTaskCreated, wsTaskSended, wsTaskReceived, wsTaskResponsed);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSTask = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property Status: TGWSTaskStatus;&lt;br /&gt;
    property CreateOrReceiveDate: TGWSSerializedDateTime;&lt;br /&gt;
    property SendOrResponseDate: TGWSSerializedDateTime;&lt;br /&gt;
    property Files: TGWSArrayRefFiles;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    property Signature: TGSignature;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una tarea. Incluye la información de los campos y los archivos adjuntos, &lt;br /&gt;
    así como la firma digital de la tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTasks = array of TGWSTask;&lt;br /&gt;
&lt;br /&gt;
==Campos==&lt;br /&gt;
 TGWSArrayValues = array of String;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldAllowedValues = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property AllowedValues: TGWSArrayValues;&lt;br /&gt;
    &lt;br /&gt;
    Listado de valores permitidos para un campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldAllowedValues = array of TGWSFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldAllowedValues = class&lt;br /&gt;
    property FieldAllowedValues: TGWSArrayFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldValue = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Value: String read FValue write FValue;&lt;br /&gt;
    property RowsAllowedValues: TGWSListFieldAllowedValues; &lt;br /&gt;
    property Rows: TGWSArrayRows;&lt;br /&gt;
    &lt;br /&gt;
    Campo. Para facilitar la operación con este tipo, se ha añadido el atributo “tipo”, &lt;br /&gt;
    que también está disponible en la definición de campo. Si el campo es de tipo tabla, &lt;br /&gt;
    incluye la información de las filas de la tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldValue = array of TGWSFieldValue;&lt;br /&gt;
&lt;br /&gt;
 TGWSRow = class&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    &lt;br /&gt;
    Fila de campos tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRows = array of TGWSRow;&lt;br /&gt;
&lt;br /&gt;
==Ficheros==&lt;br /&gt;
 TGWSRefFile = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameFile: String;&lt;br /&gt;
    property AttachDate: TGWSSerializedDateTime;&lt;br /&gt;
    &lt;br /&gt;
    Datos de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefFiles = array of TGWSRefFile;&lt;br /&gt;
&lt;br /&gt;
 TGWSFile = class(TGWSRefFile)&lt;br /&gt;
    property Content: TByteDynArray;&lt;br /&gt;
    &lt;br /&gt;
    Contenido completo de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
==Notificaciones==&lt;br /&gt;
 TGWSNotification = class&lt;br /&gt;
    property Identifier: String read FIdentifier write FIdentifier;&lt;br /&gt;
    property Name: String read FName write FName;&lt;br /&gt;
    &lt;br /&gt;
    Notificación pendiente en un trámite. Incluye el identificador de la tarea de notificación &lt;br /&gt;
    que está pendiente de acusar recibo y un nombre descriptivo para mostrar al usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayNotifications = array of TGWSNotification;&lt;br /&gt;
&lt;br /&gt;
 TGWSListNotifications = class(TRemotable)&lt;br /&gt;
    property Notifications: TGWSArrayNotifications read FNotifications write FNotifications;&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 TGWSRegistrationForm = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    &lt;br /&gt;
    Formulario de registro de un usuario. Incluye solo los campos adicionales. Los campos &lt;br /&gt;
    obligatorios (nombre, nombre completo, nif, correo electrónico), no están incluidos en el &lt;br /&gt;
    formulario. La definición de los campos de registro se describe en un fichero XML.&lt;br /&gt;
&lt;br /&gt;
 TGWSRefUser = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property UserName: String;&lt;br /&gt;
    property FullName: String;&lt;br /&gt;
    property Nif: String;&lt;br /&gt;
    property EMail: String;&lt;br /&gt;
    property IdOrganization;&lt;br /&gt;
    &lt;br /&gt;
    Datos básicos de un usuario, se usa para listados de usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefUsers = array of TGWSRefUser;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefUsers = class&lt;br /&gt;
    property RefUsers: TGWSArrayRefUsers;&lt;br /&gt;
&lt;br /&gt;
 TGWSUser = class(TGWSRefUser)&lt;br /&gt;
    property RegistrationForm: TGWSRegistrationForm;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos de un usuario, incluyendo los datos del formulario de registro.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchUsersArg = class&lt;br /&gt;
    property Condition: STring;&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 TGWSOrganization = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property Name: String read;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una organización. La organización permite agrupar los usuarios, de forma que los &lt;br /&gt;
    todos los usuarios individuales que pertenezcan a una organización tienen acceso a todos los &lt;br /&gt;
    trámites que haya iniciado cualquier miembro de la organización.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayOrganizations = array of TGWSOrganization;&lt;br /&gt;
&lt;br /&gt;
 TGWSListOrganizations = class&lt;br /&gt;
    property Organizations: TGWSArrayOrganizations;&lt;br /&gt;
&lt;br /&gt;
=API de usuario=&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSession(IdUnit: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdUnit: Identificador del usuario o centro gestor que inicia sesión.&lt;br /&gt;
         Data: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSession(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: TGWSRefUser; out Error: TGWSError)&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
         Data: Datos básicos del usuario que inició sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado &lt;br /&gt;
         válido de la FNMT o DNIe. &lt;br /&gt;
         El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSession(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 RegisterAllowed(out Data: Boolean; out Error: TGWSError)&lt;br /&gt;
 Indica si el resgistro libre de nuevos usuarios está disponible.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Verdadero si está permitido el registro libre de usuarios.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadRegisterForm(out Data: TGWSRegistrationForm; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el formulario de registro de usuarios.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Formulario de registro de usuarios.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     El formulario de registro contiene los campos adicionales a los 4 campos obligatorios que son “nombre”, “nombre completo”, &lt;br /&gt;
     “nif” y “correo electrónico”.&lt;br /&gt;
&lt;br /&gt;
 RegisterUser(const UserName: String; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
              RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; out Error: TGWSErrorValidate)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
     cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. El formulario de registro se puede obtener llamando a la &lt;br /&gt;
     función “LoadRegisterForm”. Esta función solo está disponible si el registro libre está permitido. &lt;br /&gt;
     Consultar la función “RegisterAllowed”.&lt;br /&gt;
&lt;br /&gt;
 LoadUser(IdSession: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Permite obtener los datos del usuario actual que inició sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Datos del usuario.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveUser(IdSession: TGWSIdentifier; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
          RegistrationData: TGWSRegistrationForm; out Error: TGWSErrorValidate)&lt;br /&gt;
 Permite modificar los datos del usuario actual.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Error:Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
     cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
==Procedimientos==&lt;br /&gt;
 LoadProcedures(IdSession: TGWSIdentifier; out Data: TGWSListRefProcedure; out Error: TGWSError)&lt;br /&gt;
 Obtiene lista de definiciones básicas de procedimientos.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Lista de definiciones básicas de procedimiento.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcedure(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; out Data: TGWSProcedure; out Error: TGWSError)&lt;br /&gt;
 Permite obtener la definición completa de un procedimiento que se indique.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento.&lt;br /&gt;
     Data: Definición completa del procedimiento.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 LoadProcesses(IdSession: TGWSIdentifier; SearchParams: TGWSSearchProcessArg; out Data: TGWSListRefProcess; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de trámites (descripción abreviada) del usuario que cumplan las condiciones indicadas &lt;br /&gt;
 en el parámetro de búsqueda.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de trámites (descripción abreviada).&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Carga un trámite completo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Contenido completo del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     Si el trámite tiene notificaciones pendientes, el sistema no permite abrir el trámite. Es necesario confirmar &lt;br /&gt;
     la recepción de las notificaciones antes de abrir el trámite, haciendo uso de las tareas &lt;br /&gt;
     “LoadProcessNotifications”, “LoadTaskSerialization” y “SendTask”.&lt;br /&gt;
&lt;br /&gt;
 LoadProcessNotifications(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; &lt;br /&gt;
                          out Data: TGWSListNotifications; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de las notificaciones pendientes del trámite. &lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Lista de notificaciones pendientes del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles: &lt;br /&gt;
     Cuando un proceso tenga notificaciones pendientes, será necesario cargar cada una de las tareas &lt;br /&gt;
     indicadas por las notificaciones, firmarlas y enviarlas para confirmar la recepción de dichas notificaciones.&lt;br /&gt;
&lt;br /&gt;
 CreateProcess(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; &lt;br /&gt;
               out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Crea un trámite basado en una definición de procedimiento. Le asigna una etiqueta al nuevo trámite creado, &lt;br /&gt;
 para facilitar la localización del mismo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento que sirve como definición del trámite a crear.&lt;br /&gt;
     Data: Proceso creado.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda eliminar un trámite, es necesario que no se haya enviado ninguna tarea asociada al mismo.&lt;br /&gt;
&lt;br /&gt;
 ArchiveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Archiva el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda archivar el trámite, es necesario que este haya finalizado.&lt;br /&gt;
&lt;br /&gt;
==Tareas de los trámites==&lt;br /&gt;
 CreateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTaskDefinition: TGWSIdentifier; out Data: TGWSTask; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Crea una tarea dentro del trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTaskDefinition: Tipo de tarea a crear.&lt;br /&gt;
     Data: Tarea creada.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; Task: TGWSTask; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios realizados en una tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Task: Tarea que se va a modificar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser guardada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 RemoveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea a eliminar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser eliminada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 LoadTaskSerialization(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; &lt;br /&gt;
                       out Data: String; out Error: TGWSError)&lt;br /&gt;
 Carga el contenido serializado de una tarea. Este contenido serializado es el que habrá de ser firmado &lt;br /&gt;
 cuando se quiera enviar la tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Data: Serialización de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 ValidateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSErrorValidateTask); &lt;br /&gt;
 Comprueba las condiciones de validación que se hayan definido sobre la tarea. Si no se cumplen alguna o algunas de las &lt;br /&gt;
 condiciones, vendrá indicado en el parámetro de salida “Error”.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 SendTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; Signature: TGSignature; &lt;br /&gt;
          out Error: TGWSErrorValidateTask)&lt;br /&gt;
 Envía la tarea al backoffice, para que continue el trámite. La tarea ha de cumplir las validaciones definidas.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Signature: Firma de la serialización de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 ResponseTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Genera una tarea de respuesta a una tarea que haya sido recibida.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadFieldValues(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; Task: TGWSTask; FieldIdentifier: TGWSIdentifier; &lt;br /&gt;
                 RowIdentifier: Integer; out Data: TGWSFieldAllowedValues; out Error: TGWSError)&lt;br /&gt;
 Carga los valores posibles de un campo en función del valor del resto de campos de la tarea. Es necesario usar esta &lt;br /&gt;
 función para aquellos campos de tipo selección que tengan valores.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Task: Tarea actual, con los valores de los campos cargados.&lt;br /&gt;
     FieldIdentifier: Indentificador del campo para el cual queremos obtener los valores.&lt;br /&gt;
     RowIdentifier: Contador de fila para indicar qué fila queremos rellenar, en caso de campos tabla.&lt;br /&gt;
     Data: Lista de valores posibles del campo.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Ficheros adjuntos de los trámites==&lt;br /&gt;
 LoadFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
          out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el contenido de un fichero que pertenezca una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 AttachFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; FileName: String; Content: TByteDynArray; &lt;br /&gt;
            out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Adjunta un nuevo fichero a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     FileName: Nombre del fichero.&lt;br /&gt;
     Content: Contenido del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Elimina un fichero que haya sido adjuntado a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles.&lt;br /&gt;
     Para que un fichero pueda ser eliminado de la tarea, la tarea no puede haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
=Api de administración=&lt;br /&gt;
&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSessionAdmin(IdAdmin: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión de administración con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdUnit: Identificador del usuario administrador que inicia sesión.&lt;br /&gt;
     Data: Identificador de la sesión.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSessionAdmin(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: String; out Error: TGWSError)&lt;br /&gt;
&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.&lt;br /&gt;
     Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
     Data: Nombre del usuario administrador.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado válido &lt;br /&gt;
     de la FNMT o DNIe. El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSessionAdmin(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 LoadOrganizations(IdSession: TGWSIdentifier; out Data: TGWSListOrganizations; out Error: TGWSError)&lt;br /&gt;
 Carga la lista de organizaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     Data: Lista de organizaciones.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadOrganization(IdSession: TGWSIdentifier; IdOrganization: TGWSIdentifier; out Data: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
&lt;br /&gt;
 Carga una organización concreta.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     IdOrganization: Identificador de la organización.&lt;br /&gt;
     Data: Datos de la organización.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 CreateOrganization(IdSession: TGWSIdentifier; const Name: String; out Data: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
 Crea una nueva organización en el sistema.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     Name: Nombre de la nueva organización.&lt;br /&gt;
     Data: Datos de la organización creada.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveOrganization(IdSession: TGWSIdentifier; Organization: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios que se realicen en una organización.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     Organización: Datos de la organización que se quiere modificar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveOrganization(IdSession: TGWSIdentifier; IdOrganization: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una organización.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     IdOrganización: Identificador de la organización que se quiere eliminar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     No se podrá eliminar una organización a la que estén adscritos usuarios. Sería necesario primero cambiar los &lt;br /&gt;
     usuarios de organización o eliminarlos.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 LoadUsers(IdSession: TGWSIdentifier; SearchParams: TGWSSearchUsersArg; out Data: TGWSListRefUsers; out Error: TGWSError)&lt;br /&gt;
 Carga una lista de  usuarios dados de alta en el sistema según los criterios de búsqueda proporcionados en los parámetros.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSessión: Identificador de la sesión.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de datos básicos de usuario.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadUserById(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Carga los datos de un usuario según un identificador proporcionado.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSessión: Identificador de la sesión.&lt;br /&gt;
 IdUser: Identificador del usuario.&lt;br /&gt;
 Data: Datos completos del usuario.&lt;br /&gt;
 Error: Código y mensaje de error&lt;br /&gt;
&lt;br /&gt;
 CreateUser(IdSession: TGWSIdentifier; const UserName: String; const FullName: String; const NIF: String; const EMail:&lt;br /&gt;
            String; Organization: TGWSIdentifier; RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSessión: Identificador de la sesión.&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     Organization: Identificador de la organización a la que pertenence el usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. &lt;br /&gt;
&lt;br /&gt;
 SaveUserById(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; User: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Permite modificar los datos de un usuario que ya exista.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdUser: Identificador del usuario.&lt;br /&gt;
     User: Datos del usuario a modificar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveUser(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina un usuario registrado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdUser: Identificador del usuario.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que pueda ser eliminado un usuario, este no debe haber iniciado trámites.&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5753</id>
		<title>API del Web Service STE</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5753"/>
				<updated>2010-04-06T08:39:38Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: /* Tareas de los trámites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Tipos=&lt;br /&gt;
&lt;br /&gt;
==Basicos==&lt;br /&gt;
 TGArrayInteger = array of integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSSerializedDateTime = String;&lt;br /&gt;
&lt;br /&gt;
 TGWSIdentifier = String;&lt;br /&gt;
&lt;br /&gt;
 TGSignature = TByteDynArray; &lt;br /&gt;
 &lt;br /&gt;
    Array de bytes usado para enviar datos binarios (ficheros, firmas, etc.).&lt;br /&gt;
&lt;br /&gt;
==Errores==&lt;br /&gt;
 TGWSErrorCode = Integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldError = class&lt;br /&gt;
    property FieldDefinitionPath: String;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción de error en un campo. Indica el campo afectado y el error correspondiente.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldError = array of TGWSFieldError;&lt;br /&gt;
&lt;br /&gt;
 TGWSError = class&lt;br /&gt;
    property ErrorCode: TGWSErrorCode;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Error general.&lt;br /&gt;
&lt;br /&gt;
 TGWSErrorValidateTask = class(TGWSError)&lt;br /&gt;
    property FieldErrors: TGWSArrayFieldError;&lt;br /&gt;
    &lt;br /&gt;
    Error en la validación o envío de una tarea. Detalla los errores de los campos.&lt;br /&gt;
&lt;br /&gt;
==Procedimentos (definiciones)==&lt;br /&gt;
 TGWSFieldType = (ftDummy, ftBoolean, ftInteger, ftReal, ftString, ftMemo, ftDatetime, ftCurrency, ftTable);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property LabelField: String;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Section: String;&lt;br /&gt;
    property Visible: Boolean;&lt;br /&gt;
    property Editable: Boolean;&lt;br /&gt;
    property Required: Boolean;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de campo. Si es un campo tabla, incluye las definiciones de las columnas.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldDefinition = array of TGWSFieldDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldDefinition = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition; &lt;br /&gt;
&lt;br /&gt;
 TGWSTaskType = (ttStart, ttSendDocumentation, ttRequirement, ttNotification, ttResponse);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de tarea. &lt;br /&gt;
    Todo proceso ha de tener al menos una tarea de inicio (ttStart). &lt;br /&gt;
    Las tareas de envío de documentación (ttSendDocumentation) permiten añadir documentación a un trámite &lt;br /&gt;
    en cualquier momento.&lt;br /&gt;
    Las tareas de requerimiento se usan para solicitar la participación del interesado en algún momento del trámite, &lt;br /&gt;
    requiriendole para que aporte más documentación a un trámite, por medio de una tarea de respuesta (ttResponse).&lt;br /&gt;
    Las tareas de notificación sirven para informar al interesado de cualquier incidencia en el trámite. &lt;br /&gt;
    Se debe acusar recibo de este tipo de tareas para poder consultar el trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSTaskDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameTask: String;&lt;br /&gt;
    property LabelTask: String;&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property TaskType: TGWSTaskType;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de tarea. Incluye las definiciones de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTaskDefinition = array of TGWSTaskDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcedure = class&lt;br /&gt;
    property Identifier: TGWSIdentifier&lt;br /&gt;
    property NameProcedure: String&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property Group: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada del procedimento, que se usa obtener los datos fundamentales de un procedimento &lt;br /&gt;
    al cargar listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcedure = array of TGWSRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcedure = class&lt;br /&gt;
    property RefProcedures: TGWSArrayRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcedure = class(TGWSRefProcedure)&lt;br /&gt;
    property TaskDefinitions: TGWSArrayTaskDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Descripción completa del procedimiento.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 TGWSProcessStatus = (psCreated, psStarted, psFinished, psArchived, psDeleted, psAll);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar un trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayProcessStatus = array of TGWSProcessStatus;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcess = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property RefProcedure: TGWSRefProcedure;&lt;br /&gt;
    property LabelProcess: String;&lt;br /&gt;
    property Status: TGWSProcessStatus;&lt;br /&gt;
    property CreateDate: TGWSSerializedDateTime;&lt;br /&gt;
    property StartDate: TGWSSerializedDateTime;&lt;br /&gt;
    property EndDate: TGWSSerializedDateTime;&lt;br /&gt;
    property TramitationStatus: String; &lt;br /&gt;
    property TaskCount: Integer;&lt;br /&gt;
    property LastTaskName: String;&lt;br /&gt;
    property LastTaskDate: TGWSSerializedDateTime;&lt;br /&gt;
    property HasPendingTasks: Boolean read;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada de un trámite, usada para obtener los datos fundamentales de un &lt;br /&gt;
    trámite en listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcess = array of TGWSRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcess = class&lt;br /&gt;
    property RefProcesses: TGWSArrayRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcess = class(TGWSRefProcess)&lt;br /&gt;
    property Tasks: TGWSArrayTasks read FTasks write FTasks;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos del trámite, incluyendo las tareas que forman parte del mismo.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchProcessArg = class&lt;br /&gt;
    property Status: TGWSArrayProcessStatus;&lt;br /&gt;
    property Condition: String;&lt;br /&gt;
    &lt;br /&gt;
    Parámetros de búsqueda usados para indicar los criterios de búsqueda de trámites.&lt;br /&gt;
&lt;br /&gt;
==Tareas==&lt;br /&gt;
 TGWSTaskStatus = (wsTaskCreated, wsTaskSended, wsTaskReceived, wsTaskResponsed);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSTask = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property Status: TGWSTaskStatus;&lt;br /&gt;
    property CreateOrReceiveDate: TGWSSerializedDateTime;&lt;br /&gt;
    property SendOrResponseDate: TGWSSerializedDateTime;&lt;br /&gt;
    property Files: TGWSArrayRefFiles;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    property Signature: TGSignature;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una tarea. Incluye la información de los campos y los archivos adjuntos, &lt;br /&gt;
    así como la firma digital de la tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTasks = array of TGWSTask;&lt;br /&gt;
&lt;br /&gt;
==Campos==&lt;br /&gt;
 TGWSArrayValues = array of String;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldAllowedValues = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property AllowedValues: TGWSArrayValues;&lt;br /&gt;
    &lt;br /&gt;
    Listado de valores permitidos para un campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldAllowedValues = array of TGWSFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldAllowedValues = class&lt;br /&gt;
    property FieldAllowedValues: TGWSArrayFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldValue = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Value: String read FValue write FValue;&lt;br /&gt;
    property RowsAllowedValues: TGWSListFieldAllowedValues; &lt;br /&gt;
    property Rows: TGWSArrayRows;&lt;br /&gt;
    &lt;br /&gt;
    Campo. Para facilitar la operación con este tipo, se ha añadido el atributo “tipo”, &lt;br /&gt;
    que también está disponible en la definición de campo. Si el campo es de tipo tabla, &lt;br /&gt;
    incluye la información de las filas de la tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldValue = array of TGWSFieldValue;&lt;br /&gt;
&lt;br /&gt;
 TGWSRow = class&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    &lt;br /&gt;
    Fila de campos tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRows = array of TGWSRow;&lt;br /&gt;
&lt;br /&gt;
==Ficheros==&lt;br /&gt;
 TGWSRefFile = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameFile: String;&lt;br /&gt;
    property AttachDate: TGWSSerializedDateTime;&lt;br /&gt;
    &lt;br /&gt;
    Datos de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefFiles = array of TGWSRefFile;&lt;br /&gt;
&lt;br /&gt;
 TGWSFile = class(TGWSRefFile)&lt;br /&gt;
    property Content: TByteDynArray;&lt;br /&gt;
    &lt;br /&gt;
    Contenido completo de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
==Notificaciones==&lt;br /&gt;
 TGWSNotification = class&lt;br /&gt;
    property Identifier: String read FIdentifier write FIdentifier;&lt;br /&gt;
    property Name: String read FName write FName;&lt;br /&gt;
    &lt;br /&gt;
    Notificación pendiente en un trámite. Incluye el identificador de la tarea de notificación &lt;br /&gt;
    que está pendiente de acusar recibo y un nombre descriptivo para mostrar al usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayNotifications = array of TGWSNotification;&lt;br /&gt;
&lt;br /&gt;
 TGWSListNotifications = class(TRemotable)&lt;br /&gt;
    property Notifications: TGWSArrayNotifications read FNotifications write FNotifications;&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 TGWSRegistrationForm = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    &lt;br /&gt;
    Formulario de registro de un usuario. Incluye solo los campos adicionales. Los campos &lt;br /&gt;
    obligatorios (nombre, nombre completo, nif, correo electrónico), no están incluidos en el &lt;br /&gt;
    formulario. La definición de los campos de registro se describe en un fichero XML.&lt;br /&gt;
&lt;br /&gt;
 TGWSRefUser = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property UserName: String;&lt;br /&gt;
    property FullName: String;&lt;br /&gt;
    property Nif: String;&lt;br /&gt;
    property EMail: String;&lt;br /&gt;
    property IdOrganization;&lt;br /&gt;
    &lt;br /&gt;
    Datos básicos de un usuario, se usa para listados de usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefUsers = array of TGWSRefUser;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefUsers = class&lt;br /&gt;
    property RefUsers: TGWSArrayRefUsers;&lt;br /&gt;
&lt;br /&gt;
 TGWSUser = class(TGWSRefUser)&lt;br /&gt;
    property RegistrationForm: TGWSRegistrationForm;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos de un usuario, incluyendo los datos del formulario de registro.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchUsersArg = class&lt;br /&gt;
    property Condition: STring;&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 TGWSOrganization = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property Name: String read;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una organización. La organización permite agrupar los usuarios, de forma que los &lt;br /&gt;
    todos los usuarios individuales que pertenezcan a una organización tienen acceso a todos los &lt;br /&gt;
    trámites que haya iniciado cualquier miembro de la organización.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayOrganizations = array of TGWSOrganization;&lt;br /&gt;
&lt;br /&gt;
 TGWSListOrganizations = class&lt;br /&gt;
    property Organizations: TGWSArrayOrganizations;&lt;br /&gt;
&lt;br /&gt;
=API de usuario=&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSession(IdUnit: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdUnit: Identificador del usuario o centro gestor que inicia sesión.&lt;br /&gt;
         Data: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSession(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: TGWSRefUser; out Error: TGWSError)&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
         Data: Datos básicos del usuario que inició sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado &lt;br /&gt;
         válido de la FNMT o DNIe. &lt;br /&gt;
         El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSession(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 RegisterAllowed(out Data: Boolean; out Error: TGWSError)&lt;br /&gt;
 Indica si el resgistro libre de nuevos usuarios está disponible.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Verdadero si está permitido el registro libre de usuarios.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadRegisterForm(out Data: TGWSRegistrationForm; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el formulario de registro de usuarios.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Formulario de registro de usuarios.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     El formulario de registro contiene los campos adicionales a los 4 campos obligatorios que son “nombre”, “nombre completo”, &lt;br /&gt;
     “nif” y “correo electrónico”.&lt;br /&gt;
&lt;br /&gt;
 RegisterUser(const UserName: String; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
              RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. El formulario de registro se puede obtener llamando a la &lt;br /&gt;
     función “LoadRegisterForm”. Esta función solo está disponible si el registro libre está permitido. &lt;br /&gt;
     Consultar la función “RegisterAllowed”.&lt;br /&gt;
&lt;br /&gt;
 LoadUser(IdSession: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Permite obtener los datos del usuario actual que inició sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Datos del usuario.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveUser(IdSession: TGWSIdentifier; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
          RegistrationData: TGWSRegistrationForm; out Error: TGWSError)&lt;br /&gt;
 Permite modificar los datos del usuario actual.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Procedimientos==&lt;br /&gt;
 LoadProcedures(IdSession: TGWSIdentifier; out Data: TGWSListRefProcedure; out Error: TGWSError)&lt;br /&gt;
 Obtiene lista de definiciones básicas de procedimientos.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Lista de definiciones básicas de procedimiento.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcedure(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; out Data: TGWSProcedure; out Error: TGWSError)&lt;br /&gt;
 Permite obtener la definición completa de un procedimiento que se indique.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento.&lt;br /&gt;
     Data: Definición completa del procedimiento.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 LoadProcesses(IdSession: TGWSIdentifier; SearchParams: TGWSSearchProcessArg; out Data: TGWSListRefProcess; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de trámites (descripción abreviada) del usuario que cumplan las condiciones indicadas &lt;br /&gt;
 en el parámetro de búsqueda.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de trámites (descripción abreviada).&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Carga un trámite completo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Contenido completo del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     Si el trámite tiene notificaciones pendientes, el sistema no permite abrir el trámite. Es necesario confirmar &lt;br /&gt;
     la recepción de las notificaciones antes de abrir el trámite, haciendo uso de las tareas &lt;br /&gt;
     “LoadProcessNotifications”, “LoadTaskSerialization” y “SendTask”.&lt;br /&gt;
&lt;br /&gt;
 LoadProcessNotifications(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; &lt;br /&gt;
                          out Data: TGWSListNotifications; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de las notificaciones pendientes del trámite. &lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Lista de notificaciones pendientes del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles: &lt;br /&gt;
     Cuando un proceso tenga notificaciones pendientes, será necesario cargar cada una de las tareas &lt;br /&gt;
     indicadas por las notificaciones, firmarlas y enviarlas para confirmar la recepción de dichas notificaciones.&lt;br /&gt;
&lt;br /&gt;
 CreateProcess(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; &lt;br /&gt;
               out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Crea un trámite basado en una definición de procedimiento. Le asigna una etiqueta al nuevo trámite creado, &lt;br /&gt;
 para facilitar la localización del mismo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento que sirve como definición del trámite a crear.&lt;br /&gt;
     Data: Proceso creado.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda eliminar un trámite, es necesario que no se haya enviado ninguna tarea asociada al mismo.&lt;br /&gt;
&lt;br /&gt;
 ArchiveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Archiva el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda archivar el trámite, es necesario que este haya finalizado.&lt;br /&gt;
&lt;br /&gt;
==Tareas de los trámites==&lt;br /&gt;
 CreateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTaskDefinition: TGWSIdentifier; out Data: TGWSTask; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Crea una tarea dentro del trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTaskDefinition: Tipo de tarea a crear.&lt;br /&gt;
     Data: Tarea creada.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; Task: TGWSTask; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios realizados en una tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Task: Tarea que se va a modificar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser guardada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 RemoveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea a eliminar.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser eliminada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 LoadTaskSerialization(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; &lt;br /&gt;
                       out Data: String; out Error: TGWSError)&lt;br /&gt;
 Carga el contenido serializado de una tarea. Este contenido serializado es el que habrá de ser firmado &lt;br /&gt;
 cuando se quiera enviar la tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Data: Serialización de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 ValidateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSErrorValidateTask); &lt;br /&gt;
 Comprueba las condiciones de validación que se hayan definido sobre la tarea. Si no se cumplen alguna o algunas de las &lt;br /&gt;
 condiciones, vendrá indicado en el parámetro de salida “Error”.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 SendTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; Signature: TGSignature; &lt;br /&gt;
          out Error: TGWSErrorValidateTask)&lt;br /&gt;
 Envía la tarea al backoffice, para que continue el trámite. La tarea ha de cumplir las validaciones definidas.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Signature: Firma de la serialización de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 ResponseTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Genera una tarea de respuesta a una tarea que haya sido recibida.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadFieldValues(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; Task: TGWSTask; FieldIdentifier: TGWSIdentifier; &lt;br /&gt;
                 RowIdentifier: Integer; out Data: TGWSFieldAllowedValues; out Error: TGWSError)&lt;br /&gt;
 Carga los valores posibles de un campo en función del valor del resto de campos de la tarea. Es necesario usar esta &lt;br /&gt;
 función para aquellos campos de tipo selección que tengan valores.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Task: Tarea actual, con los valores de los campos cargados.&lt;br /&gt;
     FieldIdentifier: Indentificador del campo para el cual queremos obtener los valores.&lt;br /&gt;
     RowIdentifier: Contador de fila para indicar qué fila queremos rellenar, en caso de campos tabla.&lt;br /&gt;
     Data: Lista de valores posibles del campo.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Ficheros adjuntos de los trámites==&lt;br /&gt;
 LoadFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
          out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el contenido de un fichero que pertenezca una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 AttachFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; FileName: String; Content: TByteDynArray; &lt;br /&gt;
            out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Adjunta un nuevo fichero a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     FileName: Nombre del fichero.&lt;br /&gt;
     Content: Contenido del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Elimina un fichero que haya sido adjuntado a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles.&lt;br /&gt;
     Para que un fichero pueda ser eliminado de la tarea, la tarea no puede haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
=Api de administración=&lt;br /&gt;
&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSessionAdmin(IdAdmin: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión de administración con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdUnit: Identificador del usuario administrador que inicia sesión.&lt;br /&gt;
     Data: Identificador de la sesión.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSessionAdmin(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: String; out Error: TGWSError)&lt;br /&gt;
&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.&lt;br /&gt;
     Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
     Data: Nombre del usuario administrador.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado válido &lt;br /&gt;
     de la FNMT o DNIe. El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSessionAdmin(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 LoadOrganizations(IdSession: TGWSIdentifier; out Data: TGWSListOrganizations; out Error: TGWSError)&lt;br /&gt;
 Carga la lista de organizaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     Data: Lista de organizaciones.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadOrganization(IdSession: TGWSIdentifier; IdOrganization: TGWSIdentifier; out Data: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
&lt;br /&gt;
 Carga una organización concreta.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     IdOrganization: Identificador de la organización.&lt;br /&gt;
     Data: Datos de la organización.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 CreateOrganization(IdSession: TGWSIdentifier; const Name: String; out Data: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
 Crea una nueva organización en el sistema.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     Name: Nombre de la nueva organización.&lt;br /&gt;
     Data: Datos de la organización creada.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveOrganization(IdSession: TGWSIdentifier; Organization: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios que se realicen en una organización.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     Organización: Datos de la organización que se quiere modificar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveOrganization(IdSession: TGWSIdentifier; IdOrganization: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una organización.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     IdOrganización: Identificador de la organización que se quiere eliminar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     No se podrá eliminar una organización a la que estén adscritos usuarios. Sería necesario primero cambiar los &lt;br /&gt;
     usuarios de organización o eliminarlos.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 LoadUsers(IdSession: TGWSIdentifier; SearchParams: TGWSSearchUsersArg; out Data: TGWSListRefUsers; out Error: TGWSError)&lt;br /&gt;
 Carga una lista de  usuarios dados de alta en el sistema según los criterios de búsqueda proporcionados en los parámetros.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSessión: Identificador de la sesión.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de datos básicos de usuario.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadUserById(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Carga los datos de un usuario según un identificador proporcionado.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSessión: Identificador de la sesión.&lt;br /&gt;
 IdUser: Identificador del usuario.&lt;br /&gt;
 Data: Datos completos del usuario.&lt;br /&gt;
 Error: Código y mensaje de error&lt;br /&gt;
&lt;br /&gt;
 CreateUser(IdSession: TGWSIdentifier; const UserName: String; const FullName: String; const NIF: String; const EMail:&lt;br /&gt;
            String; Organization: TGWSIdentifier; RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSessión: Identificador de la sesión.&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     Organization: Identificador de la organización a la que pertenence el usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. &lt;br /&gt;
&lt;br /&gt;
 SaveUserById(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; User: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Permite modificar los datos de un usuario que ya exista.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdUser: Identificador del usuario.&lt;br /&gt;
     User: Datos del usuario a modificar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveUser(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina un usuario registrado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdUser: Identificador del usuario.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que pueda ser eliminado un usuario, este no debe haber iniciado trámites.&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5752</id>
		<title>API del Web Service STE</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5752"/>
				<updated>2010-04-06T08:34:26Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: /* Trámites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Tipos=&lt;br /&gt;
&lt;br /&gt;
==Basicos==&lt;br /&gt;
 TGArrayInteger = array of integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSSerializedDateTime = String;&lt;br /&gt;
&lt;br /&gt;
 TGWSIdentifier = String;&lt;br /&gt;
&lt;br /&gt;
 TGSignature = TByteDynArray; &lt;br /&gt;
 &lt;br /&gt;
    Array de bytes usado para enviar datos binarios (ficheros, firmas, etc.).&lt;br /&gt;
&lt;br /&gt;
==Errores==&lt;br /&gt;
 TGWSErrorCode = Integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldError = class&lt;br /&gt;
    property FieldDefinitionPath: String;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción de error en un campo. Indica el campo afectado y el error correspondiente.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldError = array of TGWSFieldError;&lt;br /&gt;
&lt;br /&gt;
 TGWSError = class&lt;br /&gt;
    property ErrorCode: TGWSErrorCode;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Error general.&lt;br /&gt;
&lt;br /&gt;
 TGWSErrorValidateTask = class(TGWSError)&lt;br /&gt;
    property FieldErrors: TGWSArrayFieldError;&lt;br /&gt;
    &lt;br /&gt;
    Error en la validación o envío de una tarea. Detalla los errores de los campos.&lt;br /&gt;
&lt;br /&gt;
==Procedimentos (definiciones)==&lt;br /&gt;
 TGWSFieldType = (ftDummy, ftBoolean, ftInteger, ftReal, ftString, ftMemo, ftDatetime, ftCurrency, ftTable);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property LabelField: String;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Section: String;&lt;br /&gt;
    property Visible: Boolean;&lt;br /&gt;
    property Editable: Boolean;&lt;br /&gt;
    property Required: Boolean;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de campo. Si es un campo tabla, incluye las definiciones de las columnas.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldDefinition = array of TGWSFieldDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldDefinition = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition; &lt;br /&gt;
&lt;br /&gt;
 TGWSTaskType = (ttStart, ttSendDocumentation, ttRequirement, ttNotification, ttResponse);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de tarea. &lt;br /&gt;
    Todo proceso ha de tener al menos una tarea de inicio (ttStart). &lt;br /&gt;
    Las tareas de envío de documentación (ttSendDocumentation) permiten añadir documentación a un trámite &lt;br /&gt;
    en cualquier momento.&lt;br /&gt;
    Las tareas de requerimiento se usan para solicitar la participación del interesado en algún momento del trámite, &lt;br /&gt;
    requiriendole para que aporte más documentación a un trámite, por medio de una tarea de respuesta (ttResponse).&lt;br /&gt;
    Las tareas de notificación sirven para informar al interesado de cualquier incidencia en el trámite. &lt;br /&gt;
    Se debe acusar recibo de este tipo de tareas para poder consultar el trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSTaskDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameTask: String;&lt;br /&gt;
    property LabelTask: String;&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property TaskType: TGWSTaskType;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de tarea. Incluye las definiciones de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTaskDefinition = array of TGWSTaskDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcedure = class&lt;br /&gt;
    property Identifier: TGWSIdentifier&lt;br /&gt;
    property NameProcedure: String&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property Group: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada del procedimento, que se usa obtener los datos fundamentales de un procedimento &lt;br /&gt;
    al cargar listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcedure = array of TGWSRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcedure = class&lt;br /&gt;
    property RefProcedures: TGWSArrayRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcedure = class(TGWSRefProcedure)&lt;br /&gt;
    property TaskDefinitions: TGWSArrayTaskDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Descripción completa del procedimiento.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 TGWSProcessStatus = (psCreated, psStarted, psFinished, psArchived, psDeleted, psAll);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar un trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayProcessStatus = array of TGWSProcessStatus;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcess = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property RefProcedure: TGWSRefProcedure;&lt;br /&gt;
    property LabelProcess: String;&lt;br /&gt;
    property Status: TGWSProcessStatus;&lt;br /&gt;
    property CreateDate: TGWSSerializedDateTime;&lt;br /&gt;
    property StartDate: TGWSSerializedDateTime;&lt;br /&gt;
    property EndDate: TGWSSerializedDateTime;&lt;br /&gt;
    property TramitationStatus: String; &lt;br /&gt;
    property TaskCount: Integer;&lt;br /&gt;
    property LastTaskName: String;&lt;br /&gt;
    property LastTaskDate: TGWSSerializedDateTime;&lt;br /&gt;
    property HasPendingTasks: Boolean read;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada de un trámite, usada para obtener los datos fundamentales de un &lt;br /&gt;
    trámite en listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcess = array of TGWSRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcess = class&lt;br /&gt;
    property RefProcesses: TGWSArrayRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcess = class(TGWSRefProcess)&lt;br /&gt;
    property Tasks: TGWSArrayTasks read FTasks write FTasks;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos del trámite, incluyendo las tareas que forman parte del mismo.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchProcessArg = class&lt;br /&gt;
    property Status: TGWSArrayProcessStatus;&lt;br /&gt;
    property Condition: String;&lt;br /&gt;
    &lt;br /&gt;
    Parámetros de búsqueda usados para indicar los criterios de búsqueda de trámites.&lt;br /&gt;
&lt;br /&gt;
==Tareas==&lt;br /&gt;
 TGWSTaskStatus = (wsTaskCreated, wsTaskSended, wsTaskReceived, wsTaskResponsed);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSTask = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property Status: TGWSTaskStatus;&lt;br /&gt;
    property CreateOrReceiveDate: TGWSSerializedDateTime;&lt;br /&gt;
    property SendOrResponseDate: TGWSSerializedDateTime;&lt;br /&gt;
    property Files: TGWSArrayRefFiles;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    property Signature: TGSignature;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una tarea. Incluye la información de los campos y los archivos adjuntos, &lt;br /&gt;
    así como la firma digital de la tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTasks = array of TGWSTask;&lt;br /&gt;
&lt;br /&gt;
==Campos==&lt;br /&gt;
 TGWSArrayValues = array of String;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldAllowedValues = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property AllowedValues: TGWSArrayValues;&lt;br /&gt;
    &lt;br /&gt;
    Listado de valores permitidos para un campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldAllowedValues = array of TGWSFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldAllowedValues = class&lt;br /&gt;
    property FieldAllowedValues: TGWSArrayFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldValue = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Value: String read FValue write FValue;&lt;br /&gt;
    property RowsAllowedValues: TGWSListFieldAllowedValues; &lt;br /&gt;
    property Rows: TGWSArrayRows;&lt;br /&gt;
    &lt;br /&gt;
    Campo. Para facilitar la operación con este tipo, se ha añadido el atributo “tipo”, &lt;br /&gt;
    que también está disponible en la definición de campo. Si el campo es de tipo tabla, &lt;br /&gt;
    incluye la información de las filas de la tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldValue = array of TGWSFieldValue;&lt;br /&gt;
&lt;br /&gt;
 TGWSRow = class&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    &lt;br /&gt;
    Fila de campos tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRows = array of TGWSRow;&lt;br /&gt;
&lt;br /&gt;
==Ficheros==&lt;br /&gt;
 TGWSRefFile = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameFile: String;&lt;br /&gt;
    property AttachDate: TGWSSerializedDateTime;&lt;br /&gt;
    &lt;br /&gt;
    Datos de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefFiles = array of TGWSRefFile;&lt;br /&gt;
&lt;br /&gt;
 TGWSFile = class(TGWSRefFile)&lt;br /&gt;
    property Content: TByteDynArray;&lt;br /&gt;
    &lt;br /&gt;
    Contenido completo de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
==Notificaciones==&lt;br /&gt;
 TGWSNotification = class&lt;br /&gt;
    property Identifier: String read FIdentifier write FIdentifier;&lt;br /&gt;
    property Name: String read FName write FName;&lt;br /&gt;
    &lt;br /&gt;
    Notificación pendiente en un trámite. Incluye el identificador de la tarea de notificación &lt;br /&gt;
    que está pendiente de acusar recibo y un nombre descriptivo para mostrar al usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayNotifications = array of TGWSNotification;&lt;br /&gt;
&lt;br /&gt;
 TGWSListNotifications = class(TRemotable)&lt;br /&gt;
    property Notifications: TGWSArrayNotifications read FNotifications write FNotifications;&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 TGWSRegistrationForm = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    &lt;br /&gt;
    Formulario de registro de un usuario. Incluye solo los campos adicionales. Los campos &lt;br /&gt;
    obligatorios (nombre, nombre completo, nif, correo electrónico), no están incluidos en el &lt;br /&gt;
    formulario. La definición de los campos de registro se describe en un fichero XML.&lt;br /&gt;
&lt;br /&gt;
 TGWSRefUser = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property UserName: String;&lt;br /&gt;
    property FullName: String;&lt;br /&gt;
    property Nif: String;&lt;br /&gt;
    property EMail: String;&lt;br /&gt;
    property IdOrganization;&lt;br /&gt;
    &lt;br /&gt;
    Datos básicos de un usuario, se usa para listados de usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefUsers = array of TGWSRefUser;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefUsers = class&lt;br /&gt;
    property RefUsers: TGWSArrayRefUsers;&lt;br /&gt;
&lt;br /&gt;
 TGWSUser = class(TGWSRefUser)&lt;br /&gt;
    property RegistrationForm: TGWSRegistrationForm;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos de un usuario, incluyendo los datos del formulario de registro.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchUsersArg = class&lt;br /&gt;
    property Condition: STring;&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 TGWSOrganization = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property Name: String read;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una organización. La organización permite agrupar los usuarios, de forma que los &lt;br /&gt;
    todos los usuarios individuales que pertenezcan a una organización tienen acceso a todos los &lt;br /&gt;
    trámites que haya iniciado cualquier miembro de la organización.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayOrganizations = array of TGWSOrganization;&lt;br /&gt;
&lt;br /&gt;
 TGWSListOrganizations = class&lt;br /&gt;
    property Organizations: TGWSArrayOrganizations;&lt;br /&gt;
&lt;br /&gt;
=API de usuario=&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSession(IdUnit: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdUnit: Identificador del usuario o centro gestor que inicia sesión.&lt;br /&gt;
         Data: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSession(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: TGWSRefUser; out Error: TGWSError)&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
         Data: Datos básicos del usuario que inició sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado &lt;br /&gt;
         válido de la FNMT o DNIe. &lt;br /&gt;
         El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSession(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 RegisterAllowed(out Data: Boolean; out Error: TGWSError)&lt;br /&gt;
 Indica si el resgistro libre de nuevos usuarios está disponible.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Verdadero si está permitido el registro libre de usuarios.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadRegisterForm(out Data: TGWSRegistrationForm; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el formulario de registro de usuarios.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Formulario de registro de usuarios.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     El formulario de registro contiene los campos adicionales a los 4 campos obligatorios que son “nombre”, “nombre completo”, &lt;br /&gt;
     “nif” y “correo electrónico”.&lt;br /&gt;
&lt;br /&gt;
 RegisterUser(const UserName: String; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
              RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. El formulario de registro se puede obtener llamando a la &lt;br /&gt;
     función “LoadRegisterForm”. Esta función solo está disponible si el registro libre está permitido. &lt;br /&gt;
     Consultar la función “RegisterAllowed”.&lt;br /&gt;
&lt;br /&gt;
 LoadUser(IdSession: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Permite obtener los datos del usuario actual que inició sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Datos del usuario.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveUser(IdSession: TGWSIdentifier; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
          RegistrationData: TGWSRegistrationForm; out Error: TGWSError)&lt;br /&gt;
 Permite modificar los datos del usuario actual.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Procedimientos==&lt;br /&gt;
 LoadProcedures(IdSession: TGWSIdentifier; out Data: TGWSListRefProcedure; out Error: TGWSError)&lt;br /&gt;
 Obtiene lista de definiciones básicas de procedimientos.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Lista de definiciones básicas de procedimiento.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcedure(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; out Data: TGWSProcedure; out Error: TGWSError)&lt;br /&gt;
 Permite obtener la definición completa de un procedimiento que se indique.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento.&lt;br /&gt;
     Data: Definición completa del procedimiento.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 LoadProcesses(IdSession: TGWSIdentifier; SearchParams: TGWSSearchProcessArg; out Data: TGWSListRefProcess; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de trámites (descripción abreviada) del usuario que cumplan las condiciones indicadas &lt;br /&gt;
 en el parámetro de búsqueda.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de trámites (descripción abreviada).&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Carga un trámite completo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Contenido completo del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     Si el trámite tiene notificaciones pendientes, el sistema no permite abrir el trámite. Es necesario confirmar &lt;br /&gt;
     la recepción de las notificaciones antes de abrir el trámite, haciendo uso de las tareas &lt;br /&gt;
     “LoadProcessNotifications”, “LoadTaskSerialization” y “SendTask”.&lt;br /&gt;
&lt;br /&gt;
 LoadProcessNotifications(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; &lt;br /&gt;
                          out Data: TGWSListNotifications; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de las notificaciones pendientes del trámite. &lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Lista de notificaciones pendientes del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles: &lt;br /&gt;
     Cuando un proceso tenga notificaciones pendientes, será necesario cargar cada una de las tareas &lt;br /&gt;
     indicadas por las notificaciones, firmarlas y enviarlas para confirmar la recepción de dichas notificaciones.&lt;br /&gt;
&lt;br /&gt;
 CreateProcess(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; &lt;br /&gt;
               out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Crea un trámite basado en una definición de procedimiento. Le asigna una etiqueta al nuevo trámite creado, &lt;br /&gt;
 para facilitar la localización del mismo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento que sirve como definición del trámite a crear.&lt;br /&gt;
     Data: Proceso creado.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda eliminar un trámite, es necesario que no se haya enviado ninguna tarea asociada al mismo.&lt;br /&gt;
&lt;br /&gt;
 ArchiveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Archiva el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda archivar el trámite, es necesario que este haya finalizado.&lt;br /&gt;
&lt;br /&gt;
==Tareas de los trámites==&lt;br /&gt;
 CreateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTaskDefinition: TGWSIdentifier; out Data: TGWSTask; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Crea una tarea dentro del trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTaskDefinition: Tipo de tarea a crear.&lt;br /&gt;
     Data: Tarea creada.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; Task: TGWSTask; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios realizados en una tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Task: Tarea que se va a modificar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser guardada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 RemoveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea a eliminar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser eliminada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 LoadTaskSerialization(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; &lt;br /&gt;
                       out Data: String; out Error: TGWSError)&lt;br /&gt;
 Carga el contenido serializado de una tarea. Este contenido serializado es el que habrá de ser firmado &lt;br /&gt;
 cuando se quiera enviar la tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Data: Serialización de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 ValidateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSErrorValidateTask); &lt;br /&gt;
 Comprueba las condiciones de validación que se hayan definido sobre la tarea. Si no se cumplen alguna o algunas de las &lt;br /&gt;
 condiciones, vendrá indicado en el parámetro de salida “Error”.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 SendTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; Signature: TGSignature; &lt;br /&gt;
          out Error: TGWSErrorValidateTask)&lt;br /&gt;
 Envía la tarea al backoffice, para que continue el trámite. La tarea ha de cumplir las validaciones definidas.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Signature: Firma de la serialización de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 ResponseTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Genera una tarea de respuesta a una tarea que haya sido recibida.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Ficheros adjuntos de los trámites==&lt;br /&gt;
 LoadFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
          out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el contenido de un fichero que pertenezca una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 AttachFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; FileName: String; Content: TByteDynArray; &lt;br /&gt;
            out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Adjunta un nuevo fichero a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     FileName: Nombre del fichero.&lt;br /&gt;
     Content: Contenido del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Elimina un fichero que haya sido adjuntado a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles.&lt;br /&gt;
     Para que un fichero pueda ser eliminado de la tarea, la tarea no puede haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
=Api de administración=&lt;br /&gt;
&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSessionAdmin(IdAdmin: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión de administración con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdUnit: Identificador del usuario administrador que inicia sesión.&lt;br /&gt;
     Data: Identificador de la sesión.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSessionAdmin(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: String; out Error: TGWSError)&lt;br /&gt;
&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.&lt;br /&gt;
     Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
     Data: Nombre del usuario administrador.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado válido &lt;br /&gt;
     de la FNMT o DNIe. El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSessionAdmin(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 LoadOrganizations(IdSession: TGWSIdentifier; out Data: TGWSListOrganizations; out Error: TGWSError)&lt;br /&gt;
 Carga la lista de organizaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     Data: Lista de organizaciones.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadOrganization(IdSession: TGWSIdentifier; IdOrganization: TGWSIdentifier; out Data: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
&lt;br /&gt;
 Carga una organización concreta.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     IdOrganization: Identificador de la organización.&lt;br /&gt;
     Data: Datos de la organización.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 CreateOrganization(IdSession: TGWSIdentifier; const Name: String; out Data: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
 Crea una nueva organización en el sistema.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     Name: Nombre de la nueva organización.&lt;br /&gt;
     Data: Datos de la organización creada.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveOrganization(IdSession: TGWSIdentifier; Organization: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios que se realicen en una organización.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     Organización: Datos de la organización que se quiere modificar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveOrganization(IdSession: TGWSIdentifier; IdOrganization: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una organización.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     IdOrganización: Identificador de la organización que se quiere eliminar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     No se podrá eliminar una organización a la que estén adscritos usuarios. Sería necesario primero cambiar los &lt;br /&gt;
     usuarios de organización o eliminarlos.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 LoadUsers(IdSession: TGWSIdentifier; SearchParams: TGWSSearchUsersArg; out Data: TGWSListRefUsers; out Error: TGWSError)&lt;br /&gt;
 Carga una lista de  usuarios dados de alta en el sistema según los criterios de búsqueda proporcionados en los parámetros.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSessión: Identificador de la sesión.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de datos básicos de usuario.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadUserById(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Carga los datos de un usuario según un identificador proporcionado.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSessión: Identificador de la sesión.&lt;br /&gt;
 IdUser: Identificador del usuario.&lt;br /&gt;
 Data: Datos completos del usuario.&lt;br /&gt;
 Error: Código y mensaje de error&lt;br /&gt;
&lt;br /&gt;
 CreateUser(IdSession: TGWSIdentifier; const UserName: String; const FullName: String; const NIF: String; const EMail:&lt;br /&gt;
            String; Organization: TGWSIdentifier; RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSessión: Identificador de la sesión.&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     Organization: Identificador de la organización a la que pertenence el usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. &lt;br /&gt;
&lt;br /&gt;
 SaveUserById(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; User: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Permite modificar los datos de un usuario que ya exista.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdUser: Identificador del usuario.&lt;br /&gt;
     User: Datos del usuario a modificar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveUser(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina un usuario registrado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdUser: Identificador del usuario.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que pueda ser eliminado un usuario, este no debe haber iniciado trámites.&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5751</id>
		<title>API del Web Service STE</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5751"/>
				<updated>2010-04-06T08:33:24Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Tipos=&lt;br /&gt;
&lt;br /&gt;
==Basicos==&lt;br /&gt;
 TGArrayInteger = array of integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSSerializedDateTime = String;&lt;br /&gt;
&lt;br /&gt;
 TGWSIdentifier = String;&lt;br /&gt;
&lt;br /&gt;
 TGSignature = TByteDynArray; &lt;br /&gt;
 &lt;br /&gt;
    Array de bytes usado para enviar datos binarios (ficheros, firmas, etc.).&lt;br /&gt;
&lt;br /&gt;
==Errores==&lt;br /&gt;
 TGWSErrorCode = Integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldError = class&lt;br /&gt;
    property FieldDefinitionPath: String;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción de error en un campo. Indica el campo afectado y el error correspondiente.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldError = array of TGWSFieldError;&lt;br /&gt;
&lt;br /&gt;
 TGWSError = class&lt;br /&gt;
    property ErrorCode: TGWSErrorCode;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Error general.&lt;br /&gt;
&lt;br /&gt;
 TGWSErrorValidateTask = class(TGWSError)&lt;br /&gt;
    property FieldErrors: TGWSArrayFieldError;&lt;br /&gt;
    &lt;br /&gt;
    Error en la validación o envío de una tarea. Detalla los errores de los campos.&lt;br /&gt;
&lt;br /&gt;
==Procedimentos (definiciones)==&lt;br /&gt;
 TGWSFieldType = (ftDummy, ftBoolean, ftInteger, ftReal, ftString, ftMemo, ftDatetime, ftCurrency, ftTable);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property LabelField: String;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Section: String;&lt;br /&gt;
    property Visible: Boolean;&lt;br /&gt;
    property Editable: Boolean;&lt;br /&gt;
    property Required: Boolean;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de campo. Si es un campo tabla, incluye las definiciones de las columnas.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldDefinition = array of TGWSFieldDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldDefinition = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition; &lt;br /&gt;
&lt;br /&gt;
 TGWSTaskType = (ttStart, ttSendDocumentation, ttRequirement, ttNotification, ttResponse);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de tarea. &lt;br /&gt;
    Todo proceso ha de tener al menos una tarea de inicio (ttStart). &lt;br /&gt;
    Las tareas de envío de documentación (ttSendDocumentation) permiten añadir documentación a un trámite &lt;br /&gt;
    en cualquier momento.&lt;br /&gt;
    Las tareas de requerimiento se usan para solicitar la participación del interesado en algún momento del trámite, &lt;br /&gt;
    requiriendole para que aporte más documentación a un trámite, por medio de una tarea de respuesta (ttResponse).&lt;br /&gt;
    Las tareas de notificación sirven para informar al interesado de cualquier incidencia en el trámite. &lt;br /&gt;
    Se debe acusar recibo de este tipo de tareas para poder consultar el trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSTaskDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameTask: String;&lt;br /&gt;
    property LabelTask: String;&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property TaskType: TGWSTaskType;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de tarea. Incluye las definiciones de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTaskDefinition = array of TGWSTaskDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcedure = class&lt;br /&gt;
    property Identifier: TGWSIdentifier&lt;br /&gt;
    property NameProcedure: String&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property Group: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada del procedimento, que se usa obtener los datos fundamentales de un procedimento &lt;br /&gt;
    al cargar listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcedure = array of TGWSRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcedure = class&lt;br /&gt;
    property RefProcedures: TGWSArrayRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcedure = class(TGWSRefProcedure)&lt;br /&gt;
    property TaskDefinitions: TGWSArrayTaskDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Descripción completa del procedimiento.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 TGWSProcessStatus = (psCreated, psStarted, psFinished, psArchived, psDeleted, psAll);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar un trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayProcessStatus = array of TGWSProcessStatus;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcess = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property RefProcedure: TGWSRefProcedure;&lt;br /&gt;
    property LabelProcess: String;&lt;br /&gt;
    property Status: TGWSProcessStatus;&lt;br /&gt;
    property CreateDate: TGWSSerializedDateTime;&lt;br /&gt;
    property StartDate: TGWSSerializedDateTime;&lt;br /&gt;
    property EndDate: TGWSSerializedDateTime;&lt;br /&gt;
    property TramitationStatus: String; &lt;br /&gt;
    property TaskCount: Integer;&lt;br /&gt;
    property LastTaskName: String;&lt;br /&gt;
    property LastTaskDate: TGWSSerializedDateTime;&lt;br /&gt;
    property HasPendingTasks: Boolean read;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada de un trámite, usada para obtener los datos fundamentales de un &lt;br /&gt;
    trámite en listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcess = array of TGWSRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcess = class&lt;br /&gt;
    property RefProcesses: TGWSArrayRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcess = class(TGWSRefProcess)&lt;br /&gt;
    property Tasks: TGWSArrayTasks read FTasks write FTasks;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos del trámite, incluyendo las tareas que forman parte del mismo.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchProcessArg = class&lt;br /&gt;
    property Status: TGWSArrayProcessStatus;&lt;br /&gt;
    property Condition: String;&lt;br /&gt;
    &lt;br /&gt;
    Parámetros de búsqueda usados para indicar los criterios de búsqueda de trámites.&lt;br /&gt;
&lt;br /&gt;
==Tareas==&lt;br /&gt;
 TGWSTaskStatus = (wsTaskCreated, wsTaskSended, wsTaskReceived, wsTaskResponsed);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSTask = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property Status: TGWSTaskStatus;&lt;br /&gt;
    property CreateOrReceiveDate: TGWSSerializedDateTime;&lt;br /&gt;
    property SendOrResponseDate: TGWSSerializedDateTime;&lt;br /&gt;
    property Files: TGWSArrayRefFiles;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    property Signature: TGSignature;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una tarea. Incluye la información de los campos y los archivos adjuntos, &lt;br /&gt;
    así como la firma digital de la tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTasks = array of TGWSTask;&lt;br /&gt;
&lt;br /&gt;
==Campos==&lt;br /&gt;
 TGWSArrayValues = array of String;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldAllowedValues = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property AllowedValues: TGWSArrayValues;&lt;br /&gt;
    &lt;br /&gt;
    Listado de valores permitidos para un campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldAllowedValues = array of TGWSFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldAllowedValues = class&lt;br /&gt;
    property FieldAllowedValues: TGWSArrayFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldValue = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Value: String read FValue write FValue;&lt;br /&gt;
    property RowsAllowedValues: TGWSListFieldAllowedValues; &lt;br /&gt;
    property Rows: TGWSArrayRows;&lt;br /&gt;
    &lt;br /&gt;
    Campo. Para facilitar la operación con este tipo, se ha añadido el atributo “tipo”, &lt;br /&gt;
    que también está disponible en la definición de campo. Si el campo es de tipo tabla, &lt;br /&gt;
    incluye la información de las filas de la tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldValue = array of TGWSFieldValue;&lt;br /&gt;
&lt;br /&gt;
 TGWSRow = class&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    &lt;br /&gt;
    Fila de campos tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRows = array of TGWSRow;&lt;br /&gt;
&lt;br /&gt;
==Ficheros==&lt;br /&gt;
 TGWSRefFile = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameFile: String;&lt;br /&gt;
    property AttachDate: TGWSSerializedDateTime;&lt;br /&gt;
    &lt;br /&gt;
    Datos de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefFiles = array of TGWSRefFile;&lt;br /&gt;
&lt;br /&gt;
 TGWSFile = class(TGWSRefFile)&lt;br /&gt;
    property Content: TByteDynArray;&lt;br /&gt;
    &lt;br /&gt;
    Contenido completo de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
==Notificaciones==&lt;br /&gt;
 TGWSNotification = class&lt;br /&gt;
    property Identifier: String read FIdentifier write FIdentifier;&lt;br /&gt;
    property Name: String read FName write FName;&lt;br /&gt;
    &lt;br /&gt;
    Notificación pendiente en un trámite. Incluye el identificador de la tarea de notificación &lt;br /&gt;
    que está pendiente de acusar recibo y un nombre descriptivo para mostrar al usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayNotifications = array of TGWSNotification;&lt;br /&gt;
&lt;br /&gt;
 TGWSListNotifications = class(TRemotable)&lt;br /&gt;
    property Notifications: TGWSArrayNotifications read FNotifications write FNotifications;&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 TGWSRegistrationForm = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    &lt;br /&gt;
    Formulario de registro de un usuario. Incluye solo los campos adicionales. Los campos &lt;br /&gt;
    obligatorios (nombre, nombre completo, nif, correo electrónico), no están incluidos en el &lt;br /&gt;
    formulario. La definición de los campos de registro se describe en un fichero XML.&lt;br /&gt;
&lt;br /&gt;
 TGWSRefUser = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property UserName: String;&lt;br /&gt;
    property FullName: String;&lt;br /&gt;
    property Nif: String;&lt;br /&gt;
    property EMail: String;&lt;br /&gt;
    property IdOrganization;&lt;br /&gt;
    &lt;br /&gt;
    Datos básicos de un usuario, se usa para listados de usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefUsers = array of TGWSRefUser;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefUsers = class&lt;br /&gt;
    property RefUsers: TGWSArrayRefUsers;&lt;br /&gt;
&lt;br /&gt;
 TGWSUser = class(TGWSRefUser)&lt;br /&gt;
    property RegistrationForm: TGWSRegistrationForm;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos de un usuario, incluyendo los datos del formulario de registro.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchUsersArg = class&lt;br /&gt;
    property Condition: STring;&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 TGWSOrganization = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property Name: String read;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una organización. La organización permite agrupar los usuarios, de forma que los &lt;br /&gt;
    todos los usuarios individuales que pertenezcan a una organización tienen acceso a todos los &lt;br /&gt;
    trámites que haya iniciado cualquier miembro de la organización.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayOrganizations = array of TGWSOrganization;&lt;br /&gt;
&lt;br /&gt;
 TGWSListOrganizations = class&lt;br /&gt;
    property Organizations: TGWSArrayOrganizations;&lt;br /&gt;
&lt;br /&gt;
=API de usuario=&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSession(IdUnit: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdUnit: Identificador del usuario o centro gestor que inicia sesión.&lt;br /&gt;
         Data: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSession(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: TGWSRefUser; out Error: TGWSError)&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
         Data: Datos básicos del usuario que inició sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado &lt;br /&gt;
         válido de la FNMT o DNIe. &lt;br /&gt;
         El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSession(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 RegisterAllowed(out Data: Boolean; out Error: TGWSError)&lt;br /&gt;
 Indica si el resgistro libre de nuevos usuarios está disponible.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Verdadero si está permitido el registro libre de usuarios.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadRegisterForm(out Data: TGWSRegistrationForm; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el formulario de registro de usuarios.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Formulario de registro de usuarios.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     El formulario de registro contiene los campos adicionales a los 4 campos obligatorios que son “nombre”, “nombre completo”, &lt;br /&gt;
     “nif” y “correo electrónico”.&lt;br /&gt;
&lt;br /&gt;
 RegisterUser(const UserName: String; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
              RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. El formulario de registro se puede obtener llamando a la &lt;br /&gt;
     función “LoadRegisterForm”. Esta función solo está disponible si el registro libre está permitido. &lt;br /&gt;
     Consultar la función “RegisterAllowed”.&lt;br /&gt;
&lt;br /&gt;
 LoadUser(IdSession: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Permite obtener los datos del usuario actual que inició sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Datos del usuario.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveUser(IdSession: TGWSIdentifier; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
          RegistrationData: TGWSRegistrationForm; out Error: TGWSError)&lt;br /&gt;
 Permite modificar los datos del usuario actual.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Procedimientos==&lt;br /&gt;
 LoadProcedures(IdSession: TGWSIdentifier; out Data: TGWSListRefProcedure; out Error: TGWSError)&lt;br /&gt;
 Obtiene lista de definiciones básicas de procedimientos.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Lista de definiciones básicas de procedimiento.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcedure(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; out Data: TGWSProcedure; out Error: TGWSError)&lt;br /&gt;
 Permite obtener la definición completa de un procedimiento que se indique.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento.&lt;br /&gt;
     Data: Definición completa del procedimiento.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 LoadProcesses(IdSession: TGWSIdentifier; SearchParams: TGWSSearchProcessArg; out Data: TGWSListRefProcess; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de trámites (descripción abreviada) del usuario que cumplan las condiciones indicadas &lt;br /&gt;
 en el parámetro de búsqueda.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de trámites (descripción abreviada).&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Carga un trámite completo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Contenido completo del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     Si el trámite tiene notificaciones pendientes, el sistema no permite abrir el trámite. Es necesario confirmar &lt;br /&gt;
     la recepción de las notificaciones antes de abrir el trámite, haciendo uso de las tareas &lt;br /&gt;
     “LoadProcessNotifications”, “LoadTaskSerialization” y “SendTask”.&lt;br /&gt;
&lt;br /&gt;
 LoadProcessNotifications(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; &lt;br /&gt;
                          out Data: TGWSListNotifications; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de las notificaciones pendientes del trámite. &lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Lista de notificaciones pendientes del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles: &lt;br /&gt;
     Cuando un proceso tenga notificaciones pendientes, será necesario cargar cada una de las tareas &lt;br /&gt;
     indicadas por las notificaciones, firmarlas y enviarlas para confirmar la recepción de dichas notificaciones.&lt;br /&gt;
&lt;br /&gt;
 CreateProcess(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; ProcessLabel: String; &lt;br /&gt;
               out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Crea un trámite basado en una definición de procedimiento. Le asigna una etiqueta al nuevo trámite creado, &lt;br /&gt;
 para facilitar la localización del mismo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento que sirve como definición del trámite a crear.&lt;br /&gt;
     ProcessLabel: Etiqueta identificativa del nuevo trámite.&lt;br /&gt;
     Data: Proceso creado.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda eliminar un trámite, es necesario que no se haya enviado ninguna tarea asociada al mismo.&lt;br /&gt;
&lt;br /&gt;
 ArchiveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Archiva el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda archivar el trámite, es necesario que este haya finalizado.&lt;br /&gt;
&lt;br /&gt;
==Tareas de los trámites==&lt;br /&gt;
 CreateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTaskDefinition: TGWSIdentifier; out Data: TGWSTask; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Crea una tarea dentro del trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTaskDefinition: Tipo de tarea a crear.&lt;br /&gt;
     Data: Tarea creada.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; Task: TGWSTask; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios realizados en una tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Task: Tarea que se va a modificar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser guardada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 RemoveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea a eliminar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser eliminada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 LoadTaskSerialization(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; &lt;br /&gt;
                       out Data: String; out Error: TGWSError)&lt;br /&gt;
 Carga el contenido serializado de una tarea. Este contenido serializado es el que habrá de ser firmado &lt;br /&gt;
 cuando se quiera enviar la tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Data: Serialización de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 ValidateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSErrorValidateTask); &lt;br /&gt;
 Comprueba las condiciones de validación que se hayan definido sobre la tarea. Si no se cumplen alguna o algunas de las &lt;br /&gt;
 condiciones, vendrá indicado en el parámetro de salida “Error”.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 SendTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; Signature: TGSignature; &lt;br /&gt;
          out Error: TGWSErrorValidateTask)&lt;br /&gt;
 Envía la tarea al backoffice, para que continue el trámite. La tarea ha de cumplir las validaciones definidas.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Signature: Firma de la serialización de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 ResponseTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Genera una tarea de respuesta a una tarea que haya sido recibida.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Ficheros adjuntos de los trámites==&lt;br /&gt;
 LoadFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
          out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el contenido de un fichero que pertenezca una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 AttachFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; FileName: String; Content: TByteDynArray; &lt;br /&gt;
            out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Adjunta un nuevo fichero a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     FileName: Nombre del fichero.&lt;br /&gt;
     Content: Contenido del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Elimina un fichero que haya sido adjuntado a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles.&lt;br /&gt;
     Para que un fichero pueda ser eliminado de la tarea, la tarea no puede haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
=Api de administración=&lt;br /&gt;
&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSessionAdmin(IdAdmin: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión de administración con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdUnit: Identificador del usuario administrador que inicia sesión.&lt;br /&gt;
     Data: Identificador de la sesión.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSessionAdmin(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: String; out Error: TGWSError)&lt;br /&gt;
&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.&lt;br /&gt;
     Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
     Data: Nombre del usuario administrador.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado válido &lt;br /&gt;
     de la FNMT o DNIe. El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSessionAdmin(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 LoadOrganizations(IdSession: TGWSIdentifier; out Data: TGWSListOrganizations; out Error: TGWSError)&lt;br /&gt;
 Carga la lista de organizaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     Data: Lista de organizaciones.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadOrganization(IdSession: TGWSIdentifier; IdOrganization: TGWSIdentifier; out Data: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
&lt;br /&gt;
 Carga una organización concreta.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     IdOrganization: Identificador de la organización.&lt;br /&gt;
     Data: Datos de la organización.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 CreateOrganization(IdSession: TGWSIdentifier; const Name: String; out Data: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
 Crea una nueva organización en el sistema.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     Name: Nombre de la nueva organización.&lt;br /&gt;
     Data: Datos de la organización creada.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveOrganization(IdSession: TGWSIdentifier; Organization: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios que se realicen en una organización.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     Organización: Datos de la organización que se quiere modificar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveOrganization(IdSession: TGWSIdentifier; IdOrganization: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una organización.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     IdOrganización: Identificador de la organización que se quiere eliminar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     No se podrá eliminar una organización a la que estén adscritos usuarios. Sería necesario primero cambiar los &lt;br /&gt;
     usuarios de organización o eliminarlos.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 LoadUsers(IdSession: TGWSIdentifier; SearchParams: TGWSSearchUsersArg; out Data: TGWSListRefUsers; out Error: TGWSError)&lt;br /&gt;
 Carga una lista de  usuarios dados de alta en el sistema según los criterios de búsqueda proporcionados en los parámetros.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSessión: Identificador de la sesión.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de datos básicos de usuario.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadUserById(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Carga los datos de un usuario según un identificador proporcionado.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSessión: Identificador de la sesión.&lt;br /&gt;
 IdUser: Identificador del usuario.&lt;br /&gt;
 Data: Datos completos del usuario.&lt;br /&gt;
 Error: Código y mensaje de error&lt;br /&gt;
&lt;br /&gt;
 CreateUser(IdSession: TGWSIdentifier; const UserName: String; const FullName: String; const NIF: String; const EMail:&lt;br /&gt;
            String; Organization: TGWSIdentifier; RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSessión: Identificador de la sesión.&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     Organization: Identificador de la organización a la que pertenence el usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. &lt;br /&gt;
&lt;br /&gt;
 SaveUserById(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; User: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Permite modificar los datos de un usuario que ya exista.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdUser: Identificador del usuario.&lt;br /&gt;
     User: Datos del usuario a modificar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveUser(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina un usuario registrado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdUser: Identificador del usuario.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que pueda ser eliminado un usuario, este no debe haber iniciado trámites.&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5750</id>
		<title>API del Web Service STE</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5750"/>
				<updated>2010-04-06T08:32:44Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: /* Api de administración */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Tipos=&lt;br /&gt;
&lt;br /&gt;
==Basicos==&lt;br /&gt;
 TGArrayInteger = array of integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSSerializedDateTime = String;&lt;br /&gt;
&lt;br /&gt;
 TGWSIdentifier = String;&lt;br /&gt;
&lt;br /&gt;
 TGSignature = TByteDynArray; &lt;br /&gt;
 &lt;br /&gt;
    Array de bytes usado para enviar datos binarios (ficheros, firmas, etc.).&lt;br /&gt;
&lt;br /&gt;
==Errores==&lt;br /&gt;
 TGWSErrorCode = Integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldError = class&lt;br /&gt;
    property FieldDefinitionPath: String;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción de error en un campo. Indica el campo afectado y el error correspondiente.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldError = array of TGWSFieldError;&lt;br /&gt;
&lt;br /&gt;
 TGWSError = class&lt;br /&gt;
    property ErrorCode: TGWSErrorCode;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Error general.&lt;br /&gt;
&lt;br /&gt;
 TGWSErrorValidateTask = class(TGWSError)&lt;br /&gt;
    property FieldErrors: TGWSArrayFieldError;&lt;br /&gt;
    &lt;br /&gt;
    Error en la validación o envío de una tarea. Detalla los errores de los campos.&lt;br /&gt;
&lt;br /&gt;
==Procedimentos (definiciones)==&lt;br /&gt;
 TGWSFieldType = (ftDummy, ftBoolean, ftInteger, ftReal, ftString, ftMemo, ftDatetime, ftCurrency, ftTable);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property LabelField: String;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Section: String;&lt;br /&gt;
    property Visible: Boolean;&lt;br /&gt;
    property Editable: Boolean;&lt;br /&gt;
    property Required: Boolean;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de campo. Si es un campo tabla, incluye las definiciones de las columnas.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldDefinition = array of TGWSFieldDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldDefinition = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition; &lt;br /&gt;
&lt;br /&gt;
 TGWSTaskType = (ttStart, ttSendDocumentation, ttRequirement, ttNotification, ttResponse);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de tarea. &lt;br /&gt;
    Todo proceso ha de tener al menos una tarea de inicio (ttStart). &lt;br /&gt;
    Las tareas de envío de documentación (ttSendDocumentation) permiten añadir documentación a un trámite &lt;br /&gt;
    en cualquier momento.&lt;br /&gt;
    Las tareas de requerimiento se usan para solicitar la participación del interesado en algún momento del trámite, &lt;br /&gt;
    requiriendole para que aporte más documentación a un trámite, por medio de una tarea de respuesta (ttResponse).&lt;br /&gt;
    Las tareas de notificación sirven para informar al interesado de cualquier incidencia en el trámite. &lt;br /&gt;
    Se debe acusar recibo de este tipo de tareas para poder consultar el trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSTaskDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameTask: String;&lt;br /&gt;
    property LabelTask: String;&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property TaskType: TGWSTaskType;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de tarea. Incluye las definiciones de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTaskDefinition = array of TGWSTaskDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcedure = class&lt;br /&gt;
    property Identifier: TGWSIdentifier&lt;br /&gt;
    property NameProcedure: String&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property Group: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada del procedimento, que se usa obtener los datos fundamentales de un procedimento &lt;br /&gt;
    al cargar listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcedure = array of TGWSRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcedure = class&lt;br /&gt;
    property RefProcedures: TGWSArrayRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcedure = class(TGWSRefProcedure)&lt;br /&gt;
    property TaskDefinitions: TGWSArrayTaskDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Descripción completa del procedimiento.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 TGWSProcessStatus = (psCreated, psStarted, psFinished, psArchived, psDeleted, psAll);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar un trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayProcessStatus = array of TGWSProcessStatus;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcess = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property RefProcedure: TGWSRefProcedure;&lt;br /&gt;
    property LabelProcess: String;&lt;br /&gt;
    property Status: TGWSProcessStatus;&lt;br /&gt;
    property CreateDate: TGWSSerializedDateTime;&lt;br /&gt;
    property StartDate: TGWSSerializedDateTime;&lt;br /&gt;
    property EndDate: TGWSSerializedDateTime;&lt;br /&gt;
    property TramitationStatus: String; &lt;br /&gt;
    property TaskCount: Integer;&lt;br /&gt;
    property LastTaskName: String;&lt;br /&gt;
    property LastTaskDate: TGWSSerializedDateTime;&lt;br /&gt;
    property HasPendingTasks: Boolean read;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada de un trámite, usada para obtener los datos fundamentales de un &lt;br /&gt;
    trámite en listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcess = array of TGWSRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcess = class&lt;br /&gt;
    property RefProcesses: TGWSArrayRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcess = class(TGWSRefProcess)&lt;br /&gt;
    property Tasks: TGWSArrayTasks read FTasks write FTasks;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos del trámite, incluyendo las tareas que forman parte del mismo.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchProcessArg = class&lt;br /&gt;
    property Status: TGWSArrayProcessStatus;&lt;br /&gt;
    property Condition: String;&lt;br /&gt;
    &lt;br /&gt;
    Parámetros de búsqueda usados para indicar los criterios de búsqueda de trámites.&lt;br /&gt;
&lt;br /&gt;
==Tareas==&lt;br /&gt;
 TGWSTaskStatus = (wsTaskCreated, wsTaskSended, wsTaskReceived, wsTaskResponsed);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSTask = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property Status: TGWSTaskStatus;&lt;br /&gt;
    property CreateOrReceiveDate: TGWSSerializedDateTime;&lt;br /&gt;
    property SendOrResponseDate: TGWSSerializedDateTime;&lt;br /&gt;
    property Files: TGWSArrayRefFiles;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    property Signature: TGSignature;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una tarea. Incluye la información de los campos y los archivos adjuntos, &lt;br /&gt;
    así como la firma digital de la tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTasks = array of TGWSTask;&lt;br /&gt;
&lt;br /&gt;
==Campos==&lt;br /&gt;
 TGWSArrayValues = array of String;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldAllowedValues = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property AllowedValues: TGWSArrayValues;&lt;br /&gt;
    &lt;br /&gt;
    Listado de valores permitidos para un campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldAllowedValues = array of TGWSFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldAllowedValues = class&lt;br /&gt;
    property FieldAllowedValues: TGWSArrayFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldValue = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Value: String read FValue write FValue;&lt;br /&gt;
    property RowsAllowedValues: TGWSListFieldAllowedValues; &lt;br /&gt;
    property Rows: TGWSArrayRows;&lt;br /&gt;
    &lt;br /&gt;
    Campo. Para facilitar la operación con este tipo, se ha añadido el atributo “tipo”, &lt;br /&gt;
    que también está disponible en la definición de campo. Si el campo es de tipo tabla, &lt;br /&gt;
    incluye la información de las filas de la tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldValue = array of TGWSFieldValue;&lt;br /&gt;
&lt;br /&gt;
 TGWSRow = class&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    &lt;br /&gt;
    Fila de campos tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRows = array of TGWSRow;&lt;br /&gt;
&lt;br /&gt;
==Ficheros==&lt;br /&gt;
 TGWSRefFile = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameFile: String;&lt;br /&gt;
    property AttachDate: TGWSSerializedDateTime;&lt;br /&gt;
    &lt;br /&gt;
    Datos de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefFiles = array of TGWSRefFile;&lt;br /&gt;
&lt;br /&gt;
 TGWSFile = class(TGWSRefFile)&lt;br /&gt;
    property Content: TByteDynArray;&lt;br /&gt;
    &lt;br /&gt;
    Contenido completo de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
==Notificaciones==&lt;br /&gt;
 TGWSNotification = class&lt;br /&gt;
    property Identifier: String read FIdentifier write FIdentifier;&lt;br /&gt;
    property Name: String read FName write FName;&lt;br /&gt;
    &lt;br /&gt;
    Notificación pendiente en un trámite. Incluye el identificador de la tarea de notificación &lt;br /&gt;
    que está pendiente de acusar recibo y un nombre descriptivo para mostrar al usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayNotifications = array of TGWSNotification;&lt;br /&gt;
&lt;br /&gt;
 TGWSListNotifications = class(TRemotable)&lt;br /&gt;
    property Notifications: TGWSArrayNotifications read FNotifications write FNotifications;&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 TGWSRegistrationForm = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    &lt;br /&gt;
    Formulario de registro de un usuario. Incluye solo los campos adicionales. Los campos &lt;br /&gt;
    obligatorios (nombre, nombre completo, nif, correo electrónico), no están incluidos en el &lt;br /&gt;
    formulario. La definición de los campos de registro se describe en un fichero XML.&lt;br /&gt;
&lt;br /&gt;
 TGWSRefUser = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property UserName: String;&lt;br /&gt;
    property FullName: String;&lt;br /&gt;
    property Nif: String;&lt;br /&gt;
    property EMail: String;&lt;br /&gt;
    property IdOrganization;&lt;br /&gt;
    &lt;br /&gt;
    Datos básicos de un usuario, se usa para listados de usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefUsers = array of TGWSRefUser;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefUsers = class&lt;br /&gt;
    property RefUsers: TGWSArrayRefUsers;&lt;br /&gt;
&lt;br /&gt;
 TGWSUser = class(TGWSRefUser)&lt;br /&gt;
    property RegistrationForm: TGWSRegistrationForm;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos de un usuario, incluyendo los datos del formulario de registro.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchUsersArg = class&lt;br /&gt;
    property Condition: STring;&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 TGWSOrganization = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property Name: String read;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una organización. La organización permite agrupar los usuarios, de forma que los &lt;br /&gt;
    todos los usuarios individuales que pertenezcan a una organización tienen acceso a todos los &lt;br /&gt;
    trámites que haya iniciado cualquier miembro de la organización.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayOrganizations = array of TGWSOrganization;&lt;br /&gt;
&lt;br /&gt;
 TGWSListOrganizations = class&lt;br /&gt;
    property Organizations: TGWSArrayOrganizations;&lt;br /&gt;
&lt;br /&gt;
=API de usuario=&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSession(IdUnit: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdUnit: Identificador del usuario o centro gestor que inicia sesión.&lt;br /&gt;
         Data: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSession(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: TGWSRefUser; out Error: TGWSError)&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
         Data: Datos básicos del usuario que inició sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado &lt;br /&gt;
         válido de la FNMT o DNIe. &lt;br /&gt;
         El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSession(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 RegisterAllowed(out Data: Boolean; out Error: TGWSError)&lt;br /&gt;
 Indica si el resgistro libre de nuevos usuarios está disponible.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Verdadero si está permitido el registro libre de usuarios.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadRegisterForm(out Data: TGWSRegistrationForm; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el formulario de registro de usuarios.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Formulario de registro de usuarios.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     El formulario de registro contiene los campos adicionales a los 4 campos obligatorios que son “nombre”, “nombre completo”, &lt;br /&gt;
     “nif” y “correo electrónico”.&lt;br /&gt;
&lt;br /&gt;
 RegisterUser(const UserName: String; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
              RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. El formulario de registro se puede obtener llamando a la &lt;br /&gt;
     función “LoadRegisterForm”. Esta función solo está disponible si el registro libre está permitido. &lt;br /&gt;
     Consultar la función “RegisterAllowed”.&lt;br /&gt;
&lt;br /&gt;
 LoadUser(IdSession: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Permite obtener los datos del usuario actual que inició sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Datos del usuario.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveUser(IdSession: TGWSIdentifier; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
          RegistrationData: TGWSRegistrationForm; out Error: TGWSError)&lt;br /&gt;
 Permite modificar los datos del usuario actual.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Procedimientos==&lt;br /&gt;
 LoadProcedures(IdSession: TGWSIdentifier; out Data: TGWSListRefProcedure; out Error: TGWSError)&lt;br /&gt;
 Obtiene lista de definiciones básicas de procedimientos.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Lista de definiciones básicas de procedimiento.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcedure(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; out Data: TGWSProcedure; out Error: TGWSError)&lt;br /&gt;
 Permite obtener la definición completa de un procedimiento que se indique.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento.&lt;br /&gt;
     Data: Definición completa del procedimiento.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 LoadProcesses(IdSession: TGWSIdentifier; SearchParams: TGWSSearchProcessArg; out Data: TGWSListRefProcess; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de trámites (descripción abreviada) del usuario que cumplan las condiciones indicadas &lt;br /&gt;
 en el parámetro de búsqueda.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de trámites (descripción abreviada).&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Carga un trámite completo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Contenido completo del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     Si el trámite tiene notificaciones pendientes, el sistema no permite abrir el trámite. Es necesario confirmar &lt;br /&gt;
     la recepción de las notificaciones antes de abrir el trámite, haciendo uso de las tareas &lt;br /&gt;
     “LoadProcessNotifications”, “LoadTaskSerialization” y “SendTask”.&lt;br /&gt;
&lt;br /&gt;
 LoadProcessNotifications(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; &lt;br /&gt;
                          out Data: TGWSListNotifications; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de las notificaciones pendientes del trámite. &lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Lista de notificaciones pendientes del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles: &lt;br /&gt;
     Cuando un proceso tenga notificaciones pendientes, será necesario cargar cada una de las tareas &lt;br /&gt;
     indicadas por las notificaciones, firmarlas y enviarlas para confirmar la recepción de dichas notificaciones.&lt;br /&gt;
&lt;br /&gt;
 CreateProcess(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; ProcessLabel: String; &lt;br /&gt;
               out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Crea un trámite basado en una definición de procedimiento. Le asigna una etiqueta al nuevo trámite creado, &lt;br /&gt;
 para facilitar la localización del mismo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento que sirve como definición del trámite a crear.&lt;br /&gt;
     ProcessLabel: Etiqueta identificativa del nuevo trámite.&lt;br /&gt;
     Data: Proceso creado.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda eliminar un trámite, es necesario que no se haya enviado ninguna tarea asociada al mismo.&lt;br /&gt;
&lt;br /&gt;
 ArchiveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Archiva el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda archivar el trámite, es necesario que este haya finalizado.&lt;br /&gt;
&lt;br /&gt;
==Tareas de los trámites==&lt;br /&gt;
 CreateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTaskDefinition: TGWSIdentifier; out Data: TGWSTask; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Crea una tarea dentro del trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTaskDefinition: Tipo de tarea a crear.&lt;br /&gt;
     Data: Tarea creada.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; Task: TGWSTask; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios realizados en una tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Task: Tarea que se va a modificar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser guardada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 RemoveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea a eliminar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser eliminada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 LoadTaskSerialization(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; &lt;br /&gt;
                       out Data: String; out Error: TGWSError)&lt;br /&gt;
 Carga el contenido serializado de una tarea. Este contenido serializado es el que habrá de ser firmado &lt;br /&gt;
 cuando se quiera enviar la tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Data: Serialización de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 ValidateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSErrorValidateTask); &lt;br /&gt;
 Comprueba las condiciones de validación que se hayan definido sobre la tarea. Si no se cumplen alguna o algunas de las &lt;br /&gt;
 condiciones, vendrá indicado en el parámetro de salida “Error”.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 SendTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; Signature: TGSignature; &lt;br /&gt;
          out Error: TGWSErrorValidateTask)&lt;br /&gt;
 Envía la tarea al backoffice, para que continue el trámite. La tarea ha de cumplir las validaciones definidas.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Signature: Firma de la serialización de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 ResponseTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Genera una tarea de respuesta a una tarea que haya sido recibida.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Ficheros adjuntos de los trámites==&lt;br /&gt;
 LoadFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
          out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el contenido de un fichero que pertenezca una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 AttachFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; FileName: String; Content: TByteDynArray; &lt;br /&gt;
            out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Adjunta un nuevo fichero a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     FileName: Nombre del fichero.&lt;br /&gt;
     Content: Contenido del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Elimina un fichero que haya sido adjuntado a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles.&lt;br /&gt;
     Para que un fichero pueda ser eliminado de la tarea, la tarea no puede haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
=Api de administración=&lt;br /&gt;
&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSessionAdmin(IdAdmin: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión de administración con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdUnit: Identificador del usuario administrador que inicia sesión.&lt;br /&gt;
     Data: Identificador de la sesión.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSessionAdmin(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: String; out Error: TGWSError)&lt;br /&gt;
&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.&lt;br /&gt;
     Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
     Data: Nombre del usuario administrador.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado válido &lt;br /&gt;
     de la FNMT o DNIe. El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSessionAdmin(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 LoadOrganizations(IdSession: TGWSIdentifier; out Data: TGWSListOrganizations; out Error: TGWSError)&lt;br /&gt;
 Carga la lista de organizaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     Data: Lista de organizaciones.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadOrganization(IdSession: TGWSIdentifier; IdOrganization: TGWSIdentifier; out Data: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
&lt;br /&gt;
 Carga una organización concreta.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Identificador de la sesión.	&lt;br /&gt;
     IdOrganization: Identificador de la organización.&lt;br /&gt;
     Data: Datos de la organización.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 CreateOrganization(IdSession: TGWSIdentifier; const Name: String; out Data: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
 Crea una nueva organización en el sistema.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     Name: Nombre de la nueva organización.&lt;br /&gt;
     Data: Datos de la organización creada.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveOrganization(IdSession: TGWSIdentifier; Organization: TGWSOrganization; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios que se realicen en una organización.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     Organización: Datos de la organización que se quiere modificar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveOrganization(IdSession: TGWSIdentifier; IdOrganization: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una organización.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Identificador de la sesión.	&lt;br /&gt;
     IdOrganización: Identificador de la organización que se quiere eliminar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     No se podrá eliminar una organización a la que estén adscritos usuarios. Sería necesario primero cambiar los &lt;br /&gt;
     usuarios de organización o eliminarlos.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 LoadUsers(IdSession: TGWSIdentifier; SearchParams: TGWSSearchUsersArg; out Data: TGWSListRefUsers; out Error: TGWSError)&lt;br /&gt;
 Carga una lista de  usuarios dados de alta en el sistema según los criterios de búsqueda proporcionados en los parámetros.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSessión: Identificador de la sesión.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de datos básicos de usuario.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadUserById(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Carga los datos de un usuario según un identificador proporcionado.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSessión: Identificador de la sesión.&lt;br /&gt;
 IdUser: Identificador del usuario.&lt;br /&gt;
 Data: Datos completos del usuario.&lt;br /&gt;
 Error: Código y mensaje de error&lt;br /&gt;
&lt;br /&gt;
 CreateUser(IdSession: TGWSIdentifier; const UserName: String; const FullName: String; const NIF: String; const EMail:&lt;br /&gt;
            String; Organization: TGWSIdentifier; RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSessión: Identificador de la sesión.&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     Organization: Identificador de la organización a la que pertenence el usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. &lt;br /&gt;
&lt;br /&gt;
 SaveUserById(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; User: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Permite modificar los datos de un usuario que ya exista.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdUser: Identificador del usuario.&lt;br /&gt;
     User: Datos del usuario a modificar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveUser(IdSession: TGWSIdentifier; IdUser: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina un usuario registrado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdUser: Identificador del usuario.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que pueda ser eliminado un usuario, este no debe haber iniciado trámites.&lt;br /&gt;
&lt;br /&gt;
=Códigos de error=&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5749</id>
		<title>API del Web Service STE</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5749"/>
				<updated>2010-04-06T08:30:26Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: /* Tipos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Tipos=&lt;br /&gt;
&lt;br /&gt;
==Basicos==&lt;br /&gt;
 TGArrayInteger = array of integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSSerializedDateTime = String;&lt;br /&gt;
&lt;br /&gt;
 TGWSIdentifier = String;&lt;br /&gt;
&lt;br /&gt;
 TGSignature = TByteDynArray; &lt;br /&gt;
 &lt;br /&gt;
    Array de bytes usado para enviar datos binarios (ficheros, firmas, etc.).&lt;br /&gt;
&lt;br /&gt;
==Errores==&lt;br /&gt;
 TGWSErrorCode = Integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldError = class&lt;br /&gt;
    property FieldDefinitionPath: String;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción de error en un campo. Indica el campo afectado y el error correspondiente.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldError = array of TGWSFieldError;&lt;br /&gt;
&lt;br /&gt;
 TGWSError = class&lt;br /&gt;
    property ErrorCode: TGWSErrorCode;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Error general.&lt;br /&gt;
&lt;br /&gt;
 TGWSErrorValidateTask = class(TGWSError)&lt;br /&gt;
    property FieldErrors: TGWSArrayFieldError;&lt;br /&gt;
    &lt;br /&gt;
    Error en la validación o envío de una tarea. Detalla los errores de los campos.&lt;br /&gt;
&lt;br /&gt;
==Procedimentos (definiciones)==&lt;br /&gt;
 TGWSFieldType = (ftDummy, ftBoolean, ftInteger, ftReal, ftString, ftMemo, ftDatetime, ftCurrency, ftTable);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property LabelField: String;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Section: String;&lt;br /&gt;
    property Visible: Boolean;&lt;br /&gt;
    property Editable: Boolean;&lt;br /&gt;
    property Required: Boolean;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de campo. Si es un campo tabla, incluye las definiciones de las columnas.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldDefinition = array of TGWSFieldDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldDefinition = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition; &lt;br /&gt;
&lt;br /&gt;
 TGWSTaskType = (ttStart, ttSendDocumentation, ttRequirement, ttNotification, ttResponse);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de tarea. &lt;br /&gt;
    Todo proceso ha de tener al menos una tarea de inicio (ttStart). &lt;br /&gt;
    Las tareas de envío de documentación (ttSendDocumentation) permiten añadir documentación a un trámite &lt;br /&gt;
    en cualquier momento.&lt;br /&gt;
    Las tareas de requerimiento se usan para solicitar la participación del interesado en algún momento del trámite, &lt;br /&gt;
    requiriendole para que aporte más documentación a un trámite, por medio de una tarea de respuesta (ttResponse).&lt;br /&gt;
    Las tareas de notificación sirven para informar al interesado de cualquier incidencia en el trámite. &lt;br /&gt;
    Se debe acusar recibo de este tipo de tareas para poder consultar el trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSTaskDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameTask: String;&lt;br /&gt;
    property LabelTask: String;&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property TaskType: TGWSTaskType;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de tarea. Incluye las definiciones de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTaskDefinition = array of TGWSTaskDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcedure = class&lt;br /&gt;
    property Identifier: TGWSIdentifier&lt;br /&gt;
    property NameProcedure: String&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property Group: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada del procedimento, que se usa obtener los datos fundamentales de un procedimento &lt;br /&gt;
    al cargar listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcedure = array of TGWSRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcedure = class&lt;br /&gt;
    property RefProcedures: TGWSArrayRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcedure = class(TGWSRefProcedure)&lt;br /&gt;
    property TaskDefinitions: TGWSArrayTaskDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Descripción completa del procedimiento.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 TGWSProcessStatus = (psCreated, psStarted, psFinished, psArchived, psDeleted, psAll);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar un trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayProcessStatus = array of TGWSProcessStatus;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcess = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property RefProcedure: TGWSRefProcedure;&lt;br /&gt;
    property LabelProcess: String;&lt;br /&gt;
    property Status: TGWSProcessStatus;&lt;br /&gt;
    property CreateDate: TGWSSerializedDateTime;&lt;br /&gt;
    property StartDate: TGWSSerializedDateTime;&lt;br /&gt;
    property EndDate: TGWSSerializedDateTime;&lt;br /&gt;
    property TramitationStatus: String; &lt;br /&gt;
    property TaskCount: Integer;&lt;br /&gt;
    property LastTaskName: String;&lt;br /&gt;
    property LastTaskDate: TGWSSerializedDateTime;&lt;br /&gt;
    property HasPendingTasks: Boolean read;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada de un trámite, usada para obtener los datos fundamentales de un &lt;br /&gt;
    trámite en listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcess = array of TGWSRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcess = class&lt;br /&gt;
    property RefProcesses: TGWSArrayRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcess = class(TGWSRefProcess)&lt;br /&gt;
    property Tasks: TGWSArrayTasks read FTasks write FTasks;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos del trámite, incluyendo las tareas que forman parte del mismo.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchProcessArg = class&lt;br /&gt;
    property Status: TGWSArrayProcessStatus;&lt;br /&gt;
    property Condition: String;&lt;br /&gt;
    &lt;br /&gt;
    Parámetros de búsqueda usados para indicar los criterios de búsqueda de trámites.&lt;br /&gt;
&lt;br /&gt;
==Tareas==&lt;br /&gt;
 TGWSTaskStatus = (wsTaskCreated, wsTaskSended, wsTaskReceived, wsTaskResponsed);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSTask = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property Status: TGWSTaskStatus;&lt;br /&gt;
    property CreateOrReceiveDate: TGWSSerializedDateTime;&lt;br /&gt;
    property SendOrResponseDate: TGWSSerializedDateTime;&lt;br /&gt;
    property Files: TGWSArrayRefFiles;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    property Signature: TGSignature;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una tarea. Incluye la información de los campos y los archivos adjuntos, &lt;br /&gt;
    así como la firma digital de la tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTasks = array of TGWSTask;&lt;br /&gt;
&lt;br /&gt;
==Campos==&lt;br /&gt;
 TGWSArrayValues = array of String;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldAllowedValues = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property AllowedValues: TGWSArrayValues;&lt;br /&gt;
    &lt;br /&gt;
    Listado de valores permitidos para un campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldAllowedValues = array of TGWSFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldAllowedValues = class&lt;br /&gt;
    property FieldAllowedValues: TGWSArrayFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldValue = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Value: String read FValue write FValue;&lt;br /&gt;
    property RowsAllowedValues: TGWSListFieldAllowedValues; &lt;br /&gt;
    property Rows: TGWSArrayRows;&lt;br /&gt;
    &lt;br /&gt;
    Campo. Para facilitar la operación con este tipo, se ha añadido el atributo “tipo”, &lt;br /&gt;
    que también está disponible en la definición de campo. Si el campo es de tipo tabla, &lt;br /&gt;
    incluye la información de las filas de la tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldValue = array of TGWSFieldValue;&lt;br /&gt;
&lt;br /&gt;
 TGWSRow = class&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    &lt;br /&gt;
    Fila de campos tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRows = array of TGWSRow;&lt;br /&gt;
&lt;br /&gt;
==Ficheros==&lt;br /&gt;
 TGWSRefFile = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameFile: String;&lt;br /&gt;
    property AttachDate: TGWSSerializedDateTime;&lt;br /&gt;
    &lt;br /&gt;
    Datos de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefFiles = array of TGWSRefFile;&lt;br /&gt;
&lt;br /&gt;
 TGWSFile = class(TGWSRefFile)&lt;br /&gt;
    property Content: TByteDynArray;&lt;br /&gt;
    &lt;br /&gt;
    Contenido completo de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
==Notificaciones==&lt;br /&gt;
 TGWSNotification = class&lt;br /&gt;
    property Identifier: String read FIdentifier write FIdentifier;&lt;br /&gt;
    property Name: String read FName write FName;&lt;br /&gt;
    &lt;br /&gt;
    Notificación pendiente en un trámite. Incluye el identificador de la tarea de notificación &lt;br /&gt;
    que está pendiente de acusar recibo y un nombre descriptivo para mostrar al usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayNotifications = array of TGWSNotification;&lt;br /&gt;
&lt;br /&gt;
 TGWSListNotifications = class(TRemotable)&lt;br /&gt;
    property Notifications: TGWSArrayNotifications read FNotifications write FNotifications;&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 TGWSRegistrationForm = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    &lt;br /&gt;
    Formulario de registro de un usuario. Incluye solo los campos adicionales. Los campos &lt;br /&gt;
    obligatorios (nombre, nombre completo, nif, correo electrónico), no están incluidos en el &lt;br /&gt;
    formulario. La definición de los campos de registro se describe en un fichero XML.&lt;br /&gt;
&lt;br /&gt;
 TGWSRefUser = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property UserName: String;&lt;br /&gt;
    property FullName: String;&lt;br /&gt;
    property Nif: String;&lt;br /&gt;
    property EMail: String;&lt;br /&gt;
    property IdOrganization;&lt;br /&gt;
    &lt;br /&gt;
    Datos básicos de un usuario, se usa para listados de usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefUsers = array of TGWSRefUser;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefUsers = class&lt;br /&gt;
    property RefUsers: TGWSArrayRefUsers;&lt;br /&gt;
&lt;br /&gt;
 TGWSUser = class(TGWSRefUser)&lt;br /&gt;
    property RegistrationForm: TGWSRegistrationForm;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos de un usuario, incluyendo los datos del formulario de registro.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchUsersArg = class&lt;br /&gt;
    property Condition: STring;&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 TGWSOrganization = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property Name: String read;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una organización. La organización permite agrupar los usuarios, de forma que los &lt;br /&gt;
    todos los usuarios individuales que pertenezcan a una organización tienen acceso a todos los &lt;br /&gt;
    trámites que haya iniciado cualquier miembro de la organización.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayOrganizations = array of TGWSOrganization;&lt;br /&gt;
&lt;br /&gt;
 TGWSListOrganizations = class&lt;br /&gt;
    property Organizations: TGWSArrayOrganizations;&lt;br /&gt;
&lt;br /&gt;
=API de usuario=&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSession(IdUnit: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdUnit: Identificador del usuario o centro gestor que inicia sesión.&lt;br /&gt;
         Data: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSession(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: TGWSRefUser; out Error: TGWSError)&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
         Data: Datos básicos del usuario que inició sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado &lt;br /&gt;
         válido de la FNMT o DNIe. &lt;br /&gt;
         El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSession(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 RegisterAllowed(out Data: Boolean; out Error: TGWSError)&lt;br /&gt;
 Indica si el resgistro libre de nuevos usuarios está disponible.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Verdadero si está permitido el registro libre de usuarios.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadRegisterForm(out Data: TGWSRegistrationForm; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el formulario de registro de usuarios.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Formulario de registro de usuarios.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     El formulario de registro contiene los campos adicionales a los 4 campos obligatorios que son “nombre”, “nombre completo”, &lt;br /&gt;
     “nif” y “correo electrónico”.&lt;br /&gt;
&lt;br /&gt;
 RegisterUser(const UserName: String; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
              RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. El formulario de registro se puede obtener llamando a la &lt;br /&gt;
     función “LoadRegisterForm”. Esta función solo está disponible si el registro libre está permitido. &lt;br /&gt;
     Consultar la función “RegisterAllowed”.&lt;br /&gt;
&lt;br /&gt;
 LoadUser(IdSession: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Permite obtener los datos del usuario actual que inició sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Datos del usuario.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveUser(IdSession: TGWSIdentifier; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
          RegistrationData: TGWSRegistrationForm; out Error: TGWSError)&lt;br /&gt;
 Permite modificar los datos del usuario actual.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Procedimientos==&lt;br /&gt;
 LoadProcedures(IdSession: TGWSIdentifier; out Data: TGWSListRefProcedure; out Error: TGWSError)&lt;br /&gt;
 Obtiene lista de definiciones básicas de procedimientos.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Lista de definiciones básicas de procedimiento.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcedure(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; out Data: TGWSProcedure; out Error: TGWSError)&lt;br /&gt;
 Permite obtener la definición completa de un procedimiento que se indique.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento.&lt;br /&gt;
     Data: Definición completa del procedimiento.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 LoadProcesses(IdSession: TGWSIdentifier; SearchParams: TGWSSearchProcessArg; out Data: TGWSListRefProcess; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de trámites (descripción abreviada) del usuario que cumplan las condiciones indicadas &lt;br /&gt;
 en el parámetro de búsqueda.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de trámites (descripción abreviada).&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Carga un trámite completo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Contenido completo del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     Si el trámite tiene notificaciones pendientes, el sistema no permite abrir el trámite. Es necesario confirmar &lt;br /&gt;
     la recepción de las notificaciones antes de abrir el trámite, haciendo uso de las tareas &lt;br /&gt;
     “LoadProcessNotifications”, “LoadTaskSerialization” y “SendTask”.&lt;br /&gt;
&lt;br /&gt;
 LoadProcessNotifications(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; &lt;br /&gt;
                          out Data: TGWSListNotifications; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de las notificaciones pendientes del trámite. &lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Lista de notificaciones pendientes del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles: &lt;br /&gt;
     Cuando un proceso tenga notificaciones pendientes, será necesario cargar cada una de las tareas &lt;br /&gt;
     indicadas por las notificaciones, firmarlas y enviarlas para confirmar la recepción de dichas notificaciones.&lt;br /&gt;
&lt;br /&gt;
 CreateProcess(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; ProcessLabel: String; &lt;br /&gt;
               out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Crea un trámite basado en una definición de procedimiento. Le asigna una etiqueta al nuevo trámite creado, &lt;br /&gt;
 para facilitar la localización del mismo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento que sirve como definición del trámite a crear.&lt;br /&gt;
     ProcessLabel: Etiqueta identificativa del nuevo trámite.&lt;br /&gt;
     Data: Proceso creado.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda eliminar un trámite, es necesario que no se haya enviado ninguna tarea asociada al mismo.&lt;br /&gt;
&lt;br /&gt;
 ArchiveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Archiva el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda archivar el trámite, es necesario que este haya finalizado.&lt;br /&gt;
&lt;br /&gt;
==Tareas de los trámites==&lt;br /&gt;
 CreateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTaskDefinition: TGWSIdentifier; out Data: TGWSTask; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Crea una tarea dentro del trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTaskDefinition: Tipo de tarea a crear.&lt;br /&gt;
     Data: Tarea creada.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; Task: TGWSTask; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios realizados en una tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Task: Tarea que se va a modificar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser guardada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 RemoveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea a eliminar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser eliminada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 LoadTaskSerialization(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; &lt;br /&gt;
                       out Data: String; out Error: TGWSError)&lt;br /&gt;
 Carga el contenido serializado de una tarea. Este contenido serializado es el que habrá de ser firmado &lt;br /&gt;
 cuando se quiera enviar la tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Data: Serialización de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 ValidateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSErrorValidateTask); &lt;br /&gt;
 Comprueba las condiciones de validación que se hayan definido sobre la tarea. Si no se cumplen alguna o algunas de las &lt;br /&gt;
 condiciones, vendrá indicado en el parámetro de salida “Error”.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 SendTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; Signature: TGSignature; &lt;br /&gt;
          out Error: TGWSErrorValidateTask)&lt;br /&gt;
 Envía la tarea al backoffice, para que continue el trámite. La tarea ha de cumplir las validaciones definidas.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Signature: Firma de la serialización de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 ResponseTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Genera una tarea de respuesta a una tarea que haya sido recibida.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Ficheros adjuntos de los trámites==&lt;br /&gt;
 LoadFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
          out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el contenido de un fichero que pertenezca una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 AttachFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; FileName: String; Content: TByteDynArray; &lt;br /&gt;
            out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Adjunta un nuevo fichero a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     FileName: Nombre del fichero.&lt;br /&gt;
     Content: Contenido del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Elimina un fichero que haya sido adjuntado a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles.&lt;br /&gt;
     Para que un fichero pueda ser eliminado de la tarea, la tarea no puede haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
=Api de administración=&lt;br /&gt;
&lt;br /&gt;
=Códigos de error=&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5748</id>
		<title>API del Web Service STE</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5748"/>
				<updated>2010-04-06T08:28:44Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: /* API de usuario */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Tipos=&lt;br /&gt;
&lt;br /&gt;
==Basicos==&lt;br /&gt;
 TGArrayInteger = array of integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSSerializedDateTime = String;&lt;br /&gt;
&lt;br /&gt;
 TGWSIdentifier = String;&lt;br /&gt;
&lt;br /&gt;
 TGSignature = TByteDynArray; &lt;br /&gt;
 &lt;br /&gt;
    Array de bytes usado para enviar datos binarios (ficheros, firmas, etc.).&lt;br /&gt;
&lt;br /&gt;
==Errores==&lt;br /&gt;
 TGWSErrorCode = Integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldError = class&lt;br /&gt;
    property FieldDefinitionPath: String;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción de error en un campo. Indica el campo afectado y el error correspondiente.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldError = array of TGWSFieldError;&lt;br /&gt;
&lt;br /&gt;
 TGWSError = class&lt;br /&gt;
    property ErrorCode: TGWSErrorCode;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Error general.&lt;br /&gt;
&lt;br /&gt;
 TGWSErrorValidateTask = class(TGWSError)&lt;br /&gt;
    property FieldErrors: TGWSArrayFieldError;&lt;br /&gt;
    &lt;br /&gt;
    Error en la validación o envío de una tarea. Detalla los errores de los campos.&lt;br /&gt;
&lt;br /&gt;
==Procedimentos (definiciones)==&lt;br /&gt;
 TGWSFieldType = (ftDummy, ftBoolean, ftInteger, ftReal, ftString, ftMemo, ftDatetime, ftCurrency, ftTable);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property LabelField: String;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Section: String;&lt;br /&gt;
    property Visible: Boolean;&lt;br /&gt;
    property Editable: Boolean;&lt;br /&gt;
    property Required: Boolean;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de campo. Si es un campo tabla, incluye las definiciones de las columnas.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldDefinition = array of TGWSFieldDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldDefinition = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition; &lt;br /&gt;
&lt;br /&gt;
 TGWSTaskType = (ttStart, ttSendDocumentation, ttRequirement, ttNotification, ttResponse);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de tarea. &lt;br /&gt;
    Todo proceso ha de tener al menos una tarea de inicio (ttStart). &lt;br /&gt;
    Las tareas de envío de documentación (ttSendDocumentation) permiten añadir documentación a un trámite en cualquier momento.&lt;br /&gt;
    Las tareas de requerimiento se usan para solicitar la participación del interesado en algún momento del trámite, requiriendole para que aporte más documentación a un trámite, por medio de una tarea de respuesta (ttResponse).&lt;br /&gt;
    Las tareas de notificación sirven para informar al interesado de cualquier incidencia en el trámite. Se debe acusar recibo de este tipo de tareas para poder consultar el trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSTaskDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameTask: String;&lt;br /&gt;
    property LabelTask: String;&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property TaskType: TGWSTaskType;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de tarea. Incluye las definiciones de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTaskDefinition = array of TGWSTaskDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcedure = class&lt;br /&gt;
    property Identifier: TGWSIdentifier&lt;br /&gt;
    property NameProcedure: String&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property Group: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada del procedimento, que se usa obtener los datos fundamentales de un procedimento al cargar listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcedure = array of TGWSRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcedure = class&lt;br /&gt;
    property RefProcedures: TGWSArrayRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcedure = class(TGWSRefProcedure)&lt;br /&gt;
    property TaskDefinitions: TGWSArrayTaskDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Descripción completa del procedimiento.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 TGWSProcessStatus = (psCreated, psStarted, psFinished, psArchived, psDeleted, psAll);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar un trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayProcessStatus = array of TGWSProcessStatus;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcess = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property RefProcedure: TGWSRefProcedure;&lt;br /&gt;
    property LabelProcess: String;&lt;br /&gt;
    property Status: TGWSProcessStatus;&lt;br /&gt;
    property CreateDate: TGWSSerializedDateTime;&lt;br /&gt;
    property StartDate: TGWSSerializedDateTime;&lt;br /&gt;
    property EndDate: TGWSSerializedDateTime;&lt;br /&gt;
    property TramitationStatus: String; &lt;br /&gt;
    property TaskCount: Integer;&lt;br /&gt;
    property LastTaskName: String;&lt;br /&gt;
    property LastTaskDate: TGWSSerializedDateTime;&lt;br /&gt;
    property HasPendingTasks: Boolean read;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada de un trámite, usada para obtener los datos fundamentales de un trámite en listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcess = array of TGWSRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcess = class&lt;br /&gt;
    property RefProcesses: TGWSArrayRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcess = class(TGWSRefProcess)&lt;br /&gt;
    property Tasks: TGWSArrayTasks read FTasks write FTasks;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos del trámite, incluyendo las tareas que forman parte del mismo.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchProcessArg = class&lt;br /&gt;
    property Status: TGWSArrayProcessStatus;&lt;br /&gt;
    property Condition: String;&lt;br /&gt;
    &lt;br /&gt;
    Parámetros de búsqueda usados para indicar los criterios de búsqueda de trámites.&lt;br /&gt;
&lt;br /&gt;
==Tareas==&lt;br /&gt;
 TGWSTaskStatus = (wsTaskCreated, wsTaskSended, wsTaskReceived, wsTaskResponsed);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSTask = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property Status: TGWSTaskStatus;&lt;br /&gt;
    property CreateOrReceiveDate: TGWSSerializedDateTime;&lt;br /&gt;
    property SendOrResponseDate: TGWSSerializedDateTime;&lt;br /&gt;
    property Files: TGWSArrayRefFiles;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    property Signature: TGSignature;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una tarea. Incluye la información de los campos y los archivos adjuntos, así como la firma digital de la tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTasks = array of TGWSTask;&lt;br /&gt;
&lt;br /&gt;
==Campos==&lt;br /&gt;
 TGWSArrayValues = array of String;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldAllowedValues = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property AllowedValues: TGWSArrayValues;&lt;br /&gt;
    &lt;br /&gt;
    Listado de valores permitidos para un campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldAllowedValues = array of TGWSFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldAllowedValues = class&lt;br /&gt;
    property FieldAllowedValues: TGWSArrayFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldValue = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Value: String read FValue write FValue;&lt;br /&gt;
    property RowsAllowedValues: TGWSListFieldAllowedValues; &lt;br /&gt;
    property Rows: TGWSArrayRows;&lt;br /&gt;
    &lt;br /&gt;
    Campo. Para facilitar la operación con este tipo, se ha añadido el atributo “tipo”, que también está disponible en la definición de campo. Si el campo es de tipo tabla, incluye la información de las filas de la tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldValue = array of TGWSFieldValue;&lt;br /&gt;
&lt;br /&gt;
 TGWSRow = class&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    &lt;br /&gt;
    Fila de campos tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRows = array of TGWSRow;&lt;br /&gt;
&lt;br /&gt;
==Ficheros==&lt;br /&gt;
 TGWSRefFile = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameFile: String;&lt;br /&gt;
    property AttachDate: TGWSSerializedDateTime;&lt;br /&gt;
    &lt;br /&gt;
    Datos de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefFiles = array of TGWSRefFile;&lt;br /&gt;
&lt;br /&gt;
 TGWSFile = class(TGWSRefFile)&lt;br /&gt;
    property Content: TByteDynArray;&lt;br /&gt;
    &lt;br /&gt;
    Contenido completo de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
==Notificaciones==&lt;br /&gt;
 TGWSNotification = class&lt;br /&gt;
    property Identifier: String read FIdentifier write FIdentifier;&lt;br /&gt;
    property Name: String read FName write FName;&lt;br /&gt;
    &lt;br /&gt;
    Notificación pendiente en un trámite. Incluye el identificador de la tarea de notificación que está pendiente de acusar recibo y un nombre descriptivo para mostrar al usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayNotifications = array of TGWSNotification;&lt;br /&gt;
&lt;br /&gt;
 TGWSListNotifications = class(TRemotable)&lt;br /&gt;
    property Notifications: TGWSArrayNotifications read FNotifications write FNotifications;&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 TGWSRegistrationForm = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    &lt;br /&gt;
    Formulario de registro de un usuario. Incluye solo los campos adicionales. Los campos obligatorios (nombre, nombre completo, nif, correo electrónico), no están incluidos en el formulario. La definición de los campos de registro se describe en un fichero XML.&lt;br /&gt;
&lt;br /&gt;
 TGWSRefUser = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property UserName: String;&lt;br /&gt;
    property FullName: String;&lt;br /&gt;
    property Nif: String;&lt;br /&gt;
    property EMail: String;&lt;br /&gt;
    property IdOrganization;&lt;br /&gt;
    &lt;br /&gt;
    Datos básicos de un usuario, se usa para listados de usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefUsers = array of TGWSRefUser;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefUsers = class&lt;br /&gt;
    property RefUsers: TGWSArrayRefUsers;&lt;br /&gt;
&lt;br /&gt;
 TGWSUser = class(TGWSRefUser)&lt;br /&gt;
    property RegistrationForm: TGWSRegistrationForm;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos de un usuario, incluyendo los datos del formulario de registro.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchUsersArg = class&lt;br /&gt;
    property Condition: STring;&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 TGWSOrganization = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property Name: String read;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una organización. La organización permite agrupar los usuarios, de forma que los todos los usuarios individuales que pertenezcan a una organización tienen acceso a todos los trámites que haya iniciado cualquier miembro de la organización.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayOrganizations = array of TGWSOrganization;&lt;br /&gt;
&lt;br /&gt;
 TGWSListOrganizations = class&lt;br /&gt;
    property Organizations: TGWSArrayOrganizations;&lt;br /&gt;
 &lt;br /&gt;
=API de usuario=&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSession(IdUnit: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdUnit: Identificador del usuario o centro gestor que inicia sesión.&lt;br /&gt;
         Data: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSession(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: TGWSRefUser; out Error: TGWSError)&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
         Data: Datos básicos del usuario que inició sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado &lt;br /&gt;
         válido de la FNMT o DNIe. &lt;br /&gt;
         El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSession(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 RegisterAllowed(out Data: Boolean; out Error: TGWSError)&lt;br /&gt;
 Indica si el resgistro libre de nuevos usuarios está disponible.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Verdadero si está permitido el registro libre de usuarios.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadRegisterForm(out Data: TGWSRegistrationForm; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el formulario de registro de usuarios.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Formulario de registro de usuarios.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     El formulario de registro contiene los campos adicionales a los 4 campos obligatorios que son “nombre”, “nombre completo”, &lt;br /&gt;
     “nif” y “correo electrónico”.&lt;br /&gt;
&lt;br /&gt;
 RegisterUser(const UserName: String; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
              RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. El formulario de registro se puede obtener llamando a la &lt;br /&gt;
     función “LoadRegisterForm”. Esta función solo está disponible si el registro libre está permitido. &lt;br /&gt;
     Consultar la función “RegisterAllowed”.&lt;br /&gt;
&lt;br /&gt;
 LoadUser(IdSession: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Permite obtener los datos del usuario actual que inició sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Datos del usuario.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveUser(IdSession: TGWSIdentifier; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
          RegistrationData: TGWSRegistrationForm; out Error: TGWSError)&lt;br /&gt;
 Permite modificar los datos del usuario actual.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Procedimientos==&lt;br /&gt;
 LoadProcedures(IdSession: TGWSIdentifier; out Data: TGWSListRefProcedure; out Error: TGWSError)&lt;br /&gt;
 Obtiene lista de definiciones básicas de procedimientos.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Lista de definiciones básicas de procedimiento.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcedure(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; out Data: TGWSProcedure; out Error: TGWSError)&lt;br /&gt;
 Permite obtener la definición completa de un procedimiento que se indique.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento.&lt;br /&gt;
     Data: Definición completa del procedimiento.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 LoadProcesses(IdSession: TGWSIdentifier; SearchParams: TGWSSearchProcessArg; out Data: TGWSListRefProcess; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de trámites (descripción abreviada) del usuario que cumplan las condiciones indicadas &lt;br /&gt;
 en el parámetro de búsqueda.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de trámites (descripción abreviada).&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Carga un trámite completo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Contenido completo del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     Si el trámite tiene notificaciones pendientes, el sistema no permite abrir el trámite. Es necesario confirmar &lt;br /&gt;
     la recepción de las notificaciones antes de abrir el trámite, haciendo uso de las tareas &lt;br /&gt;
     “LoadProcessNotifications”, “LoadTaskSerialization” y “SendTask”.&lt;br /&gt;
&lt;br /&gt;
 LoadProcessNotifications(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; &lt;br /&gt;
                          out Data: TGWSListNotifications; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de las notificaciones pendientes del trámite. &lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Lista de notificaciones pendientes del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles: &lt;br /&gt;
     Cuando un proceso tenga notificaciones pendientes, será necesario cargar cada una de las tareas &lt;br /&gt;
     indicadas por las notificaciones, firmarlas y enviarlas para confirmar la recepción de dichas notificaciones.&lt;br /&gt;
&lt;br /&gt;
 CreateProcess(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; ProcessLabel: String; &lt;br /&gt;
               out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Crea un trámite basado en una definición de procedimiento. Le asigna una etiqueta al nuevo trámite creado, &lt;br /&gt;
 para facilitar la localización del mismo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento que sirve como definición del trámite a crear.&lt;br /&gt;
     ProcessLabel: Etiqueta identificativa del nuevo trámite.&lt;br /&gt;
     Data: Proceso creado.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda eliminar un trámite, es necesario que no se haya enviado ninguna tarea asociada al mismo.&lt;br /&gt;
&lt;br /&gt;
 ArchiveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Archiva el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda archivar el trámite, es necesario que este haya finalizado.&lt;br /&gt;
&lt;br /&gt;
==Tareas de los trámites==&lt;br /&gt;
 CreateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTaskDefinition: TGWSIdentifier; out Data: TGWSTask; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Crea una tarea dentro del trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTaskDefinition: Tipo de tarea a crear.&lt;br /&gt;
     Data: Tarea creada.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; Task: TGWSTask; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios realizados en una tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Task: Tarea que se va a modificar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser guardada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 RemoveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea a eliminar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser eliminada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 LoadTaskSerialization(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; &lt;br /&gt;
                       out Data: String; out Error: TGWSError)&lt;br /&gt;
 Carga el contenido serializado de una tarea. Este contenido serializado es el que habrá de ser firmado &lt;br /&gt;
 cuando se quiera enviar la tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Data: Serialización de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 ValidateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSErrorValidateTask); &lt;br /&gt;
 Comprueba las condiciones de validación que se hayan definido sobre la tarea. Si no se cumplen alguna o algunas de las &lt;br /&gt;
 condiciones, vendrá indicado en el parámetro de salida “Error”.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 SendTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; Signature: TGSignature; &lt;br /&gt;
          out Error: TGWSErrorValidateTask)&lt;br /&gt;
 Envía la tarea al backoffice, para que continue el trámite. La tarea ha de cumplir las validaciones definidas.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Signature: Firma de la serialización de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, &lt;br /&gt;
 cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 ResponseTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Genera una tarea de respuesta a una tarea que haya sido recibida.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Ficheros adjuntos de los trámites==&lt;br /&gt;
 LoadFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
          out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el contenido de un fichero que pertenezca una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 AttachFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; FileName: String; Content: TByteDynArray; &lt;br /&gt;
            out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Adjunta un nuevo fichero a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     FileName: Nombre del fichero.&lt;br /&gt;
     Content: Contenido del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Elimina un fichero que haya sido adjuntado a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles.&lt;br /&gt;
     Para que un fichero pueda ser eliminado de la tarea, la tarea no puede haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
=Api de administración=&lt;br /&gt;
&lt;br /&gt;
=Códigos de error=&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5747</id>
		<title>API del Web Service STE</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5747"/>
				<updated>2010-04-06T08:25:18Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: /* API de usuario */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Tipos=&lt;br /&gt;
&lt;br /&gt;
==Basicos==&lt;br /&gt;
 TGArrayInteger = array of integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSSerializedDateTime = String;&lt;br /&gt;
&lt;br /&gt;
 TGWSIdentifier = String;&lt;br /&gt;
&lt;br /&gt;
 TGSignature = TByteDynArray; &lt;br /&gt;
 &lt;br /&gt;
    Array de bytes usado para enviar datos binarios (ficheros, firmas, etc.).&lt;br /&gt;
&lt;br /&gt;
==Errores==&lt;br /&gt;
 TGWSErrorCode = Integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldError = class&lt;br /&gt;
    property FieldDefinitionPath: String;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción de error en un campo. Indica el campo afectado y el error correspondiente.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldError = array of TGWSFieldError;&lt;br /&gt;
&lt;br /&gt;
 TGWSError = class&lt;br /&gt;
    property ErrorCode: TGWSErrorCode;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Error general.&lt;br /&gt;
&lt;br /&gt;
 TGWSErrorValidateTask = class(TGWSError)&lt;br /&gt;
    property FieldErrors: TGWSArrayFieldError;&lt;br /&gt;
    &lt;br /&gt;
    Error en la validación o envío de una tarea. Detalla los errores de los campos.&lt;br /&gt;
&lt;br /&gt;
==Procedimentos (definiciones)==&lt;br /&gt;
 TGWSFieldType = (ftDummy, ftBoolean, ftInteger, ftReal, ftString, ftMemo, ftDatetime, ftCurrency, ftTable);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property LabelField: String;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Section: String;&lt;br /&gt;
    property Visible: Boolean;&lt;br /&gt;
    property Editable: Boolean;&lt;br /&gt;
    property Required: Boolean;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de campo. Si es un campo tabla, incluye las definiciones de las columnas.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldDefinition = array of TGWSFieldDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldDefinition = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition; &lt;br /&gt;
&lt;br /&gt;
 TGWSTaskType = (ttStart, ttSendDocumentation, ttRequirement, ttNotification, ttResponse);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de tarea. &lt;br /&gt;
    Todo proceso ha de tener al menos una tarea de inicio (ttStart). &lt;br /&gt;
    Las tareas de envío de documentación (ttSendDocumentation) permiten añadir documentación a un trámite en cualquier momento.&lt;br /&gt;
    Las tareas de requerimiento se usan para solicitar la participación del interesado en algún momento del trámite, requiriendole para que aporte más documentación a un trámite, por medio de una tarea de respuesta (ttResponse).&lt;br /&gt;
    Las tareas de notificación sirven para informar al interesado de cualquier incidencia en el trámite. Se debe acusar recibo de este tipo de tareas para poder consultar el trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSTaskDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameTask: String;&lt;br /&gt;
    property LabelTask: String;&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property TaskType: TGWSTaskType;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de tarea. Incluye las definiciones de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTaskDefinition = array of TGWSTaskDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcedure = class&lt;br /&gt;
    property Identifier: TGWSIdentifier&lt;br /&gt;
    property NameProcedure: String&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property Group: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada del procedimento, que se usa obtener los datos fundamentales de un procedimento al cargar listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcedure = array of TGWSRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcedure = class&lt;br /&gt;
    property RefProcedures: TGWSArrayRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcedure = class(TGWSRefProcedure)&lt;br /&gt;
    property TaskDefinitions: TGWSArrayTaskDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Descripción completa del procedimiento.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 TGWSProcessStatus = (psCreated, psStarted, psFinished, psArchived, psDeleted, psAll);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar un trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayProcessStatus = array of TGWSProcessStatus;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcess = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property RefProcedure: TGWSRefProcedure;&lt;br /&gt;
    property LabelProcess: String;&lt;br /&gt;
    property Status: TGWSProcessStatus;&lt;br /&gt;
    property CreateDate: TGWSSerializedDateTime;&lt;br /&gt;
    property StartDate: TGWSSerializedDateTime;&lt;br /&gt;
    property EndDate: TGWSSerializedDateTime;&lt;br /&gt;
    property TramitationStatus: String; &lt;br /&gt;
    property TaskCount: Integer;&lt;br /&gt;
    property LastTaskName: String;&lt;br /&gt;
    property LastTaskDate: TGWSSerializedDateTime;&lt;br /&gt;
    property HasPendingTasks: Boolean read;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada de un trámite, usada para obtener los datos fundamentales de un trámite en listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcess = array of TGWSRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcess = class&lt;br /&gt;
    property RefProcesses: TGWSArrayRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcess = class(TGWSRefProcess)&lt;br /&gt;
    property Tasks: TGWSArrayTasks read FTasks write FTasks;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos del trámite, incluyendo las tareas que forman parte del mismo.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchProcessArg = class&lt;br /&gt;
    property Status: TGWSArrayProcessStatus;&lt;br /&gt;
    property Condition: String;&lt;br /&gt;
    &lt;br /&gt;
    Parámetros de búsqueda usados para indicar los criterios de búsqueda de trámites.&lt;br /&gt;
&lt;br /&gt;
==Tareas==&lt;br /&gt;
 TGWSTaskStatus = (wsTaskCreated, wsTaskSended, wsTaskReceived, wsTaskResponsed);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSTask = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property Status: TGWSTaskStatus;&lt;br /&gt;
    property CreateOrReceiveDate: TGWSSerializedDateTime;&lt;br /&gt;
    property SendOrResponseDate: TGWSSerializedDateTime;&lt;br /&gt;
    property Files: TGWSArrayRefFiles;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    property Signature: TGSignature;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una tarea. Incluye la información de los campos y los archivos adjuntos, así como la firma digital de la tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTasks = array of TGWSTask;&lt;br /&gt;
&lt;br /&gt;
==Campos==&lt;br /&gt;
 TGWSArrayValues = array of String;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldAllowedValues = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property AllowedValues: TGWSArrayValues;&lt;br /&gt;
    &lt;br /&gt;
    Listado de valores permitidos para un campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldAllowedValues = array of TGWSFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldAllowedValues = class&lt;br /&gt;
    property FieldAllowedValues: TGWSArrayFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldValue = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Value: String read FValue write FValue;&lt;br /&gt;
    property RowsAllowedValues: TGWSListFieldAllowedValues; &lt;br /&gt;
    property Rows: TGWSArrayRows;&lt;br /&gt;
    &lt;br /&gt;
    Campo. Para facilitar la operación con este tipo, se ha añadido el atributo “tipo”, que también está disponible en la definición de campo. Si el campo es de tipo tabla, incluye la información de las filas de la tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldValue = array of TGWSFieldValue;&lt;br /&gt;
&lt;br /&gt;
 TGWSRow = class&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    &lt;br /&gt;
    Fila de campos tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRows = array of TGWSRow;&lt;br /&gt;
&lt;br /&gt;
==Ficheros==&lt;br /&gt;
 TGWSRefFile = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameFile: String;&lt;br /&gt;
    property AttachDate: TGWSSerializedDateTime;&lt;br /&gt;
    &lt;br /&gt;
    Datos de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefFiles = array of TGWSRefFile;&lt;br /&gt;
&lt;br /&gt;
 TGWSFile = class(TGWSRefFile)&lt;br /&gt;
    property Content: TByteDynArray;&lt;br /&gt;
    &lt;br /&gt;
    Contenido completo de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
==Notificaciones==&lt;br /&gt;
 TGWSNotification = class&lt;br /&gt;
    property Identifier: String read FIdentifier write FIdentifier;&lt;br /&gt;
    property Name: String read FName write FName;&lt;br /&gt;
    &lt;br /&gt;
    Notificación pendiente en un trámite. Incluye el identificador de la tarea de notificación que está pendiente de acusar recibo y un nombre descriptivo para mostrar al usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayNotifications = array of TGWSNotification;&lt;br /&gt;
&lt;br /&gt;
 TGWSListNotifications = class(TRemotable)&lt;br /&gt;
    property Notifications: TGWSArrayNotifications read FNotifications write FNotifications;&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 TGWSRegistrationForm = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    &lt;br /&gt;
    Formulario de registro de un usuario. Incluye solo los campos adicionales. Los campos obligatorios (nombre, nombre completo, nif, correo electrónico), no están incluidos en el formulario. La definición de los campos de registro se describe en un fichero XML.&lt;br /&gt;
&lt;br /&gt;
 TGWSRefUser = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property UserName: String;&lt;br /&gt;
    property FullName: String;&lt;br /&gt;
    property Nif: String;&lt;br /&gt;
    property EMail: String;&lt;br /&gt;
    property IdOrganization;&lt;br /&gt;
    &lt;br /&gt;
    Datos básicos de un usuario, se usa para listados de usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefUsers = array of TGWSRefUser;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefUsers = class&lt;br /&gt;
    property RefUsers: TGWSArrayRefUsers;&lt;br /&gt;
&lt;br /&gt;
 TGWSUser = class(TGWSRefUser)&lt;br /&gt;
    property RegistrationForm: TGWSRegistrationForm;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos de un usuario, incluyendo los datos del formulario de registro.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchUsersArg = class&lt;br /&gt;
    property Condition: STring;&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 TGWSOrganization = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property Name: String read;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una organización. La organización permite agrupar los usuarios, de forma que los todos los usuarios individuales que pertenezcan a una organización tienen acceso a todos los trámites que haya iniciado cualquier miembro de la organización.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayOrganizations = array of TGWSOrganization;&lt;br /&gt;
&lt;br /&gt;
 TGWSListOrganizations = class&lt;br /&gt;
    property Organizations: TGWSArrayOrganizations;&lt;br /&gt;
 &lt;br /&gt;
=API de usuario=&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSession(IdUnit: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdUnit: Identificador del usuario o centro gestor que inicia sesión.&lt;br /&gt;
         Data: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSession(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: TGWSRefUser; out Error: TGWSError)&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
         Data: Datos básicos del usuario que inició sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado válido de la FNMT o DNIe. &lt;br /&gt;
         El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSession(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 RegisterAllowed(out Data: Boolean; out Error: TGWSError)&lt;br /&gt;
 Indica si el resgistro libre de nuevos usuarios está disponible.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Verdadero si está permitido el registro libre de usuarios.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadRegisterForm(out Data: TGWSRegistrationForm; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el formulario de registro de usuarios.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Formulario de registro de usuarios.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     El formulario de registro contiene los campos adicionales a los 4 campos obligatorios que son “nombre”, “nombre completo”, &lt;br /&gt;
     “nif” y “correo electrónico”.&lt;br /&gt;
&lt;br /&gt;
 RegisterUser(const UserName: String; const FullName: String; const NIF: String; const EMail: String; RegistrationData: TGWSRegistrationForm; &lt;br /&gt;
              out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. El formulario de registro se puede obtener llamando a la &lt;br /&gt;
     función “LoadRegisterForm”. Esta función solo está disponible si el registro libre está permitido. Consultar la función “RegisterAllowed”.&lt;br /&gt;
&lt;br /&gt;
 LoadUser(IdSession: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Permite obtener los datos del usuario actual que inició sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Datos del usuario.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveUser(IdSession: TGWSIdentifier; const FullName: String; const NIF: String; const EMail: String; &lt;br /&gt;
          RegistrationData: TGWSRegistrationForm; out Error: TGWSError)&lt;br /&gt;
 Permite modificar los datos del usuario actual.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Procedimientos==&lt;br /&gt;
 LoadProcedures(IdSession: TGWSIdentifier; out Data: TGWSListRefProcedure; out Error: TGWSError)&lt;br /&gt;
 Obtiene lista de definiciones básicas de procedimientos.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Lista de definiciones básicas de procedimiento.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcedure(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; out Data: TGWSProcedure; out Error: TGWSError)&lt;br /&gt;
 Permite obtener la definición completa de un procedimiento que se indique.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento.&lt;br /&gt;
     Data: Definición completa del procedimiento.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 LoadProcesses(IdSession: TGWSIdentifier; SearchParams: TGWSSearchProcessArg; out Data: TGWSListRefProcess; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de trámites (descripción abreviada) del usuario que cumplan las condiciones indicadas en el parámetro de búsqueda.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de trámites (descripción abreviada).&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Carga un trámite completo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Contenido completo del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     Si el trámite tiene notificaciones pendientes, el sistema no permite abrir el trámite. Es necesario confirmar la recepción de las notificaciones &lt;br /&gt;
     antes de abrir el trámite, haciendo uso de las tareas “LoadProcessNotifications”, “LoadTaskSerialization” y “SendTask”.&lt;br /&gt;
&lt;br /&gt;
 LoadProcessNotifications(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Data: TGWSListNotifications; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de las notificaciones pendientes del trámite. &lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Lista de notificaciones pendientes del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles: &lt;br /&gt;
     Cuando un proceso tenga notificaciones pendientes, será necesario cargar cada una de las tareas indicadas por las notificaciones, &lt;br /&gt;
     firmarlas y enviarlas para confirmar la recepción de dichas notificaciones.&lt;br /&gt;
&lt;br /&gt;
 CreateProcess(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; ProcessLabel: String; out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Crea un trámite basado en una definición de procedimiento. Le asigna una etiqueta al nuevo trámite creado, para facilitar la &lt;br /&gt;
 localización del mismo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento que sirve como definición del trámite a crear.&lt;br /&gt;
     ProcessLabel: Etiqueta identificativa del nuevo trámite.&lt;br /&gt;
     Data: Proceso creado.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda eliminar un trámite, es necesario que no se haya enviado ninguna tarea asociada al mismo.&lt;br /&gt;
&lt;br /&gt;
 ArchiveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Archiva el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda archivar el trámite, es necesario que este haya finalizado.&lt;br /&gt;
&lt;br /&gt;
==Tareas de los trámites==&lt;br /&gt;
 CreateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTaskDefinition: TGWSIdentifier; out Data: TGWSTask; &lt;br /&gt;
            out Error: TGWSError)&lt;br /&gt;
 Crea una tarea dentro del trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTaskDefinition: Tipo de tarea a crear.&lt;br /&gt;
     Data: Tarea creada.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; Task: TGWSTask; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios realizados en una tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Task: Tarea que se va a modificar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser guardada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 RemoveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea a eliminar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser eliminada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 LoadTaskSerialization(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; &lt;br /&gt;
                       out Data: String; out Error: TGWSError)&lt;br /&gt;
 Carga el contenido serializado de una tarea. Este contenido serializado es el que habrá de ser firmado &lt;br /&gt;
 cuando se quiera enviar la tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Data: Serialización de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 ValidateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSErrorValidateTask); &lt;br /&gt;
 Comprueba las condiciones de validación que se hayan definido sobre la tarea. Si no se cumplen alguna o algunas de las condiciones, &lt;br /&gt;
 vendrá indicado en el parámetro de salida “Error”.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, cuando sea posible, &lt;br /&gt;
 por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 SendTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; Signature: TGSignature; out Error: TGWSErrorValidateTask)&lt;br /&gt;
 Envía la tarea al backoffice, para que continue el trámite. La tarea ha de cumplir las validaciones definidas.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Signature: Firma de la serialización de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, cuando sea posible, &lt;br /&gt;
 por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 ResponseTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Genera una tarea de respuesta a una tarea que haya sido recibida.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Ficheros adjuntos de los trámites==&lt;br /&gt;
 LoadFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; &lt;br /&gt;
          out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el contenido de un fichero que pertenezca una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 AttachFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; FileName: String; Content: TByteDynArray; &lt;br /&gt;
            out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Adjunta un nuevo fichero a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     FileName: Nombre del fichero.&lt;br /&gt;
     Content: Contenido del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina un fichero que haya sido adjuntado a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles.&lt;br /&gt;
     Para que un fichero pueda ser eliminado de la tarea, la tarea no puede haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
=Api de administración=&lt;br /&gt;
&lt;br /&gt;
=Códigos de error=&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	<entry>
		<id>https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5746</id>
		<title>API del Web Service STE</title>
		<link rel="alternate" type="text/html" href="https://wiki.egeasy.es/index.php?title=API_del_Web_Service_STE&amp;diff=5746"/>
				<updated>2010-04-06T08:21:00Z</updated>
		
		<summary type="html">&lt;p&gt;Amendez: /* API de usuario */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Tipos=&lt;br /&gt;
&lt;br /&gt;
==Basicos==&lt;br /&gt;
 TGArrayInteger = array of integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSSerializedDateTime = String;&lt;br /&gt;
&lt;br /&gt;
 TGWSIdentifier = String;&lt;br /&gt;
&lt;br /&gt;
 TGSignature = TByteDynArray; &lt;br /&gt;
 &lt;br /&gt;
    Array de bytes usado para enviar datos binarios (ficheros, firmas, etc.).&lt;br /&gt;
&lt;br /&gt;
==Errores==&lt;br /&gt;
 TGWSErrorCode = Integer;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldError = class&lt;br /&gt;
    property FieldDefinitionPath: String;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción de error en un campo. Indica el campo afectado y el error correspondiente.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldError = array of TGWSFieldError;&lt;br /&gt;
&lt;br /&gt;
 TGWSError = class&lt;br /&gt;
    property ErrorCode: TGWSErrorCode;&lt;br /&gt;
    property ErrorMessage: String;&lt;br /&gt;
    &lt;br /&gt;
    Error general.&lt;br /&gt;
&lt;br /&gt;
 TGWSErrorValidateTask = class(TGWSError)&lt;br /&gt;
    property FieldErrors: TGWSArrayFieldError;&lt;br /&gt;
    &lt;br /&gt;
    Error en la validación o envío de una tarea. Detalla los errores de los campos.&lt;br /&gt;
&lt;br /&gt;
==Procedimentos (definiciones)==&lt;br /&gt;
 TGWSFieldType = (ftDummy, ftBoolean, ftInteger, ftReal, ftString, ftMemo, ftDatetime, ftCurrency, ftTable);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property LabelField: String;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Section: String;&lt;br /&gt;
    property Visible: Boolean;&lt;br /&gt;
    property Editable: Boolean;&lt;br /&gt;
    property Required: Boolean;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de campo. Si es un campo tabla, incluye las definiciones de las columnas.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldDefinition = array of TGWSFieldDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldDefinition = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition; &lt;br /&gt;
&lt;br /&gt;
 TGWSTaskType = (ttStart, ttSendDocumentation, ttRequirement, ttNotification, ttResponse);&lt;br /&gt;
    &lt;br /&gt;
    Tipos de tarea. &lt;br /&gt;
    Todo proceso ha de tener al menos una tarea de inicio (ttStart). &lt;br /&gt;
    Las tareas de envío de documentación (ttSendDocumentation) permiten añadir documentación a un trámite en cualquier momento.&lt;br /&gt;
    Las tareas de requerimiento se usan para solicitar la participación del interesado en algún momento del trámite, requiriendole para que aporte más documentación a un trámite, por medio de una tarea de respuesta (ttResponse).&lt;br /&gt;
    Las tareas de notificación sirven para informar al interesado de cualquier incidencia en el trámite. Se debe acusar recibo de este tipo de tareas para poder consultar el trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSTaskDefinition = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameTask: String;&lt;br /&gt;
    property LabelTask: String;&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property TaskType: TGWSTaskType;&lt;br /&gt;
    property FieldDefinitions: TGWSListFieldDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Definición de tarea. Incluye las definiciones de campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTaskDefinition = array of TGWSTaskDefinition;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcedure = class&lt;br /&gt;
    property Identifier: TGWSIdentifier&lt;br /&gt;
    property NameProcedure: String&lt;br /&gt;
    property Description: String;&lt;br /&gt;
    property Group: String;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada del procedimento, que se usa obtener los datos fundamentales de un procedimento al cargar listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcedure = array of TGWSRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcedure = class&lt;br /&gt;
    property RefProcedures: TGWSArrayRefProcedure;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcedure = class(TGWSRefProcedure)&lt;br /&gt;
    property TaskDefinitions: TGWSArrayTaskDefinition;&lt;br /&gt;
    &lt;br /&gt;
    Descripción completa del procedimiento.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 TGWSProcessStatus = (psCreated, psStarted, psFinished, psArchived, psDeleted, psAll);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar un trámite.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayProcessStatus = array of TGWSProcessStatus;&lt;br /&gt;
&lt;br /&gt;
 TGWSRefProcess = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property RefProcedure: TGWSRefProcedure;&lt;br /&gt;
    property LabelProcess: String;&lt;br /&gt;
    property Status: TGWSProcessStatus;&lt;br /&gt;
    property CreateDate: TGWSSerializedDateTime;&lt;br /&gt;
    property StartDate: TGWSSerializedDateTime;&lt;br /&gt;
    property EndDate: TGWSSerializedDateTime;&lt;br /&gt;
    property TramitationStatus: String; &lt;br /&gt;
    property TaskCount: Integer;&lt;br /&gt;
    property LastTaskName: String;&lt;br /&gt;
    property LastTaskDate: TGWSSerializedDateTime;&lt;br /&gt;
    property HasPendingTasks: Boolean read;&lt;br /&gt;
    &lt;br /&gt;
    Descripción abreviada de un trámite, usada para obtener los datos fundamentales de un trámite en listados.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefProcess = array of TGWSRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefProcess = class&lt;br /&gt;
    property RefProcesses: TGWSArrayRefProcess;&lt;br /&gt;
&lt;br /&gt;
 TGWSProcess = class(TGWSRefProcess)&lt;br /&gt;
    property Tasks: TGWSArrayTasks read FTasks write FTasks;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos del trámite, incluyendo las tareas que forman parte del mismo.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchProcessArg = class&lt;br /&gt;
    property Status: TGWSArrayProcessStatus;&lt;br /&gt;
    property Condition: String;&lt;br /&gt;
    &lt;br /&gt;
    Parámetros de búsqueda usados para indicar los criterios de búsqueda de trámites.&lt;br /&gt;
&lt;br /&gt;
==Tareas==&lt;br /&gt;
 TGWSTaskStatus = (wsTaskCreated, wsTaskSended, wsTaskReceived, wsTaskResponsed);&lt;br /&gt;
    &lt;br /&gt;
    Estados en los que se puede encontrar una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSTask = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property Status: TGWSTaskStatus;&lt;br /&gt;
    property CreateOrReceiveDate: TGWSSerializedDateTime;&lt;br /&gt;
    property SendOrResponseDate: TGWSSerializedDateTime;&lt;br /&gt;
    property Files: TGWSArrayRefFiles;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    property Signature: TGSignature;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una tarea. Incluye la información de los campos y los archivos adjuntos, así como la firma digital de la tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayTasks = array of TGWSTask;&lt;br /&gt;
&lt;br /&gt;
==Campos==&lt;br /&gt;
 TGWSArrayValues = array of String;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldAllowedValues = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property AllowedValues: TGWSArrayValues;&lt;br /&gt;
    &lt;br /&gt;
    Listado de valores permitidos para un campo.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldAllowedValues = array of TGWSFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSListFieldAllowedValues = class&lt;br /&gt;
    property FieldAllowedValues: TGWSArrayFieldAllowedValues;&lt;br /&gt;
&lt;br /&gt;
 TGWSFieldValue = class&lt;br /&gt;
    property DefinitionId: TGWSIdentifier;&lt;br /&gt;
    property FieldType: TGWSFieldType;&lt;br /&gt;
    property Value: String read FValue write FValue;&lt;br /&gt;
    property RowsAllowedValues: TGWSListFieldAllowedValues; &lt;br /&gt;
    property Rows: TGWSArrayRows;&lt;br /&gt;
    &lt;br /&gt;
    Campo. Para facilitar la operación con este tipo, se ha añadido el atributo “tipo”, que también está disponible en la definición de campo. Si el campo es de tipo tabla, incluye la información de las filas de la tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayFieldValue = array of TGWSFieldValue;&lt;br /&gt;
&lt;br /&gt;
 TGWSRow = class&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    &lt;br /&gt;
    Fila de campos tabla.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRows = array of TGWSRow;&lt;br /&gt;
&lt;br /&gt;
==Ficheros==&lt;br /&gt;
 TGWSRefFile = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property NameFile: String;&lt;br /&gt;
    property AttachDate: TGWSSerializedDateTime;&lt;br /&gt;
    &lt;br /&gt;
    Datos de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefFiles = array of TGWSRefFile;&lt;br /&gt;
&lt;br /&gt;
 TGWSFile = class(TGWSRefFile)&lt;br /&gt;
    property Content: TByteDynArray;&lt;br /&gt;
    &lt;br /&gt;
    Contenido completo de un fichero adjunto a una tarea.&lt;br /&gt;
&lt;br /&gt;
==Notificaciones==&lt;br /&gt;
 TGWSNotification = class&lt;br /&gt;
    property Identifier: String read FIdentifier write FIdentifier;&lt;br /&gt;
    property Name: String read FName write FName;&lt;br /&gt;
    &lt;br /&gt;
    Notificación pendiente en un trámite. Incluye el identificador de la tarea de notificación que está pendiente de acusar recibo y un nombre descriptivo para mostrar al usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayNotifications = array of TGWSNotification;&lt;br /&gt;
&lt;br /&gt;
 TGWSListNotifications = class(TRemotable)&lt;br /&gt;
    property Notifications: TGWSArrayNotifications read FNotifications write FNotifications;&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 TGWSRegistrationForm = class&lt;br /&gt;
    property FieldDefinitions: TGWSArrayFieldDefinition;&lt;br /&gt;
    property FieldValues: TGWSArrayFieldValue;&lt;br /&gt;
    property FieldAllowedValues: TGWSListFieldAllowedValues;&lt;br /&gt;
    &lt;br /&gt;
    Formulario de registro de un usuario. Incluye solo los campos adicionales. Los campos obligatorios (nombre, nombre completo, nif, correo electrónico), no están incluidos en el formulario. La definición de los campos de registro se describe en un fichero XML.&lt;br /&gt;
&lt;br /&gt;
 TGWSRefUser = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property UserName: String;&lt;br /&gt;
    property FullName: String;&lt;br /&gt;
    property Nif: String;&lt;br /&gt;
    property EMail: String;&lt;br /&gt;
    property IdOrganization;&lt;br /&gt;
    &lt;br /&gt;
    Datos básicos de un usuario, se usa para listados de usuario.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayRefUsers = array of TGWSRefUser;&lt;br /&gt;
&lt;br /&gt;
 TGWSListRefUsers = class&lt;br /&gt;
    property RefUsers: TGWSArrayRefUsers;&lt;br /&gt;
&lt;br /&gt;
 TGWSUser = class(TGWSRefUser)&lt;br /&gt;
    property RegistrationForm: TGWSRegistrationForm;&lt;br /&gt;
    &lt;br /&gt;
    Datos completos de un usuario, incluyendo los datos del formulario de registro.&lt;br /&gt;
&lt;br /&gt;
 TGWSSearchUsersArg = class&lt;br /&gt;
    property Condition: STring;&lt;br /&gt;
&lt;br /&gt;
==Organizaciones==&lt;br /&gt;
 TGWSOrganization = class&lt;br /&gt;
    property Identifier: TGWSIdentifier;&lt;br /&gt;
    property Name: String read;&lt;br /&gt;
    &lt;br /&gt;
    Datos de una organización. La organización permite agrupar los usuarios, de forma que los todos los usuarios individuales que pertenezcan a una organización tienen acceso a todos los trámites que haya iniciado cualquier miembro de la organización.&lt;br /&gt;
&lt;br /&gt;
 TGWSArrayOrganizations = array of TGWSOrganization;&lt;br /&gt;
&lt;br /&gt;
 TGWSListOrganizations = class&lt;br /&gt;
    property Organizations: TGWSArrayOrganizations;&lt;br /&gt;
 &lt;br /&gt;
=API de usuario=&lt;br /&gt;
==Sesiones==&lt;br /&gt;
 CreateSession(IdUnit: TGWSIdentifier; out Data: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Crear una sesión con el WS que será utilizada en el resto de operaciones.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdUnit: Identificador del usuario o centro gestor que inicia sesión.&lt;br /&gt;
         Data: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Es el punto de entrada al servicio. Es necesario crear una sesión para poder realizar el resto de operaciones.&lt;br /&gt;
&lt;br /&gt;
 StartSession(IdSession: TGWSIdentifier; Signature: TGSignature; out Data: TGWSRefUser; out Error: TGWSError)&lt;br /&gt;
 Activa una sesión, comprobando la identidad del usuario.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Signature: Firma digital de la sesión realizada con un certificado de usuario válido.&lt;br /&gt;
         Data: Datos básicos del usuario que inició sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
         Se tiene que haber creado una sesión previamente. El identificador de sesión debe firmarse con un certificado válido de la FNMT o DNIe. El DNI del usuario registrado debe coincidir con el almacenado en el certificado.&lt;br /&gt;
&lt;br /&gt;
 CloseSession(IdSession: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Cierra la sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
         IdSession: Identificador de la sesión.&lt;br /&gt;
         Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Usuarios==&lt;br /&gt;
 RegisterAllowed(out Data: Boolean; out Error: TGWSError)&lt;br /&gt;
 Indica si el resgistro libre de nuevos usuarios está disponible.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Verdadero si está permitido el registro libre de usuarios.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadRegisterForm(out Data: TGWSRegistrationForm; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el formulario de registro de usuarios.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     Data: Formulario de registro de usuarios.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     El formulario de registro contiene los campos adicionales a los 4 campos obligatorios que son “nombre”, “nombre completo”, “nif” y “correo electrónico”.&lt;br /&gt;
&lt;br /&gt;
 RegisterUser(const UserName: String; const FullName: String; const NIF: String; const EMail: String; RegistrationData: TGWSRegistrationForm; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Registra un nuevo usuario para que pueda usar el servicio de tramitación.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     UserName: Nombre de usuario que se usará para iniciar sesión.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
     Data: Datos del usuario creado.&lt;br /&gt;
     Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Los campos “UserName”, “FullName”, “NIF” y “Email” son obligatorios. El formulario de registro se puede obtener llamando a la función “LoadRegisterForm”.&lt;br /&gt;
     Esta función solo está disponible si el registro libre está permitido. Consultar la función “RegisterAllowed”.&lt;br /&gt;
&lt;br /&gt;
 LoadUser(IdSession: TGWSIdentifier; out Data: TGWSUser; out Error: TGWSError)&lt;br /&gt;
 Permite obtener los datos del usuario actual que inició sesión.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Datos del usuario.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveUser(IdSession: TGWSIdentifier; const FullName: String; const NIF: String; const EMail: String; RegistrationData: TGWSRegistrationForm; out Error: TGWSError)&lt;br /&gt;
 Permite modificar los datos del usuario actual.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     FullName: Nombre completo del usuario.&lt;br /&gt;
     NIF: Número de identificación del usuario.&lt;br /&gt;
     Email: Dirección de correo electrónico del usuario.&lt;br /&gt;
     RegistrationData: Formulario de registro relleno con los valores del usuario.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Procedimientos==&lt;br /&gt;
 LoadProcedures(IdSession: TGWSIdentifier; out Data: TGWSListRefProcedure; out Error: TGWSError)&lt;br /&gt;
 Obtiene lista de definiciones básicas de procedimientos.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     Data: Lista de definiciones básicas de procedimiento.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcedure(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; out Data: TGWSProcedure; out Error: TGWSError)&lt;br /&gt;
 Permite obtener la definición completa de un procedimiento que se indique.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento.&lt;br /&gt;
     Data: Definición completa del procedimiento.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Trámites==&lt;br /&gt;
 LoadProcesses(IdSession: TGWSIdentifier; SearchParams: TGWSSearchProcessArg; out Data: TGWSListRefProcess; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de trámites (descripción abreviada) del usuario que cumplan las condiciones indicadas en el parámetro de búsqueda.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     SearchParams: Parámetros de búsqueda.&lt;br /&gt;
     Data: Lista de trámites (descripción abreviada).&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 LoadProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Carga un trámite completo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Contenido completo del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Destalles:&lt;br /&gt;
     Si el trámite tiene notificaciones pendientes, el sistema no permite abrir el trámite. Es necesario confirmar la recepción de las notificaciones antes de abrir el trámite, haciendo uso de las tareas “LoadProcessNotifications”, “LoadTaskSerialization” y “SendTask”.&lt;br /&gt;
&lt;br /&gt;
 LoadProcessNotifications(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Data: TGWSListNotifications; out Error: TGWSError)&lt;br /&gt;
 Obtiene una lista de las notificaciones pendientes del trámite. &lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Data: Lista de notificaciones pendientes del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles: &lt;br /&gt;
     Cuando un proceso tenga notificaciones pendientes, será necesario cargar cada una de las tareas indicadas por las notificaciones, firmarlas y enviarlas para confirmar la recepción de dichas notificaciones.&lt;br /&gt;
&lt;br /&gt;
 CreateProcess(IdSession: TGWSIdentifier; IdProcedure: TGWSIdentifier; ProcessLabel: String; out Data: TGWSProcess; out Error: TGWSError)&lt;br /&gt;
 Crea un trámite basado en una definición de procedimiento. Le asigna una etiqueta al nuevo trámite creado, para facilitar la localización del mismo.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
     IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcedure: Identificador del procedimento que sirve como definición del trámite a crear.&lt;br /&gt;
     ProcessLabel: Etiqueta identificativa del nuevo trámite.&lt;br /&gt;
     Data: Proceso creado.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda eliminar un trámite, es necesario que no se haya enviado ninguna tarea asociada al mismo.&lt;br /&gt;
&lt;br /&gt;
 ArchiveProcess(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Archiva el trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que se pueda archivar el trámite, es necesario que este haya finalizado.&lt;br /&gt;
&lt;br /&gt;
==Tareas de los trámites==&lt;br /&gt;
 CreateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTaskDefinition: TGWSIdentifier; out Data: TGWSTask; out Error: TGWSError)&lt;br /&gt;
 Crea una tarea dentro del trámite indicado.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTaskDefinition: Tipo de tarea a crear.&lt;br /&gt;
     Data: Tarea creada.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 SaveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; Task: TGWSTask; out Error: TGWSError)&lt;br /&gt;
 Guarda los cambios realizados en una tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     Task: Tarea que se va a modificar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser guardada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 RemoveTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea a eliminar.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles:&lt;br /&gt;
     Para que la tarea pueda ser eliminada no debe haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
 LoadTaskSerialization(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Data: String; out Error: TGWSError)&lt;br /&gt;
 Carga el contenido serializado de una tarea. Este contenido serializado es el que habrá de ser firmado cuando se quiera enviar la tarea.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Data: Serialización de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 ValidateTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSErrorValidateTask); &lt;br /&gt;
 Comprueba las condiciones de validación que se hayan definido sobre la tarea. Si no se cumplen alguna o algunas de las condiciones, vendrá indicado en el parámetro de salida “Error”.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 SendTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; Signature: TGSignature; out Error: TGWSErrorValidateTask)&lt;br /&gt;
 Envía la tarea al backoffice, para que continue el trámite. La tarea ha de cumplir las validaciones definidas.&lt;br /&gt;
 Parámetros: &lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     Signature: Firma de la serialización de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error. Cada validación que no se cumpla vendrá identificada por un código y mensaje de error y, cuando sea posible, por el identificador del campo relacionado con el error.&lt;br /&gt;
&lt;br /&gt;
 ResponseTask(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Genera una tarea de respuesta a una tarea que haya sido recibida.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
==Ficheros adjuntos de los trámites==&lt;br /&gt;
 LoadFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Permite obtener el contenido de un fichero que pertenezca una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 AttachFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; FileName: String; Content: TByteDynArray; out Data: TGWSFile; out Error: TGWSError)&lt;br /&gt;
 Adjunta un nuevo fichero a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     FileName: Nombre del fichero.&lt;br /&gt;
     Content: Contenido del fichero.&lt;br /&gt;
     Data: Descriptor y contenido del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
&lt;br /&gt;
 RemoveFile(IdSession: TGWSIdentifier; IdProcess: TGWSIdentifier; IdTask: TGWSIdentifier; IdFile: TGWSIdentifier; out Error: TGWSError)&lt;br /&gt;
 Elimina un fichero que haya sido adjuntado a una tarea de un trámite.&lt;br /&gt;
 Parámetros:&lt;br /&gt;
 IdSession: Código de la sesión actual.&lt;br /&gt;
     IdProcess: Identificador del trámite.&lt;br /&gt;
     IdTask: Identificador de la tarea.&lt;br /&gt;
     IdFile: Identificador del fichero.&lt;br /&gt;
 Error: Código y mensaje de error.&lt;br /&gt;
 Detalles.&lt;br /&gt;
     Para que un fichero pueda ser eliminado de la tarea, la tarea no puede haber sido enviada.&lt;br /&gt;
&lt;br /&gt;
=Api de administración=&lt;br /&gt;
&lt;br /&gt;
=Códigos de error=&lt;/div&gt;</summary>
		<author><name>Amendez</name></author>	</entry>

	</feed>