欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于對(duì)事件進(jìn)行計(jì)費(fèi)的函數(shù)模型的制作方法

文檔序號(hào):7994497閱讀:235來(lái)源:國(guó)知局
用于對(duì)事件進(jìn)行計(jì)費(fèi)的函數(shù)模型的制作方法
【專利摘要】提供了用于實(shí)現(xiàn)計(jì)費(fèi)引擎的技術(shù),所述計(jì)費(fèi)引擎對(duì)關(guān)于使用信息的事件進(jìn)行處理,所述使用信息關(guān)于由產(chǎn)品/服務(wù)的客戶所使用的產(chǎn)品或服務(wù)。所述計(jì)費(fèi)引擎表示對(duì)象的連接圖,該對(duì)象的函數(shù)將接受輸入(如果必要的話)、執(zhí)行一個(gè)或多個(gè)操作、并且產(chǎn)生用于確定要執(zhí)行哪個(gè)另一對(duì)象的結(jié)果。所述輸入可以包括關(guān)于“事件”的信息,所述“事件”指示特定客戶對(duì)于產(chǎn)品/服務(wù)的使用信息。因?yàn)榇_定對(duì)于一些事件的適當(dāng)響應(yīng)并不需要執(zhí)行全部的對(duì)象,所以可以使用許多計(jì)算資源來(lái)對(duì)后續(xù)事件進(jìn)行處理。
【專利說(shuō)明】用于對(duì)事件進(jìn)行計(jì)費(fèi)的函數(shù)模型

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及對(duì)反映客戶對(duì)服務(wù)或產(chǎn)品的使用量的事件進(jìn)行計(jì)費(fèi)。

【背景技術(shù)】
[0002]“計(jì)費(fèi)”通常是指確定產(chǎn)品或服務(wù)使用的成本或價(jià)格的過(guò)程。計(jì)費(fèi)還可以是指分配或共享費(fèi)用和變更(或折扣)。例如,許多電信運(yùn)營(yíng)商允許客戶(或訂戶)選擇特定計(jì)劃(Plan),所述特定計(jì)劃可以是預(yù)付費(fèi)計(jì)劃或后付費(fèi)計(jì)劃,諸如包月或包年計(jì)劃。客戶對(duì)于電信運(yùn)營(yíng)商提供的服務(wù)的任何使用被報(bào)告給計(jì)費(fèi)引擎。計(jì)費(fèi)引擎可以由運(yùn)營(yíng)商或第三方維護(hù)。計(jì)費(fèi)引擎基于客戶的計(jì)劃和客戶的使用來(lái)計(jì)算向客戶收取的金額或多少錢以報(bào)告給客戶的賬戶。所述金額可以從總剩余使用金額扣除(例如,按分鐘或千兆字節(jié))。
[0003]在電信背景下,計(jì)費(fèi)引擎可能考慮多種因素,諸如使用的時(shí)間(例如,在7PM太平洋標(biāo)準(zhǔn)時(shí)間之后)、使用的持續(xù)時(shí)間(例如,5分鐘呼叫)、呼叫的目的地(例如,內(nèi)陸、海外、朋友或家人)、以及呼叫的起源或呼叫者的位置(例如,移動(dòng)網(wǎng)絡(luò)漫游)。在互聯(lián)網(wǎng)背景下,因素可以包括下載內(nèi)容的量(例如,5千兆字節(jié))、流傳輸內(nèi)容的類型、內(nèi)容的質(zhì)量、以及下載的時(shí)間。
[0004]計(jì)費(fèi)計(jì)劃正在變得越來(lái)越復(fù)雜,并且頻繁改變。計(jì)費(fèi)引擎因此必須被配置為對(duì)照這樣的復(fù)雜的不斷變化的計(jì)費(fèi)計(jì)劃對(duì)使用信息進(jìn)行處理。通常,計(jì)費(fèi)計(jì)劃設(shè)計(jì)者(例如,電信運(yùn)營(yíng)商的雇員)在顯示用戶界面的用戶終端(例如,臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)或平板計(jì)算機(jī))上提供輸入。該輸入反映一套規(guī)則,該規(guī)則用于計(jì)算使用量(例如,按分鐘、貨幣或數(shù)據(jù)使用)以跟蹤用戶的使用。用戶界面接受該輸入,并且可以產(chǎn)生反映該輸入中所反映的所有規(guī)則的XML文檔(或表格格式的其他文檔)。這樣的以數(shù)據(jù)為中心的表示的一個(gè)問(wèn)題是,它們不適合于表達(dá)計(jì)費(fèi)計(jì)劃。單單這樣的表示不能容易地表達(dá)計(jì)費(fèi)計(jì)劃的函數(shù)方面,諸如如果-則-否則(if-then-else)條件。結(jié)果,常規(guī)的計(jì)費(fèi)引擎需要實(shí)現(xiàn)如稍后描述的對(duì)數(shù)據(jù)進(jìn)行處理的附加函數(shù)模塊(諸如一組模塊、硬編碼邏輯器或規(guī)則引擎)。
[0005]“事件”是響應(yīng)于客戶使用產(chǎn)品或服務(wù)而產(chǎn)生的數(shù)據(jù)。例如,當(dāng)客戶結(jié)束電話呼叫時(shí),事件被創(chuàng)建。另外,當(dāng)客戶開(kāi)始呼叫時(shí),以及可選地,在呼叫期間的一個(gè)或多個(gè)時(shí)刻,事件也可以被創(chuàng)建。
[0006]計(jì)費(fèi)引擎可以實(shí)時(shí)地或離線地對(duì)事件進(jìn)行處理。當(dāng)客戶例如發(fā)起呼叫或者訪問(wèn)互聯(lián)網(wǎng)時(shí),通常要求實(shí)時(shí)處理,并且計(jì)費(fèi)引擎需要實(shí)時(shí)地授予訪問(wèn)權(quán),以使得客戶使用服務(wù)不需等待。產(chǎn)品或服務(wù)提供商(諸如電信運(yùn)營(yíng)商)由于至少兩個(gè)原因期望實(shí)時(shí)地(或者盡可能快地)對(duì)某些事件進(jìn)行處理:收益漏損和機(jī)會(huì)損失。收益漏損是指允許客戶的使用量多于該客戶有權(quán)享用的使用量。機(jī)會(huì)損失是指當(dāng)客戶有權(quán)享用使用量時(shí)未將該使用量授予客戶。例如,在預(yù)付費(fèi)電話背景下,客戶使用電話進(jìn)行溝通的分鐘數(shù)有限。客戶與其訂立合同或向其訂閱的電信運(yùn)營(yíng)商不想客戶使用的分鐘數(shù)多于該客戶有權(quán)享用的分鐘數(shù)(即,基于客戶的合同)。因此,如果客戶已經(jīng)“用完”他/她的分鐘數(shù),則電信運(yùn)營(yíng)商不想允許客戶在沒(méi)有首先為額外分鐘數(shù)付費(fèi)的情況下發(fā)起另一個(gè)呼叫。為了防止客戶超額使用他們的分鐘數(shù),電信運(yùn)營(yíng)商可以拒絕使用請(qǐng)求,并且等待尚未計(jì)費(fèi)的所有事件被計(jì)費(fèi)。然而,對(duì)所有尚未支付的事件進(jìn)行計(jì)費(fèi)可能花費(fèi)時(shí)間,并且對(duì)于有權(quán)享用服務(wù)的客戶拒絕該服務(wù)將導(dǎo)致欠佳的客戶滿意度。對(duì)于運(yùn)營(yíng)商,該機(jī)會(huì)損失轉(zhuǎn)化為金錢損失。
[0007]另舉一例,在后付費(fèi)電話背景下,客戶不想晚一天或更多天才發(fā)現(xiàn)她不僅“用完了 ”她的分鐘數(shù),而且她還超過(guò)了她的限額大約一個(gè)小時(shí),該超額以明顯更高的費(fèi)率收費(fèi)。因此,必要的是,盡可能快地對(duì)事件進(jìn)行處理,以使得客戶對(duì)于產(chǎn)品或服務(wù)的使用量不會(huì)多于該客戶有權(quán)享用的使用量,并且類似地,使得不會(huì)在客戶有權(quán)享用的范圍內(nèi)阻止該客戶使用產(chǎn)品或服務(wù)。
[0008]一些事件可以進(jìn)行離線處理(諸如每月結(jié)算)。這些事件不需要實(shí)時(shí)處理。然而,電信提供商需要及時(shí)地生成賬單。例如,提供商可能必須在每月的第一天產(chǎn)生數(shù)億張賬單??焖儆?jì)費(fèi)引擎將提供更好的用戶體驗(yàn)(按時(shí)生成賬單),并且可以防止提供商不得不買進(jìn)昂貴的服務(wù)器基礎(chǔ)架構(gòu)(因?yàn)樾枰俚姆?wù)器來(lái)對(duì)所有事件進(jìn)行處理)。對(duì)于實(shí)時(shí)的在線處理,不能及時(shí)地(例如,在幾毫秒左右)對(duì)事件進(jìn)行處理可能引起超時(shí)、錯(cuò)誤、故障等。為了避免系統(tǒng)的徹底崩潰,當(dāng)系統(tǒng)超載時(shí),提供商允許系統(tǒng)在降級(jí)模式下運(yùn)行。在這種模式下,基于一些配置的策略,系統(tǒng)可以生成服務(wù)的悲觀拒絕(機(jī)會(huì)損失)、或服務(wù)的樂(lè)觀授權(quán)(收益漏損)。
[0009]然而,當(dāng)前對(duì)事件進(jìn)行處理的方法證明是有缺陷的。在一種方法中,計(jì)費(fèi)引擎包括一系列的多個(gè)(例如,插件)模塊。對(duì)于客戶的每個(gè)使用事件,這些模塊均被配置為基于該事件和客戶的計(jì)費(fèi)計(jì)劃來(lái)做出某一決策并且將結(jié)果提供給該系列中的下一個(gè)模塊。例如,在對(duì)電話呼叫進(jìn)行計(jì)費(fèi)時(shí),一個(gè)模塊可以被配置為檢查當(dāng)前日期是否是客戶的生日,另一個(gè)模塊可以被配置為確定呼叫目的地是否在客戶的“朋友和家人”群組中,如果是,則確定該呼叫的費(fèi)率是多少錢,并且另一個(gè)模塊被配置為確定在當(dāng)天中的時(shí)間,并且猶如不存在例外那樣對(duì)呼叫進(jìn)行計(jì)費(fèi),所述例外諸如生日、或目的地是某些朋友或家人。然而,使用這樣的方法有許多缺點(diǎn)。例如,每次所述系列中的一個(gè)模塊完結(jié)并且執(zhí)行另一個(gè)模塊時(shí),必須執(zhí)行背景切換。另舉一例,即使一些模塊可能不是必要的,也執(zhí)行所述系列中的每個(gè)模塊。因此,必須利用可以用于對(duì)后續(xù)事件進(jìn)行處理的計(jì)算資源(例如,CPU周期和存儲(chǔ)器)來(lái)對(duì)當(dāng)前事件進(jìn)行處理。當(dāng)在短時(shí)間窗口內(nèi)創(chuàng)建了數(shù)十萬(wàn)個(gè)事件時(shí),這樣“浪費(fèi)”的計(jì)算資源變得極其珍貴。
[0010]在另一種方法中,計(jì)費(fèi)引擎包括對(duì)照其對(duì)事件進(jìn)行評(píng)估的一大套規(guī)則。換句話講,對(duì)于在計(jì)費(fèi)引擎處接收的每個(gè)事件,計(jì)費(fèi)引擎對(duì)照每個(gè)規(guī)則對(duì)該事件進(jìn)行評(píng)估。然而,對(duì)于許多事件,對(duì)照每個(gè)規(guī)則對(duì)每個(gè)事件進(jìn)行評(píng)估可能不是必要的。例如,如果對(duì)照單個(gè)規(guī)則對(duì)事件的評(píng)估導(dǎo)致確定客戶將不被收費(fèi),則對(duì)照該套規(guī)則中的每個(gè)其他規(guī)則對(duì)該事件進(jìn)行評(píng)估是不必要的。同樣,在該方法中,計(jì)算資源被浪費(fèi)。
[0011]在另一種方法中,不是使用一系列模塊或一大套規(guī)則,計(jì)費(fèi)計(jì)劃是“硬編碼的”,因?yàn)樵趩蝹€(gè)軟件模塊中反映計(jì)費(fèi)計(jì)劃。然而,服務(wù)提供商期望提供不同計(jì)費(fèi)計(jì)劃的靈活性,以便對(duì)變化的市場(chǎng)狀況做出響應(yīng)。因此,硬編碼的解決方案可以僅在短時(shí)間段內(nèi)是相關(guān)的,在該時(shí)間段之后,它可能被淘汰。對(duì)于每個(gè)新的計(jì)費(fèi)計(jì)劃提供硬編碼的解決方案將是昂貴的且冗長(zhǎng)乏味的。此外,大多數(shù)產(chǎn)品和服務(wù)提供商期望對(duì)于創(chuàng)建和測(cè)試計(jì)費(fèi)計(jì)劃有控制權(quán)。然而,要求這樣的提供商為每個(gè)計(jì)費(fèi)計(jì)劃編寫源代碼是不合需要的。
[0012]本章節(jié)中所描述的方法是可以尋求的方法,但是不一定是以前已經(jīng)設(shè)想過(guò)或?qū)で筮^(guò)的方法。因此,除非另有指示,否則不應(yīng)僅因本章節(jié)中所描述的任一方法包括在本章節(jié)中就假定該方法夠格作為現(xiàn)有技術(shù)。

