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

252 lines
5.2 KiB
C++
Raw 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 ModuleInfomation.h
* @brief 模块信息类
*
* @author 黄军
* @date 2011-7-27
*/
#ifndef PAI_FRAME_WORKFLOWENGINE_MODULEINFORMATION_H
#define PAI_FRAME_WORKFLOWENGINE_MODULEINFORMATION_H
#include <iostream>
#include "Module.h"
#include "ModuleParameter.h"
// #include "ModuleConnection.h"
namespace pai {
namespace workflow {
using namespace pai::module;
/**
* @brief 模块信息类
*
*/
class PAI_WORKFLOWENGINE_EXPORT CModuleInformation
{
private:
CModule* m_oModule;
int m_iStepId;
/*
* 模块 id
* 字段不能为空
* */
int m_iId;
/*
* 模块类的namespace
* 字段不能为空
* */
std::string m_strNamespace;
/*
* 模块的名称也是模块类的class name
* 字段不能为空
* */
std::string m_strName;
//模块版本
std::string m_strVersion;
//模块qc,默认值等于false
bool m_bQC;
//模块断点默认值等于false
bool m_bBreakpoint;
std::string m_strComments;
//模块是否可用默认值等于true
bool m_bEnabled;
//模块的参数集合
CModuleParameter* m_ModParam;
//模块的
std::vector<CModuleInformation*> inModules;
std::vector<CModuleInformation*> outModules;
bool m_bBlankModule;//blank module or not
CModuleInformation & operator=(const workflow::CModuleInformation&);
public:
/**
* @biref 目前只能计算浅层的内存统计主要用于GUI排查内存增长问题
* @return 对象占用内存的大小
*/
unsigned long GetMemorySize();
/**@brief 设置 @ref CModule
* @param[in] module 模块
*/
//REMOVEME
void SetModule(CModule* module)
{
m_oModule = module;
}
/**@brief 获取@ref CModule 模块
* @return CModule*
*/
CModule* GetModule() const
{
return m_oModule;
}
/**
* @brief
*/
void SetStepID(int iStepID)
{
m_iStepId = iStepID;
}
/**@brief 获取模块在工作流中的位置
*@see CModule
*/
int GetStepID() const
{
return m_iStepId;
}
/**@brief 获取模块ID
* @return string 模块ID
*/
std::string GetModuleID() const
{
return m_oModule->GetMetaData()->GetID();
}
std::string GetClassName() const
{
if (m_oModule)
return m_oModule->GetClassName();
else
return "";
}
/**@brief 获取模块的元数据
* @return CModuleMetaData* 模块元数据对象
* @see CModuleMetaData
*/
const CModuleMetaData* GetModuleMetaData() const;
/**
* 设置模块参数
* @param[in] _parammmmeter 模块所对应的参数对象地址
* @see ModuleParameter
*/
void SetParameters(CModuleParameter* _parameter)
{
m_oModule->SetParameters(_parameter);
}
/**
* 获取模块参数
* @return ModuleParameter* 模块所对应的参数地址
* @see ModuleParameter
*/
CModuleParameter* GetModuleParameter() const;
// Deprecated methods
int GetId() const
{
return this->GetStepID();
}
void SetId(int iId)
{
SetStepID(iId);
}
std::string GetNamespace() const
{
return this->m_strNamespace;
}
void SetNamespace(const std::string& strNamespace)
{
this->m_strNamespace = strNamespace;
}
//REMOVEME
void SetName(const std::string& strName)
{
this->m_strName = strName;
}
std::string GetName() const;
bool GetQC() const
{
return this->m_bQC;
}
void SetQC(bool bQC)
{
this->m_bQC = bQC;
}
bool GetBreakpoint() const
{
return this->m_bBreakpoint;
}
void SetBreakpoint(bool bBreakpoint)
{
this->m_bBreakpoint = bBreakpoint;
}
std::string GetComments() const
{
return this->m_strComments;
}
std::string GetComments2() const;
void SetComments(const std::string& strComments)
{
this->m_strComments = strComments;
}
std::string GetVersion() const
{
return this->m_strVersion;
}
void SetVersion(const std::string& strVersion)
{
this->m_strVersion = strVersion;
}
bool GetEnabled() const
{
return this->m_bEnabled;
}
void SetEnabled(bool bEnabled)
{
this->m_bEnabled = bEnabled;
}
/**
* @brief Get whether it is blank module or not
*/
bool IsBlankModule() const;
/**
* @brief Set whether it is blank module or not
*/
void SetBlankModule(bool bBlankModule);
//REMOVEME
CModuleParameter* GetModuleParam()
{
return this->m_ModParam;
}
void Print();
std::string static ParamItemTypeToString(ParameterType type);
CModuleInformation();
CModuleInformation(const workflow::CModuleInformation&);
CModuleInformation(const std::string& moduleClass);
virtual ~CModuleInformation();
/**
* @brief 克隆函数
* @param srcModuleInfo 克隆的对象
*/
void Clone(const workflow::CModuleInformation& srcModuleInfo);
/**
* @brief 比较两个模块信息
*
*/
friend bool operator ==(CModuleInformation &info, CModuleInformation &info2);
};
}
}
#endif