一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

状态数据管理方法、装置及系统与流程

2022-06-12 02:48:55 来源:中国专利 TAG:


1.本发明涉及互联网技术领域,具体而言,涉及一种状态数据管理方法、装置、系统、计算机可读存储介质及电子设备。


背景技术:

2.网站通常是由两部分组成:前端和后端。前端处理页面的结构(html)、样式(css)以及用户与网站的交互(js)等,后端则为网站提供数据的存储、更新、查询以及删除等操作。在进行一个网站开发时,通常流程为访问一个url地址,后端程序从数据库读取数据后拼接在到页面上再返回给浏览器进行展示。
3.在用户与网站的交互过程中,会产生许多状态,如用户信息、站内消息等。而这些状态通常情况下网站各个页面、模块都可能会用到,因此,js的全局状态管理十分重要。
4.目前,通常管理方法是将用户操作过程中产生的状态数据存储在数据库中,每次收到浏览器请求后便从数据库中读取上一次用户产生的状态数据,拼接到页面上返回给浏览器。这些状态数据中,除了需要持久化存储的数据外,如用户信息,操作日志等,还存在大量的用户操作过程中产生中间状态,如某个状态控制页面上的某个元素展示隐藏,这些中间状态的数据则为非必要存储数据,将其存储在数据库会占用数据库的容量,并且每次返回的新的html文件都会携带上一次用户产生的中间状态数据,也会造成代码的冗余。


技术实现要素:

