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è)管理的復(fù)雜性,很多企業(yè)需要用到多種不同性質(zhì)的軟件進行管理控制;同時由于各家軟件公司在企業(yè)管理的不同領(lǐng)域各有擅長,企業(yè)在選型、應(yīng)用時往往難以割舍,因此,在企業(yè)中就逐漸形成了多種管理軟件在不同部門并存應(yīng)用的局面。為了管理的需要,企業(yè)迫切需要對整個企業(yè)的數(shù)據(jù)和流程進行整合和處理。
因為信息集成無疑可以提高企業(yè)管理效率、降低企業(yè)運營成本以及加強企業(yè)競爭能力。因此,在這種情況下,企業(yè)往往只能有三種選擇:一是放棄原有局部應(yīng)用,導(dǎo)入整體解決方案(但這會導(dǎo)致重復(fù)投資,同時由于操作習(xí)慣的改變和數(shù)據(jù)準備的工作量,會使原有系統(tǒng)的使用者在實施過程中產(chǎn)生抵觸心理);二是保留原有局部應(yīng)用的同時,再引入新的應(yīng)用,不做集成,集成部分的數(shù)據(jù)和流程在系統(tǒng)外流轉(zhuǎn)(但這會導(dǎo)致信息孤島的出現(xiàn),增加人為錯誤和加大錄入工作量);三是在保留原有局部應(yīng)用的同時,引入新的系統(tǒng),然后由其中一家或兩家軟件公司合作做集成實現(xiàn)。
無疑,前兩種方法在技術(shù)層面都不會有太多問題,但是第三種方法在技術(shù)實現(xiàn)上會有一定難度和風(fēng)險。盡管很多軟件公司在售前階段都會承諾可以做接口實現(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所示。由圖可知,當(dāng)采用數(shù)據(jù)接口來進行軟件集成時,各系統(tǒng)間是通過前、后置處理器和具有標(biāo)準交換格式的文件來聯(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)品,可能出于不同的工作習(xí)慣和對業(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語句有不同的標(biāo)準。
(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ù),當(dāng)新系統(tǒng)讀取該數(shù)據(jù)并使用后,原系統(tǒng)事務(wù)T1由于某種原因被取消,這時T1已修改過的數(shù)據(jù)恢復(fù)原值,這時新系統(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ā)器和存儲過程,當(dāng)沒有充分了解原系統(tǒng)中觸發(fā)器的觸發(fā)條件和存儲過程的處理過程時,盲目寫入數(shù)據(jù),可能會造成一些事務(wù)不能進行或遺漏某些處理,以至于原有系統(tǒng)正常的業(yè)務(wù)邏輯過程被打亂,導(dǎo)致系統(tǒng)紊亂;
(3)當(dāng)新系統(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ù)會導(dǎo)致系統(tǒng)出現(xiàn)異常;
(5)在數(shù)據(jù)寫入過程中,也要注意原有系統(tǒng)和新系統(tǒng)是否使用相同的數(shù)據(jù)庫,如果使用的是異構(gòu)數(shù)據(jù)庫,那么一定要注意SQL語句的寫法,因為不同數(shù)據(jù)庫對應(yīng)的SQL語句有不同的標(biāo)準。
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)為順向傳輸;反之則為逆向傳輸。
當(dāng)原有系統(tǒng)軟件商不提供源代碼和所有設(shè)計文檔,而只提供相應(yīng)庫表結(jié)構(gòu)的前提下,順向業(yè)務(wù)流程的簡單傳遞是可以實現(xiàn)的,其實質(zhì)是單據(jù)的單向傳遞,但即使在這種情況下也很難保證原有單據(jù)上的所有數(shù)據(jù)項信息能被順利、完整地傳遞過去,譬如新系統(tǒng)中某個數(shù)據(jù)項可能在原有系統(tǒng)中并不存在;而復(fù)雜的業(yè)務(wù)流程和帶有逆向反饋指令的業(yè)務(wù)流程則根本無法實現(xiàn)。
當(dāng)原有系統(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>
當(dāng)原系統(tǒng)軟件商可以提供源代碼和所有設(shè)計文檔時,從理論上講,是可以實現(xiàn)業(yè)務(wù)流程或指令的順向傳輸和逆向傳輸?shù)?,甚至一些更為?fù)雜業(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)上有一定難度和風(fēng)險,但并不是不能實現(xiàn),如果企業(yè)要實現(xiàn)異構(gòu)管理軟件系統(tǒng)集成應(yīng)該具備以下條件:
(1)承擔(dān)集成任務(wù)的軟件公司應(yīng)該熟悉原有系統(tǒng)和新系統(tǒng)的業(yè)務(wù)流程、庫表結(jié)構(gòu)以及邏輯控制等;
(2)為了減少集成的風(fēng)險,則要求原有系統(tǒng)和新系統(tǒng)的軟件開發(fā)過程比較規(guī)范,應(yīng)用軟件的程序開發(fā)模式要基本一致;
(3)要求負責(zé)集成設(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)軟件集成的難度和復(fù)雜性。
聯(lián)系客服