Configuración y Administración

De Thubanpedia
Revisión a fecha de 06:43 29 ene 2016; Vivatia (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar


Enlaces relacionados:


Organización de los contenidos

Thuban® utiliza un repositorio de archivos para almacenar los contenidos, con el fin de evitar una sobrecarga en la base de datos y una consecuente disminución de su rendimiento.

Cada clase documental define una ubicación propia de almacenamiento. De acuerdo con esa ubicación, el sistema almacena los documentos en subcarpetas, en donde guarda un máximo de archivos predefinido. Una vez que se alcanza ese tope, los archivos subsiguientes se almacenan en otras subcarpetas. Las subcarpetas de un sistema de archivos se denominan Store Units. Cada una de ellas puede ser congelada para evitar posteriores modificaciones y facilitar la gestión de backups.

Los archivos se almacenan dentro del repositorio de datos sin encriptación, respetando su formato original.

No existen restricciones respecto del tipo de archivo que puede almacenar en el sistema de archivos de una clase documental. Sin embargo, siempre es recomendable que el sistema operativo sepa interpretarlo y sepa cómo realizar una previsualización para adquirir una mayor flexibilidad. El espacio para almacenamiento de imágenes bitonales es de aproximadamente 50kb por hoja. Así, si se estima un crecimiento de 500.000 imágenes mensuales, se debe garantizar un espacio de almacenamiento de 24 GB.

Indexación de los contenidos

En Thuban®, todo documento es indexado mediante bases de datos relacionales. Cada clase documental se almacena en una tabla: puede ser la tabla en la que se almacenan los documentos por defecto (THUBAN_INDEXES) o una tabla particular para esa clase documental. Se recomienda utilizar una tabla para cada clase documental con el fin de optimizar la indexación, rendimiento y distribución de la base de datos.

Los campos de una clase documental son configurados en la tabla THUBAN_FIELDS. A diferencia de otras tecnologías de administración y consulta de documentos digitales que trabajan con un único tipo de dato, Thuban® permite definir un conjunto de tipos de datos para los campos de una clase documental. Esto permite esquivar problemas de conversión de datos e incrementar la eficiencia en la búsqueda de documentos, a través del uso de documentos en formato nativo sin conversión en las consultas a la base de datos.

Es recomendable crear índices en la base de datos para mejorar el rendimiento de las búsquedas de documentos. El sistema provee la posibilidad de configurar índices compuestos; esto es, configurar una acción de búsqueda conjunta de dos índices diferentes.

Siempre es aconsejable buscar por un campo índice y refinar la búsqueda con algún campo complementario.

Para obtener mejoras en el rendimiento de la solución general, es posible limitar los resultados de búsquedas por cada usuario o a través de la creación del usuario por defecto (Para obtener más información sobre la configuración de estos usuarios ver Configuración básica de la solución).

Configuración básica de la Solución

Thuban® está diseñada para ser utilizada tanto en ambientes pequeños, donde un mismo administrador configura todos los parámetros del sistema; como en ambientes empresariales, donde existen roles diferenciados para la administración de configuraciones y seguridad informática.

La configuración del entorno es fundamental para asegurar el correcto desempeño de la aplicación. Para su parametrización se debe definir un conjunto de variables. Esto incluye la conexión a la base de datos, la localización de archivos o carpetas dentro del sistema de archivos, la definición de cuentas y/o plantillas de correo electrónico, archivos de Scripting y la configuración de servicios propios para una organización particular.

La estructura de entorno de Thuban® contiene seis carpetas: Context, Forms, Templates, Scripting, Images y Security.

Para comenzar a utilizar Thuban® no se requieren todos los archivos, puesto que existe una configuración mínima que permite iniciar el sistema con la funcionalidad básica.

Para ello se necesitan los siguientes archivos:

1) Configuración de contexto.

2) Configuración de seguridad.

3) Configuración de parámetros de log y carpetas temporales en el servidor.

4) Creación del usuario por defecto.


Carpeta Context

La carpeta Context almacena los archivos relacionados con la configuración del entorno. Permite no sólo la parametrización básica de la solución, sino también la personalización de la instalación.

Por lo general, el contenido de la carpeta incluye los siguientes archivos y subdirectorios:

Pict2.png


Por defecto, la ubicación de las carpetas Forms, Images, Scripting y Templates es en la carpeta Context; sin embargo, si se utilizan las siguientes variables, es posible configurar otra ubicación a través del módulo de configuración de parámetros del sistema:

Aplicación Set Sección Variable Descripción
THUBAN-SERVER DEFAULT CONFIGURATION imagesDirectory Indica la ruta del sistema de almacenamiento de imágenes de tips de inicio del sistema.
THUBAN-SERVER DEFAULT CONFIGURATION scriptingDirectory Indica la ruta del sistema de almacenamiento de scripting de clases documentales.
THUBAN-SERVER DEFAULT CONFIGURATION formsDirectory Indica la ruta del sistema de almacenamiento de scripting de formularios electrónicos PDF.
THUBAN-SERVER DEFAULT CONFIGURATION templatesDirectory Indica la ruta del sistema de almacenamiento de plantillas de correo electrónico HTML y texto.


context.properties

Este archivo contiene la configuración del contexto (Base de datos, servidor LDAP, SMTP, carpetas temporales, templates de mails, dirección de soporte, etc.). La ubicación de este archivo en el sistema de archivos no tiene ningún tipo de restricción. El servidor de aplicaciones obtiene la ruta de acceso al mismo mediante la variable de la máquina virtual de Java THUBAN_CONTEXT. Si se utiliza Java 1.5 o superior, puede ser configurada como variable de entorno del sistema operativo.

El contenido del archivo es el siguiente:

#CONFIGURACION DE LDAP
ldap.host= ldap://vmware-2003-2:389
ldap.base= dc\=lat,dc\=ar
ldap.enableGroupSync= true
ldap.rootGroup= Thuban
ldap.enableUserSync= true
ldap.name= LAT
ldap.user.attributeId= sAMAccountName
ldap.user.attributeName= name
ldap.user.attributeDistinguishedName= distinguishedName
ldap.user.attributeMemberOf= memberOf
ldap.user.attributeEmail=
ldap.user.attributeArea=
ldap.user.attributePhone= 
#CONFIGURACION DE JDBC
jdbc.driverClassName= net.sourceforge.jtds.jdbc.Driver
jdbc.url= jdbc:jtds:sqlserver://127.0.0.1:1433/thuban_web
#HEADER MAIL
thuban.mail.alias=Sender
#MAIL TEMPLATES
thuban.mail.template.support.html=supportHtml.vm
thuban.mail.template.support.txt=supportTxt.vm
#THUBAN SUPPORT 
thuban.mail.support=soporte@latin-tech.com


La propiedad thuban.mail.support guarda la dirección de correo a la que el sistema envía los errores producidos en la aplicación. Ante la presencia de errores más o menos graves, el sistema muestra un cuadro de diálogo (ver Imagen a continuación) que da la posibilidad de enviar un mail al Departamento de soporte, para notificar el tipo de error. Ese mail llega a la casilla previamente determinada en context.properties.

