Search in sources :

Example 1 with ProcessMeta

use of org.apache.dolphinscheduler.api.dto.ProcessMeta in project dolphinscheduler by apache.

the class ProcessDefinitionService method batchExportProcessDefinitionByIds.

/**
 * batch export process definition by ids
 * @param loginUser
 * @param projectName
 * @param processDefinitionIds
 * @param response
 */
public void batchExportProcessDefinitionByIds(User loginUser, String projectName, String processDefinitionIds, HttpServletResponse response) {
    if (StringUtils.isEmpty(processDefinitionIds)) {
        return;
    }
    // export project info
    Project project = projectMapper.queryByName(projectName);
    // check user access for project
    Map<String, Object> checkResult = projectService.checkProjectAndAuth(loginUser, project, projectName);
    Status resultStatus = (Status) checkResult.get(Constants.STATUS);
    if (resultStatus != Status.SUCCESS) {
        return;
    }
    List<ProcessMeta> processDefinitionList = getProcessDefinitionList(processDefinitionIds);
    if (CollectionUtils.isNotEmpty(processDefinitionList)) {
        downloadProcessDefinitionFile(response, processDefinitionList);
    }
}
Also used : Status(org.apache.dolphinscheduler.api.enums.Status) Project(org.apache.dolphinscheduler.dao.entity.Project) JSONObject(com.alibaba.fastjson.JSONObject) ProcessMeta(org.apache.dolphinscheduler.api.dto.ProcessMeta)

Example 2 with ProcessMeta

use of org.apache.dolphinscheduler.api.dto.ProcessMeta in project dolphinscheduler by apache.

the class ProcessDefinitionService method exportProcessMetaData.

/**
 * get export process metadata string
 * @param processDefinitionId process definition id
 * @param processDefinition process definition
 * @return export process metadata string
 */
public ProcessMeta exportProcessMetaData(Integer processDefinitionId, ProcessDefinition processDefinition) {
    // correct task param which has data source or dependent param
    String correctProcessDefinitionJson = addExportTaskNodeSpecialParam(processDefinition.getProcessDefinitionJson());
    processDefinition.setProcessDefinitionJson(correctProcessDefinitionJson);
    // export process metadata
    ProcessMeta exportProcessMeta = new ProcessMeta();
    exportProcessMeta.setProjectName(processDefinition.getProjectName());
    exportProcessMeta.setProcessDefinitionName(processDefinition.getName());
    exportProcessMeta.setProcessDefinitionJson(processDefinition.getProcessDefinitionJson());
    exportProcessMeta.setProcessDefinitionLocations(processDefinition.getLocations());
    exportProcessMeta.setProcessDefinitionConnects(processDefinition.getConnects());
    // schedule info
    List<Schedule> schedules = scheduleMapper.queryByProcessDefinitionId(processDefinitionId);
    if (!schedules.isEmpty()) {
        Schedule schedule = schedules.get(0);
        exportProcessMeta.setScheduleWarningType(schedule.getWarningType().toString());
        exportProcessMeta.setScheduleWarningGroupId(schedule.getWarningGroupId());
        exportProcessMeta.setScheduleStartTime(DateUtils.dateToString(schedule.getStartTime()));
        exportProcessMeta.setScheduleEndTime(DateUtils.dateToString(schedule.getEndTime()));
        exportProcessMeta.setScheduleCrontab(schedule.getCrontab());
        exportProcessMeta.setScheduleFailureStrategy(String.valueOf(schedule.getFailureStrategy()));
        exportProcessMeta.setScheduleReleaseState(String.valueOf(ReleaseState.OFFLINE));
        exportProcessMeta.setScheduleProcessInstancePriority(String.valueOf(schedule.getProcessInstancePriority()));
        exportProcessMeta.setScheduleWorkerGroupName(schedule.getWorkerGroup());
    }
    // create workflow json file
    return exportProcessMeta;
}
Also used : Schedule(org.apache.dolphinscheduler.dao.entity.Schedule) ProcessMeta(org.apache.dolphinscheduler.api.dto.ProcessMeta)

Example 3 with ProcessMeta

use of org.apache.dolphinscheduler.api.dto.ProcessMeta in project dolphinscheduler by apache.

the class ProcessDefinitionService method importProcessDefinition.

/**
 * import process definition
 * @param loginUser login user
 * @param file process metadata json file
 * @param currentProjectName current project name
 * @return import process
 */
