package org.dromara.workflow.flowable.handler; import org.dromara.workflow.common.enums.TaskStatusEnum; import org.flowable.common.engine.impl.interceptor.CommandContext; import org.flowable.engine.TaskService; import org.flowable.engine.impl.jobexecutor.TimerEventHandler; import org.flowable.engine.impl.util.CommandContextUtil; import org.flowable.job.service.JobHandler; import org.flowable.job.service.impl.persistence.entity.JobEntity; import org.flowable.task.api.Task; import org.flowable.variable.api.delegate.VariableScope; /** * 办理超时(过期)任务 * * @author may */ public class TaskTimeoutJobHandler extends TimerEventHandler implements JobHandler { public static final String TYPE = "taskTimeout"; @Override public String getType() { return TYPE; } @Override public void execute(JobEntity job, String configuration, VariableScope variableScope, CommandContext commandContext) { TaskService taskService = CommandContextUtil.getProcessEngineConfiguration(commandContext) .getTaskService(); Task task = taskService.createTaskQuery().taskId(configuration).singleResult(); if (task != null) { taskService.addComment(task.getId(), task.getProcessInstanceId(), TaskStatusEnum.TIMEOUT.getStatus(), "超时自动审批!"); taskService.complete(configuration); } } }