Para más información acerca la configuración del contexto, véase el apartado de integración con LDAP.

Pict3.png

user-application-context.xml

Permite definir un conjunto de servicios propios de un cliente y externos al núcleo aplicativo. Estos pueden hacer referencia a entidades que describan la lógica particular de un cliente y que son ajenas al sistema. Esas entidades se requieren para recuperar o mantener información en la base de datos del cliente. Este archivo fue creado con el objeto de excluir las entidades externas de Thuban® y mejorar así la interoperabilidad entre Clientes.


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<bean id="customerService" class="com.latintech.thuban.services.CustomerServiceImpl">
    <property name="sessionFactory" ref="hibernateSessionFactory" />
    <property name="adminService"   ref="adminService"/>
</bean>
</beans>

Carpeta Scripting

La carpeta Scripting almacena los archivos de scripting de clases documentales. Para más información, véase el apartado Personalización de la solución – Scripting de clases documentales.

Carpeta Forms

La carpeta Forms almacena los archivos de scripting de formularios electrónicos. Para más información, véase el apartado Personalización de la solución – Scripting formularios electrónicos.

Carpeta Templates

En esta carpeta se alojan todas las plantillas de e-mail utilizadas por Velocity. Aquí se completan con información dinámica y posteriormente se genera el código HTML que se envía por medio de los servicios internos de correo electrónico de Thuban®. Todos los archivos tienen extensión ".vm".

Existen dos tipos de archivos: los HTML y otros con texto plano para ser interpretado por cualquier tipo de cliente de correo.

Carpeta Images

Incluye un conjunto de imágenes relativas a la aplicación y al cliente. Por ejemplo, logos empresariales o imágenes que contienen palabras o referencias en algún idioma particular de acuerdo al LOCALE que utilice el cliente y que no sea soportado por Thuban®.

Carpeta Security

security.properties

El archivo security.properties posee la configuración de usuarios y contraseñas, de conexión a la base de datos, SMTP de correo y cualquier otro usuario que se utilice en integraciones con otros sistemas. Al igual que el archivo context.properties, se pueden ubicar en cualquier locación y el servidor puede obtener la ruta de acceso mediante la variable de la máquina virtual de Java THUBAN_SECURITY. Si se utiliza Java 1.5 o superior, puede configurarse con variable de entorno del sistema operativo.

El contenido del archivo es el siguiente:

#CONFIGURACIÓN SEGURIDAD
jdbc.username=thuban
jdbc.password=************

Además, es posible encriptar las contraseñas almacenadas en este archivo.

Configuración de parámetros de log y carpetas temporales en el servidor

Thuban® Admin cuenta con un módulo de configuración de parámetros del sistema. Para configurar las rutas de log y las carpetas temporales del sistema se deben establecer los siguientes valores:


Aplicación Set Sección Variable Descripción
THUBAN-SERVER DEFAULT CONFIGURATION attachmentsDirectory Indica la ruta del sistema de temporales para el almacenamiento de archivos que se transfieren utilizando web services.
THUBAN-SERVER DEFAULT CONFIGURATION loggingDirectory Indica la ruta donde el sistema almacenará los logs del sistema.
THUBAN-SERVER DEFAULT CONFIGURATION logLevel Indica el nivel de log que se desea. Los niveles posibles son:

- DEBUG (registra información detalla de la operación para depuración).

- INFO (registra información de la operación).

- ERROR (registra solo errores no controlados del sistema).

THUBAN-SERVER DEFAULT CONFIGURATION rollingFileSize Permite indicar el tamaño de los archivos de log del sistema. Por defecto, el log de sistema se registra en un archivo de log del tamaño definido por este parámetro. Cada vez que el archivo de log alcanza ese tamaño, se genera un backup y comienza con un nuevo archivo de log. El sistema guarda los 10 últimos backups de logs.
THUBAN-SERVER DEFAULT CONFIGURATION filesPerFileSystem Permite configurar la cantidad de archivos que se deben almacenar por filesystem antes de generar una nueva sub-carpeta. Esto se utiliza para no sobrecargar los filesystems de archivos. Ver organización del filesystem para más información.


Configuración de usuarios por defecto

Para establecer una configuración por defecto para todos los usuarios de Thuban, diríjase a la última pestaña del Panel de políticas de acceso.

Thubanadmin837.png


Allí verá una serie de cinco pestañas que permiten establecer ciertos parámetros en común para todos los usuarios.

  • General: Desde esta solapa se pueden configurar algunas características como un formato estándar para la fecha y hora, o una pantalla de inicio predeterminada.
Thubanadmin838.png


Para resolver el problema de la incompatibilidad con Internet Explorer puede seleccionar esta opción o visitar la sección HOW TO: Resolver incompatibilidad de Thuban con IE


  • Creación: Desde esta pestaña se puede seleccionar la opción para que cuando se cree un documento de una clase documental que tenga vínculos dinámicos, dicho documento se abra en una nueva ventana.
Pestaña Creación
  • Búsqueda: Desde esta pestaña se pueden configurar acciones generales sobre la grilla de resultados de la búsqueda.
Pestaña Búsqueda
  • Edición: Desde esta pestaña se pueden configurar acciones generales de la pantalla de edición de documentos.
Pestaña Edición
  • Bandejas: Desde esta pestaña se pueden configurar acciones generales del Panel de bandejas.
Pestaña Bandejas


  • Monitores: Desde esta pestaña se pueden configurar el refresco automático de todos los monitores de Thuban. Si desea modificar el tiempo para un monitor en particular, podrá hacerlo desde Thuban Server.
Pestaña Monitores

Recomendaciones para entornos de producción

Se recomienda establecer el nivel de log de la aplicación en ERROR y eliminar cualquier invocación de System.out que pueda existir en archivos de scripting del sistema. La generación de logs de este tipo con una concurrencia alta de usuarios impacta notablemente en el rendimiento del sistema.

Seguridad

El sistema de seguridad de Thuban® está organizado sobre la base de grupos de usuarios. Cada grupo de usuarios recibe un conjunto de permisos configurados por el administrador; por esa razón no existe la posibilidad de asignar permisos a usuarios particulares de manera directa.

La seguridad de los documentos depende de la clase documental y hay una gran especificidad de acciones que se pueden realizar sobre ellos.

Un usuario puede pertenecer a más de un grupo, lo que facilita la definición y gestión de los perfiles. Además, es posible integrar la asignación a grupos con LDAP; en ese caso, cuando el administrador asigna una persona a un grupo LDAP, le otorga simultáneamente un usuario y un perfil de acceso Thuban®.

La herramienta de administración también permite otorgar permisos sobre cada uno de los módulos del sistema y sobre las funciones que puede realizar en la aplicación un usuario en particular. Es decir, para un grupo de usuarios particular se puede habilitar la búsqueda de documentos y para otro, su creación. Ningún grupo de usuarios puede acceder a una función sin tener el permiso correspondiente.

