obtener nombre de usuario workflows pooled

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

obtener nombre de usuario workflows pooled

He estado mirando el archivo bpmModel.xml donde se definen las propiedades de los workflows pero la propiedad ownable es del modelo contentModel.xml es decir cmSmiley Surprisedwnable, y es un aspecto, si voy a la definición de este me encuentro con esto:

//esto es del bpmModel.xml
<mandatory-aspects>
<aspect>cmSmiley Surprisedwnable</aspect>
</mandatory-aspects>

//y esto es del contentModel.xml
<aspect name="cmSmiley Surprisedwnable">
<title>Ownable</title>
<properties>
<property name="cmSmiley Surprisedwner">
<title>Owner</title>
<type>d:text</type>
</property>
</properties>
</aspect>

de manera que en el processdefinition.xml no se como tendria que accederla, si con bpm_ownable, o con cm_owner, he probado con varias y no lo consigo, he probado tambien workflow.owner, … Alguien sabe cual es la manera correcta para acceder a esta propiedad? desde el processdefinition.xml?

<?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="" to="completed" />
<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"] = "Pendiente";
//con esta linea obtengo el grupo, pero en que momento podria obtener el usuario?
bpm_package.children.properties["my:tecnico"] = bpm_groupAssignee.properties["usr:authorityName"];
bpm_package.children.save();
}
</script>
</action>
</event>
</task-node>



<task-node name="completed">
<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"] = "Acabado";
bpm_package.children[a].properties["my:tecnico"] = bpm_ownable; //esto no trae nada y esto tampoco bpm_package.properties["cmSmiley Surprisedwner"];
bpm_package.children[a].save();
}
</script>
</action>
</event>
<transition name="" to="end" />
</task-node>

<end-state name="end" />

</process-definition>

3 Replies
pjcaracuel_2349
Active Member II

Re: obtener nombre de usuario workflows pooled

Buenas,

Esto por completarlo un poco, a ver si me lo explico bien:

Efectivamente cmSmiley Surprisedwnable es del modelo content pero eso es correcto puesto que la tarea ( <type name="bpm:task">) hereda del tipo cm:content, asi que hasta aqui todo correcto, complicado si pero correcto.

Por ello pienso que para acceder a las propiedades del modelo content a partir de la tarea, bastaria con realizar una busqueda sobre la propiedad deseada en el modelo content a partir de la instancia de la tarea en cuestion.

Saludos
giorgio
Member II

Re: obtener nombre de usuario workflows pooled

Por ello pienso que para acceder a las propiedades del modelo content a partir de la tarea, bastaria con realizar una busqueda sobre la propiedad deseada en el modelo content a partir de la instancia de la tarea en cuestion.

Si pero ya estamos hablando de la taskInstance, que en ese tramo del workflow me dice que no existe, sin embargo un poco mas arriba si que la utiliza.
te pongo el código del review_pooled_processdefinition.xml


<?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="" to="completed" />
    <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[i].properties["my:prioridad"] = bpm_workflowPriority;
bpm_package.children[i].properties["my:estado"] = "Pendent";
bpm_package.children[i].properties["my:tecnico"] = bpm_groupAssignee.properties["usr:authorityName"];
bpm_package.children[i].save();
}
</script>
</action>
</event>
    </task-node>



    <task-node name="completed">
    <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["my:prioridad"] = bpm_workflowPriority;
bpm_package.children[a].properties["my:estado"] = "Acabat";
bpm_package.children[a].properties["my:tecnico"] = search.luceneSearch("@cm\\:userName:\"" + taskInstance.actorId + "\"");

bpm_package.children[a].save();
}
</script>
</action>
</event>
        <transition name="" to="end" />
    </task-node>

    <end-state name="end" />

</process-definition>

Gracias.
giorgio
Member II

Re: obtener nombre de usuario workflows pooled

Buenas la solución aunque a medias, esta autocontestada aqui

http://forums.alfresco.com/es/viewtopic.php?f=11&t=1668

un saludo