#pragma once /* * @brief 顺控异常恢复 * @author sjq * @date 五月 2018 */ #include class CNodeSeq; class CNodeAction; class CNodeFunc; class CRecoverNode; class CRecoverNodeContainer; class CModuleNodeMngr; class CModuleDbAccessMngr; class CMbCommunicateInfo; class CModuleExecuteMngr; class CSeqAnomalyRecoverPro { public: CSeqAnomalyRecoverPro( CModuleExecuteMngr& executer, CMbCommunicateInfo& mb, CModuleDbAccessMngr& access); ~CSeqAnomalyRecoverPro(); //创建所有顺控处理从运行表中 void recoverExecuter( const CRecoverNodeContainer& cntr, const CModuleNodeMngr& nodeMngr); private: bool doRecoverNode(const CRecoverNode& recover, CNodeSeq& seq); //已经触发 bool recoverTrigged(const CRecoverNode& recover, CNodeSeq& seq); //结束运行 bool recoverEnd(const CRecoverNode& recover, CNodeSeq& seq); //恢复运行 bool recoverRunning(const CRecoverNode& recover, CNodeSeq& seq); //无法找到原结构 bool recoverNoFind(const CRecoverNode& recover); //时标不一致 bool recoverTimeFlagDif( const CRecoverNode& recover, CNodeSeq& seq, const std::string& erroStr); //检测恢复数据是否一致 bool checkDataDif( const CRecoverNode& recover, CNodeSeq& seq, std::string& retStr); bool checkDataDif( const CRecoverNode& recover, CNodeFunc& func, std::string& retStr); bool checkDataDif( const CRecoverNode& recover, CNodeAction& action, std::string& retStr); //创建符合条件的运行节点的处理流程 bool createExecuter(CNodeSeq& seq,const CRecoverNode& recover); private: CMbCommunicateInfo& m_objMbCommInfo; CModuleDbAccessMngr& m_objAccessMngr; CModuleExecuteMngr& m_objExecuterMngr; };