金蝶基礎(chǔ)類KFO及其應(yīng)用_第1頁
金蝶基礎(chǔ)類KFO及其應(yīng)用_第2頁
金蝶基礎(chǔ)類KFO及其應(yīng)用_第3頁
金蝶基礎(chǔ)類KFO及其應(yīng)用_第4頁
金蝶基礎(chǔ)類KFO及其應(yīng)用_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、應(yīng)用集成部應(yīng)用集成部21.1.kfokfo的對象模型的對象模型2.2.數(shù)據(jù)打包對象數(shù)據(jù)打包對象3.3.注冊表對象注冊表對象4.4.全局對象全局對象5.5.其他對象其他對象31.1.kfokfo的對象模型的對象模型2.2.數(shù)據(jù)打包對象數(shù)據(jù)打包對象3.3.注冊表對象注冊表對象4.4.全局對象全局對象5.5.其他對象其他對象4kfo的對象模型的對象模型51.1.kfokfo的對象模型的對象模型2.2.數(shù)據(jù)打包對象數(shù)據(jù)打包對象3.3.注冊表對象注冊表對象4.4.全局對象全局對象5.5.其他對象其他對象6數(shù)據(jù)打包對象數(shù)據(jù)打包對象dictionary對象對象dictword對象對象vector對象對象li

2、nkedlist對象對象node對象對象idmap對象對象mapword對象對象isorthelper接口接口7dictionary對象特點(diǎn)對象特點(diǎn)dictionarydictionary對象是一個(gè)數(shù)據(jù)字典對象是一個(gè)數(shù)據(jù)字典字典里可以存放不同的變量,它可以是任一字典里可以存放不同的變量,它可以是任一個(gè)單值變量個(gè)單值變量, ,也可以是一個(gè)對象。也可以是一個(gè)對象。在在dictionarydictionary對象中主要通過變量名稱來進(jìn)對象中主要通過變量名稱來進(jìn)行索引的。行索引的。dictionarydictionary對象可以進(jìn)行跨進(jìn)程調(diào)度,跨進(jìn)對象可以進(jìn)行跨進(jìn)程調(diào)度,跨進(jìn)程調(diào)度可以采用值拷貝調(diào)度和

3、引用調(diào)度程調(diào)度可以采用值拷貝調(diào)度和引用調(diào)度dictionarydictionary對象支持系列化和持久化對象支持系列化和持久化8dictionary對象的屬性對象的屬性屬性屬性property value(name as string)property name(index as long) as stringproperty count as longproperty modified as booleanproperty marshaloptions as marshaloptionsenumproperty repeated as booleanbyrefmarshal9dictiona

4、ry對象的方法對象的方法方法方法function clone() as dictionaryfunction getvalue(name as string, default) as variantfunction lookup(name as string, value) as booleansub remove(name as string)sub removeall()sub resetmodified()sub append(pdict as dictionary,byval bcloneobject as boolean) sub initmaxcount(nmaxcount as

5、long)function cloneall() as dictionaryfunction load(source) as booleanfunction save(dest) as boolean10vector對象的特點(diǎn)對象的特點(diǎn)vector對象相當(dāng)于對象相當(dāng)于一個(gè)不定長的向量數(shù)組每一個(gè)元素可以是任一個(gè)單值變量可以是任一個(gè)單值變量, ,也可以是也可以是一個(gè)對象一個(gè)對象在在vectorvector對象中主要通過索引來進(jìn)行數(shù)據(jù)訪對象中主要通過索引來進(jìn)行數(shù)據(jù)訪問的問的vectorvector對象可以進(jìn)行跨進(jìn)程調(diào)度,跨進(jìn)程調(diào)對象可以進(jìn)行跨進(jìn)程調(diào)度,跨進(jìn)程調(diào)度可以采用值拷貝調(diào)度和引用調(diào)度度可以采用

6、值拷貝調(diào)度和引用調(diào)度vectorvector對象支持系列化和持久化對象支持系列化和持久化11vector對象的屬性對象的屬性屬性屬性property item(index as long) as variantproperty size as longproperty array as variantproperty lbound as longproperty ubound as longproperty growby as longproperty byrefmarshal as boolean12vector對象的方法對象的方法方法方法function add(item) as long