Los logs ayudan a incrementar la seguridad de la plataforma: permiten almacenar toda la información de bajo nivel que se realiza dentro de la aplicación en un momento determinado. Es posible verificar en qué momento un documento fue modificado, qué tipo de cambios se hicieron sobre los campos, etc.


Configuración de Perfiles de Escaneo

Para configurar los perfiles de escaneo se deben establecer las siguientes entradas:

Aplicación Set Sección Key Valor
PowerDesk DEFAULT SCAN scanServers <Nombres de servidores separados por coma>


Luego, por cada nombre de servidor se deben establecer las siguientes entradas:

Aplicación Set Sección Key Valor
PowerDesk DEFAULT SCAN server.<nombreServidor> name<Nombre que aparece en el combo de la interfaz de usuario de escaneo>
PowerDesk DEFAULT SCAN server.<nombreServidor>.url <URL del servicio de escaneo o la palabra «TWAIN» para escáneres locales>


Además se deberá configurar por lo menos un perfil. Cada perfil contiene las siguientes propiedades:

Aplicación Set Sección Key Valor
PowerDesk DEFAULT SCAN profile.<nombrePerfil>.mode Lineart
PowerDesk DEFAULT SCAN profile.<nombrePerfil>.resolution 200
PowerDesk DEFAULT SCAN profile. <nombrePerfil>.source <adf | flatbed>


El <nombrePerfil> es el valor que aparece en el combo de perfiles de escaneo en la interfaz de usuario.


Además se debe configurar si el applet de escaneo visualiza los documentos en alta o baja calidad. Esto no afecta a la imagen en sí, sólo su visualización (se mejora el rendimiento si el valor es false).

Aplicación Set Sección Key Valor
PowerDesk DEFAULT SCAN scanHighQuality true


Ejemplo de configuración:

Aplicación Set Sección Key Valor
PowerDesk DEFAULT SCAN profile.b&n.mode Lineart
PowerDesk DEFAULT SCAN profile.b&n.resolution 200
PowerDesk DEFAULT SCAN profile.b&n.source adf
PowerDesk DEFAULT SCAN scanHighQuality true
PowerDesk DEFAULT SCAN scanServers Local
PowerDesk DEFAULT SCAN server.Local.name Local
PowerDesk DEFAULT SCAN server.Local.url twain

Mantenimiento del sistema

Logs

Por cada aplicación desplegada en el servidor de aplicaciones, Thuban® genera un archivo de log exclusivo. El nombre del archivo de log que se genera es igual al nombre del contexto con el que la aplicación fue desplegada en el servidor. Así, si un servidor desplegó a la vez las aplicaciones Thuban® Power DeskWeb y Thuban® Server, tendrá dos archivos diferenciados.


La ruta para acceder a esos logs está unificada y se configura a través de la herramienta Administración (Ver “Configuración básica de la solución”). Además, los archivos de log poseen un límite; cuando se alcanza, el sistema genera un backup y crea un nuevo archivo. El sistema almacena hasta diez backups de archivos de log. El backup se guarda y comienza con uno limpio cuando el servidor (o el contexto de la aplicación) se reinicia.


Además, Thuban® utiliza una tabla de logs (THUBAN_LOGS) para registrar los eventos originados por alguna de las aplicaciones que forman parte de la plataforma.

Los eventos que generan registro de logs son:

- Login de Usuario

- Logout de Usuario

- Creación de un documento

- Modificación de un documento

- Modificación de un campo de documento marcado como auditable. Esto genera una entrada en la tabla Logs para registrar la modificación del valor del campo, en donde se describen el valor original y su nuevo valor.


Todos los registros recogen la fecha, la hora y el usuario que realizó la acción.

Auditoría

La plataforma Thuban® genera los siguientes eventos de auditoría asociados con la herramienta de administración y configuración de la solución. Cada evento de log registra la fecha, la hora, la dirección IP y el usuario que ejecutó la acción. En caso de modificar un permiso de acceso, también se registra la clase documental.


Login/Logout

Evento Descripción Registro de Log Observaciones
1001 Login [Nombre de usuario] Se genera cuando un usuario ingresa al sistema.
1002 Logout [Nombre de usuario] Se genera cuando un usuario sale del sistema.
1100 Usuario de LDAP creado. [Nombre de usuario] Se genera cuando se crea un usuario automáticamente en el mecanismo de login integrado con LDAP.
1101 Grupo LDAP asignado a usuario. [Nombre de usuario][Grupo LDAP] Se genera cuando se asigna un grupo automáticamente en el mecanismo de login integrado con LDAP.
1102 Grupo LDAP desasignado. [Nombre de usuario][Grupo LDAP] Se genera cuando se desasigna un grupo automáticamente en el mecanismo de login integrado con LDAP.


Administración de Documentos

Evento Descripción Registro de Log Observaciones
1500 Ítem creado Ítem creado Se genera cuando se crea un documento.
1501 Ítem guardado Ítem guardado Se genera cuando se modifica un campo o la imagen de un documento.
1512 Modificación de campo auditado [Valor Nuevo][Valor anterior] Se genera cuando se modifica un campo marcado como de auditoría en el sistema.


Administración de usuarios

Evento Descripción Registro de Log Observaciones
2001 Generación Usuario [Nombre del Usuario Creado] Sólo se registra cuando se trata de usuarios creados manualmente desde el módulo de administración.
2002 Eliminación Usuario [Nombre del Usuario Eliminado] Sólo se registra cuando se trata de usuarios eliminados manualmente desde el módulo de administración.
2003 Actualización Perfil Usuario [Nombre del Usuario cuyo perfil se ha modificado]
2004 Desconexión de Usuario [Nombre del Usuario cuya desconexión se vio forzada]
2005 Habilitar Usuario [Nombre del Usuario] Se genera cuando un administrador de usuarios habilita un usuario cuyo estado estaba deshabilitado (por bloqueo o vencimiento de contraseña).
2006 Deshabilitar Usuario [Nombre del Usuario] Se genera cuando un administrador inhabilita un usuario para ingresar al sistema.


Administración de grupos

Evento Descripción Registro de Log Observaciones
2010 Generación Grupo [Nombre del Grupo Creado] Se genera cuando un grupo es creado desde el módulo de administración del sistema.
2011 Eliminación Grupo [Nombre del Grupo Eliminado] Se genera cuando un grupo es eliminado desde el módulo de administración del sistema.
2012 Modificación Grupo [Nombre del Grupo Modificado] [Usuario Incluido] Se genera cuando un usuario es agregado manualmente a un grupo desde el módulo de administración.
2013 Modificación Grupo – Usuario Incluido [Nombre del Grupo Modificado] [Usuario Incluido] Se genera cuando un usuario es agregado manualmente a un grupo desde el módulo de administración.
2014 Modificación Grupo – Usuario Removido [Nombre del Grupo Modificado] [Usuario Removido del Grupo] Se genera cuando un usuario es removido manualmente a un grupo desde el módulo de gestión


