Начать рабочий процесс, используя Java-скрипт на открытом воздухе API или через веб-скрипт
Я хочу начать рабочий процесс программно. Итак, написан веб-скрипт.
Выполнить скрипт:
function startWorkflow()
{
var workflow = actions.create("start-workflow");
workflow.parameters.workflowName = "activiti$alfGroupReview";
workflow.parameters["bpm:workflowDescription"] = "Please review ";
workflow.parameters["bpm:groupAssignee"] = people.getGroup( "GROUP_site_collaborators");;
var futureDate = new Date();
futureDate.setDate(futureDate.getDate() + 7);
workflow.parameters["bpm:workflowDueDate"] = futureDate;
workflow.execute(document);
return ;
}
Для приведенного выше сценария я получаю сообщение об ошибке "документ не определен". Я имею в виду ссылки https://forums.alfresco.com/en/viewtopic.php?f=34&t=42677 и http://livinginjava.blogspot.in/2008/10/starting-alfresco-workflow-using.html.
Поэтому я обновляю свой скрипт на:
function startWorkflow()
{
var nodeRef = "workspace://SpacesStore/25285e6c-2995-49fe-aa50-1270cefc806a";
var docNode = search.findNode(nodeRef);
var workflow = actions.create("start-workflow");
workflow.parameters.workflowName = "activiti$alfGroupReview";
workflow.parameters["bpm:workflowDescription"] = "Please review ";
workflow.parameters["bpm:groupAssignee"] = people.getGroup( "GROUP_aloha_collaborators");;
var futureDate = new Date();
futureDate.setDate(futureDate.getDate() + 7);
workflow.parameters["bpm:workflowDueDate"] = futureDate;
workflow.execute(docNode);
return ;
}
Здесь nodeRef: ссылка на документ из библиотеки документов.
Теперь новая ошибка:
500 Description: An error inside the HTTP server which prevented it from fulfilling the request.
Message: 06270056 Wrapped Exception (with status template): 06270273 Failed to execute script 'classpath*:alfresco/templates/webscripts/org/justransform/startWF.get.js': null
Exception: org.alfresco.scripts.ScriptException - 06270273 Failed to execute script 'classpath*:alfresco/templates/webscripts/org/justransform/startWF.get.js': null
org.alfresco.repo.jscript.RhinoScriptProcessor.execute(RhinoScriptProcessor.java:195)
заранее спасибо.
2 ответа
Этот код работает нормально, если:
- docNode не является нулевым. Вы должны добавить проверку для этого.
- Ваша группа существует. Вероятно, стоит добавить проверку для этого.
- Рабочий процесс существует с указанным идентификатором. Используйте консоль рабочего процесса, чтобы подтвердить это. Например, указанный вами идентификатор не является готовым рабочим процессом. Если это пользовательский режим, возможно, вы не развернули рабочий процесс успешно или у вас неверный идентификатор.
Кроме того, не используйте переменную с именем "рабочий процесс". Alfresco уже определяет объект в корневой области, называемый "рабочий процесс". Говоря об этом, не стесняйтесь использовать JavaScript API рабочего процесса для вызова вашего рабочего процесса вместо действия. Либо должен работать, хотя.
Я успешно выполнил ваш код, используя консоль JavaScript и идентификатор рабочего процесса "activiti$activitiParallelGroupReview" (и после изменения переменной вашего рабочего процесса на workflowAct).
Использование Alfresco Workflow API. Примечание: wfDocs содержит массив узлов документов:
// 2 days from now
var dueDate2d = new Date((new Date()).getTime() + 2*(24*60*60*1000));
// Start workflow
var wfdef = workflow.getDefinitionByName("activiti$alfGroupReview");
if (wfdef) {
var wfparams = new Array();
wfparams["bpm:workflowDescription"] = "Please review";
wfparams["bpm:groupAssignee"] = people.getGroup( "GROUP_site_collaborators");
wfparams['bpm:workflowDueDate'] = dueDate2d;
wfparams['bpm:workflowPriority'] = 1;
wfparams['wf:notifyMe'] = true;
var wfpackage = workflow.createPackage();
for each (var n in wfDocs)
wfpackage.addNode(n);
var wfpath = wfdef.startWorkflow(wfpackage, wfparams);
var tasks = wfpath.getTasks();
for each (task in tasks)
task.endTask(null);
}