CN1059981A - 为容纳进一对象管理设备环境的应用程序的封装 - Google Patents

为容纳进一对象管理设备环境的应用程序的封装 Download PDF

Info

Publication number
CN1059981A
CN1059981A CN89105546A CN89105546A CN1059981A CN 1059981 A CN1059981 A CN 1059981A CN 89105546 A CN89105546 A CN 89105546A CN 89105546 A CN89105546 A CN 89105546A CN 1059981 A CN1059981 A CN 1059981A
Authority
CN
China
Prior art keywords
application program
file
data
package casing
user
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN89105546A
Other languages
English (en)
Inventor
威廉·M·克劳
伊兹察克·埃阿里希
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of CN1059981A publication Critical patent/CN1059981A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0489Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using dedicated keyboard keys or combinations thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

具有一对象管理设备的计算机***。包括一便 于容纳并非设计为与对象管理设备协同运行的第一 应用程序的封装***。此封装设备包含一封装外壳 和一外壳过滤器。封装外壳可为对象引用,就好像它 是与此对象管理设备协同运行的应用程序一样。封 装外壳还在对象管理设备与该第一应用程序之间起 接口作用。外壳过滤器与封装外壳协同操作,并可根 据封装外壳的指令截取用户发给第一应用程序的命 令。外壳过滤器还可将封装外壳产生的命令传递给 第一应用程序。

Description