5.鉴于此,本发明提出了一种状态数据管理方法、装置及系统,以解决现有技术中非必要存储的状态数据占用数据库容量并导致代码冗余的问题。
6.第一方面,本发明实施例提供了一种状态数据管理方法,应用于调度器,包括:接收并转发状态数据调度命令至调度命令处理方法接口,以供所述调度命令处理方法接口根据所述状态数据调度命令进行业务逻辑处理,并将处理后状态数据通知返回至所述调度器;接收所述处理后状态数据通知,基于所述处理后状态数据通知更新状态数据仓库中的数据;在所述状态数据仓库中的数据更新完毕后,发送消息以通知订阅者清单中的订阅者状态数据仓库中数据更新完毕。
7.进一步地,所述方法还包括:预先响应于b组件的发起订阅请求或取消订阅请求,将所述b组件加入或移出所述订阅者清单。
8.进一步地,若所述订阅者清单中包括所述b组件,则所述b组件在收到所述状态数据仓库中数据更新完毕的消息后,获取所述状态数据仓库中更新后的数据以进行页面展示。
9.进一步地,所述状态数据调度命令由a组件发出。
10.进一步地,所述状态数据调度命令包括命令标识和命令数据。
11.第二方面,本发明实施例还提供了一种状态数据管理方法,应用于调度命令处理方法接口,包括:接收调度器转发的状态数据调度命令;根据所述状态数据调度命令,进行
业务逻辑处理;将处理后状态数据通知发送至所述调度器以供所述调度器更新状态数据仓库中的数据,并在数据更新完毕后发送消息以通知订阅者清单中的订阅者状态数据仓库中数据更新完毕。
12.进一步地,所述方法还包括:调度器预先响应于b组件的发起订阅请求或取消订阅请求,将所述b组件加入或移出所述订阅者清单。
13.进一步地,若所述订阅者清单中包括所述b组件,则所述b组件在收到所述状态数据仓库中数据更新完毕的消息后,获取所述状态数据仓库中更新后的数据以进行页面展示。
14.进一步地,所述状态数据调度命令由a组件发送至所述调度器。
15.进一步地,所述状态数据调度命令包括命令标识和命令数据。
16.第三方面,本发明实施例还提供了一种状态数据管理装置,应用于调度器,包括:命令转发单元,用于接收并转发状态数据调度命令至调度命令处理方法接口,以供所述调度命令处理方法接口根据所述状态数据调度命令进行业务逻辑处理,并将处理后状态数据通知返回至所述调度器;数据更新单元,用于接收所述处理后状态数据通知,基于所述处理后状态数据通知更新状态数据仓库中的数据;消息发送单元,用于在所述状态数据仓库中的数据更新完毕后,发送消息以通知订阅者清单中的订阅者状态数据仓库中数据更新完毕。
17.进一步地,所述装置还包括订阅单元,用于预先响应于b组件的发起订阅请求或取消订阅请求,将所述b组件加入或移出所述订阅者清单。
18.进一步地,若所述订阅者清单中包括所述b组件,则所述b组件在收到所述状态数据仓库中数据更新完毕的消息后,获取所述状态数据仓库中更新后的数据以进行页面展示。
19.进一步地,所述状态数据调度命令由a组件发出。
20.进一步地,所述状态数据调度命令包括命令标识和命令数据。
21.第四方面,本发明实施例还提供了一种状态数据管理装置,应用于调度命令处理方法接口,包括:命令接收单元,用于接收调度器转发的状态数据调度命令;业务处理单元,用于根据所述状态数据调度命令,进行业务逻辑处理;通知发送单元,用于将处理后状态数据通知发送至所述调度器以供所述调度器更新状态数据仓库中的数据,并在数据更新完毕后发送消息以通知订阅者清单中的订阅者状态数据仓库中数据更新完毕。
22.进一步地,所述装置还包括订阅单元,用于调度器预先响应于b组件的发起订阅请求或取消订阅请求,将所述b组件加入或移出所述订阅者清单。
23.进一步地,若所述订阅者清单中包括所述b组件,则所述b组件在收到所述状态数据仓库中数据更新完毕的消息后,获取所述状态数据仓库中更新后的数据以进行页面展示。
24.进一步地,所述状态数据调度命令由a组件发送至所述调度器。
25.进一步地,所述状态数据调度命令包括命令标识和命令数据。
26.第五方面,本发明实施例还提供了一种状态数据管理系统,包括:调度器,用于接收并转发状态数据调度命令至调度命令处理方法接口,以及接收调度命令处理方法接口返回的处理后状态数据通知,并基于所述处理后状态数据通知更新状态数据仓库中的数据,
以及在所述状态数据仓库中的数据更新完毕后,发送消息以通知订阅者清单中的订阅者状态数据仓库中数据更新完毕;调度命令处理方法接口,用于接收状态数据调度命令,并根据所述状态数据调度命令,进行业务逻辑处理,以及将处理后状态数据通知返回至所述调度器;状态数据仓库,用于存储状态数据,以及基于所述处理后状态数据通知更新状态数据。
27.进一步地,所述系统还包括b组件,用于:预先发起订阅请求或取消订阅请求至所述调度器,以供所述调度器将b组件加入或移出所述订阅者清单。
28.进一步地,若所述订阅者清单中包括b组件,则b组件还用于:在收到所述状态数据仓库中数据更新完毕的消息后,获取所述状态数据仓库中更新后的数据以进行页面展示。
29.进一步地,所述系统还包括a组件,用于发送状态数据调度命令至所述调度器。
30.进一步地,所述状态数据调度命令包括命令标识和命令数据。
31.第六方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现本发明各实施例提供的方法。
32.第七方面,本发明实施例还提供了一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现本发明各实施例提供的方法。
33.本发明实施例提供的状态数据管理方法、装置及系统,通过调度器接收并转发状态数据调度命令至调度命令处理方法接口,并接收调度命令处理方法接口返回的处理后状态数据通知,以及基于处理后状态数据通知更新状态数据仓库中的数据,并发送消息通知订阅者清单中的订阅者状态数据仓库中数据更新完毕,可以实现临时及中间状态数据等非必要存储的状态数据无需存储到数据库中,减少数据库冗余数据的同时也减少了后端冗余代码,后端研发可专注于业务逻辑的开发而无需关心中间状态数据的管理工作,有助于提高研发效率;采用调度命令处理方法接口,开发者用户可自己编写调度命令处理逻辑,给予开发者用户较大的自由度和灵活性,系统高度可扩展,便于团队协作和维护,适合大型项目开发。
附图说明
34.图1为本发明一个示例性的实施例提供的状态数据管理系统的架构示意图;
35.图2为本发明一个示例性的实施例提供的状态数据管理方法的流程图;
36.图3为本发明一个示例性的实施例提供的状态数据管理方法的流程图;
37.图4为本发明一个示例性的实施例提供的状态数据管理装置的结构示意图;
38.图5为本发明一个示例性的实施例提供的状态数据管理装置的结构示意图;
39.图6为本发明一个示例性的实施例提供的电子设备的框图。
具体实施方式
40.现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。
41.除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。
42.图1为本发明一个示例性的实施例提供的状态数据管理系统的架构示意图。
43.如图1所示,该系统包括:
44.调度器101,用于接收并转发状态数据调度命令至调度命令处理方法接口,以及接收调度命令处理方法接口返回的处理后状态数据通知,并基于处理后状态数据通知更新状态数据仓库中的数据,以及在状态数据仓库中的数据更新完毕后,发送消息以通知订阅者清单中的订阅者状态数据仓库中数据更新完毕。
45.调度器manage具备其特殊性,全局只能有唯一一个调度器。为避免用户多次创建调度器,可以使用单例模式在创建之前对调度器进行检查。如果没有创建过,创建完毕后将调度器挂载到创建方法的属性中;如果检查创建方法属性中有调度器,说明之前有创建过,不再继续创建,给到用户的就是之前创建过的调度器,保证调度器全局唯一。
46.进一步地,状态数据调度命令包括命令标识和命令数据。
47.调度命令包括两部分:一部分是type,用于对命令的唯一标记,即命令标识;一部分是data,执行这条命令需要的数据,即命令数据。
48.调度命令处理方法接口102,用于接收状态数据调度命令,并根据状态数据调度命令,进行业务逻辑处理,以及将处理后状态数据通知返回至调度器。
49.调度命令处理方法接口handler是进行消息传递的常用应用程序编程接口(application programming interface,api),其主要用于消息的处理。调度命令处理方法接口handler可以是由用户编写的调度命令处理方法,用户在编写handler处理不同业务逻辑时,可按需调用前后端程序,获取资源、执行脚本等,完成整个业务逻辑的处理过程,即handler可作为衔接前后端数据的桥梁。通过抽象出调度命令处理方法接口handler层,开发者用户可自己编写调度命令处理逻辑,给予开发者用户较大的自由度和灵活性。状态数据可以包括初始状态数据、临时状态数据、中间状态数据和最终状态数据等。
50.状态数据仓库103,用于存储状态数据,以及基于处理后状态数据通知更新状态数据。
51.状态数据仓库state用于存储所有的状态数据以及更新状态数据。通过将所有的状态数据存储在全局唯一状态数据仓库中,保证状态数据的全局共享。
52.具体地,本发明实施例提供的状态管理系统可以用于django进行网站开发时,对用户与网站的交互(js)的全局状态数据进行管理。
53.上述实施例,通过构建包括调度器、调度命令处理方法接口和状态数据仓库的状态管理系统,可以实现临时及中间状态数据等非必要存储的状态数据无需存储到数据库中,减少数据库冗余数据的同时也减少了后端冗余代码,后端研发可专注于业务逻辑的开发而无需关心中间状态数据的管理工作,有助于提高研发效率;采用调度命令处理方法接口,开发者用户可自己编写调度命令处理逻辑,给予开发者用户较大的自由度和灵活性,系统高度可扩展,便于团队协作和维护,适合大型项目开发。
54.进一步地,该系统还包括b组件104,用于:预先发起订阅请求或取消订阅请求至调度器,以供调度器将b组件加入或移出订阅者清单。
55.可以预先设置b组件调用watch方法或unwatch方法监听或取消监听状态数据变更,实现b组件进入或移出订阅者清单,由于订阅者清单由调度器管理,因此需向调度器发起相关请求。
56.进一步地,若所述订阅者清单中包括b组件104,则b组件104还用于:在收到状态数据仓库中数据更新完毕的消息后,获取状态数据仓库中更新后的数据以进行页面展示。
57.b组件通过调用watch方法监听状态数据变更,即b组件进入到订阅者清单listeners中。当有状态数据更新完毕后,调度器manage会通知所有的订阅者,b组件即接收到调度器发送的消息,调用getstate方法从状态数据仓库中获取变更后的状态数据以进行页面展示。
58.上述实施例中,b组件通过进入订阅者清单,可以实时获取状态数据更新情况,进而实现页面展示数据的实时更新,使得b组件负责界面展示更加纯粹,操作流程粒度更细、更规范,并且在减少数据库冗余数据的同时也减少了后端冗余代码,有助于提高研发效率。
59.进一步地,该系统还包括a组件,用于发送状态数据调度命令至调度器。
60.a组件通过send方法发送状态数据调度命令到调度器manage以进行状态数据的统一调度。
61.以下,通过具体举例对本发明实施例作进一步说明:
62.例如,一张页面,是由多个组件拼凑而成的,假设此时有一张计数器的页面,由a组件和b组件拼凑而成,a组件包含一个按钮,b组件包含计数结果。需要实现在a组件中按下按钮,b组件计数加1,当加到10时,数据库中存储一条有用户加到10的记录,计数结果清零。
63.现有技术做法为,按下一个按钮,发起一个请求,请求到达后端,后端程序对当前数值加1后,存储中间结果数据到数据库中,拼接计算结果后返回一张新页面到浏览器展示,加到10后将之前记录的中间结果删除,记录一条10的记录,返回一张数值结果为0的新页面。
64.上述过程中,从1到9的中间计算结果均需要存储在数据库,产生了冗余数据的同时,后端程序也产生了冗余代码。
65.本发明实施例的做法是,a组件中按下一个按钮,会send一条指令,用户自定义编写这条指令的处理过程handler,处理过程中发现已经加到10了,调用后端程序进行数据库存储,b组件只需watch监听数据的变化并展现在页面上即可,业务逻辑放到用户编写的处理过程handler中,这使得操作流程粒度更细,更规范,组件b负责界面展示更加纯粹,同时中间状态数据后端程序无需感知,在数值加到10之前对后端程序屏蔽,加到10后存储入库,在减少数据库冗余数据的同时也减少了后端冗余代码;并且用户状态数据存储在全局唯一状态仓库state中,保证状态的全局共享;通过发布订阅模式构建,提供send、watch、getstate等方法处理全局状态数据,写法规范,易于理解,便于团队维护;抽象出handler层,用户可自己编写调度命令处理逻辑,给予开发者较大的自由度和灵活性。
66.图2为本发明一个示例性的实施例提供的状态数据管理方法的流程图。
67.该方法应用于调度器,如图2所示,该方法包括:
68.步骤s201:接收并转发状态数据调度命令至调度命令处理方法接口,以供调度命令处理方法接口根据状态数据调度命令进行业务逻辑处理,并将处理后状态数据通知返回至调度器。
69.调度器manage具备其特殊性,全局只能有唯一一个调度器。为避免用户多次创建调度器,可以使用单例模式在创建之前对调度器进行检查。如果没有创建过,创建完毕后将调度器挂载到创建方法的属性中;如果检查创建方法属性中有调度器,说明之前有创建过,不再继续创建,给到用户的就是之前创建过的调度器,保证调度器全局唯一。
70.调度命令处理方法接口handler是进行消息传递的常用应用程序编程接口(application programming interface,api),其主要用于消息的处理。调度命令处理方法接口handler可以是由用户编写的调度命令处理方法,用户在编写handler处理不同业务逻辑时,可按需调用前后端程序,获取资源、执行脚本等,完成整个业务逻辑的处理过程,即handler可作为衔接前后端数据的桥梁。通过抽象出调度命令处理方法接口handler层,开发者用户可自己编写调度命令处理逻辑,给予开发者用户较大的自由度和灵活性。状态数据可以包括初始状态数据、临时状态数据、中间状态数据和最终状态数据等。
71.进一步地,状态数据调度命令包括命令标识和命令数据。
72.调度命令包括两部分:一部分是type,用于对命令的唯一标记,即命令标识;一部分是data,执行这条命令需要的数据,即命令数据。
73.步骤s202:接收处理后状态数据通知,基于处理后状态数据通知更新状态数据仓库中的数据。
74.状态数据仓库state用于存储所有的状态数据以及更新状态数据。通过将所有的状态数据存储在全局唯一状态数据仓库中,保证状态数据的全局共享。
75.步骤s203:在状态数据仓库中的数据更新完毕后,发送消息以通知订阅者清单中的订阅者状态数据仓库中数据更新完毕。
76.订阅者清单listeners中的订阅者可以根据需求预先向调度器发起请求并通过调度器设置得到。每次状态数据更新完毕后,调度器都会向订阅者清单中的订阅者发送消息以通知所有订阅者状态数据更新完毕。
77.具体地,本发明实施例提供的状态数据管理的方法可以用于django进行网站开发时,对用户与网站的交互(js)的全局状态数据进行管理。
78.上述实施例,通过接收并转发状态数据调度命令至调度命令处理方法接口,并接收调度命令处理方法接口返回的处理后状态数据通知,以及基于处理后状态数据通知更新状态数据仓库中的数据,并发送消息通知订阅者清单中的订阅者状态数据仓库中数据更新完毕,可以实现临时及中间状态数据等非必要存储的状态数据无需存储到数据库中,减少数据库冗余数据的同时也减少了后端冗余代码,后端研发可专注于业务逻辑的开发而无需关心中间状态数据的管理工作,有助于提高研发效率;采用调度命令处理方法接口,开发者用户可自己编写调度命令处理逻辑,给予开发者用户较大的自由度和灵活性,系统高度可扩展,便于团队协作和维护,适合大型项目开发。
79.进一步地,该方法还包括:
80.预先响应于b组件的发起订阅请求或取消订阅请求,将b组件加入或移出订阅者清单。
81.可以预先设置b组件调用watch方法或unwatch方法监听或取消监听状态数据变更,实现b组件进入或移出订阅者清单,由于订阅者清单由调度器管理,因此需向调度器发起相关请求。
82.进一步地,若订阅者清单中包括b组件,则b组件在收到状态数据仓库中数据更新完毕的消息后,获取状态数据仓库中更新后的数据以进行页面展示。
83.b组件通过调用watch方法监听状态数据变更,即b组件进入到订阅者清单listeners中。当有状态数据更新完毕后,调度器manage会通知所有的订阅者,b组件即接收到调度器发送的消息,调用getstate方法从状态数据仓库中获取变更后的状态数据以进行页面展示。
84.上述实施例中,b组件通过进入订阅者清单,可以实时获取状态数据更新情况,进而实现页面展示数据的实时更新,使得b组件负责界面展示更加纯粹,操作流程粒度更细、更规范,并且在减少数据库冗余数据的同时也减少了后端冗余代码,有助于提高研发效率。
85.进一步地,状态数据调度命令由a组件发出。
86.a组件通过send方法发送状态数据调度命令到调度器manage以进行状态数据的统一调度。
87.以下,通过具体举例对本发明实施例作进一步说明:
88.例如,一张页面,是由多个组件拼凑而成的,假设此时有一张计数器的页面,由a组件和b组件拼凑而成,a组件包含一个按钮,b组件包含计数结果。需要实现在a组件中按下按钮,b组件计数加1,当加到10时,数据库中存储一条有用户加到10的记录,计数结果清零。
89.现有技术做法为,按下一个按钮,发起一个请求,请求到达后端,后端程序对当前数值加1后,存储中间结果数据到数据库中,拼接计算结果后返回一张新页面到浏览器展示,加到10后将之前记录的中间结果删除,记录一条10的记录,返回一张数值结果为0的新页面。
90.上述过程中,从1到9的中间计算结果均需要存储在数据库,产生了冗余数据的同时,后端程序也产生了冗余代码。
91.本发明实施例的做法是,a组件中按下一个按钮,会send一条指令,用户自定义编写这条指令的处理过程handler,处理过程中发现已经加到10了,调用后端程序进行数据库存储,b组件只需watch监听数据的变化并展现在页面上即可,业务逻辑放到用户编写的处理过程handler中,这使得操作流程粒度更细,更规范,组件b负责界面展示更加纯粹,同时中间状态数据后端程序无需感知,在数值加到10之前对后端程序屏蔽,加到10后存储入库,在减少数据库冗余数据的同时也减少了后端冗余代码;并且用户状态数据存储在全局唯一状态仓库state中,保证状态的全局共享;通过发布订阅模式构建,提供send、watch、getstate等方法处理全局状态数据,写法规范,易于理解,便于团队维护;抽象出handler层,用户可自己编写调度命令处理逻辑,给予开发者较大的自由度和灵活性。
92.图3为本发明一个示例性的实施例提供的状态数据管理方法的流程图。
93.该方法应用于调度命令处理方法接口,如图3所示,该方法包括:
94.步骤s301:接收调度器转发的状态数据调度命令。
95.调度器manage具备其特殊性,全局只能有唯一一个调度器。为避免用户多次创建调度器,可以使用单例模式在创建之前对调度器进行检查。如果没有创建过,创建完毕后将调度器挂载到创建方法的属性中;如果检查创建方法属性中有调度器,说明之前有创建过,不再继续创建,给到用户的就是之前创建过的调度器,保证调度器全局唯一。
96.进一步地,状态数据调度命令包括命令标识和命令数据。
97.调度命令包括两部分:一部分是type,用于对命令的唯一标记,即命令标识;一部分是data,执行这条命令需要的数据,即命令数据。
98.步骤s302:根据状态数据调度命令,进行业务逻辑处理。
99.调度命令处理方法接口handler是进行消息传递的常用应用程序编程接口(application programming interface,api),其主要用于消息的处理。调度命令处理方法接口handler可以是由用户编写的调度命令处理方法,用户在编写handler处理不同业务逻辑时,可按需调用前后端程序,获取资源、执行脚本等,完成整个业务逻辑的处理过程,即handler可作为衔接前后端数据的桥梁。通过抽象出调度命令处理方法接口handler层,开发者用户可自己编写调度命令处理逻辑,给予开发者用户较大的自由度和灵活性。状态数据可以包括初始状态数据、临时状态数据、中间状态数据和最终状态数据等。
100.步骤s303:将处理后状态数据通知发送至调度器以供调度器更新状态数据仓库中的数据,并在数据更新完毕后发送消息以通知订阅者清单中的订阅者状态数据仓库中数据更新完毕。
101.状态数据仓库state用于存储所有的状态数据以及更新状态数据。通过将所有的状态数据存储在全局唯一状态数据仓库中,保证状态数据的全局共享。
102.订阅者清单listeners中的订阅者可以根据需求预先向调度器发起请求并通过调度器设置得到。每次状态数据更新完毕后,调度器都会向订阅者清单中的订阅者发送消息以通知所有订阅者状态数据更新完毕。
103.具体地,本发明实施例提供的状态数据管理的方法可以用于django进行网站开发时,对用户与网站的交互(js)的全局状态数据进行管理。
104.上述实施例,通过接收调度器转发的状态数据调度命令,并根据状态数据调度命令,进行业务逻辑处理,将处理后状态数据通知发送至调度器以供调度器更新状态数据仓库中的数据以及在数据更新完毕后发送消息以通知订阅者清单中的订阅者,可以实现临时及中间状态数据等非必要存储的状态数据无需存储到数据库中,减少数据库冗余数据的同时也减少了后端冗余代码,后端研发可专注于业务逻辑的开发而无需关心中间状态数据的管理工作,有助于提高研发效率;采用调度命令处理方法接口,开发者用户可自己编写调度命令处理逻辑,给予开发者用户较大的自由度和灵活性,系统高度可扩展,便于团队协作和维护,适合大型项目开发。
105.进一步地,该方法还包括:
106.调度器预先响应于b组件的发起订阅请求或取消订阅请求,将b组件加入或移出订阅者清单。
107.可以预先设置b组件调用watch方法或unwatch方法监听或取消监听状态数据变更,实现b组件进入或移出订阅者清单,由于订阅者清单由调度器管理,因此需向调度器发起相关请求。
108.进一步地,若订阅者清单中包括b组件,则b组件在收到状态数据仓库中数据更新完毕的消息后,获取状态数据仓库中更新后的数据以进行页面展示。
109.b组件通过调用watch方法监听状态数据变更,即b组件进入到订阅者清单listeners中。当有状态数据更新完毕后,调度器manage会通知所有的订阅者,b组件即接收到调度器发送的消息,调用getstate方法从状态数据仓库中获取变更后的状态数据以进行
页面展示。
110.上述实施例中,b组件通过进入订阅者清单,可以实时获取状态数据更新情况,进而实现页面展示数据的实时更新,使得b组件负责界面展示更加纯粹,操作流程粒度更细、更规范,并且在减少数据库冗余数据的同时也减少了后端冗余代码,有助于提高研发效率。
111.进一步地,状态数据调度命令由a组件发送至调度器。
112.a组件通过send方法发送状态数据调度命令到调度器manage以进行状态数据的统一调度。
113.以下,通过具体举例对本发明实施例作进一步说明:
114.例如,一张页面,是由多个组件拼凑而成的,假设此时有一张计数器的页面,由a组件和b组件拼凑而成,a组件包含一个按钮,b组件包含计数结果。需要实现在a组件中按下按钮,b组件计数加1,当加到10时,数据库中存储一条有用户加到10的记录,计数结果清零。
115.现有技术做法为,按下一个按钮,发起一个请求,请求到达后端,后端程序对当前数值加1后,存储中间结果数据到数据库中,拼接计算结果后返回一张新页面到浏览器展示,加到10后将之前记录的中间结果删除,记录一条10的记录,返回一张数值结果为0的新页面。
116.上述过程中,从1到9的中间计算结果均需要存储在数据库,产生了冗余数据的同时,后端程序也产生了冗余代码。
117.本发明实施例的做法是,a组件中按下一个按钮,会send一条指令,用户自定义编写这条指令的处理过程handler,处理过程中发现已经加到10了,调用后端程序进行数据库存储,b组件只需watch监听数据的变化并展现在页面上即可,业务逻辑放到用户编写的处理过程handler中,这使得操作流程粒度更细,更规范,组件b负责界面展示更加纯粹,同时中间状态数据后端程序无需感知,在数值加到10之前对后端程序屏蔽,加到10后存储入库,在减少数据库冗余数据的同时也减少了后端冗余代码;并且用户状态数据存储在全局唯一状态仓库state中,保证状态的全局共享;通过发布订阅模式构建,提供send、watch、getstate等方法处理全局状态数据,写法规范,易于理解,便于团队维护;抽象出handler层,用户可自己编写调度命令处理逻辑,给予开发者较大的自由度和灵活性。
118.图4为本发明一个示例性的实施例提供的状态数据管理装置的结构示意图。
119.该装置应用于调度器,如图4所示,该装置包括:
120.命令转发单元401,用于接收并转发状态数据调度命令至调度命令处理方法接口,以供调度命令处理方法接口根据状态数据调度命令进行业务逻辑处理,并将处理后状态数据通知返回至调度器。
121.调度器manage具备其特殊性,全局只能有唯一一个调度器。为避免用户多次创建调度器,可以使用单例模式在创建之前对调度器进行检查。如果没有创建过,创建完毕后将调度器挂载到创建方法的属性中;如果检查创建方法属性中有调度器,说明之前有创建过,不再继续创建,给到用户的就是之前创建过的调度器,保证调度器全局唯一。
122.调度命令处理方法接口handler是进行消息传递的常用应用程序编程接口(application programming interface,api),其主要用于消息的处理。调度命令处理方法接口handler可以是由用户编写的调度命令处理方法,用户在编写handler处理不同业务逻辑时,可按需调用前后端程序,获取资源、执行脚本等,完成整个业务逻辑的处理过程,即
handler可作为衔接前后端数据的桥梁。通过抽象出调度命令处理方法接口handler层,开发者用户可自己编写调度命令处理逻辑,给予开发者用户较大的自由度和灵活性。状态数据可以包括初始状态数据、临时状态数据、中间状态数据和最终状态数据等。
123.进一步地,状态数据调度命令包括命令标识和命令数据。
124.调度命令包括两部分:一部分是type,用于对命令的唯一标记,即命令标识;一部分是data,执行这条命令需要的数据,即命令数据。
125.数据更新单元402,用于接收处理后状态数据通知,基于处理后状态数据通知更新状态数据仓库中的数据。
126.状态数据仓库state用于存储所有的状态数据以及更新状态数据。通过将所有的状态数据存储在全局唯一状态数据仓库中,保证状态数据的全局共享。
127.消息发送单元403,用于在状态数据仓库中的数据更新完毕后,发送消息以通知订阅者清单中的订阅者状态数据仓库中数据更新完毕。
128.订阅者清单listeners中的订阅者可以根据需求预先向调度器发起请求并通过调度器设置得到。每次状态数据更新完毕后,调度器都会向订阅者清单中的订阅者发送消息以通知所有订阅者状态数据更新完毕。
129.具体地,本发明实施例提供的状态数据管理的方法可以用于django进行网站开发时,对用户与网站的交互(js)的全局状态数据进行管理。
130.上述实施例,通过接收并转发状态数据调度命令至调度命令处理方法接口,并接收调度命令处理方法接口返回的处理后状态数据通知,以及基于处理后状态数据通知更新状态数据仓库中的数据,并发送消息通知订阅者清单中的订阅者状态数据仓库中数据更新完毕,可以实现临时及中间状态数据等非必要存储的状态数据无需存储到数据库中,减少数据库冗余数据的同时也减少了后端冗余代码,后端研发可专注于业务逻辑的开发而无需关心中间状态数据的管理工作,有助于提高研发效率;采用调度命令处理方法接口,开发者用户可自己编写调度命令处理逻辑,给予开发者用户较大的自由度和灵活性,系统高度可扩展,便于团队协作和维护,适合大型项目开发。
131.进一步地,该装置还包括:
132.订阅单元,用于预先响应于b组件的发起订阅请求或取消订阅请求,将b组件加入或移出订阅者清单。
133.可以预先设置b组件调用watch方法或unwatch方法监听或取消监听状态数据变更,实现b组件进入或移出订阅者清单,由于订阅者清单由调度器管理,因此需向调度器发起相关请求。
134.进一步地,若订阅者清单中包括b组件,则b组件在收到状态数据仓库中数据更新完毕的消息后,获取状态数据仓库中更新后的数据以进行页面展示。
135.b组件通过调用watch方法监听状态数据变更,即b组件进入到订阅者清单listeners中。当有状态数据更新完毕后,调度器manage会通知所有的订阅者,b组件即接收到调度器发送的消息,调用getstate方法从状态数据仓库中获取变更后的状态数据以进行页面展示。
136.上述实施例中,b组件通过进入订阅者清单,可以实时获取状态数据更新情况,进而实现页面展示数据的实时更新,使得b组件负责界面展示更加纯粹,操作流程粒度更细、
更规范,并且在减少数据库冗余数据的同时也减少了后端冗余代码,有助于提高研发效率。
137.进一步地,状态数据调度命令由a组件发出。
138.a组件通过send方法发送状态数据调度命令到调度器manage以进行状态数据的统一调度。
139.以下,通过具体举例对本发明实施例作进一步说明:
140.例如,一张页面,是由多个组件拼凑而成的,假设此时有一张计数器的页面,由a组件和b组件拼凑而成,a组件包含一个按钮,b组件包含计数结果。需要实现在a组件中按下按钮,b组件计数加1,当加到10时,数据库中存储一条有用户加到10的记录,计数结果清零。
141.现有技术做法为,按下一个按钮,发起一个请求,请求到达后端,后端程序对当前数值加1后,存储中间结果数据到数据库中,拼接计算结果后返回一张新页面到浏览器展示,加到10后将之前记录的中间结果删除,记录一条10的记录,返回一张数值结果为0的新页面。
142.上述过程中,从1到9的中间计算结果均需要存储在数据库,产生了冗余数据的同时,后端程序也产生了冗余代码。
143.本发明实施例的做法是,a组件中按下一个按钮,会send一条指令,用户自定义编写这条指令的处理过程handler,处理过程中发现已经加到10了,调用后端程序进行数据库存储,b组件只需watch监听数据的变化并展现在页面上即可,业务逻辑放到用户编写的处理过程handler中,这使得操作流程粒度更细,更规范,组件b负责界面展示更加纯粹,同时中间状态数据后端程序无需感知,在数值加到10之前对后端程序屏蔽,加到10后存储入库,在减少数据库冗余数据的同时也减少了后端冗余代码;并且用户状态数据存储在全局唯一状态仓库state中,保证状态的全局共享;通过发布订阅模式构建,提供send、watch、getstate等方法处理全局状态数据,写法规范,易于理解,便于团队维护;抽象出handler层,用户可自己编写调度命令处理逻辑,给予开发者较大的自由度和灵活性。
144.图5为本发明一个示例性的实施例提供的状态数据管理装置的结构示意图。
145.该装置应用于调度命令处理方法接口,如图5所示,该装置包括:
146.命令接收单元501,用于接收调度器转发的状态数据调度命令。
147.调度器manage具备其特殊性,全局只能有唯一一个调度器。为避免用户多次创建调度器,可以使用单例模式在创建之前对调度器进行检查。如果没有创建过,创建完毕后将调度器挂载到创建方法的属性中;如果检查创建方法属性中有调度器,说明之前有创建过,不再继续创建,给到用户的就是之前创建过的调度器,保证调度器全局唯一。
148.进一步地,状态数据调度命令包括命令标识和命令数据。
149.调度命令包括两部分:一部分是type,用于对命令的唯一标记,即命令标识;一部分是data,执行这条命令需要的数据,即命令数据。
150.业务处理单元502,用于根据状态数据调度命令,进行业务逻辑处理。
151.调度命令处理方法接口handler是进行消息传递的常用应用程序编程接口(application programming interface,api),其主要用于消息的处理。调度命令处理方法接口handler可以是由用户编写的调度命令处理方法,用户在编写handler处理不同业务逻辑时,可按需调用前后端程序,获取资源、执行脚本等,完成整个业务逻辑的处理过程,即handler可作为衔接前后端数据的桥梁。通过抽象出调度命令处理方法接口handler层,开
发者用户可自己编写调度命令处理逻辑,给予开发者用户较大的自由度和灵活性。状态数据可以包括初始状态数据、临时状态数据、中间状态数据和最终状态数据等。
152.通知发送单元503,用于将处理后状态数据通知发送至调度器以供调度器更新状态数据仓库中的数据,并在数据更新完毕后发送消息以通知订阅者清单中的订阅者状态数据仓库中数据更新完毕。
153.状态数据仓库state用于存储所有的状态数据以及更新状态数据。通过将所有的状态数据存储在全局唯一状态数据仓库中,保证状态数据的全局共享。
154.订阅者清单listeners中的订阅者可以根据需求预先向调度器发起请求并通过调度器设置得到。每次状态数据更新完毕后,调度器都会向订阅者清单中的订阅者发送消息以通知所有订阅者状态数据更新完毕。
155.具体地,本发明实施例提供的状态数据管理的方法可以用于django进行网站开发时,对用户与网站的交互(js)的全局状态数据进行管理。
156.上述实施例,通过接收调度器转发的状态数据调度命令,并根据状态数据调度命令,进行业务逻辑处理,将处理后状态数据通知发送至调度器以供调度器更新状态数据仓库中的数据以及在数据更新完毕后发送消息以通知订阅者清单中的订阅者,可以实现临时及中间状态数据等非必要存储的状态数据无需存储到数据库中,减少数据库冗余数据的同时也减少了后端冗余代码,后端研发可专注于业务逻辑的开发而无需关心中间状态数据的管理工作,有助于提高研发效率;采用调度命令处理方法接口,开发者用户可自己编写调度命令处理逻辑,给予开发者用户较大的自由度和灵活性,系统高度可扩展,便于团队协作和维护,适合大型项目开发。
157.进一步地,该装置还包括:
158.订阅单元,用于调度器预先响应于b组件的发起订阅请求或取消订阅请求,将b组件加入或移出订阅者清单。
159.可以预先设置b组件调用watch方法或unwatch方法监听或取消监听状态数据变更,实现b组件进入或移出订阅者清单,由于订阅者清单由调度器管理,因此需向调度器发起相关请求。
160.进一步地,若订阅者清单中包括b组件,则b组件在收到状态数据仓库中数据更新完毕的消息后,获取状态数据仓库中更新后的数据以进行页面展示。
161.b组件通过调用watch方法监听状态数据变更,即b组件进入到订阅者清单listeners中。当有状态数据更新完毕后,调度器manage会通知所有的订阅者,b组件即接收到调度器发送的消息,调用getstate方法从状态数据仓库中获取变更后的状态数据以进行页面展示。
162.上述实施例中,b组件通过进入订阅者清单,可以实时获取状态数据更新情况,进而实现页面展示数据的实时更新,使得b组件负责界面展示更加纯粹,操作流程粒度更细、更规范,并且在减少数据库冗余数据的同时也减少了后端冗余代码,有助于提高研发效率。
163.进一步地,状态数据调度命令由a组件发送至调度器。
164.a组件通过send方法发送状态数据调度命令到调度器manage以进行状态数据的统一调度。
165.以下,通过具体举例对本发明实施例作进一步说明:
166.例如,一张页面,是由多个组件拼凑而成的,假设此时有一张计数器的页面,由a组件和b组件拼凑而成,a组件包含一个按钮,b组件包含计数结果。需要实现在a组件中按下按钮,b组件计数加1,当加到10时,数据库中存储一条有用户加到10的记录,计数结果清零。
167.现有技术做法为,按下一个按钮,发起一个请求,请求到达后端,后端程序对当前数值加1后,存储中间结果数据到数据库中,拼接计算结果后返回一张新页面到浏览器展示,加到10后将之前记录的中间结果删除,记录一条10的记录,返回一张数值结果为0的新页面。
168.上述过程中,从1到9的中间计算结果均需要存储在数据库,产生了冗余数据的同时,后端程序也产生了冗余代码。
169.本发明实施例的做法是,a组件中按下一个按钮,会send一条指令,用户自定义编写这条指令的处理过程handler,处理过程中发现已经加到10了,调用后端程序进行数据库存储,b组件只需watch监听数据的变化并展现在页面上即可,业务逻辑放到用户编写的处理过程handler中,这使得操作流程粒度更细,更规范,组件b负责界面展示更加纯粹,同时中间状态数据后端程序无需感知,在数值加到10之前对后端程序屏蔽,加到10后存储入库,在减少数据库冗余数据的同时也减少了后端冗余代码;并且用户状态数据存储在全局唯一状态仓库state中,保证状态的全局共享;通过发布订阅模式构建,提供send、watch、getstate等方法处理全局状态数据,写法规范,易于理解,便于团队维护;抽象出handler层,用户可自己编写调度命令处理逻辑,给予开发者较大的自由度和灵活性。
170.图6为本发明一个示例性的实施例提供的电子设备的框图。如图6所示,电子设备包括一个或多个处理器610和存储器620。
171.处理器610可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备中的其他组件以执行期望的功能。
172.存储器620可以包括一个或多个计算机程序产品,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器610可以运行所述程序指令,以实现上文所述的本发明的各个实施例的软件程序的状态数据管理方法以及/或者其他期望的功能。在一个示例中,电子设备还可以包括:输入装置630和输出装置640,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
173.此外,该输入装置630还可以包括例如键盘、鼠标等等。
174.该输出装置640可以向外部输出各种信息。该输出设备640可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
175.当然,为了简化,图6中仅示出了该电子设备中与本发明有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备还可以包括任何其他适当的组件。
176.示例性计算机程序产品和计算机可读存储介质除了上述方法和设备以外,本发明的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本发明各
种实施例的状态数据管理方法中的步骤。
177.所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本发明实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c 等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
178.此外,本发明的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本发明各种实施例的状态数据管理方法中的步骤。
179.所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
180.以上结合具体实施例描述了本发明的基本原理,但是,需要指出的是,在本发明中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本发明的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本发明为必须采用上述具体的细节来实现。
181.本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
182.本发明中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
183.可能以许多方式来实现本发明的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
184.还需要指出的是,在本发明的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本发明。对这些方面的各种修改
对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本发明的范围。因此,本发明不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
185.为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本发明的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献