Diferencia entre revisiones de «DocIntro»

De Thubanpedia
Saltar a: navegación, buscar
(Página creada con «{{Languages}} ='''Introducción'''= ''Thuban® DocIntro'' es una herramienta que permite automatizar el procesamiento, identificación, ordenamiento y almacenamiento de ...»)
 
(Introducción)
 
(No se muestran 6 ediciones intermedias realizadas por un usuario)
Línea 23: Línea 23:
 
Dentro de cada origen de datos es posible configurar preprocesadores y postprocesadores que realizan, entre otras cosas, envíos de e-mails, validaciones, reconocimiento de códigos de barras, etc.  
 
Dentro de cada origen de datos es posible configurar preprocesadores y postprocesadores que realizan, entre otras cosas, envíos de e-mails, validaciones, reconocimiento de códigos de barras, etc.  
  
[[Imagen:doc1.png|thumb|700px|center]]
+
[[Imagen:doc1b.png|thumb|700px|center]]
  
 
='''Usos comunes de DocIntro JEE'''=
 
='''Usos comunes de DocIntro JEE'''=
Línea 362: Línea 362:
 
A continuación se revisará un archivo de configuración básico para explicar este concepto gráficamente:
 
A continuación se revisará un archivo de configuración básico para explicar este concepto gráficamente:
  
<source lang="xml">
+
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
+
<beans xmlns="http://www.springframework.org/schema/beans"
<beans xmlns="http://www.springframework.org/schema/beans"
+
 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 
     xmlns:aop="http://www.springframework.org/schema/aop"
 
     xmlns:aop="http://www.springframework.org/schema/aop"
Línea 372: Línea 371:
 
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-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.TrayManagerBean">
 
     <bean id="trayManager" class="com.latintech.thuban.docintro.tray.TrayManagerBean">
    <property name="preProcessors">
+
                        <property name="preProcessors">
  <map>
+
                        <map>
  <entry>
+
                            <entry>
      <key><value>scanTray-Pc</value></key>
+
                                  <key><value>scanTray-Pc</value></key>
      <list>
+
                                        <list>
<ref bean="fileWorkitemProcessor"/>
+
                                                <ref bean="fileWorkitemProcessor"/>
<ref bean="qPrescanProcessor"/>
+
                                                <ref bean="qPrescanProcessor"/>
<ref bean="nameIndexesProcessor"/>
+
                                                <ref bean="nameIndexesProcessor"/>
 
       </list>
 
       </list>
 
   </entry>
 
   </entry>
 
 
   <entry>
 
   <entry>
      <key><value>scanTray-Citi</value></key>
+
                                      <key><value>scanTray-Citi</value></key>
      <list>
+
                                        <list>
<ref bean="fileWorkitemProcessor"/>
+
                                              <ref bean="fileWorkitemProcessor"/>
<ref bean="nameIndexesProcessor"/>
+
                                              <ref bean="nameIndexesProcessor"/>
<ref bean="OSAFieldsValidatorProcessor"/>
+
                                              <ref bean="OSAFieldsValidatorProcessor"/>
      </list>
+
                                        </list>
      </entry>
+
                                </entry>
    </map>
+
                            </map>
    </property>
+
                </property>
    <property name="processor">
+
                <property name="processor">
 
   <map>
 
   <map>
      <entry>
+
          <entry>
      <key><value>scanTray-Pc</value></key>
+
                                <key><value>scanTray-Pc</value></key>
<ref bean="createDocumentProcessor"/>
+
                                <ref bean="createDocumentProcessor"/>
      </entry>
+
                            </entry>
 
+
                            <entry>
      <entry>
+
                                <key><value>scanTray-Citi</value></key>
      <key><value>scanTray-Citi</value></key>
+
                                <ref bean="createDocumentProcessor"/>
<ref bean="createDocumentProcessor"/>
+
                            </entry>
      </entry>
+
                        </map>
</map>
+
                </property>
    </property>
+
                <property name="postProcessors">
    <property name="postProcessors">