为容纳进一对象管理设备环境的应用程序的封装
本发明涉及要在一对象管理设备中运行的应用程序的封装
(escapsulation)方法。
计算机应用中的困难问题之一是缺少有效的文件管理***。例如,在一目录中不能存在具有相同名称的两个文件。
此外,不同计算机应用程序所产生的数据文件之间还存在不兼容的问题。一般来说,每一计算机应用程序均是独立于其他计算机应用程序工作的。一个计算机程序的数据极少可能有效地合并到另一应用程序的数据中去。如果数据被合并了,要进行修改的话,假如不是不可能,也将是十分困难的。加之,一旦数据由第一应用程序传送到第二应用程序后,通常是不可能再将该数据返回到第一应用程序进行修改的。
既使在一种容许应用程序的数据之间进行有效传递的环境产生后,仍然存在着对那些原先并非设计为在此环境下运行的应用程序的扩展兼容问题。
根据本发明的优选实施方案,提出了一种具有一个对象管理设备的计算机***。此对象管理设备管理多个对象。每一对象引用一个被设计成与该对象管理***协同运行的应用程序。该计算机***还包括有一封装***,此封装***能促使一并非被设计来与该对象管理设备协同运行的第一应用程序容纳进此计算机***。这种封装设施包含有一封装外壳(encapsulation  Shell)和一个外壳过滤器(Shell  fiter)。封装外壳可被多个对象所引用,就好象此封装外壳是一个被设成与该对象管理设备协同运行的应用程序一样。封装外壳还在对象管理设备和该第一应用程序之间起接口的作用。所说的外壳过滤器与封装外壳协同操作,并按照封装外壳发出的指令可以拦截用户发给该第一应用程序的命令。该外壳过滤器还将封装外壳所产生的命令传送给该第一应用程序。
此封装外壳可用于各种应用程序。为了使封装外壳能了解有关某一特定应用程序的特定信息,每一个要被封装外壳封装的应用程序均具有与其相关连的结构特性。同样,一被封装的应用程序可能伴随一菜单/宏定义文件,封装外壳可以对此定义文件进行访问,以便用户通过封装外壳和外壳过滤器定义可利用的宏功能和菜单。
图1是按照本发明优选实施方案的计算机方框图;
图2为说明按照本发明优选实施方案的对象、应用程序和数据文件间的关系的方框图;
图2A是表明按照本发明优选实施方案的与一应用程序有关的类别特性和与对象有关的对象特性的方框图;
图3表示按照本发明优选实施方案的多个被连接的对象。
图4表示按照本发明优选实施方案的一系列用作文件夹的对象,作为含有数据的对象的母体。
图5说明按照本发明的优选实施方案,连接各种对象而得的屏幕显示;
图6表示出为得到图5所示的屏幕显示而作的对象连接;
图7表示按照本发明的优选实施方案,三个对象可以如何连接起来;
图8和图9说明按照本发明优选实施方案,如何复制对象;
图10和图11说明按照本发明优选实施方案,对一公用对象的复制;
图12-图71表示按照本发明优选实施方案,一用户管理对象的对话期间屏幕上的显示情景,以及显示在用户面前的对象如何连接的框图;
图72为按照本发明优选实施方案,一个对象管理设备(OMF)的方框图。
图73表示在图22所示的OMF中所包含的一个***文件HPOMF.CAT的构成的方框图;
图74表明按照本发明优选实施方案,一个全局母体和全局对象间的关系。
图75表明图72中所示的OMF中的***文件是如何对图1中所示的存储器中的数据文件和应用程序进行访问的方框图;
图76是图75中所示存贮器结构的方框图;
图77和图78表示按本发明优选实施方案的对象和连接。
图79为包含在图72所示OMF的HPOMF.XRF(一个***文件)的构成的方框图。
图80显示按照本发明优选实施方案的一个视图说明记录;
图81表示按照本发明优选实施方案的快照(snapshot)的使用;
图82表示按照本发明优选实施方案,在没有快照对一视图的数据路径;
图83表示按照本发明优选实施方案,在具有一快照时一视图的数据路径;
图84表示按照本发明优选实施方案,一与图72中所示的OMF协同作用的封装外壳;
图84A表示按照本发明优选实施方案,图1中所示计算机***所用的文件结构;
图84B表示在MS-DOS操作***上运行的程序所用的文件说明的分析;
图85-图120及图123-图140表示用户在管理被图84中所示的封装外壳所封装的应用程序的对象的对话期间屏幕上显示的情景;
图121和图122表示在一程序被关闭时封装外壳可执行步骤的流程图;
图141为一流程图,它揭示按照本发明优选实施方案,在一被封装的应用程序的对象被打开时图84中所示的封装外壳所执行过程;
图142为一流程图,它揭示在一文件被激活时图84所示的封装外壳所执行过程;
图143为一流程图,它揭示按照本发明优选实施方案,当一被封装应用程序对象被生成时图84所示封装外壳所执行过程;
图144表示按照本发明优选实施方案,文件HPOMF.DOS中的记录型式;
图145表示按照本发明优选实施方案,文件HPOMF.DOS中的记录的逻辑结构。
图1所示为一台带有监视器14、键盘19和鼠标器20的计算机18。主存储器17如箭头9所示是计算机18内的一个部分。在主存储器17内有一对象管理设备(OMF)100、应用程序101、102、103、104、105、及106。
在101到106的每一个程序中储存着使用对象的数据。例如图2中应用程序101被表明储存有使用对象202、203、204和205的数据。同样,应用程序106储存有使用对象207、208、209及210的数据。OMF100存储有指明哪些对象适用于哪一个应用程序的信息。与同一个应用程序相关的对象被认为属于同一类别。例如对象202、203、204和205是属于相同类别,因为它们中的每一个均与应用程序101有关。同样,对象207、208、209及210也属于同一类别,因为它们中的每一个均与应用程序106有关。所有相同类别的对象利用同一应用程序。当一个应用程序正在由计算机18运行时,OMF通知该应用程序为获取数据应该访问哪一个对象。因而被访问的这个对象就被认为是激活的。当与某个对象有关的应用程序不被计算机18运行,或者当与该对象有关的应用程序虽然正在运行但是没有利用此对象的数据时,这个对象就是非激活的。
激活的对象能用消息互相通信。例如,如果应用程序101在两种情况下由计算机18运行,一种使用对象202数据,另一种使用对象203的数据,那么对象202及203都是激活的,因此对象202可以发送一个消息211给对象203。同样,如果计算机18正在用对象202的数据运行应用程序101,并且正在用对象207数据运行应用程序106,那么对象202和207都是激活的。因此对象202可以发送一个消息212给对象207。
诸如211及212之类的消息可以编排成能被所有类别的对象所发送和接收的格式,这样就允许所有的激活对象之间自由通信。这同时也能定义新的对象类型,并把它加进***中去而不需要为使用该新对象类型而修改已有的对象类型。
每个对象都与一组数据文件相关联,例如对象210被表示成与数据文件221、222和223相关。在数据文件221、222和223中的数据具有能为应用程序106所解释的格式。
每一个对象都与一特性表相关联。每一个特性具有一个名称和一个通过指定该名称可进行存取的值。此外每一类别的对象与一个对该类别所有对象都能通用的特性相关联。例如,图2A中表示出对象205和应用程序101。对象205有与它相关的特性231、232、233。应用程序101有与它相关联的特性131、132和133。
特性表可包含有任意数目的特性。每一个特性值可以是0到3,2762个字节的。这些特性用来存储有关各对象及类别的说明性信息,例如名称注解等。
对象可以引用其他的对象。这些引用称为连接。连接是具有指向性的:一个对象称为母体,另一个则为子体。每一个连接有一个引用名,它是由母体对象为辨认它的子体群中的每一个子体而规定的号码。一个对象的所有子体,它的子体的子体等等总称为该对象的子系族。同样,一个对象的母体,它的母体的母体等等总称为该对象的祖系族。在本发明的优选实施方案中,一个能被用户控制的对象可以有0个或多个子体及一个或多个母体。一个对象不允许成为它自己的子系。
图3中示出对象301、302、303、304、305、306、307、308及309。对象301-309的连接以每一个连接旁边括号内的号码作引用名。对象301有一个到对象302的连接310,其引用名称是“1”,对象301有一个到对象303的连接311,引用名称是“2”;对象302有一个到对象“304”的连接312,引用名称为“7”;对象302有一个到对象305的连接313,引用名称是“8”;对象303有一个到对象的306的连接314,引用名称是“1”;对象303有一个到对象307的连接315,引用名称是“4”;对象304有一个到对象308的连接316,引用名称是“7”;对象305有一个到对象308的连接317,引用名称是“7”;对象306有一个到对象309的连接318,引用名称是“8”;对象307有一个到对象306连接319,引用名称是“9”;对象307有一个到对象309的连接320,引用名称是“13”;对象308有一个到对象309的连接321,引用名称是“1”;对象308,有一个到对象303的连接322,引用名称是“3”。
对象301是对象302和303的一个母体。对象303是对象301和对象308的一个子体。对象302-309中每一个都属对象301的子系族。对象303的子系族是对象306、307和309。对象301-308全体是对象309的祖系族。对象301、302、305和308是对象303的祖系族,等等。
激活对象能动态地产生和删除与其它对象的连接。当与一个对象的连接被删除时,OMF100就检查该对象是否还有任何其他的母体。如果没有,OMF100通过删除该对象的数据文件并收回与该对象有关联的其他的存储空间来销毁该对象。
对象的连接可以用于各种目的。例如文件夹可以是对象的形式。用作文件夹的对象的子体群可以是含有各应用程序所用数据的对象,或者这些对象也可以是其他的文件夹。图4表示把对象作为文件夹使用的一个例子。对象401(也称文件夹401)、对象402(也称文件夹402)、对象403(也称文件夹403)及对象404(也称文件夹404),都被用为文件夹。文件夹401包含一个装载数据的对象405、一个装载数据的对象406、一个装载数据的对象407及文件夹402。文件夹402包含一个装载数据的对象408、文件夹403及文件夹404。文件夹403包含一个装载数据的对象409和一个装载数据的对象410。文件夹404包含一个装载数据的对象411、一个装载数据的对象412和一个装载数据的对象413。
连接的一个更复杂的用途是构成复合对象。例如在图5中,一个文档510包含有多行正文511、多行正文512、图形513、图形514和展开页数据515。如图6所示,正文和格式化数据存储在对象611中,图形513所用的图象数据存储在612中,图象514所用的图象数据存储在对象613中,而展开页数据515存储在对象614中。用于建立复合对象的连接总具有某些与该连接有关联的数据传输,因此称为数据连接。图6表示数据连接615、616和617。在文档510中仅仅示出了来自对象612、613和614的数据,所以数据连接614、615和616是可视的数据连接。在可视的数据连接中,母体将发送请求给它的子体,以便在母体的窗口显示数据。
图7所示含有第一展开页数据的对象701通过数据连接704被联接到含有第二展开页数据的对象702,并通过数据连接705被联到含有第三展开页数据的对象703。第一展开页使用来自第二展开页及第三展开页的数据。因为第一展开页不仅仅显示来自第二展开页及第三展开页的数据,所以数据连接704和705被称为传递数据的数据连接。
当要复制或发送对象时,OMF100做“内务”操作(bookkeeping)。当复制一个对象时,OMF100就复制与该对象有关的数据文件。如果复制的对象有子体群,OMF100也复制该对象的子系族,并在新的对象之间建立连接,以便使新的复合对象具有像原来一样的相同结构。
例如,图8示出图3的对象308和对象308的子系族。当OMF复制对象308时,OMF把对象308子系族中每一个对象及图8中所示的连接均予以复制。图9表示对象308的一个复制件。对象308a是对象308的一个复制件。对象303a是对象303的复制件。对象306a是对象306的复制件。对象307a是对象307的复制件。对象309a是对象309的复制件。连接321a是连接321的复制件。连接322a是连接322的复制件。连接314a是连接314的复制件。连接315a是连接315的复制件。连接318a是连接318的复制件。连接319a是连接319的复制件。连接320a是连接320的复制件。
在本优选实施方案中,当一母体被复制时,默认将导致该母体的各子体均被复制。但是如果一子体被指定为“公用”时,它就不被复制。相反,母体的复制件包括到子体的连接。例如,在图10中,母体对象161是要被复制的。母体对象161通过连接163连接到子体对象162。子体对象162是一个公用对象。如图11中所示,对复制的母体对象161,导致新对象161a通过新连接163a连接到对象162。对象161a是对象161的复制件。连接163a是连接163的复制件。
在图12-71中,说明如何在监视器14上向用户显示对象的。图12中所示为“New  Wave  Office”工作台面,其中包含有分别标名“File  Drawer”、“Waste  Basket”、“Diaguostic”、“Printers”、“Star”和“My  Eolder”的一图象。用户(图中未表示)可利用键盘19或鼠标器20控制光标781选择“My  Folder”。
图13说明在监视器14上所显示的对象是如何被连接的。New  Wave  Office(被示为对象700)通过连接711、712、713、714、715和716分别成为“File  Drawer”(被示为对象701)、“Waste  Basket”(被示为对象702)、“Diagnostic”(被示为对象703)、“Printers”(被示为对象704),“My  Folder”(被示为对象705)和“Star”(被示为对象706)的母体。
图14中,用户已利用光标781选择了下拉菜单782中的“Create  a  New…”。这一选择的结果出现了如图15所示的对话框779。用户利用光标781使图象“Layout”呈增辉显示,并利用键盘19键入“Past  UP”作为欲产生的新对象的名称。现在光标781指向标有“OK”的区域,一旦这一区域被选择,就产生一名为“Paste  UP”的新对象,如图16中所示。
在图17中,“Paste  UP”(即对象707)通过连接717被连接成为New  Wave  Office的一个子体。
基本记录夹(clipboad)操作是Cut、Copy和Past。用户必须选择欲被传送的或复制的数据,然后给出Cut命令或Copy命令。Cut将所选择的数据传送给记录夹(将其从原先存放地点删除)。Copy将所选择的数据在记录夹上予以复制,然后用户必须选择他要将数据传送往或复制到的地址,并给出Paste命令。这一命令将记录夹的内容复制到该被选择的地址处。
图18中,表示一用户已选择了“Past  UP”。这一选择由逆影象显示的“Paste  UP”的图象示出。利用光标781,由下拉菜单783中选择“Copy”。图18A表示,记录夹对象720经连接721成为对象708的母体。对象708是对象707(“Paste  UP”)的一个复制件。
如图19中所示,接着,用户由下拉菜单783中选择“Paste”。结果如图20所示,增加了一个对象708(光标781所指),它是原“Paste  UP”对象707的一个复制件。
在图21中,此新的对象被表示为对象708,它通过连接718连接成为New  Wave  Office的一个子体。
在图22中,已利用光标781触击两次“My  Folder”的图象而将“My  Folder”打开。结果得到代表“My  Folder”的一个新窗口785。
在图23中表示,利用光标781将“Paste  UP”(对象708)引入到窗口785。在图24中,这一过程完毕,现在“Paste  UP”(对象708)处于窗口“My  Folder”之中。
在图25中,表示为对象708的“Paste  UP”现在经由连接728成为“My  Folder”的一个子体。
用户用Share指令可建立多重连接。这一指令是记录夹隐喻(Clipboard)的扩充,在今天的软件包中为***的数据流通和复制方面它是通用的,此记录夹是一个***用来保持传输中的数据的专用缓冲器。
在某种情况下,Share指令操作与上述Cut或Copy指令相似。这就是说,使用Share、Cut或Copy,用户首先选择某些数据,然后给出Share指令,结果某些东西被放在记录夹上。然而在Share命令的情况下,所放在记录夹的内容既不是实际的数据,也不是实际数据的复制品。而是一个对所选择数据的连接。当这个连接被粘接上时,在原始数据和粘接地址位置之间即构成了固定联系。通过使用OMF  100,这一连接就被有关的各应用程序所使用,使得对原始数据作方便的访问(在其整个应用期间)并在原始数据被修改时自动更新。
图26中New  Wave  Office窗口已经被启用。图中,已选择了“Paste  UP”(对象707),以逆影象显示以便看起来更明显。用光标781从菜单783中选择“Share”。图26A示出Clipboard对象720,它通过连接722成为“Paste  UP”对象707的一个母体。
图27中,窗口785已被激活。由菜单787已选择“Paste”。如图28所示,其结果是显示在窗口785中的一幅图像707a,它表明“Paste  UP”(对象707)为窗口785和Newwave  Office窗口所共享。在图28A中,作为粘接的结果,“Paste  UP”现在表示为既是经连接722成为Clipboard  720的一个子体又是经连接727成为“My  folder”705的一个子体。在图29中,只示出用户可以看见的对象的互相联接,“Paste  UP”(对象707)被表示为经连接727成为“My  Folder”705的一个子体。因为“Paste  UP”(对象707)是共享的而不是复制的,所以“Paste  UP”(对象707)仍然是经连接717作为Newwave  Office的子体。
数据连接的一个关键性特点是数据的自动传输。当一个子体对象是打开的而用户改变它“被共享”(Shared  out)的部分时,即调用OMF100。OMF100检查是否有任何该对象的母体群“照管”(Care)这一具体变化。如果他们照管并且也都是打开的,OMF100对该母体群发送一个信息,通知它们新数据是可以利用的。然后,母体就能给子体发信息以产生或显示该数据。用户利用这个特点可以建立起具有复杂数据相关性的复合对象,并能使任一子部分的改变自地在其他部分得到反映。例如改变一张展开页中的一个数字,就能重新作一图形而使一篇文档中的图象更新。因为一个对象可能有许多母体,单一对象可能为任意个其他对象用作“锅炉板”(boiler  plate)。在此锅炉板内的变化均会在与它连接的所有对象内得到反映。在下面的讨论中说明自动数据传输。
图30中,“My  Folder”窗口785已经关闭。图31中,光标781从下拉菜单782选择“Create  a  New…”。这一选择的结果,出现了图32中所示的对话框779。用光标781将图形HPText增辉,并用键盘19键入名字“Sample  Text”作为欲生成的新的对象名。现在光标781指向标记为“OK”的区域。一旦选择了这个区域,一个标题为“Sample  Text”的新对象就被产生,如图33所示。
在图34中,“Sample  Text”(对象709)经连接被表示成是NewWave  Office的子体。图34中,由于“My  Folder”已经关闭,“Paste  UP”(对象708)、连接728和连接727均未示出。然而它们仍是存在的,但对用户来说现在是看不见的。
图35中,把光标781置于图像“Sample  Text”(对象707)上,并两次敲击鼠标器20的按键,将“Sample  Text”打开。图36中示出为“Sample  Text”打开的一个窗口789。
图37中,通过对“Paste  UP”图像的两次敲键已将“Paste  UP”(对象707)所用的窗口791打开。图38中,通过使用由鼠标器20控制的光标781,已选择了“Sample  Text”正文的一部分790。表明“NewWave  Office  enviroment”的逆影像部分是区域790。
图39中,用光标从下拉菜单792中选择“Share”选择项。在图40中,用光标781选择了窗口791中的区域793。在图41中,用光标781从下拉菜单794中选择了“Past”选择项。图42中,“Sample  Text”被联接到“Past  UP”(对象707),并把所显示的正文790显示在“paste  UP”窗口791中。在图43中,通过连接729把“Sample  Text”(对象709)表示为“Paste  UP”(对象707)的一个子体。在图42中,因为“Star”窗口789是打开的,所以,显示的正文790以灰色表示。在图44中,“Star”窗口是关闭的,所以,显示的正文790作明亮的显示。
在图45中,用光标781选择窗口791的一个区域795。图46表示光标781将“Star”图像移入窗口791的区域795。
图47中,从“Star”(对象706)来的数据现在显示在窗口791的区域795中。正如在图48中可能看到的,“Star”(对象706)通过连接726现在成为“Paste  UP”(对象707)的一个子体。
图49中,用户已经把光标781置于窗口791的区域795之上,并敲击鼠标器20的按键两次。其结果是将“Star”(对象706)打开并显示在窗口796中。图50中用光标791在菜单窗口797中选择“Ellipse”选择项,其结果导致“Star”(对象706)内的数据由星形变成椭园形。如图51所示,该结果既改变显示在窗口796内的数据又改变显示在窗口791的区域795的数据。
图52中,用光标781定义窗口791中的一个区域797。图53中,用光标781从下拉菜单798中选择“Create  a  New…”选择项。选择的结果是对话框799出现在图54中。对话框799包含对能够在窗口791的区域797中显示数据的两类对象适用的图像。利用光标781,使图像“HP  Share”增辉显示。利用键盘19,键入名称“New  Shape”作为要产生的新对象的名称。光标现在指向标有“OK”的区域。一旦选择了这个“OK”区域,一个标题为“New  Shape”的新对象就产生了。“New  Shape”的数据显示于窗口791的区域797中,如图55所示。图56中,通过连接760的“New  Shape”(对象750)被表示为“Paste  UP”(对象707)的一个子体。
图57中,通过把光标781置于窗口791的区域297上并按两次鼠标器20上的按扭,使“New  Shape”的窗口800打开。图58中,用光标781从下拉菜单801中选择“Triangle”选择项。其结果,如图59所示,一个三角形现在既显示在窗口800内又显示在窗口791的区域797中。
图60中,窗口800已关闭。图61中,通过把光标置于窗口796的区域797上并按鼠标器20上的按键选择“New  Shape”。图62中,用光标781从下拉菜单中选择“Share”选择项。图63中,用光标781选择窗口791的区域802。图64中,用光标781从下拉菜单794中选择“Paste”选择项。如图65所示,其结果是具有来自显示在窗口791的区域797和区域802中“New  Shape”的数据的“New  Shape”的共享。图66中,示出“New  Shape”(对象750)有一个来自母体“Paste  UP”(对象707)的附加连接770。
图67中,用光标781已选择了区域797。然后用光标781从下拉菜单794中选择“Cut”选择项。如图68所示,其结果是区域797从窗口791被移出。图69中,用光标781从下拉菜单783中选择“Paste”选择项。如图70所示,其结果是由光标781指示的一个“New  Shape”图像。图71中,现在“New  Shape”(对象750)通过连接780被表示成为“NewWave  Office(对象100)的一个子体。
图72所示,OMF  100包括7个***文件:***文件601、602、603、604、605、606和607。OMF接口599作OMF与在计算机18中运行的其他程序的接口之用。***文件601-607用作为提供各种信息的数据库。他们提供有关对象性质的信息,例如,每一个对象是什么类别,每一个对象的名称是什么。***文件601-607提供有关对象的类别的信息,诸如每一类别对象与什么应用程序有关,什么图象代表某一特定类别的对象以及什么信息的表格(例如图2中所示的那些)能够由一特定类别的对象所处理。***文件601-607还包含有关母体与各子体对象之间连接的信息,这些信息包括母体和来自每一对象的一个母体的每一个连接的引用名的列表;子体和对每一对象的一个子体的每个连接的引用名;以及管理数据连接间的数据交换的附加信息。另外,***文件601-607包含通用的信息,例如:在该操作***中,对于所安装的每一类别,装有哪些文件,及当OMF100重新启动时,什么对象请求自动再启动。
在本发明的优选实施方案中,***文件601称为HPOMT.CAT,***文件602称为HPOMF.CLS,***文件603称为HPOMF.XRF,***文件604称为HPOMF.PRP,***文件605称为HPOMF.INS,***文件606称为HPOMF.SDF,***文件607称为HPOMFICO.NWE。现在对每个***文件加以说明。
***文件601,即HPOMF.CAT也称为SYSCAT。HPOMF.CAT是***中所有现有对象的一张目录表。在图73中,HPOMF.CAT被表示成是面向记录的。HPOMF.CAT具有多个文件记录。图73中,只作出了文件记录0到文件记录8,但HPOMF.CAT可以包含比图73中所示的多得多的文件记录。文件记录0是包含各种标记的一个标题,用于管理空文件记录的编目。一个标记是某个已知值,它(如果存在)表示文件没有错误。文件记录1到文件记录8及附加文件记录(图中未表示)或是定义一个现有的对象,或是空的。在本优选实施方案中,当需要更多的文件记录时,HPOMF.CAT能够动态的增长,但是不能够缩小。
文件记录1定义了一个称为全局母体的特定的对象。该全局母体有一个不同于其他对象的形式,并且可以看作为一个“伪”对象。图74表示的全局母体是通过连接260的全局对象250、通过连接261的全局对象251、通过连接262的全局对象252、通过连接263的全局对象253、通过连接264的全局对象254、和通过连接265的全局对象255的全局母体。全局对象250-255也在HPOMF.CAT中。全局对象250-255中的每一个可以是HPOMF.CAT中的一个或多个对象的母体。在HPOMF.CAT中的非全局对象的每一对象是全局对象的一个子系族。虽然图74中只示出6个全局对象,但在一个***中运行的全局对象的个数实际上取决于***的构成。利用从全局母体到一全局对象连接的引用名,***中的任何一个对象可以引入该全局对象。
正如从图73可以看到的,在HPOMF.CAT中的文件记录是连续编号的。这些号码用作辨认每个对象的标记。
在本发明的优选实施方案中,每个记录的长度是128个字节。
文件记录所采用的字段列于下表1中:
表1
1FirstFreeEntry  包含有HPOMF.CAT内的第一空记
录的记录号,或者如果没有空记录
时即为0。
FileId  包含以零终止的字符串“HPOMF.
CAT”,用作特征。
Version  包含文件格式种类号码,也用作特
征。
1MaxRecordNumber  包含HPOMF.CAT里曾经配置的最
高记录的号(这个最高记录可以是
或不是空的)
下面表2包含HPOMF.CAT中用于除文件记录0以外的文件记录字段:
表2
1FirstFreeEntry  如果这个记录定义一个对象,即为
“-1”,否则,这个记录就是空
的,并且这个字段是下一个空记录
的记录号码。或者如果没有更多的
空记录就是“0”。如果该记录是
空的,记忘中的其他字段就没有意
义。
TyPeInClass  规定这个对象的类别。这是
PHOMF.CAT中的记录号码,指
出对象所属的类别(见前对类别的
讨论)。
SysCatFlags  在由数20(十六进制)所屏蔽的
二进位置于该字段中时,指定这
个对象是否是全局的。在本优选实
施方案中,所有其他二进位的位置
必定为0,不加使用。
Properties  规定特性的号码,特性名称的长度
及对象特性在HPOMF.PRP中的
位置。见下面HPOMF.PRP的说
明中对这个字段结构的进一步定
义。
fastprops  某些对象特性,例如名称,因访问
频繁,它们直接存储在这个字段中
而不是间接地存在特性文件中。存
储在这个字段中的特性称为“快速
特性”。
***文件602,即HPOMF.CLS,也称为SYSCLASS。这个***文件是在***中被设置的所有类别的一个目录。它是面向记录的。号码为0的第一个记录是一个包含各种特征(看上述)的标题,被用来管理空记录的编目。所有的其他记录或是定义一个所设置的类别或者是空的。在本优选实施方案中HPOMF.CLS能够动态的增长,但不能缩小。
HPOMF.CLS中的每个文件记录的长度为32个字节。HPOMF.CLS文件记录0(标题)包含下表3中的字段。
表3
1FirstFreeEntry  包含HPOMF.CLS中第一个空记录
的号码,如果没有空记录就为0。
Filed  包含以零终止的字符串“HPOMF.
CLS”。
Version  包含文件格式类型号码。
1MaxRecordNumber  包含HPOMF.CLS里曾配置的最大
记录的号码。(这个最大记录可以
是或不是空的)。
下表4为HPOMF.CLS中由于涂文件记录以外的其他文件记录的文件记录字段:
1FirstFreeEntry  如果这个记录定义一个被设置的类
别,即为“-1”,不然这个记录
是空的,并且这个字段即是下一个
空记录的记录号码。如果没有更多
的空记录,这个字段是“0”。如
果该记录是空的那么在记录内所有
其他字段均没有意义。
ModuleFileName  规定与这个类别的对象有关的应用
程序的名称,作为一个以空终止的
字符串。
Properties  指明特性号码、特性名称的长度,
及在对象特性的HPOMF.PRP中的
地址。见下面HPOMF.PRP的说
明,对这一个字段结构的进一步定
义。
图75中示出HPOMF.CAT和HPOMF.CLS之间的关系。在HPOMF.CAT内每一个对象项目中,作为一个对象的标记记录号码,用作与该对象有关的海量存储器170中数据文件的一个标识符650。字段“TypeInClass”用作HPOMF.CLS中的类别项目的一个标识符651,以识别每个对象的类别。HPOMF.CLS中每个类别项目内,字段“ModuleFiledName”用作与该类别有关海量存储器170中应用程序文件的标识符652。
图76示出海量存储器170的部分结构。一个根目录包含指向HPNWDATA目录661和HPNWPROG目录668的指针。HPNW-PROG目录668是应用程序文件的存储位置,用箭头669表示。HPNWDATA包含许多HPOWFddd目录,以目录662、663、664、665和666表示。与对象有关的数据文件存储在HPOMFddd目录中。“HPOMFddd”中的“ddd”表示一个首项为0的十六进制三位数。每一个HPOMFddd目录均有一个不同的“ddd”十六进制数。“ddd”数指明哪一个HPOMFddd为特定对象存储数据文件。一个特定对象使用的数据文件被存储在“ddd”数等于该对象的标记且能被一整数(如54)所涂的HPOMFddd目录中。在每个HPOMFddd目录中,文件通过标记号码所存储,例如,数据文件名称具有××××××××.111的格式,其中“××××××××”是一个首位为0的十六进制8位标记,而“111”是被该应用程序所选择的引用文件。
***文件603,即HPOMF.XRF,也称为SySXREF。这个文件是现在***中的所有连接的一个目录。它是面向记录的,但没有标题记录。每一个记录文件或是空的,或是定义了一个现有的连接,或是被用作前一记录的溢出记录,以便指明附加的视图说明信息。包含视图说明的记录称为视图说明文件记录。视图说明文件记录只能被定义了一个现有连接的前一记录所识别;视图说明文件不能被一个视图说明文件记录内的内容所识别。每次HPOMF.XRF的大小要增加16K字节。新配置的HPOMF.XRF部分以0填满。空的或定义了连接的HPOMF.XRF里的文件记录具有下表5中的字段:
表5
ParentTag  包含这个连接的具体对象的标记
(HPOME.CAT记录号码),如果
这个字段是0,那么这个记录不定
义连接,而是空的。
ChildTag  包含这个连接的子体对象的标记。
如果在这个记录中的ParentTag
是0,并且这个字段也是0,那么,
在HPOMF.XRF中,在这个记录之
外没有记录定义连接。
RefName  包含已经指定给连接的母体的引用名
称。如果ParentTag或ChildTag
是0,那么这个字段没有意义。否则,
如果这个值最前面的三个二进剂位是
是110,那么文件中的下一个记录
就是一个视图说明。
HPOMF.XRF中作为视图说明文件记录的文件记录具有列在下表5A中如下字段。
表5A
DataId  包含子体所指定的值,识别自己的部
分,它通过该连接是可视的。
SnapShot  包含对象的标记(HPOMF.CAT记录
号码),该对象是视图快照,或者若
号码是0,视图就没有快照。对快照
的进一步讨论请看下文。
Misc  由下面所述的几个二进制位字段构成:
VS_NeWDATASET  如果子体已经告诉OMF新数
据可利用,但还没有通告母
体,即置位。十六进制数
8000  0000是表示哪些二进
制位用于这个二进位字段的一
个屏蔽。
VS_NEWDATAHNNOUNCED  如果子体已经告诉OMF向母
体通告新数据,但母体未激活
因而未被通知到,即置位。十
六进制数4000  0000是指明
哪些二进制位用于这个二进制
位字段的一个屏蔽。
VS_SNAPSHOTOLD  如果子体已经告诉OMF视图
快照是过时的,即置位。十六
进制数2000  0000是表示哪
些二进制位用于这个二进制位
字段的一个屏蔽。
VS_WANTMESSAGES  如果子体已经告诉OMF,它
需要处理快照过期时的视图消
息,即置位。十六进制数
1000  0000是表示哪些二进
制位用于这个二进制位字段的
屏蔽。
VS_TEXTDISKLOC  在HPOMF.PRP中的文件位
置,视图说明的32个字符的
正文数据ID被放在那里。如
里。如果子体没有定义正文数
据ID,那么它就包含零。文
件位置的低位的五位总是零,
所以就不存贮在Misc字段中。
十六进制数OFFF  FFFO是指
示哪些位被用于这一位段的屏
蔽。
VS_INITIALIZED  如果视图说明已经被初始化,
即置位。如果消除,在视图说
明中的所有信息是0,十六进
制数0000  0010是表示哪些
二进制位于这个二进制字段的
一个屏蔽。
VS_RESERVED  为进一步扩充而保留。十六进
制数0000  0008是表示哪些
二进制位用于这二进制字段的
屏蔽。
VS_VIEWCLASS  规定子体指派给视图的视图类
别。视图类别定义什么视图方
法对母体是可利用的。十六进
制数0000  00007是表示哪
些二进制位用于这个二进制字
段的一个屏蔽。
例如,图77中,对象671是一个文件夹,并有一个标记“6”。对象671是通过连接674连接的对象672的一个母体,并是通过连接675连接的对象673的对象的一个母体。对象672有一个标记“12”。连接674的引用名为“1”。对象673有一个标记“19”。连接675有一个引用名“7”。引用名由母体对象检选,并且对特定的母体对象必须是唯一的;然而其他的母体可以具有与之相同的引用名的连接,只要每一个引用名对每一个母体来说是唯一的就行。
图79示出HPOMF.XRF603的方框图。HPOMF.XRF包含母体和子体之间每个连接的项目。在HPOMF.XRF  603中,列731包含每个连接的母体的标记。列732包含每一连接子体的标记。列733包含每个连接的引用名。列733的头三个二进制位,在图79中表示为子列734,它指明或者存在有视图说明文件记录(“110”)或者不存在视图说明文件记录(“000”),或者其间的连接是一个从全局母体到全局对象之间的连接(“100”)。
正如可以看到的,项目735是描述图77中连接674的一个项目。那就是说,在项735的列731中,有母体标记“6”。在列732中有子体标记“12”,以及在列733中有引用名“1”。因为对象671是一个文件夹,没有视图,所以在子列734里的三个二进制位是“000”。
同样,项目736是一个描述图77中连接675的项目。那就是说,在项目736的列731中有母体标记“6”。在列732中有子体标记“19”,及列733中有引用名“7”。因为对象761是一个文件夹,没有视图,所以在子列734里的三个二进制位是“000”。
图78中,对象676是文档,并有一个标记“17”。对象676是通过连接679连接的对象677的母体,并且是通过连接680连接的对象678的母体。对象677具有标记“8”,连接679具有引用名“1”。对象678有一个标记“21”。连接6680有一个引用名“3”。
图79中,项目737描述图78中的连接679。那就是说,项目737的列731中有母体标记“17”。在列731中有子体标记“8”,并在列733中有引用名“1”。对象676是文档,并假定有一个与连接679有关的视图,子列734里的三个二进制位为“110”。项目738是一个视图说明记录。
同样,项目739描述图78所示的连接680。就是说,在项目379的列731中有母体标记“17”。在列732中有子体标记“21”及在列733中有引用名“3”。假定有一个与连接680有关的视图,则子列734里的三个二进制位为“110”,并且项目740是一个视图说明记录。
图80中,视图说明记录740被表示成包括有:一包括该视图的数据识别符的字段741,一指示是否有用于该视图快照的字段742,及一有关该视图的其他信息的字段743。该连接的子体对象使用数据识别号码用以决定通过该连接发送什么数据。
图37-43示出具有视图的一个连接的形成。如前面已经讨论的,在图37中“Paste  UP”(对象707)所用的窗口791通过对图象“Paste  UP”击键两次被打开。图38中,用光标781,由鼠标器20控制,已选择“Sample  Text”的正文部分790。以逆影象显示。表明“New  Wave  Offica  environment”的部分是部分790。
图39中,用光标781从下拉菜单792中选择“Share”选择项。一旦“Share”被选择,子体对象709(“Sample  Text”)便产生一个数据识别号码,该号码对子体对象709指定正文的部分790。子体对象709还使OMF100把一个到子体对象709的连接放到记录夹720上(子体对象709通过这里所列附录B中的指令与OMF100进行通信)。子体对象709还通知OMF100什么数据识别号码和子体709与记录夹720之间的新连接720有关。如果有一个与该连接有关的快照,子体709也将通知OMF100,是否有一个与该连接有关的快照。下面较完全地讨论快照。结果,OMF100将为记录夹720与子体对象709之间的一个连接在HPOMF.XRF603中产生一个项目。该连接的视图说明记录将包括由子体709传给OMF100的数据识别号码。
图40中,用光标781选择了窗口791中的区域793。图41中,用光标781从下拉菜单794中选择了“paste”选择项。这时,母体对象707“Paste  UP”向OMF100请求一记录夹720上的使之成为母体的连接。记录夹720与子体709之间的视图说明记录为母体707和子体709之间的连接而复制。图43中,“Sample  Text”(对象709)被表示为通过连接729成为“Paste  UP”(对象707)的一个子体。
图42中,显示的正文790是被显示在“Paste  Up”窗口791中。在实行这个的过程中,母体对象707向OMF100作一次呼叫,请求发送消息到由连接729的引用名所识别的对象。这个消息请求子体对象709把从这个连接进入母体对象707指定的位置的数据显示出来。OMF100从母体707取出该消息,加进从连接729的视图说明记录中得到的数据识别号码,并把该消息传送给子体709。子体709在指定的区域里显示该数据,在这里是区域793。从母体707发送到OMF100到子体709的该消息的名称是“DISPLAY_VIEW”,在可列的附录B中有进一步的描述。
另一消息“PRINT_SLAVE”也在附录中加以描述,当希望由打印机打印数据而不是在终端荧光屏上显示数据时,可以使用这个消息。
此外,母体707可以把消息“GET_SIZE”发送到子体对象709。在“GET-SIZE”消息中,母体对象707为连接729认定一个引用名,并且指明显示坐标。OMF100从母体707取出消息GET-SIZE,加上从连接729的视图说明记录中得到的数据识别号码,再把该消息传送给子体709。子体709给母体707发回被指定的区域的位置的大小,该指定区域是子体709用于显示数据的。当子体709无法恰当安排数据适应母体707规定的区域时,这就可以使母体707修改为显示从子体709来的数据而保留的区域。
当从一个子体对象来的数据正在被一个母体对象显示,并且子体对象改变被显示的数据时,该子体对象对OMF100发出在此数据对象中已有一个变化的通知。例如,如前所述,在图47中,现在显示在窗口791的区域795中的是从“Star”(对象706)来的数据。并且,正如在图48中可以看到的,“Star”(对象706)通过连接726而成为“Paste  UP”(对象707)的一个子体。因为数据正在从子体对象706传送到母体对象707,所以连接726是一个包括视图说明的数据。
图49中,示出了改变子体对象706中的数据的方法。用户把光标781置于窗口791的区域795之上,并敲击两次鼠标器20上的按扭,其结果是打开并在窗口790中显示“Star”(对象706)。用光标781选择菜单窗口797中的“Ellipse”选择项。就导致“Star”(对象706)里的数据从星形变到椭园形。如图51所示,该结果既改变了显示在窗口796中的数据又改变了显示在窗口791的区域795中的数据。
子体对象706通过对OMF100作一次呼叫来完成这个变化,指出与连接726有关的数据识别号码有关的数据已改化。OMF100检查使用该数据识别号码的所有连接。如果有一个连接的母体对象不是激活的,OMF100就给在HPOMF.XRF中的那个连接的VS_NEWDATANNOUNCE位置位。当母体对象是激活的,那么该母体对象就请求新的数据。
如果母体对象是激活的,OMF100就给该母体对象发送一个新数据是可以利用的消息。OMF100将对该母体对象指出存在附加数据的连接的引用名称。如果它需要这个显示的新数据,母体对象就给子体对象发送一个消息。在这种情况下,母体对象707是激活的,并已经请求了新数据以便在窗口791的区域795中显示。对视图说明的进一步描述可以在附录B、C和D中找到。
本发明的优点是母体对象707能够通过OMF100与子体对象706通信,而无需母体对象707或子体对象706知道各自的身份或任何其他相互间的细节。母体对象仅仅使用连接的引用名称来识别连接。子体对象只使用连接的数据识别号码来识别连接。OMF100进行全部的翻译工作以及对所涉及的连接和对象进行的识别。
***文件604,HPOMF.PRP,也称为SYSPROP。HPOMF.PRP包含除了包括在HPOMF.CAT中的快速对象特性以外的所有对象和类别特性。在***文件601(HPOMF.CAT)及***文件602(HPOMF.CLS)中的每一记录都有一个特性字段,如前所述。每个特性字段包含如下表6中说明的字段;
表6
DirDiskLoc  包含特性表的HPOMF.PRP里的位置
(字节位移)。
nProps  包含特性表中的特性号码。这是下述目
录项数阵列中的项目的号码。
PoolSize  包含特性表中特性的所有名称的组合长
度,包括每一个名称的零终止字节。
这是下述目录名称区的大小。
对于每一个对象和每一种类别,在HPOMF.PRP文件中的DirDiskLoc位置就是那个对象或那个类别的特性目录。该目录具有两个主要部分:项目阵列,以及后面跟着名称区。在特性表中,项目阵列对每一种特性都有一个项目。每一个项目有如下表7的字段:
表7
ValueLen  规定有关特性的字节长度。这可以
是0。
ValueDiskLoc  包含在有关特性值的HPOMF.
PRP中的位置。如果Value-
Len是零,这个字段也是零,并
且没有值存储在任何地方。
CacheOffset  这个字段是在运行时使用,而在文
件中没有意义。
紧跟着此项目阵列后面的是名称区。HPOMF.PRP的这个部分包含特性表中特性的0终止名称,并按项目阵列相同的次序排列。特性可以包括如题目、用户注释、建立的日期和时间、建立该对象的用户等内容。有关特性更多信息是附录D。
HPOMF.PRP根据需要动态地增长。在HPOMF.PRP的开始处有一个控制HPOMF.PRP的头1024页的配置的128字节的位图(bitmap)。每一页为32个字节长。这些页紧跟着该位图。位图是一个字的阵列,它首先使用每个字的最有效位。因此位图的第一个字的二进制位15到0分别控制文件的0页到15页的配置。
当在前面的1024页的存储不够时,就在1023页之后给文件加进第二个位图。这个位图控制着紧跟第二个位图的第1024页到第2047页的配置。在需要时,以同样的方法加进附加位图和页面。
每一个目录和特性值均作为文件的单一数据块加以存储,即作为全部配置在同一位图中的连续页面。这就产生目录或值均不得超过32K字节(1024×32)长的限制。
***文件605,HPOMF.INS,也称之为SYSINISTL。HPHPOMF.INS包含一个文件表,在设置每个类别时,此表即被复制到该***。这个信息可以被使用,以便在当该类别被取消时删除这些文件。
HPOMF.INS的最前面是用作有效/变型识别符的双字值。在本优选实施方案中,这个双字值必须是0101ABCD(十六进制)才有效。在表8中,这个值按所示方式存储,这是由于本优选实施方案中所采用的特定处理器即Intel公司的80286微处理机中的存储规程而决定的。
紧跟着这双字的是一系列可变长度记录。每一被设置的类别均有一个记录。每一个记录的第一个字是该记录其它部分的字节长度。后面跟着是被设置类别的零终止类别名称。然后跟着复制到OMF目录的文件的文件名,它们每一个均由零字节终止,并由给示文件名称长度的一个字节先导,包括长度字节和零结束符。如果文件名称用一特别的符号“*”开头,那么就认为该文件是放置在HPWPROG目录中。如果文件名称用特别符号“+”开头,那么就认为该文件被放置在HPNWDATA目录中。
例如,假定设置了两种类别:类别“AB”和类别“CDE”。类别“AB”导致安装文件:“Z”装入到HPNWPROG目录688,“YY”装入到HPNWDATA目录。类别“CDE”导致1个文件“×××”装入到HPNWPROG目录668。在这情况下,表8所示该例子的HPOMF.INS的内容:
表8
位移  内容  注释
0  CD  AB  01  01  文件标题/种类检查
4  OC  00  AB记录的长度(十进制数12)
6  41  42  00  “AB”+Null
9 04 (长度字节“Z”+Null)的长度
A 2A 5A 00 “Z”+Null
D  05  (长度字节+“+YY”+Null)的长度
E  2B  59  59  00  “+YY”+Null
12  OA  00  CDE记录的长度(10,十进制)
14  43  44  45  00  “CDE”+Null
18 06 (长度字节“×××”+Null)的长度
19 2A 58 58 58 00 “×××”+Null”
***文件606,即HPOMF.SDF,也称为“停止文件”。当***已经明显的停止时HPOMF.SDF才存在。它在***启动时被删除,而在***停止时被创生。启动时,如果这个文件不见了,OMF就认为前一对话是非正常终止的,因而通过它的事故恢复程序尽可能地确认和修正该***文件。这些***文件可以是无效的但能予告事故的状态。这些错误是无需用户干予就能被纠正检查到的,某些其他种类的文件一致性的错误,实际上不可能是出自“原始的”***事故。通常这些错误是不可能纠正的,因而OMF不允许***发生这种情况。
如果HPOMF.SDF出现,它将包含一个对象表。当***处于正常停止时,每一个在这时是激活的对象能请求OMF在***再启动时重新启动他们。那么,对象表也就成为当***重新启动时要求再启动对象的标记表。
HPOMF.SDF中的第一个字是标志字。如果这个字非零,即使HPOMF.SDF存在,OMF也将执行它的事故矫正码。如果在结束的对话期里发生了某些严重的错误,那么当产生此文件时,正常的停止即将这个标志置位。
在第一个字之后,文件的其余部分是三字节记录的序列。每个记录的头两个字节包含欲重新存储的对象的标记。最低位字节在前。第二个字节在此优选实施方案中没有使用,是0。
例如,假如***是在上一对话期中正常终止的,而且分别具有标记2和7的对象已经请求再启动,则HPOMF.SDF的内容就将如下表9中那样:
表9
位移  内容  注释
0  00  00  表示不需要事故矫正
2  02  00  需再启动的第一个对象的标记。
4  00  未应用并保留
5  07  00  需再启动的第二个对象的标记。
7  00  未利用并保留
***文件7,即HPOMFICO.NWE,是一个Micro  soft  Window,动态库存可执行的文件,它包含一虚项目点,没有数据。MicroVsoft  Windows是一个Microsoft公司(地址:16011NE,36th  Way,Redmond,WA  98073-9717)提供的程序。HPOMFICO.NWE也包含作为“资源”(resources)的每一个所设置类别的图象。在运行期间,OMF直接改变HPOMFICO.NWE,并装载或不装载以便从它那里得到该图像资源。HPOMFICO.NWE的格式由Microsoft公司所提供的Microsoft  Windows文件定义。
带有视图的正常工作(见前述视图的讨论)导致调用一个子体的应用程序。如果涉及到大的应用程序,这可能导致大量不必要的开销。使用快照可免除这种开销。
快照是一个对象,它采用被称做动态存取程序库(或DAL)的独立程序库中的可执行程序码。而不用整个应用程序的可执行程序码。只有与一快照相关联的数据文件包含有欲从一子体对象送往一母体对象的数据。封装此数据文件的代码虽然被叫做一个动态程序库,但仍然存贮在目录HPOMFPROG(目录668中)。
例如,图81表示母体对象501通过连接504连接到子体对象502。与连接504相关的是快照503。一旦子体对象指定了连接504的视图说明记录中的快照503,快照503该能够将子体对象502中的数据提供给母体501,而无需引用与子体对象502相关的应用程序。
如图82中所示,当不存在有快照时,子体对象502必定是激活的,以便将视图数据502发送到母体对象501,从而使母体对象501在显示窗口521中显示视图数据522。但在图83中则表明,快照503将视图数据522提供给母体对象501而无需子体502是激活的。实现快照的更详细的细节列于附录B、C和D中。
一个原先并非编写来协同OMF100使用的程序可以被加以封装而承袭许多被设计来协同OMF100层用的程序的特点。在HPNewWave  Environment第6章:程序员指南(在这里作为附录D)中,给出完成设计封装程序的细节。附录E中列出了程序的一般封装所用的程序表。在附录F中,给出了为将一程序封装进入NewWave  Environment而必须产生的文件的一些例子。
利用图84-145来说明,被封装的应用程序的特点。
图84是一个方框图,说明如何封装一个应用程序846,以便与OMF100配合使用。由前面的讨论及通过图84的说明可以明白,为NewWave环境所写的典型应用程序842能与用户483及OMF100直接对话。应用程序842的数据文件是OMF数据文件840的一部分。当应用程序842中的任何一个希望访问数据文件时,他们通过OMF100进行。
根据本发明的优选实施方案,不必修改所封装的应用程序846就能将其统一到NewWave  Environment中。经封装的应用程序846可以继续直接处理他自己的用户数据文件849。一个封装外壳845是OMF100和被封装应用程序846之间的接口。被封装的应用程序不知道封装外壳845的存在,所以所封装的应用程序846不给封装外壳845发送数据。然而封装外壳845确实与被封装的应用程序846和用户数据文件849进行相互对话。
一个外壳过滤器844的作用是在用户843与被封装的应用程序846之间监控程序。对用户843和所封装应用程序846之间大部分的通信,外壳过滤器仅仅进行传递。但在恰当时,外壳过滤器可以截取用户843与被封装的应用程序846之间的通信。一旦通通信被截取,那么外壳过滤器例如就可以把此通信传给封装外壳845以作进一步处理。
从属性上说,所写的封装外壳845要处理许多不同类型的应用程序。然而,还存在一些封装外壳845需要了解的有关每个被封装应用程序的信息。所以,每一个被封装应用程序都具有与之有关的结构特性,封装外壳845访问这些结构特性来取得封装外壳需要知道的那个被封装应用程序的信息。对被封装应用程序846来说,封装装外壳845对存储在结构特性847中的信息进行存取。
此外,利用外壳过滤器844和封装外壳845,一些附加特性可以被增加到一个被封装的应用程序中。这些专门加到一个特定应用程序的附加特性的定义可以存储在由封装外壳845访问的一个独立文件中。例如专用于被封装应用程序846特性的定义,被存储在一菜单/宏定义文件848中。
图84A示出根据本发明的优选实施方案,一个文件结构是如何被实现的例子。一个根目录850有多个子目录。一个子目录851包含一系列的子目录:例如,子目录855、856和857。每一个子目录均包含OMF对象数据文件。在子目录851中的文件是在NewWave数据域中的文件,那就是说,这些文件通过OMF100访问的。子目录852包含一系列的子目录:例如,子目录858、859、860及861。每一个子目录包含各种不同的被封装应用程序所用的封装数据文件。子目录852还包含第二系列子目录,例如,子目录865、866及867,这些子目录的每一个包含有封装转换用的暂时数据文件。子目录853包括一些文件,这些包括建立及维护NewWave环境的可执行程序码。子目录854、862、863及864包含那些并非设计在NewWave环境中运行的应用程序的可执行码。
在图84B中,示出了MS-DOS***中所用文件的文件规范结构。文件规定包括有一驱动标识874,一索引通路871,一文件根名称872,和一扩展区873。
在下面讨论中,结合描绘监视器14上的图形,用计算机对话来说明具有被封装的应用程序的封装外壳845的功能度。
在图85中,NewWave  Office的窗口中有许多图象,其中一些代表被封装的应用程序的对象。在所示的对象中,“Advance-Link”、“Info、Access”、“Terminal”、“Calendar”和“Calculator”均为被封装的应用程序。
以用户的观点来看,可以类似于产生原始对象的过程来产生一新的被封装对象。在图85A中,用光标781由下拉菜单782中选取“Create  a  New……”。
在此选择之后,出现了对话框779,如图86所示。在对话框779中显示的五个对象:“AdvanceWrite”、“MS_Word”、“WordPerfect”、“MS_Write”及“MS_Paint”代表了封装的应用程序。图象“MS_Write”为增辉显示,因而是被选择的。现在光标781被用来选取标有“OK”的区域。
一旦选择了这个“OK”区域,对话框1101出现,如图87所示。“Ms_Write”的数据文件的一个缺席目录显示在区域1104中。此缺席目录是“C:\HPNWDOS\MSWRITE”。它相应于图84A中的子目录861。此缺席目录中的现有应用程序文件列举于框1102中。用键盘19可将一个文件的新名称写入区域1106中。图88中,“Sample”名称已被键入区域1106中。在光标781选择了标有“OK”的区域之后,一个对象“Sample”显示于图89的“NewWave  Office”窗口中,如光标781所指。数据文件“SAMPLE.WRI”被生成并被置于目录“C:\HPNWDOS\MSWRITE”(子目录861)中。
虽然用户在生成一个引用被封装的程序的对象中看不到太多区别,但OMF100和封装外壳845都要对标准过程作各种各样的调整。在下面对图143流程图的说明中,将描述生成一个对象时OMF100和封装外壳845经历的处理过程。
在光标781位于图象“SAMPLE”中的字“SAMPLE”上时,轻击鼠标器20上的按扭,则显示出数据文件“SAMPLE.WRI”的目录单元,如图90所示。对象名称“SAMPLE”可能不改变。在本优选实施方案中,变更这一名称唯一办法是复制该对象,因此,在目录“C:\HPWDOS\MSWRITE”中构成一新数据文件。再击一次鼠标器20的按扭,就使该目录单元不再出现,如图91所示。如图91所示,当光标781置于“SAMPLE”的图象上,并轻击鼠标器20的按键两次,就可以打开“SAMPLE”的应用程序。
下面在对图141中流程图的说明中,进一步描述了在打开被封装的应用程序的对象之前,OMF100和封装外壳845所进行的处理。OMF100一旦确定它可以打开被封装的应用程序,OMF100即发送一消息给封装外壳845来打开与所选的被封装应用程序相关的对象。封装外壳845访问结构特性847以取得启动已选择被封装应用程序的指令串和参数(以及任选的一键入宏功能)。封装外壳845监控该被封装程序的初始化过程,并使外壳过程器844去控制用户843和被封装应用程序846之间的相互对话。该键入宏功能通过外壳过滤器844馈送给此被封装的应用程序。
对于那些已经写有菜单/宏指令的被封装的应用程序来说,封装外壳845由菜单/宏定义文件848中获得有关菜单/宏功能的信息。这一信息被保存在计算机18的存贮器中,以便使外壳过滤器844能响应用户调用菜单/宏功能的任一动作。例如,它涉及用外壳过滤器844进行截取的特定的键入信号序列。当这一键入信号序列得到确认时,外壳过滤器844即把菜单/宏定义文件848所指定的菜单显示出来。这时,外壳过滤器844截取从键盘19或鼠标器20来的所有用户命令,直到用户843选择了一个菜单命令或撤消了对菜单的访问。当选择了一个菜单命令时,外壳过滤器844就将一存贮在菜单/宏定义文件848中的、与被选的菜单命令相关的键入宏功能发送到被封装程序846。
图92中,示出一为应用程序“Write”打开的窗口1103。“Write”是Miorosoft公司提供的一种字处理程序,被设计成与Microsoft′s  Windows程序配合运行。此应用程序名出现在窗口1103的标题部分:“Write”。利用键盘19,可如图93所示输入数据。如图94中所示,用光标781选取下拉菜单1105中的“Exit”,启动Exit处理过程。外壳过滤器844截取这一要求终端的消息。如图95中所示,作为该输出过程的一个部分,“Write”产生对话框1107,询问用户是否希望保留对该文件所作的改变。如果回答是,就对目录“C:\HPNWDOS\MSWRITE”中的数据文件“SAMPLE.WRI”作这样的改变。
外壳过滤器844通知封装外壳845,用户正在结束他与被封装的应用程序849的对话。封装外壳845即通报OMF100,被封装的应用程序正在关闭。封装外壳845终止外壳过滤器844。根据结构特性847中提供的信息,封装外壳845自动执行如下讨论的文件登记和文件转换过程。然后封装外壳845回到对OMF100的控制。
当在结构特性847中指定后,封装外壳845自动完成如下的文件登记。封装外壳845记录下其启动被封装应用程序846的***时间。当被封装应用程序846终结时,封装外壳845寻找缺席引用文件区的被封装的应用程序(即与该被封装应用程序相对应的子目录852的子目录),并将每一文件的时间标记与所记录的该被封装应用程序的启动时间相比较。如果一个新文件被定位并且此文件还未为一对象所引用,则封装外壳845就自动生成一个与封装外壳845类别相同的新对象。此新对象引用此新文件和封装外壳845。该新对象的题目被指定到此新文件的文件名称。对于所有被找到的新文件均要进行这一处理,这就使得用户可在封装程序运行期间产生新的文件。在应用程序关闭时,即显示出代表刚产生的文件的新图象。
此外,如果结构特性847已经指定的话,则在终结时,就从子目录852中代表其他被封装类别的另外的子目录中,寻找出带有比所记录的该封装应用程序的启动时间滞后的时间标记的那些文件。然后封装外壳845即可为这些文件产生合适类别的对象。在此应用程序关闭后,这些新文件亦作为新图象出现。
在图96中,“SAMPLE”已经关闭。
对于包含被封装应用程序的对象,用户可用管理普通对象那样的方式加以管理。例如,在图97中,一个新的标名为“Important  Docs”的文件夹已经被产生并打开。在图97和98中,光标781将对象“SAMPLE”移至为文件夹“Important  Docs”打开的窗口1107。图99中,对象“SAMPLE”处于窗口1107之中。
如图100所示,将光标781置于名称“SAMPLE”上,并轻击鼠标器20上的按扭,导致出现整个名称“C:\HPNWDOS\MSWRITE\SAMPLE”。数据文件“SAMPLE.WRI”在目录“C:\HPNWDOS\MSWRITE”中的实际位置并不改变,尽管对象“SAMPLE”已经从“NewWave  Office”移至文件夹“Important  Docs”。
同样,用户可以用完成正常对象的“Cut”、“Paste”、“Share”及“Copy”指令同样的方式来完成被封装应用程序的“Cut”、“Paste”、“Share”和“Copy”指令。图101中,已选择对象“SAMPLE”。光标781由下拉菜单1109中选择指令“Cut”。结果,如图102可见,对象“SAMPLE”被从文件夹“Important  Docs”中“删去”,因而就不再出现于窗口1107中。图102中,光标781还从下拉菜单783中选择了命令“Paste”。结果如图103所示,对象“SAMPLE”从文件夹“Important  Docs”移到“NewWave  Office”。再次将光标置于名称“SAMPLE”上,并轻击鼠标器20上的按扭,结果出现全名“C:\HPNWDOS\MSWRITE\SAMPLE”。数据文件“SAMPLE.WRI”在目录“C:\HPNWDOS\MSWRITE中的实际位置还是不变。
在图104中,对象“SAMPLE”表示为增辉的,因而是被选择。用光标781选择下拉菜单783中的命令“Share”。图105中,选择了下拉菜单1109中的命令“Paste”。其结果(示于图106)是对象“SAMPLE”被共享,在窗口“New-Wave  Office”和窗口1107中都出现。
图107中,“NewWave Office”中的对象“SAMPLE”被增辉显示因而被选择。用光标781选择下拉菜单783中的命令“Copy”。图108中,用光标781选择下拉菜单783中的命令“Paste”。结果如图109表示,在“NewWave Office”中出现了“Copy of:SAMPLE”。此时,对象“Copy of:SAMPLE”的所有文件均被作为原始对象存贮在子目录851的多个子目录中的一个之中。没有新文件放置在子目录851中,即,子目录“C8\HPNWDOS\MSWRITE”中。
当把光标781置于“Copy  of:SAMPLE”上并两次轻击鼠标器20上的按扭而把对象“Copy  of:SAMPLE”打开时,OMF100调用封装外壳845。封装外壳845检查是否有一“被复制的对象”标志被置位。如果此被复制对象标志被置位,这就是向OMF指出:用户试图安打开一“被复制的对象”,这个对象引用一已复制的被封装应用程序的数据,而且对象的数据文件还未被存放进子目录851的一个子目录中,也未被转移到该被封装应用程序能加以利用的子目录852中的一个子目录中。在这种情况下,因为用户企图打开一“被复制的对象”,所以封装外壳845就使对话框1101出现敦促用户给一个新的名称,如图111所示。由图88与图111的对比中可以看出,文件SAMPLE.WRI已加到框1102之中。这发生在对象“SAMPLE”产生的时候。如图112所看到的,用户已通过键盘为对象“Copy  of:SAMPLE”输入了新名称“MYDOC2”。在用光标781选择了图112中的“OK”区域之后:封装外壳845将数据文件由其在子目录851的一个子目录中的存贮地点(在此它正式地驻存在OMF数据文件存贮区内)转移到子目录861中的存放地点中。然后,封装外壳845启动应用程序“Write”并给予“Write”一个文件名“MYDOC2”。“Write”打开“MYDOC2”。“MYDOC2”的内容是对象“SAMPLE”数据的复制,可在图113的窗口1113中看到。当对象“MYDOC2”关闭时,“NewWave  Office”中可看到“MYDOC2”的图象,如图114中光标781所指。
如图115所示,将光标781置于名称“MYDOC2”之上,并敲击鼠标器20上的一个按扭,导致全名“C:\HPNWDOS  MSWRITE\MYDOC2”出现。数据文件“MYDOC2”的位置在目录“C:\HPNWDOS\MSWRITE”中。
如图116所示,复制“MYDOC2”的简化方法是把光标781置于“MYDOC2”之上,在按下鼠标器20上的一个按扭把光标781引到另一个位置的同时,按下键盘上的“Ctrl”键并保持之。在这个操作期间,“MYDOC2”的图象保持增强的黑色,而不是如“移动”或“打开”时的灰色。其结果(如图117所示)是在“New-Wave  Offica”上显示“Copy  of:MYDOC2”。
图118中,已经选择了对象“MYDOC2”及“Copy  of:MYDOC2”。这些项目可以通过在下拉菜单783中选择指令“Throw  Away”从***中移出。
图119中,用光标781选择下拉菜单1117中的指令“Destroy  Allitems”。如图120所示,其结果为对象“MYDOC2”及“Copy  of:MYDOC2”的删除。在“MYDOC2”的情况下,封装外壳删除用户文件区域中的文件。
图121及122包含一个说明封装外壳845在现行应用程序关闭后所采取的步骤的流程图。封装外壳845的执行的程序(即流程图所描述的)在现行应用程序的关闭时被输入,如步骤950所示。
在步骤951中,一个文件HPOMF.DOS被访问。HPOMF.DOS是一个被封装外壳845所访问及保持的文件,用以跟踪MS-DOS文件。它提供将OMF对象映射到被封装文件所必要的信息。在对图144及145的讨论中进一步说明了HPOMF.DOS。使用HPOMF.DOS封装外壳845获得特性“PROP-ENCAPDATADIR”特性“PROP-ENCAPDATADIR”是一个指示缺席目录的类别特性,该目录里放置有属于该类别的特定应用程序的DOS文件。步骤952开始一个循环,在此循环中,检查“PROP-ENCAPDA-TADIR”所指示的缺席目录中的每一个文件。
所述循环的第一次运行,于步骤953和步骤954中执行,此时检查缺席目录中的一个文件的时间/日期标记。如果文件的时间日期标记比应用程序被打开的时间/日期标记滞后,那么就认为该文件或是新的或是被修改了。如果该文件是新的或修改了,在步骤955中,就获得文件名称的根(看图84B)。缺席目录中与该文件具有相同名称的所有文件认为是该文件的文件组的一部分。
在步骤956中,使用文件HPOMF.DOS确定这个文件是否连接到一个对象。如果不是,则在步骤957中产生现行应用程序类别的一个新对象,并连接到该文件的文件组。在步骤958中,对该文件组将一个新条目加到HPOMF.DOS。(看图145)。
如果文件已经连接到一个对象,在步骤959中,确定对象是不是激活的。如果该文件是激活的,在步骤960中,这个对象就送出一个表明该文件已经变化的信息。
一旦以步骤952开始的循环完成,现行层用程序的类别特性“PROP-EXPORTEDENCAP”即在步骤961中被检查。如果对于现行应用程序,特性“PROP-EXPORTEDENCAP”存在,它就包含一个被封装应用程序的表而不是该现行应用程序的类别的表。列出这些应用程序的目的是对由每个封装应用程序存储DOS文件的缺席目录加以检查。
步骤962开始一个循环,对列进“PROP-EXPORTED-ENCAP”中每个被封装应用程序的缺席目录进行检查。该循环的第一次操作在步骤963执行,访问HPOMF.DOS文件以获得对每一个被封装应用程序的缺席目录的识别。它包括在该被封装应用程序的类别特性“PROP-ENCAPDATADIR”中。
一旦对一个特定的被封装应用程序获得类别特性“PROP-ENCAPDATADIR”,另一个循环就从步骤964开始进入。在这个循环中,为此特定被封装应用程序的“PROP-ENCAPDATADIR”指定的缺席目录中的每一个文件将受到检查。
此循环的最先操作在步骤965和966中执行,对缺席目录里的一个文件的时间/日期标记进行检查。如果该文件的时间日期标记比被打开的应用程席时间/日期标记滞后,就认为该文件是新的或是修改过的。
如果该文件是新的或是修改过的,在步骤967中,得到该文件名称的根(看图84B)。缺席目录里的所有与该文件名称相同的文件均被看作是该文件的文件组的一部分。在步骤968中用文件HPOMF.DOS确定该文件是否连接到一个对象。如果没有,则在步骤969中,产生现行应用程序类别的一个新对象,并连接到该文件的文件组。在步骤970中,为此文件组将一个新条目加到HPOMF.DOS(看图145)。
如果文件已经连接到一个对象,在步骤971中,确定该对象是不是激活的。如果该文件是激活的,在步骤972中,向该对象发送一个表示该文件已经变化的信息。
一旦从步骤962开始的循环完成,在步骤974中,对类别特性“PROP-EXPORTEDNW”进行检查。如果特性“PROP-EXPORTEDNW”对现行的应用程序存在,它即包含真NewWave应用程序的类别表,这个类别表将现行应用程序产生的文件转变成能由NewWave应用程序使用的文件。
步骤977开始一个循环,在这循环中,检查列在“PROP-EXPORTEDNW”中的每一个NewWave应用程序的一个变更目录。在步骤977中执行的此循环的第一次操作中,访问HPOMF.DOS文件以获得现行转换目录中的文件目录。
一旦为一特定的NewWave应用程序获得一个变换目录的文件表,就在步骤978开始另一循环。在这一循环中,对该转换目录中的每一文件进行检查。
此循环的第一次操作在步骤979和步骤980中完成,检查该转变目录中一个文件的时间/日期标记。如文件的时间日期标记迟于应用程序打开的时间/日期标记,就认为该文件是新的或是修改过的。
如果文件是新的或是修改过的,在步骤981中,就产生了一个引用该文件的新对象,属NewWave应用程序类别。步骤982中,封装外壳845激活了新产生的对象,并给该对象发送一个带有该文件名称的“Convert”信息。
步骤983中,封装外壳845检查转换是否成功。如果转换不成功,步骤984中,封装外壳就对用户显示一个带有暗示性的警告消息,即未转换的文件依然存在于转换目录中。如果转换成功,在步骤985中,封装外壳845从转换目录中删除该文件。
一旦所有的转换均完成了,就在步骤975中关闭封装外壳845。下面的讨论指出,上述的一个应用程序的关闭是如何显示给用户的。
在一个应用程序中可以产生一个文件的复制件。图123中,对象“SALPLE”已被打开,而应用程序“Write”正在运行,在窗口1103中显示文件“C:\HPNWDOS\MSWRITE\SAMPLE.WRI”中的数据。用光标781,从下拉菜单1105中去选择指令“Save  AS”。图124中,缺席目录中一个文件名称被键入对话框1121的区域1120中。在用光标781选择了标有“OK”的区域以后,一个新文件就制成了。然而,这个文件没有一个相关的对象,因为OMF100没有监控此新文件的产生。所以,在图125中,不出现新对象。用光标781从下拉菜单1105中选择指令“Exit”以后,窗口1103被关闭。如上所述,终止时,封装外壳845为被封装应用程序搜寻缺席引用文件区域(这种情况是子目录861)并将每一文件的时间标记与被记录的被封装应用程序启动时间相比较。如果找到一个新文件,而且这个文件还没有被一个对象所引用,封装外壳845就自动产生一个与封装外壳845类别相同的新对象。在这种情况下找到对象“NEWDOC”(所产生的一个对象),并且有着名称“NEWDOC”的一张图像显示在“NewWave  Office”上,如图126,由光标781所指。
图127中,对象“SAMPLE”已在窗口1103中打开。在保存此文件的过程中检查窗口1121中的一个框1122。这就使该文件以MS  Word格式保存下来。正如在区域1120中所看到,该文件是被保存在目录“C:\HPNWDOS\MSWORD”而不是“C:\HPNWDOS\MSWRITE”中。如上所述,如果结构特性847已经指明,那么在结束时,由子目录852内代表其他被封装类别的子目录中可以寻找其时间标记迟于该封装应用程序的所记录的启动时间的文件。然后封装外壳845即可为这些文件产生适当类别的对象。代表这些新文件的对象在该应用程序被关闭时即具有与之相关的新图象。
在现在的情况下,对目录“C:\HPNWDOS\MSWORD”(子目录860)和“C:\HPNWDOS\MSWRITE”(子目录861)进行搜索,并找到在目录“C:\HPNWDOS\MS_WORD”中SAMPLE的一份新复制件。产生了“MSWORD”类别的一个新对象,并在“NewWave  Office”的窗口中显示出名为“SAMPLE”的图像,如图128中光标781所指。该图象的轮廓表明:新对象“SAMPLE”是与“MSWord”的对象类别有关的而不是与“MSWrite”有关的。
图129中,用光标781选择下拉菜单782中的指令“Create a New”。图130中,把名称“DEMODOC2”键入到窗口1112中的区域1124中,图象“AdvanceWrite”已增辉。如图131所示,其结果是产生了一个对象“DEMODOCl”如光标781所指。图132中,示出了在目录C“C:\HPNWDOS\ADVWrite”中出现的“DEMODOCl”。使光标781指向图象“DEMODOCl”并敲击两次鼠标器20上的一个按扭,如图133所择,就导致图133中“AdvanceWrite”的打开。
图134示出应用程序“AdvanceWrite”。因为“AdvanceWrite”不是一个为在“Windows”环境下工作所编写的程序,所以“AdvanceWrite”占据了整个荧光屏。图135中,使用键盘,已把正文加到荧光屏上,如图134所示。
图136中,压下键盘19上的“ALT”键,启动菜单/宏设备。在辨明这个键入信号之后,外壳过滤器844显示一个Title带128和菜单带126。用光标781选择下拉菜单1124中的指令“Convert  to  NewWave  Document”。在这一选择之后,外壳过滤器844给应用程序“AdvanceWrite”发送相关的键入宏功能信号。这一键入宏功能命令“AdVancdWrite”以在一专用转换子目录中作转换所要求的格式保存现行文件,然后命令“AdvanceWrite”退出。外壳过滤器844通知封装外壳845应用程序“AdvanceWrite”结束。根据结构特性,封装外壳845寻找任一新文件的转换子目录。封装外壳845产生一个转换对象它所引用的转换应用程序能执行转换。此转换应用程序在结构特性847中加以识别。一旦产生了转换对象,封装外壳845即给此转换对象发送欲进行转换文件的标记和一个执行转换的命令。然后,已经转换的数据文件被存储作为NewWave对象的部分,并删除转换子目录中的中间转换文件。
其结果如图137所示,是一份“DEMODOCl”的复制件,如光标781所指。“DEMODOCl”是一个NewWave  DOCu-ment,因此,可以象***中的任何其他对象一样加以处理。对“DEMODOCl”的复制件的标题触击一下,表明没有列出任何目录。如图139所示,对象的名称已变成由光标781所指的“NW  Demo  DOCument”。因为该对象是一个NewWave  DOCument,所以作这一名称变更是可行的。图140中,已经闭合了对象“NW  Demo  DOCument”的名称带。
附录G中,给出了实现“Windowlike”的指令的编码的举例,此指令是被加到通常不是在“Windows”环境中工作的程序上的。
图141是表示按照本发明的优选实施方案,当打开一个对象时,OMF100和封装外壳845所经历过程的流程图。
步骤1140中,一个用户企图打开一个对象。步骤1144中,封装外壳845检查该对象是否是DOS引用模式。如果是,在步骤1142中就激活该文件。如果不是,就在对话框1146中显示给用户,向用户询问文件名称。用户可以用光标781删掉这一事务,而在步骤1148中封装外壳845即返回,不采取任何动作。当用户选择一个名称时,在步骤1150中,封装外壳845检查被选择的名称是否是一个有效的文件名称。如果是一个无效的文件名称,就经对话框1152通知用户,并由对话框1146要求用户择另一个文件名称。
如果该文件名称是有效的,封装外壳845就检查是否存在该文件的文件说明。如果不存在文件说明,在步骤1158中,封装外壳845就决定是否能产生文件说明。如果能,就产生该文件说明,并且在步骤1168中封装外壳845返回。如果不能,就由对话框1156通知用户,通过对话框1146要求用户选择另一个文件名称。
如果文件说明确定存在,在步骤1154中,封装外壳845就决定该文件名称是否登记到同样的类别。如果已登记到,则由对话框1164通知用户,并由对话框1146请求用户选择另一个文件名称。
如果,相同名称的文件没有登记到相同类别中,在步骤1162中,封装外壳845就决定该文件名称是否登记到另一个类别。如果登记到另一类别,就由对话框1160通知用户,并由对话框1146请求用户选择另一个文件名称。
如果该文件名称没有登记到另一个类别,在步骤1172中,封装外壳845就决定是否存在该文件的键文件(Keyfile)。如果不存在对话框1170就通知用户,该文件说明正在被其他的文件所使用,并由对话框1146请求用户选择另一个文件名称。如果存在,对话框1174就通知用户已经存在该文件,并由对话框1146请求用户选择另一文件名称。
图142表明,当在步骤1142中激活了该文件时,封装外壳845所采取的步骤。在步骤880中,确定打开该文件对象所采取的方法。如果采用了打开该文件的通常方法(例如把光标781置于该文件的图像之上,并敲击两次鼠标器20上的一个按扭)那么在步骤881中就获得一缺席类别特性组。如果打开该文件使用的是其他方法(例如把光标781置于该文件的图像之上,压住键盘19上的“SHIFT”键并压鼠标器20上的一个按扭)那么在步骤882中就获得其他的类别特性能组。
步骤883,封装外壳845获得该文件的对象特性。步骤884中,封装外壳845为要被加到应用程序。并被外壳过滤器844监视的菜单和宏功能作准备。根据编写应用程序是否在“Windows”环境中工作,外壳过滤器对该应用程序采取不同的监视手段。所以,在步骤885中,封装外壳845决定被打开的应用程序是否是一个“Windows”应用程序。如果是,则在步骤887中获得一张激活窗口表。这对外壳过滤器844是有用的信息息,当此信息产生的时候,它就要去截取发往现有文件的最新被打开的窗口的信息。如果被打开的应用程序不是一个“Windows”应用程序,在步骤886中就做好外壳过滤器844截取键入信息的准备。
在步骤888中封装外壳845使该文件图象显示灰色,给用户指明该文件已被打开。在步骤889中,该文件的应用程序启动。步骤890中,根据该文件的应用程序是否是一个“Windows应用程序,封装外壳再次转移。如果该应用程序是一个“Windows”应用程序,则在步骤892中,外壳过滤器844准备截取送往包含“Windows”应用程序在内的窗口的信息。如应用程序不是一个“Windows”应用程序,在步骤891中,外壳过滤器844准备截取用户在键盘19上键入的信息及在鼠标器上的操作信息。
图143是表示根据本发明优选实施方案产生一个对象时,OMF100和封装外壳845所经历过程的流程图。
在步骤1180,用户企图产生一个新的对象。由一个对话框询问用户,以确定它是否想产生一个新文件。如果该用户作出肯定的反应,封装外壳845就在步骤1184中确定该用户是否已指出新文件名称。如果没有,就由对话框1186要求用户去选择一个文件名称。在对话框1186,一个用户可以请求删除产生对话框1182的企图。
一旦选择了一个名称,在步骤1188中,封装外壳845就检查被选择的名称是否是一个有效的文件名称。如果是一个无效的文件名称,便使用对话框1190通知用户,并通过对话框1186请求用户去选择另一个文件名称。
如果文件名称是有效的,封装外壳845检查该文件是否存在一个文件说明。如果文件说明不存在,则在步骤1198中,封装外壳845就决定是否能产生文件说明。如果能产生,就产生该文件说明,并且在步骤1202中,封装外壳845返回。如果不能产生该文件说明,则由对话框1200通知用户不能产生,并且对话框1186请求用户选择另一个文件名称。
如果文件说明确实存在,在步骤1194中,封装外壳845就决定该文件名称是否被登记到同一类别。如果是这样,则由对话框1196通知用户并由对话框1196询问用户是否想产生该现有文件的共享。如果是这样,则在步骤1216中产生一个共享,如果不是这样,则由对话框1186请求用户选择另一个文件名称。
如果没有相同的名称的文件登记到相同的类别,在步骤1206中,封装外壳845就决定该文件名称是否登记到另一种类别。如果是这样,就由对话框1204通知用户,并由对话框1204请求用户选择另一个文件名称。
如果该文件名称没有登记到另一类别,则在步骤1208中,封装外壳845决定该现有文件是否存在键文件。如果不存在,即由对话框1210通知用户:该键文件消失但其他的文件存在,并由对话框1186请求用户选择另一个文件名称。如果此键文件名称存在,就由对话框1218通知该用户:该文件已经存在,并要求用户确认这些现有文件就是要加以登记的。如果用户确认了,就在步骤1214产生该对象及引用文件。否则,即由对话框1186要求用户选择另一文件名。
当OMF100向一对象发送一个打开的消息时,此打开消息包含一说明在用户给OMF100产生一打开命令时用户是否按压Shift键的另一类别参数,就是说,在用户将光标781置于一欲打开的对象上时,保持压下键盘上标有“Shift”的键的同时敲击两次鼠标器20上的一按键,就发送一特定的参数。当封装外壳845由OMF100接收到一替换类别参数时,封装外壳845有可能通过存放在结构特性847中的参数被组构成来打开一替换应用程序,而不是打开被封装的程序846(在这种情况下被封装程序846是缺席应用程序)。
上述的在打开一对象期间,利用一缺席类别和一替换类别,可使用户能指明打开两种能处理同样数据文件型式的完全不同的应用程序。换句话说,利用一缺席类别和一替换类别可要求封装外壳打开同一被封装的应用程序,但要采用指明要如何利用该数据文件的不同参数来打开它。例如,用户能够来指明他是要编辑还是浏览一文件。同样,用户这样也能够指明他是要编辑还是汇编存贮在一数据文件中的计算机程序。
图144中,示出文件HPOMF.DOS内的不同记录形式。标题记录990包含一类号及其他标识信息。HPOMF.DOS中只有一个标题记录。它为256字节长。
目录记录991识别包含有被封装数据文件的目录。包含有被封装数据文件的每个MS_DOS目录中都有一个目录记录。第一个目录记录跟在标题记录990之后。
目录记录991包含有三个字段。字段993(IprecNext-DIr)包含HPOMF.DOS中下一目录记录的一个32位指针(相对文件起点的位移,字节数)。在最后一目录记录中,这一字段被置为0。字段994(IprecFile)是该目录的第一文件记录的32位指针(相对该文件起点的位移,字节数)。字段995(SZDirec-tory)为一作为目录名称的零终止的字符串,包括驱动说明。
文件记录992识别被封装的数据文件。每一被封装的数据文件都有一个文件记录。每一目录记录均指向该目录内的第一文件记录。
文件记录992包含5个字段。字段996(IprceNext-File)为这一目录的下一文件记录的一个32位指针(相对文件起点的位移,字节数)。如果它是此目录中的最后的文件,字段996就是0。
字段997(bDeleted)是一个指示此文件随后是否被消除的16位布尔(逻辑)值。当此文件记录产生时,字段997开始被置为假值。当此文件消除时,此文件记录被留在原处(因为性能上的原因),而字段997被置为真值,以指明该条目不再有效。字段997被置为“真”值的文件记录能为其他文件再利用。
字段998(SZFileName)包括一零终止的字符串,它是被封装数据文件组的根文件的名称(见图84B)。
字段999(dwObject)为一指示与这一被封装文件有关的对象的NewWave对象的识别符(参数范围名称)的32位值。
字段1000(Flag)为一包含与此被封装数据文件有关的其他状态信息的8位的字段。
图145表示文件HPOMF.DOS的逻辑结构。标题记录991后跟目录记录991。在字段“IprecNextDir”中目录记录991包含一指向目录记录1006的指针。在字段“IPrecNextDir”中,目录记录1006包含一指向目录1009的指针。等等。
目录记录991还在字段“IPrecFile”包含一指向文件记录992的指针。文件记录992在字段“IPrecNextFile”中包含一指向文件记录1004的指针。文件记录1004在字段“IprecNextFile”中包含一指向文件记录1005的指针。同样,目录记录1006在字段“IprecFile”中还包含一指向文件记录1007的指针。文件记录1007在字段“IPrecNext-File”中包含一指向文件记录1008的指针。
附录A是一OMF100中主数据结构的表。
附录B为在本发明的优选实施方案中OMF接口599所理解的功能的说明。
附录C(HP  NewWave  Environment:ProSramDesign  Example)列举了如何能实现本发明优选实施方案的例子,其中包括有关OMF100是怎样使得数据能在监视器14上的显示窗口之间被观察的细节。
附录D(Programmer's  Guide)给予了对本发明优选实施方案的进一步叙述。
附录E为给出对程序进行一般封装的一程序的编排。
附录F列举了将一程序封装进NewWave  Environment所需生成的文件的例子。
附录G列举了为实现被加入到通常并非是在一“Windows”环境中运行的程序的“Windowlike”命令的编码的例子。

Claims (17)

1、计算机***具有一管理多个第一对象的对象管理设备,其中,每一对象都引用一设计来与该对象管理设备协同运行的应用程序,以利于将并非设计成与该对象管理设备协同运行的第一应用程序容纳进此计算机***的封装***,此封装***包括有:
一封装外壳,起着为此计算机***内的对象所引用的一个应用程序的作用,以及起着第一应用程序和该对象管理设备之间的接口的作用;和
一外壳过滤器,它与该封装外壳配合动作,能按照该封装外壳中的指令来截取用户发给该第一应用程序的命令,并将该封装外壳所产生的命令传送到该第一应用程序。
2、如权利要求1中的封装***,进一步还包括:
对该封装外壳指明有关该第一应用程序的结构信息的结构特性。
3、如权利要求1中的封装***,进一步还包括一由该封装外壳所读取的菜单/宏定义文件,它包括由该封装外壳和该外壳过滤器所执行的。并能为用户及计算机***运行该第一应用程序相一致利用的菜单/宏功能的定义。
4、一计算机***,具有一管理多个第一对象的对象管理设备,其中每一对象都引用一为与该对象管理设备协同运行而设计的应用程序,一种便于将并非设计成与该对象管理设备协同运行的第一应用程序容纳进此计算机***的方法,此方法包括有下列步骤:
a)将该第一应用程序封装进一封装外壳中,此封装外壳起着为该计算机***内的对象所引用的一个应用程序的作用,同时亦起着该对象管理设备和此第一应用程序之间接口的作用;
b)由一外壳过滤器截取用户发向第一应用程序的命令;和
c)该外壳过滤器将来自该封装外壳的命令传送到该第一应用程序。
5、如权利要求4中的方法,其中步骤(b)是由对用户在键盘上键入的键入信息进行监控来执行的。
6、如权利要求4中的方法,其中步骤(b)是由对发送给该第一应用程序的消息进行监控来执行的。
7、如权利要求4中的方法,其中步骤(a)包括下列子步骤:
(a1)对该第一应用程序增加辅助的、为用户看作为与该第一应用程序成为一整体的菜单。
8、如权利要求7中的方法,进一步还包括有步骤:
(d)该封装外壳截取用户利用该辅助菜单所产生的用户指令,
(e)该封装外壳产生当由该第一应用程序执行时将完成用户利用该辅助菜单所产生的用户指令的命令;和
(f)响应步骤(b)中对用户指令的截取,将步骤(e)中所产生的命令由封装外壳发送到该第一应用程序。
9、一计算机***具有一管理多个第一对象的对象管理设备,其中每一对象都引用一为与该对象管理设备协同运行而设计的应用程序,一种使由并非被设计来与该对象管理设备协同运行的第一应用程序所产生的文件适应于该对象管理设备的方法,此方法包括有步骤:
(a)将该第一应用所产生的数据文件置于一缺席目录中;
(b)该第一应用程序结束后,在该缺席目录中搜寻在该第一应用程序打开时所产生或修改的文件;和
(c)对在步骤(b)中所寻找的、尚未连接到一对象的每一个被产生或修改的文件,产生一引用该第一应用程序的新对象,并将此新对象连接到步骤(b)所找到的文件。
10、如权利要求9中的方法,进一步还包括下列步骤:
(d)对步骤(b)中所寻找到的,已经连接到一对象的每一个被产生或修改的文件,如果该对象是目前激活的话,就给该对象发送一说明该被产生的或修改的文件已经改变。
11、一计算机***具有一管理多个初级对象的对象管理设备,其中每一对象都引用一为与该对象管理设备协同运行而设计的应用程序,一种使由并非被设计来与该对象管理设备协同运行的初级应用程序所产生的文件适应于该对象管理设备的方法,此方法包含有步骤:
(a)将由该第一应用程序为该第一应用程序利用而产生的数据文件置入一第一缺席目录中;
(b)将由该第一应用程序为第二应用程序利用而产生的数据文件置入一第一缺席目录中;
(c)在该第一应用程序结束后,在该第一缺席目录中搜寻在该第一应用程序打开期间所产生或修改的文件;
(d)为在步骤(c)中所找到的,尚未连接到一对象的每一被产生或修改的文件产生一引用该第一应用程序的新对象,并将此新对象连接到步骤(b)中所找到的文件;
(e)在该第一程序结束后,在该第二缺席目录中搜寻在该第一应用程序打开期间所产生或修改的文件;
(f)为在步骤(e)中所找到的、尚未连接到一对象的每一被产生或修改的文件,产生一引用该第一应用程序的新对象,并将此新对象连接到在步骤(e )中所找到的文件。
12、如权利要求11中的方法,还进一步包括下列步骤:
(g)对于在步骤(c )或步骤(e)中找到的,已经连接到一对象的每一被产生或修改的文件,如果该对象是当前激活的,就对该对象发送一消息指明该被产生或修改的文件已经改变。
13、一个计算机***具有一管理多个第一对象的对象管理设备,其中每一对象都引用一为与该对象管理设备协同运行而设计的应用程序,一种将由并非设计成与该对象管理设备协同运行的第一应用程序所产生的文件转换到该对象管理设备中的方法,该文件是为被设计成与该对象管理***协同运行的第二应用程序所利用的,该方法包括有步骤:
(a)将由该初级应用程序所产生的数据文件置入一转换缺席表;
(b)在该第一应用程序结束后,由该转换缺席目录中搜寻在该第一应用程序打开期间所产生或修改的文件和
(c)对在步骤(b)中所找到的每一个被产生或修改的文件,执行下列子步骤;
(c1)产生一引用该第二应用程序的新对象;和
(c2)激活该新对象,并向新对象发送一消息,指示新对象去改变该被产生或修改的文件。
14、一计算机***,包括在监视器上显示有一光标和一图象,该图象是用来引用一数据文件的,该***还包括有一能利用该数据文件中的数据的第一软件应用程序,一能利用该数据文件中数据的第二
软件应用程序,以及使得用户可对光标进行定位和采取其他该计算机***能检测到的操作的输入装置,一种方法包括下列步骤:
(a)在用户利用该输入装置的指引下,将光标置于该图象上;
(b)在用户利用该输入装置完成第一组操作后,启动第一软件应用程序,此第一次软件应用程序对该数据文件内的数据进行运行处理和
(c)在用户利用该输入装置完成第二组操作后,启动该第二软件应用程序,此第二软件应用程序对该数据文件中的数据作运行处理。
15、如权利要求14中的方法,其中,输入装置包括一键盘和一鼠标器,该第一组操作包括按压该鼠标器上的一个按键,该第二组操作包括在按压该鼠标器上的按键的同时保持压住该键盘上的第一键。
16、一计算机***包括在一监视器上显示有一光标和一图象,该图象被用来引用一数据文件,还包括有一能利用该数据文件中数据的软件应用程序,一封装程序,和使用户能对光标进行定位及执行其他能为此计算机***检查到的操作的输入装置,该封装程序包括有指定该软件应用程序利用该数据文件的第一种方式的第一组参数,和指定该软件应用程序利用该数据文件的第二种方式的第二组参数,一种方法包括以下步骤:
(a)在用户利用该输入装置的指引下,将光标置于该图像上;
(b)在用户利用输入装置完成第一组操作后,启动利用该第一组参考的软件应用程序和
(c)在用户利用输入装置完成第二组操作之后,启动利用第二组参数的软件应用程序。
17、如权利要求16中的方法,其中,输入装置包括一键盘和一鼠标器,所述第一组操作包括按压鼠标器上一按键,所述第二组操作包括在按压鼠标器上按键期间保持压下键盘上的第一键。
CN89105546A 1988-12-30 1989-08-09 为容纳进一对象管理设备环境的应用程序的封装 Pending CN1059981A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US29261088A 1988-12-30 1988-12-30
US292,610 1988-12-30