7、sub insert(index as long, item)sub append(newvector as vector)sub remove(index as long, ncount as long = 1)sub removeall()function clone() as vectorsub freeextra()function bsearch(itemtosearch, index as long, sorthelper as isorthelper) as booleanfunction search(itemtosearch, index as long, sorthelpe

8、r as isorthelper) as booleansub sort(first, last, sorthelper as isorthelper)function cloneall() as vectorfunction load(source) as booleanfunction save(dest) as boolean 13linkedlist對象的特點(diǎn)對象的特點(diǎn)linkedlistlinkedlist對象相當(dāng)于對象相當(dāng)于一個(gè)單線鏈表每一個(gè)節(jié)點(diǎn)可以是任一個(gè)單值變量可以是任一個(gè)單值變量, ,也可以是也可以是一個(gè)對象一個(gè)對象在在linkedlistlinkedlist對象中主要通過索

9、引或節(jié)點(diǎn)前對象中主要通過索引或節(jié)點(diǎn)前后關(guān)系來進(jìn)行數(shù)據(jù)訪問的后關(guān)系來進(jìn)行數(shù)據(jù)訪問的linkedlistlinkedlist對象可以進(jìn)行跨進(jìn)程調(diào)度,跨進(jìn)對象可以進(jìn)行跨進(jìn)程調(diào)度,跨進(jìn)程調(diào)度可以采用值拷貝調(diào)度和引用調(diào)度程調(diào)度可以采用值拷貝調(diào)度和引用調(diào)度linkedlistlinkedlist對象支持系列化和持久化對象支持系列化和持久化14linkedlist對象的屬性對象的屬性屬性屬性property item(index as long) as node property count as longproperty head as nodeproperty tail as nodeproperty

10、byrefmarshal as boolean15linkedlist對象的方法對象的方法方法方法function addhead(value) as nodefunction addtail(value) as nodesub appendhead(list as linkedlist)sub appendtail(list as linkedlist)function removehead() as variantfunction removetail () as variantsub removeall()function clone() as linkedlistfunction se

11、arch(itemtosearch, sorthelper as isorthelper) as nodefunction cloneall() as linkedlistfunction load(source) as booleanfunction save(dest) as boolean 16node對象的屬性和方法對象的屬性和方法屬性屬性property container as linkedlistproperty previous as nodeproperty next as nodeproperty value as variant方法方法function insertbef

12、ore(value) as nodefunction insertafter(value) as nodesub remove()17idmap對象的特點(diǎn)對象的特點(diǎn)idmapidmap對象是一個(gè)數(shù)據(jù)字典對象是一個(gè)數(shù)據(jù)字典字典里可以存放不同的變量,它可以是任一個(gè)單值變字典里可以存放不同的變量,它可以是任一個(gè)單值變量量, ,也可以是一個(gè)對象也可以是一個(gè)對象在在idmap對象中主要通過一個(gè)對象中主要通過一個(gè)整數(shù)值整數(shù)值來進(jìn)行數(shù)據(jù)訪來進(jìn)行數(shù)據(jù)訪問的問的idmap對象可以進(jìn)行跨進(jìn)程調(diào)度,跨進(jìn)程調(diào)度可以對象可以進(jìn)行跨進(jìn)程調(diào)度,跨進(jìn)程調(diào)度可以采用值拷貝調(diào)度和引用調(diào)度采用值拷貝調(diào)度和引用調(diào)度idmap對象支持

13、系列化和持久化對象支持系列化和持久化與與dictionarydictionary對象的區(qū)別就在于對象的區(qū)別就在于dictionarydictionary用名稱訪用名稱訪問變量,而問變量,而idmapidmap實(shí)用一個(gè)整數(shù)值訪問元素變量的實(shí)用一個(gè)整數(shù)值訪問元素變量的18idmap對象的屬性和方法對象的屬性和方法屬性屬性property value(id as long) as variantproperty ids(index as long) as longproperty count as longbyrefmarshal方法方法function clone() as idmapfuncti

14、on getvalue(id as long, default) as variantfunction lookup(id as long, value) as booleansub remove(id as long)sub removeall()function cloneall() as idmapfunction load(source) as booleanfunction save(dest) as boolean19isorthelper接口接口isorthelper接口是一個(gè)輔助的接口,需要開發(fā)人員接口是一個(gè)輔助的接口,需要開發(fā)人員自己實(shí)現(xiàn)自己實(shí)現(xiàn)isorthelper接口對象