+
                        <map>
 +
                            <entry>
 +
                                <key><value>scanTray-Pc</value></key>
 +
                                        <list>
 +
                                                <ref bean="backupInputProcessor"/>
 +
                                                <ref bean="indexProvencredProcessor"/>
 +
                                        </list>
 +
                                </entry>
 +
                                <entry>
 +
                                        <key><value>scanTray-Citi</value></key>
 +
                                        <list>
 +
                                              <ref bean="backupInputProcessor"/>
 +
                                        </list>
 +
                                </entry>
 +
                        </map>
 +
                </property>
 +
                <property name="errorProcessors">
 
   <map>
 
   <map>
      <entry>
+
                            <entry>
      <key><value>scanTray-Pc</value></key>
+
                                  <key><value>scanTray-Pc</value></key>
<list>
+
                                      <list>
<ref bean="backupInputProcessor"/>
+
                                            <ref bean="defaultTrayErrorProcessor"/>
<ref bean="indexProvencredProcessor"/>
+
                                      </list>
</list>
+
                                </entry>
      </entry>
+
                                <entry>
 
+
                                    <key><value>scanTray-Citi</value></key>
 
+
                                        <list>
      <entry>
+
      <key><value>scanTray-Citi</value></key>
+
<list>
+
<ref bean="backupInputProcessor"/>
+
</list>
+
      </entry>
+
    </map>
+
    </property>
+
    <property name="errorProcessors">
+
  <map>
+
 
+
      <entry>
+
      <key><value>scanTray-Pc</value></key>
+
      <list>
+
 
       <ref bean="defaultTrayErrorProcessor"/>
 
       <ref bean="defaultTrayErrorProcessor"/>
      </list>
+
                                        </list>
      </entry>
+
                                </entry>
 +
                          </map>
 +
                </property>
 +
                <property name="trays">
 +
                        <list>
 +
                                <ref bean="scanTray-Citi"/>
 +
                                <ref bean="scanTray-Pc"/>
 +
                        </list>
 +
                </property>
 +
          </bean>
 +
        </beans>
  
      <entry>
 
      <key><value>scanTray-Citi</value></key>
 
      <list>
 
      <ref bean="defaultTrayErrorProcessor"/>
 
      </list>
 
      </entry>
 
    </map>
 
    </property>
 
    <property name="trays">
 
    <list>
 
    <ref bean="scanTray-Citi"/>
 
<ref bean="scanTray-Pc"/>
 
    </list>
 
    </property>
 
</bean>
 
    </beans>
 
 
</source>
 
  
  
Línea 459: Línea 451:
 
'''Encabezado''':
 
'''Encabezado''':
  
<source lang="xml"><?xml version="1.0" encoding="UTF-8"?></source>
+
<?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.
 
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.
Línea 466: Línea 458:
 
'''Tag Principal:'''
 
'''Tag Principal:'''
  
<source lang="xml">
+
<beans xmlns="http://www.springframework.org/schema/beans"
<beans xmlns="http://www.springframework.org/schema/beans"
+
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
      xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:aop="http://www.springframework.org/schema/aop"
+
      xmlns:tx="http://www.springframework.org/schema/tx"
    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
    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/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">
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
+
</beans>
 
+
</beans>
+
</source>
+
  
  
Línea 491: Línea 480:
  
  
<source lang="xml">
+
<bean id="trayManager" class="com.latintech.thuban.docintro.tray.TrayManagerBean">
<bean id="trayManager" class="com.latintech.thuban.docintro.tray.TrayManagerBean">
+
        <property name="preProcessors">
    <property name="preProcessors">
+
                  <map>
  <map>
+
                          <entry>
  <entry>
+
                                        <key><value>scanTray-Pc</value></key>
      <key><value>scanTray-Pc</value></key>
+
                                        <list>
      <list>
+
                                                <ref bean="fileWorkitemProcessor"/>
<ref bean="fileWorkitemProcessor"/>
+
                                                <ref bean="qPrescanProcessor"/>
