cancel
Showing results for 
Search instead for 
Did you mean: 

variable no definida en review_pooled_processdefinition.xml

giorgio
Champ in-the-making
Champ in-the-making
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 3

giorgio
Champ in-the-making
Champ in-the-making
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
Champ in-the-making
Champ in-the-making
hola giorgio y como recorro groupAsignee ?

gracias

giorgio
Champ in-the-making
Champ in-the-making
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.