Administración de Configuración

Evento Descripción Registro de Log Observaciones
2020 Creación/Modificación de Configuración [Aplicación\Set\Sección\Variable] [Nuevo Valor] [Valor Anterior] Se genera cuando un grupo es creado desde el módulo de administración del sistema.
2021 Eliminar Configuración [Aplicación\Set\Sección\Variable] Se genera cuando se elimina un atributo de configuración en el módulo de parametrización del sistema.
2022 Eliminar Sección [Aplicación\Set\Sección] Se genera cuando se elimina una sección completa del módulo de parametrización del sistema.
2023 Eliminar Sección [Aplicación\Set] Se genera cuando se elimina un set completo del módulo de parametrización del sistema.


Administración de clases

Evento Descripción Registro de Log Observaciones
2030 Generación de Clase [Nombre de Clase Creada] Se genera cuando se crea una nueva clase documental desde el módulo de administración.
2031 Eliminación de Clase [Nombre de Clase Eliminada] Se genera cuando se elimina una clase documental desde el módulo de administración.
2032 Actualización de Clase [Nombre de la clase modificada] Se genera cuando se modifica un atributo o campo de la clase documental.


Administración de Accesos

Evento Descripción Registro de Log Observaciones
2040 Modificación de Accesos en Grupo [Nombre del grupo modificado] Se genera cada vez que se realiza una modificación de un permiso en un grupo.
2041 Permiso Agregado [Nombre del Grupo] [Permiso Agregado] Se genera cuando se agrega un permiso a un grupo desde el módulo de configuración del sistema.
2042 Permiso removido [Nombre del Grupo] [Permiso removido] Se genera cuando se elimina un permiso a un grupo desde el módulo de configuración del sistema.
2043 Permiso modificado [Nombre del Grupo] [Nuevo Valor del Permiso] [Valor anterior] Se genera cuando se modifica un permiso a un grupo desde el módulo de configuración del sistema.


Administración de Políticas de acceso

Evento Descripción Registro de Log Observaciones
3000 Contraseña modificada para el usuario. [Usuario]
3001 Contraseña modificada para el usuario forzada por administrador. [Usuario]
3002 Usuario deshabilitado por contraseñas incorrectas [Usuario]
3003 Usuario desbloqueado. [Usuario]
3004 Intento de login fallido [Usuario][Cantidad de intentos fallidos]
3005 Usuario deshabilitado por administrador. [Usuario]
3007 Política de acceso modificada [Política Modificada] [Valor Anterior] [Valor Nuevo] Las políticas de acceso pueden ser:

- userMinLength (Longitud mínima de nombre de usuario).

- userMaxLength (Longitud máxima de nombre de usuario).

- passMinLength(Longitud mínima de la password). - passMaxLength (Longitud máxima de la password).

- passInactivityDays (Cantidad de días de inactividad antes de inhabilitar la cuenta).

- passChangeDays (Cantidad de días para forzar cambios de contraseña).

- passAlphanum(La contraseña debe tener caracteres alfanuméricos).

- passSpecialChar(La contraseña debe contener caracteres especiales).

- passUppercase (Debe contener caracteres en minúscula).

- passLowercase (Debe contener caracteres en mayúscula).

- passPartName (La contraseña no puede ser parte del nombre).

3008 Evento de log habilitado/deshabilitado [Código de Evento] [Habilitado/Deshabilitado]

Jobs

Los Jobs son procesos que se pueden planificar en Thuban® Server para ser ejecutados según una determinada agenda de trabajo. A continuación se describen los procesos actualmente soportados por la plataforma out of the box ("lista para usar"). Los nombres de clase y parámetros son case sensitive (capaz de distinguir entre mayúsculas y minúsculas).


Job Descripción Parámetros Nombre de la clase
Doc Intro Job Job que permite planificar procesos de DocIntro del sistema. “customFileName” <Texto>: Permite definir el nombre del archivo de beans de DocIntro. Por defecto, este valor es “doc-intro-beans.xml” com.latintech.thuban.docintro.job.DocIntroJob
Virtual Printer Job Job que recupera trabajos de impresión de una cola preestablecida (de una impresora virtual) y los almacena, en formato TIF, en la carpeta de salida correspondiente. “outputFolder” <Texto>: La ruta de la carpeta de salida donde deja los TIFs de los documentos impresos.

“queueName” <Texto>: El nombre de la cola de impresión.

com.latintech.thuban.scheduler.job.VirtualPrinterJob
Folder Depuration Job Job que elimina archivos de carpeta que sobrepasan un tiempo de existencia predeterminado. “age” <Texto>: Representa la edad que deben superar los archivos para ser eliminados. Se expresa en milisegundos.

“folderPath”<Texto>: La ruta de la carpeta de archivos a depurar.

com.latintech.thuban.scheduler.job.FolderDepurationJob
Migrate Document Job Job que invoca la migración de todos los IDs de documento retornados por la consulta configurada a la base de datos. “query” <Texto>: la consulta a la base de datos. Debe retornar una única columna con los IDs de los documentos a migrar. com.latintech.thuban.scheduler.job.MigrateDocumentJob
Monitor Job Job que permite ejecutar monitores para recuperar información para la toma de decisiones. (Todos los parámetros de este job, separados por coma)

“monitorNames” <Texto>: nombres de los monitores a ejecutar. “registerHistory” <Texto>: True/False si debe registrar historial. “errorMailTo” <Texto>: cuentas de correo a las que se envía correo en caso de error. “errorMailCc” <Texto>: las cuentas de correo a las cuales enviar copia del correo en caso de error. “errorMailCc” <Texto>: las cuentas de correo a las cuales enviar copia oculta del correo en caso de error.

com.latintech.thuban.scheduler.job.MonitorJob
Report Mail Job Permite ejecutar un reporte y enviarlo por correo. “mailTo” <Texto>: las cuentas de correo a las cuales enviar el correo separadas por punto y coma.

“mailCC” <Texto>: las cuentas de correo a las cuales enviar copia del correo separadas por punto y coma. “mailCCO” <Texto>: las cuentas de correo a las cuales enviar copia oculta del correo separadas por punto y coma.

com.latintech.thuban.scheduler.job.ReportMailJob
Send Mail Job Job que permite el envío y eliminación de correos encolados mediante el servicio MailService. No tiene. com.latintech.thuban.scheduler.job.SendMailJob
SQL Export Job Job que permite exportar el resultado de una consulta a la base de datos a un archivo del filesystem en formato texto. “query” <Texto>: la consulta SQL que recupera los datos a exportar.

“separator” <Texto>: el separador a utilizar para separar columnas (Ej. "|", ";", "," ). “outputFilePath” <Texto>: La ruta completa del archivo de salida incluyendo extension.

