/* * @file ParameterValidateThread.h * @brief ParameterValidateThread该线程用来在后台执行模块参数检查. * @date: 2012-10-12 * @author: limengzhuo */ #ifndef PAI_FRAME_WORKFLOWVIEW_PARAMETERVALIDATETHREAD_H #define PAI_FRAME_WORKFLOWVIEW_PARAMETERVALIDATETHREAD_H #include #include // #include #include "WorkflowSpecialTypes.h" #include "ModuleCheckResult.h" #include "ModuleInformation.h" namespace pai { namespace objectmodel{ class PaiWorkflowDataModel; } namespace graphics2d { class WorkflowSceneManager; /** * @class CParameterValidateThread * @brief 该线程用来在后台执行模块参数检查 */ class CParameterValidateThread:public QObject, public QRunnable { Q_OBJECT public: /** * @brief 构造函数 * @param pModuleInfo 模块信息对象句柄 * @param eventSource 启动验证线程的来源 */ CParameterValidateThread(pai::workflow::CModuleInformation* pModuleInfo, ValidateEventSource eventSource = ValidateEventSource_FromParameterItemChanged); /** * @brief 析构函数,停止线程运行 */ virtual ~CParameterValidateThread(); /** * @brief 得到该线程验证的模块 */ pai::workflow::CModuleInformation* GetModuleInfo() const; /** * @brief 得到参数验证结果 */ pai::module::CModuleCheckResult* GetCheckResult(); /** * @brief 得到参数验证检查的总结果 */ bool GetModuleCheckResult(){return m_bmoduleCheckResult;}; /** * @brief 得到验证的事件源 */ ValidateEventSource GetValidateEventSource(); /** * @brief 设置验证事件源 */ void SetValidateEventSource(ValidateEventSource eventSource); void SetModuleInfo(pai::workflow::CModuleInformation *pModuleInfo); signals: void finished(); protected: /** * @brief 执行参数检查,并返回检查结果 */ virtual void run(); private: pai::workflow::CModuleInformation* m_pModuleInfo;//模块信息对象句柄 pai::module::CModuleCheckResult m_moduleCheckResult;//参数检查结果 //测井项目在部分输入曲线不存在的情况下也是可以执行的 bool m_bmoduleCheckResult;//检查的总结果,有时候m_moduleCheckResult有提示也不代表模块不能够执行 ValidateEventSource m_validateEventSource;//表示验证的事件源 }; class SubmitValidateThread: public QObject, public QRunnable { Q_OBJECT public: /** * @brief 构造函数 * @param pWorkflow 工作流模型 * @param num 设置工作流pWorkflow启动的第几个验证线程 */ SubmitValidateThread(pai::objectmodel::PaiWorkflowDataModel* pWorkflow, int num, WorkflowSceneManager *pSceneManager); /** * @brief 析构函数,停止线程运行 */ virtual ~SubmitValidateThread(); /** * @brief 得到检查结果 */ bool GetPermitSubmit(); /** * @brief 得到序号 */ int GetOrderNumber(); signals: void finished(); protected: /** * @brief 执行参数检查,并返回检查结果 */ virtual void run(); private: bool m_bPermitSubmit;//检查结果,允许或者不允许提交作业 int m_OrderNumber;//序号 pai::objectmodel::PaiWorkflowDataModel* m_pWorkflow;//工作流模型指针 WorkflowSceneManager *m_pSceneManager; }; } } #endif