15、應(yīng)用于接口對象應(yīng)用于vector對象的對象的sort、bsearch、search以及以及l(fā)inkedlist對象的對象的search方法方法對于對于vector對象的對象的sort、bsearch、search以及以及l(fā)inkedlist對象的對象的search方法,如果調(diào)用過程中沒有方法,如果調(diào)用過程中沒有制定具體的制定具體的isorthelper實(shí)現(xiàn),則采用系統(tǒng)默認(rèn)的單實(shí)現(xiàn),則采用系統(tǒng)默認(rèn)的單值比較大小關(guān)系,但是我們建議采用自己實(shí)現(xiàn)的值比較大小關(guān)系,但是我們建議采用自己實(shí)現(xiàn)的isorthelper,實(shí)現(xiàn)自己真正意義上的大小比較,實(shí)現(xiàn)自己真正意義上的大小比較僅有一個(gè)方法需要實(shí)現(xiàn):僅有一個(gè)方

16、法需要實(shí)現(xiàn):function compare(item1, item2) as long當(dāng)當(dāng)item1 “大于大于” item2時(shí)返回大于時(shí)返回大于0的數(shù),如的數(shù),如1當(dāng)當(dāng)item1 “等于等于” item2時(shí)返回等于時(shí)返回等于0的數(shù),如的數(shù),如0當(dāng)當(dāng)item1 “小于小于” item2時(shí)返回小于時(shí)返回小于0的數(shù),如的數(shù),如-1示例一示例一20dictionary對象打包數(shù)據(jù)的性能問題對象打包數(shù)據(jù)的性能問題以前的性能問題:以前的性能問題:dictionary對象在打包數(shù)據(jù)在對象在打包數(shù)據(jù)在20000個(gè)以內(nèi)時(shí),個(gè)以內(nèi)時(shí),人的感覺是能夠接受的,但超過人的感覺是能夠接受的,但超過20000個(gè)時(shí),明顯

17、的感覺很慢,個(gè)時(shí),明顯的感覺很慢,數(shù)據(jù)越大,所需要的時(shí)間,特別是在記錄集轉(zhuǎn)化成指數(shù)函數(shù)的數(shù)據(jù)越大,所需要的時(shí)間,特別是在記錄集轉(zhuǎn)化成指數(shù)函數(shù)的方式迅速遞增為方式迅速遞增為kfo的的dictionary對象時(shí)對象時(shí)解決的辦法:應(yīng)用解決的辦法:應(yīng)用initmaxcount方法和方法和repeated屬性屬性initmaxcount方法:如果需要打包的數(shù)據(jù)個(gè)數(shù)超過方法:如果需要打包的數(shù)據(jù)個(gè)數(shù)超過20000個(gè),最個(gè),最好先調(diào)用好先調(diào)用initmaxcount方法,預(yù)先一次性分配內(nèi)存,以提高內(nèi)方法,預(yù)先一次性分配內(nèi)存,以提高內(nèi)存分配的速度。在結(jié)合應(yīng)用存分配的速度。在結(jié)合應(yīng)用repeated屬性,大包的數(shù)

18、據(jù)速度成屬性,大包的數(shù)據(jù)速度成幾十上百乃上千的倍數(shù)提高具體倍數(shù)與打包的數(shù)據(jù)量有關(guān),數(shù)幾十上百乃上千的倍數(shù)提高具體倍數(shù)與打包的數(shù)據(jù)量有關(guān),數(shù)據(jù)量越大,倍數(shù)越大。據(jù)量越大,倍數(shù)越大。repeated屬性:指明關(guān)鍵字是否允許重復(fù),屬性:指明關(guān)鍵字是否允許重復(fù),true表示允許重復(fù),表示允許重復(fù),false表示不允許,默認(rèn)值為表示不允許,默認(rèn)值為false。如果將。如果將repeated設(shè)置為設(shè)置為true,調(diào)用者需自己處理關(guān)鍵字不重復(fù)的問題調(diào)用者需自己處理關(guān)鍵字不重復(fù)的問題示例二示例二21進(jìn)程間調(diào)度問題進(jìn)程間調(diào)度問題屬性屬性byrefmarshal :在當(dāng)前進(jìn)程內(nèi)是否允許該對象:在當(dāng)前進(jìn)程內(nèi)是否允許