Publications (1)

Publication Number Publication Date
CN1059981A true CN1059981A (zh) 1992-04-01

Family

ID=23125418

Family Applications (1)

Application Number Title Priority Date Filing Date
CN89105546A Pending CN1059981A (zh) 1988-12-30 1989-08-09 为容纳进一对象管理设备环境的应用程序的封装

Country Status (8)

Country Link
US (1) US5832266A (zh)
EP (3) EP0628904A3 (zh)
JP (1) JPH02226357A (zh)
KR (1) KR0142579B1 (zh)
CN (1) CN1059981A (zh)
AU (1) AU642606B2 (zh)
CA (1) CA1331655C (zh)
DE (2) DE68928811T2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1655120B (zh) * 2004-02-13 2010-05-26 微软公司 在集成开发环境中作为设计器主宿应用程序的方法和***

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2293470A (en) 1994-09-22 1996-03-27 Ibm Message encapsulation in Object Oriented Programming.
US5742826A (en) * 1994-11-09 1998-04-21 International Business Machines Corporation Object encapsulation protection apparatus
US6167455A (en) * 1995-05-05 2000-12-26 Apple Computer, Inc. Method and system for synchronous operation of linked command objects
US6782538B1 (en) * 1995-12-14 2004-08-24 International Business Machines Corporation Object oriented information handling system including an extensible instance manager
GB9606733D0 (en) 1996-03-29 1996-06-05 British Telecomm Collection of events within a distributed object system
GB2315139A (en) * 1996-07-06 1998-01-21 Ibm Selecting operations in an object-oriented user interface
US6100885A (en) * 1996-07-06 2000-08-08 International Business Machines Corporation Supporting modification of properties via a computer system's user interface
US6721950B1 (en) * 2000-04-06 2004-04-13 Microsoft Corporation Input redirection
US6964034B1 (en) 2000-04-20 2005-11-08 International Business Machines Corporation Application development server and a mechanism for providing different views into the same constructs within a strongly encapsulated environment
US6640317B1 (en) 2000-04-20 2003-10-28 International Business Machines Corporation Mechanism for automated generic application damage detection and repair in strongly encapsulated application
US9021507B2 (en) * 2009-12-29 2015-04-28 International Business Machines Corporation Dynamic use of data across multiple programs
US10331620B2 (en) * 2015-11-24 2019-06-25 International Business Machines Corporation File generator
USD792463S1 (en) * 2015-12-23 2017-07-18 Samsung Electronics Co., Ltd. Display screen or portion thereof with icon
US11029802B2 (en) * 2018-02-27 2021-06-08 International Business Machines Corporation Automated command-line interface
CN111866254B (zh) * 2020-07-31 2021-08-31 广东佳米科技有限公司 一种智能识别划词的快速拨号***及其实施方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4205371A (en) * 1975-11-03 1980-05-27 Honeywell Information Systems Inc. Data base conversion system
US4468732A (en) * 1975-12-31 1984-08-28 International Business Machines Corporation Automated logical file design system with reduced data base redundancy
US4631664A (en) * 1983-07-19 1986-12-23 Bachman Information Systems, Inc. Partnership data base management system and method
US4809219A (en) * 1985-06-26 1989-02-28 International Business Machines Corporation Method for processing an expert system rulebase on a system having limited memory
US4853842A (en) * 1985-09-11 1989-08-01 Texas Instruments Incorporated Computer memory system having persistent objects
JPS62173545A (ja) * 1986-01-27 1987-07-30 Hitachi Ltd デ−タデイクシヨナリ・デイレクトリの維持管理方式
CA1267229A (en) * 1986-03-10 1990-03-27 Randal H. Kerr Reconfigurable automatic tasking system
US4791561A (en) * 1987-04-17 1988-12-13 Wang Laboratories, Inc. Interactive construction of means for database maintenance
US4866634A (en) * 1987-08-10 1989-09-12 Syntelligence Data-driven, functional expert system shell
US4866635A (en) * 1987-10-19 1989-09-12 Carnegie Group Inc. Domain independent shell for building a diagnostic expert system
US4864497A (en) * 1988-04-13 1989-09-05 Digital Equipment Corporation Method of integrating software application programs using an attributive data model database

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1655120B (zh) * 2004-02-13 2010-05-26 微软公司 在集成开发环境中作为设计器主宿应用程序的方法和***

