經(jīng)濟(jì)一體化信息管理系統(tǒng)研究
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
近年來,隨著油田采油廠生產(chǎn)規(guī)模的擴(kuò)大和經(jīng)濟(jì)技術(shù)一體化工作的不斷加深,數(shù)據(jù)的精細(xì)化管理要求越來越高。面對(duì)種類繁多的數(shù)據(jù)和報(bào)表,傳統(tǒng)的人工加半自動(dòng)化的管理方法,已經(jīng)跟不上現(xiàn)代化信息管理的步伐。在這種油田信息化發(fā)展的大背景下,基于C/S架構(gòu),以.NET為開發(fā)平臺(tái),同時(shí)動(dòng)態(tài)鏈接Oracle9i數(shù)據(jù)庫(kù)的經(jīng)濟(jì)一體化信息管理系統(tǒng)應(yīng)運(yùn)而生。該系統(tǒng)可根據(jù)用戶的權(quán)限,自動(dòng)顯示其權(quán)限內(nèi)的工作內(nèi)容,并伴有自動(dòng)計(jì)算、查找、統(tǒng)計(jì)等功能。本文在分析了用戶需求的基礎(chǔ)上,給出了整個(gè)系統(tǒng)的設(shè)計(jì)與關(guān)鍵技術(shù)問題的解決方案。
1需求分析
由于油田下設(shè)單位眾多,在生產(chǎn)管理上,有的單位還未建立統(tǒng)一實(shí)物消耗統(tǒng)計(jì)管理系統(tǒng),數(shù)據(jù)采集方式多、來源廣、差異大,不能形成系統(tǒng)的歷史數(shù)據(jù)沉淀,沒有形成完善的統(tǒng)計(jì)管理工作責(zé)任體系,因此,目前亟需一套管理系統(tǒng)來達(dá)到如下需求。
錄入人員、審核人員和管理員登錄時(shí),系統(tǒng)會(huì)根據(jù)其所屬單位及權(quán)限,自動(dòng)顯示其權(quán)限內(nèi)需要錄入、審核或查詢的報(bào)表。
審核人員對(duì)錄入人員錄入的數(shù)據(jù)進(jìn)行審核,以保證數(shù)據(jù)真實(shí)、可靠后,由后臺(tái)發(fā)布平臺(tái)自動(dòng)計(jì)算生成管理報(bào)表供查詢?nèi)藛T進(jìn)行查閱,查詢?nèi)藛T只能查看到自己權(quán)限下的管理報(bào)表。
后臺(tái)管理人員可進(jìn)行用戶管理、下設(shè)單位關(guān)系的維護(hù)以及后臺(tái)價(jià)格庫(kù)的維護(hù)等后臺(tái)操作。
根據(jù)對(duì)庫(kù)存量和消耗量的統(tǒng)計(jì),自動(dòng)實(shí)現(xiàn)各級(jí)單位實(shí)物工作量的動(dòng)態(tài)管理和便捷查詢,能夠及時(shí)了解各單位材料(燃料)的消耗、庫(kù)存及下一步需求等情況,為物料管理提供參考。
2系統(tǒng)設(shè)計(jì)
針對(duì)客戶需求和油田經(jīng)濟(jì)一體化管理系統(tǒng)的特點(diǎn),本系統(tǒng)采用.NET多層架構(gòu)技術(shù),運(yùn)用WinForm等開發(fā)工具,以O(shè)racle9i數(shù)據(jù)庫(kù)為基礎(chǔ)來進(jìn)行開發(fā)。
Microsoft.NET技術(shù)是最新的數(shù)據(jù)庫(kù)應(yīng)用開發(fā)工具,可以高效地開發(fā)可靠、穩(wěn)定又安全的各類數(shù)據(jù)庫(kù)應(yīng)用程序。系統(tǒng)的客戶端就是采用.NET開發(fā)平臺(tái)中的WindowsForm(簡(jiǎn)稱
winform)來創(chuàng)建應(yīng)用程序的用戶界面,并可以創(chuàng)建豐富的窗體和可視化空間,以達(dá)到界面美觀、友好的效果。開發(fā)工具運(yùn)用MicrosoftVisualStudio2008,并使用.NET支持的C#開發(fā)語(yǔ)言進(jìn)行軟件的開發(fā),確保系統(tǒng)數(shù)據(jù)的實(shí)時(shí)性、穩(wěn)定性、安全性。
油田的生產(chǎn)管理過程中有大量的數(shù)據(jù)需要同時(shí)、快速的進(jìn)行存儲(chǔ)和讀取,后臺(tái)數(shù)據(jù)庫(kù)需要強(qiáng)大的Oracle9i數(shù)據(jù)庫(kù)進(jìn)行鏈接。Oracle9i由兩個(gè)產(chǎn)品構(gòu)成:一個(gè)是Oracle9i數(shù)據(jù)庫(kù),它集成了集群的功能;另一個(gè)是Oracle9i應(yīng)用服務(wù)器,它集成了高速緩存融合的技術(shù)。這兩個(gè)產(chǎn)品合起來,就能給企業(yè)提供一種高可伸縮性、高可靠性和高性能的應(yīng)用。
經(jīng)濟(jì)一體化管理系統(tǒng)由錄入系統(tǒng)、審核系統(tǒng)、查詢和后臺(tái)管理系統(tǒng)等分系統(tǒng)組成。圖1所示是本系統(tǒng)的組成圖。
圖1 經(jīng)濟(jì)一體化管理系統(tǒng)構(gòu)成
用戶登錄系統(tǒng)時(shí),可以根據(jù)用戶注冊(cè)時(shí)所分配的權(quán)限分別進(jìn)入錄入系統(tǒng)、審核系統(tǒng)、查詢系統(tǒng)和后臺(tái)管理系統(tǒng)。
在錄入系統(tǒng),錄入人員通過本系統(tǒng)可將數(shù)據(jù)錄入其權(quán)限內(nèi)的報(bào)表中。數(shù)據(jù)錄入、修改完畢后,單擊右下角的'保存”按鈕,即可完成報(bào)表的錄入或修改。已審核的報(bào)表,“保存”按鈕為灰色,數(shù)據(jù)無法更改。
在審核系統(tǒng),審核人員通過本系統(tǒng)審核其權(quán)限內(nèi)的報(bào)表,在確保數(shù)據(jù)的可靠、完整后,單擊右下角的“審核”按鈕,即可完成報(bào)表的審核。已審核的報(bào)表,“審核”按鈕為灰色,不可點(diǎn)擊。
通過查詢系統(tǒng),用戶可通過本系統(tǒng)查閱其權(quán)限內(nèi)的所有報(bào)表。可查詢的報(bào)表分為綜合管理報(bào)表和條件查詢報(bào)表。兩種報(bào)表都可以通過選擇月份進(jìn)行跨月累計(jì)查詢以及Excel導(dǎo)出功能,同時(shí)綜合管理報(bào)表可以點(diǎn)擊右鍵進(jìn)行線狀/柱狀/餅狀的圖形分析,條件查詢報(bào)表可通過點(diǎn)擊下屬單位進(jìn)行多級(jí)追蹤查詢。
在后臺(tái)管理系統(tǒng),后臺(tái)管理人員可通過本系統(tǒng)對(duì)整個(gè)系統(tǒng)進(jìn)行后臺(tái)維護(hù)。主要功能有數(shù)據(jù)發(fā)布、用戶管理、下設(shè)單位關(guān)系維護(hù)、后臺(tái)價(jià)格庫(kù)維護(hù)、單井/爐維護(hù)等。其中,數(shù)據(jù)發(fā)布就是對(duì)程序控制執(zhí)行存儲(chǔ)過程生成管理報(bào)表;用戶管理主要是增刪用戶或更改用戶具體的工作內(nèi)容和權(quán)限;下設(shè)單位關(guān)系維護(hù)是增刪下設(shè)單位,以適應(yīng)油田的長(zhǎng)期發(fā)展;后臺(tái)價(jià)格庫(kù)維護(hù)就是定時(shí)對(duì)生產(chǎn)投入的物料價(jià)格進(jìn)行實(shí)時(shí)更新,以實(shí)現(xiàn)量?jī)r(jià)分離的管理目標(biāo);單井/爐維護(hù)是增刪井/爐以及對(duì)井/爐的屬性進(jìn)行修改。
3關(guān)鍵問題及解決方案
3.1.Net與Oracle的鏈接
.Net與Oracle數(shù)據(jù)庫(kù)可以通過多種方法來實(shí)現(xiàn)鏈接,既可以通過使用ODBC或OLEDB標(biāo)準(zhǔn)接口對(duì)數(shù)據(jù)庫(kù)進(jìn)行鏈接,也可以通過.Net框架提供的專用接口System.Data.OracleClient.dll組件(ADO.Net組件)進(jìn)行鏈接。這款組件是微軟專門針對(duì)Oracle數(shù)據(jù)庫(kù)開發(fā)而設(shè)計(jì)的,具有速度快、性能好的特點(diǎn),是值得推薦使用的方式。
建立鏈接需要首先添加Sytem.Data.OracleClien命名空間,將System.Data.OracleClient.dll加入到項(xiàng)目中,接下來就可以創(chuàng)建和數(shù)據(jù)庫(kù)的鏈接了。建立鏈接的主要代碼如下:
添加命名空間:
usingSystem.Data.OracleClient;
創(chuàng)建和數(shù)據(jù)庫(kù)的鏈接:
OracleConnectionconn=
NewOracleConnection("datasource=remotedb;UserId=scott;Password=scott;");
//其中remotedb為oracle客戶端tnsnames.ora配置文件中的網(wǎng)絡(luò)服務(wù)名
下面是新建一個(gè)對(duì)數(shù)據(jù)庫(kù)操作的實(shí)例:
OracleCommandoraCmd=newOracleCommand("select*fromuser",conn);
OracleDataReaderoraRD=oraCmd.ExecuteReader();
//DataReader提供一種從數(shù)據(jù)庫(kù)讀取行的只進(jìn)流的方式打開數(shù)據(jù)庫(kù)鏈接:
try{
conn.Open();
if(odr.Read())
{…}
Conn.close();
catch
{…}
3.2多線程與委托的運(yùn)用
后臺(tái)管理系統(tǒng)的發(fā)布功能需要程序按一定順序調(diào)用執(zhí)行后臺(tái)所有的存儲(chǔ)過程,在此過程中需要執(zhí)行數(shù)百個(gè)存儲(chǔ)過程,并且每個(gè)存儲(chǔ)過程涉及的數(shù)據(jù)量也非常大,因而可能會(huì)導(dǎo)致發(fā)布窗體經(jīng)常出現(xiàn)假死狀態(tài)。這是由于系統(tǒng)在進(jìn)行大量運(yùn)算時(shí),為了避免主線程界面這種假死狀態(tài),需要使用另一個(gè)線程來控制。
多線程的應(yīng)用可以使程序同時(shí)完成多個(gè)任務(wù),可以讓占用大量處理時(shí)間的任務(wù)定期將處理時(shí)間讓給別的任務(wù)使用。因此,可以創(chuàng)建一個(gè)新的線程來執(zhí)行發(fā)布功能,從而防止主線程界面假死。
在.Net中,可用如下代碼來創(chuàng)建并啟動(dòng)一個(gè)新的線程:
ThreadRun_Pro_Two=newThread(newThreadStart(Run));Run_Pro_Two.IsBackground=true;
Run_Pro_Two.Start();
但是,在很多時(shí)候,新的線程中需要與UI進(jìn)行交互,而在.Net中不允許直接這樣做,因?yàn)閃indows窗體基于本機(jī)Win32窗口,而Win32窗口從本質(zhì)上而言是單元線程。STA模型意味著可以在任何線程上創(chuàng)建窗口,但窗口一旦創(chuàng)建后就不能切換線程,并且對(duì)它的所有函數(shù)調(diào)用都必須在其創(chuàng)建線程上發(fā)生。STA模型要求,從控件的非創(chuàng)建線程調(diào)用控件上的任何方法都必須被封送到(在其上執(zhí)行)該控件的創(chuàng)建線程?;怌ontrol為此目的提供了若干方法(Invoke、BeginInvoke和Endlnvoke)。
Invoke生成同步方法調(diào)用時(shí),如果從另一個(gè)線程調(diào)用控件方法,則必須使用控件的一個(gè)Invoke方法來將調(diào)用封送到適當(dāng)?shù)木€程。Invoke調(diào)用方法分為兩步:第一步是定義與函數(shù)功能對(duì)應(yīng)的委托;第二步是將參數(shù)以及函數(shù)名通過委托實(shí)例傳遞給Invoke。
調(diào)用方法如下:
privatedelegatevoidInvokeDelegate_2(inti,intj,Exceptione);
//定義一個(gè)函數(shù)的委托
privatevoidInvoke_Datagridview_2(inti,intj,Exceptione)//定義函數(shù)
}
在主線程中調(diào)用:
this.Invoke(newInvokeDelegate_2(Invoke_Datagridview_2),newobject[]{i_one,j_one,ex});
//i_one,j_one,ex為主線程中的變量
最后在主線程中,終止線程:
if(Run_Pro_Two.IsAlive)Run_Pro_Two.Abort();
通過應(yīng)用多線程和委托方法可有效防止發(fā)布數(shù)據(jù)窗口假死的現(xiàn)象。
4結(jié)語(yǔ)
結(jié)合.Net和Oracle數(shù)據(jù)庫(kù)開發(fā)的信息管理系統(tǒng),操作界面友好,用戶操作簡(jiǎn)明、快捷,系統(tǒng)運(yùn)行穩(wěn)定,并能夠?qū)崿F(xiàn)信息的實(shí)時(shí)查詢和處理。目前,本文設(shè)計(jì)的系統(tǒng)已經(jīng)投入運(yùn)行,并取得了較好的經(jīng)濟(jì)社會(huì)效果。
20211018_616c5dbce0856__經(jīng)濟(jì)一體化信息管理系統(tǒng)研究