alfresco activiti: организация контроля за исполнением поручения

Здравствуйте!

Есть задача: документы передаются в группу на рассмотрение, состоящую из помощников и одного менеджера. Как только один из помощников назначает задачу себе, менеджеру группы автоматически ставится задача на контроль. 

Как правильно огранизовать контроль над исполнением у менеджера? Нотификейшн письмом не подходит: менеджер должен видеть на рабочем столе, какие задачи у какого помощника активны (т е не сделаны), при этом как только поручение исполняется у помощника, у менеджера список задач уменьшается, соответственно, на исполненную задачу.

Parallel Gateway вроде удобен для создания двух задач: для помощника и менеджера Но как отключать автоматически task у менеджера при завершении задачи помощником? 

Комментарии

fufler аватар

Повторюсь, что с activiti ещё толком не работал, но думаю, что стандартные API  с ним уже подружились. Я бы при выполнении задачи подчинённым просто бы завершил задачу менеджера при помощи примерно такой конструкции: workflow.getTaskById('activiti$12345').endTask(null). При этом, естественно, нужно скрыть кнопки для завершения тасков у менеджера.

Angelina аватар

Спасибо! Попробую так

Angelina аватар

Вопрос по АПИ, наверно. Я в задаче поднимаю воркфлоу:

var workflow = actions.create("start-workflow");
workflow.parameters.workflowName = "activiti$Remainder";
workflow.parameters["bpm:assignee"] = people.getPerson(managerName);
workflow.parameters["bpm:workflowDueDate"] = bpm_workflowDueDate;
workflow.execute(bpm_package);

Затем хочу здесь же "поймать" ID задачи у поднятого воркфлоу:

var task = workflow.getTaskById('activiti$Reminder');
logger.log("TASK"+task);

У меня выпадает ошибка: Cannot find function getTaskById. (AlfrescoJS#6)

Как "достать" объекты в такой ситуации с нужными методами?

fufler аватар

В workflow.getTaskById() передаётся id задачи, а не процесса, также можете попробовать workflow.getTask().  Я для запуска подпроцессов использую примерно такой код:

var wfdef = workflow.getDefinitionByName("jbpm$processid");
if (wfdef)
{
	var wfparams = new Array();
	wfparams["bpm:workflowDescription"] = "";
	wfparams["bpm:assignee"] = "admin";
	var wfpackage = workflow.createPackage();
	for each (var fnode in folder.children)
		wfpackage.addNode(fnode);
	var wfpath = wfdef.startWorkflow(wfpackage, wfparams);
	var tasks = wfpath.getTasks();
	for each (task in tasks)
		task.endTask(null);
}

Angelina аватар

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

fufler аватар

Круто :)