Pregunta

Hola comunidad SO,

No he tenido ninguna suerte conseguir ayuda en los foros de Alfresco, y yo estoy esperando por más aquí. Estamos construyendo una aplicación basada en Alfresco y jBPM y yo hemos definido un flujo de trabajo, pero tampoco lo he definido mal o me falta algo o hay errores en la integración de Alfresco con jBPM y necesito ayuda para saber cuáles y su fijación. Aquí está el problema:

Tengo un flujo de trabajo avanzado y estoy tratando de lanzarlo desde JavaScript. Aquí está el código que estoy usando para iniciar el flujo de trabajo:

var nodeId = args.nodeid;
var document = search.findNode("workspace://SpacesStore/" + nodeId);
var workflowAction = actions.create("start-workflow");
workflowAction.parameters.workflowName = "jbpm$nmwf:MyWorkflow";
workflowAction.parameters["bpm:workflowDescription"] = "Please edit: " + document.name;
workflowAction.parameters["bpm:assignees"] = [people.getPerson("admin"), people.getPerson("andyg")];
var futureDate = new Date();
futureDate.setDate(futureDate.getDate() + 7);
workflowAction.parameters["bpm:workflowDueDate"] = futureDate;
workflowAction.execute(document);

Esto corre bien, y el correo electrónico enviado desde los incendios de transición por defecto del nodo de inicio muy bien. Sin embargo, cuando voy a buscar el flujo de trabajo en mi lista de tareas que no está ahí, pero está en mi completado lista de tareas. La transición predeterminada (la única transición) de los puntos de nodo de inicio en un nodo de tarea que tiene cuatro transiciones.

Hay 8 tareas y 22 transiciones en el flujo de trabajo. Cuando uso la consola de flujo de trabajo para iniciar el flujo de trabajo y terminar la tarea de inicio, se sigue adecuadamente la transición nodo de inicio por defecto a la siguiente tarea. Los nuevos programas de trabajo hasta en "mostrar tareas", pero no aparece en "mostrar mis tareas" (al parecer debido a que la tarea se marcó completado por alguna razón, a pesar de que no está en el nodo "final"). La tarea es:

task id: jbpm$111 , name: nmwf:submitInEditing , properties: 18

Si lo hago "mostrar transiciones" que se parece a lo que cabe esperar:

path: jbpm$62-@ , node: In Editing , active: true
 task id: jbpm$111 , name: nmwf:submitInEditing, title: submitInEditing title , desc: submitInEditing description , properties: 18
 transition id: Submit for Approval , title: Submit for Approval
 transition id: Request Copyediting Review , title: Request Copyediting Review
 transition id: Request Legal Review , title: Request Legal Review
 transition id: Request Review , title: Request Review

No quiero para publicar todo el flujo de trabajo, ya que es grande, pero aquí están los dos primeros nodos:

En primer lugar los swimlanes:

<swimlane name="initiator"></swimlane>
<swimlane name="Content Providers">
  <assignment actor-id="Content Providers"  class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
     <actor>#{bpm_assignees}</actor>
  </assignment>
</swimlane>

Ahora los nodos:

<start-state name="start">
    <task name="nmwf:submitTask" swimlane="initiator"/>
    <transition name="" to="In Editing">
        <action>
            <runas>admin</runas>
            <script>
                /* Code to send e-mail that a new workflow was started.  I get this e-mail. */
            </script>
        </action>
    </transition>
</start-state>
<task-node name="In Editing">
    <task name="nmwf:submitInEditing" swimlane="Content Providers" />
    <!-- I put e-mail sending code in each of these transitions, but none are firing. -->
    <transition to="In Approval" name="Submit for Approval"></transition>
    <transition to="In Copyediting" name="Request Copyediting Review"></transition>
    <transition to="In Legal Review" name="Request Legal Review"></transition>
    <transition to="In Review" name="Request Review"></transition>
</task-node>

Aquí es el modelo para estos dos nodos:

 <type name="nmwf:submitTask">
    <parent>bpm:startTask</parent>


    <mandatory-aspects>
       <aspect>bpm:assignees</aspect>
    </mandatory-aspects>
 </type>


 <type name="nmwf:submitInEditing">
    <parent>bpm:workflowTask</parent>


    <mandatory-aspects>
       <aspect>bpm:assignees</aspect>
    </mandatory-aspects>
 </type>

Aquí es un pseudo-log de la ejecución del flujo de trabajo en la consola de flujo de trabajo:

:: deploy alfresco/extension/workflow/processdefinition.xml

deployed definition id: jbpm$69 , name: jbpm$nmwf:MyWorkflow , title: nmwf:MyWorkflow , version: 28

:: var bpm:assignees* person admin,andyg

