Question

J'ai une référence de documents Alfresco; ce que je suis à la recherche est un moyen d'accéder à flux de travail attaché à ce document et terminer (ou progresser à la prochaine transition) par Javascript.

Presque tous les exemples sur le web montre comment démarrer flux de travail et de la dashlet que je pourrais appeler le processeur de commande de tâches (/ alfresco / commande / tâche / fin / [/ transition]) si je savais que l'ID de tâche, mais comment Je fais la même chose à partir du script web côté serveur à partir uniquement de la référence du document?

Il doit y avoir un moyen d'accéder à des flux de travail de documents et de les gérer programatically.

Était-ce utile?

La solution

A partir d'un document nodeRef vous pouvez signaler la tâche en cours comme ceci:

var docNodeRef = "workspace://SpacesStore/<GUID HERE>";
var transitionId = "some action";
var theDocument = search.findNode(docNodeRef);
foreach  (currWorkflow in theDocument.activeWorkflows)
{
    var path = currWorkflow.paths[currWorkflow.paths.length-1];
    var task = path.tasks[0];
    for (var transitionKey in task.transitions)
    {
        if (task.transitions[transitionKey] == transitionId)
        {
            path.signal(transitionId);
            break;
        }
    }
}

Si vous voulez signaler la transition par défaut, vous pouvez sauter la boucle intérieure et faire ceci:

var docNodeRef = "workspace://SpacesStore/<GUID HERE>";
var transitionId = "some action";
var theDocument = search.findNode(docNodeRef);
foreach  (currWorkflow in theDocument.activeWorkflows)
{
    var path = currWorkflow.paths[currWorkflow.paths.length-1];
    var task = path.tasks[0];
    // Signal default transition
    path.signal(null);
}

Autres conseils

Eh bien, je ne sais toujours pas comment faire la transition, mais il y a deux choses que je l'ai découvert.

Tout d'abord, je peux accéder les flux de documents et participe à l'annuler:

for each (workflow in document.activeWorkflows) {
    workflow.cancel();
}

Cependant, je ne suis pas encore tout à fait sûr de savoir comment faire progresser les tâches. Je peux arriver à la tâche et faire quelque chose avec elle:

var task = workflow.getTask(taskId);
task.endTask(transitionId);

... mais je ne sais toujours pas comment se rendre à taskId ou transitionId, que ce soit par le biais d'un programme ou Alfresco.

EDIT: figured it out, transitionId est la transition en fait le nom tel que défini dans XML workflow processdefinition:

<transition name="SomeTransitionId" to="end">

En outre, pour obtenir la liste des tâches du flux de travail, vous pouvez parcourir à travers des chemins (workflow.getPaths ()), puis à travers des tâches avec path.getTasks ().

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