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.
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
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.
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.
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
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.
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".
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!
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
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.
Discussions about Alfresco Content Services and Alfresco Process Services in Spanish
Related:
By using this site, you are agreeing to allow us to collect and use cookies as outlined in Alfresco’s Cookie Statement and Terms of Use (and you have a legitimate interest in Alfresco and our products, authorizing us to contact you in such methods). If you are not ok with these terms, please do not use this website.