終端、服務(wù)器和頁面中結(jié)果屬性值的計(jì)算方法
【專利摘要】本發(fā)明提供了一種終端、服務(wù)器和頁面中結(jié)果屬性值的計(jì)算方法,終端包括:檢測單元,用于檢測當(dāng)前頁面上的計(jì)算屬性的值是否發(fā)生變化;判斷單元,用于在檢測到當(dāng)前頁面上的計(jì)算屬性的值發(fā)生變化時(shí),根據(jù)服務(wù)器返回的判斷條件,判斷是否觸發(fā)計(jì)算請求;交互單元,用于在判定需要觸發(fā)計(jì)算請求時(shí),將計(jì)算屬性發(fā)生變化后的值和與計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性的值發(fā)送至服務(wù)器,以由服務(wù)器計(jì)算與計(jì)算屬性相關(guān)聯(lián)的結(jié)果屬性的值,以及接收服務(wù)器返回的結(jié)果;處理單元,用于根據(jù)所述結(jié)果更新當(dāng)前頁面上的結(jié)果屬性的值。本發(fā)明的技術(shù)方案可以在解決終端聯(lián)動變化的問題時(shí),降低終端消耗的流量,提高終端與服務(wù)器之間的交互效率,同時(shí)降低應(yīng)用程序的開發(fā)難度。
【專利說明】終端、服務(wù)器和頁面中結(jié)果屬性值的計(jì)算方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理【技術(shù)領(lǐng)域】,具體而言,涉及一種終端、一種服務(wù)器和一種頁面中結(jié)果屬性值的計(jì)算方法。
【背景技術(shù)】
[0002]目前,在開發(fā)移動端的CRM(Customer Relat1nship Management,客戶關(guān)系管理)產(chǎn)品時(shí),需要解決單據(jù)編輯頁面上的屬性值改變所觸發(fā)的聯(lián)動變化與計(jì)算的問題。相關(guān)技術(shù)中的解決方式通常是移動端需要在應(yīng)用程序中實(shí)現(xiàn)CRM頁面上的計(jì)算、聯(lián)動、精度等問題,類似于PC端JavaScript ( 一種腳本)腳本的實(shí)現(xiàn)邏輯,當(dāng)業(yè)務(wù)發(fā)生變化時(shí),需要讓用戶更新應(yīng)用程序。
[0003]具體地,如在商機(jī)明細(xì)上的物料原幣金額發(fā)生改變時(shí),會根據(jù)物料數(shù)量去改變原幣單價(jià),原幣單價(jià)改變同時(shí)還會根據(jù)當(dāng)前的原幣、本幣、組織去改變本幣單價(jià)、本幣金額等;若聯(lián)動變化的邏輯在移動端進(jìn)行處理會面臨兩個問題:一個是值改變會觸發(fā)大量的移動端與服務(wù)器端的交互而影響效率,另一個是會增加移動端的開發(fā)難度。
[0004]因此,如何在解決移動端聯(lián)動變化的問題時(shí),提高移動端與服務(wù)器之間的交互效率,降低應(yīng)用程序的開發(fā)難度成為亟待解決的技術(shù)問題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明正是基于上述技術(shù)問題,提出了一種新的頁面中結(jié)果屬性值的計(jì)算方案,可以在解決終端(即移動端)聯(lián)動變化的問題時(shí),降低終端消耗的流量,提高終端與服務(wù)器之間的交互效率,同時(shí)降低應(yīng)用程序的開發(fā)難度。
[0006]有鑒于此,本發(fā)明提出了一種終端,包括:檢測單元,用于檢測當(dāng)前頁面上的計(jì)算屬性的值是否發(fā)生變化;判斷單元,用于在所述檢測單元檢測到所述當(dāng)前頁面上的計(jì)算屬性的值發(fā)生變化時(shí),根據(jù)服務(wù)器返回的用于判斷是否觸發(fā)計(jì)算請求的判斷條件,判斷是否觸發(fā)計(jì)算請求;交互單元,用于在所述判斷單元判定需要觸發(fā)計(jì)算請求時(shí),將所述計(jì)算屬性發(fā)生變化后的值和與所述計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性的值發(fā)送至所述服務(wù)器,以由所述服務(wù)器計(jì)算與所述計(jì)算屬性相關(guān)聯(lián)的結(jié)果屬性的值,以及接收所述服務(wù)器返回的對所述結(jié)果屬性的值計(jì)算后的結(jié)果;處理單元,用于根據(jù)所述交互單元接收到的所述結(jié)果更新所述當(dāng)前頁面上的所述結(jié)果屬性的值。
[0007]在該技術(shù)方案中,(終端)通過在檢測到當(dāng)前頁面上的計(jì)算屬性的值發(fā)生變化時(shí),對是否觸發(fā)計(jì)算請求進(jìn)行判斷,并在判定觸發(fā)計(jì)算請求時(shí),將計(jì)算屬性變化后的值和與計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性的值發(fā)送至服務(wù)器,以使服務(wù)器進(jìn)行計(jì)算,使得終端可以在判定觸發(fā)計(jì)算請求時(shí),僅將部分參數(shù),即值發(fā)生變化的計(jì)算屬性和與計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性發(fā)送至服務(wù)器,并接收服務(wù)器反饋的計(jì)算結(jié)果更新頁面即可,無需將頁面中的所有參數(shù)都發(fā)送至服務(wù)器,也無需更新相應(yīng)的應(yīng)用程序,減少了終端消耗的流量,解決了與服務(wù)器交互時(shí)由于交互參數(shù)過多導(dǎo)致的效率低的問題,降低了應(yīng)用程序的開發(fā)難度。
[0008]在上述技術(shù)方案中,優(yōu)選地,所述判斷單元具體用于:在所述計(jì)算屬性存在于所述判斷條件中的必須屬性集合內(nèi)時(shí),判定不需要觸發(fā)所述計(jì)算請求,以及在所述計(jì)算屬性存在于所述判斷條件中的依賴屬性集合內(nèi)時(shí),判定需要觸發(fā)所述計(jì)算請求。
[0009]在該技術(shù)方案中,必須屬性集合中的屬性是在屬性值發(fā)生變化時(shí),不會觸發(fā)計(jì)算請求的屬性;而依賴屬性集合中的屬性是在屬性值發(fā)生變化時(shí),能夠觸發(fā)計(jì)算請求的屬性,因此可以通過對屬性值發(fā)生變化的計(jì)算屬性所處的集合判斷是否觸發(fā)計(jì)算請求。
[0010]根據(jù)本發(fā)明的另一方面,還提出了一種服務(wù)器,包括:交互單元,用于接收終端發(fā)送的任一頁面上的計(jì)算屬性發(fā)生變化后的值,以及與所述計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性的值,以及將處理單元處理后的計(jì)算結(jié)果返回至所述終端,以供所述終端更新所述任一頁面上的所述結(jié)果屬性的值;所述處理單元,用于根據(jù)所述交互單元接收到的所述計(jì)算屬性發(fā)生變化后的值和所述其他計(jì)算屬性的值,通過與所述任一頁面相對應(yīng)的公式樹計(jì)算與所述計(jì)算屬性相關(guān)聯(lián)的結(jié)果屬性的值,以得到所述計(jì)算結(jié)果。
[0011]在該技術(shù)方案中,通過接收終端發(fā)送的計(jì)算屬性發(fā)生變化后的值和與該計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性的值,并根據(jù)公式樹對結(jié)果屬性的值進(jìn)行計(jì)算,使得終端可以在判定觸發(fā)計(jì)算請求時(shí),僅將部分參數(shù),即值發(fā)生變化的計(jì)算屬性和與計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性發(fā)送至服務(wù)器,由服務(wù)器處理后將計(jì)算結(jié)果反饋至終端更新頁面即可,終端無需將頁面中的所有參數(shù)都發(fā)送至服務(wù)器,也無需更新相應(yīng)的應(yīng)用程序,減少了終端消耗的流量,解決了與終端交互時(shí)由于交互參數(shù)過多導(dǎo)致的效率低的問題,同時(shí)也降低了應(yīng)用程序的開發(fā)難度。
[0012]在上述技術(shù)方案中,優(yōu)選地,還包括:獲取單元,用于獲取所述任一頁面上的所有計(jì)算公式;第一判斷單元,用于根據(jù)針對所述所有計(jì)算公式中的每個計(jì)算公式預(yù)定義的用于判斷所述每個計(jì)算公式內(nèi)的計(jì)算屬性的值發(fā)生變化時(shí)是否觸發(fā)計(jì)算的判斷方法,依次判斷所述每個計(jì)算公式內(nèi)的任一計(jì)算屬性的值發(fā)生改變時(shí),是否會觸發(fā)計(jì)算;所述處理單元還用于,在所述第一判斷單元判定所述任一頁面上的任一計(jì)算公式中的任一計(jì)算屬性的值發(fā)生改變會觸發(fā)計(jì)算時(shí),將所述任一計(jì)算公式中的所有計(jì)算屬性存入計(jì)算屬性集合,將所述任一計(jì)算公式的結(jié)果屬性存入結(jié)果屬性集合,并將所述任一計(jì)算公式存入?yún)⑴c計(jì)算的公式池中;所述服務(wù)器還包括:控制單元,用于依次將所述結(jié)果屬性集合中的每個結(jié)果屬性作為與所述每個結(jié)果屬性對應(yīng)的計(jì)算公式中的計(jì)算屬性,控制所述第一判斷單元和所述處理單元繼續(xù)進(jìn)行處理;第二判斷單元,用于判斷所述公式池中的任一公式的所有計(jì)算屬性中的每個計(jì)算屬性是否存在于所述結(jié)果屬性集合內(nèi);公式樹生成單元,用于在所述第二判斷單元判定所述任一公式的所有計(jì)算屬性均不存在于所述結(jié)果屬性集合內(nèi)時(shí),將所述任一公式加入所述公式樹。
[0013]在該技術(shù)方案中,通過對每個計(jì)算公式、每個結(jié)果屬性進(jìn)行遍歷,能夠確定公式樹中的每個公式的結(jié)果值是唯一的,避免在計(jì)算過程中出現(xiàn)聯(lián)動變化的問題。
[0014]在上述技術(shù)方案中,優(yōu)選地,所述處理單元還用于:在所述第二判斷單元判定所述任一公式的指定計(jì)算屬性存在于所述結(jié)果屬性集合內(nèi)時(shí),將所述指定計(jì)算屬性加入依賴屬性集合內(nèi);判斷條件生成單元,用于將所述公式樹中除一級節(jié)點(diǎn)公式的所有計(jì)算屬性加入必須屬性集合,根據(jù)所述必須屬性集合和所述依賴屬性集合生成用于判斷是否觸發(fā)計(jì)算請求的判斷條件;所述交互單元還用于,將所述判斷條件發(fā)送至所述終端。
[0015]在該技術(shù)方案中,通過確定依賴屬性集合和必須屬性集合,使得終端能夠根據(jù)屬性值發(fā)生變化的計(jì)算屬性所處的集合判斷是否觸發(fā)計(jì)算請求。具體地,在終端確定屬性值發(fā)生變化的計(jì)算屬性存在于必須屬性集合內(nèi),判定不需要觸發(fā)計(jì)算請求,在終端確定屬性值發(fā)生變化的計(jì)算屬性存在于依賴屬性集合內(nèi),判定需要觸發(fā)計(jì)算請求。
[0016]相應(yīng)的,本發(fā)明還提出了一種頁面中結(jié)果屬性值的計(jì)算方法,應(yīng)用于上述終端,包括:檢測當(dāng)前頁面上的計(jì)算屬性的值是否發(fā)生變化;在檢測到所述當(dāng)前頁面上的計(jì)算屬性的值發(fā)生變化時(shí),根據(jù)服務(wù)器返回的用于判斷是否觸發(fā)計(jì)算請求的判斷條件,判斷是否觸發(fā)計(jì)算請求;在判定需要觸發(fā)計(jì)算請求時(shí),將所述計(jì)算屬性發(fā)生變化后的值,以及與所述計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性的值發(fā)送至所述服務(wù)器,以由所述服務(wù)器計(jì)算與所述計(jì)算屬性相關(guān)聯(lián)的結(jié)果屬性的值;接收所述服務(wù)器返回的對所述結(jié)果屬性的值計(jì)算后的結(jié)果,并更新所述當(dāng)前頁面上的所述結(jié)果屬性的值。
[0017]在該技術(shù)方案中,(終端)通過在檢測到當(dāng)前頁面上的計(jì)算屬性的值發(fā)生變化時(shí),對是否觸發(fā)計(jì)算請求進(jìn)行判斷,并在判定觸發(fā)計(jì)算請求時(shí),將計(jì)算屬性變化后的值和與計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性的值發(fā)送至服務(wù)器,以使服務(wù)器進(jìn)行計(jì)算,使得終端可以在判定觸發(fā)計(jì)算請求時(shí),僅將部分參數(shù),即值發(fā)生變化的計(jì)算屬性和與計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性發(fā)送至服務(wù)器,并接收服務(wù)器反饋的計(jì)算結(jié)果更新頁面即可,無需將頁面中的所有參數(shù)都發(fā)送至服務(wù)器,也無需更新相應(yīng)的應(yīng)用程序,減少了終端消耗的流量,解決了與服務(wù)器交互時(shí)由于交互參數(shù)過多導(dǎo)致的效率低的問題,降低了應(yīng)用程序的開發(fā)難度。
[0018]在上述技術(shù)方案中,優(yōu)選地,判斷是否觸發(fā)計(jì)算請求的步驟具體為:若所述計(jì)算屬性存在于所述判斷條件中的必須屬性集合內(nèi),則判定不需要觸發(fā)所述計(jì)算請求,以及若所述計(jì)算屬性存在于所述判斷條件中的依賴屬性集合內(nèi),則判定需要觸發(fā)所述計(jì)算請求。
[0019]在該技術(shù)方案中,必須屬性集合中的屬性是在屬性值發(fā)生變化時(shí),不會觸發(fā)計(jì)算請求的屬性;而依賴屬性集合中的屬性是在屬性值發(fā)生變化時(shí),能夠觸發(fā)計(jì)算請求的屬性,因此可以通過對屬性值發(fā)生變化的計(jì)算屬性所處的集合判斷是否觸發(fā)計(jì)算請求。
[0020]本發(fā)明還提出了一種頁面中結(jié)果屬性值的計(jì)算方法,應(yīng)用于上述服務(wù)器,包括:接收終端發(fā)送的任一頁面上的計(jì)算屬性發(fā)生變化后的值,以及與所述計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性的值;根據(jù)所述計(jì)算屬性發(fā)生變化后的值和所述其他計(jì)算屬性的值,通過與所述任一頁面相對應(yīng)的公式樹計(jì)算與所述計(jì)算屬性相關(guān)聯(lián)的結(jié)果屬性的值,以得到計(jì)算結(jié)果;將所述計(jì)算結(jié)果返回至所述終端,以供所述終端更新所述任一頁面上的所述結(jié)果屬性的值。
[0021]在該技術(shù)方案中,通過接收終端發(fā)送的計(jì)算屬性發(fā)生變化后的值和與該計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性的值,并根據(jù)公式樹對結(jié)果屬性的值進(jìn)行計(jì)算,使得終端可以在判定觸發(fā)計(jì)算請求時(shí),僅將部分參數(shù),即值發(fā)生變化的計(jì)算屬性和與計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性發(fā)送至服務(wù)器,由服務(wù)器處理后將計(jì)算結(jié)果反饋至終端更新頁面即可,終端無需將頁面中的所有參數(shù)都發(fā)送至服務(wù)器,也無需更新相應(yīng)的應(yīng)用程序,減少了終端消耗的流量,解決了與終端交互時(shí)由于交互參數(shù)過多導(dǎo)致的效率低的問題,同時(shí)也降低了應(yīng)用程序的開發(fā)難度。
[0022]在上述技術(shù)方案中,優(yōu)選地,在計(jì)算所述結(jié)果屬性的值之前,還包括:獲取步驟,獲取所述任一頁面上的所有計(jì)算公式;判斷步驟,根據(jù)針對所述所有計(jì)算公式中的每個計(jì)算公式預(yù)定義的用于判斷所述每個計(jì)算公式內(nèi)的計(jì)算屬性的值發(fā)生變化時(shí)是否觸發(fā)計(jì)算的判斷方法,依次判斷所述每個計(jì)算公式內(nèi)的任一計(jì)算屬性的值發(fā)生改變時(shí),是否會觸發(fā)計(jì)算;處理步驟,在判定所述任一頁面上的任一計(jì)算公式中的任一計(jì)算屬性的值發(fā)生改變會觸發(fā)計(jì)算時(shí),將所述任一計(jì)算公式中的所有計(jì)算屬性存入計(jì)算屬性集合,將所述任一計(jì)算公式的結(jié)果屬性存入結(jié)果屬性集合,并將所述任一計(jì)算公式存入?yún)⑴c計(jì)算的公式池中;依次將所述結(jié)果屬性集合中的每個結(jié)果屬性作為與所述每個結(jié)果屬性對應(yīng)的計(jì)算公式中的計(jì)算屬性,繼續(xù)執(zhí)行所述判斷步驟與所述處理步驟;判斷所述公式池中的任一公式的所有計(jì)算屬性中的每個計(jì)算屬性是否存在于所述結(jié)果屬性集合內(nèi),以及在判定所述任一公式的所有計(jì)算屬性均不存在于所述結(jié)果屬性集合內(nèi)時(shí),將所述任一公式加入所述公式樹。
[0023]在該技術(shù)方案中,通過對每個計(jì)算公式、每個結(jié)果屬性進(jìn)行遍歷,能夠確定公式樹中的每個公式的結(jié)果值是唯一的,避免在計(jì)算過程中出現(xiàn)聯(lián)動變化的問題。
[0024]在上述技術(shù)方案中,優(yōu)選地,還包括:在判定所述任一公式中的指定計(jì)算屬性存在于所述結(jié)果屬性集合內(nèi)時(shí),將所述指定計(jì)算屬性加入依賴屬性集合內(nèi);將所述公式樹中除一級節(jié)點(diǎn)公式的所有計(jì)算屬性加入必須屬性集合,根據(jù)所述必須屬性集合和所述依賴屬性集合生成用于判斷是否觸發(fā)計(jì)算請求的判斷條件,并發(fā)送至所述終端。
[0025]在該技術(shù)方案中,通過確定依賴屬性集合和必須屬性集合,使得終端能夠根據(jù)屬性值發(fā)生變化的計(jì)算屬性所處的集合判斷是否觸發(fā)計(jì)算請求。具體地,在終端確定屬性值發(fā)生變化的計(jì)算屬性存在于必須屬性集合內(nèi),判定不需要觸發(fā)計(jì)算請求,在終端確定屬性值發(fā)生變化的計(jì)算屬性存在于依賴屬性集合內(nèi),判定需要觸發(fā)計(jì)算請求。
[0026]通過以上技術(shù)方案,可以在解決終端(即移動端)聯(lián)動變化的問題時(shí),降低終端消耗的流量,提高終端與服務(wù)器之間的交互效率,同時(shí)降低應(yīng)用程序的開發(fā)難度。
【專利附圖】
【附圖說明】
[0027]圖1示出了根據(jù)本發(fā)明的實(shí)施例的終端的示意框圖;
[0028]圖2示出了根據(jù)本發(fā)明的實(shí)施例的服務(wù)器的示意框圖;
[0029]圖3示出了根據(jù)本發(fā)明的一個實(shí)施例的頁面中結(jié)果屬性值的計(jì)算方法的示意流程圖;
[0030]圖4示出了根據(jù)本發(fā)明的另一個實(shí)施例的頁面中結(jié)果屬性值的計(jì)算方法的示意流程圖;
[0031]圖5示出了根據(jù)本發(fā)明的再一個實(shí)施例的頁面中結(jié)果屬性值的計(jì)算方法的示意流程圖;
[0032]圖6示出了根據(jù)本發(fā)明的實(shí)施例的頁面參數(shù)屬性的獲取流程示意圖。
【具體實(shí)施方式】
[0033]為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點(diǎn),下面結(jié)合附圖和【具體實(shí)施方式】對本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。需要說明的是,在不沖突的情況下,本申請的實(shí)施例及實(shí)施例中的特征可以相互組合。
[0034]在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來實(shí)施,因此,本發(fā)明的保護(hù)范圍并不受下面公開的具體實(shí)施例的限制。
[0035]圖1示出了根據(jù)本發(fā)明的實(shí)施例的終端的示意框圖。
[0036]如圖1所示,根據(jù)本發(fā)明的實(shí)施例的終端100,包括:檢測單元102,用于檢測當(dāng)前頁面上的計(jì)算屬性的值是否發(fā)生變化;判斷單元104,用于在所述檢測單元102檢測到所述當(dāng)前頁面上的計(jì)算屬性的值發(fā)生變化時(shí),根據(jù)服務(wù)器返回的用于判斷是否觸發(fā)計(jì)算請求的判斷條件,判斷是否觸發(fā)計(jì)算請求;交互單元106,用于在所述判斷單元104判定需要觸發(fā)計(jì)算請求時(shí),將所述計(jì)算屬性發(fā)生變化后的值和與所述計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性的值發(fā)送至所述服務(wù)器,以由所述服務(wù)器計(jì)算與所述計(jì)算屬性相關(guān)聯(lián)的結(jié)果屬性的值,以及接收所述服務(wù)器返回的對所述結(jié)果屬性的值計(jì)算后的結(jié)果;處理單元108,用于根據(jù)所述交互單元106接收到的所述結(jié)果更新所述當(dāng)前頁面上的所述結(jié)果屬性的值。
[0037]在該技術(shù)方案中,(終端)通過在檢測到當(dāng)前頁面上的計(jì)算屬性的值發(fā)生變化時(shí),對是否觸發(fā)計(jì)算請求進(jìn)行判斷,并在判定觸發(fā)計(jì)算請求時(shí),將計(jì)算屬性變化后的值和與計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性的值發(fā)送至服務(wù)器,以使服務(wù)器進(jìn)行計(jì)算,使得終端可以在判定觸發(fā)計(jì)算請求時(shí),僅將部分參數(shù),即值發(fā)生變化的計(jì)算屬性和與計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性發(fā)送至服務(wù)器,并接收服務(wù)器反饋的計(jì)算結(jié)果更新頁面即可,無需將頁面中的所有參數(shù)都發(fā)送至服務(wù)器,也無需更新相應(yīng)的應(yīng)用程序,減少了終端消耗的流量,解決了與服務(wù)器交互時(shí)由于交互參數(shù)過多導(dǎo)致的效率低的問題,降低了應(yīng)用程序的開發(fā)難度。
[0038]在上述技術(shù)方案中,優(yōu)選地,所述判斷單元104具體用于:在所述計(jì)算屬性存在于所述判斷條件中的必須屬性集合內(nèi)時(shí),判定不需要觸發(fā)所述計(jì)算請求,以及在所述計(jì)算屬性存在于所述判斷條件中的依賴屬性集合內(nèi)時(shí),判定需要觸發(fā)所述計(jì)算請求。
[0039]在該技術(shù)方案中,必須屬性集合中的屬性是在屬性值發(fā)生變化時(shí),不會觸發(fā)計(jì)算請求的屬性;而依賴屬性集合中的屬性是在屬性值發(fā)生變化時(shí),能夠觸發(fā)計(jì)算請求的屬性,因此可以通過對屬性值發(fā)生變化的計(jì)算屬性所處的集合判斷是否觸發(fā)計(jì)算請求。
[0040]圖2示出了根據(jù)本發(fā)明的實(shí)施例的服務(wù)器的示意框圖。
[0041]如圖2所示,根據(jù)本發(fā)明的實(shí)施例的服務(wù)器200,包括:交互單元202,用于接收終端發(fā)送的任一頁面上的計(jì)算屬性發(fā)生變化后的值,以及與所述計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性的值,以及將處理單元204處理后的計(jì)算結(jié)果返回至所述終端,以供所述終端更新所述任一頁面上的所述結(jié)果屬性的值;所述處理單元204,用于根據(jù)所述交互單元202接收到的所述計(jì)算屬性發(fā)生變化后的值和所述其他計(jì)算屬性的值,通過與所述任一頁面相對應(yīng)的公式樹計(jì)算與所述計(jì)算屬性相關(guān)聯(lián)的結(jié)果屬性的值,以得到所述計(jì)算結(jié)果。
[0042]在該技術(shù)方案中,通過接收終端發(fā)送的計(jì)算屬性發(fā)生變化后的值和與該計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性的值,并根據(jù)公式樹對結(jié)果屬性的值進(jìn)行計(jì)算,使得終端可以在判定觸發(fā)計(jì)算請求時(shí),僅將部分參數(shù),即值發(fā)生變化的計(jì)算屬性和與計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性發(fā)送至服務(wù)器,由服務(wù)器處理后將計(jì)算結(jié)果反饋至終端更新頁面即可,終端無需將頁面中的所有參數(shù)都發(fā)送至服務(wù)器,也無需更新相應(yīng)的應(yīng)用程序,減少了終端消耗的流量,解決了與終端交互時(shí)由于交互參數(shù)過多導(dǎo)致的效率低的問題,同時(shí)也降低了應(yīng)用程序的開發(fā)難度。
[0043]在上述技術(shù)方案中,優(yōu)選地,還包括:獲取單元206,用于獲取所述任一頁面上的所有計(jì)算公式;第一判斷單元208,用于根據(jù)針對所述所有計(jì)算公式中的每個計(jì)算公式預(yù)定義的用于判斷所述每個計(jì)算公式內(nèi)的計(jì)算屬性的值發(fā)生變化時(shí)是否觸發(fā)計(jì)算的判斷方法,依次判斷所述每個計(jì)算公式內(nèi)的任一計(jì)算屬性的值發(fā)生改變時(shí),是否會觸發(fā)計(jì)算;所述處理單元204還用于,在所述第一判斷單元208判定所述任一頁面上的任一計(jì)算公式中的任一計(jì)算屬性的值發(fā)生改變會觸發(fā)計(jì)算時(shí),將所述任一計(jì)算公式中的所有計(jì)算屬性存入計(jì)算屬性集合,將所述任一計(jì)算公式的結(jié)果屬性存入結(jié)果屬性集合,并將所述任一計(jì)算公式存入?yún)⑴c計(jì)算的公式池中;所述服務(wù)器200還包括:控制單元210,用于依次將所述結(jié)果屬性集合中的每個結(jié)果屬性作為與所述每個結(jié)果屬性對應(yīng)的計(jì)算公式中的計(jì)算屬性,控制所述第一判斷單元208和所述處理單元204繼續(xù)進(jìn)行處理;第二判斷單元212,用于判斷所述公式池中的任一公式的所有計(jì)算屬性中的每個計(jì)算屬性是否存在于所述結(jié)果屬性集合內(nèi);公式樹生成單元214,用于在所述第二判斷單元212判定所述任一公式的所有計(jì)算屬性均不存在于所述結(jié)果屬性集合內(nèi)時(shí),將所述任一公式加入所述公式樹。
[0044]在該技術(shù)方案中,通過對每個計(jì)算公式、每個結(jié)果屬性進(jìn)行遍歷,能夠確定公式樹中的每個公式的結(jié)果值是唯一的,避免在計(jì)算過程中出現(xiàn)聯(lián)動變化的問題。
[0045]在上述技術(shù)方案中,優(yōu)選地,所述處理單元204還用于:在所述第二判斷單元212判定所述任一公式的指定計(jì)算屬性存在于所述結(jié)果屬性集合內(nèi)時(shí),將所述指定計(jì)算屬性加入依賴屬性集合內(nèi);所示服務(wù)器200還包括:判斷條件生成單元216,用于將所述公式樹中除一級節(jié)點(diǎn)公式的所有計(jì)算屬性加入必須屬性集合,根據(jù)所述必須屬性集合和所述依賴屬性集合生成用于判斷是否觸發(fā)計(jì)算請求的判斷條件;所述交互單元202還用于,將所述判斷條件發(fā)送至所述終端。
[0046]在該技術(shù)方案中,通過確定依賴屬性集合和必須屬性集合,使得終端能夠根據(jù)屬性值發(fā)生變化的計(jì)算屬性所處的集合判斷是否觸發(fā)計(jì)算請求。具體地,在終端確定屬性值發(fā)生變化的計(jì)算屬性存在于必須屬性集合內(nèi),判定不需要觸發(fā)計(jì)算請求,在終端確定屬性值發(fā)生變化的計(jì)算屬性存在于依賴屬性集合內(nèi),判定需要觸發(fā)計(jì)算請求。
[0047]圖3示出了根據(jù)本發(fā)明的一個實(shí)施例的頁面中結(jié)果屬性值的計(jì)算方法的示意流程圖。
[0048]如圖3所示,根據(jù)本發(fā)明的一個實(shí)施例的頁面中結(jié)果屬性值的計(jì)算方法,應(yīng)用于圖1中所示的終端100,包括:步驟302,檢測當(dāng)前頁面上的計(jì)算屬性的值是否發(fā)生變化;步驟304,在檢測到所述當(dāng)前頁面上的計(jì)算屬性的值發(fā)生變化時(shí),根據(jù)服務(wù)器返回的用于判斷是否觸發(fā)計(jì)算請求的判斷條件,判斷是否觸發(fā)計(jì)算請求;步驟306,在判定需要觸發(fā)計(jì)算請求時(shí),將所述計(jì)算屬性發(fā)生變化后的值,以及與所述計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性的值發(fā)送至所述服務(wù)器,以由所述服務(wù)器計(jì)算與所述計(jì)算屬性相關(guān)聯(lián)的結(jié)果屬性的值;步驟308,接收所述服務(wù)器返回的對所述結(jié)果屬性的值計(jì)算后的結(jié)果,并更新所述當(dāng)前頁面上的所述結(jié)果屬性的值。
[0049]在該技術(shù)方案中,(終端)通過在檢測到當(dāng)前頁面上的計(jì)算屬性的值發(fā)生變化時(shí),對是否觸發(fā)計(jì)算請求進(jìn)行判斷,并在判定觸發(fā)計(jì)算請求時(shí),將計(jì)算屬性變化后的值和與計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性的值發(fā)送至服務(wù)器,以使服務(wù)器進(jìn)行計(jì)算,使得終端可以在判定觸發(fā)計(jì)算請求時(shí),僅將部分參數(shù),即值發(fā)生變化的計(jì)算屬性和與計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性發(fā)送至服務(wù)器,并接收服務(wù)器反饋的計(jì)算結(jié)果更新頁面即可,無需將頁面中的所有參數(shù)都發(fā)送至服務(wù)器,也無需更新相應(yīng)的應(yīng)用程序,減少了終端消耗的流量,解決了與服務(wù)器交互時(shí)由于交互參數(shù)過多導(dǎo)致的效率低的問題,降低了應(yīng)用程序的開發(fā)難度。
[0050]在上述技術(shù)方案中,優(yōu)選地,判斷是否觸發(fā)計(jì)算請求的步驟具體為:若所述計(jì)算屬性存在于所述判斷條件中的必須屬性集合內(nèi),則判定不需要觸發(fā)所述計(jì)算請求,以及若所述計(jì)算屬性存在于所述判斷條件中的依賴屬性集合內(nèi),則判定需要觸發(fā)所述計(jì)算請求。
[0051]在該技術(shù)方案中,必須屬性集合中的屬性是在屬性值發(fā)生變化時(shí),不會觸發(fā)計(jì)算請求的屬性;而依賴屬性集合中的屬性是在屬性值發(fā)生變化時(shí),能夠觸發(fā)計(jì)算請求的屬性,因此可以通過對屬性值發(fā)生變化的計(jì)算屬性所處的集合判斷是否觸發(fā)計(jì)算請求。
[0052]圖4示出了根據(jù)本發(fā)明的另一個實(shí)施例的頁面中結(jié)果屬性值的計(jì)算方法的示意流程圖。
[0053]如圖4所示,根據(jù)本發(fā)明的另一個實(shí)施例的頁面中結(jié)果屬性值的計(jì)算方法,應(yīng)用于圖2中所示的服務(wù)器200,包括:步驟402,接收終端發(fā)送的任一頁面上的計(jì)算屬性發(fā)生變化后的值,以及與所述計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性的值;步驟404,根據(jù)所述計(jì)算屬性發(fā)生變化后的值和所述其他計(jì)算屬性的值,通過與所述任一頁面相對應(yīng)的公式樹計(jì)算與所述計(jì)算屬性相關(guān)聯(lián)的結(jié)果屬性的值,以得到計(jì)算結(jié)果;步驟406,將所述計(jì)算結(jié)果返回至所述終端,以供所述終端更新所述任一頁面上的所述結(jié)果屬性的值。
[0054]在該技術(shù)方案中,通過接收終端發(fā)送的計(jì)算屬性發(fā)生變化后的值和與該計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性的值,并根據(jù)公式樹對結(jié)果屬性的值進(jìn)行計(jì)算,使得終端可以在判定觸發(fā)計(jì)算請求時(shí),僅將部分參數(shù),即值發(fā)生變化的計(jì)算屬性和與計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性發(fā)送至服務(wù)器,由服務(wù)器處理后將計(jì)算結(jié)果反饋至終端更新頁面即可,終端無需將頁面中的所有參數(shù)都發(fā)送至服務(wù)器,也無需更新相應(yīng)的應(yīng)用程序,減少了終端消耗的流量,解決了與終端交互時(shí)由于交互參數(shù)過多導(dǎo)致的效率低的問題,同時(shí)也降低了應(yīng)用程序的開發(fā)難度。
[0055]在上述技術(shù)方案中,優(yōu)選地,在計(jì)算所述結(jié)果屬性的值之前,還包括:獲取步驟,獲取所述任一頁面上的所有計(jì)算公式;判斷步驟,根據(jù)針對所述所有計(jì)算公式中的每個計(jì)算公式預(yù)定義的用于判斷所述每個計(jì)算公式內(nèi)的計(jì)算屬性的值發(fā)生變化時(shí)是否觸發(fā)計(jì)算的判斷方法,依次判斷所述每個計(jì)算公式內(nèi)的任一計(jì)算屬性的值發(fā)生改變時(shí),是否會觸發(fā)計(jì)算;處理步驟,在判定所述任一頁面上的任一計(jì)算公式中的任一計(jì)算屬性的值發(fā)生改變會觸發(fā)計(jì)算時(shí),將所述任一計(jì)算公式中的所有計(jì)算屬性存入計(jì)算屬性集合,將所述任一計(jì)算公式的結(jié)果屬性存入結(jié)果屬性集合,并將所述任一計(jì)算公式存入?yún)⑴c計(jì)算的公式池中;依次將所述結(jié)果屬性集合中的每個結(jié)果屬性作為與所述每個結(jié)果屬性對應(yīng)的計(jì)算公式中的計(jì)算屬性,繼續(xù)執(zhí)行所述判斷步驟與所述處理步驟;判斷所述公式池中的任一公式的所有計(jì)算屬性中的每個計(jì)算屬性是否存在于所述結(jié)果屬性集合內(nèi),以及在判定所述任一公式的所有計(jì)算屬性均不存在于所述結(jié)果屬性集合內(nèi)時(shí),將所述任一公式加入所述公式樹。
[0056]在該技術(shù)方案中,通過對每個計(jì)算公式、每個結(jié)果屬性進(jìn)行遍歷,能夠確定公式樹中的每個公式的結(jié)果值是唯一的,避免在計(jì)算過程中出現(xiàn)聯(lián)動變化的問題。
[0057]在上述技術(shù)方案中,優(yōu)選地,還包括:在判定所述任一公式中的指定計(jì)算屬性存在于所述結(jié)果屬性集合內(nèi)時(shí),將所述指定計(jì)算屬性加入依賴屬性集合內(nèi);將所述公式樹中除一級節(jié)點(diǎn)公式的所有計(jì)算屬性加入必須屬性集合,根據(jù)所述必須屬性集合和所述依賴屬性集合生成用于判斷是否觸發(fā)計(jì)算請求的判斷條件,并發(fā)送至所述終端。
[0058]在該技術(shù)方案中,通過確定依賴屬性集合和必須屬性集合,使得終端能夠根據(jù)屬性值發(fā)生變化的計(jì)算屬性所處的集合判斷是否觸發(fā)計(jì)算請求。具體地,在終端確定屬性值發(fā)生變化的計(jì)算屬性存在于必須屬性集合內(nèi),判定不需要觸發(fā)計(jì)算請求,在終端確定屬性值發(fā)生變化的計(jì)算屬性存在于依賴屬性集合內(nèi),判定需要觸發(fā)計(jì)算請求。
[0059]下面結(jié)合圖詳細(xì)說明本發(fā)明的技術(shù)方案。
[0060]如圖5所示,根據(jù)本發(fā)明的再一個實(shí)施例的頁面中結(jié)果屬性值的計(jì)算方法,主要包括:
[0061]步驟502,定義計(jì)算公式的屬性信息。
[0062]其中,計(jì)算公式是指用于描述頁面上的屬性值發(fā)生變化時(shí)所觸發(fā)的聯(lián)動規(guī)則,例如,單價(jià)發(fā)生變化時(shí),會與數(shù)量相乘改變金額;或者選擇一件商品后會同時(shí)改變頁面上的商品單價(jià),商品單位等。
[0063]在實(shí)際的業(yè)務(wù)場景中,頁面屬性變化發(fā)生的聯(lián)動變化可能會比較復(fù)雜,涉及到多個公式進(jìn)行計(jì)算,例如,選擇的商品進(jìn)行切換,會改變商品的單價(jià);商品的單價(jià)改變之后會與數(shù)量相乘得到商品的金額;商品的金額改變后表頭會對所有的明細(xì)商品金額進(jìn)行匯總,改變商品的匯總金額等等。對于一個頁面屬性改變所會觸發(fā)到的所有計(jì)算公式,在這里稱為一個公式樹。
[0064]在步驟502中,開發(fā)人員需要根據(jù)具體的業(yè)務(wù)規(guī)則,定義一系列公式;定義一個公式需要分為三個步驟:
[0065]I)對公式進(jìn)行初始化,實(shí)現(xiàn)計(jì)算接口。將公式計(jì)算需要的參數(shù)屬性以及結(jié)果屬性傳入公式中。在本計(jì)算引擎中定義的公式需滿足以下兩個原則:
[0066]A、公式必須是只有一個結(jié)果值的公式,若存在多個結(jié)果值,則可通過定義多個公式實(shí)現(xiàn);
[0067]B、每個公式在一個公式樹中只能計(jì)算一次,并且每個屬性在一個公式樹中值唯一;絕大數(shù)業(yè)務(wù)場景符合本規(guī)則,若存在特殊業(yè)務(wù)場景,也可通過定義一個由多個公式組成的公式實(shí)現(xiàn)。
[0068]2)定義公式的計(jì)算規(guī)則。根據(jù)業(yè)務(wù)的計(jì)算規(guī)則,實(shí)現(xiàn)計(jì)算接口中的計(jì)算方法;計(jì)算引擎在計(jì)算到這個公式時(shí)會調(diào)用這個方法,傳入的參數(shù)為公式計(jì)算所需的以及之前公式計(jì)算結(jié)果的屬性與屬性對應(yīng)值的數(shù)據(jù)結(jié)構(gòu);若參數(shù)中的元素滿足該公式的計(jì)算原則,則根據(jù)業(yè)務(wù)規(guī)則進(jìn)行計(jì)算,將計(jì)算結(jié)果值返回,否則不進(jìn)行計(jì)算。
[0069]3)定義不會觸發(fā)該公式的改變屬性。由于計(jì)算引擎會根據(jù)公式動態(tài)的形成公式樹,但是在某些業(yè)務(wù)場景下,生成的公式樹中的某些公式并不應(yīng)該參與計(jì)算,這個方法能夠保證在生成公式樹時(shí)過濾掉這個公式。
[0070]開發(fā)者將定義好的一系列公式添加到公式池中,創(chuàng)建計(jì)算引擎實(shí)例,將公式池添加到計(jì)算引擎中,同時(shí)將頁面上會觸發(fā)計(jì)算的計(jì)算屬性添加到計(jì)算引擎中。
[0071]步驟504,獲取頁面的參數(shù)屬性,以便移動端在頁面初始化時(shí)進(jìn)行調(diào)用。
[0072]當(dāng)頁面某一計(jì)算屬性發(fā)生變化時(shí),有可能并不會去觸發(fā)計(jì)算,例如,當(dāng)頁面上并未填寫數(shù)量時(shí),改變單價(jià)不會進(jìn)行單價(jià)乘以數(shù)量等于金額的計(jì)算;像示例中數(shù)量這樣的屬性,稱為必須條件。
[0073]考慮到移動應(yīng)用交互的性能問題以及流量問題,計(jì)算屬性發(fā)生變化時(shí)并不需要將整個頁面的屬性值作為參數(shù)提交到服務(wù)器端,只需要將計(jì)算中參與的屬性值提交即可,這些屬性稱為依賴條件。
[0074]計(jì)算引擎會根據(jù)公式定義規(guī)則,返回頁面元素發(fā)生變化時(shí)觸發(fā)計(jì)算請求的必須條件,以及進(jìn)行計(jì)算的依賴條件。
[0075]具體算法如下:
[0076]計(jì)算引擎會將公式定義時(shí)傳入引擎中的每個計(jì)算屬性認(rèn)為是一個變化屬性,作為觸發(fā)計(jì)算的源頭,對公式池進(jìn)行遍歷。
[0077]若這個公式在定義時(shí)定義了源頭屬性改變不觸發(fā)計(jì)算,則繼續(xù)循環(huán);否則將該公式的id添加到id集合,將公式的參數(shù)添加到參數(shù)屬性集合,將公式的結(jié)果值添加到結(jié)果屬性集合,將公式添加到參與計(jì)算的公式池中;同時(shí)將該公式的結(jié)果屬性作為變化屬性進(jìn)行遞歸遍歷。
[0078]遞歸結(jié)束后,計(jì)算的公式池中的公式即為源頭屬性變化后會觸發(fā)計(jì)算的全部公式;參數(shù)屬性集合即為計(jì)算的公式的全部參數(shù);結(jié)果屬性集合即為計(jì)算的公式的全部結(jié)果。
[0079]接下來遍歷參與計(jì)算的公式池,若公式的參數(shù)屬性在結(jié)果屬性集合中不存在,則表明這個屬性在整個計(jì)算公式樹中沒有發(fā)生變化,可以直接參與計(jì)算,稱其為不變值。
[0080]將不變值加入到不變值集合中(源頭屬性默認(rèn)在不變值集合中);若公式的全部參數(shù)都存在于不變值集合,則表明該公式的全部參數(shù)不會受其他公式計(jì)算的結(jié)果影響,滿足計(jì)算的條件,將該公式添加到公式樹中。
[0081]因?yàn)樵诠蕉x時(shí),每個公式在一個公式樹中只能觸發(fā)一次,每個屬性在公式樹中是唯一的原則,保證了每個結(jié)果值的來源公式是唯一的,所以不存在公式計(jì)算優(yōu)先級的問題;因此形成的公式樹不存在計(jì)算順序的問題。
[0082]將計(jì)算依賴的參數(shù)屬性添加到依賴屬性集合中。當(dāng)對參與計(jì)算的公式池遍歷完成后,得到的公式樹即為源頭屬性改變會依次觸發(fā)的計(jì)算公式,依賴的屬性集合即為計(jì)算所需的頁面屬性值,在公式樹中,一級節(jié)點(diǎn)的公式的參數(shù)除源頭屬性外,即為觸發(fā)計(jì)算所需的必須條件。
[0083]將所有計(jì)算屬性觸發(fā)計(jì)算所需的必須條件與依賴條件,按照與移動端約定的數(shù)據(jù)結(jié)構(gòu)返回;當(dāng)頁面屬性改變后,移動端即可依據(jù)該規(guī)則發(fā)送計(jì)算請求以及提交參數(shù)。
[0084]步驟506,移動端提交計(jì)算,服務(wù)端進(jìn)行計(jì)算。
[0085]具體地,當(dāng)用戶對頁面上計(jì)算屬性的值改變時(shí),移動端會根據(jù)頁面初始化時(shí)獲取的必須條件進(jìn)行校驗(yàn),確定是否觸發(fā)計(jì)算請求,若觸發(fā)計(jì)算請求,則移動端會根據(jù)依賴條件,將頁面上參與計(jì)算的屬性值和變化屬性與值提交給服務(wù)端;服務(wù)端會將參數(shù)值傳入計(jì)算引擎,計(jì)算引擎根據(jù)初始化好的公式樹依次調(diào)用公式的計(jì)算方法進(jìn)行計(jì)算,將公式樹計(jì)算的結(jié)果按照與移動端預(yù)定的數(shù)據(jù)結(jié)構(gòu)返回給移動端;移動端將計(jì)算結(jié)果展示給用戶;提交計(jì)算的流程結(jié)束。
[0086]其中,步驟504的具體流程圖可以如圖6所示。
[0087]圖6示出了根據(jù)本發(fā)明的實(shí)施例的頁面參數(shù)屬性的獲取流程示意圖。
[0088]如圖6所示,根據(jù)本發(fā)明的實(shí)施例的頁面參數(shù)屬性的獲取流程,包括:
[0089]步驟602,將變化屬性傳入計(jì)算引擎。
[0090]步驟604,遍歷公式池,選出變化屬性作為參數(shù)的公式。
[0091]步驟606,判斷變化屬性改變時(shí)是否會觸發(fā)公式計(jì)算,若是,則執(zhí)行步驟608;否貝U,返回步驟604。
[0092]步驟608,在判定變化屬性改變會觸發(fā)公式計(jì)算時(shí),將該公式的id添加到id集合,將公式的參數(shù)添加到參數(shù)屬性集合,將公式的結(jié)果值添加到結(jié)果屬性集合,將公式添加到參與計(jì)算的公式池中。
[0093]步驟610,判斷是否遞歸結(jié)束,若是,則執(zhí)行步驟614 ;否則,執(zhí)行步驟612。
[0094]步驟612,將結(jié)果屬性作為變化屬性傳入計(jì)算引擎。
[0095]步驟614,遍歷參與計(jì)算的公式池。
[0096]步驟616,判斷公式的參數(shù)屬性是否不存在于結(jié)果屬性集合內(nèi),若是,則執(zhí)行步驟618 ;否則,執(zhí)行步驟624。
[0097]步驟618,將參數(shù)屬性加入到不變值集合。
[0098]步驟620,判斷公式的全部參數(shù)屬性是否存在于不變值集合,若是,則執(zhí)行步驟622。
[0099]步驟622,將公式添加到公式樹。
[0100]步驟624,將參數(shù)屬性加入到依賴值集合。
[0101]步驟626,判斷公式池中的公式是否遍歷結(jié)束,若是,則結(jié)束;否則,返回步驟614繼續(xù)遍歷公式。
[0102]在以上技術(shù)方案中,服務(wù)端提供了計(jì)算引擎,預(yù)置了計(jì)算邏輯公式,移動端只需要按照引擎的要求提供參數(shù)數(shù)據(jù),發(fā)起一次接口調(diào)用,用返回值局部刷新頁面,就能得到與PC端一致的交互邏輯。當(dāng)業(yè)務(wù)發(fā)生變動或項(xiàng)目有新需求時(shí),只需要更新引擎中注入的公式,不需要重新發(fā)布應(yīng)用程序,用戶既能得到新的交互特性。類似于從C/S (Client/server,客戶端/服務(wù)器)結(jié)構(gòu)發(fā)布形式轉(zhuǎn)到B/S (Browser/Server,瀏覽器/服務(wù)器)結(jié)構(gòu)發(fā)布形式,簡化了處理流程。
[0103]以上結(jié)合附圖詳細(xì)說明了本發(fā)明的技術(shù)方案,考慮到相關(guān)技術(shù)中聯(lián)動變化的邏輯在移動端進(jìn)行處理會面臨兩個問題:一個是值改變會觸發(fā)大量的移動端與服務(wù)器端的交互而影響效率,另一個是會增加移動端的開發(fā)難度。因此,本發(fā)明提出了一種新的頁面中結(jié)果屬性值的計(jì)算方案,可以在解決終端(即移動端)聯(lián)動變化的問題時(shí),降低終端消耗的流量,提高終端與服務(wù)器之間的交互效率,同時(shí)降低應(yīng)用程序的開發(fā)難度。
[0104]以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種終端,其特征在于,包括: 檢測單元,用于檢測當(dāng)前頁面上的計(jì)算屬性的值是否發(fā)生變化; 判斷單元,用于在所述檢測單元檢測到所述當(dāng)前頁面上的計(jì)算屬性的值發(fā)生變化時(shí),根據(jù)服務(wù)器返回的用于判斷是否觸發(fā)計(jì)算請求的判斷條件,判斷是否觸發(fā)計(jì)算請求; 交互單元,用于在所述判斷單元判定需要觸發(fā)計(jì)算請求時(shí),將所述計(jì)算屬性發(fā)生變化后的值和與所述計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性的值發(fā)送至所述服務(wù)器,以由所述服務(wù)器計(jì)算與所述計(jì)算屬性相關(guān)聯(lián)的結(jié)果屬性的值,以及 接收所述服務(wù)器返回的對所述結(jié)果屬性的值計(jì)算后的結(jié)果; 處理單元,用于根據(jù)所述交互單元接收到的所述結(jié)果更新所述當(dāng)前頁面上的所述結(jié)果屬性的值。
2.根據(jù)權(quán)利要求1所述的終端,其特征在于,所述判斷單元具體用于: 在所述計(jì)算屬性存在于所述判斷條件中的必須屬性集合內(nèi)時(shí),判定不需要觸發(fā)所述計(jì)算請求,以及 在所述計(jì)算屬性存在于所述判斷條件中的依賴屬性集合內(nèi)時(shí),判定需要觸發(fā)所述計(jì)算請求。
3.一種服務(wù)器,其特征在于,包括: 交互單元,用于接收終端發(fā)送的任一頁面上的計(jì)算屬性發(fā)生變化后的值,以及與所述計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性的值,以及 將處理單元處理后的計(jì)算結(jié)果返回至所述終端,以供所述終端更新所述任一頁面上的所述結(jié)果屬性的值; 所述處理單元,用于根據(jù)所述交互單元接收到的所述計(jì)算屬性發(fā)生變化后的值和所述其他計(jì)算屬性的值,通過與所述任一頁面相對應(yīng)的公式樹計(jì)算與所述計(jì)算屬性相關(guān)聯(lián)的結(jié)果屬性的值,以得到所述計(jì)算結(jié)果。
4.根據(jù)權(quán)利要求3所述的服務(wù)器,其特征在于,還包括: 獲取單元,用于獲取所述任一頁面上的所有計(jì)算公式; 第一判斷單元,用于根據(jù)針對所述所有計(jì)算公式中的每個計(jì)算公式預(yù)定義的用于判斷所述每個計(jì)算公式內(nèi)的計(jì)算屬性的值發(fā)生變化時(shí)是否觸發(fā)計(jì)算的判斷方法,依次判斷所述每個計(jì)算公式內(nèi)的任一計(jì)算屬性的值發(fā)生改變時(shí),是否會觸發(fā)計(jì)算; 所述處理單元還用于,在所述第一判斷單元判定所述任一頁面上的任一計(jì)算公式中的任一計(jì)算屬性的值發(fā)生改變會觸發(fā)計(jì)算時(shí),將所述任一計(jì)算公式中的所有計(jì)算屬性存入計(jì)算屬性集合,將所述任一計(jì)算公式的結(jié)果屬性存入結(jié)果屬性集合,并將所述任一計(jì)算公式存入?yún)⑴c計(jì)算的公式池中; 所述服務(wù)器還包括: 控制單元,用于依次將所述結(jié)果屬性集合中的每個結(jié)果屬性作為與所述每個結(jié)果屬性對應(yīng)的計(jì)算公式中的計(jì)算屬性,控制所述第一判斷單元和所述處理單元繼續(xù)進(jìn)行處理;第二判斷單元,用于判斷所述公式池中的任一公式的所有計(jì)算屬性中的每個計(jì)算屬性是否存在于所述結(jié)果屬性集合內(nèi); 公式樹生成單元,用于在所述第二判斷單元判定所述任一公式的所有計(jì)算屬性均不存在于所述結(jié)果屬性集合內(nèi)時(shí),將所述任一公式加入所述公式樹。
5.根據(jù)權(quán)利要求4所述的服務(wù)器,其特征在于, 所述處理單元還用于: 在所述第二判斷單元判定所述任一公式中的指定計(jì)算屬性存在于所述結(jié)果屬性集合內(nèi)時(shí),將所述指定計(jì)算屬性加入依賴屬性集合內(nèi); 所述服務(wù)器還包括: 判斷條件生成單元,用于將所述公式樹中除一級節(jié)點(diǎn)公式的所有計(jì)算屬性加入必須屬性集合,根據(jù)所述必須屬性集合和所述依賴屬性集合生成用于判斷是否觸發(fā)計(jì)算請求的判斷條件; 所述交互單元還用于,將所述判斷條件發(fā)送至所述終端。
6.一種頁面中結(jié)果屬性值的計(jì)算方法,其特征在于,包括: 檢測當(dāng)前頁面上的計(jì)算屬性的值是否發(fā)生變化; 在檢測到所述當(dāng)前頁面上的計(jì)算屬性的值發(fā)生變化時(shí),根據(jù)服務(wù)器返回的用于判斷是否觸發(fā)計(jì)算請求的判斷條件,判斷是否觸發(fā)計(jì)算請求; 在判定需要觸發(fā)計(jì)算請 求時(shí),將所述計(jì)算屬性發(fā)生變化后的值,以及與所述計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性的值發(fā)送至所述服務(wù)器,以由所述服務(wù)器計(jì)算與所述計(jì)算屬性相關(guān)聯(lián)的結(jié)果屬性的值; 接收所述服務(wù)器返回的對所述結(jié)果屬性的值計(jì)算后的結(jié)果,并更新所述當(dāng)前頁面上的所述結(jié)果屬性的值。
7.根據(jù)權(quán)利要求6所述的頁面中結(jié)果屬性值的計(jì)算方法,其特征在于,判斷是否觸發(fā)計(jì)算請求的步驟具體為: 若所述計(jì)算屬性存在于所述判斷條件中的必須屬性集合內(nèi),則判定不需要觸發(fā)所述計(jì)算請求,以及 若所述計(jì)算屬性存在于所述判斷條件中的依賴屬性集合內(nèi),則判定需要觸發(fā)所述計(jì)算請求。
8.一種頁面中結(jié)果屬性值的計(jì)算方法,其特征在于,包括: 接收終端發(fā)送的任一頁面上的計(jì)算屬性發(fā)生變化后的值,以及與所述計(jì)算屬性相關(guān)聯(lián)的其他計(jì)算屬性的值; 根據(jù)所述計(jì)算屬性發(fā)生變化后的值和所述其他計(jì)算屬性的值,通過與所述任一頁面相對應(yīng)的公式樹計(jì)算與所述計(jì)算屬性相關(guān)聯(lián)的結(jié)果屬性的值,以得到計(jì)算結(jié)果; 將所述計(jì)算結(jié)果返回至所述終端,以供所述終端更新所述任一頁面上的所述結(jié)果屬性的值。
9.根據(jù)權(quán)利要求8所述的頁面中結(jié)果屬性值的計(jì)算方法,其特征在于,在計(jì)算所述結(jié)果屬性的值之前,還包括: 獲取步驟,獲取所述任一頁面上的所有計(jì)算公式; 判斷步驟,根據(jù)針對所述所有計(jì)算公式中的每個計(jì)算公式預(yù)定義的用于判斷所述每個計(jì)算公式內(nèi)的計(jì)算屬性的值發(fā)生變化時(shí)是否觸發(fā)計(jì)算的判斷方法,依次判斷所述每個計(jì)算公式內(nèi)的任一計(jì)算屬性的值發(fā)生改變時(shí),是否會觸發(fā)計(jì)算; 處理步驟,在判定所述任一頁面上的任一計(jì)算公式中的任一計(jì)算屬性的值發(fā)生改變會觸發(fā)計(jì)算時(shí),將所述任一計(jì)算公式中的所有計(jì)算屬性存入計(jì)算屬性集合,將所述任一計(jì)算公式的結(jié)果屬性存入結(jié)果屬性集合,并將所述任一計(jì)算公式存入?yún)⑴c計(jì)算的公式池中;依次將所述結(jié)果屬性集合中的每個結(jié)果屬性作為與所述每個結(jié)果屬性對應(yīng)的計(jì)算公式中的計(jì)算屬性,繼續(xù)執(zhí)行所述判斷步驟與所述處理步驟; 判斷所述公式池中的任一公式的所有計(jì)算屬性中的每個計(jì)算屬性是否存在于所述結(jié)果屬性集合內(nèi),以及 在判定所述任一公式的所有計(jì)算屬性均不存在于所述結(jié)果屬性集合內(nèi)時(shí),將所述任一公式加入所述公式樹。
10.根據(jù)權(quán)利要求9所述的頁面中結(jié)果屬性值的計(jì)算方法,其特征在于,還包括: 在判定所述任一公式的指定計(jì)算屬性存在于所述結(jié)果屬性集合內(nèi)時(shí),將所述指定計(jì)算屬性加入 依賴屬性集合內(nèi);以及 將所述公式樹中除一級節(jié)點(diǎn)公式的所有計(jì)算屬性加入必須屬性集合,根據(jù)所述必須屬性集合和所述依賴屬性集合生成用于判斷是否觸發(fā)計(jì)算請求的判斷條件,并發(fā)送至所述終端。
【文檔編號】H04L29/08GK104079566SQ201410280964
【公開日】2014年10月1日 申請日期:2014年6月20日 優(yōu)先權(quán)日:2014年6月20日
【發(fā)明者】黃通, 趙建軍 申請人:用友軟件股份有限公司