金蝶基础类KFO及其应用.ppt

上传人:sccc 文档编号:5675819 上传时间:2023-08-08 格式:PPT 页数:35 大小:325.01KB
返回 下载 相关 举报
金蝶基础类KFO及其应用.ppt_第1页
第1页 / 共35页
金蝶基础类KFO及其应用.ppt_第2页
第2页 / 共35页
金蝶基础类KFO及其应用.ppt_第3页
第3页 / 共35页
金蝶基础类KFO及其应用.ppt_第4页
第4页 / 共35页
金蝶基础类KFO及其应用.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《金蝶基础类KFO及其应用.ppt》由会员分享,可在线阅读,更多相关《金蝶基础类KFO及其应用.ppt(35页珍藏版)》请在三一办公上搜索。

1、KFO及其应用,应用集成部,KFO的对象模型数据打包对象注册表对象全局对象其他对象,提纲,KFO的对象模型数据打包对象注册表对象全局对象其他对象,提纲,KFO的对象模型,KFO的对象模型数据打包对象注册表对象全局对象其他对象,提纲,数据打包对象,Dictionary对象DictWord对象Vector对象LinkedList对象Node对象IDMap对象MapWord对象ISortHelper接口,Dictionary对象特点,Dictionary对象是一个数据字典字典里可以存放不同的变量,它可以是任一个单值变量,也可以是一个对象。在Dictionary对象中主要通过变量名称来进行索引的。Di

2、ctionary对象可以进行跨进程调度,跨进程调度可以采用值拷贝调度和引用调度Dictionary对象支持系列化和持久化,Dictionary对象的属性,属性Property Value(Name As String)Property Name(Index As Long)As StringProperty Count As LongProperty Modified As BooleanProperty MarshalOptions As MarshalOptionsEnumProperty Repeated As BooleanByRefMarshal,Dictionary对象的方法,方法

3、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 Long)Function CloneAll

4、()As DictionaryFunction Load(Source)As BooleanFunction Save(Dest)As Boolean,Vector对象的特点,Vector对象相当于一个不定长的向量数组每一个元素可以是任一个单值变量,也可以是一个对象在Vector对象中主要通过索引来进行数据访问的Vector对象可以进行跨进程调度,跨进程调度可以采用值拷贝调度和引用调度Vector对象支持系列化和持久化,Vector对象的属性,属性Property Item(Index As Long)As VariantProperty Size As LongProperty Array

5、As VariantProperty LBound As LongProperty UBound As LongProperty GrowBy As LongProperty ByRefMarshal As Boolean,Vector对象的方法,方法Function Add(Item)As LongSub 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 Fr

6、eeExtra()Function BSearch(ItemToSearch,Index As Long,SortHelper As ISortHelper)As BooleanFunction Search(ItemToSearch,Index As Long,SortHelper As ISortHelper)As BooleanSub Sort(First,Last,SortHelper As ISortHelper)Function CloneAll()As VectorFunction Load(Source)As BooleanFunction Save(Dest)As Boole

7、an,LinkedList对象的特点,LinkedList对象相当于一个单线链表每一个节点可以是任一个单值变量,也可以是一个对象在LinkedList对象中主要通过索引或节点前后关系来进行数据访问的LinkedList对象可以进行跨进程调度,跨进程调度可以采用值拷贝调度和引用调度LinkedList对象支持系列化和持久化,LinkedList对象的属性,属性Property Item(Index As Long)As Node Property Count As LongProperty Head As NodeProperty Tail As NodeProperty ByRefMarsha

