package tech.powerjob.server.web.response; import com.alibaba.fastjson.JSON; import org.apache.commons.lang3.StringUtils; import tech.powerjob.common.enums.TimeExpressionType; import tech.powerjob.common.model.LifeCycle; import tech.powerjob.common.model.PEWorkflowDAG; import tech.powerjob.server.common.SJ; import tech.powerjob.common.enums.SwitchableStatus; import tech.powerjob.server.persistence.remote.model.WorkflowInfoDO; import lombok.Data; import org.springframework.beans.BeanUtils; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * 工作流对外展示对象 * * @author tjq * @since 2020/5/27 */ @Data public class WorkflowInfoVO { private Long id; private String wfName; private String wfDescription; /** * 所属应用ID */ private Long appId; /** * 点线表示法 */ private PEWorkflowDAG pEWorkflowDAG; /* ************************** 定时参数 ************************** */ /** * 时间表达式类型(CRON/API/FIX_RATE/FIX_DELAY) */ private String timeExpressionType; /** * 时间表达式,CRON/NULL/LONG/LONG */ private String timeExpression; /** * 最大同时运行的工作流个数,默认 1 */ private Integer maxWfInstanceNum; /** * ENABLE / DISABLE */ private Boolean enable; /** * 工作流整体失败的报警 */ private List notifyUserIds; private LifeCycle lifeCycle; private Date gmtCreate; private Date gmtModified; public static WorkflowInfoVO from(WorkflowInfoDO wfDO) { WorkflowInfoVO vo = new WorkflowInfoVO(); BeanUtils.copyProperties(wfDO, vo); vo.enable = SwitchableStatus.of(wfDO.getStatus()) == SwitchableStatus.ENABLE; vo.setTimeExpressionType(TimeExpressionType.of(wfDO.getTimeExpressionType()).name()); vo.setPEWorkflowDAG(JSON.parseObject(wfDO.getPeDAG(), PEWorkflowDAG.class)); if (!StringUtils.isEmpty(wfDO.getNotifyUserIds())) { vo.setNotifyUserIds(SJ.COMMA_SPLITTER.splitToList(wfDO.getNotifyUserIds()).stream().map(Long::valueOf).collect(Collectors.toList())); } if (!StringUtils.isEmpty(wfDO.getLifecycle())) { vo.lifeCycle = LifeCycle.parse(wfDO.getLifecycle()); } return vo; } }