19、該對象采用引用調(diào)度方式到其他進(jìn)程,采用引用調(diào)度方式到其他進(jìn)程,true表示允許,調(diào)度表示允許,調(diào)度到另外進(jìn)程后不會(huì)生成原對象的副本,到另外進(jìn)程后不會(huì)生成原對象的副本,false表示不表示不允許,調(diào)度到另外進(jìn)程后會(huì)生成原對象的副本。默認(rèn)允許,調(diào)度到另外進(jìn)程后會(huì)生成原對象的副本。默認(rèn)值為值為false。采用引用調(diào)度的場景:采用引用調(diào)度的場景:對于進(jìn)程內(nèi)的調(diào)用,無論對于進(jìn)程內(nèi)的調(diào)用,無論byrefmarshal 為為true或是或是false,此屬性,此屬性值被忽略,不做任何處理。值被忽略,不做任何處理。在進(jìn)行跨進(jìn)程調(diào)度的過程中如果對調(diào)度后的對象進(jìn)行修改并希望反在進(jìn)行跨進(jìn)程調(diào)度的過程中如果對調(diào)度后的

20、對象進(jìn)行修改并希望反映到原對象時(shí),才有將原對象的屬性映到原對象時(shí),才有將原對象的屬性byrefmarshal設(shè)置為設(shè)置為true,否則應(yīng)該盡量設(shè)置為否則應(yīng)該盡量設(shè)置為false,以減少調(diào)度的頻次和數(shù)據(jù)流量。,以減少調(diào)度的頻次和數(shù)據(jù)流量。常用于插件調(diào)試過程中常用于插件調(diào)試過程中示例三示例三22系列化處理系列化處理以前在用金蝶核心對象以前在用金蝶核心對象kfo進(jìn)行編程過程中,碰到進(jìn)行編程過程中,碰到以下兩個(gè)現(xiàn)象:以下兩個(gè)現(xiàn)象:當(dāng)用當(dāng)用kfo.vector、kfo.dictionary及及kfo.linkedlist對象對象進(jìn)行數(shù)據(jù)打包時(shí),在進(jìn)行數(shù)據(jù)打包時(shí),在vb及及.net中的變量查看中均無法看到

21、中的變量查看中均無法看到內(nèi)部的數(shù)據(jù)及其結(jié)構(gòu),只能看到最上一級的對象所包含的元內(nèi)部的數(shù)據(jù)及其結(jié)構(gòu),只能看到最上一級的對象所包含的元素個(gè)數(shù),給調(diào)試帶來不方便性素個(gè)數(shù),給調(diào)試帶來不方便性在用在用msmq消息對象消息對象msmqmessage、vb的的propertybag對對象時(shí),直接使用象時(shí),直接使用kfo.vector、kfo.dictionary及及kfo.linkedlist對象進(jìn)行處理時(shí)提示錯(cuò)誤對象進(jìn)行處理時(shí)提示錯(cuò)誤主要是因?yàn)樵兄饕且驗(yàn)樵衚fo的的vector、dictionary、linkedlist以及以及idmap對象沒有支持系列化。從對象沒有支持系列化。從k/3 v10.2已

22、經(jīng)支持已經(jīng)支持示例四示例四23克隆復(fù)制克隆復(fù)制clone與與cloneallclone方法,只對本身方法,只對本身一級一級內(nèi)數(shù)據(jù)進(jìn)行復(fù)制,對內(nèi)數(shù)據(jù)進(jìn)行復(fù)制,對vector、dictionary、linkedlist以及以及idmap對象對象以及其他的可系列化對象的多層次嵌套時(shí),只對以及其他的可系列化對象的多層次嵌套時(shí),只對vector、dictionary、linkedlist以及以及idmap對象對象以及其他的可系列化對象進(jìn)行簡單引用,不是完以及其他的可系列化對象進(jìn)行簡單引用,不是完全意義上的數(shù)據(jù)復(fù)制克隆。全意義上的數(shù)據(jù)復(fù)制克隆。完全意義上的克隆復(fù)制,包含內(nèi)嵌的其他可系列完全意義上的克隆復(fù)制

23、,包含內(nèi)嵌的其他可系列化隊(duì)象,形成一個(gè)全新真正副本?;?duì)象,形成一個(gè)全新真正副本。但如果包含的但如果包含的對象不是一個(gè)持久化的對象,還是保留其原有的對象不是一個(gè)持久化的對象,還是保留其原有的引用關(guān)系引用關(guān)系。 示例五示例五24持久化處理持久化處理支持持久化有兩個(gè)方法:支持持久化有兩個(gè)方法:function save(dest) as boolean將對象數(shù)據(jù)存儲(chǔ)到目標(biāo)中將對象數(shù)據(jù)存儲(chǔ)到目標(biāo)中dest為一字串時(shí),為一字串時(shí),save方法會(huì)自動(dòng)檢查該字串是否為路徑文件,方法會(huì)自動(dòng)檢查該字串是否為路徑文件,若是路徑文件,則保存為文件,否則將對象保存為一字串形式;若是路徑文件,則保存為文件,否則將對象

