In order to assign an actor to a task, use this code:
Code: Select allpublic void assign(Assignable assign, ExecutionContext execContext) throws Exception {
assign.setActorId(validator);
}
To create dynamic tasks use this code:
Code: Select allpublic void createDynamicTaskNode(ProcessInstance procInst, String taskName, String actorId, Node originNode, Map<String, Node> toTransitions) {
log.info("createDynamicTaskNode({}, {}, {}, {})", new Object[] { taskName, actorId, originNode, toTransitions });
// Add the dynamic task node.
// - Create the task.
Task task = new Task(taskName);
task.setProcessDefinition(procInst.getProcessDefinition());
procInst.getTaskMgmtInstance().getTaskMgmtDefinition().addTask(task);
task.setActorIdExpression(actorId);
// - Create the node.
TaskNode taskNode = new TaskNode("Dynamic task node - " + taskName);
taskNode.addTask(task); // Adds both ends of the association TaskNode <-> Task.
procInst.getProcessDefinition().addNode(taskNode); // Adds both ends of the association ProcessDefinition <-> Node.
Event event = new Event("node-leave");
Action action = new Action();
action.setActionExpression("print(\"Saliendo del nodo\");");
event.addAction(action);
taskNode.addEvent(event);
// Create transition between originating node and dynamic task node.
Transition transition = new Transition("from " + originNode.getName());
originNode.addLeavingTransition(transition);
taskNode.addArrivingTransition(transition);
// Create transition between dynamic task node and target node.
for (Entry<String, Node> toTransition : toTransitions.entrySet()) {
transition = new Transition(toTransition.getKey());
taskNode.addLeavingTransition(transition);
toTransition.getValue().addArrivingTransition(transition);
}
}