/************************************************************************* 【文件名】 CellBase.h 【功能模块和目的】 节点基类头文件 【开发者及日期】 郑石诺 2015/01/24 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ #pragma once class CIvrFlow; class IFlowDataProvider; /************************************************************************* 【类名】 CCellBase 【功能】 【接口说明】 节点基类 【开发者及日期】 郑石诺 2015/01/24 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ class CCellBase { public: CCellBase(void); CCellBase(CCellBase& CellBase); virtual ~CCellBase(void) = 0 {} // 对外接口 static CCellBase* createCell(const CString& a_Name); const CString& note(void) const { return m_Note; } // 获取Cell描述 int position(void) const { return m_Pos; } // 获取节点编号 CIvrFlow*& assoIvrFlow(void) { return m_pIvrFlow; } // 保存关联的流程指针 ULONG assoCallID(void); // 返回关联CallID virtual int onOpResultReturn(CPduEntity *a_pPduEntity) { return CELL_OP_ERROR; } // 处理返回命令 virtual void onSubFLowEnd(void) { } virtual LPCTSTR name(void) const = 0; // 获取Cell名称 virtual int operate(void) = 0; // 执行Cell virtual CCellBase * copy(void) = 0; // Cell拷贝 virtual bool fillData(IFlowDataProvider& Provider) = 0; // Cell解析 virtual int maxWaitingTime(void) const = 0; // 避免流程吊死的最大等待间隔,以秒为单位 protected: void _getCellInfo(CString& InfoBuffer); // 获取Cell信息 protected: int m_Pos; // 在一个流程文件中的编号 CString m_Note; // 在IVR流程文件中的标题 CIvrFlow* m_pIvrFlow; // 流程指针 };