system: [SYSTEM]

user: 4. 调度与控制模块的设计 按照功能点、处理逻辑和流程设计上的需要，调度与控制模块可分为对象管理模块、数据管理模块、注册管理模块、回调管理模块四个子功能模块，见图3。 4.1. 对象管理模块 对象管理模块负责其他各模块的创建、初始化、销毁、释放资源的过程，并且在整个软件运行期间，对这些组件对象进行维护，传递主程序对这些模块的调用请求，对象管理模块与其他模块关系描述见表1。 主框架创建IUICtrlCallBack回调接口对象，并在系统初始化时传入，由对象管理模块保存，调度与控制模块通过该对象向主框架主动发送请求。对象管理模块保存了调度与控制内部所有被创建的对象的指针，并且提供了访问这些对象的接口函数，作为输出数据可以被其他模块访问。 对象管理模块中的CUICtrlManagerClass类型对象在调度与控制模块的生存周期内有效且唯一，负责创建外部组件对象以及模块内部的全生命周期对象。CTopologManager、CAlertMonitorCallBack、CAccountInfoManageCallBack、CAreaManager等类型的对象作为CUICtrlManagerClass类的成员数据存在，通过CUICtrlManagerClass类的InitUICtrlObject()函数，创建和初始化其他各外部模块，并且负责建立起模块间的回调关系，见图4。 图3. 模块功能分解 Table 1 Object management module relationship description diagra 编号 描述信息 属性/函数名/变量 类名/文件名 ① 接收框架程序的调用以 及向框架程序发送请求 调度与控制模块提供的 所有外部接口及函数 调度与控制模块提供的 所有外部接口及函数的相关文件 ② 管理和维护注册管理模块对象， 传递框架程序的调用命令 注册管理模块相关类 注册管理模块相关类的实现文件 ③ 管理和维护数据管理模块对象， 传递框架程序的调用命令 数据管理模块相关类 数据管理模块相关类的实现文件 ④ 管理和维护回调管理模块对象， 传递框架程序的调用命令 回调管理模块相关类 回调管理模块相关类的实现文件 表1. 对象管理模块关系描述图 4.2. 数据管理模块 数据管理模块负责与数据库进行交互，管理并维护在软件运行周期内的框架程序产生的所有数据，包括区域信息、物理网络信息、设备对象、日志信息。数据管理模块对这些数据进行组织，并负责实现管理这些对象的处理流程。同时数据管理模块是调度与控制接口的操作实现体，框架通对组件的调用，通过该子模块实现。该模块的输入项包含从EDDL管理模块、报警管理模块、台账管理模块中获取的相关数据信息，输出项是经过处理供其他各模块使用的相关数据等，如区域信息、网络信息、设备对象信息等。数据管理模块关系描述见表2。 4.2.1. 区域信息的管理 区域信息指由框架程序进行区域组态时产生的数据，涉及的操作过程包括添加、删除、修改、保存和恢复等。为了实现界面和逻辑数据的分离，上层框架不负责维护任何区域信息对象的数据，只把相应的操作请求发送给调度与控制模块，然后由该模块负责对区域节点对象的添加、删除、重修改、保存、读取等操作，调度与控制模块会建立一个数据管理对象专门负责维护这些数据，在必要时，框架通过组件的接口函数获取这些数据的指针，将来这些资源的释放也由调度与控制组件实现，和上层无关。 图4. 模块功能分解 Table 2 Data management module relationship description diagra 编号 描述信息 属性/函数名/变量 类名/文件名 ① 调用对象管理模块提供的接口函数， 获取相应对象的指针 对象管理模块提供的GetXXXObiPtr()函数 CAreaManager CEDDLDevice CEDDLDeviceExplor CEDDLDeviceStatus CEDDLNetWorkPage CNetWorkManagerDlg CTopologManager CXMLTree 表2. 数据管理模块关系描述图 4.2.2. 网络信息的管理 网络信息指由框架程序进行物理网络组态时产生的数据，包括物理网络的拓扑结构信息、设备对象等。为了实现界面和逻辑数据的分离，与区域信息管理实现的思路相同，上层框架不负责维对网络信息的维护，也是通过一系列的组件接口，委托调度与控制组件执行相应的操作。组件内部建立了一个专门用来维护网络拓扑结构的类，它和上层框架显示的网络结构是一致的，在操作时二者保持一致，通过接口函数，上层框架可随时获取这些信息。将来这些资源的释放也由调度与控制组件实现，和上层无关。 4.2.3. 设备对象的控制流程 调度与控制组件拥有所有设备对象的指针，它通过调用EDDL管理对象提供的接口函数，能够控制设备对象的行为，如上线、上载参数、打开设备参数窗口等操作。调度控制对象在接收框架发送来的操作命令后，向EDDL管理组件传递这些请求，实现对设备操作的目的。 4.2.4. 数据存取的管理 软件运行过程中产生的数据要被保存到数据库中，包括区域组态信息、网络组态信息、日志信息等。其中区域组态信息可直接调用数据库提供的操作接口进行保存或读取。日志信息则直接调用数据库提供的保存日志的接口，写到数据库中。 4.3. 注册管理模块 注册管理模块用来控制和管理软件的注册授权，提供了授权限制、软件注册验证和管理等功能。注册管理模块关系描述见表3。 软件分为注册授权状态和非注册授权状态，如果是非注册授权状态在软件启动时开始计算演示运行时间，限制添加智能仪表数量。软件使用过程需要考虑智能仪表数量限制，加密算法需要把用户名、授权点数、当前机器的机器码实现加密。在注册过程中只要有一个环节信息不正确，生成的注册码是错误的，注册授权就会失败。 软件启动时，首先判断软件是否在本机上被授权使用，注册管理模块从本地注册表中寻找登记的注册信息，包括机器码、授权码、用户名、授权点数。然后在程序中经过一定的加密算法动态生成机器码，并与从数据表中获得的机器码比较是否相同，不同表示注册信息非法并返回未注册。如果机器码正确，则调用加密算法模块，把由用户名、授权点数、机器码、授权码组合成的信息段进行加密，动态生成正确的授权码，然后和从数据库读到的授权码进行比较，相同则返回已注册，否则返回软件未注册。软件注册管理流程见图5。 4.4. 回调管理模块 回调管理模块包含了调度与控制模块实现的所有回调接口类，回调接口是外部模块与本模块交互的渠道，通过回调接口，外部模块可以向本模块发送请求，涉及报警管理模块、台账管理模块。回调管理模块关系描述见表4。 Table 3 Registration management module relationship descriptio 编号 描述信息 属性/函数名/变量 类名/文件名 ① 对象管理模块创建并保存 注册管理对象的指针，并 为其他模块提供访问该对 象的调用接口 GetRegiterObjPtr CRegisterDlg m_RegisterDlg CUICtrlManagerClass CRegisterDlg 表3. 注册管理模块关系描述图 Table 4 Callback management module relationship description diagra 编号 描述信息 属性/函数名/变量 类名/文件名 ① 与报警模块、台账模块和诊断 与报警插件的回调过程 CaccountInfoManageCallBack 类中的函数实现了和报警管理模块间的回调。 CAlertMonitorCallBack 类中的函数实现了和台账管理模块间的回调。 CDeviceStatusManageCallBack 类中的函数实现了和诊断与报警插件的回调。 CAccountInfoManageCallBack; CAlertMonitorCallBack； CDeviceStatusManageCallBack; ② 回调接口对象被对象管理模块管理 作为CUICtrlManagerClass类中的 m_AccountInfoManageCallBack变量和 m_AlertMonitorCallBack变量 m_DeviceStatusManageCallback变量 CUICtrlManagerClass 表4. 回调管理模块关系描述图 图5. 注册模块管理流程 回调接口为台账管理模块和报警管理模块定义的接口，调度与控制模块通过引入继承并实现。在本组件初始化时，分别定义这些接口类的对象，并通过台账和报警模块的初始化函数将这些对象指针分别 传递给它们，供其在需要时调用，这样就建立起了关联关系，见图6。