找回密码
 欢迎注册
搜索
热搜: 活动 交友 discuz
查看: 6629|回复: 27

HL7V3DT在Cache数据库中的实施

[复制链接]
发表于 2003-4-3 09:01:01 | 显示全部楼层 |阅读模式
为了同时学习HL7V3和Cache数据库,我正在研究HL7V3DT(HL7V3数据类型)在Cache数据库中的实施。请有兴趣的朋友发表一下您的看法。
 楼主| 发表于 2003-4-3 09:42:07 | 显示全部楼层

HL7V3DT在Cache数据库中的实施

1.Cache本身有很多常用的数据类型,特别是还有类似HL7V3DT的%List类型。但较HL7V3DT的种类(好象42种)还是少了很多。我想在Cache本身数据类型基础上进一步实现全部的HL7V3DT,不知是否可行?
2.所有使用Cache系统数据类型或在Cache系统数据上派生的数据类型的属性(Property)都有一个PropertyIsValidDT方法可以验证其值是否有效,这个对我们来说很有用。
3.不同的Cache系统数据类型都有各种不同的参数,当我们用它们来派生新的数据类型时,如何使用这些参数呢?
4.Cache系统数据类型有三个关键字:
  CLIENTDATATYPE:用来指明客户端的相应数据类型,看来使用不同的客户端开发工 具对这个关键字可能要作一定修改?
  ODBCTYPE:指明对应ODBC的数据类型,为了防止ODBC出错,需要重写这个值。
  SQLCATEGORY:指明对应SQL中的数据类型。
5.数据格式和转换方法:Cache自动处理显示格式和编程格式的转换,这个转换自动继承。以下这些转换方法可能要重写:DisplayToLogical、IsValidDT、LogicalToDisplay、LogicalToOdbc、LogicalToStorage、OdbcToLogical、StorageToLogical
6.可以用VALUELIST属性来枚举数据类型值,使用VALUELIST与LogicalToDisplay、IsValidDT有一些关系。
7.不知有没有办法实现HL7V3DT中的数据类型别名的定义(如Boolean别名为BL)?
  
 楼主| 发表于 2003-4-3 10:05:50 | 显示全部楼层

HL7V3DT在Cache数据库中的实施

数据类型的定义,实质也就是Cache中对象的定义,Cache对象有这些特点:
1.支持继承、属性、方法、集合、关系、自定数据类型和流(streams)。
2.有复杂的对象持久化机制,可以象外部关系数据库一样存贮对象。
3.也有象关系数据一样的索引、约束、参照完整性的控制。
4.有事物处理和并发访问的控制,用对象导航方式就很容易获取数据。
5.自动与Cache SQL集成应用。
6.对象可以和JAVA,C++,ActiveX互操作。
7.自动支持XML。
8.有多用的开发环境Cache Studio。
 楼主| 发表于 2003-4-3 10:25:01 | 显示全部楼层

HL7V3DT在Cache数据库中的实施

Cache数据库的开发工具:
数据库端:
1.Cache Studio(Cache Script)
2.Caché RoseLink(从UML自动生成)
3.SQL-based Development(从SQL自动转换成类)
4.XML-based Development(从XML Schema自动生成类)
客户端:
1.JAVA
2.ActiveX、COM、.NET
3.C++
4.Caché Server Pages(CSP用于Web应用开发)
5.XML
6.The Caché SQL Gateway
7.The Caché Activate ActiveX Gateway
 楼主| 发表于 2003-4-3 15:05:01 | 显示全部楼层

HL7V3DT在Cache数据库中的实施

Cache中设计对象的一些重要知识点:
1.继承有两种方法: a.扩展(Extents) 子类实和父类存贮在一起,检索父类将包括子类。 b.用方法自动生成
2.数据包装也有两种方法: a.属性包装 不管数据是持久存贮还是计算所得,到表现为属性 b.方法包装 数据读入时自动执行相关方法,改变数据的表示形式。
3.扩展 Cache可以通过三种方式扩展其本身的功能: a.定义新的类 b.定义新的事件 c.定义原来类的子类
4.对象持久化:Cache是通过执行每个持久对的在相关方法实现自动数据存贮和读取的,这些方法是自动生成的,并可自动处理并发性和事物处理。
5.对象绑定:Cache通过对象绑定使Cache的类自动成为JAVA、C++、或ActiveX中的类。
6.Cache中有持久类和临时类两种,持久类可以直接存贮的关系数据库中,并形成表。
7.对象参引 在内存中的对象用OREF,存贮的数据库中的对象用OID。OID是全局唯一的,ID只在一个(扩展)中唯一;用OREF时,自动计算参引数,如参引数为0,对象自动从内存释放。
8.类有两种类型 a.数据类型,它没有属性,并不可实例化 b.对象类 大部分继承自%RegisteredObject系统类,自动分配内存和OREF,支持多态;可持久类继承自%Persistent;序列化类继承自%SerialObject,它除了被嵌入的其它持久化类内,否则不可存贮(CDA中的有些类是不是要定义成这种类?),它可以序列化为一个字符串。
9.Cache支持多重继承。
10.类必须编译以后才能用。
发表于 2003-4-3 16:01:04 | 显示全部楼层

HL7V3DT在Cache数据库中的实施

什么是cache数据库,可否先介绍一下,我真的不懂,提这个弱智的问题。
发表于 2003-4-3 17:02:28 | 显示全部楼层

HL7V3DT在Cache数据库中的实施

