108 lines
3.0 KiB
C
108 lines
3.0 KiB
C
|
|
|
|||
|
|
#ifndef PAI_FRAME_WORKFLOWENGINE_WORKFLOW_HELPER_H
|
|||
|
|
#define PAI_FRAME_WORKFLOWENGINE_WORKFLOW_HELPER_H
|
|||
|
|
|
|||
|
|
#include "WorkFlowFile.h"
|
|||
|
|
#include "JobCreater.h"
|
|||
|
|
|
|||
|
|
#include <string>
|
|||
|
|
#include <set>
|
|||
|
|
|
|||
|
|
using namespace std;
|
|||
|
|
|
|||
|
|
namespace pai{
|
|||
|
|
namespace workflow {
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 将工作流文件名称与作业的信息匹配,界面显示信息的结构体
|
|||
|
|
*/
|
|||
|
|
struct JobInfo
|
|||
|
|
{
|
|||
|
|
std::string workflowName;
|
|||
|
|
std::string jobId;
|
|||
|
|
pai::ios::job::JobStatus state;
|
|||
|
|
JobInfo():workflowName(), jobId(), state()
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
/**
|
|||
|
|
* @brief 实时监控模块需要获取的监控源信息结构体
|
|||
|
|
*/
|
|||
|
|
struct TimeMonitorInfo
|
|||
|
|
{
|
|||
|
|
//工作流名称
|
|||
|
|
string jobName;
|
|||
|
|
//数据输出路径
|
|||
|
|
string dataFilePath;
|
|||
|
|
//实时监控模块的信息
|
|||
|
|
string monitorModuleName;
|
|||
|
|
int monitorModuleId;
|
|||
|
|
|
|||
|
|
//被监控模块的信息
|
|||
|
|
int monitorColor;
|
|||
|
|
int index;
|
|||
|
|
int monitoredStepID;
|
|||
|
|
string monitoredModuleName;
|
|||
|
|
};
|
|||
|
|
/**
|
|||
|
|
* WorkflowHelper just something stuff for workflow
|
|||
|
|
*/
|
|||
|
|
class PAI_WORKFLOWENGINE_EXPORT WorkflowHelper {
|
|||
|
|
public:
|
|||
|
|
WorkflowHelper();
|
|||
|
|
virtual ~WorkflowHelper();
|
|||
|
|
/**
|
|||
|
|
* @brief 保存CWorkFlowFile对象至jsonfilename文件
|
|||
|
|
* @param jsonfilename 目标工作流文件
|
|||
|
|
* @param file 目标工作流文件对象
|
|||
|
|
* @return 如果保存成功,返回true,否则返回false
|
|||
|
|
*/
|
|||
|
|
bool SaveWorkflow(const std::string& jsonfilename, CWorkFlowFile* file);
|
|||
|
|
/*
|
|||
|
|
* 此接口由界面使用,由于监控模块的特殊需求,有其他使用该接口的需要注意
|
|||
|
|
* 界面传递过来的CWorkFlowFile中的监控模块没有connection链接,
|
|||
|
|
* 因此,但是在返回的字符串中需要添加这个connection
|
|||
|
|
*
|
|||
|
|
*/
|
|||
|
|
std::string GetWorkflowJson(CWorkFlowFile* file) const;
|
|||
|
|
/**
|
|||
|
|
* @brief 提交指定的工作流(核心算法)
|
|||
|
|
* @param[in] jobInfo 待提交的工作流相关的提交信息
|
|||
|
|
* @param[in/out] errorMsg 校验错误信息
|
|||
|
|
* @pre 要先初始化errorMsg
|
|||
|
|
* @return 如果提交成功,返回true,否则返回false
|
|||
|
|
*/
|
|||
|
|
bool Submit(JobSubmitInfo *jobInfo, string &errorMsg);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 通过jobId获取实时监控模块的数据信息,解析工作流获取被监控模块信息和监控模块信息
|
|||
|
|
* @param jobId 作业ID
|
|||
|
|
* @return 监控模块数据信息
|
|||
|
|
*/
|
|||
|
|
static vector<TimeMonitorInfo> GetTimeMonitorInfos(const pai::ios::job::JobID& chainId);
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
WorkflowHelper(const WorkflowHelper &);
|
|||
|
|
WorkflowHelper & operator=(const WorkflowHelper &);
|
|||
|
|
|
|||
|
|
void InsertRunningDataRecords(const set<string> &dataPaths);
|
|||
|
|
void DelRunningDataRecords(const set<string> &dataPaths);
|
|||
|
|
void UpdateJobId2RunningDataRecord(const set<string> &dataPaths, const long long &jobId);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 将一个提交成功后的作业Id保存到工作流编译临时目录
|
|||
|
|
* @param jobid 作业的ID
|
|||
|
|
* @param strCompileTmpDir 工作流编译临时目录
|
|||
|
|
*/
|
|||
|
|
void SaveJobIdToLocalCompileTmp(const std::string& jobid,std::string strCompileTmpDir);
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
JobInfo jobinfo;
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endif
|