AnsweredAssumed Answered

Variables de una tarea en Workflow

Question asked by gute on Dec 19, 2011
Estoy intentado asignar valor a variables dentro de un workflow, esto lo he logrado de la siguiente manera:


      <task name="eawf:tareaDocumento" swimlane="initiator">
         <event type="task-create">
            <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
               <script>
                  taskInstance.setVariable('eawf_documentosEntrada', '');
                  taskInstance.setVariable('eawf_documentosSalida', 'ConfiguracionDelProceso.xlt');
               </script>
            </action>
         </event>
      </task>

De esta forma puedo asignar un valor a la variable "eawf_documentosEntrada" y a "eawf_documentosSalida", funciona perfectamente, salvo cuando existe un fork, en cuyo caso, a las variables se les asigna un único valor, a pesar de que en la definición del workflow estas están diferentes, lo que me parece extraño, ya que la variable debería ser para la instancia de la tarea y no debería compartirse con otras tareas, a continuación dejo un workflow de ejemplo, para ilustrar mejor la situación:


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

<process-definition  xmlns="urn:jbpm.org:jpdl-3.2"  name="eawf:prepararLaPropuesta">

   <swimlane name="initiator" />

   <start-state name="inicio">
      <task name="eawf:tareaInicial" swimlane="initiator" />
      <transition name="Generar Estructura de Directorio del Proyecto" to="Generar Estructura de Directorio del Proyecto" />
   </start-state>

   <task-node name="Generar Estructura de Directorio del Proyecto">
      <task name="eawf:tareaDocumento" swimlane="initiator">
         <event type="task-create">
            <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
               <script>
                  taskInstance.setVariable('eawf_documentosEntrada', '');
                  taskInstance.setVariable('eawf_documentosSalida', 'PlanDeAdminDeConfigs-v2.doc');
               </script>
            </action>
         </event>
      </task>
      <transition name="Generar Lista de Riesgos Preliminar" to="Generar Lista de Riesgos Preliminar" />
   </task-node>

   <task-node name="Generar Lista de Riesgos Preliminar">
      <task name="eawf:tareaDocumento" swimlane="initiator">
         <event type="task-create">
            <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
               <script>
                  taskInstance.setVariable('eawf_documentosEntrada', '');
                  taskInstance.setVariable('eawf_documentosSalida', 'ListaDeRiesgos-v2.doc');
               </script>
            </action>
         </event>
      </task>
      <transition name="Desarrollar Planilla de Tiempo, Esfuerzo y Costo (TEC)" to="Desarrollar Planilla de Tiempo, Esfuerzo y Costo (TEC)" />
   </task-node>

   <task-node name="Desarrollar Planilla de Tiempo, Esfuerzo y Costo (TEC)">
      <task name="eawf:tareaDocumento" swimlane="initiator">
         <event type="task-create">
            <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
               <script>
                  taskInstance.setVariable('eawf_documentosEntrada', 'AnalisisPreliminar-v2.doc,EspecificacionDeAmbiente-v2.doc,ListaDeRiesgos-v2.doc');
                  taskInstance.setVariable('eawf_documentosSalida', 'PlanTEC.xlt');
               </script>
            </action>
         </event>
      </task>
      <transition name="fork" to="fork" />
   </task-node>

   <fork name="fork">
      <transition name="Generar Carta Gantt Preliminar" to="Generar Carta Gantt Preliminar" />
      <transition name="Generar Configuración de Proceso" to="Generar Configuración de Proceso" />
      <transition name="Generar Asignación de Roles Preliminar" to="Generar Asignación de Roles Preliminar" />
   </fork>

   <task-node name="Generar Carta Gantt Preliminar">
      <task name="eawf:tareaDocumento" swimlane="initiator">
         <event type="task-create">
            <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
               <script>
                  taskInstance.setVariable('eawf_documentosEntrada', 'PlanTEC.xlt,AsignacionDeRoles-v2.dot.doc,ListaDeRiesgos-v2.doc');
                  taskInstance.setVariable('eawf_documentosSalida', 'CartaGanttDeProyecto-v2.mpp');
               </script>
            </action>
         </event>
      </task>
      <transition name="join1" to="join" />
   </task-node>

   <task-node name="Generar Configuración de Proceso">
      <task name="eawf:tareaDocumento" swimlane="initiator">
         <event type="task-create">
            <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
               <script>
                  taskInstance.setVariable('eawf_documentosEntrada', '');
                  taskInstance.setVariable('eawf_documentosSalida', 'ConfiguracionDelProceso.xlt');
               </script>
            </action>
         </event>
      </task>
      <transition name="join2" to="join" />
   </task-node>

   <task-node name="Generar Asignación de Roles Preliminar">
      <task name="eawf:tareaDocumento" swimlane="initiator">
         <event type="task-create">
            <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
               <script>
                  taskInstance.setVariable('eawf_documentosEntrada', 'PlanTEC.xlt');
                  taskInstance.setVariable('eawf_documentosSalida', 'AsignacionDeRoles-v2.dot.doc,PlanDeProyecto-v2.doc,ListaDeNecesidadesDeEntrenamiento.doc');
               </script>
            </action>
         </event>
      </task>
      <transition name="join3" to="join" />
   </task-node>

   <join name="join">
      <transition name="Generar Propuesta" to="Generar Propuesta" />
   </join>

   <task-node name="Generar Propuesta">
      <task name="eawf:tareaDocumento" swimlane="initiator">
         <event type="task-create">
            <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
               <script>
                  taskInstance.setVariable('eawf_documentosEntrada', 'PlanTEC.xlt,AsignacionDeRoles-v2.dot.doc,CartaGanttDeProyecto-v2.mpp,ListaDeRiesgos-v2.doc');
                  taskInstance.setVariable('eawf_documentosSalida', '');
               </script>
            </action>
         </event>
      </task>
      <transition name="Revisar Propuesta" to="Revisar Propuesta" />
   </task-node>

   <task-node name="Revisar Propuesta">
      <task name="eawf:tareaDocumento" swimlane="initiator">
         <event type="task-create">
            <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
               <script>
                  taskInstance.setVariable('eawf_documentosEntrada', 'PlanDeRevisiones-v2.doc');
                  taskInstance.setVariable('eawf_documentosSalida', '');
               </script>
            </action>
         </event>
      </task>
      <transition name="Final" to="fin" />
   </task-node>

   <end-state name="fin"></end-state>
</process-definition>

Como dije anteriormente, el problema esta cuando ocurre el fork y se divide en las tareas "Generar Carta Gantt Preliminar" "Generar Configuración de Proceso" y "Generar Asignación de Roles Preliminar", que aunque se les asigna diferentes valores, siempre resulta las 3 iguales, específicamente quedan con los valores:

   "eawf_documentosEntrada": "PlanTEC.xlt,AsignacionDeRoles-v2.dot.doc,ListaDeRiesgos-v2.doc"
   "eawf_documentosSalida": "CartaGanttDeProyecto-v2.mpp"

Tal vez deba cambiar el tipo de evento por uno diferente a "task-create", pero no tengo muy claro este tema, cualquier sugerencia es bien recibida, muchas gracias

Outcomes