package tech.powerjob.server.core.validator;
|
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Component;
|
import tech.powerjob.common.enums.WorkflowNodeType;
|
import tech.powerjob.common.exception.PowerJobException;
|
import tech.powerjob.common.enums.SwitchableStatus;
|
import tech.powerjob.server.core.workflow.algorithm.WorkflowDAG;
|
import tech.powerjob.server.persistence.remote.model.JobInfoDO;
|
import tech.powerjob.server.persistence.remote.model.WorkflowNodeInfoDO;
|
import tech.powerjob.server.persistence.remote.repository.JobInfoRepository;
|
|
/**
|
* @author Echo009
|
* @since 2021/12/14
|
*/
|
@Component
|
@Slf4j
|
@RequiredArgsConstructor
|
public class JobNodeValidator implements NodeValidator {
|
|
private final JobInfoRepository jobInfoRepository;
|
|
@Override
|
public void complexValidate(WorkflowNodeInfoDO node, WorkflowDAG dag) {
|
// do nothing
|
}
|
|
@Override
|
public void simpleValidate(WorkflowNodeInfoDO node) {
|
// 判断对应的任务是否存在
|
JobInfoDO job = jobInfoRepository.findById(node.getJobId())
|
.orElseThrow(() -> new PowerJobException("Illegal job node,specified job is not exist,node name : " + node.getNodeName()));
|
|
if (job.getStatus() == SwitchableStatus.DELETED.getV()) {
|
throw new PowerJobException("Illegal job node,specified job has been deleted,node name : " + node.getNodeName());
|
}
|
}
|
|
@Override
|
public WorkflowNodeType matchingType() {
|
return WorkflowNodeType.JOB;
|
}
|
}
|