variable no definida en review_pooled_processdefinition.xml

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

variable no definida en review_pooled_processdefinition.xml

Buenas, amigos tengo un problema al tratar de recoger una variable desde la definicion del proceso del workflow de pooled tasks, para asignarla al metadato del documento en cuestion, sin embargo el codigo que pongo a continuación, en el workflow review de usuario a usuario, ha funcionado perfectamente:

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

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

    <swimlane name="initiator" />

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

    <swimlane name="reviewer">
        <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
            <pooledactors>#{bpm_groupAssignee}</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>
            <event type="task-end">
               <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
                  <script>
                     <variable name="bpm_assignee" access="write"/>
                     <expression>
                        if (taskInstance.actorId != null)
                           people.getPerson(taskInstance.actorId);
                        else
                           person;
                     </expression>
                  </script>
               </action>
            </event>
        </task>
        <transition name="reject" to="end" />
        <transition name="approve" to="end" />
    <event type="node-enter">
<!– Update the status to Rejected when we enter this task –>
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
<script>
for (var i = 0; i &lt; bpm_package.children.length; i++)
{
bpm_package.children.properties["mySmiley Tonguerioridad"] = bpm_workflowPriority;
bpm_package.children.properties["my:estado"] = "Pendent";
bpm_package.children.properties["my:tecnico"] = Person;
bpm_package.children.save();
}
</script>
</action>
</event>
    </task-node>

    <task-node name="rejected">
    <event type="node-enter">
<!– Update the status to Rejected when we enter this task –>
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
<script>
for (var z = 0; z &lt; bpm_package.children.length; z++)
{
bpm_package.children[z].properties["mySmiley Tonguerioridad"] = bpm_workflowPriority;
bpm_package.children[z].properties["my:estado"] = "Rebutjat";
bpm_package.children[z].properties["my:tecnico"] = Person;
bpm_package.children[z].save();
}
</script>
</action>
</event>
        <transition name="" to="end" />
    </task-node>

    <task-node name="approved">
    <event type="node-enter">
<!– Update the status to Aproved when we enter this task –>
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
<script>
for (var a = 0; a &lt; bpm_package.children.length; a++)
{
bpm_package.children[a].properties["mySmiley Tonguerioridad"] = bpm_workflowPriority;
bpm_package.children[a].properties["my:estado"] = "Aprobat";
bpm_package.children[a].properties["my:tecnico"] = Person;
bpm_package.children[a].save();
}
</script>
</action>
</event>
        <transition name="" to="end" />
    </task-node>

    <end-state name="end" />




si en este trozo de codigo esta dandole valor a esa variable que luego intento acceder

<event type="task-end">
               <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
                  <script>
                     <variable name="bpm_assignee" access="write"/>
                     <expression>
                        if (taskInstance.actorId != null)
                           people.getPerson(taskInstance.actorId);
                        else
                           person;
                     </expression>
                  </script>
               </action>

porque al hacer esto:

bpm_package.children.properties["my:tecnico"] = bpm_assignee.properties["cm:userName"];
aunque tambien he probado esto
bpm_package.children.properties["my:tecnico"] = Person;
y esto
bpm_package.children.properties["my:tecnico"] = people.getPerson(taskInstance.actorId);

siempre me dice que bpm_assignee no esta definido?
de que manera tengo que acceder a este tipo de flujo, para poder asignar el nombre de usuario que tomará posesión de la tarea, o coger el nombre del grupo por ejemplo?

Saludos y gracias.
3 Replies
giorgio
Member II

Re: variable no definida en review_pooled_processdefinition.xml

Buenas, me auntocontesto, hay que utilizar la variable groupAsignee.properties["usr:authorityName"]; para conseguir el nombre del grupo al que ha sido asignado el workflow, si kisieramos poner los nombres de los usuarios que componen el grupo, auqnue quizá esto la mayoria de las veces no será lo deseado ya que puede contener muchos usuarios, pero se podria necesitar para algo, exite una propiedad ["usr:member"] que habria que recorrer e ir capturando sus nombres de usuario

Espero que le sirva a alguien.

Saludos.
cjimenez
Member II

Re: variable no definida en review_pooled_processdefinition.xml

hola giorgio y como recorro groupAsignee ?

gracias
giorgio
Member II

Re: variable no definida en review_pooled_processdefinition.xml

Hola, pues ahora mismo me pillas offline del tema, hace tiempo que no lo toco, pero imagino que se puede hacer un bucle for por ejemplo,
creo que por mis posts, encontrarás algun ejemplo de for.

Un saludo.