<ref bean="qPrescanProcessor"/>
+
                                                <ref bean="nameIndexesProcessor"/>
<ref bean="nameIndexesProcessor"/>
+
                                        </list>
      </list>
+
                            </entry>
  </entry>
+
                  </map>
    </map>
+
                </property>
    </property>
+
                <property name="processor">
    <property name="processor">
+
                            <map>
  <map>
+
                                <entry>
      <entry>
+
                                        <key><value>scanTray-Pc</value></key>
      <key><value>scanTray-Pc</value></key>
+
                                        <ref bean="createDocumentProcessor"/>
<ref bean="createDocumentProcessor"/>
+
                                </entry>
      </entry>
+
                  </map>
</map>
+
                </property>
    </property>
+
                <property name="postProcessors">
    <property name="postProcessors">
+
                            <map>
  <map>
+
                                <entry>
      <entry>
+
                                        <key><value>scanTray-Pc</value></key>
      <key><value>scanTray-Pc</value></key>
+
                                        <list>
<list>
+
                                                <ref bean="backupInputProcessor"/>
<ref bean="backupInputProcessor"/>
+
                                                <ref bean="indexProvencredProcessor"/>
<ref bean="indexProvencredProcessor"/>
+
                                        </list>
</list>
+
                                </entry>
      </entry>
+
                </property>
    </property>
+
                <property name="errorProcessors">
    <property name="errorProcessors">
+
                <map>
  <map>
+
                    <entry>
 
+
                          <key><value>scanTray-Pc</value></key>
      <entry>
+
                                <list>
      <key><value>scanTray-Pc</value></key>
+
                                    <ref bean="defaultTrayErrorProcessor"/>
      <list>
+
                                </list>
      <ref bean="defaultTrayErrorProcessor"/>
+
                      </entry>
      </list>
+
                    </map>
      </entry>
+
                </property>
    </map>
+
              <property name="trays">
    </property>
+
                        <list>
    <property name="trays">
+
                              <ref bean="scanTray-Pc"/>
    <list>
+
                        </list>
<ref bean="scanTray-Pc"/>
+
              </property>
    </list>
+
          </bean>
    </property>
+
</bean>
+
 
+
</source>
+
 
+
  
  

Última revisión de 06:37 21 mar 2016


Introducción

Thuban® DocIntro es una herramienta que permite automatizar el procesamiento, identificación, ordenamiento y almacenamiento de lotes masivos de archivos en diversos formatos.

Es una aplicación flexible que permite indexar y procesar documentos e información electrónica procedente de diversas fuentes.

Con Thuban® DocIntro es posible parametrizar diversos orígenes de datos (bandejas de procesamiento):

- Archivos que se encuentran en directorios de red.

- Bandejas de correo electrónico.

- Archivos que se encuentran en otros repositorios de imágenes.

- Información en base de datos (externas o no).


Además, debido a su arquitectura extensible, es posible definir otros orígenes de datos personalizados para satisfacer las necesidades de cada organización.

Dentro de cada origen de datos es posible configurar preprocesadores y postprocesadores que realizan, entre otras cosas, envíos de e-mails, validaciones, reconocimiento de códigos de barras, etc.

Doc1b.png

Usos comunes de DocIntro JEE

Ingreso masivo de documentos provenientes de:

- Escáners (Isla de digitalización)

- Servidores de Fax

- Direcciones de Correo

- Carpetas de Red

- Cola de mensajería MQ


Indexación:

- Por detección de códigos de barras.

- Por archivos externos que contengan los índices (con la posibilidad de configurar el formato del archivo de índices a utilizar).

- Mediante ejecución de Store Procedures o consultas a bases de datos.


Validación:

- De datos obligatorios.

- De tipos de datos.

- De datos que cumplan con una determinada máscara/patrón.


Transformación:

- Conversión de formatos.

- Aplicación de algoritmos de mejora de imágenes.

- Eliminación de páginas en blanco.

- División/Combinación de múltiples documentos.

- Inicio de procesos de Workflow.


Otras acciones:

