/
¿Cómo configuro un DocIntro?

¿Cómo configuro un DocIntro?

La configuración de Thuban® DocIntro está basada en el patrón de Inyección de dependencias, que es un patrón de arquitectura orientado a objetos, en donde no es la clase la que construye el objeto, sino que éstos se le inyectan. De esta manera, los componentes y relaciones se describen utilizando un XML de configuración que dotan al sistema de una gran flexibilidad y permiten la reutilización de componentes. 

Para ello, se utiliza el componente BeanFactory de Spring Framework que resuelve tanto la inyección de dependencias, como su validación y la sintaxis del archivo de configuración. Además, incorpora el concepto de Bean como instancia de un componente de software. Cada bean es, en tiempo de ejecución, un objeto Java que puede interactuar con otros objetos.

En un principio, el archivo de configuración de DocIntro puede parecer complejo, pero con un poco de paciencia, tiempo y conocimiento de Spring, se pueden explotar las ventajas del esquema.

A continuación se revisará un archivo de configuración básico para explicar este concepto gráficamente:

<?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="trayManager" class="com.latintech.thuban.docintro.tray.TrayManagerBeanV2"> <property name="trayWrappers"> <list> <ref bean="fileTrayWrapper"/> </list> </property> </bean> <bean id="fileTrayWrapper" class="com.latintech.thuban.docintro.tray.TrayWrapper"> <property name="tray" ref="crearTramite"/> <property name="preProcessors"> <list> <ref bean="fileWorkitemProcessor"/> </list> </property> <property name="processor" ref="createDocumentProcessor" /> <property name="postProcessors"> <list> </list> </property> <property name="errorProcessors"> <list> <ref bean="defaultTrayErrorProcessor"/> </list> </property> </bean> <bean id="crearTramite" class="com.latintech.thuban.docintro.tray.IndexedFileTray"> <property name="inputFolder" value="C:\DocIntro\input"/> <property name="outputFolder" value="C:\DocIntro\output"/> <property name="errorFolder" value="C:\DocIntro\error"/> <property name="backupFolder" value="C:\DocIntro\bkp"/> <property name="className" value="TRAMITE"/> <property name="internalName" value=""/> <property name="indexFileExtension" value="txt"/> <property name="includeFiles" value=".*\.([pP][dD][fF])$"/> <property name="count" value="100"/> <property name="fields"> <map> <entry key="FECHA" value="$F{'yyyy-MM-dd'}"/> </map> </property> <property name="maskTool" ref="maskTool"/> <property name="marshallingManager" ref="fileMarshallingManager"/> <property name="name" value="crearTramite"/> </bean> <bean id="fileWorkitemProcessor" class="com.latintech.thuban.docintro.workitem.processor.IndexerWorkitemProcessor"> <property name="indexer" ref="fileWorkitemIndexer"/> </bean> <bean id="fileWorkitemIndexer" class="com.latintech.thuban.docintro.workitem.indexer.KofaxWorkitemIndexer"> <property name="fileNameExtension" value="txt"/> <property name="encoding" value="Cp1252"/> </bean> <bean id="createDocumentProcessor" class="com.latintech.thuban.docintro.workitem.processor.CreateDocumentWorkitemProcessor"/> <bean id="fileMarshallingManager" class="com.latintech.thuban.docintro.workitem.FilenameMarshallingManagerImpl"/> <bean id="defaultTrayErrorProcessor" class="com.latintech.thuban.docintro.workitem.processor.DefaultTrayErrorProcessor"/> <bean id="maskTool" class="com.latintech.thuban.docintro.tools.ThubanMaskTool"/> </beans>

 

Como se puede observar, el archivo de configuración está estructurado de la siguiente manera:

Encabezado

<?xml version="1.0" encoding="UTF-8"?>

Una instrucción XML que indica la versión XML que se va a utilizar y el encriptador que se utilizó en el archivo. Por defecto, estos valores son los presentados y no es necesario realizar modificaciones.

Tag Principal

<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"> </beans>


Todos los beans definidos en este archivo de configuración están almacenados en el tag Beans. Además, este tag contiene las referencias a los archivos de XML schema para facilitar la edición de este archivo con editores XML estándar. Los XML y XML Schema permiten validar automáticamente la sintaxis del archivo de configuración al ser editado con un editor XML estándar.

Cada definición de un bean cuenta al menos con un ID que lo identifica dentro del sistema y una clase Java asociada.

En general, con los definidos en este ejemplo se logra realizar el 99% de los Docintros sin necesidad de ser modificado.


TrayManager y TrayWrapper

Como se mencionó anteriormente, DocIntro se configura mediante bandejas de trabajo. Cada bandeja de trabajo cuenta con preprocesadores, un procesador principal, postprocesadores y procesadores de error. Para agrupar estos componentes, DocIntro define dos beans propios denominados TrayManager y TrayWrapper.

El componente TrayManager será responsable de indicar qué bandejas están activas defiendo para ello una única propiedad llama “trayWrappers” que es un listado de TrayWrappers

<bean id="trayManager" class="com.latintech.thuban.docintro.tray.TrayManagerBeanV2"> <property name="trayWrappers"> <list> <ref bean="fileTrayWrapper"/> </list> </property> </bean>


Por otro lado, el componente TrayWrapper será el responsable de definir agrupar la bandeja de trabajo y los procesadores asociados en cada etapa (pre, post y error) para la misma:

<bean id="fileTrayWrapper" class="com.latintech.thuban.docintro.tray.TrayWrapper"> <property name="tray" ref="crearTramite"/> <property name="preProcessors"> <list> <ref bean="fileWorkitemProcessor"/> </list> </property> <property name="processor" ref="createDocumentProcessor" /> <property name="postProcessors"> <list> </list> </property> <property name="errorProcessors"> <list> <ref bean="defaultTrayErrorProcessor"/> </list> </property> </bean>

Así el TrayWrapper presenta las siguientes propiedades:

  • tray: La referencia a la bandeja de Trabajo de DocIntro.

  • preProcessors: Un listado que contiene los pre-procesadores que deben ejecutarse para la bandeja de trabajo.

  • processor: La referencia al procesador principal que ejecutar la bandeja de trabajo.

  • postProcessors: Listado con las referencias a los post-procesadores a ejecutar.

  • errorProcessors: Listado de los procesadores de error, encargados de ejecutar las acciones ante un error en el procesamiento del workitem.

TIP: Puedes anidar distintas bandejas al vincular las salidas y entradas de cada una. Así la bandeja de trabajo 1 puede alimentar la bandeja de trabajo 2. Por ejemplo, la primer bandeja se encarga de descargar mails y sus adjuntos y prepararlos para poder ser subidos a Thuban y la segunda bandeja podría tomarlos desde la salida de la primer bandeja y validarlos y subirlos a Thuban. De esta forma se lograr anidar bandejas y separarlas por unidades de trabajo.

Para poder ejecutar, probar y dejar funcionando tu DocIntro, es necesario que configures en el Planificador de Procesos de Thuban el trabajo (Job) que se encarga de tomar el xml y ejecutar las instrucciones → DocIntroJob

Artículos Relacionados

Related content