79 lines
1.9 KiB
C++
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;
|
|
};
|