En esta tercera y ultima parte explicaré como adaptar nuestro proceso para introducirlo en Alfresco.
Para ello necesitaremos los siguientes ficheros:
../tomcat/shared/classes/alfresco/extension/workflows
- processdefinition.xml
../tomcat/shared/classes/alfresco/extension
- customWorkflowModel.xml
- custom-workflow-context.xml
- custom-workflow-messages.properties+
También podemos echar un vistazo a varios ejemplos en ../alfresco/WEB-INF/classes/alfresco/workflow
El modelo de contenido que he definido es el siguiente:
bpm:startTask bpm:assignee bpm:workflowTask edit_package_item_actions mwf:motivos bpm:workflowTask bpm:assignee bpm:workflowTask bpm:assignee mwf:motivos Motivo Rechazo d:text false
Hemos definido un tipo para cada uno de los task-node de nuestro workflow que heredan las propiedades de bpm:workflowTask.
El estado inicial mwf:submitApproveContent será de tipo bpm:startTask que llevará las propiedades descripción, prioridad y fecha de vencimiento.
Además, hemos creado un aspecto que tendrá como propiedad un motivo de rechazo.
custom-workflow-context.xml
jbpm alfresco/extension/workflows/processdefinition.xml text/xml true
alfresco/extension/customWorkflowModel.xml
alfresco/extension/custom-workflow-messages
custom-workflow-messages.properties
#Workflow mwf_approveContent.workflow.title=Aprobar Contenido mwf_approveContent.workflow.description=Proceso para aprobar contenido #Review & Approve Task Definitions mwf_customworkflowmodel.type.mwf_submitApproveContent.title=Iniciar aprobaci\u00f3n de contenido mwf_customworkflowmodel.type.mwf_submitApproveContent.description=Enviar documentos para su revisi\u00f3n y aprobaci\u00f3n mwf_customworkflowmodel.type.mwf_reviewContent.title=Revisar contenido mwf_customworkflowmodel.type.mwf_reviewContent.description=Revisar documentos para aprobarlos o rechazarlos mwf_customworkflowmodel.type.mwf_approvedContent.title=Contenido Aprobado mwf_customworkflowmodel.type.mwf_approvedContent.description=Contenido Aprobado mwf_customworkflowmodel.type.mwf_rejectedContent.title=Contenido Rechazado mwf_customworkflowmodel.type.mwf_rejectedContent.description=Contenido Rechazado
Y finalmente, hemos modificado processdefinition.xml
#{bpm_assignee}
Los cambios realizados en la definición son:
Se han modificado los nombres de las tareas añadiendole la extensión de nuestro modelo de contenido (mwf) .
Se han añadido los elementos swimlane que se utilizan para asignar las tareas a un usuario o grupo de usuarios de Alfresco.
El rol initiatior será el encargado de iniciar y finalizar el flujo, siempre debe aparecer.
El rol assignee será el usuario encargado de realizar la tarea de aprobar/rechazar contenido. En mi caso es un único usuario, tal y como viene indicado por la etiqueta <actor>, pero también puede ser un grupo de usuarios, que podriamos definirlo utilizando la etiqueta <pooledactors>.
También se ha añadido un script sencillo que enviará un email a la persona que inició el flujo en caso de que el usuario haya rechazado el contenido.
Para que las propiedades se visualicen en nuestro web-client, tendremos que modificar el fichero web-client-config-custom.xml y añadir lo siguiente:
Se han modificado los nombres de las tareas añadiendole la extensión de nuestro modelo de contenido (mwf) .
Se han añadido los elementos swimlane que se utilizan para asignar las tareas a un usuario o grupo de usuarios de Alfresco.
El rol initiatior será el encargado de iniciar y finalizar el flujo, siempre debe aparecer.
El rol assignee será el usuario encargado de realizar la tarea de aprobar/rechazar contenido. En mi caso es un único usuario, tal y como viene indicado por la etiqueta <actor>, pero también puede ser un grupo de usuarios, que podriamos definirlo utilizando la etiqueta <pooledactors>.
También se ha añadido un script sencillo que enviará un email a la persona que inició el flujo en caso de que el usuario haya rechazado el contenido.
Para que las propiedades se visualicen en nuestro web-client, tendremos que modificar el fichero web-client-config-custom.xml y añadir lo siguiente:
... .... ... ...
Una vez tengamos todo, reiniciamos el servidor de Alfresco y ya tendremos nuestro workflow disponible!!!
Olá Patri,
ResponderEliminarMuito bom o tutorial não podemos esquecer que o Alfresco Community 3.4.e já vem com o Activit BPM.
Salutos ...
Gracias William!
ResponderEliminarSi, estoy esperando a que salga en la versión Enterprise para ver como funciona y publicar otro tutorial ^^
Hola Patricia, muy bueno el tutorial ya que no hay nada similar en español y los que hay en ingles son bastante confusos.
ResponderEliminarTe hago una pregunta, en este WF cuando vos asignas a una persona te deja seleccionarla? Por que nosotros estamos haciendo pruebas y aparece el boton de assignee pero cuando hacemos click el mismo no hace nada...
Hola Pac,
ResponderEliminarHabeis configurado bien el web-client-config-custom.xml? aqui no he puesto todas las propiedades porque es muy extenso, si quieres, mandame por correo y le hechamos un vistazo... Gracias!!
Patricia, te aqui el codigo ya que no encuentro tu mail. Disculpa la desproligidad.
ResponderEliminarLa parte de bpm_assignee es la que nos falla y no logramos ver que puede ser.
Mil gracias por tu ayuda.
No me dejo poner el codigo asi que subi el archivo para descargarlo, disculpa las molestias y mil gracias!
ResponderEliminarhttp://www.4shared.com/document/WCq7pXal/web-client-config-custom.html
Realmente nose que es lo que podemos tener mal :S
Te he mandado un correo electrónico, contestame si lo has recibido. Un saludo!
ResponderEliminarHola Patricia,
ResponderEliminarMuy buen post! me ha ayudado bastante. Ya logré desarrollar mi workflow, pero quisiera manipularlo desde una aplicación externa, sabes de que forma podría acceder al workflow?, no encuentro web service para consultar workflows, en qué estado va, que tareas se han realizado ya, etc.
Porfa, me puedes orientar de que modo podria accederlo desde una aplicación externa?
Gracias.
Hola anYari,
ResponderEliminarGracias por tu comentario :)
Podrias utilizar web-scripts para acceder desde una aplicación externa, te dejo aqui la api de los workflows para que le eches un vistazo:
http://wiki.alfresco.com/wiki/Workflow_JavaScript_API
Un saludo!!
uri="extension.misWorkflows" prefix="mwf"
ResponderEliminarestas línean definen o crean el nuevo namespace o como es?
gracias
Hola Chris, en esa linea lo que haces es definir tu namespace y el prefijo que vas a utilizar para hacer referencia a tu modelo de contenido.
ResponderEliminarUn saludo,
Hola nuevamente Patricia,
ResponderEliminarQuisiera hacerte una consulta, me puedes orientar como hacer un workflow que en una tarea intermedia se puedan agregar más documentos a la lista de documentos con los que inicialmente empieza el workflow?
Muchas Gracias de antemano!
Hey tu entrada me ha sido de gran ayuda pero queria saber si me pudieras ayudar. No sabes como montar este ejemplo en el OpenKM o algun tuto que me sirva Saludos!!! y mil gracias.
ResponderEliminarHola Roger,
ResponderEliminarGracias por tu comentario pero siento no poder ayudarte... nunca he utilizado OpenKM, tendrás que investigar un poco por Google...
Un saludo!
Hola patricia,
ResponderEliminarUtilizo el Alfresco Community 3.4 y no aparece el directorio:
../tomcat/shared/classes/alfresco/extension/workflows al que haces referencia, tampoco los archivos en el directorio:
/tomcat/shared/classes/alfresco/extension
Esto es por que la versión Community, NO tiene habilitada la funcionalidad de Workflow??? O estoy haciendo algo mal?
Hola Francisco :)
ResponderEliminarLa carpeta workflows no existe por defecto en extension, debes crearla. Tienes ejemplos de otros workflows en tomcat/webapps/alfresco/WEB-INF/classes...
Un saludo!
Este comentario ha sido eliminado por el autor.
ResponderEliminarHola Patricia
ResponderEliminarE seguido tu ejemplo tal cual pero no me sale
no tendras el ejemplo en fisico para poder guiarme ... Porfa te paso mi correo cualquier respuesta mludea9@gmail.com
Cualquier ejemplo seria de muchas ayuda.. Gracias