報表引擎規範說明

2022-06-23 02:20:49 字數 4861 閱讀 2701

報表引擎標準

作者: 胡春國

建立日期:2004-09-17

**:郵件地址:

report engine specification version: 1.0

1目的... 8

2概述... 8

3假設... 9

4遠景... 9

5引擎內部結構... 9

5.1 總體結構... 10

5.2 報表引擎介面... 13

5.2.1 客戶應用介面... 14

5.2.2 應用程式介面... 14

5.2.3 管理監視介面... 15

5.2.4 報表引擎定義介面... 15

5.2.5 報**式定義介面... 16

5.2.6 報表引擎協同介面... 16

5.2.7 策略引擎介面... 16

5.3 技術框架... 17

5.3.1 什麼是匯流排... 17

5.3.2 匯流排的優點與缺點... 17

5.3.3 系統匯流排結構... 18

6報**式定義語言(rfdl) 20

6.1.1 通用結構... 20

6.1.1.1 顏色... 20

6.1.1.2 字型... 20

6.1.1.3 顯示格式... 20

6.1.1.4 函式... 20

6.1.1.5 線條... 20

6.1.1.6 **... 20

6.1.1.7 連結... 20

6.1.1.8 引用資料... 20

6.1.1.9 擴充套件屬性... 20

6.1.2 頁頭... 20

6.1.3 頁尾... 20

6.1.4 標題欄... 20

6.1.5 組頭... 20

6.1.6 組尾... 20

6.1.7 明細欄... 20

6.1.8 內嵌報表... 20

6.1.9 報**式定義例子... 20

6.1.9.1 銷售報表... 20

6.1.9.2 訂單報表... 20

7報表引擎定義語言(redl) 20

7.1 通用結構... 22

7.1.1 擴充套件屬性(extendedattribute)... 22

7.1.2 形式引數(formalparameter)... 22

7.1.3 外部參考(externalreference) 22

7.1.4 例子... 22

7.2 包結構... 23

7.2.1 報表包(reportpackage)... 24

7.2.2 報表包頭(packageheader) 25

7.2.3 可重定義包頭(redefinableheader) 25

7.2.4 包外部參考(externalpackage)... 26

7.2.5 例子... 26

7.3 參與者... 29

7.4 應用程式... 29

7.4.1 應用程式(application)... 30

7.4.2 例子... 30

7.5 報表過程... 31

7.5.1 報表過程(reportprocess)... 31

7.5.2 報表過程頭(processheader)... 32

7.5.3 可重定義報表過程頭(redefinableheader)... 33

7.6 演算法集... 33

7.6.1 演算法集(activityset)... 33

7.7 演算法... 33

7.7.1 演算法(activity) 33

7.7.2 路徑演算法(route activity)... 34

7.7.3 塊演算法(block activity) 34

7.7.4 執行控制屬性... 34

7.7.5 運算的替代執行方式(implementation) 35

7.7.5.1 no implementation. 35

7.7.5.2 tool 35

7.7.5.3 subflow.. 35

7.7.5.4 statement 36

7.7.6 轉移約束(transition restriction) 36

7.7.6.1 join. 36

7.7.6.2 split 36

7.8 轉移資訊... 37

7.8.1 轉移資訊(transition)... 37

7.8.2 轉移條件(condition) 37

7.9 相關資料... 38

7.9.1 相關資料(datafield)... 38

7.9.2 資料型別(datatype)... 38

7.9.3 基本資料型別(basic type) 39

7.9.4 資料型別(schema type) 39

7.9.5 資料型別(record type) 39

7.9.6 資料型別(union type) 39

7.9.7 列舉型別(enumeration type)... 40

7.9.8 陣列型別(array type)... 40

7.9.9 列表型別(list type)... 40

7.9.10 開發者聲名的資料型別(type declaractions)... 40

7.9.11 宣告型別(declared type) 40

7.10 資料操作集... 41

7.10.1 資料操作(statement)... 41

7.11 報表引擎定義例子... 42

7.11.1 銷售報表... 42

7.11.2 訂單報表... 47

8格式定義器... 47

9引擎定義器... 47

10. 引擎執行器... 47

