Acción personalizada (Custom action)

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

Acción personalizada (Custom action)

Hola a todos,

yo soy nuevo en el foro y lo que se de Alfresco es bastante poco, os lo digo para que vuestra explicaciones sean bastante claras a ser posible. El problema es que tengo que ejecutar un programa o un guion shell en el Ubuntu sobre el que esta instalado mi Alfresco desde el mismo Alfresco y no se como hacerlo. Preguntando en este mismo foro me ha dicho "innovasoft", que parece que entiende del tema, que haga una Accion Personalizada (una custom action) pero no se como hacer esto. Existe una pagina Wiki que lo explica pero no consigo entenderlo bien. Si alguno de vosotr@s puderia explicarmelo claramente se lo agradeceria muchisimo.

Por cierto el programa que quiero ejecutar es el Tesseract de Linux que convierte archivos TIF a txt y tiene que recibir como entrada un documento de Alfresco. Pero de momento con que me digais como ejecutar un prgrama en Linux desde Alfresco es suficiente (o eso espero)

Gracias
6 Replies
dacedos
Member II

Re: Acción personalizada (Custom action)

Hola,

Te respondo por aqui tambien, y te vuelvo a mandar a los dos documentos que te puso innovasoft:

http://wiki.alfresco.com/wiki/Custom_Actions
http://wiki.alfresco.com/wiki/Custom_Action_UI


Resumiendote… tienes que:

- Crear una clase java que implemente la logica
- Declarar un bean dentro del fichero WEB-INF/faces-config-custom.xml (puedes ver algunos bean de ejemplo en el faces-config-beans.xml)
- Crear un action dentro del web-client-config-custom.xml (que igual, puedes ver algunos que te valgan para orientarte en el web-client-config-actions.xml)
- Meter el action dentro de alguno de los actions group, para ello puedes copiar el grupo entero desde el web-client-config-actions.xml al web-client-config-custom.xml y añadir tu action ahi.

y para lo de ejecutar el programa de linux… Javier te dio una solucion bastante buena en tu otro hilo
String path;
Runtime.getRuntime().exec("/bin/sh " + path + "/.homer.sh");

Suerte!
sele_
Member II

Re: Acción personalizada (Custom action)

Vale, mas o menos es lo mismo que me ha dicho innovasoft pero mas esquematico. Intentare hacerlo paso a paso a ver si me sale. Para ello voy a necesitar de vuestra ayuda a cada paso porque no tengo nada claro. El que tenga paciencia que se apunte.
Tengo algunas dudas con el paso uno "Crear una clase java que implemente la logica". Primera ¿donde tengo que crear esa clase? y segundo ¿que "logica" tiene que implementar?. ¿Se supone que tengo que implementar un fichero Java que me ejecute un script del shell pasandole la direccion CIFS del script??? La explicacion de Wiki no me lo deja nada claro, vuelvo a decir que mis conocimientos en Java son muy escasos.
gracias por la ayuda
dacedos
Member II

Re: Acción personalizada (Custom action)

Bueno, vamos a empezar por el principio entonces…

¿tienes el eclipse configurado para poder programar nuevas clases?

La clase Java
     NO -> http://wiki.alfresco.com/wiki/Alfresco_on_Eclipse
     SI -> te creas una clase java que sea capaz de ejecutar el script que quieres (yo no uso linux pero si innovasoft te dijo como hacerlo hazle caso), la creas dentro de algun paquete, por ejemplo puedes usar org.alfresco.pruebas

El Bean
    Si has visto algun bean de ejemplo veras unas lineas como estas:
        <managed-bean-name>Prueba</managed-bean-name> Es el nombre del bean
        <managed-bean-class>org.alfresco.pruebas.NombreDeMiClase</managed-bean-class> que indica la clase que implementa la logica en este caso es NombreDeMiClase.java dentro del paquete org.alfresco.pruebas

El action
    Igual, si has visto algun action de ejemplo puedes ver una linea como esta:
        <action-listener>#{Prueba.prueba}</action-listener> que llama al metodo prueba del Bean Prueba (que equivaldria a llamar al metodo prueba de la clase org.alfresco.pruebas.NombreDeMiClase.java)
sele_
Member II

Re: Acción personalizada (Custom action)

Bueno, lo de la clase Java para ejecutar script lo estoy buscando y pienso que puedo solucionarlo, ya he encontrado unos cuantos que creo que funcionaran. Pero ahora, esa clase no se donde va. Tu me pones que en un paquete llamado org.alfresco ¿pero donde esta ese paquete? Yo hago un "find" para buscarlo por todas las carpetas de tomcat y no encuentra nada. Y si lo que tengo es que crearlo, ¿en que carpeta lo creo?  ¿en tomcat/lib/? Lo siento por no parar de preguntar sin avanzar pero es que soy bastante novato."en la paciencia esta la virtud del maestro" dijo un dia Socrates (creo) pero por aquella epoca no habia ordenadores…
Espero la respuesta gracias
sele_
Member II

Re: Acción personalizada (Custom action)

los paquetes que me aparecen en la libreria del tomcat son estos:

annotations-api.jar   catalina.jar            el-api.jar        jasper-jdt.jar                                     servlet-api.jar         tomcat-i18n-es.jar
catalina-ant.jar        catalina-tribes.jar   jasper-el.jar   jsp-api.jar                                          tomcat-coyote.jar    tomcat-i18n-fr.jar
catalina-ha.jar         commons-el.jar       jasper.jar       mysql-connector-java-5.1.7-bin.jar     tomcat-dbcp.jar       tomcat-i18n-ja.jar

como podeis comprobar no hay ningun "org", aunque a lo mejor te refieres a otra cosa
venzia
Senior Member

Re: Acción personalizada (Custom action)

Por lo visto Sele esta realmente verde en el tema Java .. por lo que antes de nada tendrás que adquirir conocimientos de desarrollo de este lenguaje (y bien que te va a venir  :winkSmiley Happy ..
para ello aqui te paso algunas referencias para principiantes :
http://mec21.etsii.upm.es/ayudainf/aprendainf/Java/Java2.pdf
http://www.javahispano.org/contenidos/archivo/107/JavaBasico.zip
http://www.javahispano.org/contenidos.item.action?id=1029&menuId=ARTICLES
Y es que hay unos requisitos minimos necesarios para llevar a cabo lo que necesitas .. uno de los fundamentales es tener conocimientos de desarrollo en java (ya el nivel que uno tenga será el que determine lo que puede conseguir por si mismo).
Como bien dice siempre Pedro "No me des peces, mejor enseñame a pescar".
Saludos y suerte!