Desplegar una acción en Alfresco

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
peli
Member II

Desplegar una acción en Alfresco

Buenos días,

llevo unas semanas trabajando con Alfresco. Estoy intentando implementar una acción Java para llamarla desde una regla que ejecuta un script cuando se modifica un documento concreto del share. Estoy muy confusa sobre cúal es el procedimiento a seguir para poder llamar a esta acción desde un script. He creado un proyecto Maven, que genera la jerarquía de directorios por defecto. Una vez implementada la acción, ¿Cómo se hace el despliegue de la acción en Alfresco? y ¿Que directorios de /tomcat se utilizan?

Gracias.

17 Replies
angelborroy
Expert

Re: Desplegar una acción en Alfresco

Te recomiendo que leas la serie de tutoriales de Jeff Potts sobre desarrollo en Alfresco: About the Alfresco Developer Tutorial Series | ECM Architect 

En concreto, para esta tarea debes prestar atención a:

Getting Started with the Alfresco Maven SDK | ECMArchitect | Alfresco Developer Tutorials 

Creating Custom Actions in Alfresco | ECMArchitect | Alfresco Developer Tutorials 

Software Engineer in Alfresco Search Team.
peli
Member II

Re: Desplegar una acción en Alfresco

Una vez leída la serie de tutoriales concluyo que, para crear una acción que implemente una nueva funcionalidad en Alfresco, primero creo un proyecto Maven; desarrollo la clase en cuestión que extienda de ActionExecuterAbstractBase y registro ésta a través de un bean ubicado en el directorio src\main\resources\alfresco\module\*-repo\context\service-context.xml del proyecto creado; por último ejecutar ./run.sh para crear el AMP y desplegarlo en Alfresco a través del servidor Tomcat embebido. ¿Es éste el proceso correcto?

Y si es así, accediendo a http:\\localhost:8080/share ya se podría llamar a esta acción desde un script? Mi intención es crear una script que invoque la acción, por lo que no necesitaría mostrarla en la interfaz de usuario de share y por tanto no necesitaría crear un artefacto para hacer visible la acción en el share. ¿Es acertada esta suposición?

La acción que quiero implementar es para trabajar con documentos binarios. Se ejecuta un script que invoca la acción pasando unos valores por parámetros, la acción accede al documento binario y lo rellena con los parámetros que recibe para devolver el documento binario rellenado.

Muchas gracias.

angelborroy
Expert

Re: Desplegar una acción en Alfresco

El planteamiento tiene buena pinta.

Mediante JavaScript deberías poder invocar la acción utilizando el nombre que le pongas al bean de Spring sin más desarrollos que el propio AMP del repo.

Software Engineer in Alfresco Search Team.
peli
Member II

Re: Desplegar una acción en Alfresco

La semana pasada estuve probando a desplegar un AMP de la forma descrita anteriormente. Creé un proyecto Maven con una clase que simplemente tenía un System.out.println() para escribir en el log de Alfresco. Una vez generado el AMP, lo ubiqué en el directorio alfresco\amps e instalé el AMP con el comando java -jar alfrescp-mmt.jar install amps/*-repo.amp tomcat/webapps/alfresco.war. Sin errores hasta el momento.

Accedo a mi localhost:8080/share y creo un script js ubicado en Diccionario de datos/Script, que se ejecuta con una regla y el cual invoca al método de la clase utilizando <valuedelbean>.<nombredelmétodo>;. Al ejecutarse la regla salta un error diciendo que <valuedelbean> no está definido.

He estado buscando y parece que la definición del bean debe ir en el directorio del proyecto src/main/amp/config/alfresco/module/repo-amp/context/service-context.xml y yo lo tengo en src\main\resources\alfresco\module\*-repo\context\service-context.xml, ya que en la distribución de mi proyecto no existe ese directorio.

Puede estar ahí la causa de que no reconozca el bean?

Gracias

cristinamr
Intermediate

Re: Desplegar una acción en Alfresco

Dos cosas: ¿Qué versión de SDK usas para tu proyecto? Lo puedes ver en el pom.xml del amp que estés compilando.

Yo con una 2.1.1 lo tengo aquí:

¿Puedes pasarnos una captura de la estructura de tu proyecto? 

Coméntanos y te intentamos echar una mano.

Cris.

angelborroy
Expert

Re: Desplegar una acción en Alfresco

Para invocar una acción desde JavaScript tienes que hacer algo así: execute | Alfresco Documentation 

En ese ejemplo el nombre del bean de Spring es "mail".

Software Engineer in Alfresco Search Team.
peli
Member II

Re: Desplegar una acción en Alfresco

Pues estoy usando la versión del SDK 3.0.1, y la estructura del proyecto es esta:

Puede que influya que para generar el proyecto haya elegido el artefacto 4. alfresco-platform-jar-archetype? Ya que sólamente incluye como opciones las versiones 3.0.0 y 3.0.1...

De todas formas, según el tutorial  Getting Started with the Alfresco Maven SDK | ECMArchitect | Alfresco Developer Tutorials, comenta que el directorio src/main/resources/alfresco/module/*-repo es dónde deben ir las declaraciones de los beans y todo lo referente a los AMP...

Muchas gracias!

peli
Member II

Re: Desplegar una acción en Alfresco

Pero para usar execute debería implementar una clase JAVA que extendiera de ActionExecuterAbstractBase y heredara sus métodos, y la clase que he desarrollado extiende de BaseProcessorExtension y sólo presenta un método que contiene un System.out. .

Voy a probar de la manera que tú dices.

Gracias

cristinamr
Intermediate

Re: Desplegar una acción en Alfresco

Mira, en un proyecto que tengo 3.0.0 tengo la siguiente distribución:

Y dentro del proyecto de Alfresco:

Echa un vistazo a tu estructura y mira a ver si lo tienes en la ruta src/main/resources/alfresco/module/nombre_proyecto/context

Cuéntanos.

Cris.