- Envío de mails en línea o de forma asíncrona (offline) con archivos adjuntos.

- Eliminación de archivos temporales.

- Generación de backups de procesamiento

Funcionamiento interno de DocIntro

El servicio de DocIntro procesa documentos de manera secuencial: en ningún momento realiza procesamiento en paralelo. Por cada bandeja de trabajo activa, se procesa una cantidad de documentos predefinida, cuando se alcanza ese límite se pasa a la siguiente, y así sucesivamente.

En caso de requerir un procesamiento en paralelo, es posible definir distintos jobs para ejecutar simultáneamente más de una instancia de DocIntro. Para evitar errores inesperados, se recomienda que los distintos jobs no trabajen sobre el mismo set de bandejas.

Una bandeja es la responsable de recuperar el siguiente workitem que se va a procesar. Los workitems cuentan con un único archivo de imagen asociado y un mapa de campos y valores. Los valores de los campos pueden recuperarse posteriormente utilizando distintos preprocesadores de diferentes formas. Por ejemplo, realizando un parseo del nombre del documento, leyendo un código de barra de la imagen asociada, de una base de datos, etc.

Una vez creado el workitem, DocIntro genera un Contexto de Procesamiento que viaja a través de la cadena de procesadores. Además del workitem, el contexto de procesamiento contiene referencias a la bandeja de procesamiento y variables propias del contexto para la comunicación entre procesadores. En caso de que alguno de los procesadores genere un error, se invocan los procesadores asociados a dicha bandeja. Si la cadena de procesadores se ejecuta correctamente, se invoca el evento de finalización OK de la bandeja y se continúa con el siguiente archivo de la bandeja.

Bandejas

Las bandejas de trabajo son las encargadas de recuperar los documentos de distintos orígenes que se desean procesar. Por lo general, todas las bandejas tienen un comportamiento similar:

- Una carpeta u origen de datos de donde recuperar el archivo.

- Una carpeta o destino de datos donde almacenar el archivo procesado.

- Una carpeta o destino de datos donde almacenar el archivo en caso de error.


Todas las bandejas pueden definir valores por defecto para los campos de un documento.

A continuación, se describen brevemente las bandejas de DocIntro JEE. Para más información, consulte el Javadoc de DocIntro y las carpetas de ejemplos de configuración.


Bandeja de carpetas

Es la bandeja de trabajo más simple de DocIntro. Permite recuperar los archivos desde una ubicación en el Sistema de archivos y procesar uno a uno los archivos que se encuentren en esa ubicación. No permite filtrar los archivos que se seleccionan ni buscar en subcarpetas.

Bandeja de sub-carpetas

Extiende el comportamiento de la bandeja de carpetas para permitir la búsqueda en las subcarpetas de la carpeta de input. Además, permite definir expresiones regulares para determinar qué archivos o carpetas deben incluirse o ignorarse.

Bandeja de lotes

Extiende el comportamiento de la bandeja de carpetas para permitir el procesamiento por lotes. Los lotes de trabajo son conjuntos de archivos de imágenes que comparten índices. Permite definir expresiones regulares para determinar cuál es el archivo de índices del lote, cuál es la extensión de los archivos de imágenes a subir y cuál es el archivo testigo que indica que el lote esta completo (antes de procesarse).

Además, esta bandeja controla los errores de una manera especial: aunque alguno de los elementos del lote genere un error, el procesamiento del resto de los ítems no se detiene. Para facilitar el reprocesamiento del ítem problemático, se realiza una copia del archivo de imagen y del de índices a una subcarpeta y sin necesidad de duplicar información, con solo cortarlo y pegarlo en la carpeta de input, se reprocesa.

Una vez que se vacía el lote y sólo queda el documento de índices (testigo del lote), se elimina. El tratamiento por separado de cada imagen del lote permite que DocIntro pueda ser interrumpido en cualquier momento sin afectar el estado de los lotes.

Es posible configurar una carpeta de backup que copie el lote completo antes de comenzar a procesarlo.

