Proyecto

General

Perfil

Plugin Hotfolder UpdateMetadata

Información

Autor Laureano Quintero
Sitio Web http://www.adapting.com
Repositorio source Actualizar_Metadatos_generico
Código fuente http://svn-community.adapting.com:8080/svn/Community/Plugins/Hotfolder/Actualizar_Metadatos_generico
Versión Actual v2.0
Compatible con Hotfolder 3.0.0

Resumen

En esta wiki se explica la estructura básica que deben tener los plugins para poder funcionar en el hotfolder Updatemetadata. En ella se explicarán detalles que se han ido encontrando durante el desarrollo del mismo.

Notas de instalación

Descargarse e instalar la versión del hotfolder 3.0.2 Descargar este plugin y abrirlo con visual studio.
Una vez instalado el hotfolder, hay que configurar todos los hotfolder necesarios, cada uno apuntando al Abox correspondiente. Cuando se ejecuta el hotfolder se creará una carpeta extensions y otra Rules, dentro de las cuales habrá una subcarpeta HotfolderX para cada uno de los hotfolder configurados. Es dentro de estas carpetas donde se debe depositar el fichero de reglas y el fichero de la compilación del plugin, en caso de que sea necesario. En caso de estar vacías no se realizará ninguna acción adicional con los documentos procesados y se seguirá las reglas del fichero de reglas general ubicado en la raíz de la carpeta del hotfolder.

Guía de uso

En la solución del plugin existe un proyecto llamado Adapting.Hotfolder.Extensions , en éste se ha creado la clase _HotfolderEvents.cs en donde se ha realizado la suscripción de los eventos de Initialization y BeforeUploadDocument, para el resto de suscripciones se debe proceder igual.

Por otra parte el funcionamiento del plugin es el siguiente:

1. Colocar en la carpeta de subida del hotfolder el archivo que se desea crear en abox junto con un .csv ambos con el codigo del documento con el que se creara.

2. ir a la hoja de regla HotfolderX y buscar el archivo Xml de reglas, dentro de este en la regla tipo regex, asigna en el parámetro code la palabra name, esto para que al momento de que se cree el nuevo documento, este se le colocara el código que contiene el nombre y al momento de actualizar los metadatos con el plugin con el nombre del fichero podra conseguir su respectivo documento en abox.

3. Dentro de Abox, se debe configurar en la zona de Configuracion>Document>Extensiones Soportadas para que abox pueda recibir documento de tipo .csv, esto se realiza para que el hotfolder pueda procesar los .csv y no los rechace como formato no valido

Contenido archivo .CSV

Este es un ejemplo del contenido del archivo .csv

ÓPER.FÚENTE;OPÉR.NUMDOC;OPER.FECHÁ;;ÓPER.SOL
060;802007670;10/11/2015;;CONTABILIZO FACTURA CORRESPONDIENTE A SERVICIO DE LUZ APARTAMENTO

en el cual en la primera linea va la cabecera, esta contiene los codigos de los metadatos separados por ',' ; en la segunda linea van los valores con los cuales se desean actualizar los metadatos, cada valor de metadato ocupara la misma posición que su código en la cabecera, y en el caso de las fechas, tendran el formato dd/mm/yyyy.

Nombre ensamblado

Respecto al nombre del ensamblado, sólo hay que tener la precaución de que cada uno debe tener un nombre diferente al resto, ya que se cargan todas la librería existentes en la subcarpetas de extension, por lo que cada uno debe identificarse de manera única.
Para que se ejecute el plugin correspondiente al hotfolder que se está procesando es necesario realizar la siguiente comprobación:

     var assemblyName = Assembly.GetExecutingAssembly().Location;
     if (assemblyName.Contains(context.Configuration.Name.ToUpper()))
     {
        //Logica del plugin
     }

De esta manera sólo se ejecuta la lógica del plugin si estamos en el correspondiente hotfolder.

Generación de log de los plugins

También se ha incluido la forma de generar logs para los plugin de manera que sabremos qué es lo que va realizando el plugin en cada momento. Para ello debemos definir una variable log:

 private readonly ILog Log = log4net.LogManager.GetLogger("PLUGIN HOTFOLDER 1");

E incluir en el método Register:

 var logConfig = ConfigurationManager.AppSettings["logConfig"];

 XmlConfigurator.Configure(new FileInfo(logConfig));

En donde logConfig lo obtendremos del fichero de configuración general del hotfolder.
Y cuyo contenido de log.config, al cual se hace referencia en la variable logConfig contiene:

<log4net configSource="log4net.config">
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%ndc] &lt;%property{auth}&gt; - %message%newline"/>
      <!--<conversionPattern value="%date [%thread] %-5level - %message%newline" />-->
    </layout>
  </appender>
  <appender name="OutputDebugStringAppender" type="log4net.Appender.OutputDebugStringAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
    </layout>
  </appender>
  <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="C:\Program Files (x86)\Adapting\HotFolder Abox\log-file.txt"/>
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="100KB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
    </layout>
 </appender> 
  <root>
    <level value="INFO"/>
    <appender-ref ref="RollingFileAppender"/>
    <!--<appender-ref ref="ConsoleAppender"/>-->
  </root>
  <logger name="NHibernate">
    <level value="ERROR" />
  </logger>

En este plugin se encuentran todos los ejemplos descritos.

Una vez realizada la lógica necesaria para nuestro plugin y compilada la solución, debemos depositar en la carpeta extensions/HotfolderX los ficheros de la compilación, así como configurar y depositar los ficheros de configuración necesarios.

Historico

Volver al inicio
Agregar imagen desde el portapapeles (Tamaño máximo: 10 MB)