com.latintech.thuban.scheduler.job.SQLExportJob
Log Depuration Job Job que permite depurar la tabla de logs del sistema “months” <Texto>: Representa la cantidad de meses que debe superar para ser eliminados.

“folderPath”<Texto>: La ruta de la carpeta de archivos donde se almacenan los logs antes de ser depurados. “events”<Texto>: Un listado de eventos de logs separados por coma. Ej: 1001,1101

com.latintech.thuban.scheduler.job.LogDepurationJob


Además, es posible desarrollar procesos personalizados para cada organización y planificarlos de la misma forma que otros jobs del sistema.

Personalización de la solución

Scripting en Thuban

¿Qué es y para qué sirve el scripting en Thuban?

El scripting es código Java con mezcla de componentes y eventos Web. En Thuban, el scripting se convierte en una forma versátil de personalizar el sistema y de ajustarlo a las necesidades particulares de cada solución.

¿Qué se puede hacer mediante Scripting?

A través del scripting se pueden lograr una gran variedad de acciones: desde ocultar campos de la pantalla y hacer validaciones sobre el contenido de los mismos a medida que el usuario los completa, hasta integraciones con otros sistemas. Cabe resaltar que el scripting en Thuban tiene eventos y firmas determinadas, y que todos ellos tienen retornan un boolean, con el fin de permitir o denegar el flujo de código. Por ejemplo, por defecto cualquier método de scripting debe devolver true, ya que un false implicaría la suspensión de la secuencia de ejecución. Entonces, si se estuviese codificando una validación sobre un campo dado y ésta es exitosa, se retorna un true para que el flujo continué normalmente. Caso contrario, se retorna un false y se interrumpe la ejecución para que usuario tome alguna medida.

Tipos de Scripting en Thuban

  • Scripting de clases documentales: es el tipo de scripting que más se utiliza y sirve para personalizar las acciones y el comportamiento del sistema dentro de una clase documental. Por ejemplo, la clase documental “Cliente” puede tener cierto comportamiento mientras el documento esté activo, y la clase documental “Proveedor”, uno totalmente distinto.

Este tipo de scripting estará disponible para todas aquellas ventanas de Thuban donde se haga uso de los documentos de una clase documental: Creación, búsqueda, edición de documentos, entre otras. Para su funcionamiento, deberá crear un archivo .bsh con una estructura predeterminada, cuyo nombre sea el mismo que el de la clase documental. Luego, deberá introducir el .bsh generado dentro de la carpeta Scripting, que se encuentra dentro de la carpeta Context.

  • Scripting de Thuban genérico: Este tipo de scripting permite realizar acciones sobre las interfaces de usuario de Thuban, independientemente de la clase documental. Para su funcionamiento, deberá crear un archivo .bsh con una estructura predeterminada, cuyo nombre sea “THUBAN”. Luego, deberá introducir el .bsh generado dentro de la carpeta Scripting, que se encuentra dentro de la carpeta Context.


Ver también UITOOLS: métodos útiles

Eventos de scripting de Clases Documentales

El scripting se ejecuta cuando desde el aplicativo se disparan determinados eventos. A continuación se detallan los eventos de scripting.

  • indexesBulkLoad: Se ejecuta al momento de cargar la pantalla de indexación rápida de documentos. En el mapa de parámetros del evento, se incluyen los siguientes componentes. El nombre del parámetro sería como la key del mapa.

- winDocIndex: Es la ventana DocIndex.

- classId: El nombre de la clase documental.

- documentService: El servicio de Thuban para el manejo de documentos.

- applicationContext: El contexto de la aplicación de donde es posible obtener cualquier bean del sistema, ya sean propios del sistema o nuevos definidos en user-application-context.xml

- dataSource: el datasource de conexión a la base de datos de Thuban.

- contextHolder: El contexto de aplicación de spring.

- adminService: Servicio de Thuban con funciones de administración, entre otros servicios, para ejecutar consultas contra la base de datos de Thuban.


  • indexesBulkSave: Se ejecuta al finalizar el proceso de actualización de todos los documentos en la ventana de indexación rápida. Lo que se obtiene en el evento es:

- Idem indexesBulkLoad


  • indexesBeforeItemSave: Se ejecuta en la ventana de indexación rápida de documentos antes de actualizar cada documento. Es decir, el evento se dispara una vez por documento cada documento que se vaya a actualizar, antes de que el mismo sea actualizado. Lo que se obtiene en el evento es:

- Idem indexesBulkSave más documentId, que es el id Thuban del documento que se está actualizando.


  • indexesAfterItemSave: Se ejecuta en la ventana de indexación rápida de documentos luego de actualizar cada documento. Es decir, el evento se dispara una vez por documento a actualizado. Lo que se obtiene en el evento es:

- Idem indexesBulkAfterItemSave


  • groupingOpen: Este evento se ejecuta en las ventanas de creación, edición y generación de carátulas de Prescan. Se ejecuta al abrir un formulario y luego de actualizar la lista de formularios. En el evento se obtienen los siguientes elementos:

- classId: El nombre de la clase documental.

- documentService: El servicio de Thuban para el manejo de documentos.

- applicationContext: El contexto de la aplicación de donde es posible obtener cualquier bean del sistema, ya sean propios del sistema o nuevos definidos en user-application- context.xml

- dataSource: el datasource de conexión a la base de datos de Thuban.

- contextHolder: El contexto de aplicación de spring.

- adminService: Servicio de Thuban con funciones de administración, entre otros servicios para ejecutar consultas contra la base de datos de Thuban. Se configura el source del evento, es decir, el groupbox que contiene la grilla de campos del formulario que se abrió.

- documentId: Id del documento (sólo en la pantalla de edición)

- trayName: El nombre de la bandeja desde la cual se abrió el documento (Sólo en pantalla de edición y si el documento fue abierto desde una bandeja de Thuban).

- Ventana: dependiendo de la ventana en la que se esté ejecutando vendrá como parámetro la misma, por ejemplo:

--> mainWindow: DisplayUI -> Ventana Edición

--> newWindow: NewUI -> Ventana Creación

--> prescanWindow: PrescanCoversUI -> Ventana de generación de carátulas.


  • itemSave: Este evento puede ser disparado por alguna de las siguientes pantallas y puede ocurrir en distintos tiempos de acuerdo a cada una de ellas:

- Edición de Documentos (DisplayUI): el evento se ejecuta justo antes de persistir los cambios realizados a un documento, esto también quiere decir que se ejecuta previo a las validaciones propias de Thuban sobre los campos.

- Creación de Documentos (NewUI): el evento se dispara al momento de intentar crear el documento, antes de que realmente el mismo sea creado este evento se ejecuta, esto también incluye a las validaciones de Thuban.

- Reclasificación de Documentos (ReclassifierUI): el evento se ejecuta al momento de confirmar la reclasificación del documento, justo antes de reclasificarlo efectivamente, pero luego de la validación de los campos por parte de Thuban.

- Generación de Carátulas (PrescanCoversUI): el evento se ejecuta previo a la generación de la carátula y a las validaciones de checklists, si los hubiera.


