專利名稱:一種業(yè)務單據轉換的方法、裝置及系統(tǒng)的制作方法
技術領域:
本發(fā)明屬于計算機領域,尤其涉及一種業(yè)務單據轉換的方法、裝置及系統(tǒng)。
背景技術:
企業(yè)的各種業(yè)務之間存在一定的邏輯關系,而且這種邏輯關系在不同企業(yè)或企業(yè) 的不同時期是不同的,體現在管理軟件中就是一種業(yè)務單據的數據,是根據另一業(yè)務單據 的數據得來的,比如收款一般都是根據開票的金額決定的;發(fā)票或收款的金額需要做賬生 成憑證等。 單據轉換功能在ERP系統(tǒng)中已經開始發(fā)揮越來越重要的作用,在單據轉換的過程
中,必須根據源單據的值來生成目標單據的值,往往是源單據的字段對應某個目標單據的
字段值,通常稱為映射關系,由于,源業(yè)務單據和目標業(yè)務單據的組成結構一般不相同,而
且有可能在不同的業(yè)務場景下轉換邏輯也有差異,很多情況下業(yè)務單據字段間的映射關系
非常復雜,不僅僅是把源單據字段的值復制到目標單據的字段上,而是可能需要對源單據
的字段的值做進一步的數據加工,然后才能賦值給目標業(yè)務單據,此時簡單的數據映射關
系處理已經不能夠滿足要求,隨著業(yè)務規(guī)模的增加而遞增,維護工作相當復雜。 現有技術是通過編寫代碼來維護這種復雜映射邏輯。通過編寫代碼來實現單據間
的復雜關系映射和賦值動作,能實現基本的需要,但是,編寫的代碼不能夠方便的修改和維
護,而且用戶無法在運行期動態(tài)增加和修改映射關系邏輯,每次出現新變化都需要重新編
寫代碼,因此開發(fā)和維護成本很高。
發(fā)明內容
本發(fā)明實施例的目的在于提供一種業(yè)務單據轉換的方法,旨在解決實際場景中, 進行業(yè)務單據之間的轉換時,需要對源業(yè)務單據數據進行數據加工后才能賦值給目標業(yè)務 單據的問題。 本發(fā)明實施例是這樣實現的,一種業(yè)務單據轉換的方法,所述方法包括下述步 驟 獲取預設的公式腳本,并對預設的公式腳本進行語法分析,生成與所述公式腳本 對應的公式語法結構樹; 按照優(yōu)先級遍歷整個公式語法結構樹,并獲取源業(yè)務單據的數據,根據所述源業(yè) 務單據的數據,對所述公式語法結構樹中的各個節(jié)點的內容執(zhí)行相應的計算,得到公式結 果; 將所述公式結果賦值給目標業(yè)務單據的相應字段。
本發(fā)明實施例的另一目的在于提供一種轉換裝置,所述轉換裝置包括 轉換引擎,用于獲取預設的公式腳本,并對預設的公式腳本進行語法分析,生成與
所述公式腳本對應的公式語法結構樹; 腳本執(zhí)行引擎,用于按照優(yōu)先級遍歷整個公式語法結構樹,并獲取源業(yè)務單據的數據,根據所述源業(yè)務單據的數據,對所述公式語法結構樹中的各個節(jié)點的內容執(zhí)行相應
的計算,得到公式結果,并將所述公式結果賦值給目標業(yè)務單據的相應字段。 本發(fā)明實施例的另一目的在于提供一種業(yè)務單據轉換的系統(tǒng),包括客戶端和業(yè)
務單據存儲端,所述系統(tǒng)還包括如上所述的轉換裝置。 在本發(fā)明實施例中,預先生成各種不同業(yè)務單據之間的映射關系的公式腳本,當 客戶端要進行單據轉換時,在運行期動態(tài)解析公式腳本,生成公式結構語法樹,再對所述公 式結構語法樹遍歷,計算返回公式結果賦值給目標業(yè)務單據的相應字段,完成業(yè)務單據之 間的轉換,解決了實際場景中,實現業(yè)務單據之間的轉換時,需要對源業(yè)務單據數據進行數 據加工后才能賦值給目標業(yè)務單據的需求,從而大大豐富了業(yè)務單據轉換系統(tǒng)的功能性, 并且具有很好的適應性。
圖1是本發(fā)明實施例提供的業(yè)務單據轉換方法的實現流程圖;
圖2是本發(fā)明實施例提供的業(yè)務單據轉換系統(tǒng)的結構示意圖;
圖3是本發(fā)明實施例提供的生成的公式結構語法樹的示例圖; 圖4是本發(fā)明實施例提供的根據銷售單自動生成應收單需要生成的公式結構語 法樹的應用示例圖; 圖5是本發(fā)明實施例提供的采用圖2所示的業(yè)務單據轉換系統(tǒng)實現單據轉換的方 法的實現流程圖。
具體實施例方式
為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對 本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不 用于限定本發(fā)明。 在本發(fā)明實施例中,預先生成各種不同業(yè)務單據之間的映射關系的公式腳本,當 客戶端要進行單據轉換時,在運行期動態(tài)解析公式腳本,生成公式結構語法樹,再對所述公 式結構語法樹遍歷,計算返回公式結果賦值給目標業(yè)務單據的相應字段。
本發(fā)明提供了一種業(yè)務單據轉換的方法、裝置及系統(tǒng)
所述方法包括下述步驟 獲取預設的公式腳本,并對預設的公式腳本進行語法分析,生成與所述公式腳本 對應的公式語法結構樹; 按照優(yōu)先級遍歷整個公式語法結構樹,并獲取源業(yè)務單據的數據,根據所述源業(yè) 務單據的數據,對所述公式語法結構樹中的各個節(jié)點的內容執(zhí)行相應的計算,得到公式結 果; 將所述公式結果賦值給目標業(yè)務單據的相應字段。
所述轉換裝置包括 轉換引擎,用于獲取預設的公式腳本,并對預設的公式腳本進行語法分析,生成與 所述公式腳本對應的公式語法結構樹; 腳本執(zhí)行引擎,用于按照優(yōu)先級遍歷整個公式語法結構樹,并獲取源業(yè)務單據的數據,根據所述源業(yè)務單據的數據,對所述公式語法結構樹中的各個節(jié)點的內容執(zhí)行相應 的計算,得到公式結果,并將所述公式結果賦值給目標業(yè)務單據的相應字段。
所述系統(tǒng)包括客戶端和業(yè)務單據存儲端,所述系統(tǒng)還包括如上所述的轉換裝置。
實施例一 圖1是本發(fā)明實施例提供的業(yè)務單據轉換方法的實現流程,詳述如下 在步驟S101中,獲取預設的公式腳本,并對預設的公式腳本進行語法分析,生成
與所述公式腳本對應的公式語法結構樹。 在步驟S102中,按照優(yōu)先級遍歷整個公式語法結構樹,并獲取源業(yè)務單據的數 據,根據源業(yè)務單據的數據,對公式語法結構樹中的各個節(jié)點的內容執(zhí)行相應的計算,得到 公式結果。 在步驟S103中,將計算得到的公式結果賦值給目標業(yè)務單據的相應字段。
實施例二 圖2為本發(fā)明實施例提供的業(yè)務單據轉換系統(tǒng)的結構,為了便于說明,僅示出了 本發(fā)明實施例相關的部分。該業(yè)務單據轉換系統(tǒng)可以作為獨立的掛件集成到ERP系統(tǒng)或者 ERP系統(tǒng)的應用系統(tǒng)中。該業(yè)務單據轉換系統(tǒng)包括客戶端ll,單據轉換平臺12、公式腳本 生成裝置13、轉換裝置14和業(yè)務單據存儲端15。
其中,轉換裝置14包括轉換引擎141和腳本執(zhí)行引擎142。 轉換引擎141對公式腳本生成裝置13獲取預設的公式腳本,并對該公式腳本進行 語法分析,生成與所述公式腳本對應的公式語法結構樹。 腳本執(zhí)行引擎142按照優(yōu)先級遍歷整個公式語法結構樹,并獲取源業(yè)務單據的數 據,根據源業(yè)務單據的數據,對公式語法結構樹中的各個節(jié)點的內容執(zhí)行相應的計算,得到 公式結果,并將計算得到的公式結果賦值給目標業(yè)務單據的相應字段。 整個系統(tǒng)的工作過程如下所述客戶端11發(fā)起定義單據轉換公式的請求,請求單 據轉換平臺12定義一個業(yè)務單據轉換公式,單據轉換平臺12根據所述指令,選擇目標業(yè)務 單據字段和源業(yè)務單據字段,公式腳本生成裝置13根據目標業(yè)務單據字段和源業(yè)務單據 字段生成單據轉換的公式腳本并保存。當客戶端11需要進行源業(yè)務單據和目標業(yè)務單據 之間的轉換時,發(fā)起請求執(zhí)行單據轉換的指令,單據轉換平臺12根據客戶端11發(fā)送的請求 指令,向公式腳本生成裝置13獲取存儲于其中的公式腳本,同時向業(yè)務單據存儲端15獲取 源業(yè)務單據的數據,然后通知轉換裝置14,由轉換裝置14根據單據轉換平臺12獲取的公式 腳本以及源業(yè)務單據的數據執(zhí)行實際的單據轉換,并通過轉換裝置14返回執(zhí)行結果至單 據轉換平臺12,單據轉換平臺12再轉發(fā)執(zhí)行結果給客戶端11。其中,執(zhí)行單據轉換的步驟 具體為轉換裝置14的轉換引擎141執(zhí)行獲取的預先存儲在公式腳本生成裝置13中的公 式腳本,生成公式腳本結構語法樹,再調用腳本執(zhí)行引擎142按照優(yōu)先級遍歷整個公式腳 本結構語法樹,并根據公式腳本結構語法樹中的各個節(jié)點的內容執(zhí)行相應的計算,得到公 式結果,再通過轉換引擎141將公式結果賦值給與目標業(yè)務單據的相應字段,最后返回生 成的目標業(yè)務單據至單據轉換平臺12。 具體來說,公式腳本生成裝置13需要定義以下內容
1.目標單據的字段名稱 2.單據轉換公式,公式腳本為按JAVA語法定義一個計算表達式,支持各種運算符和括號等,公式中可以使用源業(yè)務單據上的字段名稱,例如 Result = Source, price X (Source. qtyl+Source. qty2) X 17% ; 另外,以XML文件格式存儲公式腳本,具體進行業(yè)務單據之間的轉換時,根據公式
腳本計算表達式的內容,計算出結果Result并賦值給目標業(yè)務單據的相應字段。 具體的腳本執(zhí)行引擎142的工作過程詳述如下 1、獲取公式腳本生成裝置13預先定義的公式腳本; 2、對公式腳本進行解析,公式結構必須滿足以下格式 Result =公式內容; 3、解析公式腳本內容中的公式內容部分,分拆出標識符和運算符以及括號,并分別按優(yōu)先級順序用一定的結構存儲,在本發(fā)明實施例中,采用樹狀結構進行存儲,具體的公式腳本的結構語法樹如圖3所示,解析原則如下
1)、公式表達式格式必須滿足以下結構
公式結果=公式內容; 2)、將公式按語法結構分拆為若干二元結構,分為左節(jié)點、右節(jié)點、運算符,格式為 表達式/葉子節(jié)點運算符表達式/葉子節(jié)點 3)、每個節(jié)點如果可以拆分,則再拆分為一個更小的二元結構 4)、不能分拆為二元結構的節(jié)點稱之為葉子節(jié)點 5)、被括號擴起來的表達式優(yōu)先分拆,保證優(yōu)先級一致; 4、對解析后的公式結構中使用到的業(yè)務單據名稱、字段名稱等元素進行預處理,其中部分為特殊關鍵字,如"Result"、"Source"、"Dest"等,直接識別為結果、源業(yè)務單據和目標業(yè)務單據對象,字段名稱則替換為對象上相應的字段名; 5、根據優(yōu)先級遍歷整個公式結構的各層次節(jié)點,執(zhí)行所有公式計算內容,執(zhí)行運算時,先計算所有的葉子節(jié)點,然后從層次最深的節(jié)點開始逐層計算結果并賦值給上層節(jié)點,直到頂層并返回公式結果; 6、將公式結果值賦值給目標業(yè)務單據的相應字段。 下面是其中的一個應用示例例如銷售訂單需要可以自動生成應收單,且希望應收單的"繳稅金額"字段等于 銷售訂單.單價X (銷售訂單.待發(fā)貨數+銷售訂單.已發(fā)貨數)X 17%
則可以定義一下單據轉換公式腳本內容 Result = Source, price X (Source. qtyl+Source. qty2) X 17% 系統(tǒng)調用腳本執(zhí)行引擎142生成公式結構語法樹,具體生成的公式結構語法樹如
圖4所示,然后計算公式的結果,并將其賦值給目標業(yè)務單據的相應字段,具體步驟為 1)、檢查公式內容的格式是否符合要求; 2)、解析語法并生成公式結構語法樹; 3)、讀取最底層的兩個葉子節(jié)點(銷售訂單.待發(fā)貨數和銷售訂單.已發(fā)貨數)的值并相加,將值賦給上層的表達式節(jié)點; 4)、用上一步驟的運算結果與同一層的葉子節(jié)點(銷售訂單.單價)相乘,并將結果值賦給上層的表達式節(jié)點;
5)、用上一步驟的運算結果與同一層的葉子節(jié)點(17% )相乘,并將結果值賦給上層的表達式節(jié)點; 6)、將此結果值賦給公式結果,并將公式結果賦值給目標業(yè)務單據的相應的字段
"繳稅金額"。
實施例三 圖5是本發(fā)明實施例提供的采用如圖2所示的業(yè)務單據轉換系統(tǒng)實現單據轉換的方法的實現流程,詳述如下 1、客戶端發(fā)送生成單據轉換公式的請求指令至單據轉換平臺。 2、單據轉換平臺根據客戶端發(fā)送的生成單據轉換公式請求指令,選擇目標業(yè)務單
據字段和源業(yè)務字段。 3、公式腳本生成裝置根據目標業(yè)務單據字段和源業(yè)務單據字段生成單據轉換公式腳本并存儲。 作為本發(fā)明的一個實施例,公式腳本生成裝置要定義單據轉換的公式腳本,單據轉換的公式腳本為按JAVA語法定義一個計算表達式,支持各種運算符和括號等,公式中可以使用源業(yè)務單據上的字段名稱,例如 Result = Source, price X (Source. qtyl+Source. qty2) X 17% ;
另外,以XML文件格式存儲公式內容,具體進行業(yè)務單據之間的轉換時,計算出結果Result并賦值給目標業(yè)務單據的相應字段即可。具體情況如上所述,在此不再贅述。
4、客戶端發(fā)起請求執(zhí)行單據轉換的指令至單據轉換平臺。 5、當接收到客戶端發(fā)送的單據轉換請求指令時,單據轉換平臺從公式腳本生成裝
置獲取公式腳本生成裝置存儲的單據轉換公式腳本。 6 、單據轉換平臺從業(yè)務單據存儲端獲取源業(yè)務單據的數據。 作為本發(fā)明的一個實施例,當客戶端需要進行源業(yè)務單據和目標業(yè)務單據之間的轉換時,發(fā)起請求執(zhí)行單據轉換的指令,單據轉換平臺根據客戶端發(fā)送的請求指令,向公式腳本生成裝置獲取存儲于其中的公式腳本,同時向業(yè)務單據存儲端獲取源業(yè)務單據的數據。 7 、單據轉換平臺發(fā)送的執(zhí)行單據轉換指令至轉換裝置。 8、當接收到單據轉換平臺發(fā)送的執(zhí)行單據轉換指令時,轉換裝置根據單據轉換平臺獲取的單據轉換公式腳本以及源業(yè)務單據的數據執(zhí)行單據的轉換。 作為本發(fā)明的一個實施例,單據轉換平臺發(fā)送執(zhí)行單據轉換指令給轉換裝置,轉換裝置根據單據轉換平臺獲取的公式腳本內容以及源業(yè)務單據的數據執(zhí)行實際的單據轉換,并通過轉換裝置的執(zhí)行結果發(fā)送單元返回執(zhí)行結果至單據轉換平臺,單據轉換平臺的執(zhí)行結果發(fā)送單元返回轉換結果給客戶端。其中,執(zhí)行單據轉換的步驟具體為轉換裝置的轉換引擎執(zhí)行獲取的預先存儲在公式腳本生成裝置中的公式腳本,生成公式腳本結構語法樹,再調用腳本執(zhí)行引擎按照優(yōu)先級遍歷整個公式腳本結構語法樹,并根據公式腳本結構語法樹中各個節(jié)點的內容執(zhí)行相應的計算,得到公式結果,通過轉換引擎將所述公式結果賦值給目標業(yè)務單據的相應字段,最后返回生成的目標業(yè)務單據至單據轉換平臺。具體情況如上所述,在此不再贅述。 9、轉換裝置轉換裝置發(fā)送執(zhí)行結果至單據轉換平臺。
7
10、單據轉換平臺將轉換裝置返回的執(zhí)行結果發(fā)送至客戶端。 在本發(fā)明實施例中,預先生成單據轉換公式腳本,使用公式腳本來描述業(yè)務單據間各種復雜的轉換映射關系,來實現各種復雜轉換邏輯,在運行期動態(tài)解析公式腳本來產生轉換邏輯,解決了實際場景中各種需要對源業(yè)務單據的數據進行數據加工后才能賦值給目標業(yè)務單據的需求,單據間的轉換不只能支持簡單的字段映射,還允許用戶在單據轉換時對源單據進行復雜的腳本運算,支持加減乘除等運算符、支持用括號來改變優(yōu)先級,從而大大豐富了業(yè)務單據轉換系統(tǒng)的功能性,并且具有很好的適應性;另外,生成的公式腳本是按JAVA的語法定義的,易于學習和使用,并且,公式腳本可以由熟悉業(yè)務場景的業(yè)務人員來設置,不依賴具體的代碼實現,可擴展性比較好;此外,使用XML格式存儲公式腳本,使用公式結構語法樹的形式解析和計算公式腳本,可以方便的支持擴展各種運算符和優(yōu)先級及其它語法,具有較好的可擴展性和可維護性。 以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內。
權利要求
一種業(yè)務單據轉換的方法,其特征在于,所述方法包括下述步驟獲取預設的公式腳本,并對所述公式腳本進行語法分析,生成與所述公式腳本對應的公式語法結構樹;按照優(yōu)先級遍歷整個公式語法結構樹,并獲取源業(yè)務單據的數據,根據所述源業(yè)務單據的數據,對所述公式語法結構樹中的各個節(jié)點的內容執(zhí)行相應的計算,得到公式結果;將所述公式結果賦值給目標業(yè)務單據的相應字段。
2. 如權利要求1所述的方法,其特征在于,所述公式腳本是按照JAVA的語法定義的,并 采用XML文件的格式存儲。
3. —種轉換裝置,其特征在于,所述轉換裝置包括轉換引擎,用于獲取預設的公式腳本,并對預設的公式腳本進行語法分析,生成與所述 公式腳本對應的公式語法結構樹;腳本執(zhí)行引擎,用于按照優(yōu)先級遍歷整個公式語法結構樹,并獲取源業(yè)務單據的數據, 根據所述源業(yè)務單據的數據,對所述公式語法結構樹中的各個節(jié)點的內容執(zhí)行相應的計 算,得到公式結果,并將所述公式結果賦值給目標業(yè)務單據的相應字段。
4. 如權利要求3所述的裝置,其特征在于,所述公式腳本是按照JAVA的語法定義的,并 采用XML文件的格式存儲。
5. —種業(yè)務單據轉換的系統(tǒng),包括客戶端和業(yè)務單據存儲端,其特征在于,所述系統(tǒng) 還包括如權利要求3至4任一項所述的轉換裝置。
6. 如權利要求5所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括公式腳本生成裝置,用于根據預先選擇的目標業(yè)務單據字段和源業(yè)務單據字段生成單 據轉換的公式腳本。
7. 如權利要求5所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括單據轉換平臺,用于根據客戶端發(fā)送的生成單據轉換公式的請求指令,選擇目標業(yè)務 單據字段和源業(yè)務單據字段。
8. 如權利要求5所述的系統(tǒng),其特征在于,所述公式腳本是按照JAVA的語法定義的,并 采用XML文件的格式存儲。
全文摘要
本發(fā)明適用于計算機領域,提供了一種業(yè)務單據轉換的方法、裝置及系統(tǒng),所述方法包括下述步驟對預設的公式腳本進行語法分析,生成與所述公式腳本對應的公式語法結構樹;按照優(yōu)先級遍歷整個公式語法結構樹,并根據源業(yè)務單據的數據,對所述公式語法結構樹中的各個節(jié)點的內容執(zhí)行相應的計算,得到公式結果;將所述公式結果賦值給目標業(yè)務單據的相應字段。本發(fā)明中,進行業(yè)務單據之間的轉換時,可以不對源業(yè)務單據數據進行數據加工,即可賦值給目標業(yè)務單據。
文檔編號G06Q10/00GK101763339SQ20091018920
公開日2010年6月30日 申請日期2009年12月21日 優(yōu)先權日2009年12月21日
發(fā)明者張俊 申請人:金蝶軟件(中國)有限公司