24、保存為一字串形式;若為若為variant變體應(yīng)該代表的是字節(jié)數(shù)組,文件、字符串、變體應(yīng)該代表的是字節(jié)數(shù)組,文件、字符串、對象流對象流(stream),否則默認(rèn)保存為字節(jié)數(shù)組,否則默認(rèn)保存為字節(jié)數(shù)組save從源對象裝載數(shù)據(jù)從源對象裝載數(shù)據(jù)dest為一字串時(shí),為一字串時(shí),load方法會(huì)自動(dòng)檢查該字串為文件路徑,方法會(huì)自動(dòng)檢查該字串為文件路徑,若是文件路徑,則從文件中裝載數(shù)據(jù),否則從字串中裝載數(shù)據(jù);若是文件路徑,則從文件中裝載數(shù)據(jù),否則從字串中裝載數(shù)據(jù);若為若為variant變體應(yīng)該代表的是字節(jié)數(shù)組、文件、字符串、變體應(yīng)該代表的是字節(jié)數(shù)組、文件、字符串、對象流對象流(stream),且為通過對用的,

25、且為通過對用的save方法生成的數(shù)據(jù),否則方法生成的數(shù)據(jù),否則會(huì)報(bào)錯(cuò)會(huì)報(bào)錯(cuò)“無效的過程對象或參數(shù)無效的過程對象或參數(shù)” 示例六示例六251.1.kfokfo的對象模型的對象模型2.2.數(shù)據(jù)打包對象數(shù)據(jù)打包對象3.3.注冊表對象注冊表對象4.4.全局對象全局對象5.5.其他對象其他對象26reg對象特點(diǎn)對象特點(diǎn)封裝在封裝在kfo中的中的reg對象是的操作對象是對象是的操作對象是windows系統(tǒng)的注冊表系統(tǒng)的注冊表通過它來操縱我們通過它來操縱我們k/3系統(tǒng)的一些系統(tǒng)內(nèi)部的系統(tǒng)的一些系統(tǒng)內(nèi)部的注冊表內(nèi)容注冊表內(nèi)容 可以對通用可以對通用windows注冊表的項(xiàng)、值進(jìn)行增注冊表的項(xiàng)、值進(jìn)行增加、刪除、

26、修改、查找等操作加、刪除、修改、查找等操作27reg對象的屬性和方法(一)對象的屬性和方法(一)屬性屬性property companyname as string方法方法sub addkey(keyname as string)function getkeyvalue(key as string, entry as string, default) as variantsub setkeyvalue(key as string, entry as string, value)sub deletekey(keyname as string)sub deletekeyvalue(key as s

27、tring, entry as string)function keyexists(keyname as string) as boolean28reg對象的屬性和方法(二)對象的屬性和方法(二)方法方法function getsystemsetting(appname as string, section as string, entry as string, default) as variantsub setsystemsetting(appname as string, section as string, entry as string, value)sub deletesystem

28、setting(appname as string, section, entry)function getusersetting(appname as string, section as string, entry as string, default) as variantsub setusersetting(appname as string, section as string, entry as string, value)sub deleteusersetting(appname as string, section, entry)291.1.kfokfo的對象模型的對象模型2.

29、2.數(shù)據(jù)打包對象數(shù)據(jù)打包對象3.3.注冊表對象注冊表對象4.4.全局對象全局對象5.5.其他對象其他對象30globals全局對象(一)全局對象(一)該對象主要提供該對象主要提供vb未能提供的一些公用函數(shù)未能提供的一些公用函數(shù)該對象屬于全局對象,只要該對象屬于全局對象,只要vb引用引用kfo,直接,直接可用該對象的函數(shù),不許創(chuàng)建此對象可用該對象的函數(shù),不許創(chuàng)建此對象屬性屬性property reg as reg31globals全局對象(二)全局對象(二)方法方法function ascat(string as string, index as long) as integerfunction

30、 cnulls(value, default) as variantfunction ascata(string as string, index as long) as integerfunction lefta(string as string, length as long) as stringfunction lena(string as string) as longfunction mida(string as string, start as long, length) as stringfunction righta(string as string, length as long) as stringfunction createenumerator(walkvariant as iwalkvariant) as unknownfunction getvipersecurity() as vipersecurityfunc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論