摘要:
Flex中的大部分组件(component)和所有的容器(container)都实现了IDataRenderer 接口,从而提供默认的数据绑定功能。IDataRenderer接口的一般实现方式如下://Internalvariableforthepropertyvalue.privatevar_data:Object; //Makethedatapropertybindable.[Bindable("dataChange")]//Definethegettermethod.publicfunctiongetdata():Object...{return_data;}//De 阅读全文
摘要:
Flex,Sliverlight,javaFX,Mozilla Prism,这些RichClient技术纷纷出现。与ajax这样的改良主义相比,RichClient是一场彻底的革命,让应用可以脱离浏览器而运行。这样的技术变革必然对应用架构产生影响。让我们看一看引入了RichClient会怎样改变应用架构。 RichClient定位于展现层,对应用架构的影响也主要在展现层。我们已经接触了太多的Web Framework,大多数Web Framework都是MVC模式的某种实现。以Struts为例,Struts用jsp form作为View,用Servlet作为前端控制器,并用ActionForm 阅读全文
摘要:
Cairngorm是一个轻量级的Flex框架,提供了使用Flex构建应用的最佳实践。本文讨论Cairngorm架构中各角色的职能划分及消息机制。Cairngorm的架构如下图(图中“组件”表示架构元素,“接口”表示事件的派发或监听):视图(View)视图接收用户事件或系统事件,并分派应用事件。对于用户事件产生的应用事件,可以理解为“用户请求(Request)”。系统事件包括:组件的创建、初始化,模型变化等。比如,模型(Model)改变时,会分派事件,视图接收到事件后自动更新。视图分派事件时,调用CairngormEventDispatcher的实例进行分派(dispatch),而不是用组件自身 阅读全文
摘要:
显示结构下图是RssReader的显示结构。可以发现,除了可视化组件(绿色)外,非可视化组件(红色)也用mxml的方式组装到整个Application中。这样做的目的是为了更好的利用Flex中的事件传播机制。事件流下面看一下RssReader初始化时的事件流。(其他的事件流可以用同样的方法进行分析)URI中监听了creationComplete事件。当创建URI完成后,会调用handleCreationComplete方法,设置的URL,然后再调用CairngormEventDispatcher的dispatch方法,发布自定义的GetFeedEvent事件。代码如下:2. RSSReader 阅读全文
摘要:
前面已经介绍了事件的注册与分发、监听器的设置以及如何自定义事件。 但是事件源分派(dispatch)的事件如何被监听器获取呢?这就涉及到Flex中的事件机制。关于flash中的事件流,在Adobe livedocs网站上有详细的说明,这里就不再重复了。 阅读全文
摘要:
事件监听器同样要继承EventDispatcher类,这样就可以使用addEventListener方法:publicfunctionaddEventListener(type:String,listener:Function,useCapture:Boolean=false,priority:int=0,useWeakReference:Boolean=false):void使用EventDispatcher对象注册事件侦听器对象,以使侦听器能够接收事件通知。可以为特定类型的事件、阶段和优先级在显示列表的所有节点上注册事件侦听器。成功注册一个事件侦听器后,无法通过额外调用addEventLi 阅读全文
摘要:
除了使用actionscript中的事件外,flex还允许开发者自定义事件。典型的自定义事件是继承flash.events.Event类,并在其中声明多个事件名称。如下:packagetest.events...{importflash.events.Event;publicclassMyEventextendsEvent...{publicfunctionMyEvent(type:String,bubbles:Boolean=false,cancelable:Boolean=false)...{super(type,bubbles,cancelable);}publicstaticconst 阅读全文
摘要:
事件源产生并分派(dispatch)事件。在flex中,通过继承flash.events.EventDispatcher类,就可以使用dispatchEvent()方法分发事件给事件监听者。 ActionScript3.0语言参考中关于dispatchEvent方法的说明如下:publicfunctiondispatchEvent(event:Event):Boolean将事件调度到事件流中。事件目标是对其调用dispatchEvent()方法的EventDispatcher对象。参数 event:Event—调度到事件流中的Event对象。如果正在重新调度事件,则会自动创建此事件的一个克隆。 阅读全文
摘要:
在前面的例子中,已经涉及了Flex中数据绑定相关的事件及监听。[Bindable]标记相当于[Bindable(event="propertyChange")],编译器会自动为声明了[Bindable]的对象实现IEventDispatcher,并在声明了[Bindable]的数据发生改变时自动发送“propertyChange”事件。 Flex组件默认添加了PropertyChangeEvent.PROPERTY_CHANGE事件的Listener,当绑定的数据发生改变时会进行更新处理。 如果不使用默认的“propertyChange”,比如声明为[Bindable(ev 阅读全文
摘要:
在上一篇讨论了flex中数据绑定的原理,这里看一下实际的例子,代码如下:test.BindableClass如下:packagetest...{[Bindable]publicclassBindableClass...{publicvarstr:String="width=";}}flex中的数据绑定主要通过mxml中标签的属性定义实现,将属性值设置为用大括号“{}”标识的数据源,则该数据源指向的数据就被绑定到组件的属性上。在上面的例子中,使用了几种数据源: 1. mxml的Script中定义的变量(该变量已声明[Bindable]标记):width="{intV 阅读全文
摘要:
Flex中提供了[Bindable]标签,可以方便的实现数据绑定。但是其背后的原理是什么呢?可以用flash.utils.describeType这个工具来分析。 假设有如下的类,对成员变量声明了数据绑定:packagetest...{importmx.collections.ArrayCollection;publicclassBindablePropertity...{[Bindable]publicvarlist:ArrayCollection=newArrayCollection();}}用flash.utils.describeType输出的xml如下:可以看出,增加了[Binda. 阅读全文
摘要:
Perez 等用分类法组织分析已有本体, 归纳出5 个基本的建模元语(Modeling Primitives)。这些元语分别为:类/概念(classes/concepts) ,关系(relations) ,公理(axioms) ,函数(functions) 和实例(instances) 。类是相似术语所表达的概念的集合体,可以指任何事物,如工作描述、功能、行为、策略和推理过程等等。关系代表了在领域中概念之间的交互作用。形式上定义为n 维笛卡儿乘积的子集: R : C1 ×C2×⋯×Cn 。如:子类关系( subclass-of) 。基本的关系有4 种:part-o 阅读全文
摘要:
如上一篇计算机科学中ontology的定义中描述的,“ontology是对概念模型的明确的、形式化的、可共享的规范”。ontology表达的是一个概念体系,是针对概念模型的表示。通常概念模型中会包含很多概念,以及概念之间的关系。如果把代表这些概念用词来定义,则ontology可以表达为一个词表,包括词的涵义以及词与词之间的关系。这样一个体系可以作为大家理解问题的共同基础。按照ontology所表达的概念模型所在层次的不同,可以把ontology分为以下几类:元知识本体(meta ontology):对知识的表示进行抽象,通用知识本体(common ontology):从认识论出发,表达抽象的概 阅读全文
摘要:
内容管理的七种武器,缺一不可。充分发挥每种武器的最大威力,才能让内容管理发挥真正的作用。 阅读全文
摘要:
计算机科学具有“实用主义”的色彩,在20世纪末和21世纪初,计算机科学界开始研究ontology。在这个领域中,ontology意味着事物及其范畴的形式分类系统,是概念体系的规范。因此,计算机科学家们有必要重新给ontology下定义。1991年,Neches,Fikes等将Ontology 定义为:“给出构成相关领域词汇的基本术语和关系,及利用这些术语和关系构成的规定这些词汇外延的规则的定义”。1993年,格鲁伯(Gruber)定义:“ontology是概念体系的明确规范”(An ontology is an explicit specification of conceptualizati 阅读全文
摘要:
当为了一种或多种目的,将原始信息加工成便于使用的形式的时候,原始信息便成为内容 阅读全文
摘要:
完备的内容管理系统(CMS)一定会兼顾到内容生命周期(Content LifeCycle)的各个方面。整个内容管理的业务也是以内容生命周期为主线的。经过多方参考内容生命周期划分的各种方法(见参考资料),整理出如下内容生命周期:产生通过创建、抓取等方式产生新的内容,或者通过导入、传入方式获取已有的内容。归档对内容进行组织,创建关键字、索引等元数据;将内容按照定义好的存储结构存储在内容库(Content Repository)中。如,可以按照web网站(栏目、频道等)组织,或者按照wiki、blog方式组织等等发布将内容或内容的元数据发布,供使用者进行浏览、搜索、引用或评价。销毁注销内容及内容元数 阅读全文
摘要:
亚里士多德研究了人类认知中的一些关键概念,并把这样的研究叫做“形而上学”(metaphysics)。亚里士多德建立了“存在”的范畴系统(system of categories),包含的范畴有:substance(实体), quality(质量),quantity(数量),relation(关系),action(行动),passion(感情),place(空间),time(时间)。亚里士多德的研究可以看作是ontology的起源。实际上,如前所述,ontology是形而上学的一个分支。到了中世纪晚期,人们树立了符号(symbol)的概念,即认为事物的名称并不是事物本身,只不过是引用事物的词而已 阅读全文
摘要:
《牛津高阶英汉双解词典》中对ontology的解释是 "branch of metaphysics that deals with the nature of existence",即ontology是形而上学的分支,研究存在的本质,属于哲学(philosophy)范畴。从定义上可以看出,ontology不仅仅是事物,更是一种方法论体系。在《牛津高阶英汉双解词典》中,ontology被译为“本体论”。本体论是对存在的本质 (nature of existence) 进行研究的科学,包括:什么是事物(things)?什么是本质(essence)?当事物发生改变时,本质是否仍然 阅读全文
摘要:
知识管理涉及到知识的识别、收集、组织、贡献等,这些都离不开对知识本质的研究。而ontology(本体论,知识本体)正是对这方面的研究。本文收集现有的对ontology的研究成果,并进行整理和说明。目录什么是ontology 本体论的发展 计算机科学中ontology的定义 知识本体的分类ontology建模 阅读全文