logplus/Workflow/WFEngine/Module/include/ModuleParameter.h
2026-01-16 17:18:41 +08:00

208 lines
6.2 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @file ModuleParameter.h
* @brief 文件定义了与模块参数相关的类
* @author dev
* @date 2011-4-29
*/
#ifndef PAI_FRAME_MODULEAPI_MODULEPARAMETER_H
#define PAI_FRAME_MODULEAPI_MODULEPARAMETER_H
#include "Turtle.h"
#include "ParameterItem.h"
#include <string>
#include <vector>
namespace Json {
class Value;
}
namespace pai {
namespace module {
/**
* @class CModuleParameter
* @brief 类<code>CModuleParameter</code>封装模块所需要的参数信息,它是所有模块参数的基类。
*/
class PAI_MODULE_EXPORT CModuleParameter {
public:
/**
* @brief 构造函数
*/
CModuleParameter();
/**
* @brief 拷贝构造函数
*/
CModuleParameter(const CModuleParameter& srcParameter);
/**
* @brief 虚析构函数
*/
virtual ~CModuleParameter();
/**
* @brief 克隆函数
* @param srcParameter 克隆的对象
*/
void Clone(const CModuleParameter& srcParameter);
/**
* @brief 重载相等符号==,判断两个参数是否相等
* @param[in] otherItem 对比对象
*/
bool operator==(const CModuleParameter& otherParameter) const;
/**
* @brief 设置工作流id
* @param[in] id 工作流id
*/
virtual void SetWorkflowId(std::string id) { workflow_id = id; }
/**
* @brief 获取工作流id
*/
virtual std::string GetWorkflowId() { return workflow_id; }
/**
* @brief 设置本地临时目录
*/
void SetLocalTempDirectory(std::string tmp_dir) { local_tmp_dir = tmp_dir; }
/**
* @brief 获取本地临时目录
* @return 本地临时目录
*/
std::string GetLocalTempDirectory() const{ return local_tmp_dir; }
/**
* @brief 设置HDFS临时目录
* @param[in] tmp_dir HDFS临时目录
*/
void SetHDFSTempDirectory(std::string tmp_dir) { hdfs_tmp_dir = tmp_dir; }
/**
* @brief 获取HDFS临时目录
* @return 获取HDFS临时目录
*/
std::string GetHDFSTempDirectory() const { return hdfs_tmp_dir; }
/**
* @brief 添加参数项
* @param[in] item 参数项
*/
void AddParameterItem(const CParameterItem& item);
/**
* @brief 添加参数项
* @param[in] paramId 是参数名称
* @param[in] paramType 是参数类型
* @param[in] paramStringValue 是参数值
*/
void AddParameterItem(QString& paramId,const ParameterType paramType,const std::string& paramStringValue);
void AddParameterItem(const std::string& paramId,const ParameterType paramType,const std::string& paramStringValue);
/**
* @brief 删除参数项
* @param paramId是参数Id
*/
void RemoveParameterItem(const std::string& paramId);
/**
* @brief 获取参数项的个数
* @return 参数项的个数
*/
int GetParameterItemCount() const;
/**
* @brief 获取参数项索引
* @param[in] strItemName 参数名字
* @return 参数项索引
*/
int GetParamItemIndex(const std::string& strItemName) const;
/**
* @brief 获取参数项
* @param[in] iIndex 参数索引
* @return 参数项<code>CParameterItem</code>指针
*/
CParameterItem* GetParameterItem(int iIndex);
/**
* @brief 获取参数项
* @param[in] strItemName 参数名字
* @return 参数项<code>CParameterItem</code>指针
*/
CParameterItem* GetParameterItem(const std::string& strItemName);
/**
* @brief 获取所有的参数项
* @return 所有参数项的集合
*/
std::vector<CParameterItem> GetParameterItems() const;
/**
* @brief 获取参数项的所有分类名字
* @param[out] vecCategoryNames 所有类型名字的集合
*/
void GetCategoryNames(std::vector<std::string>& vecCategoryNames);
/**
* @brief 得到根参数项
* @return 根参数项<code>CCompositeParameterItem</code>
*/
CCompositeParameterItem* GetRootParameterItem() const;
/**
* @brief 根据参数项的类别获取参数项
* @param[in] strCategory 参数项类别名称
* @return 符合条件的参数项集合
*/
std::vector<CParameterItem*> GetParameterItemsByCategory(const std::string& strCategory) const;
//REMOVEME
void SetClass(std::string clazz) { m_strClass = clazz; }
std::string GetClass() const { return m_strClass; }
/**
* @brief 从Json文件中读取参数信息
* @param bAmendID 是否需要修改ID及其子孙参数的参数项ID
* @exception pai::error::runtime_error 读取失败时抛出异常
*/
// void LoadFromJson(const Json::Value& root,bool bAmendID = false);
/**
* @brief 将参数信息存入Json文件中
* @param root Module节点
* @exception pai::error::runtime_error 保存失败时抛出异常
*/
// void SaveToJson(Json::Value& root);
/**
* @brief 打印参数内容
*/
// void Print();
/**
* @brief 判断所有参数项是否已经都被赋了可用的值
* @param[out] completeIndex 参数所有参数项的填写完备程度
* @return 所有参数项已经都被赋了可用的值则返回true否则返回false
*/
bool IsReady(ParameterCompleteIndex& completeIndex) const;
/**
* @brief 设置工作流导入时的项目工区路径
* @param[in] importPath 工作流导入时的项目工区路径
*/
void SetImportPath(std::string importPath);
private:
/**
* @brief 从Json节点中读取参数项信息
* @param paramJsonNode Json节点对应一个参数项
* @param pParentItem 上述Json节点对应的参数项的父参数项
* @param bAmendID 是否需要修改ID及其子孙参数的参数项ID
*/
// void _LoadFromJson(const Json::Value& paramJsonNode, CCompositeParameterItem* pParentItem,bool bAmendID);
/**
* @brief 将参数项信息存入Json节点中
* @param paramJsonNode Json节点对应一个参数项
* @param pParentItem 上述Json节点对应的参数项
*/
// void _SaveToJson(Json::Value& paramJsonNode, CParameterItem* pItem);
protected:
std::string workflow_id; /**< 工作流对应的标识符*/
std::string local_tmp_dir; /**< 工作流对应的本地临时读写目录*/
std::string hdfs_tmp_dir; /**< 工作流对应的HDFS临时读写目录*/
CCompositeParameterItem m_rootParameterItem; /**< 根参数项 */
//REMOVEME
std::string m_strClass;
private:
std::string m_importPath; //工作流导入时的项目工区路径
};
}
}
#endif