Проведение рабочих процессов Alfresco с помощью веб-скрипта

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

  •  20-09-2019
  •  | 
  •  

Вопрос

У меня есть ссылка на документ Alfresco;то, что я ищу, - это способ получить доступ к рабочему процессу, прикрепленному к этому документу, и завершить его (или перейти к следующему переходу) через Javascript.

Почти каждый пример в Интернете показывает, как запустить рабочий процесс, и из дашлета я мог бы вызвать командный процессор задачи (/alfresco/command/task/end/[/transition]), если бы знал идентификатор задачи, но как мне это сделать? то же самое с веб-скриптом на стороне сервера, начиная только со ссылки на документ?

Должен быть способ получить доступ к рабочим процессам из документа и управлять ими программно.

Это было полезно?

Решение

Из документа nodeRef вы можете указать текущую задачу следующим образом:

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

Если вы хотите сигнализировать о переходе по умолчанию, вы можете пропустить внутренний цикл и просто сделать это:

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

Другие советы

Ну, я до сих пор не знаю, как перейти, но есть пара вещей, которые я узнал.

Во-первых, я могу получить доступ к документу рабочих процессов, в котором участвует, и отменить его:

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

Однако я до сих пор не совсем уверен, как выполнять задания.Я могу приступить к задаче и что-то с ней сделать:

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

... но я до сих пор понятия не имею, как добраться до TaskId или TransitionId, программно или через Alfresco.

РЕДАКТИРОВАТЬ:разобрался,transitionId на самом деле является именем перехода, как определено в XML определения процесса рабочего процесса:

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

Кроме того, чтобы получить список задач из рабочего процесса, вы можете перебирать пути (workflow.getPaths()), а затем — задачи с помощью path.getTasks().

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top