Also Published As

Publication number Publication date
DE68929341D1 (de) 2001-12-13
EP0628904A2 (en) 1994-12-14
EP0628907B1 (en) 2001-11-07
KR900010588A (ko) 1990-07-09
EP0628904A3 (en) 1994-12-28
US5832266A (en) 1998-11-03
EP0628907A2 (en) 1994-12-14
AU624654B2 (en) 1992-06-18
CA1331655C (en) 1994-08-23
EP0377299B1 (en) 1998-09-09
AU4548689A (en) 1990-07-05
AU2283992A (en) 1992-11-12
DE68928811D1 (de) 1998-10-15
EP0628907A3 (en) 1996-01-24
DE68929341T2 (de) 2002-05-02
DE68928811T2 (de) 1999-01-28
JPH02226357A (ja) 1990-09-07
KR0142579B1 (ko) 1998-08-17
EP0377299A2 (en) 1990-07-11
AU642606B2 (en) 1993-10-21
EP0377299A3 (en) 1991-07-31

Similar Documents

Publication Publication Date Title
CN1059981A (zh) 为容纳进一对象管理设备环境的应用程序的封装
CN1163837C (zh) 网络访问管理***和方法
CN1248139C (zh) 用于表达频道化数据的***和方法
CN1609794A (zh) 用于计算机平台的编程接口
CN1273888C (zh) 成像装置、信息处理装置、程序执行方法及程序生成方法
CN1744036A (zh) 报告软件中支持定制图形表示的***和方法
CN1690993A (zh) 信息处理装置、信息处理方法及随其使用的程序和记录介质
CN1321923A (zh) 画面程序作成方法、记录媒体
CN1299177C (zh) 数据管理装置、计算机***及数据处理方法
CN1828517A (zh) 文档处理装置和文档处理方法
CN1041839A (zh) 包含有在二个目标之间进行数据传送的快照设施的目标管理设施
CN1581156A (zh) 信息处理***、方法、程序和记录介质
CN1669018A (zh) 手持终端框架***
CN1912825A (zh) 信息处理装置及其控制方法
CN1321275A (zh) 与源代码控制***交互的方法和设备
CN1609793A (zh) 用于计算机平台的编程接口
CN1703700A (zh) 为了经同步的内容显示使网络接入点的关联小型端口协作的方法和装置
CN1558348A (zh) 将基于模式的分级数据结构转换成平面数据结构的方法以及***
CN1679026A (zh) Web服务设备和方法
CN1359489A (zh) 用于构筑建模工具的装置和方法
CN1692358A (zh) 使用商业规则或用户角色而在环球网门户中选择小门户的方法和装置
CN1783083A (zh) 动态概要模块
CN1655145A (zh) 最优化行级别数据库安全的***和方法
CN1752963A (zh) 文档信息处理设备、文档信息处理方法及处理程序
CN1290889A (zh) 程序对象的串行化和解串行的版本适应

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication