Ist es möglich, eine Liste von Workflows zu erhalten das Dokument in Alfresco angebracht ist

StackOverflow https://stackoverflow.com/questions/3530952

  •  30-09-2019
  •  | 
  •  

Frage

Ich versuche, eine Liste von Workflows zu erhalten das Dokument in einem Alfresco WebScript angebracht ist, aber ich bin ein bisschen fest.

Mein ursprüngliches Problem ist, dass ich eine Liste von Dateien, und der aktuelle Benutzer Workflows ihn zugewiesenen mit diesen Dokumenten hat. So, jetzt will ich eine WebScript erstellen, die in einem Ordner schauen, nehmen alle die Dokumente dort, und eine Liste von Dokumenten zusammen mit Aufgabe Referenzen zusammenstellen, wenn es eine für die aktuellen Benutzer ist.

Ich weiß, über das „Workflow“ Objekt, das mir die Liste des Workflows für den aktuellen Benutzer gibt, aber das ist keine Lösung für mein Problem.

Also, kann ich eine Liste von Workflows ein bestimmtes Dokument angebracht werden?

War es hilfreich?

Lösung

Nun, für die Zukunft, ich habe einen Weg gefunden, alle aktiven Workflows auf einem Dokument von Javascript zu bekommen:

var nodeR = search.findNode('workspace://SpacesStore/'+doc.nodeRef);
    for each ( wf in nodeR.activeWorkflows )
    { 
        // Do whatever here.
    }

Andere Tipps

habe ich packageContains Assoziation Workflows für Dokument zu finden. Unten i geschrieben Code in Alfresco JavaScript für aktiven Workflows (wie zladuric beantwortet) und auch für alle Workflows:

/*global search, logger, workflow*/
var getWorkflowsForDocument, getActiveWorkflowsForDocument;

getWorkflowsForDocument = function () {
    "use strict";
    var doc, parentAssocs, packages, packagesLen, i, pack, props, workflowId, instance, isActive;
    //
    doc = search.findNode("workspace://SpacesStore/8847ea95-108d-4e08-90ab-34114e7b3977");
    parentAssocs = doc.getParentAssocs();
    packages = parentAssocs["{http://www.alfresco.org/model/bpm/1.0}packageContains"];
    //
    if (packages) {
        packagesLen = packages.length;
        //
        for (i = 0; i < packagesLen; i += 1) {
            pack = packages[i];
            props = pack.getProperties();
            workflowId = props["{http://www.alfresco.org/model/bpm/1.0}workflowInstanceId"];
            instance = workflow.getInstance(workflowId);
            /* instance is org.alfresco.repo.workflow.jscript.JscriptWorkflowInstance */
            isActive = instance.isActive();
            logger.log(" + instance: " + workflowId + " (active: " + isActive + ")");
        }
    }
};

getActiveWorkflowsForDocument = function () {
    "use strict";
    var doc, activeWorkflows, activeWorkflowsLen, i, instance;
    //
    doc = search.findNode("workspace://SpacesStore/8847ea95-108d-4e08-90ab-34114e7b3977");
    activeWorkflows = doc.activeWorkflows;
    activeWorkflowsLen = activeWorkflows.length;
    for (i = 0; i < activeWorkflowsLen; i += 1) {
        instance = activeWorkflows[i];
        /* instance is org.alfresco.repo.workflow.jscript.JscriptWorkflowInstance */
        logger.log(" - instance: " + instance.getId() + " (active: " + instance.isActive() + ")");
    }
}


getWorkflowsForDocument();
getActiveWorkflowsForDocument();

Leider ist die Javascript-API verfügbar macht nicht alle Workflow-Funktionen. Es sieht wie die Liste der Workflow-Instanzen erhalten, die nur an einem Dokument angebracht sind, funktioniert in Java (oder Java unterstützt webscripts).

List<WorkflowInstance> workflows = workflowService.getWorkflowsForContent(node.getNodeRef(), true);

Eine Nutzung dieser kann in der Workflow-Liste in den Dokumentdetails zu finden: http://svn.alfresco.com/repos/alfresco-open-mirror/alfresco /HEAD/root/projects/web-client/source/java/org/alfresco/web/ui/repo/component/UINodeWorkflowInfo.java

Um die Benutzer zu erhalten, die Aufgaben zugewiesen würden Sie dann verwenden müssen getWorkflowPaths und getTasksForWorkflowPath Methoden des Workflow.

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