HM-SPMS/product/src/application/sequence_server/CSeqAnomalyRecoverPro.h

79 lines
1.9 KiB
C++

#pragma once
/*
* @brief 顺控异常恢复
* @author sjq
* @date 五月 2018
*/
#include <string>
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;
};