Bandeja de carpetas indexadas

Extiende el comportamiento de la Bandeja de carpetas para permitir archivos indexados mediante otro archivo (a cada archivo de imagen le corresponde un archivo de índices). Además, permite buscar en subcarpetas y eliminar carpetas vacías después de su procesamiento. Esta bandeja se utiliza en los casos en los que la información ya viene indexada desde otro sistema u origen de datos y no es posible utilizar un método más simple como el nombre del documento o metadata del archivo de imagen.

Bandeja de correo

Es una bandeja de trabajo que permite recuperar los archivos de una casilla de correo POP3 con autenticación o sin ella. Para el manejo de errores y output utiliza carpetas del sistema de archivos. Permite indexar los documentos para obtener los campos del asunto o el cuerpo del e-mail.

Bandeja de impresora virtual

Es una bandeja de trabajo que permite recuperar los archivos desde una impresora virtual. En Thuban® es posible configurar Jobs para acceder a la impresora virtual y utilizarla para convertir formatos (a PDF o TIF).

Procesadores

En esta sección se detallan los procesadores con los que cuenta actualmente DocIntro JEE. Algunos procesadores se pueden utilizar como preprocesadores, procesadores o postprocesadores, dependiendo de la situación. Para ver los posibles usos consulte la grilla de procesadores.

