Est-il possible d'obtenir une liste des flux de travail le document est attaché à Alfresco

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

  •  30-09-2019
  •  | 
  •  

Question

Je tente d'obtenir une liste de flux de travail le document est attaché dans une webscript Alfresco, mais je suis un peu coincé.

Mon problème initial est que j'ai une liste de fichiers, et l'utilisateur actuel peut avoir des flux de travail qui lui sont confiées à ces documents. Alors, maintenant, je veux créer un webscript qui se penchera dans un dossier, prendre tous les documents là-bas, et dresser une liste des documents ainsi que des références de travail, s'il y en a pour l'utilisateur actuel.

Je connais l'objet « workflow » qui me donne la liste des flux de travail pour l'utilisateur en cours, mais ce n'est pas une solution pour mon problème.

Alors, puis-je obtenir une liste des flux de travail un document spécifique est fixé à?

Était-ce utile?

La solution

Eh bien, pour référence, je l'ai trouvé un moyen d'obtenir tous les flux de travail actifs sur un document javascript:

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

Autres conseils

J'utilisé association packageContains pour trouver des flux de travail pour le document. Ci-dessous je posté code JavaScript pour Alfresco flux de travail actifs (comme zladuric ont répondu) et aussi pour tous les flux de travail:

/*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();

Malheureusement, l'API javascript n'expose pas toutes les fonctions de workflow. Il ressemble à obtenir la liste des instances de flux de travail qui sont attachés à un document ne fonctionne que dans Java (Java ou soutenu webscripts).

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

Une utilisation de ce qui peut être trouvé dans la liste des flux de travail dans le document détails: http://svn.alfresco.com/repos/alfresco-open-mirror/alfresco /HEAD/root/projects/web-client/source/java/org/alfresco/web/ui/repo/component/UINodeWorkflowInfo.java

Pour accéder aux utilisateurs qui ont des tâches assignées alors vous devez utiliser getWorkflowPaths et getTasksForWorkflowPath méthodes du WorkflowService.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top