Hi, I have a requirement where I have to listen to an event like TASK_ASSIGNMENT
, get assignee
information, and update it in the entity. I’ve been able to accomplish it for a single user, but I’m facing an issue in the case of candidate groups.
To accomplish this, I have implemented FlowableEventListener
and I’m listening to TASK_ASSIGNMENT
of FlowableEngineEventType
. Along with this, I’m using RuntimeService
to create ExecutionQuery
and get the information related to the currently active task. Below is the code:
WorkflowEventListener.java:
public class WorkflowEventListener implements FlowableEventListener
{
@Autowired
private RuntimeService mRuntimeService;
@Override
public void onEvent( FlowableEvent event )
{
FlowableEngineEventType lEventType = (FlowableEngineEventType) event.getType();
switch( lEventType )
{
case TASK_ASSIGNED:
if( event instanceof FlowableEntityEventImpl )
{
FlowableEntityEventImpl lFlowableEntityEventImpl = (FlowableEntityEventImpl) event;
String lProcessInstanceId = lFlowableEntityEventImpl.getProcessInstanceId();
List<Execution> lExecutions = mRuntimeService.createExecutionQuery()
.processInstanceId( lProcessInstanceId )
.list();
UserTask lUserTask = new UserTask();
if( lExecutions.size() > 0 )
{
for( Execution lExecution : lExecutions )
{
if( ( (ExecutionEntityImpl) lExecution ).getCurrentFlowElement() instanceof UserTask )
{
lUserTask = (UserTask) ( (ExecutionEntityImpl) lExecution ).getCurrentFlowElement();
}
}
System.out.println( "Assignee info: " + lUserTask.getAssignee() );
}
}
break;
default:
break;
}
}
@Override
public boolean isFailOnException()
{
return false;
}
@Override
public boolean isFireOnTransactionLifecycleEvent()
{
return false;
}
@Override
public String getOnTransaction()
{
return null;
}
}
Normally, if I inspect elements in lExecutions
, I get information about the assignee of the currently active task. For a basic flow, lExecutions
will contain 2 elements, one will be ProcessInstance
and other will be ExecutionEntityImpl
.
Issue comes when a task is assigned to a group and a user claims the task.
Claiming the task is done via single API call, taskService.claim()
. Once I get into the listener and after the claim has happened, I was expecting the assignee info to be populated in currentFlowElement
, but assignee remains still null
.
I’m not sure why lExecutions
is not having assignee information once the task is claimed.
Please let me know if I’m missing any information from my end.