Hi,
My need seems to be pretty simple !
First :
I'have a task, owned by a user.
At the end of the task, I want to record the userid of the owner into a process variable using :
public class TaskAssigneeEventListener implements EventListener {
...
@Override
public void notify(EventListenerExecution execution) throws Exception {
TaskService taskService = processEngine.getTaskService();
Task task = taskService.createTaskQuery().processInstanceId(execution.getProcessInstance().getId()).uniqueResult();
if (task == null) {
logger.warn("No task found for ProcessInstance {}", execution.getProcessInstance().getId());
} else {
logger.trace("task name {} ; assignee ", task.getName(),task.getAssignee());
execution.createVariable("MyLastTaskAssignee", task.getAssignee());
}
}
}
Second : I want to retreive that value into an assignment handler to assign that task to that user :
public class MyAssignementHandler implements AssignmentHandler {
//Field I want to inject from my process
private String previousUserId;
@Override
public void assign(Assignable assignable, OpenExecution execution) throws Exception {
logger.trace("Value of previousUserId {} ", previousUserId);
if (previousUserId != null) {
assignable.setAssignee(previousUserId);
} else {
logger.warn("No assignee from the last task !!");
}
}
}
My tasks :
<task assignee="john" g="174,75,92,52" name="taskUser">
<on event="end">
<event-listener expr="#{taskAssigneeEventListener}">
</event-listener>
</on>
<transition name="to taskManager" to="taskManager" g="-126,-24" />
</task>
<task g="337,173,92,52" name="taskManager">
<assignment-handler expr="#{myAssignementHandler}">
<field name="previousUserId">
<object expr="#{variables['MyLastTaskAssignee'}"/>
</field>
</assignment-handler>
<transition name="to end1" to="end1" g="-65,-24" />
</task>
Is it better to understand my need ?
Regards