8、l As Boolean,LinkedList对象的方法,方法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 Search(ItemToSearch,SortHe

9、lper As ISortHelper)As NodeFunction CloneAll()As LinkedListFunction Load(Source)As BooleanFunction Save(Dest)As Boolean,Node对象的属性和方法,属性Property Container As LinkedListProperty Previous As NodeProperty Next As NodeProperty Value As Variant方法Function InsertBefore(Value)As NodeFunction InsertAfter(Valu

10、e)As NodeSub Remove(),IDMap对象的特点,IDMap对象是一个数据字典字典里可以存放不同的变量,它可以是任一个单值变量,也可以是一个对象在IDMap对象中主要通过一个整数值来进行数据访问的IDMap对象可以进行跨进程调度,跨进程调度可以采用值拷贝调度和引用调度IDMap对象支持系列化和持久化与Dictionary对象的区别就在于Dictionary用名称访问变量,而IDMap实用一个整数值访问元素变量的,IDMap对象的属性和方法,属性Property Value(ID As Long)As VariantProperty IDs(Index As Long)As Lo

11、ngProperty Count As LongByRefMarshal方法Function Clone()As IDMapFunction 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 Boolean,ISortHelper接口,ISortHelp

12、er接口是一个辅助的接口,需要开发人员自己实现ISortHelper接口对象应用于Vector对象的Sort、BSearch、Search以及LinkedList对象的Search方法对于Vector对象的Sort、BSearch、Search以及LinkedList对象的Search方法,如果调用过程中没有制定具体的ISortHelper实现,则采用系统默认的单值比较大小关系,但是我们建议采用自己实现的ISortHelper,实现自己真正意义上的大小比较仅有一个方法需要实现:Function Compare(Item1,Item2)As Long当Item1“大于”Item2时返回大于0的数

13、,如1当Item1“等于”Item2时返回等于0的数,如0当Item1“小于”Item2时返回小于0的数,如-1示例一,Dictionary对象打包数据的性能问题,以前的性能问题:Dictionary对象在打包数据在20000个以内时,人的感觉是能够接受的,但超过20000个时,明显的感觉很慢,数据越大,所需要的时间,特别是在记录集转化成指数函数的方式迅速递增为KFO的Dictionary对象时解决的办法:应用InitMaxCount方法和Repeated属性InitMaxCount方法:如果需要打包的数据个数超过20000个,最好先调用InitMaxCount方法,预先一次性分配内存,以提高

14、内存分配的速度。在结合应用Repeated属性,大包的数据速度成几十上百乃上千的倍数提高具体倍数与打包的数据量有关,数据量越大,倍数越大。Repeated属性:指明关键字是否允许重复,True表示允许重复,False表示不允许,默认值为False。如果将Repeated设置为True,调用者需自己处理关键字不重复的问题示例二,进程间调度问题,属性ByRefMarshal:在当前进程内是否允许该对象采用引用调度方式到其他进程,True表示允许,调度到另外进程后不会生成原对象的副本,False表示不允许,调度到另外进程后会生成原对象的副本。默认值为False。采用引用调度的场景:对于进程内的调用,

15、无论ByRefMarshal 为True或是False,此属性值被忽略,不做任何处理。在进行跨进程调度的过程中如果对调度后的对象进行修改并希望反映到原对象时,才有将原对象的属性ByRefMarshal设置为True,否则应该尽量设置为False,以减少调度的频次和数据流量。常用于插件调试过程中示例三,系列化处理,以前在用金蝶核心对象KFO进行编程过程中,碰到以下两个现象:当用KFO.Vector、KFO.Dictionary及KFO.LinkedList对象进行数据打包时,在VB及.NET中的变量查看中均无法看到内部的数据及其结构,只能看到最上一级的对象所包含的元素个数,给调试带来不方便性在用

16、MSMQ消息对象MSMQMessage、VB的PropertyBag对象时,直接使用KFO.Vector、KFO.Dictionary及KFO.LinkedList对象进行处理时提示错误主要是因为原有KFO的Vector、Dictionary、LinkedList以及IDMap对象没有支持系列化。从K/3 V10.2已经支持示例四,克隆复制,Clone与CloneAllClone方法,只对本身一级内数据进行复制,对Vector、Dictionary、LinkedList以及IDMap对象以及其他的可系列化对象的多层次嵌套时,只对Vector、Dictionary、LinkedList以及IDM