DESCRIPCIÓN PREPROCESADOR PROCESADOR POSTPROCESADOR ERROR
Procesador de archivos asociados (Associated Files Processor): Es un procesador que establece un listado de archivos asociados al workitem que deben ser subidos en un parámetro del contexto. Se utiliza en conjunto con el Procesador de nuevos documentos múltiples de workitem, para subir múltiples archivos para un mismo set de índices. X
Procesador secuencial de archivos asociados (Associated files Sequential Processor): Procesador que recupera los archivos asociados a un workitem en base a una secuencia obtenida del nombre del archivo. X
Procesador de Backup (Backup processor): Procesador que realiza una copia de backup del documento. X
Procesador de nuevos documentos de Workitem (New Workitem Document Processor): Procesador que sube un documento a Thuban con la información de indexación del contexto. En donde el archivo subido está directamente asociado con el workitem. X
Procesador de nuevos documentos múltiples de Workitem (New Workitem Multiple Documents Processor) : Procesador que sube a Thuban múltiples documentos con la información de indexación del contexto. Así, recupera la lista de archivos de un parámetro del contexto. X
Procesador de errores por defecto en bandejas (Default Tray Errors Processor): Procesador que invoca el procesamiento de errores por defecto de la bandeja de trabajo. Por lo general, se copia el archivo con error y un archivo de log que detalla el error del documento. X
Procesador de supresión de carpetas vacías (Delete Empty Folders Processor): Procesador que elimina subcarpetas vacías de una carpeta raíz previamente definida. X
Procesador de supresión de listas de archivos (Delete Files List Processor): Procesador que elimina archivos en base a una lista recuperada del contexto. X
Procesador de supresión de bandejas con carpetas de salida (Delete Trays with Output Folder Processor): Procesador que elimina el documento procesado (copia de backup) de la carpeta de salida. X
Procesador de detección de códigos de barra (Barcode Reader Processor): Procesador que detecta códigos de barra de la imagen asociada y lo establece como campo del documento. X
Procesador de invocación de aplicaciones externas (Invoke External Application processor): Procesador que invoca una aplicación externa. Permite configurar los parámetros “Timeout” y “Path de ejecución”, entre otros. X
Procesador de extractor de índices de campo (Fields Indexes Extractor Processor): Procesador que recupera los índices parseando un campo del documento. X
Procesador de transformación de campos (Transform Fields Processor): Procesador que invoca una transformación de formato o valores a uno o más campos. X
Procesador de validación de campos (Fields Validation Processor): Procesador que invoca uno o más validadores para cada campo. X
Procesador de extracción de índices de metadata (Extract Metadata Indexes processor): Procesador que recupera los índices de la metadata del documento y los establece como campos del workitem. Funciona tanto con archivos TIF como PDF. X
Procesador de indexación de Workitem (Index Workitem Processor): Procesador que indexa un documento extrayendo los índices de un indexador. X
Procesador de exportación de correo (Export E-mail Processor): Procesador que descarga el correo y los archivos adjuntos de un email y los guarda en una carpeta de salida. X
Procesador de fusión de archivos TIF (Merge TIF Files Processor): Procesador que fusiona múltiples archivos tif en uno solo. X
Procesador de extracción del nombre de índices (Extract Index Name Processor): Procesador que recupera los campos del documento parseando el nombre del archivo. Utiliza las estrategias de extracción mencionadas en “Field Indexes Extractor Processor”. X
Procesador de impresión de archivos (Print Files Processor): Procesador que imprime el archivo asociado al workitem en una impresora predeterminada. Soporta los siguientes formatos: PNG, JPG, BMP, GIF, TIF y PDF. Si se trata de un formato no soportado es posible invocar una aplicación externa para su impresión. X X X X
Procesador de Prescan (Prescan processor): Procesador que recupera la información de los índices de Prescan en base al valor de uno de sus campos. X
Procesador de resolución de variables (Resolve Variables Processor): Procesador que resuelve variables en los campos del documento. Resuelve dos tipos de variables: "$V{nombreCampo}" que se resuelve con otro campo del mismo documento y "$F{'mascara'}" que se resuelve con una fecha en la máscara indicada. La máscara debe figurar entre comillas simples y puede utilizarse cualquier formato utilizable con la clase “SimpleDateFormat”. X
Procesador de establecimiento de clase documental (Set Documental Class Processor): Procesador que establece la clase documental para un workitem. Este procesador se utiliza cuando una misma bandeja sube documentos de distintas clases documentales, ya que cada bandeja define una clase documental por defecto. X
Procesador de ejecución de condiciones simples de campos (Execute Fields’ Simple Condition Processor): Procesador que ejecuta una serie de procesadores cuando un campo del documento cumple cierta condición preestablecida. X X X
Procesador de condiciones simples de campos (Fields’ Simple Condition Processor): Procesador que establece valores para campos del documento cuando un valor cumple con una condición preestablecida. X
Procesador inteligente de supresión de archivos (Smart Delete Files Processor): Procesador que elimina archivos en base a un criterio determinado. X X X
Procesador de segmentación (Split Processor): Procesador que divide un documento en muchos cortando el documento a intervalos fijos de hojas. Además puede remover las páginas en blanco. X
Procesador de ejecución de Store Procedure (Execute Store Procedure Processor): Procesador que ejecuta un Store Procedure. X X X
Procesador de conversión de TIF en PDF (Convert TIF to PDF Processor): Procesador que convierte imágenes en TIF a PDF. Además, permite manipular los permisos del PDF. X
Procesador de descomprensión de ZIP (Unzip Processor): Procesador que descomprime un archivo zip en una ubicación determinada. X
Procesador de segmentación de páginas blancas (Split Blank Pages Processor): Procesador que divide un documento en muchos cortando el documento por sus páginas en blanco. Además remueve las páginas en blanco. X
Procesador de envío offline de correo (Send E- mail Offline processor): Procesador que permite almacenar correos en una base de datos con el estado pendiente de envío. Luego, estos emails son enviados por medio de otro Job que corre asincrónicamente. Contempla errores en el envío de mails y cambia el estado de acuerdo con el número de intentos, y realiza depuraciones de los mails antiguos que no fueron enviados o cayeron en error. X X
Procesador de envío online de correo (Send E-mails Online Processor): Procesador que envía un mail en tiempo de ejecución. La ejecución se detiene para el envío de mails. No deja historia. X
Procesador de metadata de TIF (TIF metadata processor): Procesador que manipula un archivo Tif para establecer su metadata. Permite modificar la resolución, la compresión y la interpretación fotométrica (Blanco/Negro). X

Configuración de DocIntro JEE

