添加监听
userTask.setTaskListeners(getTaskListener());
监听方法
import org.activiti.engine.delegate.TaskListener;
private static List<ActivitiListener> getTaskListener() {
ArrayList<ActivitiListener> listeners = new ArrayList<>();
ActivitiListener activitiListener = new ActivitiListener();
activitiListener.setEvent(TaskListener.EVENTNAME_CREATE);
activitiListener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
activitiListener.setImplementation("${taskListener}");
listeners.add(activitiListener);
return listeners;
}
监听处理类
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
import org.activiti.engine.task.IdentityLink;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Set;
@Slf4j
@Component("taskListener")
public class CreateTaskListener implements TaskListener {
@Autowired
private List<CreateTaskHandle> workServiceList;
@Override
public void notify(DelegateTask delegateTask) {
String assignee = delegateTask.getAssignee();
Set<IdentityLink> candidates = delegateTask.getCandidates();
if(assignee == null){
delegateTask.setAssignee(candidates.iterator().next().getUserId());
}
final String id = delegateTask.getId();
final String name = delegateTask.getName();
final String processInstanceId = delegateTask.getProcessInstanceId();
final String executionId = delegateTask.getExecutionId();
final String processDefinitionId = delegateTask.getProcessDefinitionId();
final String taskDefinitionKey = delegateTask.getTaskDefinitionKey();
final String eventName = delegateTask.getEventName();
DelegateExecution execution = delegateTask.getExecution();
Object object = execution.getVariable("functionKey");
workServiceList.stream().filter(item->item.getKey().equals(String.valueOf(delegateTask.getVariable("functionKey")))).forEach(item->{
item.notify(delegateTask);
});
}
}
具体操作接口
import org.activiti.engine.delegate.DelegateTask;
public interface CreateTaskHandle {
String getKey();
void notify(DelegateTask delegateTask);
}
实现类01
import com.tsingeye.common.enums.WorkflowType;
import com.tsingeye.system.service.ISysProjectService;
import com.tsingeye.workflow.engine.listener.CreateTaskHandle;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.delegate.DelegateTask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class SysProjectTaskHandle implements CreateTaskHandle {
@Override
public String getKey() {
return WorkflowType.CONSTRUCTION_STATE.getCode();
}
@Autowired
private ISysProjectService sysProjectService;
@Override
public void notify(DelegateTask delegateTask) {
log.info("{}","project");
}
}