What is the alternative to activitieventlistener in camunda?

Viewed 143

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:
}
}

}
1 Answers

I think TaskListener should work for you

@Component
@Slf4j
public class HumanTaskListener implements TaskListener {

    @Override
    public void notify(final DelegateTask delegateTask) {
        LOGGER.debug("Notify... {}", delegateTask);
    }
}

and register the Listener

@Component
public class HumanTaskBpmnListener extends AbstractBpmnParseListener {

    @Autowired
    private HumanTaskListener humanTaskListener;

    @Override
    public void parseUserTask(final Element humanTaskElement, final ScopeImpl scope, final ActivityImpl activity) {
        final TaskDefinition taskDefinition = ((UserTaskActivityBehavior) activity.getActivityBehavior()).getTaskDefinition();
        taskDefinition.addBuiltInTaskListener(TaskListener.EVENTNAME_CREATE, humanTaskListener);
    }

}
Related