set var {http://www.alfresco.org/model/bpm/1.0}assignees = [workspace://SpacesStore/73cf1b28-21aa-40ca-9dde-1cff492d0268, workspace://SpacesStore/03297e91-0b89-4db6-b764-5ada2d167424]

:: var bpm:package package 1

set var {http://www.alfresco.org/model/bpm/1.0}package = workspace://SpacesStore/6e2bbbbd-b728-4403-be37-dfce55a83641

:: start bpm:assignees bpm:package

started workflow id: jbpm$63 , def: nmwf:MyWorkflow
path: jbpm$63-@ , node: start , active: true
 task id: jbpm$112 , name: nmwf:submitTask, title: submitTask title , desc: submitTask description , properties: 16
 transition id: [default] , title: Task Done

:: show transitions

path: jbpm$63-@ , node: start , active: true
 task id: jbpm$112 , name: nmwf:submitTask, title: submitTask title , desc: submitTask description , properties: 17
 transition id: [default] , title: Task Done

:: end task jbpm$112

signal sent - path id: jbpm$63-@
path: jbpm$63-@ , node: In Editing , active: true
 task id: jbpm$113 , name: nmwf:submitInEditing, title: submitInEditing title , desc: submitInEditing description , properties: 17
 transition id: Submit for Approval , title: Submit for Approval
 transition id: Request Copyediting Review , title: Request Copyediting Review
 transition id: Request Legal Review , title: Request Legal Review
 transition id: Request Review , title: Request Review

:: show tasks

task id: jbpm$113 , name: nmwf:submitInEditing , properties: 18

:: show my tasks

admin:
 [there is no output here]

Me han estado haciendo la suposición de que el BPM: cesionarios que yo soy la creación antes de iniciar el flujo de trabajo inicialmente se están pasó al primer nodo de tareas "en la edición". Es evidente que los cesionarios están en el objeto de tarea y no en el objeto de flujo de trabajo. He añadido el aspecto cesionarios a la tarea-estado de inicio para que pueda sostenerlos (después de que había un problema, inicialmente no estaban allí) y, posiblemente, todavía están sentados allí, pero el estado de inicio ha terminado antes incluso de obtener el control detrás de la secuencias de comandos web (no es que sería de ayuda si no se terminó, necesito que sea en "en edición" como el estado de inicio sólo se utiliza para iniciar la sesión en que se inició el flujo de trabajo).

Siempre me ha confundido que las propiedades que tengo que configurar en cada necesidad tarea a ser solicitada antes de entrar en la tarea (cuando se elige una transición debe proporcionar los datos para la siguiente tarea antes de que puedas pasar a la siguiente tarea como usted tiene que validar que tiene todos los datos requeridos primero y luego la señal la transición). Sin embargo, el código para iniciar el flujo de trabajo es asíncrona y por lo tanto no devuelve el flujo de trabajo sea iniciado o la tarea actual (que en mi caso sería "en la edición"). Así que, en cualquier caso, no se puede establecer variables tales como: bpm cesionarios y BPM: dueDate.

Me pregunto si este es el problema con la lista de tareas del usuario. Soy la creación de los cesionarios en la lista de propiedades, pero tal vez los cesionarios van a la tarea por el estado de inicio y no está recibiendo pasado a la tarea "en la edición"?

Tenga en cuenta que este es mi primer flujo de trabajo jBPM, así que por favor no asuma que sé lo que estoy haciendo. Si usted ve algo que se ve fuera, probablemente lo es y yo no lo saben.

Gracias de antemano por cualquier consejo o ayuda,

¿Fue útil?

Solución

Por lo tanto, resultó que mi problema fue malentendido cómo hacer varios cesionarios al tiempo que permite el flujo de trabajo de transición con cualquiera de esas cesionarios. Resulta que jBPM no soporta esto en un modelo simple, usted tiene que hacer mucho más trabajo que acaba de asignar múltiples assignees.I habían seguido un mal ejemplo que he encontrado en Internet y había hecho una suposición incorrecta acerca de cómo este obras.

jBPM tiene un concepto de tareas en paralelo (utilizando horquillas), pero la acción normal requiere que todos los cesionarios para completar sus tareas antes de que el flujo de trabajo realizará la transición. Resulta que la manera correcta de resolver esto es que desembolsar la tarea a todos los cesionarios, pero cuando cualquiera de los cesionarios completa su tarea que remendar la variable que almacena cuántos cesionarios deben completar sus tareas (node.nOutOfM) a engañar a jBPM en terminar la tarea antes de que todos los cesionarios han completado (esto también puede permitir que únicamente los contactos de salida de los cesionarios Y a tener que completar la tarea).

En lugar de código actualizado publicación, aquí están los artículos que he utilizado para resolver este problema:

http://forums.alfresco.com/en/viewtopic. php? f = 30 & t = 8691

http://forums.alfresco.com/en/viewtopic. php? f = 34 & t = 5189

http: // dev.alfresco.com/resource/docs/java/repository/org/alfresco/repo/workflow/jbpm/ForEachFork.html

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

Otros consejos

No estoy seguro, pero creo que desea <pooledactors> aquí en lugar de <actor>.

Tal vez por eso el WF no funciona como se esperaba.

<actor>#{bpm_assignees}</actor>

Además, creo que la tarea debe estar en sus tareas de datos agrupados no sus Mis tareas, ya que es una tarea agrupada (porque usted está tratando de establecer varios cesionarios).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top