專利名稱:一種應(yīng)用程序系統(tǒng)間數(shù)據(jù)收集的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計(jì)算機(jī)應(yīng)用技術(shù),是面向?qū)I(yè)技術(shù)終端操作人員使用的,可以
迅速高效進(jìn)行應(yīng)用程序系統(tǒng)間數(shù)據(jù)收集的方法。
背景技術(shù):
目前在企業(yè)中存在多種應(yīng)用程序,對(duì)于各自的應(yīng)用程序而言都有自己的基礎(chǔ)數(shù) 據(jù),而本企業(yè)往往很難在每套應(yīng)用程序中制定同一的標(biāo)準(zhǔn)并執(zhí)行,這種應(yīng)用程序系統(tǒng)間 數(shù)據(jù)收集的方法能夠很好的解決此難題。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種應(yīng)用程序系統(tǒng)間數(shù)據(jù)收集的方法。 本發(fā)明的目的是按以下方式實(shí)現(xiàn)的,在源系統(tǒng)中的數(shù)據(jù)庫(kù)中建立只讀的安全用 戶提供目的應(yīng)用系統(tǒng)需要的數(shù)據(jù),在目的數(shù)據(jù)庫(kù)中利用源數(shù)據(jù)庫(kù)中的用戶建立需要數(shù)據(jù) 的視圖,利用數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程處理數(shù)據(jù)的讀取來(lái)源先是本地?cái)?shù)據(jù)沒(méi)有附和條件的記錄 后再讀取源數(shù)據(jù)庫(kù)中的數(shù)據(jù),在數(shù)據(jù)的使用過(guò)程中判斷數(shù)據(jù)來(lái)源,當(dāng)來(lái)源于源數(shù)據(jù)的情 況下調(diào)用數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程處理到本系統(tǒng)中來(lái)源于本地?cái)?shù)據(jù)庫(kù)的數(shù)據(jù)可快速的進(jìn)行操 作,隨著本地系統(tǒng)的使用逐漸的將源數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)轉(zhuǎn)換為本地?cái)?shù)據(jù)。
本發(fā)明的具有功能和有益效果 1)突破了傳統(tǒng)的應(yīng)用程序基礎(chǔ)數(shù)據(jù)預(yù)制方式( 一次初始化預(yù)制使用過(guò)程中人為增 加的方式)提供了一種動(dòng)態(tài)基礎(chǔ)數(shù)據(jù)收集的方法。解決了一個(gè)企業(yè)中多個(gè)應(yīng)用系統(tǒng)編碼 不同一的問(wèn)題。 2)通過(guò)數(shù)據(jù)庫(kù)間的訪問(wèn)快捷、方便、可擴(kuò)展性好。
3)本方法增加基礎(chǔ)數(shù)據(jù)具有聯(lián)動(dòng)性和動(dòng)態(tài)性。
圖l是數(shù)據(jù)結(jié)轉(zhuǎn)原理圖。
具體實(shí)施例方式l)在源數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)用戶create database link DBL_FT_SCADA connect to UserName identified byPassowrd using' orcl, ; create or replace view V_SourceDBName_TableName as
select*from v_sourceview ; 4)在目的數(shù)據(jù)庫(kù)建立讀取所需數(shù)據(jù)的存儲(chǔ)過(guò)程(由于復(fù)雜度問(wèn)題我在這里只描述 一下關(guān)鍵偽代碼) <條件1> = <參數(shù)>+<組合邏輯處理1> ; <查詢1> = <查詢內(nèi)容>+<條件l>+<本地庫(kù)> ; <結(jié)果1> =執(zhí)行<查詢1> ; If<結(jié)果1> > 0 then Return<結(jié)果1> ; Else <查詢2> = <查詢內(nèi)容>+<條件l>+<源數(shù)據(jù)庫(kù)> ; <結(jié)果2> =執(zhí)行 < 查詢2> ; If<結(jié)果2> > Othen Return<結(jié)果2> ; Else <條件2> = <參數(shù)>+<組合邏輯處理2> ; <查詢3> = <查詢內(nèi)容>+<條件2>+<本地庫(kù)> ; <結(jié)果3>=執(zhí)行<查詢3>; If<結(jié)果3> > 0 then Return<結(jié)果3> ; Else <查詢4> = <查詢內(nèi)容>+<條件2>+<源數(shù)據(jù)庫(kù)> ; <結(jié)果4> =執(zhí)行<查詢4>; If<結(jié)果4> > 0 then Return<結(jié)果4> ; Else Retum〈空〉; End if ; End if ; End if ; End if ; 5)在目的數(shù)據(jù)庫(kù)建立新增所需數(shù)據(jù)的存儲(chǔ)過(guò)程(關(guān)鍵偽代碼) If<源數(shù)據(jù) > 合法then <完整數(shù)據(jù) > = < 源數(shù)據(jù)>+<組合邏輯> ; <完整數(shù)據(jù)1> = <按本系統(tǒng)邏輯拆分完成數(shù)據(jù)> ; 插入本地庫(kù) < 完整數(shù)據(jù)1> ; <完整數(shù)據(jù)2> = <按本系統(tǒng)邏輯拆分完成數(shù)據(jù)> ; 插入本地庫(kù) < 完整數(shù)據(jù)2> ; …… Else
6
Return< f昔誤> ; End if ; 主要程序組件 1)嵌入系統(tǒng)的關(guān)鍵界面 界面及功能描述窗體左邊部分為數(shù)據(jù)的類屬性(可分級(jí)),通過(guò)鼠標(biāo)雙擊此屬
性將此屬性作為附加條件觸發(fā)過(guò)濾事件將內(nèi)容展現(xiàn)在右邊窗體中的數(shù)據(jù)展現(xiàn)區(qū),左上部
分有一個(gè)類別控制的選項(xiàng),如果選中則在根據(jù)右邊索引條件搜索時(shí)把類別條件也附加進(jìn)
去,如果不選中則在通過(guò)右邊條件索引搜索時(shí)不附加類別條件。窗體右邊部分又分索引
區(qū)和數(shù)據(jù)展現(xiàn)區(qū)、操作區(qū)。索引區(qū)有個(gè)編號(hào)控制選項(xiàng)如果選中則按編號(hào)作為條件進(jìn)行搜
索如果不選中則按特征值進(jìn)行搜索,搜索按鈕觸發(fā)搜索事件,數(shù)據(jù)展現(xiàn)區(qū)主要展現(xiàn)數(shù)據(jù)
主要屬性便于操作。操作區(qū)包含確定和取消兩個(gè)按鈕,確定按鈕對(duì)選中的數(shù)據(jù)進(jìn)行加工
處理,確定為被用戶使用,取消則不進(jìn)行任何操作關(guān)閉此窗口。 2)類別控制組件關(guān)鍵偽代碼 窗體裝載 取出類別級(jí)數(shù)i; For(類別技術(shù)) 取出當(dāng)前級(jí)類別位數(shù)j; 根據(jù)位數(shù)取出記錄數(shù); For(記錄數(shù)) 預(yù)制到數(shù)節(jié)點(diǎn),形成類別數(shù); Next next 類別雙擊事件 取出當(dāng)前被雙擊的節(jié)點(diǎn)值; 條件= < 類別邏輯>+<節(jié)點(diǎn)值> ; 把條件和索引類型作為參數(shù)觸發(fā)搜索事件。 3)搜索中的關(guān)鍵偽代碼 初始一個(gè)空的dataSet; 初始一個(gè)空的OLDDatase ; 把被選擇的數(shù)據(jù)倒入OLDDatase中緩存起來(lái); 根據(jù)索引條件得到的值賦給dataSet; 將OLDDatase和dataSet累加起來(lái)對(duì)數(shù)據(jù)進(jìn)行綁定; 4)確定過(guò)程處理關(guān)鍵偽代碼 此過(guò)程返回根據(jù)用戶條件得到的DataSet; For(窗體記錄數(shù)i) { <選中否 > = < 記錄i選擇列的值> ; If<沒(méi)選中>then 繼續(xù)循環(huán);
<來(lái)源 > = < 記錄i來(lái)源列的值> ; If<來(lái)源> =二 <源數(shù)據(jù)>then <歸集數(shù)據(jù)> ; <調(diào)研插入本地的存儲(chǔ)過(guò)程> ; End if; <要返回的DataSet> = <要返回的DataSet>+<記錄i> ; End if ; } 〈返回DataSet〉。
權(quán)利要求
一種應(yīng)用程序系統(tǒng)間數(shù)據(jù)收集的方法,其特征在于,在源系統(tǒng)中的數(shù)據(jù)庫(kù)中建立只讀的安全用戶提供目的應(yīng)用系統(tǒng)需要的數(shù)據(jù),在目的數(shù)據(jù)庫(kù)中利用源數(shù)據(jù)庫(kù)中的用戶建立需要數(shù)據(jù)的視圖,利用數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程處理數(shù)據(jù)的讀取來(lái)源先是本地?cái)?shù)據(jù)沒(méi)有附和條件的記錄后再讀取源數(shù)據(jù)庫(kù)中的數(shù)據(jù),在數(shù)據(jù)的使用過(guò)程中判斷數(shù)據(jù)來(lái)源,當(dāng)來(lái)源于源數(shù)據(jù)的情況下調(diào)用數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程處理到本系統(tǒng)中來(lái)源于本地?cái)?shù)據(jù)庫(kù)的數(shù)據(jù)可快速的進(jìn)行操作,隨著本地系統(tǒng)的使用逐漸的將源數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)轉(zhuǎn)換為本地?cái)?shù)據(jù),具體包括如下步驟河內(nèi)容1)在源數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)用戶create user UserName identified by password;2)給此用戶賦予需要數(shù)據(jù)的讀取權(quán)限grant connect to UserName;grant select,references,index on ReqTables to UserName;3)在目的數(shù)據(jù)庫(kù)中建立源數(shù)據(jù)庫(kù)開(kāi)放的數(shù)據(jù)視圖create database link DBL_FT_SCADA connect to UserName dentified byPassowrd using’orcl’;create or replace view V_SourceDBName_TableName as select*from v_sourceview;4)在目的數(shù)據(jù)庫(kù)建立讀取所需數(shù)據(jù)的存儲(chǔ)過(guò)程;<條件1>=<參數(shù)>+<組合邏輯處理1>;<查詢1>=<查詢內(nèi)容>+<條件1>+<本地庫(kù)>;<結(jié)果1>=執(zhí)行<查詢1>;If<結(jié)果1>>0then Return<結(jié)果1>; Else <查詢2>=<查詢內(nèi)容>+<條件1>+<源數(shù)據(jù)庫(kù)>; <結(jié)果2>=執(zhí)行<查詢2>; If<結(jié)果2>>0then Return<結(jié)果2>; Else <條件2>=<參數(shù)>+<組合邏輯處理2>; <查詢3>=<查詢內(nèi)容>+<條件2>+<本地庫(kù)>; <結(jié)果3>=執(zhí)行<查詢3>; If<結(jié)果3>>0then Return<結(jié)果3>; Else <查詢4>=<查詢內(nèi)容>+<條件2>+<源數(shù)據(jù)庫(kù)>; <結(jié)果4>=執(zhí)行<查詢4>; If<結(jié)果4>>0then Return<結(jié)果4>; ElseReturn<空>; End if;End if; End if; End if; 5)在目的數(shù)據(jù)庫(kù)建立新增所需數(shù)據(jù)的存儲(chǔ)過(guò)程If<源數(shù)據(jù)>合法then <完整數(shù)據(jù)>=<源數(shù)據(jù)>+<組合邏輯>; <完整數(shù)據(jù)1>=<按本系統(tǒng)邏輯拆分完成數(shù)據(jù)>; 插入本地庫(kù)<完整數(shù)據(jù)1>; <完整數(shù)據(jù)2>=<按本系統(tǒng)邏輯拆分完成數(shù)據(jù)>; 插入本地庫(kù)<完整數(shù)據(jù)2>; …… Else Return<錯(cuò)誤>;End if;主要程序組件如下1)嵌入系統(tǒng)的關(guān)鍵界面界面及功能描述窗體左邊部分為數(shù)據(jù)的類屬性,通過(guò)鼠標(biāo)雙擊此屬性將此屬性作為附加條件觸發(fā)過(guò)濾事件將內(nèi)容展現(xiàn)在右邊窗體中的數(shù)據(jù)展現(xiàn)區(qū),左上部分有一個(gè)類別控制的選項(xiàng),選中則在根據(jù)右邊索引條件搜索時(shí)把類別條件也附加進(jìn)去,不選中則在通過(guò)右邊條件索引搜索時(shí)不附加類別條件,窗體右邊部分又分索引區(qū)和數(shù)據(jù)展現(xiàn)區(qū)、操作區(qū),索引區(qū)有個(gè)編號(hào)控制選項(xiàng),選中則按編號(hào)作為條件進(jìn)行搜索,不選中則按特征值進(jìn)行搜索,搜索按鈕觸發(fā)搜索事件,數(shù)據(jù)展現(xiàn)區(qū)主要展現(xiàn)數(shù)據(jù)主要屬性便于操作,操作區(qū)包含確定和取消兩個(gè)按鈕,確定按鈕對(duì)選中的數(shù)據(jù)進(jìn)行加工處理,確定為被用戶使用,取消則不進(jìn)行任何操作關(guān)閉此窗口;2)類別控制組件關(guān)鍵偽代碼窗體裝載取出類別級(jí)數(shù)i;For(類別技術(shù)) 取出當(dāng)前級(jí)類別位數(shù)j; 根據(jù)位數(shù)取出記錄數(shù); For(記錄數(shù)) 預(yù)制到數(shù)節(jié)點(diǎn),形成類別數(shù);Nextnext類別雙擊事件取出當(dāng)前被雙擊的節(jié)點(diǎn)值;條件=<類別邏輯>+<節(jié)點(diǎn)值>;把條件和索引類型作為參數(shù)觸發(fā)搜索事件;3)搜索中的關(guān)鍵偽代碼初始一個(gè)空的dataSet;初始一個(gè)空的OLDDatase;把被選擇的數(shù)據(jù)倒入OLDDatase中緩存起來(lái);根據(jù)索引條件得到的值賦給dataSet;將OLDDatase和dataSet累加起來(lái)對(duì)數(shù)據(jù)進(jìn)行綁定;4)確定過(guò)程處理關(guān)鍵偽代碼此過(guò)程返回根據(jù)用戶條件得到的DataSet;For(窗體記錄數(shù)i){ <選中否>=<記錄i選擇列的值>; If<沒(méi)選中>then繼續(xù)循環(huán); <來(lái)源>=<記錄i來(lái)源列的值>; If<來(lái)源>==<源數(shù)據(jù)>then<歸集數(shù)據(jù)>; <調(diào)研插入本地的存儲(chǔ)過(guò)程>; End if; <要返回的DataSet>=<要返回的DataSet>+<記錄i>; End if;}<返回DataSet>。
全文摘要
本發(fā)明提供一種應(yīng)用程序系統(tǒng)間數(shù)據(jù)收集的方法,改方法是在源系統(tǒng)中的數(shù)據(jù)庫(kù)中建立只讀的安全用戶提供目的應(yīng)用系統(tǒng)需要的數(shù)據(jù),在目的數(shù)據(jù)庫(kù)中利用源數(shù)據(jù)庫(kù)中的用戶建立所需數(shù)據(jù)的視圖,在目的數(shù)據(jù)庫(kù)中建立存儲(chǔ)過(guò)程來(lái)處理應(yīng)用程序所需數(shù)據(jù),根據(jù)所需數(shù)據(jù)條件首先檢索本地?cái)?shù)據(jù)庫(kù),如果本地?cái)?shù)據(jù)庫(kù)存有符合條件的記錄則直接讀取,如果沒(méi)有則讀取源數(shù)據(jù)庫(kù)中的數(shù)據(jù),在應(yīng)用程序的使用過(guò)程中判斷數(shù)據(jù)來(lái)源,當(dāng)來(lái)源于源數(shù)據(jù)的情況下調(diào)用數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程把所需數(shù)據(jù)處理到本系統(tǒng)中,來(lái)源于本地?cái)?shù)據(jù)庫(kù)的數(shù)據(jù)可快速的進(jìn)行操作,隨著應(yīng)用程序的使用逐漸的將源數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)轉(zhuǎn)換為本地?cái)?shù)據(jù)。
文檔編號(hào)G06F9/44GK101692204SQ20091001816
公開(kāi)日2010年4月7日 申請(qǐng)日期2009年9月8日 優(yōu)先權(quán)日2009年9月8日
發(fā)明者李英潮 申請(qǐng)人:浪潮集團(tuán)山東通用軟件有限公司