En este evento se obtienen los siguientes elementos (ver la aclaración sobre elementos particulares en cada ventana):

- Window : donde Window va a hacer referencia a cada ventana en particular dependiendo desde donde se disparó el evento, por ejemplo en la ventana de creación sería: newWindow : NewUI.

- documentService

- applicationContext

- dataSource

- contextHolder

- adminService

- classId

- documentId: Id de Thuban del documento sobre el cual se está trabajando. Sólo para las ventanas de Edición de Documentos (DisplayUI) y Reclasificación de Documentos (ReclassifierUI)

- trayName: Identifica la bandeja de Thuban desde la cual fue accedido el documento, si corresponde. Sólo en la ventana de Edición de Documentos.


  • itemLoad: Este evento puede ser disparado al momento de carga de los campos de la clase documental, por alguna de las siguientes ventanas de Thuban:

- Edición de Documentos

- Creación de Documentos

- Generación de Carátulas

- Reclasificación de Documentos

- Búsqueda de Documentos


Los elementos que se pueden obtener del evento son los siguientes:

- Window: donde Window va a hacer referencia a cada ventana en particular dependiendo desde donde se disparó el evento, por ejemplo en la ventana de creación sería: “newWindow: NewUI”. En particular en el caso de la ventana de búsqueda de documentos, la misma debe ser casteada como Window, ya que la pantalla en sí, no lo es.

- documentService

- applicationContext

- dataSource

- contextHolder

- adminService

- classId

- documentId: Sólo en Edición de Documentos y Reclasificación de Documentos.

- trayName: Sólo en Edición de Documentos.


  • itemSearch: Evento que se ejecuta antes de realizar la búsqueda. Este es un evento que únicamente ocurre en la ventana de Búsqueda de Documentos y puede obtener lo siguiente:

- searchWindow : Window

- documentService

- applicationContext

- dataSource

- contextHolder

- adminService

- classId


  • itemAfterSave: Este evento puede ser disparado por alguna de las siguientes pantallas y puede ocurrir en tiempos distintos de acuerdo a cada una de ellas:

- Edición de Documentos: el evento ocurre luego de haberse persistido los cambios realizados al documento.

- Creación de Documentos: el evento ocurre luego de haberse creado el documento en Thuban.

- Generación de Carátulas: el evento ocurre luego de haberse creado la carátula de la documentación.

- Reclasificación de Documentos: el evento ocurre luego de que el documento haya sido reclasificado exitosamente a su nueva clase documental.


En el evento se obtienen los siguientes elementos para trabajar:

- Window: donde Window va a hacer referencia a cada ventana en particular dependiendo desde donde se disparó el evento, por ejemplo en la ventana de creación sería: “newWindow: NewUI”. En particular en el caso de la ventana de búsqueda de documentos la misma debe ser casteada como Window ya que la pantalla en sí no lo es.

-documentService

- applicationContext

- dataSource

- contextHolder

- adminService

- classId

- documentId: Solo en Edición de Documentos, Creación de documentos (el id del documento creado) y Reclasificación de Documentos.

- trayName: Solo en Edición de Documentos.


  • itemClose: Este evento, a diferencia del resto, no devuelve una pantalla, sino que ocurre cuando se cierra la ventana del navegador estando en la pantalla de Edición de Documentos, luego de que la aplicación desbloquea el documento que se estaba editando. Adicionalmente, ocurre al ejecutarse la limpieza de ventanas cerradas de Thuban en el proceso de liberación de memoria y aplican las mismas reglas antes mencionadas. En el evento se reciben los siguientes elementos:

- documentService

- applicationContext

- dataSource

- contextHolder

- adminService

- classId

- documentId: Id del documento que se estaba editando antes de cerrar la ventana.


  • itemLock: Este evento ocurre sólo en la ventana de Edición de Documentos y se dispara al hacer click sobre el botón de bloqueo del documento. Este evento se ejecuta únicamente cuando se está bloqueando el documento para edición. En el mismo se reciben los siguientes elementos:

- mainWindow: es la ventana DisplayUI.

- documentService

- applicationContext

- dataSource

- contextHolder

- adminService

- classId

- documentId

- trayName: si corresponde.


  • itemUnlock: Este evento ocurre sólo en la ventana de Edición de Documentos y se dispara al hacer click en el botón de bloqueo del documento. Este evento se ejecuta únicamente cuando se está desbloqueando el documento. En el mismo se reciben los siguientes elementos:

- mainWindow: es la ventana DisplayUI.

- documentService

- applicationContext

- dataSource

- contextHolder

- adminService

- classId

- documentId

- trayName: si corresponde.


  • itemAfterLock: Este evento ocurre únicamente en la ventana de edición de documentos al momento de bloquear o desbloquear el documento. Puede ocurrir de dos formas: el usuario presiona el botón de bloqueo/desbloqueo del documento, o bien, abre el documento desde una bandeja de Thuban configurada con autolock. En cualquiera de los casos, se obtienen los siguientes elementos en el evento:

- mainWindow: es la ventana DisplayUI.

- documentService

- applicationContext

- dataSource

- contextHolder

- adminService

- classId

- documentId

- trayName: si corresponde.


  • itemDelete: Este evento se dispara al momento de intentar eliminar un documento, ya sea desde la ventana de edición o desde la de búsqueda de documentos. El evento se dispara luego de que el sistema pide confirmación de la intención de eliminar el documento pero antes del borrado real del mismo. Los elementos que se obtienen en el evento son:

- Window: donde Window va a hacer referencia a cada ventana en particular dependiendo desde donde se disparó el evento.

- documentService

- applicationContext

- dataSource

- contextHolder

- adminService

- classId


  • fieldGetFocus: Este evento ocurre en todas las pantallas de Thuban donde se cargue la grilla de campos de clases documentales: creación, edición y búsqueda de documentos, generación de carátulas, reclasificación de documentos, etc. Este evento se dispara cuando uno de los campos de la grilla toma foco y en el evento se obtienen lo siguientes elementos:

- Window: donde Window va a hacer referencia a cada ventana en particular dependiendo desde donde se disparó el evento.

- documentService

- applicationContext

- dataSource

- contextHolder

- adminService

- classId

- documentId: si existe

- trayName: Sólo en la ventana de edición de documentos, si corresponde.


  • fieldLostFocus: Este evento ocurre en todas las pantallas de Thuban donde se cargue la grilla de campos de clases documentales: creación, edición y búsqueda de documentos, generación de carátulas, reclasificación de documentos, etc. Este evento se dispara cuando uno de los campos de la grilla pierde foco y en el evento se obtienen lo siguientes elementos:

- Window: donde Window va a hacer referencia a cada ventana en particular dependiendo desde donde se disparó el evento.

- documentService

- applicationContext

- dataSource

- contextHolder

- adminService

- classId

- documentId: si existe.

