AlfrescoFreemind

Integrando Freemind en Alfresco #

El contenido original de este artículo puede consultarse en:

Visualizando un archivo freemind en Alfresco #

Creamos en primer lugar un nuevo tipo mimetype de freemind .mm en el directorio extensión de configuración (p.ej en /opt/alfresco/tomcat/shared/classes/alfresco/extension) definido en <entension>/mimetype-map-extension.xml

$ vim <extension>/mimetypes-extension.xml

<alfresco-config area="mimetype-map">
<config condition="Mimetype Map" evaluator="string-compare">
  <mimetypes>
    <mimetype display="Freemind"
      mimetype="application/x-freemind">
      <extension>mm</extension>
    </mimetype>
  </mimetypes>
</config>
</alfresco-config>

HINT: Resulta que en las versiones de Alfresco Labs 3.0 y 3.1 hay un problemita relacionado con la creación de mimetypes en el directorio extension de modo que puede ser necesario modificar /opt/alfresco/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/mimetype/mimetype-map.xml

Nos bajamos el flash player de freemind:

http://www.efectokiwano.net/mm/freeMindFlashBrowser.zip

Alojamos el archivo descomprimido en /opt/alfresco/tomcat/webapps/alfresco/custom/freemind/

Y creamos la template según:

http://wiki.alfresco.com/wiki/Template_Guide

$ vim template.ftl

<#if document?exists>
<div id="flashcontent" style="height: 500px;">
         Flash plugin or Javascript are turned off.
         Activate both  and reload to view the mindmap
</div>
<script type="text/javascript" src="/alfresco/custom/freemind/flashobject.js"> </script>
<script type="text/javascript">
        var fo = new FlashObject("/alfresco/custom/freemind/visorFreemind.swf", 
                                             "visorFreeMind", "100%", "100%", 6, "#9999ff");
        fo.addParam("quality", "high");
        fo.addParam("bgcolor", "#ffffff");
        fo.addVariable("openUrl", "_blank");
        fo.addVariable("initLoadFile", "/alfresco${document.url}");
        fo.addVariable("startCollapsedToLevel","5");
        fo.write("flashcontent");
    </script>
<#else>
   No document found!
</#if>

Subimos la template a Data Dictionary > Presentation Templates y de este modo podemos previsualizar un archivo mm con la template.

Indexando un documento Freemind en Alfresco #

La idea principal es usar una herramienta de línea de comandos para la extracción de los datos de un archivo freemind (.mm) para su posterior indexación en Alfresco. Los pasos son los siguientes.

  • Añadir un mimetype application/x-freemind para .mm
  • Añadir un transformador para el mimetype appplication/x-freemind a text/plain

Un archivo freemind no es más que un XML. La conversión de los datos del freemind a texto se puede hacer mediante xmlstarlet, que se puede descargar de:

http://xmlstar.sourceforge.net/

o bien a través de los repositorios de debian/ubuntu

$ sudo aptitude install xmlstarlet

Un pequeño script de shell con permisos de ejecución (/home/cesar/bin/freemind2text.sh) del tipo:

# !/bin/bash  
SOURCE=$1  
TARGET=$2  
echo "from $SOURCE to $TARGET" >>/tmp/freemindtransform.log  

xmlstarlet sel --text --encoding UTF-8 -t -m //node -v @TEXT -o ' ' "$SOURCE" > "$TARGET" 

Creamos un <entension>/freemind-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "[http://www.springframework.org/dtd/spring-beans.dtd">]
<beans>
  <bean id="transformer.freemindToText" 
               class="org.alfresco.repo.content.transform.RuntimeExecutableContentTransformer" 
               parent="baseContentTransformer">
    <property name="transformCommand">
      <bean name="transformer.freemind.Command" class="org.alfresco.util.exec.RuntimeExec">
        <property name="commandMap">
          <map>
            <entry key="Linux.*">
              <value>/home/cesar/bin/freemind2text.sh ${source} ${target}</value>
            </entry>
            <entry key="Windows.*">
              <value>/home/cesar/bin/freemind2text.sh ${source} ${target}</value>
            </entry>
          </map>
        </property>
        <property name="defaultProperties">
          <props>
            <prop key="options"/>
          </props>
        </property>
      </bean>
    </property>

    <property name="explicitTransformations">
      <list>
        <bean class="org.alfresco.repo.content.transform.ExplictTransformationDetails" >
          <property name="sourceMimetype"><value>application/x-freemind</value></property>
          <property name="targetMimetype"><value>text/plain</value></property>
        </bean>
      </list>
    </property>

    <!--
    <property name="explicitTransformations">
      <list>
        <bean class="org.alfresco.repo.content.transform.ContentTransformerRegistry$TransformationKey">
          <constructor-arg>
            <value>application/x-freemind</value>
          </constructor-arg>
          <constructor-arg>
            <value>text/plain</value>
          </constructor-arg>
        </bean>
      </list>
    </property>
    -->

  </bean>
</beans>

HINT: Fijaros que hubo que cambiar la parte de explicitTransformations del artículo original probablemente debido a otra versión de Alfresco.

Y una vez reiniciado Alfresco el contenido de nuestros archivos freemind será indexado automáticamente al añadir contenido y por lo tanto se podrá buscar posteriormente

Promedio (0 Votos)
Comentarios