AnsweredAssumed Answered

Workflow para revisión de grupo

Question asked by witho on Sep 19, 2008
Latest reply on Apr 16, 2009 by giorgio
Hola,

¿Alguien puede decirme como lanzar un Workflow en el cual la tarea de revisión se asigne a un grupo, de tal forma que cuando un miembro de dicho grupo apruebe o rechace el documento a revisar la tarea de revisión desaparezca de las tareas pendientes del restod e miembros del grupo?

He visto que el proceso definido en parallelreview_group_processdefinition.xml requiere que un porcentaje de los miembros del gupo (indicado en el parametro requiredAprovePercent) apruebe el documento para que la tarea de Aprobar se conidere realizada.

Mi idea es modificar el review_processdefinition.xml para assignar la tarea de revisión a un grupo y que cuando cualquier miembro de dicho grupo apruebe o rechace el documento en cuestión, la tarea desaparezca de las tareas pendientes del resto de miembros y dicha tarea se considere realizada con que UN solo miembro del grupo la lleve a cabo. Posteo mis ficheros, agradezco cualquier comentario o sugerencia.

workflow.js (javascript que lanza el Workflow)


var workflow = actions.create("start-workflow");
workflow.parameters.workflowName = "jbpm$wf:review";
workflow.parameters["bpm:assignee"] = people.getGroup("GROUP_APROBDOCSCOMERCIAL");
workflow.execute(document);

review_processdefinition.xml


<?xml version="1.0" encoding="UTF-8"?>

<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="wf:review">

    <swimlane name="initiator" />

    <start-state name="start">
        <task name="wf:submitReviewTask" swimlane="initiator" />
        <transition name="" to="review" />         
    </start-state>

    <swimlane name="reviewer">
      <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
         <pooledactors>#{bpm_assignee}</pooledactors>
      </assignment>      
    </swimlane>

    <task-node name="review">
        <task name="wf:reviewTask" swimlane="reviewer">
            <event type="task-create">
                <script>
                    if (bpm_workflowDueDate != void) taskInstance.dueDate = bpm_workflowDueDate;
                    if (bpm_workflowPriority != void) taskInstance.priority = bpm_workflowPriority;
                </script>
            </event>
        </task>
        <transition name="reject" to="rejected" />
        <transition name="approve" to="approved" />
    </task-node>

    <task-node name="rejected">
        <task name="wf:rejectedTask" swimlane="initiator"/>
        <transition name="" to="end" />   
   </task-node>
   
   <task-node name="approved">
        <task name="wf:approvedTask" swimlane="initiator" />
        <transition name="" to="end" />         
    </task-node>   
   
    <end-state name="end" />

</process-definition>

Muchas garcias.

Outcomes