- trayName: Sólo en la ventana de edición de documentos, si corresponde.


  • itemSent: Este evento ocurre en la ventana de envío de documentos de Prescan. Se dispara cada vez que se procesa una carátula y se deja para enviar. En el evento se obtienen los siguientes elementos:

- prescanEnvioDocumentosWindow: Es la ventana PrescanSendDocumentsUI.

- documentService

- applicationContext

- dataSource

- contextHolder

- adminService

- classId


  • onOpenMail: Este evento puede ser disparado por cualquiera de las dos interfaces de envío de mails de Thuban (“wndMail = EMailUI” o “wndSendMail = SendMailUI”). En ambos casos, el evento se lanza al abrir la ventana y se reciben los siguientes elementos:

- Window: donde Window va a hacer referencia a cada ventana en particular dependiendo desde donde se disparó el evento.

- documentService

- applicationContext

- dataSource

- contextHolder

- adminService

- classId

- documentId


  • uiPaint: Este evento ocurre en todas las pantallas de Thuban donde se cargue la grilla de campos de clases documentales: creación, edición y búsqueda de documentos, generación de carátulas, reclasificación de documentos, etc. Este evento se dispara al finalizar la creación de la grilla de campos y antes de que la misma se complete con los valores de los campos, si los tuviese. En el evento se obtienen lo siguientes elementos:

- Window: donde Window va a hacer referencia a cada ventana en particular dependiendo desde donde se disparó el evento.

- documentService

- applicationContext

- dataSource

- contextHolder

- adminService

- classId

- documentId: si existe.

- trayName: Sólo en la ventana de edición de documentos, si corresponde.


Eventos de Scripting Thuban Genéricos

El scripting se ejecuta cuando desde el aplicativo se disparan determinados eventos. A continuación se detallan los eventos de scripting.

  • onExport: Este evento se dispara al momento de realizar la exportación a PDF de un checklist de Thuban. Se dispara luego de que se realizó la exportación y, por ende, se generó el archivo PDF, pero antes de que el mismo sea presentado al usuario para abrirlo o guardarlo. En el evento se reciben los siguientes elementos:

- documentService

- applicationContext

- dataSource

- contextHolder

- adminService


Adicionalmente en el source del evento se puede obtener un mapa con lo siguientes elementos:

- FILE: es el java File que representa el archivo pdf exportado.

- DOC_ID: Es el id de Thuban del documento del cual se está exportando el checklist.


  • actionExecuted: Este es un evento genérico que denota que se ha ejecutado una acción en el sistema. El mismo se encuentra presente en las ventanas de Generación de Carátulas de Prescan y de Generación de Reportes. Dependiendo de la ventana en la que se esté, se dispara en distintos momentos y con distintos parámetros que a continuación se detallan:

- Ventana de Generación de Carátulas de Prescan: el evento se dispara en dos instancias distintas:

--> Al presionar el botón Crear: el evento se ejecuta cuando se presiona el botón de creación de la carátula, es decir, previo a realizar cualquier opción en el sistema. Los elementos que se obtienen son:

- documentService

- applicationContext

- dataSource

- contextHolder

- adminService

- prescanWindow: PrescanCoversUI


Adicionalmente en el source del evento se recibe el botón crear que originó el evento.

--> Al presionar el botón Limpiar: el evento se dispara al presionar el botón Limpiar y se reciben los mismos elementos que en el botón Crear, a excepción del source, donde ahora se encontrará el botón Limpiar, y no Crear.

- Ventana de Generación de Reportes: el evento se dispara al presionar sobre el botón Mostrar para visualizar el reporte. El mismo se ejecuta cuando se valida que haya un reporte seleccionado para ejecutar. En el evento se reciben los siguientes elementos:

- documentService

- applicationContext

- dataSource

- contextHolder

- adminService

- reportsUI: ReportsUI

- screenLoad: Este evento se ejecuta luego de que la ventana de Thuban haya sido cargada y ocurre únicamente en la ventana de envío de documentos y de seguimiento de Prescan y en la de Generación de Reportes.


En cualquiera de ellas los elementos que se reciben en el evento son los siguientes:

- documentService

- applicationContext

- dataSource

- contextHolder

- adminService

- Window: donde window puede ser ReportsUI, PrescanSendDocumentsUI o PrescanTracingUI dependiendo de la ventana de Thuban en la que uno se encuentre.


  • fieldsLoad: Este evento se ejecuta únicamente en la ventana de Generación de Reportes, luego de que haya seleccionado un reporte y se hayan cargados los campos de ejecución del mismo (si los tuviera). En este evento se reciben los siguientes elementos:

- documentService

- applicationContext

- dataSource

- contextHolder

- adminService

- reportsUI: ReportsUI

Formularios Electrónicos

El manejo de formularios electrónicos es una función de Thuban® que permite manejar formularios en PDF de manera centralizada . Estos formularios permiten llevar adelante procesos simples que no requieren el uso de workflows estructurados.


Ventajas de los formularios electrónicos:

- Permiten incorporar validaciones de tipos de datos, máscara y completitud de datos en línea.

- Permiten definir un diseño de página personalizado para la información que se completa en el formulario.

- Permite indexar automáticamente los documentos en Thuban® y generar un repositorio único.

- Permite controlar que siempre se utilice la última versión de un formulario al momento de generarse.

- Permite incorporar ayudas en línea para indicar de qué manera debe completarse cada campo.

- El tiempo de desarrollo de un formulario PDF es mucho menor que el de construcción de cualquier tipo de workflow (tanto estructurado como colaborativo).

- Permite incorporar la firma digital a la solución dándole valor legal a la información almacenada en el formulario electrónico.

- Se almacena en un formato estándar de aceptación mundial: PDF.


Implementación de formularios electrónicos en Thuban®

En Thuban®, los formularios electrónicos tienen un tratamiento diferencial respecto del resto de los documentos. Existe una diferencia entre una plantilla de formulario electrónico (formulario vacío) y un documento de formulario electrónico (instancia de la plantilla con los datos completos).


En principio, existe una clase documental que contiene las plantillas de los formularios PDF. Estas plantillas son documentos en PDF que, además de contener los campos donde se almacenarán los datos, tiene la inteligencia para comunicarse con el servidor Thuban® mediante llamadas HTTP.


Para configurar una nueva plantilla en el sistema es necesario crear una clase documental que las almacene. Cuando un usuario desea crear un nuevo documento de formulario electrónico, debe consultar la clase documental como si consultara cualquier otro documento del sistema.


La plantilla permite generar el documento PDF final. Por lo general, contiene un botón Enviar que es el encargado de generar el documento resultante en Thuban®. Una vez generado el formulario, se guarda en otra clase documental previamente definida. El nuevo documento es de sólo lectura y no admite modificación.

Construcción de Formularios Electrónicos

Los formularios electrónicos son formularios PDF comunes desarrollados bajo el estándar de PDF 1.6. Sirven de plantillas para la generación de otros documentos. Cuando el usuario crea un nuevo formulario PDF, el archivo se abre utilizando Acrobat Reader. La comunicación con el servidor se realiza mediante HTTP, con la funcionalidad propia del PDF.


