终端、服务器和页面中结果属性值的计算方法

文档序号:7806744阅读:206来源:国知局
终端、服务器和页面中结果属性值的计算方法
【专利摘要】本发明提供了一种终端、服务器和页面中结果属性值的计算方法,终端包括:检测单元,用于检测当前页面上的计算属性的值是否发生变化;判断单元,用于在检测到当前页面上的计算属性的值发生变化时,根据服务器返回的判断条件,判断是否触发计算请求;交互单元,用于在判定需要触发计算请求时,将计算属性发生变化后的值和与计算属性相关联的其他计算属性的值发送至服务器,以由服务器计算与计算属性相关联的结果属性的值,以及接收服务器返回的结果;处理单元,用于根据所述结果更新当前页面上的结果属性的值。本发明的技术方案可以在解决终端联动变化的问题时,降低终端消耗的流量,提高终端与服务器之间的交互效率,同时降低应用程序的开发难度。
【专利说明】终端、服务器和页面中结果属性值的计算方法

【技术领域】
[0001]本发明涉及数据处理【技术领域】,具体而言,涉及一种终端、一种服务器和一种页面中结果属性值的计算方法。

【背景技术】
[0002]目前,在开发移动端的CRM(Customer Relat1nship Management,客户关系管理)产品时,需要解决单据编辑页面上的属性值改变所触发的联动变化与计算的问题。相关技术中的解决方式通常是移动端需要在应用程序中实现CRM页面上的计算、联动、精度等问题,类似于PC端JavaScript ( 一种脚本)脚本的实现逻辑,当业务发生变化时,需要让用户更新应用程序。
[0003]具体地,如在商机明细上的物料原币金额发生改变时,会根据物料数量去改变原币单价,原币单价改变同时还会根据当前的原币、本币、组织去改变本币单价、本币金额等;若联动变化的逻辑在移动端进行处理会面临两个问题:一个是值改变会触发大量的移动端与服务器端的交互而影响效率,另一个是会增加移动端的开发难度。
[0004]因此,如何在解决移动端联动变化的问题时,提高移动端与服务器之间的交互效率,降低应用程序的开发难度成为亟待解决的技术问题。


【发明内容】