11. 策略引擎... 49

12. 引擎監控器... 49

13. 報表生成器... 49

14. 總結... 49

15. 參考文件... 49

1. 目的

這篇文章主要是規範報表引擎整體結構、報表引擎的定義語言、報表引擎的報**式語言。只要報表引擎按照規範化的介面進行設計,報表引擎的各個部分就可以相互獨立地實現與進化,減弱彼此之間的耦合關係;並且,各公司設計的報表引擎都可以協同工作,相互之間進行資料、格式的交換;更利於將來形成一個報表引擎網路,從而,各報表引擎的在安全管理下組成一個虛擬的網路,企業可以從這個虛擬的網路中,搜尋到對企業本身有益的資料,更益於企業的巨集觀決策。

在文章中,主要是定義報表引擎的總體結構及它的定義語言;報表引擎包括它的元素及屬性、報表引擎要實現的演算法、與其它系統進行互動、與其它報表引擎的互動方式。

2. 概述

報表引擎起源於流行的工作流引擎的原理、報**式的定義、報表內容的各種演算法,產生報表引擎的思想。它主要是引用工作流引擎的流程運轉原理,在原始資料的基礎上,定義報表的格式、報表的演算法,根據定義的演算法自動執行計算,並輸出計算後的結果,再根據定義的報**式顯示報表的內容。

報表引擎根據定義的報表主題及它的演算法,在人工或日程安排的觸發下,自動執行。報表引擎根據報表主題,從資料庫的原始資料的基礎上,提取原始的資料,依據定義的報表演算法,進行自動計算;在提取報表主題及演算法運算的過程中,,報表引擎依據定義各種引數,實現所需的運算。

報表引擎輸出的資料資訊,經報表解釋介面實現它的解釋,並生成相應的報表展示給使用者。

使用者也可以根據實際需求,隨時調整報表主題及演算法的定義語言,再重新執行報表引擎時,報表引擎立即根據定義後的內容進行處理,產生經過改變後的報表資料。這樣,報表引擎可以跟隨使用者的需求變化,而所需求的維護量非常少,也非常簡單,靈活。

對於報表的輸出格式,在報表引擎的輸出介面中,定義要求的報**式;當使用者列印報表時,報表引擎根據定義的格式列印所需的報表;同時,如果使用者需要改變報表的樣式時,可以非常即時、靈活的重新定義,以滿足使用者的各種需求。

3. 假設

報表引擎是在業務系統已經執行之後,有原始資料的基礎上,進行運算的;因此,在這裡,我們假設使用者的業務系統已經建成,報表引擎在已有的系統上,擴充已有的系統功能,用非常少的成本,非常少的時間,及時地滿足使用者對各種報表的需求。

4. 遠景

當前報表引擎的解決方案,主要是針對每一個專案在報表這一方面花費大量的人力、物力,而且效果並非理想。在這裡,在工作流引擎流行的基礎上,提出解決當前報表設計與實現的困難的方案,幫助it企業或應用企業非常訊速地、低廉的成本建立各個企業的決策分析系統。

在將來,報表引擎有一定規模之後,各個企業、**、機關等對整個業務管理成為一整體化之後,可以組成一個報表虛擬網路。在報表虛擬網路的管理下,企業、**、機關等可以在網路中釋出自己的報表資料;同時,在報表引擎原有的資料基礎上,企業可以從虛擬網路中,搜尋自己感興趣的內容,以協作企業、**、機關等進行巨集觀決策。

由於報表引擎網路是慮構的網路,所有的運算也是通過對演算法的定義進行計算,從而可以擴張這種網路,讓它包容整個企業系統(特別是跨地區、跨國際的企業),對各種企業系統進行整合,整合方法是對某個網路中的節點連線企業應用系統,以擴充套件報表引擎的功能。

5. 引擎內部結構

報表引擎從整體上劃分為:報表請求部分、格式定義部分、引擎定義部分、引擎執行部分、策略引擎部分、引擎監控部分、引擎輸出部分,下面對各個部分進行簡單的介紹。各部分相互協調工作,從而滿足使用者的各種需求;把各部分組合成一個整體系統。