【專利附圖】

【附圖說(shuō)明】
[0013]在附圖中:
[0014]圖1是描繪計(jì)費(fèi)圖表的框圖,計(jì)費(fèi)圖表圖形化地表示根據(jù)本發(fā)明的實(shí)施例的示例計(jì)費(fèi)計(jì)劃函子(functor);
[0015]圖2是描繪根據(jù)本發(fā)明的實(shí)施例的用于對(duì)事件進(jìn)行處理的過(guò)程的流程圖;
[0016]圖3是描繪根據(jù)本發(fā)明的實(shí)施例的包括多個(gè)函數(shù)對(duì)象的計(jì)費(fèi)計(jì)劃函數(shù)對(duì)象的示例性存儲(chǔ)器表示的框圖;以及
[0017]圖4是例示在其上可以實(shí)現(xiàn)本發(fā)明的實(shí)施例的計(jì)算機(jī)系統(tǒng)的框圖。

【具體實(shí)施方式】
[0018]在以下描述中,為了說(shuō)明的目的,對(duì)許多特定細(xì)節(jié)進(jìn)行了闡述,以便提供本發(fā)明的透徹理解。然而,將顯而易見(jiàn)的是,可以在沒(méi)有這些特定細(xì)節(jié)的情況下實(shí)施本發(fā)明。在其他情況下,為了避免不必要地模糊本發(fā)明,以框圖形式示出公知的結(jié)構(gòu)和裝置。
[0019]概述
[0020]提供了用于對(duì)指示客戶對(duì)服務(wù)或產(chǎn)品的使用量的事件進(jìn)行計(jì)費(fèi)的技術(shù)。計(jì)費(fèi)計(jì)劃用包括多個(gè)函數(shù)對(duì)象的計(jì)費(fèi)圖“函子”(或函數(shù)對(duì)象)表示。計(jì)費(fèi)計(jì)劃函子中所表示的邏輯可以被視為決策(例如,二叉)樹。關(guān)于事件的信息輸入到產(chǎn)生結(jié)果的函數(shù)對(duì)象之一(例如,“根”節(jié)點(diǎn))。該結(jié)果可以決定接著執(zhí)行所述多個(gè)函數(shù)對(duì)象中的哪個(gè)函數(shù)對(duì)象。為了產(chǎn)生最終結(jié)果而執(zhí)行的一組函數(shù)對(duì)象可以少于計(jì)費(fèi)計(jì)劃函子中的所有函數(shù)對(duì)象。實(shí)施例提供了描述計(jì)費(fèi)計(jì)劃的函數(shù)方法=DSL表達(dá)使得易于表示構(gòu)成計(jì)費(fèi)計(jì)劃的數(shù)據(jù)和函數(shù)兩者(諸如條件和結(jié)果)。
[0021]盡管本文中提供的例子涉及接收響應(yīng)于用戶使用一定量的服務(wù)或產(chǎn)品而產(chǎn)生的使用事件并且對(duì)這些使用事件進(jìn)行處理,但是本發(fā)明的實(shí)施例不限于此。例如,事件可以是系統(tǒng)事件,諸如每月記賬周期事件。響應(yīng)于接收到這樣的系統(tǒng)事件,本文中所公開(kāi)的事件處理系統(tǒng)對(duì)該系統(tǒng)事件進(jìn)行處理,并且可以確定并返回與例如每月計(jì)費(fèi)、加上稅費(fèi)和其他雜費(fèi)相應(yīng)的費(fèi)用。
[0022]領(lǐng)域特定語(yǔ)言
[0023]DSL是專用于特定問(wèn)題領(lǐng)域的編程語(yǔ)言或規(guī)范語(yǔ)言。如果該語(yǔ)言使得可以比現(xiàn)有語(yǔ)言所允許的表達(dá)更清楚地表達(dá)特定類型的問(wèn)題或解決方案,則創(chuàng)建DSL(用支持它的軟件創(chuàng)建)是值得的。創(chuàng)建DSL的一些目的可以包括DSL有表現(xiàn)力、簡(jiǎn)明、可擴(kuò)展、易于測(cè)試、并且專門針對(duì)對(duì)計(jì)費(fèi)事件進(jìn)行評(píng)估進(jìn)行優(yōu)化。
[0024]與此相反,當(dāng)前用于表達(dá)計(jì)費(fèi)計(jì)劃的技術(shù)涉及包括用戶界面的系統(tǒng),在該用戶界面中,用戶可以在不同字段中輸入值。字段和字段值反映計(jì)費(fèi)計(jì)劃的規(guī)則。用戶界面接受輸入,并且產(chǎn)生反映計(jì)費(fèi)計(jì)劃的(相對(duì))大的XML文檔(或其他表格表示)。這樣的用戶界面對(duì)于用戶是需要的,因?yàn)橐话愕臄?shù)據(jù)表示(例如,XML或表格表示)不適合于描述計(jì)費(fèi)計(jì)劃。相反,這樣的數(shù)據(jù)表示趨向于冗長(zhǎng),并且缺乏表現(xiàn)力。在運(yùn)行時(shí)期間,計(jì)費(fèi)引擎的一個(gè)或多個(gè)模塊訪問(wèn)例如XML文檔,對(duì)其中所包含的XML數(shù)據(jù)進(jìn)行分析,并且根據(jù)該XML數(shù)據(jù)中所反映的規(guī)則對(duì)事件進(jìn)行計(jì)費(fèi)。
[0025]在DSL用于計(jì)費(fèi)計(jì)劃的情況下,因?yàn)镈SL如此有表現(xiàn)力,所以不需要作為轉(zhuǎn)譯層的UL.此外,單個(gè)DSL表達(dá)可以描述計(jì)費(fèi)計(jì)劃的數(shù)據(jù)和規(guī)則兩者,在以數(shù)據(jù)為中心的表示的情況下這是困難的(如果有可能的話)。另外,用于DSL表達(dá)的運(yùn)行時(shí)模型可以包含數(shù)據(jù)和函數(shù)邏輯兩者,而用于以數(shù)據(jù)為中心的表示的運(yùn)行時(shí)模塊通常僅包含數(shù)據(jù)。另一方面,以數(shù)據(jù)為中心的運(yùn)行時(shí)模型的運(yùn)行時(shí)處理通常比較慢,而且未被優(yōu)化,因?yàn)檫@樣的模塊要求附加系統(tǒng)來(lái)運(yùn)行函數(shù)邏輯。所述附加系統(tǒng)對(duì)于用以數(shù)據(jù)為中心的表示表達(dá)的每一個(gè)計(jì)費(fèi)計(jì)劃通常是相同的,且因此,未被優(yōu)化。
[0026]根據(jù)實(shí)施例,創(chuàng)建領(lǐng)域特定語(yǔ)言(DSL),并且使用該DSL來(lái)表達(dá)計(jì)費(fèi)計(jì)劃。DSL的詞匯可以限于捕捉核心計(jì)費(fèi)概念的那些詞語(yǔ)。DSL的表現(xiàn)力應(yīng)足以使得程序員和領(lǐng)域?qū)<叶寄芸焖俚貙W(xué)習(xí)。DSL聲明的例子如下:
[0027](dayOfYear = = ibirthday) = > IinearRate (0.00) +
[0028](OcalledId <:ifriendsAndFamily) = > IinearRate(0.01) +
[0029][20:00:00,07:00:00] => IinearRate (0.02) | +
[0030]IinearRate (0.05)
[0031]該DSL聲明中所使用的詞匯是特定于計(jì)費(fèi)領(lǐng)域的。例如,“dayofYear”是返回當(dāng)年的當(dāng)天的單元素集(singleton) ;“@birthday”是確定與當(dāng)前被處理的事件相關(guān)聯(lián)的客戶的生日的更復(fù)雜DSL的別名;“l(fā)inearRate”是接受輸入?yún)?shù)值(例如,“0.00”)并且產(chǎn)生作為輸出的值的函數(shù),其中,該值表示向客戶收取的金額?!? >”符號(hào)指示,如果前一表達(dá)式為真,則對(duì)后一表達(dá)式進(jìn)行評(píng)估?!癐+”符號(hào)指示,如果前一條件(例如,“(dayOfYear=ibirthday)")為假,則要使用DSL聲明中的后一表達(dá)式對(duì)事件進(jìn)行處理。“|+”符號(hào)還指示,前一條件可以部分為真,并且要用后一表達(dá)式對(duì)事件進(jìn)行處理。例如,客戶在其生日那天在11:55PM呼叫朋友,并且該呼叫持續(xù)10分鐘。根據(jù)以上示例DSL聲明中所反映的計(jì)費(fèi)計(jì)劃,呼叫的頭五分鐘是免費(fèi)的,最后五分鐘將根據(jù)第一個(gè)“I+”符號(hào)之后的表達(dá)式進(jìn)行計(jì)費(fèi)。
[0032]通過(guò)創(chuàng)建專用于表達(dá)計(jì)費(fèi)計(jì)劃的DSL,實(shí)現(xiàn)了許多益處。一個(gè)益處是,使DSL聲明的設(shè)計(jì)者或創(chuàng)建者免受事件處理系統(tǒng)的內(nèi)部構(gòu)件的影響。另一個(gè)益處是,該語(yǔ)言(a)比撰寫反映計(jì)費(fèi)計(jì)劃的XML文檔更加具有表現(xiàn)力,并且(b)比編寫用于計(jì)費(fèi)計(jì)劃的硬編碼實(shí)現(xiàn)的源代碼(例如,Java)更加具有表現(xiàn)力。另一個(gè)益處是,測(cè)試DSL聲明比測(cè)試代碼容易得多。
[0033]DSL聲明可以由用戶諸如計(jì)劃的設(shè)計(jì)者編寫。另外地或可替代地,DSL聲明可以自動(dòng)地基于通過(guò)被設(shè)計(jì)為接受反映計(jì)費(fèi)計(jì)劃的輸入的用戶界面接收的用戶輸入產(chǎn)生。該輸入可以直接轉(zhuǎn)換為DSL聲明,或轉(zhuǎn)換為中間格式,諸如XML,然后從該中間格式轉(zhuǎn)換為DSL聲明。
[0034]以下是用于創(chuàng)建來(lái)表達(dá)計(jì)費(fèi)計(jì)劃的DSL的示例詞匯:
[0035]運(yùn)算符:+、_、〈、>、==、1、&&、3、〈:、I+、I 1、!、= >
[0036]單兀素集:start、end、dayOfYear、dayOfWeek、dayOfMonth、quantity、TRUE、FALSE
[0037]其他函數(shù):linearRate、fixedRate、fail、localDate、date、getObject、getBigDecimal、getBoolean
[0038]別名:@birthday、idateOfBirth> iqos> OfriendsAndFamiIy、 Obalance、 @inputValue、OoutputVolume、OcellHomelds、OcalledlD、OcellId
[0039]運(yùn)算符接受作為輸入的一個(gè)或多個(gè)運(yùn)算元,這些運(yùn)算元可以是函數(shù)本身。單元素集是不需要來(lái)自事件的數(shù)據(jù)來(lái)產(chǎn)生輸出的函數(shù)?!捌渌瘮?shù)”是需要作為輸入的來(lái)自事件的數(shù)據(jù)或關(guān)于事件的數(shù)據(jù)以產(chǎn)生輸出的函數(shù)。
[0040]在實(shí)施例中,被創(chuàng)建用于表達(dá)計(jì)費(fèi)計(jì)劃的DSL是可擴(kuò)展的。換言之,可支持附加函數(shù),只要用于DSL的DSL解析器擴(kuò)展到支持新詞匯即可。類似地,DSL在創(chuàng)建別名時(shí)可以是可擴(kuò)展的。以上示例DSL聲明包括別名,其解決更復(fù)雜的DSL表達(dá)。例如Obirthday可以是“get0bject( uRatingContext#customer/birthday/toString ? MMdd”)”的別名,其中,getObject是以上“其他函數(shù)”的例子。隨著函數(shù)變得更復(fù)雜,可以將別名添加到DSL以簡(jiǎn)化DSL聲明的組成。
[0041]計(jì)費(fèi)計(jì)劃函子
[0042]根據(jù)實(shí)施例,DSL解析器接受作為輸入的DSL聲明,對(duì)該聲明進(jìn)行解析,并且產(chǎn)生計(jì)費(fèi)計(jì)劃函子,該計(jì)費(fèi)計(jì)劃函子可視為決策樹,該決策樹從概念上表示DSL聲明定義的計(jì)費(fèi)計(jì)劃的函數(shù)邏輯。因此,DSL聲明用其自己的語(yǔ)言使計(jì)費(fèi)計(jì)劃函子“模型化”。事實(shí)上,決策樹中的每個(gè)邏輯表達(dá)(不管該表達(dá)是返回布爾值,還是對(duì)事件進(jìn)行計(jì)費(fèi))可以直接與相應(yīng)的DSL聲明中的表達(dá)相對(duì)應(yīng)。因?yàn)镈SL語(yǔ)法非常類似于如何看待計(jì)費(fèi)計(jì)劃函子,所以設(shè)計(jì)者應(yīng)易于使用DSL。
[0043]作為決策樹,計(jì)費(fèi)計(jì)劃函子可視為有序函數(shù)集。每個(gè)函數(shù)可以被實(shí)現(xiàn)為對(duì)象,諸如函數(shù)對(duì)象。函數(shù)對(duì)象,也稱為“函子”,是允許如同對(duì)象是普通函數(shù)那樣調(diào)用該對(duì)象(通常通過(guò)相同的語(yǔ)法)的計(jì)算機(jī)編程結(jié)構(gòu)。以上示例詞匯中所指示的每個(gè)函數(shù)(例如,運(yùn)算符、單元素集、其他函數(shù)和別名)可以被實(shí)現(xiàn)為函子。對(duì)于別名,在解析時(shí),DSL解析器基于別名來(lái)識(shí)別關(guān)于該別名的一個(gè)或多個(gè)函子和輸入,并且產(chǎn)生所述一個(gè)或多個(gè)函子。
[0044]在實(shí)施例中,計(jì)費(fèi)計(jì)劃函子是二叉樹,其中,每個(gè)節(jié)點(diǎn)最多具有兩個(gè)子節(jié)點(diǎn)(在本文中稱為“右子節(jié)點(diǎn)”和“左子節(jié)點(diǎn)”)。從父節(jié)點(diǎn)到右子節(jié)點(diǎn)的連接可以用“= >”運(yùn)算符函子來(lái)建模,從父節(jié)點(diǎn)到左子節(jié)點(diǎn)的連接可以用“ I+”運(yùn)算符函子來(lái)建模。DSL解析器產(chǎn)生函子,該函子是作為DSL聲明的一部分的所有函子的組合。
[0045]計(jì)費(fèi)計(jì)劃函子的非葉節(jié)點(diǎn)被認(rèn)為是評(píng)估為(完全地或部分地)真或假的謂詞函子或條件函子。謂詞函子所表示的條件可以是任何條件。這樣的條件可以基于呼叫目的地、何時(shí)發(fā)出呼叫、以及呼叫持續(xù)多久。例如,條件可以是關(guān)于要計(jì)費(fèi)的量的全部或部分的,該量可以是持續(xù)時(shí)間,諸如“([20:00:00,07:00:00]) ”。非葉節(jié)點(diǎn)充當(dāng)它們各自的兩個(gè)子節(jié)點(diǎn)的守衛(wèi)。謂詞節(jié)點(diǎn)的右子節(jié)點(diǎn)可以接收作為輸入的其上謂詞為真的量。謂詞節(jié)點(diǎn)的左子節(jié)點(diǎn)可以接收作為輸入的其上謂詞為假的量。謂詞節(jié)點(diǎn)的每個(gè)子節(jié)點(diǎn)要么是葉節(jié)點(diǎn),要么是另一個(gè)非葉(或分支)節(jié)點(diǎn),它們均被認(rèn)為是計(jì)費(fèi)函子。
[0046]葉節(jié)點(diǎn)是計(jì)費(fèi)函子,該計(jì)費(fèi)函子對(duì)作為輸入給予葉節(jié)點(diǎn)的量進(jìn)行計(jì)費(fèi),并且返回結(jié)果,該結(jié)果通常包含該量的費(fèi)用(加上,例如,與該費(fèi)用相關(guān)的一些其他信息,諸如總賬分配、稅碼等)。例如,可以對(duì)“ IinearRate (0.01) ”產(chǎn)生計(jì)費(fèi)函子。分支節(jié)點(diǎn)也可以被認(rèn)為是計(jì)費(fèi)函子,雖然是多個(gè)函子的組合共同充當(dāng)計(jì)費(fèi)函子。例如,以下可以被認(rèn)為是計(jì)費(fèi)函子:“ [20:00:00,07:00:00] = >linearRate (0.02) +IinearRate (0.05) ”。此外,作為整體的計(jì)費(fèi)計(jì)劃函子可以被認(rèn)為是分支(或樹),該分支(或樹)也是計(jì)費(fèi)函子。執(zhí)行計(jì)費(fèi)計(jì)劃函子的結(jié)果是由對(duì)每個(gè)執(zhí)行的葉節(jié)點(diǎn)進(jìn)行評(píng)估而產(chǎn)生的所有費(fèi)用的聚合(所有單個(gè)計(jì)費(fèi)函子結(jié)果的列表),該聚合可以是計(jì)費(fèi)計(jì)劃函子中的所有葉節(jié)點(diǎn)的子集。
[0047]在實(shí)施例中,節(jié)點(diǎn)之間的連接也是函子,這些函子在本文中被稱為運(yùn)算符函子。運(yùn)算符函子的非限制性例子包括“ +>”和“==”。例如,“= >”是采用左側(cè)運(yùn)算元(例如,謂詞函子)和右側(cè)運(yùn)算元(例如,計(jì)費(fèi)函子)的二元運(yùn)算符函子。換句話講,如果謂詞函子(或左側(cè)運(yùn)算元)為真,則執(zhí)行計(jì)費(fèi)函子(或右側(cè)運(yùn)算元)。如果左側(cè)運(yùn)算元(或謂詞函子)為真,則計(jì)費(fèi)函子的評(píng)估將返回一個(gè)量(例如,持續(xù)時(shí)間)的費(fèi)用。
[0048]另舉一例,“I+”是二元運(yùn)算符函子,其充當(dāng)聚合器并且采用兩個(gè)計(jì)費(fèi)函子:左側(cè)(或簡(jiǎn)單地,“左”)計(jì)費(fèi)函子和右側(cè)(或簡(jiǎn)單地,“右”)計(jì)費(fèi)函子。該二元運(yùn)算符函子對(duì)左計(jì)費(fèi)函子生成的費(fèi)用進(jìn)行評(píng)估,如果量未被完全計(jì)費(fèi),則該二元運(yùn)算符加上右計(jì)費(fèi)函子生成的費(fèi)用?;谏鲜?,這樣的函數(shù)方法使得可以遞歸地組合函子以生成更復(fù)雜的函子。為了表現(xiàn)力的目的,DSL解析器被設(shè)計(jì)為接受看起來(lái)更像數(shù)學(xué)方程的結(jié)構(gòu),而不是不可讀的遞歸函數(shù)調(diào)用。
[0049]在實(shí)施例中,函子是不可變對(duì)象,即,其狀態(tài)在其創(chuàng)建之后不被修改。在一些情況下,即使一些內(nèi)部使用的屬性改變,但是從外部視點(diǎn)來(lái)看,對(duì)象的狀態(tài)表現(xiàn)為沒(méi)有改變,則該對(duì)象被認(rèn)為是不可變的。例如,使用存儲(chǔ)器來(lái)高速緩存大量計(jì)算的結(jié)果的對(duì)象仍可以被認(rèn)為是不可變對(duì)象。因此,如果用某一輸入調(diào)用特定函子,則可以將用該輸入執(zhí)行該函子的結(jié)果與該函子相關(guān)聯(lián)地高速緩存或存儲(chǔ)(或高速緩存或存儲(chǔ)在函子中)。因此,下一次調(diào)用具有該輸入的函子(例如,在可以由不同客戶發(fā)起的另一個(gè)事件的背景下),讀取結(jié)果,而不執(zhí)行函子的邏輯。該結(jié)果也可以作為輸入傳送到另一個(gè)函子。不可變對(duì)象的其他優(yōu)點(diǎn)包括:不可變對(duì)象易于共享,而且是可組合的,并且是線程安全的。
[0050]因此,計(jì)費(fèi)計(jì)劃函子是包含對(duì)事件進(jìn)行計(jì)費(fèi)的所有邏輯和數(shù)據(jù)(不同于所需的來(lái)自事件本身的數(shù)據(jù))的函數(shù)對(duì)象。與常規(guī)的運(yùn)行時(shí)方法相比,包含所有邏輯和數(shù)據(jù)的這個(gè)特征是另一個(gè)優(yōu)點(diǎn),即,函數(shù)運(yùn)行時(shí)模型使得計(jì)費(fèi)計(jì)劃是一個(gè)可執(zhí)行對(duì)象。常見(jiàn)方法僅考慮計(jì)費(fèi)計(jì)劃的數(shù)據(jù)表示,并且要求單獨(dú)的計(jì)費(fèi)引擎對(duì)計(jì)費(fèi)計(jì)劃進(jìn)行評(píng)估。這樣的引擎僅使用計(jì)費(fèi)計(jì)劃作為規(guī)范。在本文中所描述的實(shí)施例中,計(jì)費(fèi)計(jì)劃函子本身是引擎。
[0051]圖1是描繪示例性計(jì)費(fèi)圖表100的框圖,示例計(jì)費(fèi)圖表100圖形化表示根據(jù)本發(fā)明的實(shí)施例的計(jì)費(fèi)計(jì)劃函子。葉節(jié)點(diǎn)表示可以針對(duì)給定事件計(jì)算的不同的可能的費(fèi)用。計(jì)費(fèi)圖表100中的每個(gè)節(jié)點(diǎn)對(duì)應(yīng)于函子。具體地,函子110回答問(wèn)題“今天是客戶的生日?”如果該問(wèn)題的回答是“是”,則執(zhí)行函子120,這確保不向客戶收取使用費(fèi)用。如果該問(wèn)題的回答是“否”,則執(zhí)行函子130。
[0052]函子130回答問(wèn)題“客戶正在呼叫朋友或家人? ”如果該問(wèn)題的回答是“是”,則執(zhí)行函子140,函子140每分鐘計(jì)算$0.01的費(fèi)用。因此,如果客戶向認(rèn)識(shí)的朋友或家人發(fā)起呼叫并且該呼叫持續(xù)10分鐘,則函子140確保在客戶的賬戶上反映$0.01的費(fèi)用。如果該問(wèn)題的回答是“否”,則執(zhí)行函子150。
[0053]函子150回答問(wèn)題“他正在高峰時(shí)間進(jìn)行呼叫? ”如果該問(wèn)題的回答是“是”(至少在該呼叫的持續(xù)時(shí)間的一部分內(nèi)),則執(zhí)行函子160,函子160每分鐘計(jì)算$0.05的費(fèi)用(至少在該呼叫的持續(xù)時(shí)間的在高峰時(shí)間的部分內(nèi))。如果該問(wèn)題的回答是“否”(至少在該呼叫的持續(xù)時(shí)間的一部分內(nèi)),則執(zhí)行函子170,函子170每分鐘計(jì)算$0.02的費(fèi)用(至少在該呼叫的持續(xù)時(shí)間的不在高峰時(shí)間的部分內(nèi))。在任何一種結(jié)果中,各個(gè)函數(shù)確保在客戶的賬戶上反映適當(dāng)?shù)馁M(fèi)用。
[0054]對(duì)事件進(jìn)行處理
[0055]圖2是描繪根據(jù)本發(fā)明的實(shí)施例的用于對(duì)事件進(jìn)行處理的過(guò)程200的流程圖。過(guò)程200由事件處理引擎執(zhí)行。過(guò)程200可以通過(guò)單個(gè)處理執(zhí)行,或者200的不同步驟可以通過(guò)不同處理或同一處理的不同線程執(zhí)行。
[0056]在步驟210,接收指示客戶的使用的事件。
[0057]在步驟220,識(shí)別表示計(jì)費(fèi)計(jì)劃的計(jì)費(fèi)計(jì)劃函子。如果存在多個(gè)計(jì)費(fèi)計(jì)劃,則首先從所述多個(gè)計(jì)費(fèi)計(jì)劃之中選擇適當(dāng)?shù)挠?jì)費(fèi)計(jì)劃函子。
[0058]在步驟230,執(zhí)行計(jì)費(fèi)計(jì)劃函子所指示的第一函子,以產(chǎn)生第一結(jié)果。第一函子可以表示計(jì)費(fèi)計(jì)劃函子中的根節(jié)點(diǎn)。
[0059]在步驟240,第一結(jié)果將確定接著執(zhí)行哪個(gè)函子??梢源嬖谠趯?duì)該結(jié)果進(jìn)行評(píng)估之后接下來(lái)調(diào)用的兩個(gè)或更多個(gè)函子(取決于計(jì)費(fèi)計(jì)劃)。例如,如果執(zhí)行計(jì)費(fèi)圖表100中的函數(shù)I1的結(jié)果是布爾真值,則執(zhí)行函子120 (其不需要輸入)。如果執(zhí)行函數(shù)110的結(jié)果是布爾假值,則執(zhí)行函子130 (其需要關(guān)于發(fā)起事件的客戶的輸入)。
[0060]在步驟250,執(zhí)行計(jì)費(fèi)計(jì)劃函子所指示的第二函子,以產(chǎn)生第二結(jié)果。第二結(jié)果可以是布爾值,或者例如,整數(shù)值。例如,如果第二函子對(duì)應(yīng)于函子130,則第二結(jié)果是布爾值。如果第二函子對(duì)應(yīng)于函子120,則第二結(jié)果是整數(shù)值。
[0061]在步驟260,基于第二結(jié)果來(lái)確定向客戶收取的金額。在示例計(jì)費(fèi)圖表100中,執(zhí)行函子160或函子170的結(jié)果被認(rèn)為是“基于”執(zhí)行函子130的結(jié)果,即使執(zhí)行函子130的結(jié)果是布爾值。函子160或函子170的執(zhí)行取決于執(zhí)行函子130的結(jié)果指示假值的事實(shí)。
[0062]盡管該示例僅提及了函子評(píng)估,但是實(shí)施例可以包括響應(yīng)于單個(gè)事件的更多函子評(píng)估。
[0063]使用計(jì)費(fèi)計(jì)劃函子(S卩,由一組函子組成)對(duì)事件進(jìn)行計(jì)費(fèi)(不管是使用事件,還是系統(tǒng)事件)的優(yōu)點(diǎn)包括可組合性和降低的復(fù)雜性。由于對(duì)象的“平”類分層結(jié)構(gòu),實(shí)現(xiàn)降低的復(fù)雜度(相對(duì)于目前用于對(duì)使用事件進(jìn)行處理的方法而言)。換句話講,計(jì)費(fèi)計(jì)劃函子中的每一個(gè)對(duì)象可以是函子。在不同函子之間不存在繼承。
[0064]關(guān)于可組合性,可以將函子與其他函子組合以形成表示特定計(jì)費(fèi)計(jì)劃的更復(fù)雜規(guī)則的分支或樹。因此,復(fù)雜的計(jì)費(fèi)計(jì)劃函子可以由多個(gè)“簡(jiǎn)單的”函子組成(或構(gòu)成)??山M合性優(yōu)先于繼承,這是面向?qū)ο蟮某绦蛟O(shè)計(jì)的特征,并且提高了復(fù)雜度。
[0065]計(jì)費(fèi)計(jì)劃函子綜合利用數(shù)學(xué)性質(zhì),諸如交換性(即,改變運(yùn)算元的順序不改變最終結(jié)果)、結(jié)合性(即,改變執(zhí)行運(yùn)算的順序不改變最終結(jié)果)、以及分配性。例如,以下DSL聲明例示了由對(duì)DSL聲明進(jìn)行解析而產(chǎn)生的計(jì)費(fèi)圖函子的分配性:
[0066](dayOfYear == ibirthday)= >
[0067](([07:00:00, 20:00:00] => IinearRate (0.05))
[0068]+([20:00:00,07:00:00] => IinearRate (0.01)))
[0069]其等同于以下聲明(S卩,得到與以下聲明相同的結(jié)果):
[0070](dayOfYear = = ibirthday) = > (([07:00:00,20:00:00]= >IinearRate(0.05))
[0071]+ (dayOfYear = = ibirthday) = > ([20:00:00,07:00:00]= >IinearRate(0.01))
[0072]多個(gè)計(jì)費(fèi)計(jì)劃
[0073]對(duì)(使用)事件進(jìn)行處理的產(chǎn)品或服務(wù)提供商可以向潛在的客戶提供從其進(jìn)行選擇的多個(gè)計(jì)費(fèi)計(jì)劃。因此,在實(shí)施例中,產(chǎn)生多個(gè)計(jì)費(fèi)計(jì)劃函子,每個(gè)計(jì)費(fèi)計(jì)劃一個(gè)計(jì)費(fèi)計(jì)劃函子。如以上所指示的,計(jì)費(fèi)計(jì)劃函子的一個(gè)源可以是由計(jì)費(fèi)計(jì)劃的設(shè)計(jì)者撰寫的多個(gè)DSL聲明。另外地或可替代地,計(jì)費(fèi)計(jì)劃函子的另一個(gè)源可以是用戶通過(guò)其輸入反映計(jì)費(fèi)計(jì)劃的規(guī)則(即,不是DSL聲明的形式)的用戶界面。隨后將輸入的數(shù)據(jù)變換為反映計(jì)費(fèi)計(jì)劃的DSL聲明。
[0074]因此,在實(shí)施例中,當(dāng)事件到達(dá)事件處理引擎時(shí),事件處理引擎從多個(gè)計(jì)費(fèi)計(jì)劃函子中識(shí)別計(jì)費(fèi)計(jì)劃函子,每個(gè)計(jì)費(fèi)計(jì)劃函子對(duì)應(yīng)于不同的計(jì)費(fèi)計(jì)劃。事件可以包括計(jì)費(fèi)計(jì)劃數(shù)據(jù),該數(shù)據(jù)指示(發(fā)起該事件的)客戶以前選擇的計(jì)費(fèi)計(jì)劃??商娲?,事件可以僅指示客戶標(biāo)識(shí)符,該客戶標(biāo)識(shí)符可以與特定計(jì)費(fèi)計(jì)劃相關(guān)聯(lián)(例如,在客戶-計(jì)費(fèi)計(jì)劃表中)。因此,事件處理引擎可以識(shí)別與客戶相關(guān)聯(lián)的計(jì)費(fèi)計(jì)劃,識(shí)別與該計(jì)費(fèi)計(jì)劃相關(guān)聯(lián)的計(jì)費(fèi)計(jì)劃函子,并且將事件傳遞給與該計(jì)費(fèi)計(jì)劃相關(guān)聯(lián)的計(jì)費(fèi)計(jì)劃函子。計(jì)費(fèi)計(jì)劃函子可以被存儲(chǔ)在非易失性或持久存儲(chǔ)器中,并且被加載到易失性存儲(chǔ)器中??商娲兀?jì)費(fèi)計(jì)劃函子可能已經(jīng)被加載到易失性存儲(chǔ)器中。
[0075]在相關(guān)實(shí)施例中,可以將多個(gè)計(jì)費(fèi)計(jì)劃應(yīng)用于單個(gè)事件。因此,可以將單個(gè)事件傳遞到兩個(gè)或更多計(jì)費(fèi)計(jì)劃函子進(jìn)行處理。例如,一個(gè)計(jì)費(fèi)計(jì)劃可以用于計(jì)算費(fèi)用,另一個(gè)計(jì)費(fèi)計(jì)劃可以用于計(jì)算將應(yīng)用于所計(jì)算的費(fèi)用的折扣。
[0076]“共享”函子
[0077]多個(gè)計(jì)費(fèi)計(jì)劃可以具有許多共同的屬性。例如,多個(gè)計(jì)費(fèi)計(jì)劃可以具有“生日規(guī)貝U”,其中,例如,如果客戶發(fā)起事件的那天是客戶的生日,則不向客戶收取相應(yīng)使用費(fèi)用。如果每個(gè)計(jì)費(fèi)計(jì)劃函子包括“生日”函子的它自己的實(shí)例,則可能存在生日函子的多個(gè)實(shí)例。然而,不是對(duì)于包括生日規(guī)則的每個(gè)計(jì)費(fèi)計(jì)劃產(chǎn)生“生日”函子的不同實(shí)例,而是將生日函子的單個(gè)實(shí)例存儲(chǔ)在存儲(chǔ)器中,并且多個(gè)計(jì)費(fèi)計(jì)劃函子“共享”該實(shí)例。這樣的方法減少了系統(tǒng)中的函子實(shí)例的數(shù)量,并且降低了事件處理引擎的存儲(chǔ)器占用大小。除了單元素集函數(shù)(諸如dayofYear函子)之外,還可以共享非單元素集函子。例如,取得開(kāi)始和結(jié)束時(shí)間的TimeRange函子可以具有在整個(gè)計(jì)費(fèi)系統(tǒng)上共享的那些函子的多個(gè)實(shí)例。通常,許多計(jì)費(fèi)計(jì)劃共享相同的峰值時(shí)間段和非峰值時(shí)間段,因此,可以共享TimeRange函子的相同實(shí)例(諸如對(duì)于[19:00:00,07:00:00]表示的非峰值、以及對(duì)于[07:00:00,19:00:00]表不的峰值)。
[0078]運(yùn)行時(shí)執(zhí)行
[0079]在實(shí)施例中,對(duì)于事件處理引擎接收的每個(gè)事件,對(duì)該事件進(jìn)行處理的過(guò)程或線程確定與該事件相應(yīng)的計(jì)費(fèi)計(jì)劃,識(shí)別與該計(jì)費(fèi)計(jì)劃相應(yīng)的計(jì)費(fèi)計(jì)劃函子,并且使該計(jì)費(fèi)計(jì)劃函子被執(zhí)行。如果確定多個(gè)計(jì)費(fèi)計(jì)劃對(duì)應(yīng)于該事件,則識(shí)別多個(gè)計(jì)費(fèi)計(jì)劃函子,并且執(zhí)行每個(gè)計(jì)費(fèi)計(jì)劃函子??梢詧?zhí)行這些步驟的處理或線程在本文中被稱為“事件處理線程”,其可以是單線程處理或多線程處理的一部分。在函子不可變的實(shí)施例中,以多線程的方式對(duì)計(jì)費(fèi)計(jì)劃進(jìn)行評(píng)估是完全線程安全的。
[0080]盡管表示計(jì)費(fèi)計(jì)劃的二叉樹模型涉及根函子,但是對(duì)DSL表達(dá)式進(jìn)行解析的結(jié)果是唯一的計(jì)費(fèi)計(jì)劃函子對(duì)象。一旦產(chǎn)生了該函子,對(duì)計(jì)費(fèi)計(jì)劃進(jìn)行評(píng)估就如調(diào)用F(X) =Y那樣簡(jiǎn)單,其中F是計(jì)費(fèi)計(jì)劃函子,X是事件,Y是結(jié)果(其可以是適用費(fèi)用的列表)。組成計(jì)費(fèi)計(jì)劃函子“F”的函子的調(diào)用順序是嵌入式計(jì)費(fèi)計(jì)劃函子實(shí)現(xiàn)。一旦計(jì)費(fèi)計(jì)劃函子被識(shí)另O,事件處理器就“調(diào)用”該計(jì)費(fèi)計(jì)劃函子。
[0081]因?yàn)樵趯?shí)施例中,函子不維持狀態(tài),所以當(dāng)多個(gè)線程(例如,對(duì)不同事件進(jìn)行處理時(shí)所涉及的多個(gè)線程)執(zhí)行特定函子的單個(gè)實(shí)例時(shí),不存在數(shù)據(jù)損壞或結(jié)果不正確的危險(xiǎn)。
[0082]在某種意義上,事件處理線程“盲目地”對(duì)函子的“方程”進(jìn)行評(píng)估。確定接著執(zhí)行哪個(gè)函子的決策被委托給作為計(jì)費(fèi)計(jì)劃函子的一部分的運(yùn)算符函子。因此,不要求外部系統(tǒng)決定如何對(duì)計(jì)費(fèi)計(jì)劃進(jìn)行評(píng)估。函數(shù)邏輯嵌入在計(jì)費(fèi)計(jì)劃函子本身中。換句話講,計(jì)費(fèi)計(jì)劃函子本身包含可執(zhí)行代碼,而計(jì)費(fèi)引擎的以前的實(shí)現(xiàn)依賴于外部系統(tǒng)讀取表示計(jì)費(fèi)計(jì)劃的數(shù)據(jù)并且基于該數(shù)據(jù)執(zhí)行運(yùn)算。因此,函數(shù)計(jì)費(fèi)計(jì)劃模型具有優(yōu)于計(jì)費(fèi)引擎的以前的實(shí)現(xiàn)的顯著優(yōu)點(diǎn)。
[0083]計(jì)費(fèi)計(jì)劃函子的存儲(chǔ)器表示
[0084]圖3是描繪根據(jù)本發(fā)明的實(shí)施例的包括多個(gè)函子的計(jì)費(fèi)計(jì)劃函子的示例性存儲(chǔ)器表示300的框圖。表示300包括許多函子,這些函子表示與示例性計(jì)費(fèi)計(jì)劃相應(yīng)的計(jì)費(fèi)計(jì)劃函子中的不同類型的運(yùn)算。具體地,表示300包括直接連接到四個(gè)函子的聚合運(yùn)算符302( “I+”):三個(gè)如果-則運(yùn)算符304A-C( “= >”)、以及其輸入為0.05的計(jì)費(fèi)函子306A( “l(fā)inearRate”)。如果-則運(yùn)算符304A連接到方程運(yùn)算符308A( “ == ”)、以及其輸入為0.00的計(jì)費(fèi)函子306B。如果方程運(yùn)算符308A為真,則根據(jù)如果-則運(yùn)算符304A,對(duì)計(jì)費(fèi)函子306B進(jìn)行評(píng)估。方程運(yùn)算符308A的運(yùn)算元是單元素集運(yùn)算符310 ( “DayofYear”)和別名運(yùn)算符312A( “OBirthday”)。如果與正在被該計(jì)費(fèi)計(jì)劃函子處理的事件相關(guān)聯(lián)的人的生日與發(fā)生該事件的日子為同一天,則方程運(yùn)算符308A評(píng)估為真。否則,方程運(yùn)算符308A評(píng)估為假。
[0085]如果存在將被計(jì)費(fèi)的附加時(shí)間量或使用量(在這個(gè)例子中,如果方程運(yùn)算符308A評(píng)估為假,則情況將如此),則對(duì)如果-則運(yùn)算符304B進(jìn)行評(píng)估。如果-則運(yùn)算符304B連接到“在…內(nèi)”運(yùn)算符308B( “〈:”),其具有兩個(gè)運(yùn)算元:別名運(yùn)算符312B( “OcalledlD”)和別名運(yùn)算符312C( “OfriendsAndFamiliy”)。計(jì)費(fèi)計(jì)劃函子的這個(gè)“分支”指示,如果呼叫目的地在呼叫者的一組朋友和家人內(nèi),則對(duì)如果-則運(yùn)算符304B的“則”部分進(jìn)行評(píng)估。這個(gè)“則”部分是其輸入為0.01的計(jì)費(fèi)函子306C( “l(fā)inearRate”)。
[0086]如果存在額外的將被計(jì)費(fèi)的時(shí)間量或使用量(在這個(gè)例子中,如果“在…內(nèi)”運(yùn)算符308B評(píng)估為假,則情況將如此),則對(duì)如果-則運(yùn)算符304C進(jìn)行評(píng)估。如果-則運(yùn)算符304C連接到時(shí)間范圍函子314( “[],,)和計(jì)費(fèi)函子306D( “l(fā)iearRate”),時(shí)間范圍函子314的輸入為20:00:00和07:00:00,計(jì)費(fèi)函子306D的輸入為0.02。計(jì)費(fèi)計(jì)劃函子的這個(gè)“分支”指示,如果服務(wù)使用(例如,電話呼叫)的至少一部分在8PM與7AM的時(shí)間之間,則該部分由計(jì)費(fèi)函子306D計(jì)費(fèi),計(jì)費(fèi)函子306D以每分鐘2分對(duì)該部分進(jìn)行計(jì)費(fèi)。
[0087]如果存在額外的將被計(jì)費(fèi)的時(shí)間量或使用量(如果沒(méi)有通過(guò)如果-則運(yùn)算符304C對(duì)整個(gè)使用持續(xù)時(shí)間進(jìn)行評(píng)估,情況可能如此),則對(duì)計(jì)費(fèi)函子306A進(jìn)行評(píng)估。計(jì)費(fèi)函子306A( “l(fā)inearRate”)取0.05作為輸入。如果⑴電話呼叫的日期不是呼叫者的生日,
(2)呼叫的目的地不在呼叫者的朋友和家人列表上,以及(3)呼叫的至少部分在7AM之后、8PM之前發(fā)生,則對(duì)計(jì)費(fèi)計(jì)劃函子的這個(gè)“分支”進(jìn)行評(píng)估。
[0088]硬件概述
[0089]根據(jù)一實(shí)施例,本文描述的技術(shù)由一個(gè)或多個(gè)專用計(jì)算裝置實(shí)現(xiàn)。專用計(jì)算裝置可以被硬編碼來(lái)執(zhí)行這些技術(shù),或者可以包括被持久地編程為執(zhí)行這些技術(shù)的數(shù)字電子裝置,諸如一個(gè)或多個(gè)專用集成電路(ASIC)或現(xiàn)場(chǎng)可編程門陣列(FPGA),或者可以包括按照固件、存儲(chǔ)器、其他儲(chǔ)存器或組合中的程序指令執(zhí)行這些技術(shù)的一個(gè)或多個(gè)通用硬件處理器。這樣的專用計(jì)算裝置還可以組合具有自定義編程的自定義硬連線邏輯器、ASIC或FPGA來(lái)實(shí)現(xiàn)這些技術(shù)。專用計(jì)算裝置可以是臺(tái)式計(jì)算機(jī)系統(tǒng)、便攜式計(jì)算機(jī)系統(tǒng)、手持裝置、聯(lián)網(wǎng)裝置、或合并硬連線邏輯和/或程序邏輯來(lái)實(shí)現(xiàn)這些技術(shù)的任何其他裝置。
[0090]例如,圖4是例示在其上可以實(shí)現(xiàn)本發(fā)明的實(shí)施例的計(jì)算機(jī)系統(tǒng)400的框圖。計(jì)算機(jī)系統(tǒng)400包括用于傳送信息的總線402或其他通信機(jī)制、以及與總線402耦合的用于對(duì)信息進(jìn)行處理的硬件處理器404。硬件處理器404可以是例如專用微處理器。
[0091]計(jì)算機(jī)系統(tǒng)400還包括耦合到總線402的用于存儲(chǔ)信息和將被處理器404執(zhí)行的指令的主存儲(chǔ)器406,諸如隨機(jī)存取存儲(chǔ)器(RAM)或其他動(dòng)態(tài)存儲(chǔ)裝置。主存儲(chǔ)器406還可以用于存儲(chǔ)將被處理器404執(zhí)行的指令執(zhí)行期間的臨時(shí)變量或其他中間信息。這樣的指令在被存儲(chǔ)在可供處理器404訪問(wèn)的非暫時(shí)性存儲(chǔ)介質(zhì)中時(shí)將計(jì)算機(jī)系統(tǒng)400變?yōu)楸欢ㄖ茷閳?zhí)行這些指令中所指定的操作的專用機(jī)器。
[0092]計(jì)算機(jī)系統(tǒng)400還包括用于存儲(chǔ)用于處理器404的靜態(tài)信息和指令的只讀存儲(chǔ)器(ROM)408或其他靜態(tài)存儲(chǔ)裝置。提供了存儲(chǔ)裝置410,諸如磁盤或光學(xué)盤,并且存儲(chǔ)裝置410耦合到總線402,用于存儲(chǔ)信息和指令。
[0093]計(jì)算機(jī)系統(tǒng)400可以經(jīng)由總線402耦合到用于向計(jì)算機(jī)用戶顯示信息的顯示器412,諸如陰極射線管(CRT)。包括字母數(shù)字鍵和其他鍵的輸入裝置414耦合到總線402,用于將信息和命令選擇傳送給處理器404。另一種類型的用戶輸入裝置是用于將方向信息和命令選擇傳送給處理器404并且用于控制顯示器412上的光標(biāo)移動(dòng)的光標(biāo)控件416,諸如鼠標(biāo)、軌跡球、或光標(biāo)方向鍵。該輸入裝置通常具有兩個(gè)軸(第一軸(例如,X)和第二軸(例如,y))上的兩個(gè)自由度,這兩個(gè)自由度使得該裝置可以指定平面中的位置。
[0094]計(jì)算機(jī)系統(tǒng)400可以使用與該計(jì)算機(jī)系統(tǒng)組合使計(jì)算機(jī)系統(tǒng)400成為專用機(jī)器或?qū)⒂?jì)算機(jī)系統(tǒng)400編程為專用機(jī)器的定制的硬連線邏輯器、一個(gè)或多個(gè)ASIC或FPGA、固件和/或程序邏輯器來(lái)實(shí)現(xiàn)本文中所描述的技術(shù)。根據(jù)一實(shí)施例,本文中的技術(shù)由計(jì)算機(jī)系統(tǒng)400響應(yīng)于處理器404執(zhí)行主存儲(chǔ)器406中所包含的一個(gè)或多個(gè)指令的一個(gè)或多個(gè)序列來(lái)執(zhí)行。這樣的指令可以從另一個(gè)存儲(chǔ)介質(zhì)(諸如存儲(chǔ)裝置410)讀取到主存儲(chǔ)器406中。主存儲(chǔ)器406中所包含的指令序列的執(zhí)行使處理器404執(zhí)行本文中所描述的處理步驟。在替代實(shí)施例中,可以使用硬連線的電路系統(tǒng)來(lái)代替軟件指令或者與軟件指令組合。
[0095]本文中所使用的術(shù)語(yǔ)“存儲(chǔ)介質(zhì)”是指存儲(chǔ)使機(jī)器以特定方式操作的數(shù)據(jù)和/或指令的任何非暫時(shí)性介質(zhì)。這樣的存儲(chǔ)介質(zhì)可以包括非易失性介質(zhì)和/或易失性介質(zhì)。非易失性介質(zhì)包括,例如,光學(xué)盤或磁性盤,諸如存儲(chǔ)裝置410。易失性介質(zhì)包括動(dòng)態(tài)存儲(chǔ)器,諸如主存儲(chǔ)器406。常見(jiàn)形式的存儲(chǔ)介質(zhì)包括,例如,軟盤、柔性盤、硬盤、固態(tài)驅(qū)動(dòng)器、磁帶、或任何其他磁性數(shù)據(jù)存儲(chǔ)介質(zhì)、CD-ROM、任何其他光學(xué)數(shù)據(jù)存儲(chǔ)介質(zhì)、具有孔圖案的任何物理介質(zhì)、RAM、PROM、以及EPROM、FLASH-EPROM、NVRAM、任何其他存儲(chǔ)器芯片或盒。
[0096]存儲(chǔ)介質(zhì)不同于傳輸介質(zhì),但是可以與傳輸介質(zhì)結(jié)合使用。傳輸介質(zhì)參與在存儲(chǔ)介質(zhì)之間傳送信息。例如,傳輸介質(zhì)包括同軸電纜、銅線和光纖,它們包括包含總線402的導(dǎo)線。傳輸介質(zhì)還可以采取聲波或光波的形式,諸如在無(wú)線電波和紅外數(shù)據(jù)通信期間產(chǎn)生的那些聲波或光波。
[0097]在將一個(gè)或多個(gè)指令的一個(gè)或多個(gè)序列傳載到處理器404進(jìn)行執(zhí)行時(shí)可能涉及各種形式的介質(zhì)。例如,這些指令可以一開(kāi)始承載在遠(yuǎn)程計(jì)算機(jī)的磁盤或固態(tài)驅(qū)動(dòng)器上。遠(yuǎn)程計(jì)算機(jī)可以將這些指令加載到其動(dòng)態(tài)存儲(chǔ)器中,并且使用調(diào)制解調(diào)器通過(guò)電話線發(fā)送這些指令。計(jì)算機(jī)系統(tǒng)400本地的調(diào)制解調(diào)器可以接收電話線上的數(shù)據(jù),并且使用紅外發(fā)射器來(lái)將該數(shù)據(jù)轉(zhuǎn)換為紅外信號(hào)。紅外探測(cè)器可以接收紅外信號(hào)中所承載的數(shù)據(jù),并且適當(dāng)?shù)碾娐废到y(tǒng)可以將該數(shù)據(jù)放置在總線402上??偩€402將數(shù)據(jù)傳載到主存儲(chǔ)器406,處理器404從主存儲(chǔ)器406檢索并執(zhí)行這些指令。主存儲(chǔ)器406接收的指令可選地可以在處理器404執(zhí)行之前或之后被存儲(chǔ)在存儲(chǔ)裝置410上。
[0098]計(jì)算機(jī)系統(tǒng)400還包括耦合到總線402的通信接口 418。通信接口 418提供耦合到網(wǎng)絡(luò)鏈路420的雙向數(shù)據(jù)通信,網(wǎng)絡(luò)鏈路420連接到局域網(wǎng)422。例如,通信接口 418可以是綜合服務(wù)數(shù)字網(wǎng)絡(luò)(ISDN)卡、電纜調(diào)制解調(diào)器、衛(wèi)星調(diào)制解調(diào)器、或者提供與相應(yīng)類型的電話線的數(shù)據(jù)通信連接的調(diào)制解調(diào)器。另舉一例,通信接口 418可以是提供與可兼容LAN的數(shù)據(jù)通信連接的局域網(wǎng)(LAN)卡。還可以實(shí)現(xiàn)無(wú)線鏈路。在任何這樣的實(shí)現(xiàn)中,通信接口 418發(fā)送并且接收承載表示各種類型的信息的數(shù)字?jǐn)?shù)據(jù)流的電信號(hào)、電磁信號(hào)或光學(xué)信號(hào)。
[0099]網(wǎng)絡(luò)鏈路420通常通過(guò)一個(gè)或多個(gè)網(wǎng)絡(luò)將數(shù)據(jù)通信信息提供給其他數(shù)據(jù)裝置。例如,網(wǎng)絡(luò)鏈路420可以通過(guò)局域網(wǎng)422提供與主機(jī)424或由互聯(lián)網(wǎng)服務(wù)提供商(ISP) 426運(yùn)營(yíng)的數(shù)據(jù)設(shè)備的連接。ISP426繼而通過(guò)全球數(shù)據(jù)包數(shù)據(jù)通信網(wǎng)絡(luò)(現(xiàn)在常被稱為“互聯(lián)網(wǎng)”428)提供數(shù)據(jù)通信服務(wù)。局域網(wǎng)422和互聯(lián)網(wǎng)428都使用承載數(shù)字?jǐn)?shù)據(jù)流的電信號(hào)、電磁信號(hào)或光學(xué)信號(hào)。通過(guò)各種網(wǎng)絡(luò)的信號(hào)、以及網(wǎng)絡(luò)鏈路420上的通過(guò)通信接口 418的信號(hào)是示例形式的傳輸介質(zhì),這些信號(hào)將數(shù)字?jǐn)?shù)據(jù)傳載到計(jì)算機(jī)系統(tǒng)400,并且從計(jì)算機(jī)系統(tǒng)400傳載數(shù)字?jǐn)?shù)據(jù)。
[0100]計(jì)算機(jī)系統(tǒng)400可以通過(guò)網(wǎng)絡(luò)、網(wǎng)絡(luò)鏈路420和通信接口 418發(fā)送消息并且接收數(shù)據(jù),包括程序代碼。在互聯(lián)網(wǎng)例子中,服務(wù)器430可以通過(guò)互聯(lián)網(wǎng)428、ISP426、局域網(wǎng)422和通信接口 418發(fā)送被請(qǐng)求的應(yīng)用程序代碼。
[0101]所接收的代碼可以在其被接收時(shí)被執(zhí)行、和/或被存儲(chǔ)在存儲(chǔ)裝置410或其他非易失性儲(chǔ)存器中以供以后執(zhí)行。
[0102]在前面的說(shuō)明書中,已經(jīng)參照在不同實(shí)現(xiàn)中可以變化的許多特定細(xì)節(jié)描述了本發(fā)明的實(shí)施例。因此,要從例示性、而非限制性的意義上來(lái)看待說(shuō)明書和附圖。本發(fā)明的范圍以及 申請(qǐng)人:意圖什么是本發(fā)明的范圍的唯一的排他的指示是本申請(qǐng)中以特定形式發(fā)布的一組權(quán)利要求的字面范圍和等同范圍,以所述特定形式,發(fā)布這樣的權(quán)利要求,包括任何后續(xù)修正。
【權(quán)利要求】
1.一種計(jì)算機(jī)實(shí)施的方法,包括: 在事件處理系統(tǒng)處接收與客戶相關(guān)聯(lián)的事件; 響應(yīng)于接收到所述事件: 識(shí)別包括多個(gè)函數(shù)對(duì)象的計(jì)費(fèi)計(jì)劃函數(shù)對(duì)象; 執(zhí)行所述計(jì)費(fèi)計(jì)劃函數(shù)對(duì)象,其中執(zhí)行所述計(jì)費(fèi)計(jì)劃函數(shù)對(duì)象包括: 執(zhí)行所述多個(gè)函數(shù)對(duì)象中的第一函數(shù)對(duì)象以產(chǎn)生第一結(jié)果; 基于所述第一結(jié)果,識(shí)別所述多個(gè)函數(shù)對(duì)象中的第二函數(shù)對(duì)象; 執(zhí)行所述第二函數(shù)對(duì)象以產(chǎn)生第二結(jié)果;以及 基于所述第二結(jié)果,確定向所述客戶收取的金額;以及 基于所述金額,更新與所述客戶相關(guān)聯(lián)的賬戶, 其中,所述方法由一個(gè)或多個(gè)計(jì)算裝置執(zhí)行。
2.根據(jù)權(quán)利要求1所述的方法,其中,執(zhí)行所述多個(gè)函數(shù)對(duì)象中的少于全部的函數(shù)對(duì)象來(lái)確定所述金額。
3.根據(jù)權(quán)利要求1所述的方法,其中,執(zhí)行、識(shí)別和確定的步驟由單個(gè)處理執(zhí)行。
4.根據(jù)權(quán)利要求1所述的方法,其中: 識(shí)別計(jì)費(fèi)計(jì)劃函數(shù)對(duì)象包括從多個(gè)計(jì)費(fèi)計(jì)劃函數(shù)對(duì)象中識(shí)別所述計(jì)費(fèi)計(jì)劃函數(shù)對(duì)象; 所述多個(gè)計(jì)費(fèi)計(jì)劃函數(shù)對(duì)象中的每個(gè)計(jì)費(fèi)計(jì)劃函數(shù)對(duì)象對(duì)應(yīng)于多個(gè)計(jì)費(fèi)計(jì)劃中的不同計(jì)費(fèi)計(jì)劃。
5.根據(jù)權(quán)利要求1所述的方法,其中: 所述多個(gè)計(jì)費(fèi)計(jì)劃函數(shù)對(duì)象包括第一計(jì)費(fèi)計(jì)劃函數(shù)對(duì)象和第二計(jì)費(fèi)計(jì)劃函數(shù)對(duì)象; 所述第一計(jì)費(fèi)計(jì)劃函數(shù)對(duì)象包括第一多個(gè)函數(shù)對(duì)象,所述第一多個(gè)函數(shù)對(duì)象包括特定函數(shù)對(duì)象; 所述第二計(jì)費(fèi)計(jì)劃函數(shù)對(duì)象包括第二多個(gè)函數(shù)對(duì)象,所述第二多個(gè)函數(shù)對(duì)象包括所述特定函數(shù)對(duì)象; 所述特定函數(shù)對(duì)象的實(shí)例由所述第一計(jì)費(fèi)計(jì)劃函數(shù)對(duì)象和所述第二計(jì)費(fèi)計(jì)劃函數(shù)對(duì)象共享。
6.根據(jù)權(quán)利要求1所述的方法,還包括: 接收遵循領(lǐng)域特定語(yǔ)言(DSL)的聲明;以及 對(duì)所述聲明進(jìn)行處理以產(chǎn)生所述計(jì)費(fèi)計(jì)劃函數(shù)對(duì)象。
7.根據(jù)權(quán)利要求6所述的方法,還包括: 接收反映由用戶建立的多個(gè)規(guī)則的規(guī)則數(shù)據(jù); 對(duì)所述規(guī)則數(shù)據(jù)進(jìn)行處理以產(chǎn)生所述聲明。
8.根據(jù)權(quán)利要求6所述的方法,其中,在來(lái)自用戶的輸入中反映所述聲明。
9.根據(jù)權(quán)利要求1所述的方法,其中,所述計(jì)費(fèi)計(jì)劃函數(shù)對(duì)象中沒(méi)有一個(gè)函數(shù)對(duì)象存儲(chǔ)所述賬戶被更新之后的狀態(tài)信息。
10.根據(jù)權(quán)利要求1所述的方法,還包括: 與所述計(jì)費(fèi)計(jì)劃函數(shù)對(duì)象中的特定函數(shù)對(duì)象相關(guān)聯(lián)地存儲(chǔ)基于對(duì)所述特定函數(shù)對(duì)象的特定輸入執(zhí)行所述特定函數(shù)對(duì)象的結(jié)果; 接收與第二客戶相關(guān)聯(lián)的第二事件;以及 響應(yīng)于接收到所述第二事件,讀取所述結(jié)果,而不是執(zhí)行所述特定函數(shù)對(duì)象來(lái)產(chǎn)生所述結(jié)果。
11.根據(jù)權(quán)利要求1所述的方法,其中,所述事件是系統(tǒng)事件或使用事件,所述使用事件包括指示所述客戶的使用的使用數(shù)據(jù)。
12.—個(gè)或多個(gè)存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)存儲(chǔ)有指令,所述指令在由一個(gè)或多個(gè)處理器執(zhí)行時(shí)導(dǎo)致執(zhí)行權(quán)利要求1-11中的任一項(xiàng)所述的方法。
13.一種裝置,包括: 一個(gè)或多個(gè)處理器;以及 一個(gè)或多個(gè)存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)存儲(chǔ)有指令,所述指令在由所述一個(gè)或多個(gè)處理器執(zhí)行時(shí)導(dǎo)致執(zhí)行權(quán)利要求1-11中的任一項(xiàng)所述的方法。
【文檔編號(hào)】H04L12/14GK104137475SQ201280070394
【公開(kāi)日】2014年11月5日 申請(qǐng)日期:2012年9月26日 優(yōu)先權(quán)日:2012年1月9日
【發(fā)明者】E·特謝爾, G·馬拉克薩姆徳拉, J·凱默爾, L·小皮羅 申請(qǐng)人:甲骨文國(guó)際公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
弥勒县| 砚山县| 六安市| 读书| 钟祥市| 友谊县| 沙坪坝区| 于都县| 武乡县| 荆州市| 太保市| 大理市| 西乌珠穆沁旗| 安国市| 黑水县| 长泰县| 呼玛县| 珠海市| 永定县| 延边| 报价| 东山县| 长寿区| 阿勒泰市| 邓州市| 曲周县| 赤城县| 连山| 新乡市| 泊头市| 灵石县| 右玉县| 香河县| 三明市| 丽江市| 镇原县| 乐昌市| 禹州市| 湟源县| 武隆县| 嘉定区|