[0005]本发明正是基于上述技术问题,提出了一种新的页面中结果属性值的计算方案,可以在解决终端(即移动端)联动变化的问题时,降低终端消耗的流量,提高终端与服务器之间的交互效率,同时降低应用程序的开发难度。
[0006]有鉴于此,本发明提出了一种终端,包括:检测单元,用于检测当前页面上的计算属性的值是否发生变化;判断单元,用于在所述检测单元检测到所述当前页面上的计算属性的值发生变化时,根据服务器返回的用于判断是否触发计算请求的判断条件,判断是否触发计算请求;交互单元,用于在所述判断单元判定需要触发计算请求时,将所述计算属性发生变化后的值和与所述计算属性相关联的其他计算属性的值发送至所述服务器,以由所述服务器计算与所述计算属性相关联的结果属性的值,以及接收所述服务器返回的对所述结果属性的值计算后的结果;处理单元,用于根据所述交互单元接收到的所述结果更新所述当前页面上的所述结果属性的值。
[0007]在该技术方案中,(终端)通过在检测到当前页面上的计算属性的值发生变化时,对是否触发计算请求进行判断,并在判定触发计算请求时,将计算属性变化后的值和与计算属性相关联的其他计算属性的值发送至服务器,以使服务器进行计算,使得终端可以在判定触发计算请求时,仅将部分参数,即值发生变化的计算属性和与计算属性相关联的其他计算属性发送至服务器,并接收服务器反馈的计算结果更新页面即可,无需将页面中的所有参数都发送至服务器,也无需更新相应的应用程序,减少了终端消耗的流量,解决了与服务器交互时由于交互参数过多导致的效率低的问题,降低了应用程序的开发难度。
[0008]在上述技术方案中,优选地,所述判断单元具体用于:在所述计算属性存在于所述判断条件中的必须属性集合内时,判定不需要触发所述计算请求,以及在所述计算属性存在于所述判断条件中的依赖属性集合内时,判定需要触发所述计算请求。
[0009]在该技术方案中,必须属性集合中的属性是在属性值发生变化时,不会触发计算请求的属性;而依赖属性集合中的属性是在属性值发生变化时,能够触发计算请求的属性,因此可以通过对属性值发生变化的计算属性所处的集合判断是否触发计算请求。
[0010]根据本发明的另一方面,还提出了一种服务器,包括:交互单元,用于接收终端发送的任一页面上的计算属性发生变化后的值,以及与所述计算属性相关联的其他计算属性的值,以及将处理单元处理后的计算结果返回至所述终端,以供所述终端更新所述任一页面上的所述结果属性的值;所述处理单元,用于根据所述交互单元接收到的所述计算属性发生变化后的值和所述其他计算属性的值,通过与所述任一页面相对应的公式树计算与所述计算属性相关联的结果属性的值,以得到所述计算结果。
[0011]在该技术方案中,通过接收终端发送的计算属性发生变化后的值和与该计算属性相关联的其他计算属性的值,并根据公式树对结果属性的值进行计算,使得终端可以在判定触发计算请求时,仅将部分参数,即值发生变化的计算属性和与计算属性相关联的其他计算属性发送至服务器,由服务器处理后将计算结果反馈至终端更新页面即可,终端无需将页面中的所有参数都发送至服务器,也无需更新相应的应用程序,减少了终端消耗的流量,解决了与终端交互时由于交互参数过多导致的效率低的问题,同时也降低了应用程序的开发难度。
[0012]在上述技术方案中,优选地,还包括:获取单元,用于获取所述任一页面上的所有计算公式;第一判断单元,用于根据针对所述所有计算公式中的每个计算公式预定义的用于判断所述每个计算公式内的计算属性的值发生变化时是否触发计算的判断方法,依次判断所述每个计算公式内的任一计算属性的值发生改变时,是否会触发计算;所述处理单元还用于,在所述第一判断单元判定所述任一页面上的任一计算公式中的任一计算属性的值发生改变会触发计算时,将所述任一计算公式中的所有计算属性存入计算属性集合,将所述任一计算公式的结果属性存入结果属性集合,并将所述任一计算公式存入参与计算的公式池中;所述服务器还包括:控制单元,用于依次将所述结果属性集合中的每个结果属性作为与所述每个结果属性对应的计算公式中的计算属性,控制所述第一判断单元和所述处理单元继续进行处理;第二判断单元,用于判断所述公式池中的任一公式的所有计算属性中的每个计算属性是否存在于所述结果属性集合内;公式树生成单元,用于在所述第二判断单元判定所述任一公式的所有计算属性均不存在于所述结果属性集合内时,将所述任一公式加入所述公式树。
[0013]在该技术方案中,通过对每个计算公式、每个结果属性进行遍历,能够确定公式树中的每个公式的结果值是唯一的,避免在计算过程中出现联动变化的问题。
[0014]在上述技术方案中,优选地,所述处理单元还用于:在所述第二判断单元判定所述任一公式的指定计算属性存在于所述结果属性集合内时,将所述指定计算属性加入依赖属性集合内;判断条件生成单元,用于将所述公式树中除一级节点公式的所有计算属性加入必须属性集合,根据所述必须属性集合和所述依赖属性集合生成用于判断是否触发计算请求的判断条件;所述交互单元还用于,将所述判断条件发送至所述终端。
[0015]在该技术方案中,通过确定依赖属性集合和必须属性集合,使得终端能够根据属性值发生变化的计算属性所处的集合判断是否触发计算请求。具体地,在终端确定属性值发生变化的计算属性存在于必须属性集合内,判定不需要触发计算请求,在终端确定属性值发生变化的计算属性存在于依赖属性集合内,判定需要触发计算请求。
[0016]相应的,本发明还提出了一种页面中结果属性值的计算方法,应用于上述终端,包括:检测当前页面上的计算属性的值是否发生变化;在检测到所述当前页面上的计算属性的值发生变化时,根据服务器返回的用于判断是否触发计算请求的判断条件,判断是否触发计算请求;在判定需要触发计算请求时,将所述计算属性发生变化后的值,以及与所述计算属性相关联的其他计算属性的值发送至所述服务器,以由所述服务器计算与所述计算属性相关联的结果属性的值;接收所述服务器返回的对所述结果属性的值计算后的结果,并更新所述当前页面上的所述结果属性的值。
[0017]在该技术方案中,(终端)通过在检测到当前页面上的计算属性的值发生变化时,对是否触发计算请求进行判断,并在判定触发计算请求时,将计算属性变化后的值和与计算属性相关联的其他计算属性的值发送至服务器,以使服务器进行计算,使得终端可以在判定触发计算请求时,仅将部分参数,即值发生变化的计算属性和与计算属性相关联的其他计算属性发送至服务器,并接收服务器反馈的计算结果更新页面即可,无需将页面中的所有参数都发送至服务器,也无需更新相应的应用程序,减少了终端消耗的流量,解决了与服务器交互时由于交互参数过多导致的效率低的问题,降低了应用程序的开发难度。
[0018]在上述技术方案中,优选地,判断是否触发计算请求的步骤具体为:若所述计算属性存在于所述判断条件中的必须属性集合内,则判定不需要触发所述计算请求,以及若所述计算属性存在于所述判断条件中的依赖属性集合内,则判定需要触发所述计算请求。
[0019]在该技术方案中,必须属性集合中的属性是在属性值发生变化时,不会触发计算请求的属性;而依赖属性集合中的属性是在属性值发生变化时,能够触发计算请求的属性,因此可以通过对属性值发生变化的计算属性所处的集合判断是否触发计算请求。
[0020]本发明还提出了一种页面中结果属性值的计算方法,应用于上述服务器,包括:接收终端发送的任一页面上的计算属性发生变化后的值,以及与所述计算属性相关联的其他计算属性的值;根据所述计算属性发生变化后的值和所述其他计算属性的值,通过与所述任一页面相对应的公式树计算与所述计算属性相关联的结果属性的值,以得到计算结果;将所述计算结果返回至所述终端,以供所述终端更新所述任一页面上的所述结果属性的值。
[0021]在该技术方案中,通过接收终端发送的计算属性发生变化后的值和与该计算属性相关联的其他计算属性的值,并根据公式树对结果属性的值进行计算,使得终端可以在判定触发计算请求时,仅将部分参数,即值发生变化的计算属性和与计算属性相关联的其他计算属性发送至服务器,由服务器处理后将计算结果反馈至终端更新页面即可,终端无需将页面中的所有参数都发送至服务器,也无需更新相应的应用程序,减少了终端消耗的流量,解决了与终端交互时由于交互参数过多导致的效率低的问题,同时也降低了应用程序的开发难度。
[0022]在上述技术方案中,优选地,在计算所述结果属性的值之前,还包括:获取步骤,获取所述任一页面上的所有计算公式;判断步骤,根据针对所述所有计算公式中的每个计算公式预定义的用于判断所述每个计算公式内的计算属性的值发生变化时是否触发计算的判断方法,依次判断所述每个计算公式内的任一计算属性的值发生改变时,是否会触发计算;处理步骤,在判定所述任一页面上的任一计算公式中的任一计算属性的值发生改变会触发计算时,将所述任一计算公式中的所有计算属性存入计算属性集合,将所述任一计算公式的结果属性存入结果属性集合,并将所述任一计算公式存入参与计算的公式池中;依次将所述结果属性集合中的每个结果属性作为与所述每个结果属性对应的计算公式中的计算属性,继续执行所述判断步骤与所述处理步骤;判断所述公式池中的任一公式的所有计算属性中的每个计算属性是否存在于所述结果属性集合内,以及在判定所述任一公式的所有计算属性均不存在于所述结果属性集合内时,将所述任一公式加入所述公式树。
[0023]在该技术方案中,通过对每个计算公式、每个结果属性进行遍历,能够确定公式树中的每个公式的结果值是唯一的,避免在计算过程中出现联动变化的问题。
[0024]在上述技术方案中,优选地,还包括:在判定所述任一公式中的指定计算属性存在于所述结果属性集合内时,将所述指定计算属性加入依赖属性集合内;将所述公式树中除一级节点公式的所有计算属性加入必须属性集合,根据所述必须属性集合和所述依赖属性集合生成用于判断是否触发计算请求的判断条件,并发送至所述终端。
[0025]在该技术方案中,通过确定依赖属性集合和必须属性集合,使得终端能够根据属性值发生变化的计算属性所处的集合判断是否触发计算请求。具体地,在终端确定属性值发生变化的计算属性存在于必须属性集合内,判定不需要触发计算请求,在终端确定属性值发生变化的计算属性存在于依赖属性集合内,判定需要触发计算请求。
[0026]通过以上技术方案,可以在解决终端(即移动端)联动变化的问题时,降低终端消耗的流量,提高终端与服务器之间的交互效率,同时降低应用程序的开发难度。

