已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
KFOKFO及其应用及其应用 应用集成部 2 1.KFO的对象模型 2.数据打包对象 3.注册表对象 4.全局对象 5.其他对象 提纲提纲 3 1.KFO的对象模型 2.数据打包对象 3.注册表对象 4.全局对象 5.其他对象 提纲提纲 4 KFO的对象模型 5 1.KFO的对象模型 2.数据打包对象 3.注册表对象 4.全局对象 5.其他对象 提纲提纲 6 数据打包对象 Dictionary对象 DictWord对象 Vector对象 LinkedList对象 Node对象 IDMap对象 MapWord对象 ISortHelper接口 7 Dictionary对象特点 Dictionary对象是一个数据字典 字典里可以存放不同的变量,它可以是任一 个单值变量,也可以是一个对象。 在Dictionary对象中主要通过变量名称来进 行索引的。 Dictionary对象可以进行跨进程调度,跨进 程调度可以采用值拷贝调度和引用调度 Dictionary对象支持系列化和持久化 8 Dictionary对象的属性 属性 Property Value(Name As String) Property Name(Index As Long) As String Property Count As Long Property Modified As Boolean Property MarshalOptions As MarshalOptionsEnum Property Repeated As Boolean ByRefMarshal 9 Dictionary对象的方法 方法 Function Clone() As Dictionary Function GetValue(Name As String, Default) As Variant Function Lookup(Name As String, Value) As Boolean Sub Remove(Name As String) Sub RemoveAll() Sub ResetModified() Sub Append(pDict As Dictionary,ByVal bCloneObject As Boolean) Sub InitMaxCount(nMaxCount As Long) Function CloneAll() As Dictionary Function Load(Source) As Boolean Function Save(Dest) As Boolean 10 Vector对象的特点 Vector对象相当于一个不定长的向量数组 每一个元素可以是任一个单值变量,也可以是 一个对象 在Vector对象中主要通过索引来进行数据访 问的 Vector对象可以进行跨进程调度,跨进程调 度可以采用值拷贝调度和引用调度 Vector对象支持系列化和持久化 11 Vector对象的属性 属性 Property Item(Index As Long) As Variant Property Size As Long Property Array As Variant Property LBound As Long Property UBound As Long Property GrowBy As Long Property ByRefMarshal As Boolean 12 Vector对象的方法 方法 Function Add(Item) As Long 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 Vector Sub FreeExtra() Function BSearch(ItemToSearch, Index As Long, SortHelper As ISortHelper) As Boolean Function Search(ItemToSearch, Index As Long, SortHelper As ISortHelper) As Boolean Sub Sort(First, Last, SortHelper As ISortHelper) Function CloneAll() As Vector Function Load(Source) As Boolean Function Save(Dest) As Boolean 13 LinkedList对象的特点 LinkedList对象相当于一个单线链表 每一个节点可以是任一个单值变量,也可以是 一个对象 在LinkedList对象中主要通过索引或节点前 后关系来进行数据访问的 LinkedList对象可以进行跨进程调度,跨进 程调度可以采用值拷贝调度和引用调度 LinkedList对象支持系列化和持久化 14 LinkedList对象的属性 属性 Property Item(Index As Long) As Node Property Count As Long Property Head As Node Property Tail As Node Property ByRefMarshal As Boolean 15 LinkedList对象的方法 方法 Function AddHead(Value) As Node Function AddTail(Value) As Node Sub AppendHead(List As LinkedList) Sub AppendTail(List As LinkedList) Function RemoveHead() As Variant Function RemoveTail () As Variant Sub RemoveAll() Function Clone() As LinkedList Function Search(ItemToSearch, SortHelper As ISortHelper) As Node Function CloneAll() As LinkedList Function Load(Source) As Boolean Function Save(Dest) As Boolean 16 Node对象的属性和方法 属性 Property Container As LinkedList Property Previous As Node Property Next As Node Property Value As Variant 方法 Function InsertBefore(Value) As Node Function InsertAfter(Value) As Node Sub Remove() 17 IDMap对象的特点 IDMap对象是一个数据字典 字典里可以存放不同的变量,它可以是任一个单值变 量,也可以是一个对象 在IDMap对象中主要通过一个整数值来进行数据访问 的 IDMap对象可以进行跨进程调度,跨进程调度可以采 用值拷贝调度和引用调度 IDMap对象支持系列化和持久化 与Dictionary对象的区别就在于Dictionary用名称访 问变量,而IDMap实用一个整数值访问元素变量的 18 IDMap对象的属性和方法 属性 Property Value(ID As Long) As Variant Property IDs(Index As Long) As Long Property Count As Long ByRefMarshal 方法 Function Clone() As IDMap Function GetValue(ID As Long, Default) As Variant Function Lookup(ID As Long, Value) As Boolean Sub Remove(ID As Long) Sub RemoveAll() Function CloneAll() As IDMap Function Load(Source) As Boolean Function Save(Dest) As Boolean 19 ISortHelper接口 ISortHelper接口是一个辅助的接口,需要开发人员 自己实现 ISortHelper接口对象应用于Vector对象的Sort、 BSearch、Search以及LinkedList对象的Search方法 对于Vector对象的Sort、BSearch、Search以及 LinkedList对象的Search方法,如果调用过程中没有 制定具体的ISortHelper实现,则采用系统默认的单值 比较大小关系,但是我们建议采用自己实现的 ISortHelper,实现自己真正意义上的大小比较 仅有一个方法需要实现: Function Compare(Item1, Item2) As Long 当Item1 “大于” Item2时返回大于0的数,如1 当Item1 “等于” Item2时返回等于0的数,如0 当Item1 “小于” Item2时返回小于0的数,如-1 示例一 20 Dictionary对象打包数据的性能问题 以前的性能问题:Dictionary对象在打包数据在20000个以内时 ,人的感觉是能够接受的,但超过20000个时,明显的感觉很慢 ,数据越大,所需要的时间,特别是在记录集转化成指数函数的 方式迅速递增为KFO的Dictionary对象时 解决的办法:应用InitMaxCount方法和Repeated属性 InitMaxCount方法:如果需要打包的数据个数超过20000个,最 好先调用InitMaxCount方法,预先一次性分配内存,以提高内存 分配的速度。在结合应用Repeated属性,大包的数据速度成几十 上百乃上千的倍数提高具体倍数与打包的数据量有关,数据量越 大,倍数越大。 Repeated属性:指明关键字是否允许重复,True表示允许重复 ,False表示不允许,默认值为False。如果将Repeated设置为 True,调用者需自己处理关键字不重复的问题 示例二 21 进程间调度问题 属性ByRefMarshal :在当前进程内是否允许该对象 采用引用调度方式到其他进程,True表示允许,调度 到另外进程后不会生成原对象的副本,False表示不允 许,调度到另外进程后会生成原对象的副本。默认值 为False。 采用引用调度的场景: 对于进程内的调用,无论ByRefMarshal 为True或是False,此属性 值被忽略,不做任何处理。 在进行跨进程调度的过程中如果对调度后的对象进行修改并希望反 映到原对象时,才有将原对象的属性ByRefMarshal设置为True,否 则应该尽量设置为False,以减少调度的频次和数据流量。 常用于插件调试过程中 示例三 22 系列化处理 以前在用金蝶核心对象KFO进行编程过程中,碰到 以下两个现象: 当用KFO.Vector、KFO.Dictionary及KFO.LinkedList对象进 行数据打包时,在VB及.NET中的变量查看中均无法看到内 部的数据及其结构,只能看到最上一级的对象所包含的元素 个数,给调试带来不方便性 在用MSMQ消息对象MSMQMessage、VB的PropertyBag对 象时,直接使用KFO.Vector、KFO.Dictionary及 KFO.LinkedList对象进行处理时提示错误 主要是因为原有KFO的Vector、Dictionary、 LinkedList以及IDMap对象没有支持系列化。从K/3 V10.2已经支持 示例四 23 克隆复制 Clone与CloneAll Clone方法,只对本身一级内数据进行复制,对 Vector、Dictionary、LinkedList以及IDMap对象 以及其他的可系列化对象的多层次嵌套时,只对 Vector、Dictionary、LinkedList以及IDMap对象 以及其他的可系列化对象进行简单引用,不是完全 意义上的数据复制克隆。 完全意义上的克隆复制,包含内嵌的其他可系列化 队象,形成一个全新真正副本。但如果包含的对象 不是一个持久化的对象,还是保留其原有的引用关 系。 示例五 24 持久化处理 支持持久化有两个方法: Function Save(Dest) As Boolean 将对象数据存储到目标中 Dest为一字串时,Save方法会自动检查该字串是否为路径文件 ,若是路径文件,则保存为文件,否则将对象保存为一字串形 式;若为VARIANT变体应该代表的是字节数组,文件、字符 串、对象流(Stream),否则默认保存为字节数组 Save 从源对象装载数据 Dest为一字串时,Load方法会自动检查该字串为文件路径,若 是文件路径,则从文件中装载数据,否则从字串中装载数据; 若为VARIANT变体应该代表的是字节数组、文件、字符串、 对象流(Stream),且为通过对用的Save方法生成的数据,否则 会报错“无效的过程对象或参数” 示例六 25 1.KFO的对象模型 2.数据打包对象 3.注册表对象 4.全局对象 5.其他对象 提纲提纲 26 Reg对象特点 封装在KFO中的Reg对象是的操作对象是 Windows系统的注册表 通过它来操纵我们K/3系统的一些系统内部的 注册表内容 可以对通用Windows注册表的项、值进行增 加、删除、修改、查找等操作 27 Reg对象的属性和方法(一) 属性 Property CompanyName As String 方法 Sub AddKey(KeyName As String) Function GetKeyValue(Key As String, Entry As String, Default) As Variant Sub 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 28 Reg对象的属性和方法(二) 方法 Function GetSystemSetting(AppName As String, Section As String, Entry As String, Default) As Variant Sub 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, Entry As String, Default) As Variant Sub SetUserSetting(AppName As String, Section As String, Entry As String, Value) Sub DeleteUserSetting(AppName As String, Section, Entry) 29 1.KFO的对象模型 2.数据打包对象 3.注册表对象 4.全局对象 5.其他对象 提纲提纲 30 Globals全局对象(一) 该对象主要提供VB未能提供的一些公用函数 该对象属于全局对象,只要VB引用KFO,直接 可用该对象的函数,不许创建此对象 属性 Property Reg As Reg 31 Globals全局对象(二) 方法 Function AscAt(String As String, Index As Long) As Integer Function CNulls(Value, Default) As Variant Function AscAtA(String As String, Index As Long) As Integer Function LeftA(String As String, Length As Long) As String Function LenA(String As String) As Long Function MidA(String As String, Start As Long, Length) As String Function RightA(String As String, Length As Long) As String Function CreateEnumerator(WalkVariant As IWalkVariant) As Unknow
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《探秘数据编码》教案-2025-2026学年鲁教版(新教材)小学信息技术四年级下册
- 餐饮安全智慧监管平台
- 中级会计资格:财务分析与评价找答案三
- 某渔业厂数据存档细则
- 某食品厂卫生检验管理制度
- 某麻纺厂物料流转准则
- 某电信公司服务流程细则
- 2026年中国煤化工产品结构分析与发展展望
- 钨矿石买卖合同
- 七牌二图布置方案
- 老年人骨关节疾病防治与护理
- 山东省工程建设标准《高品质住宅建设标准》DB37T 5319-2025
- 电气防爆管线安装规范
- 《公路建设项目文件管理规程》
- 幼小衔接全套课件
- 毕业设计(论文)-高效节能型三相感应电动机的电磁设计
- 骨质疏松的预防宣传课件
- JB T 8729-2013液压多路换向阀
- 高等学校英语应用能力考试(B级)强化训练全套教学课件
- 《病理学与病理生理学》电子教案
- 地下水监测井建设规范
评论
0/150
提交评论