17、ap对象以及其他的可系列化对象进行简单引用,不是完全意义上的数据复制克隆。完全意义上的克隆复制,包含内嵌的其他可系列化队象,形成一个全新真正副本。但如果包含的对象不是一个持久化的对象,还是保留其原有的引用关系。示例五,持久化处理,支持持久化有两个方法:Function Save(Dest)As Boolean将对象数据存储到目标中Dest为一字串时,Save方法会自动检查该字串是否为路径文件,若是路径文件,则保存为文件,否则将对象保存为一字串形式;若为VARIANT变体应该代表的是字节数组,文件、字符串、对象流(Stream),否则默认保存为字节数组Save从源对象装载数据Dest为一字串时,

18、Load方法会自动检查该字串为文件路径,若是文件路径,则从文件中装载数据,否则从字串中装载数据;若为VARIANT变体应该代表的是字节数组、文件、字符串、对象流(Stream),且为通过对用的Save方法生成的数据,否则会报错“无效的过程对象或参数”示例六,KFO的对象模型数据打包对象注册表对象全局对象其他对象,提纲,Reg对象特点,封装在KFO中的Reg对象是的操作对象是Windows系统的注册表通过它来操纵我们K/3系统的一些系统内部的注册表内容 可以对通用Windows注册表的项、值进行增加、删除、修改、查找等操作,Reg对象的属性和方法(一),属性Property CompanyNam

19、e 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 String,Entry As String)Function KeyExists(KeyName As String)As Boolean,Reg对象的属性

20、和方法(二),方法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 DeleteSystemSetting(AppName As String,Section,Entry)Function GetUserSetting(AppName As String,Section As String,

21、Entry As String,Default)As VariantSub SetUserSetting(AppName As String,Section As String,Entry As String,Value)Sub DeleteUserSetting(AppName As String,Section,Entry),KFO的对象模型数据打包对象注册表对象全局对象其他对象,提纲,Globals全局对象(一),该对象主要提供VB未能提供的一些公用函数该对象属于全局对象,只要VB引用KFO,直接可用该对象的函数,不许创建此对象属性Property Reg As Reg,Globals全

22、局对象(二),方法Function AscAt(String As String,Index As Long)As IntegerFunction 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

23、,Length)As StringFunction RightA(String As String,Length As Long)As StringFunction CreateEnumerator(WalkVariant As IWalkVariant)As UnknownFunction GetViperSecurity()As ViperSecurityFunction OpenClientToken()As AccessTokenFunction OpenProcessToken()As AccessTokenFunction OpenThreadToken()As AccessTok

24、en,KFO的对象模型数据打包对象注册表对象全局对象其他对象,提纲,BitSet对象,BitSet对象描述的对数据进行位操作的数据对象 Array属性,可以把二进制数组转换为BitSet对象或者把BitSet对象转换成二进制数组。Bit属性,可以取出BitSet对象中的具体的某一位的Byte值,用Boolean变量来表示。Intersect方法,作两个BitSet对象的求交集的操作。Invert方法,可以对BitSet对象中的某一段数据进行求反操作。Union方法,作两个BitSet对象的求并集的操作。Xor方法,作两个BitSet对象的求异或的操作。,Windows域用户权限管理,AccessControlEntry、AccessControlList、AccessToken三个对象是将Windows的域用户权限管理作了一个映像。示例:Dim oAccessEntry As New AccessControlEntryoAccessEntry.SecurityIdentifier.Name=”域名用户名(用户组名)”通过以上的方法可以取得指定Windows域中的相应的域用户信息。通过AccessControlList、AccessToken两个对象可以直接的对域用户信息进行相应的操作。如:Allow方法,用户授权;Deny方法,用户操作禁止等。,谢 谢!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号