sbf2000,我也遇到你曾经遇到的问题,cache程序不知道怎样运行!刚刚装好的时候在状态栏的右侧还有立方体的图标,重起了之后就找不到了!
这个问题你后来怎么解决的?
发表于 2003-4-4 08:08:19 | 显示全部楼层

HL7V3DT在Cache数据库中的实施

直接在开始菜单的"启动"中就可找到!
 楼主| 发表于 2003-4-4 08:12:40 | 显示全部楼层

HL7V3DT在Cache数据库中的实施

dorice:在安装目录\\bin下有一个名为csystray.exe的程序,它被你为Cache Cube,是Cache运行和管理的入口。
arbol:到google中查找一下Cache,你就知道它是什么了!
 楼主| 发表于 2003-4-4 09:11:54 | 显示全部楼层

HL7V3DT在Cache数据库中的实施

今天再继续我的学习,接下来看看Cache中设计一个类需要考滤的东东:
1.唯一的类名 包的名称、方法、属性名必须少于31字符长度,类名不限长度,但只是前25个字符必须唯一,其它成员最大128字符。名称是大小写不敏感的。持久类不能使用SQL关键字。
2.方法
3.属性
4.类查寻
5.索引
6.关键字
7.参数 设计数据类型时,参数具有重要作用。
 楼主| 发表于 2003-4-4 09:59:17 | 显示全部楼层

HL7V3DT在Cache数据库中的实施

关于方法:
1.方法可以有参数,并可给默认值
2.用Byref可以传递引用参数。使用时参数名前加“.”。
3.方法可以有反回值。
4.方法只有Public,和Private之分,Private也具有Protected访问能力。
5.关键字Language可以指明编写方法的语言是Basic还是Cache Script。它们都将被编译为Cache Code运行。
6.关键字ClassMethod指明方法是类的方法而不是对象的方法,子类不能修改这个关键字。类的方法可以在没有实例对象时运行,如New,Open,Save等方法都是类方法,它们有时很有用,设计它们很重要。
7.关键字SQLProc可以指明这个方法是一个存贮过程。
8.方法包括四种类型:代码方法、表达式方法(主要用于数据类型和提供默认值)、调用方法、生成方法(由代码自动生成的方法)。
8.
 楼主| 发表于 2003-4-4 10:46:50 | 显示全部楼层

HL7V3DT在Cache数据库中的实施

关于属性:
1.属性有两种:一是特征属性,二是关系属性。
2.属性不同于变量,它可以是文本值、集合值、持久对象的引用、持久对象的引用集合;属性自动具有一些属性方法,可以执行验证和存贮等;属性可以透明地执行数据存取中的转变;属性会自动将参引的持久对象取入内存。
3.定义属性时有多个关键字可用:Calculated、Description、Final、InitialExpression、Private、Required、Transient、Type。
4.属性具有的属性方法不是通过一般的继承得来是,而是通过一系列属性行为机制自动生成的,它们来源于%Property系统类和它的数据类型类。
5.特征属性又可分为:
  a.数据值属性 可以使用数据类型的参数来限定其值。
  b.对象属性 是对一个对象的引用
  c.集合属性 是包含一系列相同类型的对象,四个集合对象:%ArrayOfDataTypes、%ArrayOfObjects、%ListOfDataTypes、%ListOfObjects需要仔细研究!
  d.流属性 %Stream
  e.多维属性 属性形为和数据类型不生成多维属性方法
 楼主| 发表于 2003-4-4 13:56:02 | 显示全部楼层

HL7V3DT在Cache数据库中的实施

如何使用类:
1.方法的执行 使用Do或Set,注意示实例化的类方法用##class。
2.创建类的实例 执行类的%New方法,并可以传入参数。
3.打开持久对象 执行类的%OpenId或%Open方法。
4.通过对属性付值,改变类的状态。
5.Insert、SetAt、InsertObject、SetObjectAt、GetAt用于集合属性。
6.用%Delete删除对象,%DeleteExtent、%KillExtent删除所有对象。
7.%ResultSet对象用于检索对象。
 楼主| 发表于 2003-4-4 14:27:44 | 显示全部楼层

HL7V3DT在Cache数据库中的实施

思考:
1.HL7V3DT的数据类型都继承自ANY类型,如何在Cache中定义ANY?从%Persistent继承?还是%RegisteredObject?还是%SerialObject?
2.Cache已有的数据类型与HL7V3DT中重复的是否需要重新定义?我想把Boolean(BL)从Cache的Boolean与ANY两个类继承,以保证其具既有HL7V3DT定义的功能又有Cache的数据类型的功能,这样是否可行?
3.HL7V3DT中的数据类型是不是全都是Cache中的数据类型类,是否有些V3DT需要定义成Cache中的持久类或序列化类?
4.能否从一个Cache的系统数据类型和一个自定义的继承自%Persistent的类派生出新的数据类型?这样的数据类型会有哪些特性?它能符合V3DT的定义吗?
 楼主| 发表于 2003-4-4 15:27:20 | 显示全部楼层

HL7V3DT在Cache数据库中的实施

再研究Cache中的数据类型:
1.数据类型是一类的一种,每一种数据类型表示了数据的一种的字面形式。(HL7V3DT也应该是这样定义的吧?!)
2.数据类型类定义了对象的属性和表中的列的行为特征。
3.数据类型不能被实例化,不能单独存贮。(所以不可能从%Persistent?)
4.数据类型没有属性!但可以有参数。(V3DT中的属性应该定义参数来实现?)
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

快速回复 返回顶部 返回列表