logplus/Workflow/WFEngine/WorkflowEngine/include/CWorkflowService.h

137 lines
4.9 KiB
C
Raw Normal View History

2026-01-16 17:18:41 +08:00
/*
* CWorkflowService.h
*
* Created on: 2011-8-23
* Author: dev
*/
#ifndef PAI_FRAME_WORKFLOWENGINE_CWORKFLOWSERVICE_H
#define PAI_FRAME_WORKFLOWENGINE_CWORKFLOWSERVICE_H
#include <string>
#include "WorkFlowFile.h"
#include "WorkflowGenerator.h"
#include "WorkflowFileParser.h"
#include "WorkflowResourceMgr.h"
#include "../../JobManager/client/include/JobStatus.h"
#include "../../IOService/include/WorkflowJob.h"
//using workflow::generator::CWorkflowGenerator;
namespace pai {
namespace workflow {
/**
* @brief
*/
struct JobInfo
{
std::string workflowName;
std::string jobId;
JobStatus state;
JobInfo():workflowName(), jobId(), state(){}
};
/**
* CWorkflowService为工作流子系统内部和外部接口定义及实现类
*/
class PAI_WORKFLOWENGINE_EXPORT CWorkflowService {
public:
CWorkflowService();
virtual ~CWorkflowService();
/*
* @brief CWorkFlowFile对象
* @param jsonfilename
* @return jsonfilename对应的CWorkFlowFile对象
*/
CWorkFlowFile& ReadWorkflow(const std::string& jsonfilename);
/**
* @brief CWorkFlowFile对象至jsonfilename文件
* @param jsonfilename
* @param file
* @return truefalse
*/
bool SaveWorkflow(const std::string& jsonfilename, CWorkFlowFile* file);
/**
* @Deprecated
* @brief
* @param jsonfilename
* @param styleJsonFileName
* @param[in/out] errorMsg
* @pre errorMsg
* @return truefalse
*/
bool Submit(const std::string& jsonFileName,const std::string& styleJsonFileName,std::string& errorMsg);
/**
* @brief ()
* @param jsonfilename
* @param styleJsonFileName
* @param[in/out] job job信息
* @param[in/out] errorMsg
* @pre errorMsg
* @return truefalse
*/
bool Submit(const std::string& jsonFileName,const std::string& styleJsonFileName,pai::ios::job::WorkflowJobPtr job,std::string& errorMsg);
/**
* @brief
* @param jsonfilename
* @return 退truefalse
*/
bool RunLocally(const std::string& jsonfilename);
/**
* @brief
* @param templatefilename
* @param file CWorkFlowFile对象
* @return true, false
*/
bool SaveAsTemplate(const std::string& templatefilename, CWorkFlowFile* file);
/**
* @brief
* @param templatefilename
* @return CWorkFlowFile对象
*/
CWorkFlowFile& ReadFromTemplate(const std::string& templatefilename);
private:
/**
* @brief Id保存到工作流编译临时目录
* @param jobid ID
* @param strCompileTmpDir
*/
void SaveJobIdToLocalCompileTmp(const std::string& jobid, std::string strCompileTmpDir);
/**
* @brief json文件拷贝到工作流编译临时目录
* @param jsonfilename json文件的路径
* @param strCompileTmpDir
*/
bool SaveJsonToLocalCompileTmp(const std::string& jsonfilename,const std::string& strCompileTmpDir);
/**
* @brief
* @param resource
*/
bool CopyDebugFileToCompilerTmp(const SWorkflowResource& resource);
/**
* @brief
*/
bool SubmitToLocal(const SWorkflowResource& resource,std::string& errorMsg);
/**
* @brief jar作业到集群
*/
bool SubmitToCluster(CWorkFlowFile* workflowfile, const std::string& jsonFileName,const std::string& styleJsonFileName, SWorkflowResource resource,pai::ios::job::WorkflowJobPtr job, std::string& errorMsg);
CWorkflowService(const CWorkflowService & service);
CWorkflowService & operator=(const CWorkflowService & service);
/**
//FIXME *@brief 本地工作流输出数据建立索引(已经可以成功建立,现注掉等索引功能完善)
*/
// bool GenerateLocalOutputFilesIndex(std::vector<std::string>outputPaths,std::string &errorMessage);
private:
// CWorkflowFileParser* parser;
// CWorkflowGenerator* generator;
// CWorkFlowFile* workflow;
JobInfo jobinfo;
};
}
}
#endif