本發(fā)明涉及一種計算機應(yīng)用技術(shù),是面向?qū)I(yè)技術(shù)人員使用的,可以通過該方法在軟件中實現(xiàn)功能運行沖突的控制,避免相互沖突的功能同時運行導(dǎo)致的邏輯錯誤或系統(tǒng)錯誤,具體地說是一種通過數(shù)據(jù)庫技術(shù)控制軟件功能運行沖突的方法。
背景技術(shù):
企業(yè)管理軟件運行中有大量用戶同時在線,多個客戶端同時運行可能會產(chǎn)生沖突,有些軟件的功能之間同時運行也可能產(chǎn)生沖突,出現(xiàn)沖突的后果就是導(dǎo)致系統(tǒng)錯誤。需要一種方法,能夠?qū)崿F(xiàn)對軟件功能沖突的實時控制。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是提供一種通過數(shù)據(jù)庫技術(shù)控制軟件功能運行沖突的方法。
本發(fā)明的目的是按以下方式實現(xiàn)的,包括如下內(nèi)容:
1. 在數(shù)據(jù)庫中建立一張軟件沖突功能表和一張軟件功能運行記錄表;
2. 向軟件沖突功能表中預(yù)置互相沖突的軟件功能數(shù)據(jù);
3. 打開軟件功能時檢查沖突功能并控制,注冊運行記錄;
4. 退出軟件功能時注銷功能運行記錄;
具體步驟如下:
1)利用數(shù)據(jù)庫技術(shù)通過數(shù)據(jù)庫中的一組數(shù)據(jù)表,對客戶端軟件運行進行記錄及檢查,實現(xiàn)控制軟件功能沖突的目的;
2)在數(shù)據(jù)庫中創(chuàng)建一組數(shù)據(jù)表,(1)軟件沖突功能表,屬性包括:功能編號、相沖突功能、沖突提示;(2)軟件功能運行記錄表,屬性包括:用戶姓名、運行功能、用戶機器名);
3)在步驟2)中的數(shù)據(jù)表(1)、(2)中預(yù)置相互沖突的功能數(shù)據(jù),記錄相互產(chǎn)生沖突的功能信息;
4)軟件運行時,檢查步驟2)中的數(shù)據(jù)表,如果沒有相互沖突的功能則允許功能運行并進行記錄;如果有相互沖突的功能則進行提示,不允許此功能運行;
5)軟件退出運行時,在步驟2中的數(shù)據(jù)表中注銷相應(yīng)的運行記錄。
本發(fā)明的具有功能和有益效果:
面向軟件開發(fā)人員提供了軟件運行功能沖突的控制方法和存儲結(jié)構(gòu),能夠在軟件開發(fā)中簡便調(diào)用,避免軟件功能運行時產(chǎn)生沖突。
具體實施方式
實施例1
1)在數(shù)據(jù)庫中建立一張軟件沖突功能表,屬性包括:功能編號、相沖突功能、沖突提示(見表1)。
在數(shù)據(jù)庫中建立一張軟件功能運行記錄表,屬性包括:用戶姓名、運行功能、用戶機器名(見表2),此表記錄正在運行的軟件功能。
2)向表一中預(yù)置所有可能產(chǎn)生沖突的功能數(shù)據(jù)。
3)運行功能沖突檢查及控制:用戶在客戶端打開軟件的某個功能時,系統(tǒng)在軟件沖突功能表中檢索與此功能相互產(chǎn)生沖突的功能,如果沒有檢索到則允許運行此功能。如果找到相沖突的功能,則在軟件功能運行記錄表中判斷有沒有沖突功能正在運行,如果沒有則允許運行,并在軟件功能運行記錄表中記錄此功能,否則不允許運行,并給出相應(yīng)的沖突提示信息。
4)運行功能注銷:用戶退出軟件的某個功能時,在軟件功能運行記錄表中刪除此功能的運行記錄,注銷功能記錄后其他用戶才能運行此功能。
附錄一:功能注冊檢查沖突功能的代碼
//--------------------------------------------------------------------
//1.檢查本功能是否要運行在單用戶模式下
//--------------------------------------------------------------------
SELECT F_CTFS INTO :vsTemp FROM LSCTGN WHERE F_GNBH=:psGnbh ;
if vsTemp='' or IsNull(vsTemp) then
rpsMsg ='本功能沒有定義沖突內(nèi)容,請聯(lián)系系統(tǒng)管理員。'
Return 9
end if
if vsTemp = '0' then
SELECT count(*) INTO :vlJc FROM LSYXJL ;
elseif vstemp='3' then
SELECT count(*) INTO :vlJc FROM LSYXJL WHERE F_XTBH=:psxtbh;
end if
if vlJc>1 then
rpsMsg = usfMsg(psGnbh,'0','','','')
ROLLBACK;
return -1
end if
//--------------------------------------------------------------------
//2、檢查有無在獨立運行的功能在運行
//--------------------------------------------------------------------vsSql = "SELECT LSYXJL.F_KHJQ,LSYXJL.F_ZGXM,LSYXJL.F_XTBH,LSYXJL.F_GNBH FROM LSYXJL,LSCTGN WHERE LSYXJL.F_GNBH=LSCTGN.F_GNBH AND (LSCTGN.F_CTFS='0' or LSCTGN.F_CTFS='3') AND LSYXJL.F_XTBH='"+psxtbh+"'"
PREPARE Sqlsa FROM :vsSql;
OPEN DYNAMIC myCursor ;
FETCH myCursor INTO :vsCtKhJq,:vsCtZgXm,:vsCtXt,:vsCtGn ;
vbCt = (Sqlca.SqlCode >= 0 and vsCtZgXm<>'' and Not IsNull(vsCtZgxm))
CLOSE myCursor;
if vbCt then
rpsMsg = usfMsg(psGnbh,vsCtGn,vsCtKhJq,vsCtZgxm,vsCtXt)
Return -1
end if
//--------------------------------------------------------------------
//3、檢查有無功能沖突
//--------------------------------------------------------------------
vsSql="SELECT LSYXJL.F_KHJQ,LSYXJL.F_ZGXM,LSYXJL.F_XTBH,LSYXJL.F_GNBH " &
+ " FROM LSYXJL,LSCTGN " &
+ " WHERE LSYXJL.F_GNBH=LSCTGN.F_CTGN " &
+" AND LSCTGN.F_CTFS='1' " &
+" AND LSCTGN.F_GNBH='"+psGnbh+"'"
PREPARE Sqlsa FROM :vsSql;
OPEN DYNAMIC myCursor ;
FETCH myCursor INTO :vsCtKhJq,:vsCtZgXm,:vsCtXt,:vsCtGn ;
vbCt = (Sqlca.SqlCode >=0 and vsCtZgXm<>'' and Not IsNull(vsCtZgxm))
CLOSE myCursor;
if vbCt then
rpsMsg = usfMsg(psGnbh,vsCtGn,vsCtKhJq,vsCtZgxm,vsCtXt)
Return -1
end if
除說明書所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)。