动态刷新数据的方法技术

技术编号:8683409 阅读:174 留言:0更新日期:2013-05-09 03:31
本发明专利技术公开一种动态刷新数据的方法,包括如下步骤:建立需要被刷新的目标函数与事件的关联关系,所述事件由操作触发;监听事件,当事件触发时,检测内存控制开关的状态;当所述内存控制开关处于第一状态时,根据所述触发的事件加载相应的数据到内存中的第一数据区,并调用所有关联的目标函数进行数据刷新;当所述内存控制开关处于第二状态时,根据所述触发的事件加载相应的数据到内存中的第二数据区,并调用所有关联的目标函数进行数据刷新。上述方法能够实现配置即时生效。

【技术实现步骤摘要】

本专利技术涉及数据处理,特别是涉及一种。
技术介绍
在一些公共服务终端上,为客户提供不同服务时,需要对终端设备或运行其上的业务软件进行相应的配置。传统的对配置信息的修改主要实现方式是“首先停止业务软件,再修改配置信息,然后再重新开启业务软件”。这样程序就可以按照新的配置来进行处理。这种修改配置的方式存在如下问题:1.操作步骤繁琐,需要先停止业务软件,然后再修改配置信息,最后再重新开启业务软件;2.当业务软件所提供的功能比较多时,而本次修改的配置信息对其他功能的运行没有影响时,若停止该业务软件会对其他功能的正常运作造成影响;3.对某些不允许中间暂停的程序则必须要等到业务结束时才可以修改配置;4.不能满足某些软件要求系统每天24小时不间断运行的要求。一种典型的需要持续运行的公共服务终端如轨道交通中的进出站闸机,进出站闸机可以通过修改配置来使其成为入口或出口。在轨道交通管理系统中,参数文件由清算管理中心(AFC clearing center, ACC)中心统一管理。当需要更新设备软件或者业务软件的参数配置时,首先由ACC生成参数文件后下发至各线路计算机(Line Computer, LC)中心,然后再由各LC中心转发至本线路下各个车站计算机(Station Computer, SC)。当各车站接收到LC发送的参数文件后,将参数文件转发至本站内的各个终端设备。各终端设备为了使接收到的参数信息立即生效,则必须重新启动设备软件,这样在重启过程中无法提供服务,会影响乘客的正常通行。
技术实现思路
基于此,有必要提供一种不需要停止业务软件即可使配置即时生效的。一种,包括如下步骤:建立需要被刷新的目标函数与事件的关联关系,所述事件由操作触发;监听事件,当事件触发时,检测内存控制开关的状态;当所述内存控制开关处于第一状态时,根据所述触发的事件加载相应的数据到内存中的第一数据区,并调用所有关联的目标函数进行数据刷新;当所述内存控制开关处于第二状态时,根据所述触发的事件加载相应的数据到内存中的第二数据区,并调用所有关联的目标函数进行数据刷新。在其中一个实施例中,所述第一数据区和第二数据区互为备用数据区。在其中一个实施例中,所述建立需要被刷新的目标函数与事件的关联关系的步骤在设备或业务软件初始化时完成;当初始化时,将内存控制开关置于第一状态或第二状态,以默认的数据执行刷新后即开始监听事件的步骤;在每次事件触发且成功加载数据后将内存控制开关的状态置于与所述第一状态或第二状态相对的第二状态或第一状态。在其中一个实施例中,所述监听事件的步骤具体包括:读取事件列表,所述事件列表包含由操作触发的事件;判断所述事件列表中是否有未处理事件,若是,则根据选择策略选择其中一个事件,同时置刷新标识为真;否则,置刷新标识为假,同时继续执行判断事件列表中是否有未处理事件的步骤。在其中一个实施例中,所述监听事件的步骤还包括:在加载数据的步骤执行成功时更新所述事件列表。在其中一个实施例中,还包括判断所述刷新标识是否为真的步骤,若所述刷新标识为真,则执行加载数据的步骤,否则休眠预设时间后继续判断所述刷新标识是否为真。在其中一个实施例中,所述预设时间为10毫秒。在其中一个实施例中,还包括判断数据是否加载成功的步骤,当数据加载成功时,将内存控制开关置为另一状态,并设置事件处理结果为成功;否则设置事件处理结果为失败,并转向判断所述刷新标识是否为真的步骤。在其中一个实施例中,所述根据触发的事件加载的数据为配置文件。上述方法通过事件触发机制来执行数据刷新操作,同时在每次刷新数据时,在另外的内存区域加载数据并执行数据刷新操作,使得程序既读取了新的配置数据,实现了配置的即时修改,又不会导致程序运行中断。附图说明图1和图2为一实施例的流程图;图3为内存区域划分及控制读写数据的示意图。具体实施例方式如图1和图2所示,为一实施例的流程图。该方法基于统一接口的函数调用和内存交换技术,实现进程不受中断地读取修改后的配置文件的目的,达到使配置即时生效的效果。如图3所示,该方法在内存中划分用于存储数据的第一数据区和第二数据区,并采用内存控制开关控制往第一数据区或第二数据区写数据(即保存数据),或者从第一数据区或第二数据区读数据。第一数据区和第二数据区互为备用数据区。该方法包括如下步骤:SllO:运行初始化线程。程序启动时调用初始化接口,进行初始化数据操作。初始化线程主要执行如下步骤。步骤Slll:建立需要被刷新的目标函数与事件的关联关系,所述事件由操作触发。以事件驱动的程序中,首先需要将目标函数注册,即建立需要被刷新的目标函数与事件的关联关系(或者添加与该事件对应的处理函数)。触发事件的操作包括修改设备或软件配置的操作等。当事件被触发时,相应的处理函数(目标函数)被调用,以完成相应的功能。在一个实施例中,利用函数指针注册目标函数。除此之外,当初始化时,还包括:步骤S113:将内存控制开关置于第一状态或第二状态。本步骤用于指定下一次加载的数据保存的内存区域。步骤S115:以默认的数据执行刷新操作。要刷新数据,首先需要加载数据到内存中,本步骤依赖于步骤S140,若步骤S140中加载数据操作成功,则执行步骤S117,否则停止。步骤S117:将内存控制开关置于与第一状态或第二状态相对的第二状态或第一状态。数据加载成功后,也即读入到内存相应数据区后,业务软件即可通过统一的调用接口来刷新数据。然后将内存控制开关置于相反的状态,也即下次事件触发时,将数据加载到内存的两个数据区中的另一个数据区。通常来说,系统中会有一个默认的主数据区,另一个则是备用数据区。例如本实施例中,第一数据区为主数据区,第二数据区为备用数据区。在程序初始化时,将数据默认加载到主数据区,因此步骤S113中也将内存控制开关置于第一状态,从而使得在刷新数据时能够从作为主数据区的第一数据区中读取用于刷新的数据。之后,内存控制开关的状态被置为第二状态。例如,在一个实施例中,初始化时,将内存控制开关的状态置为FALSE,然后加载并刷新数据。若成功加载,那么加载完成后将内存控制开关的状态置为TRUE。在步骤SllO的初始化完成之后,即开始步骤S120:运行事件扫描线程。事件扫描线程用于监听系统中产生的事件,并进行相关的处理。主要包括:步骤S121:检测事件列表中是否有未处理事件。若是,则执行步骤S123,否则执行步骤S125后返回步骤Sm。当需要刷新数据时,执行数据刷新操作,继而触发事件,不同的操作不断产生时,就会触发多个事件。多个事件根据触发时间,依次保存在事件列表中。若事件列表中存在未处理事件,则代表有刷新数据的操作,此时需要对该事件进行处理。本步骤通过循环检测的方式实现监听。步骤S123:根据选择策略选择其中一个事件,设置刷新标识为真。本实施例的选择策略即先到先得(FIFO),事件按照到来的时间依次从小到大编号,每次都选择编号最小的事件。步骤S125:设置刷新标识为假。上述的刷新标识用于告知数据加载线程是否有事件触发,从而决定是否加载数据。经过步骤S12f S125,事件扫描线程输出值为真或假的刷新标识。步骤S130:运行数据刷新线程。本步骤用于执行刷新数据的操作。包括如下步骤:步骤S131:检测刷新标识是否为真。若是,则执本文档来自技高网...