Cada formulario debe contener las siguientes variables:


TH_ESTADO: Se utiliza para informar al usuario el estado del formulario PDF. El sistema genera el nuevo documento sólo cuando el estado de las validaciones es OK.


TH_CLASE_ORIGEN: El nombre de la clase documental donde se almacena la plantilla de formularios.


TH_CLASE_DESTINO: El nombre de la clase documental donde se genera el documento destino.


TH_CODIGO_FORMULARIO: El nombre del formulario.


TH_CAMPO_CODIGO: El campo de la clase documental que se utiliza para encontrar el formulario. Por ejemplo:

- TH_CLASE_ORIGEN: E-FORMS

- TH_CLASE_DESTINO: DOC_CLIENTE

- TH_CAMPO_CODIGO: FORM_NOMBRE

- TH_CODIGO_FORMULARIO: INSTRUCCIÓN


Y un botón para enviar la solicitud a Thuban que debe llamarse “btnenviar” y contener la url del servidor de Thuban como acción.


Al presionar el botón Enviar del formulario electrónico, el sistema busca la plantilla para el nuevo PDF en la clase documental E-FORMS por el índice FORM_NOMBRE y el valor INSTRUCCIÓN y genera un nuevo documento de la clase DOC_CLIENTE con los datos cargados por el usuario.

Scripting de Formularios Electrónicos

Los formularios electrónicos son parte de la solución para el manejo de contenido dinámico que ofrece Thuban®. Al igual que las clases documentales, se pueden parametrizar a través de archivos de Scripting ubicados dentro de la carpeta Forms. Tienen una estructura particular para que la aplicación pueda interpretarla. Su nombre representa el formulario sobre el que se va a realizar la personalización.


La definición de scripting es por formulario electrónico y funciona en base a una serie de eventos predefinidos que se ejecutan en determinados momentos. Los eventos son:


customActionPerformed: Este evento toma lugar cuando se ejecuta una acción propia de un formulario electrónico y permite modificar cualquier aspecto del formulario.

saveActionPerformed: Este evento sucede cuando el formulario electrónico se está por guardar y permite modificar el formulario.

saveActionPerformedToScreen: Este evento sucede luego de que el formulario electrónico se guarda y antes de que se retorne a la pantalla del usuario. Le permite al usuario agregar mensajes que no quedan almacenados en el archivo definitivo.


Scripts de Validación y Personalización

Configuración archivo de scripting

Para configurar el archivo de scripting, se debe almacenar el archivo con el nombre de la clase documental y extensión ".bsh" en la carpeta scripting dentro del contexto de la aplicación. Recordemos que el contexto de la aplicación es una carpeta que contiene configuraciones propias de cada instalación y no tiene una ubicación fija, sino que es accedida a través de la variable thuban.context del servidor de aplicaciones.

Por ejemplo:

${thuban.context}\scripting\DOC_CLIENTE.bsh


Para obtener un usuario logueado se debe ingresar:

String user = SecurityContextHolder.getContext().getAuthentication().getName();

Acceso a los servicios Thuban®

Los servicios de Thuban® se acceden a través del mapa de parámetros contenido en el evento de scripting. Allí es posible acceder a los siguientes servicios:


- Admin Service ("adminService")

- Resource Service ("resourceService")

- Document Service ("documentService")

- Mail Service ("mailService")

- Prescan Service ("prescanService")

- Search Service ("searchService")

- Tray Service ("trayService")

- Monitor Service ("monitorService")

- Report Service ("reportService")

- Counter Service ("counterService")


Para más información sobre los servicios consulte el documento de Java de Servicios Thuban®.

Map map = evt.getParameters(); DocumentService documentService = map.get("documentService");


Cada interfaz de usuario agrega una referencia a sí misma en el mapa de parámetros del evento de scripting. Cada interfaz posee su propia key. Si al recuperar esa key del mapa de parámetros, la misma es distinta de nulo, entonces el evento fue generado por esa Interfaz de usuario. Por ejemplo:

Map map = evt.getParameters(); if(map.get("prescanWindow")!= null) {

Clave para cada UI (Interfaz de usuario)

newWindow: Pantalla de creación de nuevos documentos.

prescanWindow: Pantalla de emisión de carátulas.

mainWindow: Pantalla de visualización de documentos.

searchWindow: Pantalla de búsqueda de documentos.

Obtención de referencia a un componente UI

Actualmente, sólo es posible acceder a la grilla de índices del ítem visualizado. Para acceder a cada uno de los campos de Input se utiliza la clase UITools a través del método estático retrieveInputElement que recibe dos parámetros: la referencia a la grilla de campos y el Id del campo índice (como se le asignó a través de la herramienta Thuban® Admin).


Por ejemplo: Si se desea acceder al campo FORM_NOMBRE de la grilla de campos para modificar su valor:

Map map = evt.getParameters(); Grid grid= map.get("fieldsGrid"); InputElement element= grid.retrieveInputElement(grid, "FORM_NOMBRE");
element.setText("MODIFICO EL VALOR DEL CAMPO!");


Thuban® utiliza ZK para los componentes de la UI. Para más información sobre las propiedades y métodos de cada componente consúltese el documento Java de ZK: http://zkoss.org/javadoc/3.6/zk/

Modificación de atributos de un componente de UI

Siguiendo el ejemplo anterior, se puede utilizar la referencia al InputElement para:


Habilitar o Deshabilitar un componente:

- element.setReadonly(true/false);

- element.setDisabled(true/false);


Establecer un estilo CSS (Cascading Style Sheet):

- element.setStyle("left-padding: 5px; color:red;");


Establecer una máscara a un campo. Para por ejemplo validar que una dirección de correo contenga el formato "xxxxx@xxxx.xxx.xx":

- element.setConstraint("/.+@.+\.[a-z]+/: Please enter an e-mail address");

Diálogos con mensaje (Message Box)

Para mostrar diálogos en un evento de scripting es posible utilizar la clase Messagebox de ZK que recibe diversos parámetros y permite parametrizar los siguientes atributos:


- Título

- Mensaje

- Icono

- Botones Posibles


Cuando se ejecuta un diálogo de mensaje, se detiene la ejecución del evento hasta que finalice la interacción con el usuario permitiendo recuperar la opción elegida por el usuario.


Ejemplo: Para mostrar un diálogo con:

Título: Scripting

Test Mensaje: Fecha Invalida. Por favor ingrese una fecha posterior a 12/12/2008

Icono: Warning.

Botones: Ok.

int result= 0;


int result= 0; 
result= Messagebox.show("Bienvenido al scripting!!", "Scripting Test", Messagebox.OK | Messagebox.CANCEL, Messagebox.QUESTION); 
if(result==Messagebox.OK) { 
	  Messagebox.show("Presionó OK", "Scripting Test", Messagebox.OK | Messagebox.CANCEL, Messagebox.INFORMATION);