AnsweredAssumed Answered

problemas ejecutando codigos durante las tareas

Question asked by giorgio on May 12, 2009
Latest reply on May 12, 2009 by giorgio
Buenas, a ver, he leido por todos los sitios, concretamente en esta pagina

http://wiki.alfresco.com/wiki/WorkflowAdministration

que el codigo para ejecutar algo durante los workflows es el siguiente


<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
  <script>
    // some alfresco javascript
  </script>
</action>


y que hay que ponerlo tal y como lo tengo yo en mi fichero review_processdefinition.xml de la siguiente manera, es decir dentro de las transition


<?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">
            <actor>#{bpm_assignee}</actor>
        </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" >
<!– Update the status to Rejected when we enter this task –>
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
<script>

bpm_package.children[0].properties["my:prioridad"] = bpm_workflowPriority;
bpm_package.children[0].properties["my:estado"] = bpm_status;
bpm_package.children[0].properties["my:tecnico"] = bpm_assignee.properties["cm:userName"];
bpm_package.children[0].save();


           var mail = actions.create("mail");
           mail.parameters.to = initiator.properties["cm:email"];
           mail.parameters.subject = "Notificacion de Tarea" + bpm_workflowDescription;
           mail.parameters.from = "noreply@edu.gva.es"; //bpm_assignee.properties["cm:email"];
           mail.parameters.text = "<p>No responda a este mensaje.</p><p>La tarea "+ bpm_workflowDescription +" ha sido RECHAZADA</p>";
           mail.execute(bpm_package);

</script>
</action>
</transition>
        <transition name="approve" to="approved" >

<!– Update the status to Rejected when we enter this task –>
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
<script>

bpm_package.children[0].properties["my:prioridad"] = bpm_workflowPriority;
bpm_package.children[0].properties["my:estado"] = bpm_status;
bpm_package.children[0].properties["my:tecnico"] = bpm_assignee.properties["cm:userName"];
bpm_package.children[0].save();


           var mail = actions.create("mail");
           mail.parameters.to = initiator.properties["cm:email"];
           mail.parameters.subject = "Notificacion de Tarea" + bpm_workflowDescription;
           mail.parameters.from = "noreply@edu.gva.es"; //bpm_assignee.properties["cm:email"];
           mail.parameters.text = "<p>No responda a este mensaje.</p><p>La tarea "+ bpm_workflowDescription +" ha sido RECHAZADA</p>";
           mail.execute(bpm_package);

</script>
</action>

</transition>
    </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" />

<event type="process-end">
<!– Update the status to Approved when we enter this task –>
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
<script>

bpm_package.children[0].properties["my:prioridad"] = bpm_workflowPriority;
bpm_package.children[0].properties["my:estado"] = bpm_status;
bpm_package.children[0].properties["my:tecnico"] = bpm_assignee.properties["cm:userName"];
bpm_package.children[0].save();


           var mail = actions.create("mail");
           mail.parameters.to = initiator.properties["cm:email"];
           mail.parameters.subject = "Notificacion de Tarea" + bpm_workflowDescription;
           mail.parameters.from = "noreply@edu.gva.es"; //bpm_assignee.properties["cm:email"];
           mail.parameters.text = "<p>No responda a este mensaje.</p><p>La tarea "+ bpm_workflowDescription +" ha sido completada</p>";
           mail.execute(bpm_package);

</script>
</action>
</event>


Pues no se que es lo que estoy haciendo mal pero de esta manera no funciona
devuelve esta excepción apruebes o rechazes la tarea

Failed to signal transition 'reject' from workflow task 'jbpm$59'

de la unica manera con la ese codigo funciona, es solamente si le añado las etiquetas
<event type="node-enter">
aquie el codigo mio
</event>

que asi es como estaba funcionando hasta ahora, pero al querer ejecutar otros codigos en otras partes del workflow,
me encontrado con el problema de que no puedo definir varios eventos node-enter en varios puntos
asi que busque información y en esa pagina pone los ejemplos sin necesidad de capturar ningun evento
pero no funciona

entonces por un lado, Alguien sabe que puedo estar haciendo mal?
y por otro lado que otros eventos a parte de node-enter o process-end, puedo utilizar?
no hay alguna referencia por ahi?

Gracias y saludos espero puedan ayudarme.

Outcomes