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!!!