What is the alternative to activitieventlistener in camunda?

Hi
i migrate from activiti to camunda. in camunda I want to do something when any task create for example when any task create i want to set a variable to created task. in activiti i use activitieventlistener to do it but now in camunda how can i do it?
my previous code is

import org.activiti.engine.delegate.event.ActivitiEntityEvent;
import org.activiti.engine.delegate.event.ActivitiEvent;
import org.activiti.engine.delegate.event.ActivitiEventListener;
import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
import org.activiti.engine.impl.persistence.entity.TaskEntity;
import org.valz.framework.common.utility.StringUtility;

public class ValzActivitiEventListener implements ActivitiEventListener {

@Override
public boolean isFailOnException() {
	return false;
}

@Override
public void onEvent(ActivitiEvent event) {
	switch (event.getType()) {

	case TASK_CREATED: {
		ActivitiEntityEvent activityEntityEvent = (ActivitiEntityEvent) event;
		TaskEntity taskEntity = (TaskEntity) activityEntityEvent.getEntity();
		ExecutionEntity exEntity = taskEntity.getProcessInstance();
		String prevTaskId =(String) exEntity.getVariable("prevTaskId");
		if(StringUtility.isNullOrEmpty( prevTaskId ))
			prevTaskId=taskEntity.getId();
		taskEntity.setVariableLocal("prevTaskId", prevTaskId);
	}
		break;
	default:
	}
}

}

Hi @vahidalz,

You can use a TaskListener for this purpose: https://docs.camunda.org/manual/latest/user-guide/process-engine/delegation-code/#task-listener

Cheers,
Nikola

I know that but in this way i will force to add a listener to all task , i want to do same things for all task, in activiti i did it by implementation of ActivitiEventListeer not by TaskListener .

Then, you can create a Process Engine Plugin that adds a Task Listener to every Task when a process is parsed. You can see this topic for more details: Create Execution Listener in Spring[Modified]

Best,
Nikola

1 Like