Frage

Hallo SO Gemeinschaft,

Ich hatte kein Glück Hilfe in den Foren Alfresco bekommen, und ich hoffe auf mehr hier. Wir bauen eine Anwendung auf Basis von Alfresco und jBPM und ich habe einen Workflow definiert, aber ich habe es entweder falsch definiert oder sind etwas fehlen oder es gibt Fehler in Alfresco Integration mit jBPM und ich brauche Hilfe, welche und Festsetzung es herauszufinden. Hier ist das Problem:

Ich habe einen erweiterten Workflow und ich versuche, es von JavaScript zu starten. Hier ist der Code Ich verwende den Workflow zu starten:

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);

Das läuft gut und E-Mail von den Feuern Standardübergang gerade fein des Knotens Start geschickt. Wenn jedoch gehe ich für den Workflow in meiner Aufgabenliste suchen, ist es nicht da, aber es ist in meinem abgeschlossen Aufgabenliste. Der Standard-Übergang (der einzige Übergang) von dem Startknoten Punkten, an einem Task-Knoten, der vier Übergänge aufweist.

Es gibt 8 Aufgaben und 22 Übergänge im Arbeitsablauf. Wenn ich die Workflow-Konsole verwenden, um den Workflow zu starten und die Start-Task zu beenden, folgt es richtig den Knoten Übergang Standard Start in der nächsten Aufgabe. Die neue Aufgabe zeigt sich in „Show Aufgaben“, aber nicht zeigen, bis nicht in „meine Aufgaben zeigen“ (offenbar weil die Aufgabe wurde aus irgendeinem Grund beendet markiert, obwohl es nicht in „Ende“ Knoten ist). Die Aufgabe ist:

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

Wenn ich "Show transitions" tue es sieht aus wie ich erwarten würde:

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

Ich will nicht den gesamten Workflow schreiben, wie es groß ist, aber hier sind die ersten beiden Knoten:

Zuerst wird die 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>

Nun sind die Knoten:

<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>

Hier ist das Modell für diese beiden Knoten:

 <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>

Hier ist ein pseudo-Protokoll des Workflow in der Workflow-Konsole ausgeführt wird:

:: 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]

Ich habe unter der Annahme, dass die bpm: Abtretungs, dass ich Einstellung bin vor dem Workflow zunächst beginnend mit dem ersten Task-Knoten „In Bearbeitung“ übergeben zu werden. Offensichtlich sind die Abtretungsempfänger auf dem Task-Objekt und nicht auf dem Workflow-Objekt. Ich fügte den Abtretungs Aspekt zum Start-Zustand Aufgabe, so dass er sie halten konnte (nachdem ich ein Problem hatte, anfangs waren sie nicht da) und möglicherweise sitzen sie immer noch da, aber der Start-Zustand beendet ist, bevor ich sogar Kontrolle geraten zurück aus dem Web-Skript (nicht, dass es helfen würde, wenn es nicht zu Ende war, muß ich es in „in Bearbeitung“, wie der Start-Zustand wird nur, dass der Workflow zur Anmeldung verwendet wird gestartet wurde).

Es hat sich verwirrt mich immer, dass die Eigenschaften, daß ich Satz müssen auf jeden Bedarf Aufgabe angefordert werden, bevor die Aufgabe eingegeben wird (wenn Sie einen Übergang wählen, müssen Sie die Daten für die nächste Aufgabe zur Verfügung stellen bevor Sie tatsächlich auf die nächste Aufgabe bewegen können, wie Sie zu bestätigen haben, dass Sie alle erforderlichen Daten erste und dann den Übergang Signal). Doch der Code den Workflow zu starten ist asynchron und daher auch nicht den gestarteten Workflow oder die aktuelle Aufgabe (was in meinem Fall wäre „In Bearbeitung“) zurückgibt. So oder so kann man nicht einstellen Variablen wie bpm: Abtretungs und bpm: dueDate.

Ich frage mich, ob dies das Problem mit dem Benutzeraufgabenliste ist. Ich bin die Abtretungsempfänger in der Eigenschaftenliste einstellen, aber vielleicht diese Abtretungs zum Start-Zustand Aufgabe werden und sind nicht auf die „In Bearbeitung“ Task übergeben zu werden?

Beachten Sie, dass diese is mein erstes jBPM Workflow, also bitte nicht davon ausgehen, ich weiß, was ich tue. Wenn Sie sehen etwas, das aussieht weg, ist es wahrscheinlich, und ich weiß es einfach nicht.

Vielen Dank im Voraus für jede Beratung oder Hilfe,

War es hilfreich?

Lösung

Also, es stellte sich heraus, dass mein Problem war Missverständnis, wie mehrere Abtretungsempfänger zu tun, während der Workflow-Übergang mit einem dieser Abtretungsempfänger ermöglicht. Es stellt sich heraus, dass jBPM das nicht in einem einfachen Modell nicht unterstützt, haben Sie als viel mehr Arbeit zu tun, nur mehrere assignees.I zuweisen ein schlechtes Beispiel gefolgt war, dass ich im Internet gefunden und hatte eine falsche Annahme darüber, wie diese gemacht funktioniert.

hat jBPM ein Konzept der parallelen Aufgaben haben (mit Gabeln), aber die normale Aktion verlangt, dass alle Abtretungs ihre Aufgaben zu erledigen, bevor der Workflow übergehen wird. Es stellt sich heraus, dass der richtige Weg, dies zu lösen, ist die Aufgabe, alle der Abtretungsempfänger gabeln, aber wenn eine der Abtretungs ihre Aufgabe vervollständigt die Variable, die wir flicken, dass Geschäfte wie viele Abtretungsempfänger müssen ihre Aufgaben erledigen (node.nOutOfM) zu Narr jBPM in die Aufgabe erfüllen, bevor alle Abtretungs sie abgeschlossen haben (dies auch nur x aus y Abtretungs erlauben kann zu haben, um die Aufgabe abzuschließen).

Anstatt Buchungscode aktualisiert, hier sind die Artikel, die ich verwenden, um dieses Problem zu lösen:

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

Andere Tipps

Ich bin nicht sicher, aber ich denke, dass Sie <pooledactors> hier statt <actor> wollen.

Vielleicht ist das, warum Ihr wf funktioniert nicht wie erwartet.

<actor>#{bpm_assignees}</actor>

Auch ich glaube, dass die Aufgabe in Ihrer Pooled Aufgabe sein sollte, nicht Ihre Meine Aufgaben, da es eine gepoolte Aufgabe ist (weil Sie versuchen mehrere Abtretungs eingestellt).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top