La configuración de Thuban® DocIntro JEE 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 JEE 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.TrayManagerBean">
                        <property name="preProcessors">
                       <map>
                           <entry>
                                  <key><value>scanTray-Pc</value></key>
                                       <list>
                                               <ref bean="fileWorkitemProcessor"/>
                                               <ref bean="qPrescanProcessor"/>
                                               <ref bean="nameIndexesProcessor"/>
  			    		</list>
  				</entry>
  				<entry>
                                     <key><value>scanTray-Citi</value></key>
                                       <list>
                                              <ref bean="fileWorkitemProcessor"/>
                                              <ref bean="nameIndexesProcessor"/>
                                              <ref bean="OSAFieldsValidatorProcessor"/>
                                       </list>
                                </entry>
                           </map>
               </property>
               <property name="processor">
  			<map>
  		    	    <entry>
                               <key><value>scanTray-Pc</value></key>
                               <ref bean="createDocumentProcessor"/>
                           </entry>
                           <entry>
                               <key><value>scanTray-Citi</value></key>
                               <ref bean="createDocumentProcessor"/>
                           </entry>
                       </map>
               </property>
               <property name="postProcessors">
                       <map>
                           <entry>
                                <key><value>scanTray-Pc</value></key>
                                       <list>
                                               <ref bean="backupInputProcessor"/>
                                               <ref bean="indexProvencredProcessor"/>
                                       </list>
                               </entry>
                               <entry>
                                       <key><value>scanTray-Citi</value></key>
                                       <list>
                                             <ref bean="backupInputProcessor"/>
                                       </list>
                               </entry>
                        </map>
               </property>
               <property name="errorProcessors">
  			<map>
                            <entry>
                                 <key><value>scanTray-Pc</value></key>
                                      <list>
                                           <ref bean="defaultTrayErrorProcessor"/>
                                      </list>
                               </entry>
                               <entry>
                                    <key><value>scanTray-Citi</value></key>
                                       <list>
  			    			<ref bean="defaultTrayErrorProcessor"/>
                                       </list>
                               </entry>
                          </map>
               </property>
               <property name="trays">
                       <list>
                               <ref bean="scanTray-Citi"/>
                               <ref bean="scanTray-Pc"/>
                       </list>
               </property>
          </bean>
        </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.


TrayManager:

Como se mencionó anteriormente, DocIntro JEE 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 un bean propio denominado TrayManager.

El componente TrayManager será responsable de indicar qué bandejas están activas y para cada una de ellas, los procesadores asociados en cada etapa (pre, post y error).


<bean id="trayManager" class="com.latintech.thuban.docintro.tray.TrayManagerBean">
       <property name="preProcessors">
                  <map>
                          <entry>
                                       <key><value>scanTray-Pc</value></key>
                                       <list>
                                               <ref bean="fileWorkitemProcessor"/>
                                               <ref bean="qPrescanProcessor"/>
                                               <ref bean="nameIndexesProcessor"/>
                                       </list>
                           </entry>
                  </map>
               </property>
               <property name="processor">
                           <map>
                               <entry>
                                       <key><value>scanTray-Pc</value></key>
                                       <ref bean="createDocumentProcessor"/>
                               </entry>
                  </map>
               </property>
               <property name="postProcessors">
                           <map>
                                <entry>
                                       <key><value>scanTray-Pc</value></key>
                                       <list>
                                               <ref bean="backupInputProcessor"/>
                                               <ref bean="indexProvencredProcessor"/>
                                       </list>
                                </entry>
               </property>
               <property name="errorProcessors">
                <map>
                    <entry>
                          <key><value>scanTray-Pc</value></key>
                               <list>
                                    <ref bean="defaultTrayErrorProcessor"/>
                               </list>
                     </entry>
                   </map>
               </property>
             <property name="trays">
                       <list>
                             <ref bean="scanTray-Pc"/>
                       </list>
             </property>
          </bean>


El componente TrayManager presenta las siguientes propiedades:

preProcessors: Un mapa que contiene como key el nombre de la bandeja y como valor a una lista de pre-procesadores para la misma.