【技术保护点】
一种动态刷新数据的方法,包括如下步骤:建立需要被刷新的目标函数与事件的关联关系,所述事件由操作触发;监听事件,当事件触发时,检测内存控制开关的状态;当所述内存控制开关处于第一状态时,根据所述触发的事件加载相应的数据到内存中的第一数据区,并调用所有关联的目标函数进行数据刷新;当所述内存控制开关处于第二状态时,根据所述触发的事件加载相应的数据到内存中的第二数据区,并调用所有关联的目标函数进行数据刷新。

【技术特征摘要】
1.一种动态刷新数据的方法,包括如下步骤: 建立需要被刷新的目标函数与事件的关联关系,所述事件由操作触发; 监听事件,当事件触发时,检测内存控制开关的状态; 当所述内存控制开关处于第一状态时,根据所述触发的事件加载相应的数据到内存中的第一数据区,并调用所有关联的目标函数进行数据刷新; 当所述内存控制开关处于第二状态时,根据所述触发的事件加载相应的数据到内存中的第二数据区,并调用所有关联的目标函数进行数据刷新。2.根据权利要求1所述的动态刷新数据的方法,其特征在于,所述第一数据区和第二数据区互为备用数据区。3.根据权利要求1所述的动态刷新数据的方法,其特征在于,所述建立需要被刷新的目标函数与事件的关联关系的步骤在设备或业务软件初始化时完成;当初始化时,将内存控制开关置于第一状态或第二状态,以默认的数据执行刷新后即开始监听事件的步骤;在每次事件触发且成功加载数据后将内存控制开关的状态置于与所述第一状态或第二状态相对的第二状态或第一状态。4.根据权利要求1所述的动态刷新数据的方法,其特征在于,所述监听事件的步骤具体包括: ...

【专利技术属性】
技术研发人员:范滨胡宇舟李强杨兴城吴光冠孙立中
申请(专利权)人:高新现代智能系统股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1