一、前言
AgileEAS.NET SOA 中介軟體平臺是一款基於基於敏捷並行開發思想和Microsoft .Net構件(元件)開發技術而構建的一個快速開發應用平臺。用於幫助中小型軟體企業建立一條適合市場快速變化的開發團隊,以達到節省開發成本、縮短開發時間,快速適應市場變化的目的。
AgileEAS.NET SOA中介軟體平臺提供了敏捷快速開發軟體工程的最佳實踐,通過提供大量的基礎支撐功能如IOC、ORM、SOA、分散式體系及敏捷併發開發方法所支撐的外掛開發體系,以及提供了大量的實體、資料模型設計生成工具、程式碼生成工具,用於幫助中小軟體開發商快速成長。
AgileEAS.NET平臺充分把握目前軟體行業快速發展的新趨勢,基於敏捷並行開發、快速適應市場這樣淳樸的軟體工程實踐,採用業界廣泛使用的Microsoft .Net構件(元件)開發技術實踐了這種開發思想,幫助軟體企業實現“敏捷變化、快速適合”的目標,從而幫助軟體企業在激烈的市場競爭中贏得先機並獲得更高的回報。
二、關於GReport、Grid++報表系統
AgileEAS.NET SOA中介軟體平臺目前整合兩套優秀的報表系統,一套是開源的fyireporting報表系統3.96版本,其始於2007年AgileEAS.NET SOA中介軟體平臺3.0版本之時就整合入平臺的一套報表系統,其快速方便的條帶式報表非常適合用於MIS系統的報表展示,我們在fyireporting基礎上做了大是的漢化、改動並且與AgileEAS.NET SOA中介軟體平臺進行緊密的整合。
但是對於市場在國內的大多數軟體企業都會遇到客戶的很多近似於變態的報表需求,fyireporting有也其不足的地方,其在處理中國式的票據、和一個特殊報表時無能無為,之後我們考慮整合一套更好的中國式報表系統,在和幾家行業醫療供應商合作的兩個年頭之中,我們整合廣州銳浪的Grid++報表系統並與AgileEAS.NET SOA中介軟體進行融合,稱之為GReport。
AgileEAS.NET SOA中介軟體平臺的報表管理體系並設計為集中式的報表管理、設計與報表瀏覽、列印相協調的可集中管理的報表體系,極大的簡化和方便報表的開發、部署和管理。
在AgileEAS.NET中介軟體平臺之中提供了一個用於管理、和設計GRport的功能模組“GR報表”:
系統之中的所有報表都是可管理的,當在系統的任何一個客戶端修改了報表定義之後,不需要重新部署程式,即可讓報表的修改通過所有的使用者。即時生效。
在GR報表模組之中,直接雙擊選中的報表即可進行報表設計介面,進行報表的設計:
GR報表的設計器介面是基於Grid++報表所提供的設計器控制元件實現的,其使用方法同Grid++原始的報表設計工作,具體的使用方法請參考Grid++官方幫助。
本設計器與官方的原生設計器之間的差別主要是新建報表與原生不同,原生的報表系統只能基於資料庫連線和SQL語句建立報表,而本設計器提供了除通過書寫SQL建立報表(不用提供連線資訊,以當前連線為準)之外還提供了基於AgileEAS.NET SOA中介軟體平臺的ORM實體建立報表:
資料包表即為基於SQL語句建立報表,物件報表基於ORM實體物件建立報表:
當基於實體建立報表時確定報表對應的實體物件之後,系統會自動的從ORM定義資訊之中讀出實體的屬性定義資訊並且自動的轉換為報表的資料列。
三、GReport元件
AgileEAS.NET SOA中介軟體平臺為開發人員提供了三個有關於GReport報表的控制元件,包括列印預覽對話方塊、報表資料顯示控制元件、報表列印控制元件,這三個控制元件都由EAS.GReport.Controls.dll程式集承載,使用這三個元件之前都需要先引用EAS.GReport.Controls.dll程式集或者把這三個元件載入到Visual Studio的工具箱之中。
列印預覽對話方塊: EAS.GReport.Controls.PrintViewDialog,用於開啟一個新的視窗並且預覽列印報表。
報表查詢顯示控制元件: EAS.GReport.Controls.GDisplayViewer,以查詢模式顯示報表及報表資料的一個控制元件。
報表預覽顯示控制元件: EAS.GReport.Controls.GPrintViewer,以列印模式顯示報表及報表資料的一個控制元件。
以上三個控制元件都提供相同的報表API:
1: //
2: // 摘要:
3: // 報表ID。
4: [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
5: [Browsable(false)]
6: public Guid ReportID { get; set; }
屬性ReportID:其意思為報表ID,其取值為GR報表模組之中設計好的報表ID號,用於實現與系統報表管理的繫結。
1: //
2: // 摘要:
3: // 資料來源物件。
4: [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
5: [Browsable(false)]
6: public object DataObject { get; set; }
屬性DataObject:其意義為報表的資料物件,即控制元件要顯示或者列印的資料來源,DataObject的值必須為DataTable或者為ORM實體的List<T>集合。
程式之中呼叫報表的流程即為設計這兩個屬性即可,首先設計ReportID為要顯示、列印的報表ID,然後向控制元件設定報表的顯示資料來源DataObject即可完成對報表系統的呼叫。
四、報表開發例項
我們下面以DrugShop案例之中的藥品字典模組的字列印例項如何進行GReport報表開發:
首先我們需要在GR報表模組之中增加一個名稱為“藥品字典明細報表”的報表專案。
報表名稱必須要填寫並且不能重名,別名可以選擇填寫,快取間隔預設為15分種,最小1分種,自由設定,原則上在系統開發測試階段設小一些,在穩定執行階段設大一些。
其他引數,如“報表模組,把報表做為獨立模組釋出”、查詢語句、查詢引數可以不去理會,這些引數為動態報表提供,關於動態報表我們會在後面的文章之中進行專門的介紹。
然後我們點“確定”按鈕儲存報表進行下一步的報表設計工作。
雙擊我們剛才新增的“藥品字典明細報表”進入報表設計介面,我們可以看到這是一個空報表:
選擇“檔案”選單之中的“新建”=》“物件報表”:
切換到資料定義Tab頁,進行實體型別的選擇:
我們瀏覽選擇程式集DrugShop.Entitties.dll,然後在物件下拉選單框中選擇DrugShop.Entitties.PIn,即藥品入庫ORM物件,我們基於DrugShop.Entitties.PIn建立報表,點選“確定”完成報表的新建。
系統會自動的更具新建導向生成一個初始報表,如果需要對報表的顯示、格式進行呼叫,請參考Grid++設計手冊進行學習。
修改完成之後,點選“儲存”圖示、或者“檔案=》儲存”選單項儲存報表的格式定義,這樣就完成了報表的定義。
接下來我們需要把剛才定義、設計好的報表掛在程式之中,使用Visual Studio 開啟DrugShop解決方案,開啟DrugShop.WinUI專案之中的藥品字典模組DrugDictList.cs:
雙擊“列印”按鈕寫以下列印程式碼:
1: private void tsbPrint_Click(object sender, EventArgs e)
2: {
3: if (this.dictList != null)
4: {
5: EAS.GReport.Controls.PrintViewDialog ViewDialog = new EAS.GReport.Controls.PrintViewDialog();
6: ViewDialog.ReportID = new Guid("F29C4C91-0791-4116-BE26-3A2A88F30A2A");
7: ViewDialog.DataObject = this.dictList;
8: ViewDialog.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
9: ViewDialog.WindowState = System.Windows.Forms.FormWindowState.Maximized;
10: ViewDialog.ShowDialog();
11: }
12: }
這樣我們就完成了對報表的呼叫,另外,在DrugShop案例之中,藥品入庫查詢和藥品銷售查詢兩個模組之中分別使用了GReport報表,請大家在開發過程之中參考。
五、執行驗證
我們編譯並且啟動DrugShop.Main.exe,使用0001密碼sa登入,開啟藥品字典功能,來試一下是報表是否正常:
OK,使用正常,沒有任何問題。
DrugShop案例之中同步提供了本例子的報表定義和使用程式碼,請大家通過AgileEAS.NET SOA中介軟體官方網站的最新下載欄目進行下載。
六、聯絡我們
為完善、改進和推廣AgileEAS.NET而成立了敏捷軟體工程實驗室,是一家研究、推廣和發展新技術,並致力於提供具有自主智慧財產權的業務基礎平臺軟體,以及基於業務基礎平臺開發的管理軟體的專業軟體提供商。主要業務是為客戶提供軟體企業研發管理解決方案、企業管理軟體開發,以及相關的技術支援,管理及技術諮詢與培訓業務。
AgileEAS.NET SOA中介軟體平臺自2004年秋呱呱落地一來,我就一直在逐步完善和改進,也被應用於保險、醫療、電子商務、房地產、鐵路、教育等多個應用,但一直都是以我個人在推廣,2010年因為我辭職休息,我就想到把AgileEAS.NET推向市場,讓更多的人使用。
我的技術團隊成員都是合作多年的老朋友,因為這個平臺是免費的,所以也沒有什麼收入,都是由程式設計師的那種理想與信念堅持,在此我感謝一起奮鬥的朋友。
團隊網站:http://www.agilelab.cn,
AgileEAS.NET網站:http://www.smarteas.net
官方部落格:http://eastjade.cnblogs.com
QQ:47920381,AgileEAS.NET
QQ群:113723486(AgileEAS SOA 平臺)/上限1000人
199463175(AgileEAS SOA 交流)/上限1000人
212867943(AgileEAS.NET研究)/上限500人
147168308(AgileEAS.NET應用)/上限500人
172060626(深度AgileEAS.NET平臺)/上限500人
116773358(AgileEAS.NET 平臺)/上限500人
125643764(AgileEAS.NET探討)/上限500人
193486983(AgileEAS.NET 平臺)/上限500人
郵件:james@agilelab.cn,mail.james@qq.com,
電話:18629261335。