processor: Un mapa que contiene como key el nombre de la bandeja y como valor la referencia al procesador principal de la bandeja.

postProcessors: Un mapa que contiene como key el nombre de la bandeja y como valor a una lista de post-procesadores.

errorProcessors: Un mapa que contiene como key el nombre de la bandeja y como valor una lista de procesadores de error.

trays: Una lista con las referencias a las bandejas que están activas actualmente.

Casos de Éxito

En la carpeta de ejemplos pueden encontrarse diversos archivos de configuración para distintos casos de éxito de instalación de DocIntro.

Caso 1: Configuración de DocIntro para una isla de digitalización.

En este caso, DocIntro se configura para leer documentos de una carpeta de sistema de archivos. Los archivos a indexar son archivos TIF multi-página y dentro de los comentarios de TIF (en la metadata del documento) se encuentran almacenados los índices del documento con un formato del estilo:

NRO_DOC= 10203040
VENCIMIENTO= 2008-04-12


En donde hay que separar la dupla campo-valor con “=” y los índices con Enter. Este esquema es común en software de escaneo de alta productividad que históricamente utiliza TIF Grupo 4 como estándar de escaneo.

La configuración en este caso es:

- Como bandeja de trabajo: Folder Tray.

- Como preprocesador: Imaging Indexes Extractor Processor: Para recuperar los índices de la metadata del documento.

- Como procesador: Create Document Workitem Processor: Para subir el archivo al Thuban®.

- Como postprocesador: Ninguno.

- Como procesador de error: Default Tray Error Processor: El procesador de error por defecto copia el ítem en cuestión a la carpeta de error y un archivo de log que detalla el problema encontrado.

Caso 2: Configuración de DocIntro para una isla de digitalización con procesamiento por lotes.

En este caso, DocIntro se configura para leer documentos de una carpeta de sistema de archivos. En esa carpeta se copian subcarpetas de archivos TIF, y cada una representa un lote de documentos. Además de los archivos de imagen, existe un archivo “.txt” con los índices de todos los documentos de ese lote. Como elemento adicional, se configura la detección de códigos de barra para establecer el valor de un campo.

El formato del archivo de Índices es el siguiente:

Por cada documento existe una línea. Por cada línea, los campos se separan por el carácter “|” y la dupla campo-valor por el carácter “=”. Como última entrada se agrega además el nombre del archivo asociado. El nombre físico del archivo se corresponde con el campo FILE_NAME del archivo de índices.

Ejemplo de índices para los archives 0000002.tif y 00000003.tif:


<source lang="xml">PC_OBLEA=3119298|CLASS_NAME=PROV_DOCUMENTO|FILE_NAME=0000002

PC_OBLEA=3119297|CLASS_NAME=PROV_DOCUMENTO|FILE_NAME=00000003</source>


La configuración en este caso es:

- Como bandeja de trabajo: Batch Tray. Porque permite el manejo de lotes de trabajo.

- Como preprocesadores: Indexer Workitem Processor con un File Workitem Indexer asociado para recuperar los índices para cada archivo.

- Detect Codebar Processor para recuperar el código de barras de la imagen y asignarlo a un campo.

- Como procesador: Create Document Workitem Processor: Para subir el archivo a Thuban®.

- Como postprocesador: Smart Delete Processor: Para eliminar los lotes cuando solo quede el archivo testigo.

- Como procesador de error: Default Tray Error Processor: El procesador de error por defecto que copia el ítem en cuestión a la carpeta de error y un archivo de log que detalla el problema encontrado.

Glosario

Bean Factory: Es el componente contenedor que configura y gestiona los componentes de la aplicación denominados beans. Típicamente, estos beans colaboran entre ellos y, por lo tanto, poseen dependencias entre sí. Estas dependencias son reflejadas en el archivo de configuración utilizado por el Bean Factory.


Spring Framework: También conocido simplemente como Spring, es un framework de código abierto de desarrollo de aplicaciones para la plataforma Java.