企業(yè)資源計劃(Enterprise Resource Planning,ERP)系統(tǒng)是在早期的物料需求(Material Requirement Planning,MRP)和制造資源計劃系統(tǒng)(MRPII)基礎(chǔ)上發(fā)展而來的。企業(yè)資源計劃系統(tǒng)是一種以生產(chǎn)經(jīng)營、計劃管理為主線,輔以CAD/CAM,Internet,GUI和EDI功能的當(dāng)代企業(yè)管理方法,它代表了當(dāng)代最先進的企業(yè)經(jīng)營生產(chǎn)管理模式與技術(shù)。物料清單(Bill of Material,BOM)是ERP系統(tǒng)的重要基礎(chǔ)數(shù)據(jù),它的組織是否有效直接關(guān)系到企業(yè)資源計劃系統(tǒng)的性能。
物料清單BOM是ERP系統(tǒng)的重要基礎(chǔ)數(shù)據(jù),它產(chǎn)生于產(chǎn)品設(shè)計部門,生命周期的各個形態(tài)貫穿于各個部門。BOM作用于計算機識別物料、接受客戶定單、編制計劃、配套(裝配)和領(lǐng)料、加工過程跟蹤、采購和外協(xié)、成本計算、報價參考、物料追溯、改進產(chǎn)品設(shè)計等等。它的組織是否有效直接關(guān)系到企業(yè)資源計劃系統(tǒng)的性能。對BOM的數(shù)據(jù)、BOM的特性、BOM的結(jié)構(gòu)研究和分析表明,ERP系統(tǒng)中BOM的有效管理是一項非常重要和困難的工作。現(xiàn)有的BOM管理方式,是在各業(yè)務(wù)部門的事務(wù)處理系統(tǒng)中進行管理和組織,且已有BOM管理體系基本都是基于事務(wù)性系統(tǒng)構(gòu)建。這樣做不利于解決上述BOM管理中的難點,主要存在以下缺陷和不足:
首先,由于各項應(yīng)用處理的分散性,存在著數(shù)據(jù)信息相互獨立的缺陷和不足,從而易形成各個信息孤島。很顯然,這樣的信息孤島將導(dǎo)致企業(yè)數(shù)據(jù)無法有效地支持決策和統(tǒng)計分析,而且,會引起企業(yè)中BOM數(shù)據(jù)不一致的問題。其次,企業(yè)用戶對原始業(yè)務(wù)數(shù)據(jù)庫中的數(shù)據(jù)的抽取,如不加以控制,制定統(tǒng)一標(biāo)準(zhǔn),只是按需抽取,將會使系統(tǒng)數(shù)據(jù)間形成錯綜復(fù)雜的網(wǎng)狀結(jié)構(gòu)——蜘蛛網(wǎng)問題。再者,從BOM數(shù)據(jù)的使用者角度考慮。在企業(yè)中,針對各級用戶,BOM數(shù)據(jù)的綜合程度要求不同。而傳統(tǒng)的基于數(shù)據(jù)庫組織的BOM數(shù)據(jù),只是一些實時數(shù)據(jù),即使有一些匯總數(shù)據(jù)也是未經(jīng)過專門性統(tǒng)計和匯總的數(shù)據(jù),當(dāng)使用者需要或作計劃時才進行加工處理。然而一個企業(yè)中日積月累的BOM數(shù)據(jù)量非常龐大,這樣做,沒有把分析型數(shù)據(jù)從事務(wù)操作中分離出來,將影響系統(tǒng)運行效率。
數(shù)據(jù)倉庫技術(shù)為在BOM系統(tǒng)中建立這種決策分析環(huán)境提供了一種有效的數(shù)據(jù)存儲和組織方式。數(shù)據(jù)倉庫概念的形成是被譽為數(shù)據(jù)倉庫之父的w.H.Inmon在1993年于《建立數(shù)據(jù)倉庫》(Building the Data Warehouse)一書中正式提出的,他對數(shù)據(jù)倉庫作了這樣的定義:數(shù)據(jù)倉庫(Data Warehouse,DW)是90年代信息構(gòu)架的新焦點,它提供集成化和歷史化的數(shù)據(jù);集成種類不同的應(yīng)用系統(tǒng);數(shù)據(jù)倉庫從事物發(fā)展和歷史的角度來組織和存儲數(shù)據(jù),以供信息化和分析處理之用,是面向主題的、集成的、穩(wěn)定的、隨時間變化的數(shù)據(jù)集合,用以支持管理決策的過程。數(shù)據(jù)倉庫不是數(shù)據(jù)的簡單堆積,而是從大量的事務(wù)型數(shù)據(jù)庫中抽取數(shù)據(jù),并將其清理、檢驗、加工和重新組織為新的存儲格式,以滿足決策目標(biāo)。用戶可以按不同的決策主題對已有數(shù)據(jù)庫進行分類、綜合與存儲,并采用數(shù)據(jù)挖掘(DM技術(shù)和聯(lián)機分析(0LAP)技術(shù)對決策中所需的數(shù)據(jù)進行深層挖掘與分析,在已建立的各類數(shù)據(jù)庫的基礎(chǔ)上構(gòu)造數(shù)據(jù)倉庫。
1 BOM數(shù)據(jù)倉庫的體系結(jié)構(gòu)
BOM數(shù)據(jù)倉庫系統(tǒng)(BOM Data Warehouse System,BOMDWS)對原BOM管理系統(tǒng)的數(shù)據(jù)集成抽取,進行不同程度的綜合,為OLAP提供支持。它可分為四層:基礎(chǔ)數(shù)據(jù)層、當(dāng)前詳細數(shù)據(jù)層(全局?jǐn)?shù)據(jù)倉庫)、綜合數(shù)據(jù)層(數(shù)據(jù)集市)、客戶層。這四層相互作用,共同構(gòu)成BOM管理系統(tǒng)的事務(wù)處理和決策分析處理。
基礎(chǔ)數(shù)據(jù)層該層主要是基于事務(wù)處理,即各原始的數(shù)據(jù)庫,包含基礎(chǔ)的物料數(shù)據(jù)和大量的產(chǎn)品設(shè)計BOM數(shù)據(jù),是其他各層的數(shù)據(jù)來源。
詳細數(shù)據(jù)層包括當(dāng)前詳細數(shù)據(jù)和歷史詳細數(shù)據(jù),數(shù)據(jù)從基礎(chǔ)層的數(shù)據(jù)庫中析取和集成后直接導(dǎo)人該層。該層主要進行采集、清理、轉(zhuǎn)換、集成、裝載等操作,使得原始操作型數(shù)據(jù)轉(zhuǎn)變?yōu)榧傻?、一致的?shù)據(jù)。該層存儲的主要是大量的細節(jié)數(shù)據(jù),支持?jǐn)?shù)據(jù)的細節(jié)查詢,是BOMDWS的核心數(shù)據(jù)層。
綜合數(shù)據(jù)層各業(yè)務(wù)部門可根據(jù)業(yè)務(wù)需求,在全局級DW的基礎(chǔ)上,抽取適合自己所用的數(shù)據(jù)并進行綜合處理后存人部門級數(shù)據(jù)倉庫。該層數(shù)據(jù)用多維模型組織,以支持部門級多維分析。其數(shù)據(jù)是全局級數(shù)據(jù)倉庫的匯總數(shù)據(jù),面向各部門管理者,以支持決策。
客戶層該層提供用戶接口,用戶在這一層上進行OLAP操作,并生成各種報表。
從BOM數(shù)據(jù)倉庫體系結(jié)構(gòu)可以看出,數(shù)據(jù)從基礎(chǔ)層進入全局?jǐn)?shù)據(jù)倉庫,而后導(dǎo)入部門數(shù)據(jù)集市,解決了信息孤島和蜘蛛網(wǎng)問題,更有效的維護了數(shù)據(jù)的一致性。由于在BOM全局?jǐn)?shù)據(jù)倉庫基礎(chǔ)上建立了部門數(shù)據(jù)集市,因此使得有效的生成和管理BOM的多視圖成為可能,本文在這方面做了初步的探索;由于部門數(shù)據(jù)集市采用多維模型組織數(shù)據(jù),因此可以對部門級的數(shù)據(jù)進行多維分析,以支持決策。
2 數(shù)據(jù)倉庫的生成接口
數(shù)據(jù)倉庫的生成所要做的工作主要是接口編程和數(shù)據(jù)的裝入。
2.1 設(shè)計接口
生成數(shù)據(jù)倉庫的主要任務(wù)是向產(chǎn)品使用外購件、外協(xié)件、自制件的信息(product_use)和零部件的用量信息(part_use)這兩個表里導(dǎo)人數(shù)據(jù)。遍歷產(chǎn)品設(shè)計BOM的每個零部件節(jié)點,統(tǒng)計每個零部件的用量,一種零部件被該產(chǎn)品用到,useflag數(shù)據(jù)即為1,作為統(tǒng)計零部件被使用頻率細節(jié)數(shù)據(jù),匯總每個產(chǎn)品使用外購件、外協(xié)件、自制件的數(shù)量。通過編寫觸發(fā)器和存儲過程實現(xiàn)數(shù)據(jù)的導(dǎo)人。
2.2數(shù)據(jù)的裝入
運行接口程序,確定數(shù)據(jù)裝載次序,先導(dǎo)入part_use數(shù)據(jù),接著從part_use中進一步統(tǒng)計數(shù)據(jù)導(dǎo)入product_use。數(shù)據(jù)倉庫的數(shù)據(jù)需要不斷從原系統(tǒng)不斷追加,下面是BOM數(shù)據(jù)倉庫的數(shù)據(jù)追加策略:
創(chuàng)建兩個表hasimported和notimport,這兩個表結(jié)構(gòu)相同只有一個字段,記錄產(chǎn)品編號(product_key)。
運行數(shù)據(jù)導(dǎo)入接口程序時,讀取notimport表里的記錄,裝載對應(yīng)產(chǎn)品的數(shù)據(jù),同時把產(chǎn)品的產(chǎn)品編號移人hasimported表中;若notimport里無記錄,則表示沒有產(chǎn)品數(shù)據(jù)需要追加。
在原系統(tǒng)中執(zhí)行保存產(chǎn)品的設(shè)計BOM時,查看該產(chǎn)品的產(chǎn)品編號是否存在于hasimported,若存在,表示不能修改產(chǎn)品的設(shè)計BOM,因為該產(chǎn)品的數(shù)據(jù)已經(jīng)被導(dǎo)人數(shù)據(jù)倉庫不能再被修改;若不存在,表示該產(chǎn)品的設(shè)計BOM還沒有被導(dǎo)人數(shù)據(jù)倉庫,可以修改并保存,保存的同時,把該產(chǎn)品的產(chǎn)品編號寫入notimport表中。
這樣,在進行數(shù)據(jù)倉庫的數(shù)據(jù)追加時,只需要讀取notimport表中的記錄,導(dǎo)入對應(yīng)的產(chǎn)品數(shù)據(jù)即可。
3 BOM數(shù)據(jù)倉庫管理系統(tǒng)的實現(xiàn)
3.1 BOM數(shù)據(jù)倉庫管理系統(tǒng)的開發(fā)環(huán)境
系統(tǒng)的開發(fā)平臺是Jbuitder 9.0,數(shù)據(jù)庫服務(wù)器采用Oracle9i,應(yīng)用服務(wù)器采用Weblogie 8.1。系統(tǒng)采用Java語言實現(xiàn),系統(tǒng)中大量的Applet,JSP,Servlet還有JavaBean,EJB,均在Jbuilder上開發(fā)完成。Oracle9i數(shù)據(jù)庫服務(wù)器強有力的支持Java,Java通過JDBC連接Oracle,比連接SQL Server表現(xiàn)出來的性能要好,而且Oracle支持對象類型,這給數(shù)據(jù)表的建立提供了更多的選擇,在系統(tǒng)的標(biāo)設(shè)計中就用到了嵌入表,在存儲過程的設(shè)計中,也用到了自定義對象類型和對象數(shù)組。另外,為了輔助開發(fā),借助PLSQL Developer和jfreechart。PLSQL Developer是用來開發(fā)PL/SQL程序,它不僅可以編輯PL/SQL代碼,還可以進行語法檢查和跟蹤調(diào)試,大大彌補了Oracle在這方面的缺點,而且PLSQL Developer還可以作為Oracle客戶端工具使用;jfreechart是一個開源項目,它可以方便地加人Jbuilder開發(fā)環(huán)境,運行在應(yīng)用服務(wù)器上,方便地生成柱狀圖和餅圖等多種報表。
3.2 BOM數(shù)據(jù)倉庫管理系統(tǒng)的設(shè)計實現(xiàn)
采用J2EE三層模型設(shè)計BOM數(shù)據(jù)倉庫管理系統(tǒng)總體結(jié)構(gòu)可以簡化應(yīng)用程序的開發(fā),自由選擇J2EE應(yīng)用服務(wù)器,開發(fā)代價低,易管理,而且可移植可跨平臺,不限于特定的操作系統(tǒng)和特定的應(yīng)用服務(wù)器。這是其他體系結(jié)構(gòu)無法比擬的。系統(tǒng)的詳細設(shè)計主要包括數(shù)據(jù)庫中表和函數(shù)、存儲過程、觸發(fā)器的設(shè)計、服務(wù)器端組件的設(shè)計,還有瀏覽器端Applet的設(shè)計實現(xiàn)。數(shù)據(jù)庫端的設(shè)計主要是表的設(shè)計、存儲過程和觸發(fā)器的開發(fā)。存儲過程和觸發(fā)器直接在數(shù)據(jù)庫服務(wù)器上運算,減少服務(wù)端與客戶端的交互,效率更高,可以充分發(fā)揮大型數(shù)據(jù)庫的優(yōu)勢,尤其在基于Web的應(yīng)用系統(tǒng)中,更應(yīng)把和數(shù)據(jù)密切的操作封裝在數(shù)據(jù)庫服務(wù)器端,減少和服務(wù)器端的交互不僅可以提高效率,更能提高安全性,也遵循了低耦合高內(nèi)聚的設(shè)計原則;在針對數(shù)據(jù)庫編程時,很多復(fù)雜的對數(shù)據(jù)記錄的操作被封裝在存儲過程里,也大大簡化了編程的復(fù)雜度,易于開發(fā)和維護。在系統(tǒng)的實現(xiàn)中,對BOM的遍歷以及零部件的統(tǒng)計都在存儲過程和函數(shù)里完成,數(shù)據(jù)庫端用到了三個存儲過程和一個自定義函數(shù),還用到了兩個觸發(fā)器,用來對數(shù)據(jù)進行自動分類。
服務(wù)器端的設(shè)計主要是JavaBean,Servlet,EJB,JSP的設(shè)計。
服務(wù)器端有兩個JavaBean,DBConnection負(fù)責(zé)取得連接數(shù)據(jù)庫的數(shù)據(jù)源DataSource的一個實例,ChartBean里調(diào)用jfreechart組件從外部取得數(shù)據(jù)集生成報表圖片并輸出圖片的文件名。
在服務(wù)器端開發(fā)了很多Servlet,結(jié)構(gòu)和功能都相同,向上和Applet交換數(shù)據(jù),向下和數(shù)據(jù)庫交換數(shù)據(jù)。
JSP主要用來實現(xiàn)對數(shù)據(jù)的統(tǒng)計分析,并把統(tǒng)計的數(shù)據(jù)傳給ChartBean,在瀏覽器里先是ChartBean生成的報表圖片,另外也實現(xiàn)對物料數(shù)據(jù)的查詢。
瀏覽器端的設(shè)計主要是Ajax和Applet的設(shè)計。通過Ajax在瀏覽器和Web服務(wù)器之間使用異步數(shù)據(jù)傳輸,Applet可以提供復(fù)雜的交互功能,它和Servlet的數(shù)據(jù)交互是關(guān)鍵技術(shù),和Servlet的設(shè)計類似,也包括發(fā)送和接收數(shù)據(jù)。
分享到微信 ×
打開微信,點擊底部的“發(fā)現(xiàn)”,
使用“掃一掃”即可將網(wǎng)頁分享至朋友圈。