@Transactional(rollbackFor = Exception.class)
public Map<String, Object> importProcessDefinition(User loginUser, MultipartFile file, String currentProjectName) {
    Map<String, Object> result = new HashMap<>(5);
    String processMetaJson = FileUtils.file2String(file);
    List<ProcessMeta> processMetaList = JSON.parseArray(processMetaJson, ProcessMeta.class);
    // check file content
    if (CollectionUtils.isEmpty(processMetaList)) {
        putMsg(result, Status.DATA_IS_NULL, "fileContent");
        return result;
    }
    for (ProcessMeta processMeta : processMetaList) {
        if (!checkAndImportProcessDefinition(loginUser, currentProjectName, result, processMeta)) {
            return result;
        }
    }
    return result;
}
Also used : ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap) JSONObject(com.alibaba.fastjson.JSONObject) ProcessMeta(org.apache.dolphinscheduler.api.dto.ProcessMeta) Transactional(org.springframework.transaction.annotation.Transactional)

Example 4 with ProcessMeta

use of org.apache.dolphinscheduler.api.dto.ProcessMeta in project dolphinscheduler by apache.

the class ProcessDefinitionService method getProcessDefinitionList.

/**
 * get process definition list by ids
 * @param processDefinitionIds
 * @return
 */
private List<ProcessMeta> getProcessDefinitionList(String processDefinitionIds) {
    List<ProcessMeta> processDefinitionList = new ArrayList<>();
    String[] processDefinitionIdArray = processDefinitionIds.split(",");
    for (String strProcessDefinitionId : processDefinitionIdArray) {
        // get workflow info
        int processDefinitionId = Integer.parseInt(strProcessDefinitionId);
        ProcessDefinition processDefinition = processDefineMapper.queryByDefineId(processDefinitionId);
        if (null != processDefinition) {
            processDefinitionList.add(exportProcessMetaData(processDefinitionId, processDefinition));
        }
    }
    return processDefinitionList;
}
Also used : ArrayList(java.util.ArrayList) ProcessDefinition(org.apache.dolphinscheduler.dao.entity.ProcessDefinition) ProcessMeta(org.apache.dolphinscheduler.api.dto.ProcessMeta)

Example 5 with ProcessMeta

use of org.apache.dolphinscheduler.api.dto.ProcessMeta in project dolphinscheduler by apache.

the class ProcessDefinitionServiceTest method getProcessMeta.

/**
 * get mock processMeta
 * @return processMeta
 */
private ProcessMeta getProcessMeta() {
    ProcessMeta processMeta = new ProcessMeta();
    Schedule schedule = getSchedule();
    processMeta.setScheduleCrontab(schedule.getCrontab());
    processMeta.setScheduleStartTime(DateUtils.dateToString(schedule.getStartTime()));
    processMeta.setScheduleEndTime(DateUtils.dateToString(schedule.getEndTime()));
    processMeta.setScheduleWarningType(String.valueOf(schedule.getWarningType()));
    processMeta.setScheduleWarningGroupId(schedule.getWarningGroupId());
    processMeta.setScheduleFailureStrategy(String.valueOf(schedule.getFailureStrategy()));
    processMeta.setScheduleReleaseState(String.valueOf(schedule.getReleaseState()));
    processMeta.setScheduleProcessInstancePriority(String.valueOf(schedule.getProcessInstancePriority()));
    processMeta.setScheduleWorkerGroupName("workgroup1");
    return processMeta;
}
Also used : Schedule(org.apache.dolphinscheduler.dao.entity.Schedule) ProcessMeta(org.apache.dolphinscheduler.api.dto.ProcessMeta)

Aggregations

ProcessMeta (org.apache.dolphinscheduler.api.dto.ProcessMeta)6 Schedule (org.apache.dolphinscheduler.dao.entity.Schedule)3 JSONObject (com.alibaba.fastjson.JSONObject)2 ArrayList (java.util.ArrayList)2 HashMap (java.util.HashMap)1 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)1 Status (org.apache.dolphinscheduler.api.enums.Status)1 ProcessDefinition (org.apache.dolphinscheduler.dao.entity.ProcessDefinition)1 Project (org.apache.dolphinscheduler.dao.entity.Project)1 User (org.apache.dolphinscheduler.dao.entity.User)1 WorkerGroup (org.apache.dolphinscheduler.dao.entity.WorkerGroup)1 Test (org.junit.Test)1 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)1 Transactional (org.springframework.transaction.annotation.Transactional)1