【专利附图】

【附图说明】
[0027]图1示出了根据本发明的实施例的终端的示意框图;
[0028]图2示出了根据本发明的实施例的服务器的示意框图;
[0029]图3示出了根据本发明的一个实施例的页面中结果属性值的计算方法的示意流程图;
[0030]图4示出了根据本发明的另一个实施例的页面中结果属性值的计算方法的示意流程图;
[0031]图5示出了根据本发明的再一个实施例的页面中结果属性值的计算方法的示意流程图;
[0032]图6示出了根据本发明的实施例的页面参数属性的获取流程示意图。

【具体实施方式】
[0033]为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和【具体实施方式】对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
[0034]在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
[0035]图1示出了根据本发明的实施例的终端的示意框图。
[0036]如图1所示,根据本发明的实施例的终端100,包括:检测单元102,用于检测当前页面上的计算属性的值是否发生变化;判断单元104,用于在所述检测单元102检测到所述当前页面上的计算属性的值发生变化时,根据服务器返回的用于判断是否触发计算请求的判断条件,判断是否触发计算请求;交互单元106,用于在所述判断单元104判定需要触发计算请求时,将所述计算属性发生变化后的值和与所述计算属性相关联的其他计算属性的值发送至所述服务器,以由所述服务器计算与所述计算属性相关联的结果属性的值,以及接收所述服务器返回的对所述结果属性的值计算后的结果;处理单元108,用于根据所述交互单元106接收到的所述结果更新所述当前页面上的所述结果属性的值。
[0037]在该技术方案中,(终端)通过在检测到当前页面上的计算属性的值发生变化时,对是否触发计算请求进行判断,并在判定触发计算请求时,将计算属性变化后的值和与计算属性相关联的其他计算属性的值发送至服务器,以使服务器进行计算,使得终端可以在判定触发计算请求时,仅将部分参数,即值发生变化的计算属性和与计算属性相关联的其他计算属性发送至服务器,并接收服务器反馈的计算结果更新页面即可,无需将页面中的所有参数都发送至服务器,也无需更新相应的应用程序,减少了终端消耗的流量,解决了与服务器交互时由于交互参数过多导致的效率低的问题,降低了应用程序的开发难度。
[0038]在上述技术方案中,优选地,所述判断单元104具体用于:在所述计算属性存在于所述判断条件中的必须属性集合内时,判定不需要触发所述计算请求,以及在所述计算属性存在于所述判断条件中的依赖属性集合内时,判定需要触发所述计算请求。
[0039]在该技术方案中,必须属性集合中的属性是在属性值发生变化时,不会触发计算请求的属性;而依赖属性集合中的属性是在属性值发生变化时,能够触发计算请求的属性,因此可以通过对属性值发生变化的计算属性所处的集合判断是否触发计算请求。
[0040]图2示出了根据本发明的实施例的服务器的示意框图。
[0041]如图2所示,根据本发明的实施例的服务器200,包括:交互单元202,用于接收终端发送的任一页面上的计算属性发生变化后的值,以及与所述计算属性相关联的其他计算属性的值,以及将处理单元204处理后的计算结果返回至所述终端,以供所述终端更新所述任一页面上的所述结果属性的值;所述处理单元204,用于根据所述交互单元202接收到的所述计算属性发生变化后的值和所述其他计算属性的值,通过与所述任一页面相对应的公式树计算与所述计算属性相关联的结果属性的值,以得到所述计算结果。
[0042]在该技术方案中,通过接收终端发送的计算属性发生变化后的值和与该计算属性相关联的其他计算属性的值,并根据公式树对结果属性的值进行计算,使得终端可以在判定触发计算请求时,仅将部分参数,即值发生变化的计算属性和与计算属性相关联的其他计算属性发送至服务器,由服务器处理后将计算结果反馈至终端更新页面即可,终端无需将页面中的所有参数都发送至服务器,也无需更新相应的应用程序,减少了终端消耗的流量,解决了与终端交互时由于交互参数过多导致的效率低的问题,同时也降低了应用程序的开发难度。
[0043]在上述技术方案中,优选地,还包括:获取单元206,用于获取所述任一页面上的所有计算公式;第一判断单元208,用于根据针对所述所有计算公式中的每个计算公式预定义的用于判断所述每个计算公式内的计算属性的值发生变化时是否触发计算的判断方法,依次判断所述每个计算公式内的任一计算属性的值发生改变时,是否会触发计算;所述处理单元204还用于,在所述第一判断单元208判定所述任一页面上的任一计算公式中的任一计算属性的值发生改变会触发计算时,将所述任一计算公式中的所有计算属性存入计算属性集合,将所述任一计算公式的结果属性存入结果属性集合,并将所述任一计算公式存入参与计算的公式池中;所述服务器200还包括:控制单元210,用于依次将所述结果属性集合中的每个结果属性作为与所述每个结果属性对应的计算公式中的计算属性,控制所述第一判断单元208和所述处理单元204继续进行处理;第二判断单元212,用于判断所述公式池中的任一公式的所有计算属性中的每个计算属性是否存在于所述结果属性集合内;公式树生成单元214,用于在所述第二判断单元212判定所述任一公式的所有计算属性均不存在于所述结果属性集合内时,将所述任一公式加入所述公式树。
[0044]在该技术方案中,通过对每个计算公式、每个结果属性进行遍历,能够确定公式树中的每个公式的结果值是唯一的,避免在计算过程中出现联动变化的问题。
[0045]在上述技术方案中,优选地,所述处理单元204还用于:在所述第二判断单元212判定所述任一公式的指定计算属性存在于所述结果属性集合内时,将所述指定计算属性加入依赖属性集合内;所示服务器200还包括:判断条件生成单元216,用于将所述公式树中除一级节点公式的所有计算属性加入必须属性集合,根据所述必须属性集合和所述依赖属性集合生成用于判断是否触发计算请求的判断条件;所述交互单元202还用于,将所述判断条件发送至所述终端。
[0046]在该技术方案中,通过确定依赖属性集合和必须属性集合,使得终端能够根据属性值发生变化的计算属性所处的集合判断是否触发计算请求。具体地,在终端确定属性值发生变化的计算属性存在于必须属性集合内,判定不需要触发计算请求,在终端确定属性值发生变化的计算属性存在于依赖属性集合内,判定需要触发计算请求。
[0047]图3示出了根据本发明的一个实施例的页面中结果属性值的计算方法的示意流程图。
[0048]如图3所示,根据本发明的一个实施例的页面中结果属性值的计算方法,应用于图1中所示的终端100,包括:步骤302,检测当前页面上的计算属性的值是否发生变化;步骤304,在检测到所述当前页面上的计算属性的值发生变化时,根据服务器返回的用于判断是否触发计算请求的判断条件,判断是否触发计算请求;步骤306,在判定需要触发计算请求时,将所述计算属性发生变化后的值,以及与所述计算属性相关联的其他计算属性的值发送至所述服务器,以由所述服务器计算与所述计算属性相关联的结果属性的值;步骤308,接收所述服务器返回的对所述结果属性的值计算后的结果,并更新所述当前页面上的所述结果属性的值。
[0049]在该技术方案中,(终端)通过在检测到当前页面上的计算属性的值发生变化时,对是否触发计算请求进行判断,并在判定触发计算请求时,将计算属性变化后的值和与计算属性相关联的其他计算属性的值发送至服务器,以使服务器进行计算,使得终端可以在判定触发计算请求时,仅将部分参数,即值发生变化的计算属性和与计算属性相关联的其他计算属性发送至服务器,并接收服务器反馈的计算结果更新页面即可,无需将页面中的所有参数都发送至服务器,也无需更新相应的应用程序,减少了终端消耗的流量,解决了与服务器交互时由于交互参数过多导致的效率低的问题,降低了应用程序的开发难度。
[0050]在上述技术方案中,优选地,判断是否触发计算请求的步骤具体为:若所述计算属性存在于所述判断条件中的必须属性集合内,则判定不需要触发所述计算请求,以及若所述计算属性存在于所述判断条件中的依赖属性集合内,则判定需要触发所述计算请求。
[0051]在该技术方案中,必须属性集合中的属性是在属性值发生变化时,不会触发计算请求的属性;而依赖属性集合中的属性是在属性值发生变化时,能够触发计算请求的属性,因此可以通过对属性值发生变化的计算属性所处的集合判断是否触发计算请求。
[0052]图4示出了根据本发明的另一个实施例的页面中结果属性值的计算方法的示意流程图。
[0053]如图4所示,根据本发明的另一个实施例的页面中结果属性值的计算方法,应用于图2中所示的服务器200,包括:步骤402,接收终端发送的任一页面上的计算属性发生变化后的值,以及与所述计算属性相关联的其他计算属性的值;步骤404,根据所述计算属性发生变化后的值和所述其他计算属性的值,通过与所述任一页面相对应的公式树计算与所述计算属性相关联的结果属性的值,以得到计算结果;步骤406,将所述计算结果返回至所述终端,以供所述终端更新所述任一页面上的所述结果属性的值。
[0054]在该技术方案中,通过接收终端发送的计算属性发生变化后的值和与该计算属性相关联的其他计算属性的值,并根据公式树对结果属性的值进行计算,使得终端可以在判定触发计算请求时,仅将部分参数,即值发生变化的计算属性和与计算属性相关联的其他计算属性发送至服务器,由服务器处理后将计算结果反馈至终端更新页面即可,终端无需将页面中的所有参数都发送至服务器,也无需更新相应的应用程序,减少了终端消耗的流量,解决了与终端交互时由于交互参数过多导致的效率低的问题,同时也降低了应用程序的开发难度。
[0055]在上述技术方案中,优选地,在计算所述结果属性的值之前,还包括:获取步骤,获取所述任一页面上的所有计算公式;判断步骤,根据针对所述所有计算公式中的每个计算公式预定义的用于判断所述每个计算公式内的计算属性的值发生变化时是否触发计算的判断方法,依次判断所述每个计算公式内的任一计算属性的值发生改变时,是否会触发计算;处理步骤,在判定所述任一页面上的任一计算公式中的任一计算属性的值发生改变会触发计算时,将所述任一计算公式中的所有计算属性存入计算属性集合,将所述任一计算公式的结果属性存入结果属性集合,并将所述任一计算公式存入参与计算的公式池中;依次将所述结果属性集合中的每个结果属性作为与所述每个结果属性对应的计算公式中的计算属性,继续执行所述判断步骤与所述处理步骤;判断所述公式池中的任一公式的所有计算属性中的每个计算属性是否存在于所述结果属性集合内,以及在判定所述任一公式的所有计算属性均不存在于所述结果属性集合内时,将所述任一公式加入所述公式树。
[0056]在该技术方案中,通过对每个计算公式、每个结果属性进行遍历,能够确定公式树中的每个公式的结果值是唯一的,避免在计算过程中出现联动变化的问题。
[0057]在上述技术方案中,优选地,还包括:在判定所述任一公式中的指定计算属性存在于所述结果属性集合内时,将所述指定计算属性加入依赖属性集合内;将所述公式树中除一级节点公式的所有计算属性加入必须属性集合,根据所述必须属性集合和所述依赖属性集合生成用于判断是否触发计算请求的判断条件,并发送至所述终端。
[0058]在该技术方案中,通过确定依赖属性集合和必须属性集合,使得终端能够根据属性值发生变化的计算属性所处的集合判断是否触发计算请求。具体地,在终端确定属性值发生变化的计算属性存在于必须属性集合内,判定不需要触发计算请求,在终端确定属性值发生变化的计算属性存在于依赖属性集合内,判定需要触发计算请求。
[0059]下面结合图详细说明本发明的技术方案。
[0060]如图5所示,根据本发明的再一个实施例的页面中结果属性值的计算方法,主要包括:
[0061]步骤502,定义计算公式的属性信息。
[0062]其中,计算公式是指用于描述页面上的属性值发生变化时所触发的联动规则,例如,单价发生变化时,会与数量相乘改变金额;或者选择一件商品后会同时改变页面上的商品单价,商品单位等。
[0063]在实际的业务场景中,页面属性变化发生的联动变化可能会比较复杂,涉及到多个公式进行计算,例如,选择的商品进行切换,会改变商品的单价;商品的单价改变之后会与数量相乘得到商品的金额;商品的金额改变后表头会对所有的明细商品金额进行汇总,改变商品的汇总金额等等。对于一个页面属性改变所会触发到的所有计算公式,在这里称为一个公式树。
[0064]在步骤502中,开发人员需要根据具体的业务规则,定义一系列公式;定义一个公式需要分为三个步骤:
[0065]I)对公式进行初始化,实现计算接口。将公式计算需要的参数属性以及结果属性传入公式中。在本计算引擎中定义的公式需满足以下两个原则:
[0066]A、公式必须是只有一个结果值的公式,若存在多个结果值,则可通过定义多个公式实现;
[0067]B、每个公式在一个公式树中只能计算一次,并且每个属性在一个公式树中值唯一;绝大数业务场景符合本规则,若存在特殊业务场景,也可通过定义一个由多个公式组成的公式实现。
[0068]2)定义公式的计算规则。根据业务的计算规则,实现计算接口中的计算方法;计算引擎在计算到这个公式时会调用这个方法,传入的参数为公式计算所需的以及之前公式计算结果的属性与属性对应值的数据结构;若参数中的元素满足该公式的计算原则,则根据业务规则进行计算,将计算结果值返回,否则不进行计算。
[0069]3)定义不会触发该公式的改变属性。由于计算引擎会根据公式动态的形成公式树,但是在某些业务场景下,生成的公式树中的某些公式并不应该参与计算,这个方法能够保证在生成公式树时过滤掉这个公式。
[0070]开发者将定义好的一系列公式添加到公式池中,创建计算引擎实例,将公式池添加到计算引擎中,同时将页面上会触发计算的计算属性添加到计算引擎中。
[0071]步骤504,获取页面的参数属性,以便移动端在页面初始化时进行调用。
[0072]当页面某一计算属性发生变化时,有可能并不会去触发计算,例如,当页面上并未填写数量时,改变单价不会进行单价乘以数量等于金额的计算;像示例中数量这样的属性,称为必须条件。
[0073]考虑到移动应用交互的性能问题以及流量问题,计算属性发生变化时并不需要将整个页面的属性值作为参数提交到服务器端,只需要将计算中参与的属性值提交即可,这些属性称为依赖条件。
[0074]计算引擎会根据公式定义规则,返回页面元素发生变化时触发计算请求的必须条件,以及进行计算的依赖条件。
[0075]具体算法如下:
[0076]计算引擎会将公式定义时传入引擎中的每个计算属性认为是一个变化属性,作为触发计算的源头,对公式池进行遍历。
[0077]若这个公式在定义时定义了源头属性改变不触发计算,则继续循环;否则将该公式的id添加到id集合,将公式的参数添加到参数属性集合,将公式的结果值添加到结果属性集合,将公式添加到参与计算的公式池中;同时将该公式的结果属性作为变化属性进行递归遍历。
[0078]递归结束后,计算的公式池中的公式即为源头属性变化后会触发计算的全部公式;参数属性集合即为计算的公式的全部参数;结果属性集合即为计算的公式的全部结果。
[0079]接下来遍历参与计算的公式池,若公式的参数属性在结果属性集合中不存在,则表明这个属性在整个计算公式树中没有发生变化,可以直接参与计算,称其为不变值。
[0080]将不变值加入到不变值集合中(源头属性默认在不变值集合中);若公式的全部参数都存在于不变值集合,则表明该公式的全部参数不会受其他公式计算的结果影响,满足计算的条件,将该公式添加到公式树中。
[0081]因为在公式定义时,每个公式在一个公式树中只能触发一次,每个属性在公式树中是唯一的原则,保证了每个结果值的来源公式是唯一的,所以不存在公式计算优先级的问题;因此形成的公式树不存在计算顺序的问题。
[0082]将计算依赖的参数属性添加到依赖属性集合中。当对参与计算的公式池遍历完成后,得到的公式树即为源头属性改变会依次触发的计算公式,依赖的属性集合即为计算所需的页面属性值,在公式树中,一级节点的公式的参数除源头属性外,即为触发计算所需的必须条件。
[0083]将所有计算属性触发计算所需的必须条件与依赖条件,按照与移动端约定的数据结构返回;当页面属性改变后,移动端即可依据该规则发送计算请求以及提交参数。
[0084]步骤506,移动端提交计算,服务端进行计算。
[0085]具体地,当用户对页面上计算属性的值改变时,移动端会根据页面初始化时获取的必须条件进行校验,确定是否触发计算请求,若触发计算请求,则移动端会根据依赖条件,将页面上参与计算的属性值和变化属性与值提交给服务端;服务端会将参数值传入计算引擎,计算引擎根据初始化好的公式树依次调用公式的计算方法进行计算,将公式树计算的结果按照与移动端预定的数据结构返回给移动端;移动端将计算结果展示给用户;提交计算的流程结束。
[0086]其中,步骤504的具体流程图可以如图6所示。
[0087]图6示出了根据本发明的实施例的页面参数属性的获取流程示意图。
[0088]如图6所示,根据本发明的实施例的页面参数属性的获取流程,包括:
[0089]步骤602,将变化属性传入计算引擎。
[0090]步骤604,遍历公式池,选出变化属性作为参数的公式。
[0091]步骤606,判断变化属性改变时是否会触发公式计算,若是,则执行步骤608;否贝U,返回步骤604。
[0092]步骤608,在判定变化属性改变会触发公式计算时,将该公式的id添加到id集合,将公式的参数添加到参数属性集合,将公式的结果值添加到结果属性集合,将公式添加到参与计算的公式池中。
[0093]步骤610,判断是否递归结束,若是,则执行步骤614 ;否则,执行步骤612。
[0094]步骤612,将结果属性作为变化属性传入计算引擎。
[0095]步骤614,遍历参与计算的公式池。
[0096]步骤616,判断公式的参数属性是否不存在于结果属性集合内,若是,则执行步骤618 ;否则,执行步骤624。
[0097]步骤618,将参数属性加入到不变值集合。
[0098]步骤620,判断公式的全部参数属性是否存在于不变值集合,若是,则执行步骤622。
[0099]步骤622,将公式添加到公式树。
[0100]步骤624,将参数属性加入到依赖值集合。
[0101]步骤626,判断公式池中的公式是否遍历结束,若是,则结束;否则,返回步骤614继续遍历公式。
[0102]在以上技术方案中,服务端提供了计算引擎,预置了计算逻辑公式,移动端只需要按照引擎的要求提供参数数据,发起一次接口调用,用返回值局部刷新页面,就能得到与PC端一致的交互逻辑。当业务发生变动或项目有新需求时,只需要更新引擎中注入的公式,不需要重新发布应用程序,用户既能得到新的交互特性。类似于从C/S (Client/server,客户端/服务器)结构发布形式转到B/S (Browser/Server,浏览器/服务器)结构发布形式,简化了处理流程。
[0103]以上结合附图详细说明了本发明的技术方案,考虑到相关技术中联动变化的逻辑在移动端进行处理会面临两个问题:一个是值改变会触发大量的移动端与服务器端的交互而影响效率,另一个是会增加移动端的开发难度。因此,本发明提出了一种新的页面中结果属性值的计算方案,可以在解决终端(即移动端)联动变化的问题时,降低终端消耗的流量,提高终端与服务器之间的交互效率,同时降低应用程序的开发难度。
[0104]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种终端,其特征在于,包括: 检测单元,用于检测当前页面上的计算属性的值是否发生变化; 判断单元,用于在所述检测单元检测到所述当前页面上的计算属性的值发生变化时,根据服务器返回的用于判断是否触发计算请求的判断条件,判断是否触发计算请求; 交互单元,用于在所述判断单元判定需要触发计算请求时,将所述计算属性发生变化后的值和与所述计算属性相关联的其他计算属性的值发送至所述服务器,以由所述服务器计算与所述计算属性相关联的结果属性的值,以及 接收所述服务器返回的对所述结果属性的值计算后的结果; 处理单元,用于根据所述交互单元接收到的所述结果更新所述当前页面上的所述结果属性的值。
2.根据权利要求1所述的终端,其特征在于,所述判断单元具体用于: 在所述计算属性存在于所述判断条件中的必须属性集合内时,判定不需要触发所述计算请求,以及 在所述计算属性存在于所述判断条件中的依赖属性集合内时,判定需要触发所述计算请求。
3.一种服务器,其特征在于,包括: 交互单元,用于接收终端发送的任一页面上的计算属性发生变化后的值,以及与所述计算属性相关联的其他计算属性的值,以及 将处理单元处理后的计算结果返回至所述终端,以供所述终端更新所述任一页面上的所述结果属性的值; 所述处理单元,用于根据所述交互单元接收到的所述计算属性发生变化后的值和所述其他计算属性的值,通过与所述任一页面相对应的公式树计算与所述计算属性相关联的结果属性的值,以得到所述计算结果。
4.根据权利要求3所述的服务器,其特征在于,还包括: 获取单元,用于获取所述任一页面上的所有计算公式; 第一判断单元,用于根据针对所述所有计算公式中的每个计算公式预定义的用于判断所述每个计算公式内的计算属性的值发生变化时是否触发计算的判断方法,依次判断所述每个计算公式内的任一计算属性的值发生改变时,是否会触发计算; 所述处理单元还用于,在所述第一判断单元判定所述任一页面上的任一计算公式中的任一计算属性的值发生改变会触发计算时,将所述任一计算公式中的所有计算属性存入计算属性集合,将所述任一计算公式的结果属性存入结果属性集合,并将所述任一计算公式存入参与计算的公式池中; 所述服务器还包括: 控制单元,用于依次将所述结果属性集合中的每个结果属性作为与所述每个结果属性对应的计算公式中的计算属性,控制所述第一判断单元和所述处理单元继续进行处理;第二判断单元,用于判断所述公式池中的任一公式的所有计算属性中的每个计算属性是否存在于所述结果属性集合内; 公式树生成单元,用于在所述第二判断单元判定所述任一公式的所有计算属性均不存在于所述结果属性集合内时,将所述任一公式加入所述公式树。
5.根据权利要求4所述的服务器,其特征在于, 所述处理单元还用于: 在所述第二判断单元判定所述任一公式中的指定计算属性存在于所述结果属性集合内时,将所述指定计算属性加入依赖属性集合内; 所述服务器还包括: 判断条件生成单元,用于将所述公式树中除一级节点公式的所有计算属性加入必须属性集合,根据所述必须属性集合和所述依赖属性集合生成用于判断是否触发计算请求的判断条件; 所述交互单元还用于,将所述判断条件发送至所述终端。
6.一种页面中结果属性值的计算方法,其特征在于,包括: 检测当前页面上的计算属性的值是否发生变化; 在检测到所述当前页面上的计算属性的值发生变化时,根据服务器返回的用于判断是否触发计算请求的判断条件,判断是否触发计算请求; 在判定需要触发计算请 求时,将所述计算属性发生变化后的值,以及与所述计算属性相关联的其他计算属性的值发送至所述服务器,以由所述服务器计算与所述计算属性相关联的结果属性的值; 接收所述服务器返回的对所述结果属性的值计算后的结果,并更新所述当前页面上的所述结果属性的值。
7.根据权利要求6所述的页面中结果属性值的计算方法,其特征在于,判断是否触发计算请求的步骤具体为: 若所述计算属性存在于所述判断条件中的必须属性集合内,则判定不需要触发所述计算请求,以及 若所述计算属性存在于所述判断条件中的依赖属性集合内,则判定需要触发所述计算请求。
8.一种页面中结果属性值的计算方法,其特征在于,包括: 接收终端发送的任一页面上的计算属性发生变化后的值,以及与所述计算属性相关联的其他计算属性的值; 根据所述计算属性发生变化后的值和所述其他计算属性的值,通过与所述任一页面相对应的公式树计算与所述计算属性相关联的结果属性的值,以得到计算结果; 将所述计算结果返回至所述终端,以供所述终端更新所述任一页面上的所述结果属性的值。
9.根据权利要求8所述的页面中结果属性值的计算方法,其特征在于,在计算所述结果属性的值之前,还包括: 获取步骤,获取所述任一页面上的所有计算公式; 判断步骤,根据针对所述所有计算公式中的每个计算公式预定义的用于判断所述每个计算公式内的计算属性的值发生变化时是否触发计算的判断方法,依次判断所述每个计算公式内的任一计算属性的值发生改变时,是否会触发计算; 处理步骤,在判定所述任一页面上的任一计算公式中的任一计算属性的值发生改变会触发计算时,将所述任一计算公式中的所有计算属性存入计算属性集合,将所述任一计算公式的结果属性存入结果属性集合,并将所述任一计算公式存入参与计算的公式池中;依次将所述结果属性集合中的每个结果属性作为与所述每个结果属性对应的计算公式中的计算属性,继续执行所述判断步骤与所述处理步骤; 判断所述公式池中的任一公式的所有计算属性中的每个计算属性是否存在于所述结果属性集合内,以及 在判定所述任一公式的所有计算属性均不存在于所述结果属性集合内时,将所述任一公式加入所述公式树。
10.根据权利要求9所述的页面中结果属性值的计算方法,其特征在于,还包括: 在判定所述任一公式的指定计算属性存在于所述结果属性集合内时,将所述指定计算属性加入 依赖属性集合内;以及 将所述公式树中除一级节点公式的所有计算属性加入必须属性集合,根据所述必须属性集合和所述依赖属性集合生成用于判断是否触发计算请求的判断条件,并发送至所述终端。
【文档编号】H04L29/08GK104079566SQ201410280964
【公开日】2014年10月1日 申请日期:2014年6月20日 优先权日:2014年6月20日
【发明者】黄通, 赵建军 申请人:用友软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1