1,、前言 管理信息系統(tǒng)進入中國已經(jīng)有20多年時間,,由于企業(yè)不同部門對管理工具的需求存在層次性,信息化在中國企業(yè)的推廣應(yīng)用很多是從一些局部,、簡單應(yīng)用做起來的,,譬如財務(wù)系統(tǒng)在眾多中國企業(yè)的率先應(yīng)用推廣就是一個很好的佐證。但是隨著企業(yè)管理水平的提高,,企業(yè)內(nèi)部各個部門都逐漸產(chǎn)生了信息化的需求,,由于企業(yè)管理的復雜性,很多企業(yè)需要用到多種不同性質(zhì)的軟件進行管理控制,;同時由于各家軟件公司在企業(yè)管理的不同領(lǐng)域各有擅長,,企業(yè)在選型、應(yīng)用時往往難以割舍,,因此,,在企業(yè)中就逐漸形成了多種管理軟件在不同部門并存應(yīng)用的局面。為了管理的需要,,企業(yè)迫切需要對整個企業(yè)的數(shù)據(jù)和流程進行整合和處理,。 因為信息集成無疑可以提高企業(yè)管理效率、降低企業(yè)運營成本以及加強企業(yè)競爭能力,。因此,,在這種情況下,企業(yè)往往只能有三種選擇:一是放棄原有局部應(yīng)用,,導入整體解決方案(但這會導致重復投資,,同時由于操作習慣的改變和數(shù)據(jù)準備的工作量,會使原有系統(tǒng)的使用者在實施過程中產(chǎn)生抵觸心理),;二是保留原有局部應(yīng)用的同時,,再引入新的應(yīng)用,不做集成,,集成部分的數(shù)據(jù)和流程在系統(tǒng)外流轉(zhuǎn)(但這會導致信息孤島的出現(xiàn),,增加人為錯誤和加大錄入工作量);三是在保留原有局部應(yīng)用的同時,,引入新的系統(tǒng),,然后由其中一家或兩家軟件公司合作做集成實現(xiàn)。 無疑,,前兩種方法在技術(shù)層面都不會有太多問題,但是第三種方法在技術(shù)實現(xiàn)上會有一定難度和風險,。盡管很多軟件公司在售前階段都會承諾可以做接口實現(xiàn),,但是究竟能夠做到什么程度,,是否能夠做到真正、完整意義上的無縫聯(lián)接卻是一個很大的問題,。在這里,,本文對前兩種選擇不做具體的分析和闡述,只是就第三種選擇,,即異構(gòu)管理軟件系統(tǒng)的集成實現(xiàn)做一些簡單的分析和論述,,希望對企業(yè)的信息化選型以及軟件公司進行異構(gòu)管理軟件系統(tǒng)集成的技術(shù)實現(xiàn)工作能夠有所助益和啟示。 2,、異構(gòu)系統(tǒng)集成分析 2.1異構(gòu)系統(tǒng)集成原理 異構(gòu)系統(tǒng)集成是指通過編寫高級語言程序來實現(xiàn)不同軟件系統(tǒng)之間數(shù)據(jù)傳遞,、調(diào)用的重要方式。在管理軟件異構(gòu)系統(tǒng)集成開發(fā)過程中有以下兩個方面的問題需要著重解決,,一是異構(gòu)軟件系統(tǒng)間的數(shù)據(jù)傳輸問題,;二是異構(gòu)軟件系統(tǒng)間管理流程和工作過程的重構(gòu)和銜接。 異構(gòu)軟件集成方式如圖1所示,。由圖可知,,當采用數(shù)據(jù)接口來進行軟件集成時,各系統(tǒng)間是通過前,、后置處理器和具有標準交換格式的文件來聯(lián)系的,。 2.2 異構(gòu)系統(tǒng)間數(shù)據(jù)傳輸 2.2.1異構(gòu)管理軟件系統(tǒng)數(shù)據(jù)查詢 在異構(gòu)系統(tǒng)間傳輸量最大的是數(shù)據(jù)。應(yīng)該說,,如果知道原有系統(tǒng)的庫表結(jié)構(gòu)和數(shù)據(jù)字典(即使原系統(tǒng)軟件商不提供對應(yīng)庫表結(jié)構(gòu)和數(shù)據(jù)字典,,也可以通過對原有系統(tǒng)的數(shù)據(jù)庫進行分析來得到相應(yīng)信息),然后編制前置處理器去查詢相應(yīng)的數(shù)據(jù)供新系統(tǒng)使用是一個相對比較簡單的問題,,但即使是這樣,,也必須注意以下五個方面的問題: (1)在數(shù)據(jù)字典中數(shù)據(jù)項的定義需要統(tǒng)一,不能統(tǒng)一的要有相應(yīng)的對照表和處理方法,。這是由于不同軟件公司開發(fā)的產(chǎn)品,,可能出于不同的工作習慣和對業(yè)務(wù)的不同理解,一些數(shù)據(jù)項的定義(包括數(shù)據(jù)項名,,數(shù)據(jù)含義說明,,別名,數(shù)據(jù)類型,,長度,,取值范圍,數(shù)據(jù)含義,,與其他數(shù)據(jù)項的邏輯關(guān)系,,數(shù)據(jù)項之間的聯(lián)系等)可能有一些差別,因此要進行統(tǒng)一和修正,以避免產(chǎn)生歧義,,造成業(yè)務(wù)過程中不必要的混亂,; (2)在數(shù)據(jù)查詢過程中,要了解不同數(shù)據(jù)的來源與狀態(tài),,保證數(shù)據(jù)的獨立性,。譬如在原有系統(tǒng)中,某些數(shù)據(jù)項在不同狀態(tài)時可能有不同的值,,如果不加以分辨的查詢引用很可能會造成數(shù)據(jù)錯誤,; (3)在數(shù)據(jù)查詢過程中,要注意原有系統(tǒng)和新系統(tǒng)是否使用相同的數(shù)據(jù)庫,,如果使用的是不同的數(shù)據(jù)庫,,一定要注意SQL語句的寫法,因為不同數(shù)據(jù)庫對應(yīng)的SQL語句有不同的標準,。 (4)從原有系統(tǒng)中查詢到的數(shù)據(jù)需要定期查詢讀入到新系統(tǒng)中,,很難做到時時,這是因為一般新系統(tǒng)不對原有系統(tǒng)的庫直接操作,,以避免糾紛和增加不安全因素,; (5)新系統(tǒng)可能會讀取到"臟數(shù)據(jù)"。譬如原有系統(tǒng)中某一事務(wù)T1修改了某一數(shù)據(jù),,這時新系統(tǒng)讀取該數(shù)據(jù),,當新系統(tǒng)讀取該數(shù)據(jù)并使用后,原系統(tǒng)事務(wù)T1由于某種原因被取消,,這時T1已修改過的數(shù)據(jù)恢復原值,,這時新系統(tǒng)讀到的數(shù)據(jù)可能至少在某個時段內(nèi)出現(xiàn)原系統(tǒng)數(shù)據(jù)庫中數(shù)據(jù)不一致的情況。 2.2.2異構(gòu)系統(tǒng)數(shù)據(jù)寫入 從新系統(tǒng)寫入數(shù)據(jù)到原有系統(tǒng)無疑是一件令人非常頭疼的事情,。因為在寫入時如果不是非常了解原有系統(tǒng)的庫表結(jié)構(gòu)和處理過程,,則可能會有以下意外情況出現(xiàn): (1)沒有充分了解原有系統(tǒng)中數(shù)據(jù)項的定義,寫入錯誤的數(shù)據(jù)(數(shù)據(jù)類型,、數(shù)據(jù)長度和取值范圍錯誤)造成數(shù)據(jù)紊亂,; (2)原有系統(tǒng)中可能使用了觸發(fā)器和存儲過程,當沒有充分了解原系統(tǒng)中觸發(fā)器的觸發(fā)條件和存儲過程的處理過程時,,盲目寫入數(shù)據(jù),,可能會造成一些事務(wù)不能進行或遺漏某些處理,以至于原有系統(tǒng)正常的業(yè)務(wù)邏輯過程被打亂,,導致系統(tǒng)紊亂,; (3)當新系統(tǒng)可以向原有系統(tǒng)中寫入數(shù)據(jù)時,很有可能造成多個事務(wù)同時存取同一數(shù)據(jù)的情況,,因為是兩個系統(tǒng),,很難對并發(fā)操作進行控制,這樣就可能存儲不正確的數(shù)據(jù),破壞數(shù)據(jù)庫中數(shù)據(jù)的一致性,; (4)假如原有系統(tǒng)中對于某些數(shù)據(jù)的處理是通過代碼實現(xiàn)的,,并在代碼中還改寫了其它的數(shù)據(jù)或事務(wù),而該數(shù)據(jù)恰恰是新系統(tǒng)可以寫入的,,這樣直接寫入數(shù)據(jù)庫中的數(shù)據(jù)會導致系統(tǒng)出現(xiàn)異常; (5)在數(shù)據(jù)寫入過程中,,也要注意原有系統(tǒng)和新系統(tǒng)是否使用相同的數(shù)據(jù)庫,,如果使用的是異構(gòu)數(shù)據(jù)庫,那么一定要注意SQL語句的寫法,,因為不同數(shù)據(jù)庫對應(yīng)的SQL語句有不同的標準,。 2.3 異構(gòu)管理軟件系統(tǒng)管理流程、工作過程的重構(gòu)和銜接 對于管理軟件來說,,僅僅解決數(shù)據(jù)共享是不夠的,,還需要對接口部分的業(yè)務(wù)流程進行重組,以保證業(yè)務(wù)流程的順暢,、高效,、嚴密。同時,,在業(yè)務(wù)流程中還會產(chǎn)生并傳遞一些相關(guān)的指令信息,,而流程的順暢進行和相關(guān)指令的傳遞都必須在異構(gòu)管理軟件系統(tǒng)進行集成時加以考慮。 在這里,,我們首先定義某一業(yè)務(wù)流程或某一指令由新系統(tǒng)流向原有系統(tǒng)為順向傳輸,;反之則為逆向傳輸。 當原有系統(tǒng)軟件商不提供源代碼和所有設(shè)計文檔,,而只提供相應(yīng)庫表結(jié)構(gòu)的前提下,,順向業(yè)務(wù)流程的簡單傳遞是可以實現(xiàn)的,其實質(zhì)是單據(jù)的單向傳遞,,但即使在這種情況下也很難保證原有單據(jù)上的所有數(shù)據(jù)項信息能被順利,、完整地傳遞過去,譬如新系統(tǒng)中某個數(shù)據(jù)項可能在原有系統(tǒng)中并不存在,;而復雜的業(yè)務(wù)流程和帶有逆向反饋指令的業(yè)務(wù)流程則根本無法實現(xiàn),。 當原有系統(tǒng)軟件商不提供源代碼和所有設(shè)計文檔,而只提供相應(yīng)庫表結(jié)構(gòu)的前提下,,通過在原系統(tǒng)數(shù)據(jù)庫上創(chuàng)建存儲過程和插入觸發(fā)器來傳遞順向指令可以實現(xiàn),,但由于不清楚原系統(tǒng)的邏輯控制,很難保證不出現(xiàn)系統(tǒng)紊亂,。但逆向傳遞指令則比較容易實現(xiàn),,只要取得的用于觸發(fā)指令的數(shù)據(jù)項就可以實現(xiàn),基本可以保證逆向指令傳輸?shù)捻樌瓿伞?/p> 當原系統(tǒng)軟件商可以提供源代碼和所有設(shè)計文檔時,從理論上講,,是可以實現(xiàn)業(yè)務(wù)流程或指令的順向傳輸和逆向傳輸?shù)?,甚至一些更為復雜業(yè)務(wù)流程也可以實現(xiàn)。但是是否能夠?qū)崿F(xiàn),,跟原系統(tǒng)的開發(fā)過程是否規(guī)范,、開發(fā)文檔是否完備以及新系統(tǒng)的系統(tǒng)分析員的業(yè)務(wù)能力都有很大的關(guān)系。 在擁有原系統(tǒng)源代碼和開發(fā)文檔的前提下,,實現(xiàn)異構(gòu)管理軟件系統(tǒng)業(yè)務(wù)流程或指令集成需要注意以下問題: (1)需要對原系統(tǒng)的業(yè)務(wù)流程充分熟悉,,要找出原系統(tǒng)中所有跟接口流程控制相關(guān)的源代碼、觸發(fā)器以及存儲過程等,; (2)需要對新系統(tǒng)的業(yè)務(wù)流程充分熟悉,,要找出新系統(tǒng)中所有跟接口流程控制相關(guān)的源代碼、觸發(fā)器以及存儲過程等,; 對兩個系統(tǒng)的業(yè)務(wù)流程進行整合,,重新設(shè)計接口部分的業(yè)務(wù)流程,然后按照整合過的業(yè)務(wù)流程修改相應(yīng)的表結(jié)構(gòu),、代碼,、觸發(fā)器以及存儲過程。 3,、異構(gòu)管理軟件系統(tǒng)集成建議 從以上分析可以看出,,進行異構(gòu)管理軟件系統(tǒng)集成在技術(shù)實現(xiàn)上有一定難度和風險,但并不是不能實現(xiàn),,如果企業(yè)要實現(xiàn)異構(gòu)管理軟件系統(tǒng)集成應(yīng)該具備以下條件: (1)承擔集成任務(wù)的軟件公司應(yīng)該熟悉原有系統(tǒng)和新系統(tǒng)的業(yè)務(wù)流程,、庫表結(jié)構(gòu)以及邏輯控制等; (2)為了減少集成的風險,,則要求原有系統(tǒng)和新系統(tǒng)的軟件開發(fā)過程比較規(guī)范,,應(yīng)用軟件的程序開發(fā)模式要基本一致; (3)要求負責集成設(shè)計的系統(tǒng)分析員具有較高的水平,。 (4)重新修正企業(yè)編碼規(guī)范,,統(tǒng)一編碼原則,統(tǒng)一管理共享的基礎(chǔ)數(shù)據(jù),,對于多個系統(tǒng)都要用到的數(shù)據(jù),,要明確界定誰生產(chǎn)、誰使用,、誰維護,。 (5)系統(tǒng)之間的數(shù)據(jù)傳輸要采用數(shù)據(jù)庫的同步機制來實現(xiàn)。 同時,,企業(yè)在進行異構(gòu)管理軟件系統(tǒng)集成時,,應(yīng)根據(jù)企業(yè)實際管理情況,,采用靈活的集成策略,而不是一味追求所謂"無縫"聯(lián)接,,部分流程可以根據(jù)實際情況在系統(tǒng)外進行,,以降低異構(gòu)軟件集成的難度和復雜性。 |
|