CN1318168A - 网站开发的系统和方法 - Google Patents
网站开发的系统和方法 Download PDFInfo
- Publication number
- CN1318168A CN1318168A CN99804877A CN99804877A CN1318168A CN 1318168 A CN1318168 A CN 1318168A CN 99804877 A CN99804877 A CN 99804877A CN 99804877 A CN99804877 A CN 99804877A CN 1318168 A CN1318168 A CN 1318168A
- Authority
- CN
- China
- Prior art keywords
- module
- subclauses
- clauses
- catalogue
- content
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000011161 development Methods 0.000 title abstract description 38
- 230000008859 change Effects 0.000 claims description 25
- 238000012217 deletion Methods 0.000 description 33
- 230000037430 deletion Effects 0.000 description 33
- 238000013507 mapping Methods 0.000 description 25
- 230000014509 gene expression Effects 0.000 description 19
- 230000027455 binding Effects 0.000 description 14
- 238000009739 binding Methods 0.000 description 14
- 235000014510 cooky Nutrition 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 230000008878 coupling Effects 0.000 description 5
- 238000010168 coupling process Methods 0.000 description 5
- 238000005859 coupling reaction Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 4
- 230000033228 biological regulation Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000009795 derivation Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 240000006028 Sambucus nigra Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000008014 freezing Effects 0.000 description 1
- 238000007710 freezing Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000003908 quality control method Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99938—Concurrency, e.g. lock management in shared database
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Tourism & Hospitality (AREA)
- General Health & Medical Sciences (AREA)
- General Business, Economics & Management (AREA)
- Health & Medical Sciences (AREA)
- Human Resources & Organizations (AREA)
- Marketing (AREA)
- Primary Health Care (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Sewage (AREA)
- Branch Pipes, Bends, And The Like (AREA)
- Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)
- Document Processing Apparatus (AREA)
- Diaphragms For Electromechanical Transducers (AREA)
- Stored Programmes (AREA)
Abstract
一种文件管理的系统与方法包括层次结构文件系统,称之为“区域”。有三类区域:工作区域、架构区域和编辑区域。工作区域是可修改文件系统,在工作区域中用户可建立、编辑和删除文件及目录。架构区域是只读文件系统,它支持选择版本操作。工作区域的诸多用户可以借助于将它们的工作区域的内容提交给架构区域来集成他们的工作。在架构区域中开发者能比较他们的工作并看到他们的工作如何相互配合。一个编辑是只读文件系统。架构区域的内容被虚拟地拷贝到一个编辑中,建立架构区域内容的一个冻结的、只读的映象。本系统和方法的对文件管理的一种使用是作为网站开发工具。
Description
本专利申请请求在1998年2月4日登记题为“网站开发的系统和方法”美国NO60/073,766的临时申请的利益,其内容作为参照加入本专利。在此被充分揭示。
1.发明的背景
本发明通常涉及层次结构的文件系统,尤其是涉及能用作网站开发工具的文件管理的系统和方法。
2.背景技术的描述
因特网在商务上起着很大的作用,大多数公司倾向于拥有网站。许多网站需要经常修改,通常由数十位研究者以特定的过程进行。因此,经常不间断地保持网站内容不断更新、精确而且良好集成是比原始设计和开发网站更大的挑战。因物网站可以逐日、逐时、逐分地由数以百计的人进行更新。类似地,因特网的内容的研究者常常提出新的内容,或者对现有的内容作出改变,而且除非新的内容迅速地集成进去,作为基本通讯资源的因特网的效用是有限的。
当网的研究者的数量以指数方式增加时,大的网站面临许多问题。这些网站的大小与内容迅速地增加,当网站交通和因特网增长时,网站必须更频繁地更新。随着研究者数量的增加,随着网站内容的大小与复杂度的增加,对网站的经理(“网站主管”-“webmaster”)要监视每个变化和完成质量控制变得越来越困难。
由于网站开发的复杂性,对一个中央系统有必要管理和控制网站的开发。已知的管理和控制网站开发的系统包括软件配置管理系统,文件管理系统和数据库发布(publishing)系统。
关于那样的已知网站开发系统具有若干不足之处。例如,由于维护一个网站常常需要数十甚至数百个人的努力。希望有网站研究者并行地进行工作。软件配置的管理系统不允许研究者同时对网站的同一区域进行改变。此外,没有一个已知的系统允许并行工作的研究者分别测试他们自己的工作而不实际作出对网站的改变。因此,冲突的改变可能适到网站,引起该网站崩溃。
因为研究者在个人的角度无法预见他们的工作在与其他研究工作结合起来时的效果,已知的系统依靠网站主管集成送到网站的所有改变,并检查改变的错误。网站主管也要保证研究者只改变他们授权改变的内容一但是,该网站主管经常成为网站开发过程的瓶颈,因为该网站主管必须对网站的改变的工作做所有集成和测试。集成多个用户的工作是手工工作而且是耗时的,大量时间耗费在错误排除与解决冲突方面,而极少时间放在设计、革新和策略研究上。此外,在研究者准备好将改变送给网站主管以前,网站主管不能容易地监视在此改变上研究者的进展。因此,此网站主管不能及早校正错误,也不能确定研究者在如何进展。
已知网站开发系统的另一个缺点是它们不跟踪文件版本的历史。因为网站文件不断地增加、删除、改变、移动和更名,知道谁在何时做出文件的版本是有用的。借助访问以前的版本用户能很容易地找出引起错误的改变,回到以前的版本并识别新的错误。此外,已知的网站开发系统不允许即时访问网站分部或整个网站的任何以前版本。在网站崩溃或分派不合适或不精确信息的情况,立即转回到网站的任何以前的版本的能力是致命性故障的恢复工具。
因此希望有一个网站开发系统,它允许研究者不必把改变送到网站上就能判断他们的那些改变是否适合整个网站。此外,希望有一个网站开发系统,它允许研究者访问一个文件、网站分部或整个网站的以前版本,并且允许网站主管检验研究者的进展,更容易地将改变送到网站中。
发明的概述
本发明提供文件管理的一个系统和方法。那样系统的一种使用是可作为网站开发工具。
本发明的系统由层次结构的文件系统组成,它被称为区域(“area”),有三类区域:工作区域、构架(staging)区域和编辑区域。工作区域是可修改文件系统,在工作区域中用户可以建立、删除、增加和修改文件及目录。在一个实施例中,一个工作区域是现有网站的一个虚拟拷贝和用户对该网站的个人视界。
架构区域是一个只读文件系统,它支持选择版本的操作。各工作区域的各个用户借助于将他们的工作区的内容提交到架构区域能集成他们的工作。架构区域中,开发者能比较他们的工作,观察他们作的变化如何互相配合。
编辑区域是一个只读文件系统。架构区域的内容被虚拟地拷贝到编辑区域,以建立该架构区域的内容的冻结的只读的映象。在一个实施例中,一个编辑区域的内容表示一个网站的编辑的内容。
在一个实施例中,各区域共享目录树,以致每当建立一个区域时,那个目录和文件不必有物理上的拷贝。这就允许很快地建立区域并且提供系统资源的有效使用。与每个文件和目录相联系的是历史对象,它储存有关在每个区域中存在的文件或目录的内容的信息。
在另一个实施例中,本发明跟踪每个文件和目录的内容的历史。这就允许该系统很容易地比较一个文件与另一个文件,比较一个目录与另一个目录,以识别它们是否相同或相关。
在又一个实施例中,本发明的系统包括一个HTTP协议虚拟化模块,它使一个网站服务器好象多个网站服务器那样运行。这使每个区域在HTTP协议层上是一个完全的网站而不必对每个区域具有分别的网站服务器。
附图的简介
图1示出了按照本发明的一个实施例的一个用于网站开发的计算机网络。
图2示出了按照本发明的一个实施例开发网站内容的开发流程(从一个开发者的视角看)。
图3示出按照本发明的一个实施例的分支的例子。
图4示出了按照本发明的一个实施例一个主分支的初始内容的例子。
图5示出按照本发明的一个实施例一个主分支的例子。
图6示出按照本发明的主分支的另一个例子。
图7示出按照本发明的一个实施例一个主分支和一个子分支的例子。
图8示出按照本发明的一个实施例一个区域的目录树的例子。
图9是按照本发明的一个实施例的一个工作区域对象的图示。
图10示出按照本发明的一个实施例导出一个代(generation)ID的方法。
图11示出按照本发明的一个实施例的一个族系树的例子。
图12是按照本发明的一个实施例的一个目录的图示。
图13示出按照本发明的一个实施例的一个网站开发模块。
图14示出按照本发明的一个实施例工作区域创建模块的操作。
图15示出按照本发明的一个实施例架构区域创建模块的操作。
图16a-b示出按照本发明的一个实施例一个编辑区域创建模块的操作。
图17a-c示出按照本发明的一个实施例一个分支创建模块的操作。
图18a-d示出按照本发明的一个实施例一个增加条目模块的操作。
图19示出按照本发明的一个实施例一个增加直接模块的操作。
图20示出按照本发明的一个实施例删除直接参照模块的操作。
图21a-b示出按照本发明的一个实施例一个参照计数模块的操作。
图22示出按照本发明的一个实施例一个读目录模块的操作。
图23a-b示出按照本发明的一个实施例一个删除条目模块的操作。
图24a-b示出按照本发明的一个实施例一个编辑文件模块的操作。
图25示出按照本发明的一个实施例改名模块的操作。
图26a-b示出按照本发明的一个实施例产生目录路径的操作。
图27示出按照本发明的一个实施例产生基名字模块的操作。
图28a-c示出按照本发明的一个实施例的一个提交模块的操作。
图29示出按照本发明的一个实施例的一个冲突检查模块的操作。
图30a-b示出按照本发明的一个实施例的一个比较目录模块的操作。
图31a-b示出按照本发明的一个实施例的一个比较文件模块的操作。
图32示出按照本发明的一个实施例的一个区域删除模块的操作。
图33a-b示出按照本发明的一个实施例的一个锁定模块的一个操作。
图34示出按照本发明的一个实施例的一个锁定模块的另一个操作。
图35示出按照本发明的一个实施例在网络(Web)浏览器、HTTP协议虚拟化模块和网站服务器之间的通信路径。
图36a-b示出按照本发明的一个实施例的HTTP协议虚拟化模块的一个操作。
图37示出按照本发明的一个实施例的HTTP协议虚拟化模块的另一个操作。
图38示出按照本发明的一个实施例的HTTP协议虚拟化模块的又一个操作。
最佳实施例的详细描述
本发明将针对网站开发描述,但熟悉专业领域的人认识到,此发明能以另外的形式实施。
图1示出一个用于网站开发的计算机网络。在一个可以是传统的个人计算机的开发工作站110上,网站开发者增加、删除、编辑和检查用于网站的文件。开发工作站110经由如因特网那样的计算机网络120连结到开发服务器130。
开发服务器包括一个网站服务器145,处理从开发工作站110来的对网站内容的请求。开发服务器还包括传统的后备存储器160,如WINDOWS NT文件系统(可从微软公司购得),其中物理上存储网站文件。
开发服务器130还包括一个传统的存储器150(例如RAM)和一个传统的处理器140,它借助于执行网站开发软件模块135实现本发明的网站开发方法。如下所述,该网站开发模块储存在存储器150中。如下所述,储存在存储器150的还有一个HTTP协议虚拟化模块137,处理器140执行此模块使网站服务器145好象有多个网站服务器那样运行。
开发服务器130通过网络165连接到一个网站制作服务器170。网络165可以是与网络120同一个网络,或者也可以是不同的网络。该网站制作服务器170连到因特网或企业内部网175,当一个网站准备在万维网(World WideWed)或企业内部网上发布时,该开发服务器130将该网站发送到网站制作服务器170,它提供到网站的因特网或企业内部网的访问。
一个网站由文件系统的内容组成。本发明的网站开发系统由一个层次结构文件系统的集合组成。这些文件系统的每一个是一个环境,它管理各个文件并提供处理它们的手段。在执行时,该网站开发软件模块135是该文件系统的一个部分,它使文件的大多数管理与处理能实现。后备存储器160是物理上储存文件和对应的无数据(如所有者的识别、组的识别、访问控制文件名、修改时间、创建时间等)的地方。在一个实施例中,该文件看起来能存在各备存储器的160以外的驱动器中(即使它们物理上储存在后备存储器160中)。
一个层次结构的文件系统包括一个长着文件和符号连结的目录树。在该目录树的顶部是根目录,所有其他目录直接或间接地起源于此。
一个文件系统可以是能修改的或只读的。一个能修改的文件系统支持在文件上的读操作(如得到根目录、读目录、查阅目录、读文件、得到属性、读符号连结等)和修改操作(如创建目录、创建文件、创建符号连结、设置属性、删除文件、删除目录、文件改名、目录改名、写文件等)、一个典型的硬盘驱动卷是能修改文件系统的例子。
一个只读文件系统只支持读操作。只读文件系统的两个例子是CD ROM卷和将写保持片拨到写保护位置的软盘。
如上所述,本发明的网站开发系统由层次结构的文件系统组成。某些层次结构文件系统是能修改的,能建立构成网站内容的文件。其他一些文件使从另外文件系统来的文件能被比较以协调网站的开发,又另外的文件包括组成网站内容的完工文件。
本发明的层次结构文件系统有别于传统的文件系统的一个方面是,除了读和/或修改操作以外,本发明的某些文件系统支持选择版本操作,如下面所讨论,此操作使能处理二个或更多的相关文件系统。借助于在按本发明的相关文件集合上完成读、修改和版本操作来建立一个网站的内容。
本发明的一个层次结构文件系统称作为“区域”,有三种类型的区域:工作区域、架构区域和编辑区域。一个工作区域是可修改的文件系统,而架构区域和编辑区域是只读的文件系统。
一个工作区域从现有文件的虚拟拷贝开始(除非没有现有文件,此时工作区域从空开始)。换言之,一个工作区域开始就具有与作为网站指定的文件系统相同的内容。一个工作区域是开发者对一个网站的视界,每一个从事网站研究的人是在工作区域中工作的。在工作区,开发者自由地增加、删除或修改网站内容,并观察他们的改变如何配合到整个网站的内容。增加、删除和修改操作的细节在下面讨论。一个研究者在一个工作区域所作的改变不影响网站或其他研究者在另外的工作区域的工作。如下所述,这是因为每一个区域是分别的文件系统。
开发者借助于将他们的工作区域的内容提交到架构区域在架构区域集成他们的工作。此提交操作是上面提到的选择版本操作之一,将在下面详细讨论。架构区域是网站对分支上所有用户可用的共享视界(分支将在下面讨论)。换言之,一个架构区域是沿着一条分支对所有用户可以访问的文件系统。一个架构区域持有若干开发者的工作区域的工作并允许开发者共享和集成他们的改变。在架构区域,开发者能比较他们的工作并观察他们的改变如何互相配合。此比较操作是选择版本操作的另一个操作。将在下面讨论。
在架构区域收集的工作能虚拟地拷贝回到各自工作区域,使这些工作区随着该架构区域当前状态而更新,此当前状态随着不同的研究者从工作区域提交新的内容而改变。此拷贝是“虚拟”的,因为区域共享目录树,所以此目录树没有必要在物理上拷贝。当在架构区域中收集的工作被认为是最终的,它们内容能被发布以建立网站的一个编辑。从一个编辑建立一个工作区域并发布一个架构区域是下面讨论的另一个选择版本操作。
一个架构区域的内容被虚拟地拷贝到一个编辑区域以建立网站的一个编辑。而且,虚拟拷贝意味着此编辑参照与架构区域相同的目录树。因为一个编辑是一个只读文件系统,它是沿着单个分支整个网站在一个特殊点的冻结的映象。
编辑的内容能被虚拟地拷贝回到工作区域,并用作为网站进一步开发的基础。编辑也可以作为案卷,允许用户即时调用文件及整个目录,或重构该网站的整个过去版本。
图2是从开发者的角度看概括了从工作区域编辑的开发流程。一个开发者在工作区域编辑、增加或删除文件(步骤210)。开发者然后将他的工作区域的内容提交到架构区域(步骤220)。在架构区域,该研究者的工作区域的内容与其他研究者的工作区域的内容相集成(步骤230)。如果提交到架构区域集成得很好,得到了认可,则架构区域中的内容被发布到一个编辑(步骤240),否则,那些研究者继续编辑他们的文件,直到被认可(步骤210)。
按照一个实施例,网站的开发可以沿着开发的若干分支划分。从一个开发者的角度来看,一个分支是对单个网站的一条开发路径。如图3所示,单个分支300包括工作区域310、架构区域320和一个或多个做成案卷的网站编辑330。分支可以包括子分支,所以开发小组可以保持各分支互相分离。内容可以被各分支和子分支共享。
沿着各分支划分网站开发的例子是对当前的网站具有一个分支,对该网站的新版本具有另外的分支。另外的例子是对不同的区域或对不同的客户具有不同的开发分支,使网站适合特定的区域或客户。
当网站开发软件模块装入开发服务器时,建立了一个主分支。如图4所示,主分支400原先包括一个空架构区域420和空编辑430。主分支原先还包括一个空工作区域410。工作区域可以在主分支建立时或晚些时后建立,用户可以推迟建立工作区域,直到用户准备好定义该工作区域的属性(例如,能访问该工作区域的人)。
如果在网站开发软件模块安装以前已存在一个网站,则若尚不存在工作区域,就建立一个空的工作区域410。如图5所示,原先网站的内容510被拷贝到空的工作区域410、再拷贝到空的架构区域420,再发布到一个初始编辑440。
借助于将最新的编辑的内容虚拟地拷贝到新的工作区域而建立主分支以外的另外的工作区域。图6说明了在主分支上从编辑440建立了三个工作区域600。工作区域600的内容提交到架构区域610,而架构区域610的内容发布成新的编辑620。
在主分支外还能建立子分支。图7示出了在主分支外建立子分支。一个编辑710从父分支720被用作为该子分支730的初始编辑725。然后,初始编辑725的内容被虚拟地拷贝到在子分支730中的工作区域740、架构区域750和新的编辑、注意能以同样的方式独立于其他子分支建立子分支。在子分支做的工作独立于且平行于较高分支所做的工作。
借助于虚拟地将该子分支上编辑的内容拷贝到较高分支的工作区域,将在子分支上建立的工作被加入到较高分支中。从子分支的内容与从其他工作区域来的内容互相集成,且作为在较高分支上的新的编辑发布。
现在已经叙述了该网站开发系统的总体概念和典型的用途,将描述按照本发明的系统的特定实现。
每个分别的工作区域、架构区域和编辑由一个或多个树形结构的文件或目录组成。图8示出对于一个区域的目录树,其中目录1是根目录。各区域能共享同一目录树。事实上,当现有的区域被拷贝做成新的区域时,新区域仅仅是参照与现有区域同一根目录。借助于建立一个代表该区域的对象,建立了每个分别的工作区域、架构区域和编辑区域,对象具有名字段、对象ID字段、代(generation)ID字段、目录字段和分支字段。名字段包括该工作区域的名。目录字段识别指定工作区域、架构区域或编辑区域的目录树的根目录。分支字段指出该工作区域所在的分支。图9示出一个工作区域对象的图形表示。注意,在建立一个工作区域时作出目录树的虚拟拷贝而非真实拷贝,因为工作区域对象指向了现有的目录树。
每个工作区域、架构区域和编辑区域具有二个与其他不同的识别符,在本专利中一个称为“ID”,另一个称为“对象ID”。对象ID识别表示该区域的对象,一旦对象ID分配给一个对象,此对象ID不能改变。每个区域也用与其他不同的代ID识别。它指出一个区域与其他区域如何相关。对指定区域的代ID能改变,也将在下面讨论(例如,当一个架构区域被发布到一个编辑)。代ID放在代ID字段,对象ID放在对象ID字段。
注意,目录、文件、历史对象(下面讨论)和其他对象也指定对象ID,它们一旦设定后保持不变。
一个代ID包括一个与其他不同的序列或数组。一个代ID不仅唯一地识别一个区域,如上所述还指出一个区域与其他区域如何相关。例如,在图7中子分支中的初始编辑是直接从父分支中的编辑2导出。子分支中的工作区域直接从子分支的初始编辑导出,间接地从父分支中的编辑2导出。
一个代ID包括一个唯一识别它的数和导出该代ID的代ID的数。例如,如果1是指定给一个区域的唯一的数,而0是指定给另一个区域的唯一的数,则从这些区域导出的区域的代ID是它自己唯一的数(例如4)和数0或1。
图10说明了从父代ID导出指定给新区域的代ID的方法,其中父代ID是指定给新区域的直接父亲的。使用传统的顺序算法(如1,2,3,4)或随机地产生与其他不同的办法得到与其他不同的数(1000)。然后取出与父代ID相关的唯一的数组成名数序列(1010)。随后,父代ID串联刚生成的唯一的数产生一数组或数序列。
区域之间的关系也用一族系树表示。族系树是一个数据结构,该树的每个节点代表不同的代(即区域,注意在本专利申请中,区域常称作代)。
图11示出一个族系树的例子。代G0代表初始编辑。代G2代表一个工作区域(“工作区域1”),代G3代表另一个工作区域(“工作区域2”),代G1代表一个编辑(“编辑1”),代G4代表一个架构区域。族系树示出,G1,G2,G3直接从G0导出,即G1,G2和G3具有与G0相同的根目录。G4间接从G0导出,直接从G1导出,因此也具有与G0相同的根目录。
图12示出了一个目录1200的图示。对每个其目录改变的代,该目录包括一个代页1280,它是列出对应于该代页1280的代的目录的内容的对象。于是,一个目录有效地包括在每一代的目录的内容的映象,在上述代目录已经改变。即使目录在不同区域具有不同的内容,代页1280允许不同的区域参照相同的目录。
在图12中示出的目录1200中,目录页1280指出条目“m”被加到代G0中的目录1200中,条目“n”被加到代G2中的目录1200中;“p”被加到代G3的目录1200中。注意,假设没有内容从目录1200中删除,目录页1280不仅包括加到一特定代的内容,而且包括加到导出该特定代的代的内容。例如,在图10中示出的族系树应用于此例。在代G0中目录d1包含条目“m”。在代G2中条目“n”加到目录1200,因此,由于G2由G0导出,目录1200将条目“m”和“n”包含在代G2中(假设“m”不被删除)。在代G3中,条目“p”加到目录d1中,因此,目录1200包括条目“p”和“m”。注意,G3不从G2导出,因而目录1200不将条目“n”包括在代G3中。
在一个实施例中,如果一个目录在一个特定代中没有改变,该目录将不包括该代的代页。一旦一个目录在一个代中改变,对于该代的代页被加到该目录中。
在目录中每个条目与一个历史对象相关。历史对象指出文件或目录的内容被编辑或修改的代。换言之,一个历史对象指出在目录中一个条目的历史。一个历史对象包括对一个代ID的字段1225,和指向一个文件或目录的指针的内容字段1230。在图12所示的例子中,历史对象h0指出,在代g0中条目n包含与文件f1相关的内容。历史对象h0还指出,在代G2中条目n包含与文件f2(不是文件f1)相关的内容。在内容字段1230中列出的条目指向文件f2的实际内容1235。如果f2是一个目录,它将指向另外的目录,如目录1200。此内容包括“以前字段”1240,它具有与该目录中列出的条目相关的先前的文件或目录的指针。例如,f2指向具有内容“B”的文件的指针和指向f1的指针1240,意味着在代G2以前,条目“m”具有f1的内容。
图13示出按照本发明的一个实施例的网站开发软件模块135,它能建立和处理工作区域、架构区域和编辑区域。此网站开发软件模块135包括一个工作流子系统1300,一个版本子系统1305和一个对象子系统1310。工作流子系统建立和管理工作区域、架构区域、编辑区域和分支。版本子系统管理和控制下列功能,如修改和编辑文件及目录;比较文件;比较目录;将工作区域的内容提交到架构区域;以及检查文件和目录的冲突。对象子系统管理对象在服务器的主存储器及在盘中的分布。对象子系统可以作为传统的不变的对象存储和高速缓存子系统来实现。
工作流子系统包括一个工作区域建立模块1312,一架构区域建立模块1314,一个编辑区域建立模块1316,一个分支建立模块1346,和一个区域删除模块1342。版本子系统1305包括一个提交模块1336,一个冲突检查模块1338,一个比较模块1340,一个加条目模块1318,参照计数模块1320,增加直接参照模块1322,删除直接参照模块1324,读目录模块1326,删除条目模块1328,编辑文件模块1330,改名模块1332,产生目录路径模块1334,锁定模块1344,代ID模块1348。这些在工作流子系统和版本子系统中的模块使能建立和处理区域、文件、目录和用于开发网站的其他对象。
工作流和版本子系统用C++编程语言来实现。在工作流子系统和版本子系统中的模块的操作在下面叙述。
如上所述,工作区域是借助于将以前编辑的内容虚拟地拷贝到工作区而建立的(在主分支中的第一个工作区域初始是空的情况除个)。图14示出为从一个编辑建立工作区域时工作区域建立模块1312的操作,该编辑随意地称为“编辑e”。模块1312获得编辑e的根目录和代ID(步骤1410)。然后模块1312从代ID模块1348得新的代ID(步骤1420),后者从编辑e的代ID导出。代ID模块1348借助于完成图11中示出的过程导出新的代ID。模块1312也得出该工作区域的新对象ID(它是与其他不同的随机或顺序产生的数)。
模块1312建立一个代表该工作区域的对象,它具有名字段、根目录字段、对象ID字段、代ID字段和分支字段(步骤1430)。该模块将工作区域名填入名字段,将编辑e的根目录填入目录字段,从由步骤1420导出的代ID填入代ID字段,将对象ID填入对象ID字段,并将工作区域所在的分支识别填入分支字段中(步骤1440)。于是,该对象指出,工作区域是具有相同的编辑e的根目录并具有导出的代ID的数据结构。注意,编辑e的内容没有物理上的拷贝以建立工作区域。更确切地,建立一个对象指出,新建立的工作区域初始具有与编辑e相同的数据结构。
图15示出为了从称为e编辑建立一个架构区域,架构区域建立模块1314的操作。为建立一个架构区域,模块1314获得编辑e的代ID(步骤1510),然后从代ID模块1348获得从编辑e的代ID导出的一个新的代ID(步骤1520)。模块1314对该架构区域还得出新的目录ID(一个唯一的随机或顺序产生的数)。
模块1314建立表示该架构区域的对象(步骤1530),它具有一个名字段、一个根目录字段、一个代ID字段、一个对象ID字段及一个分支字段。模块1314将架构区域的名填入名字段,将编辑e的根目录填入根目录字段,将在步骤1520得到的代ID填入代ID字段,将在步骤1525获得的对象ID填入对象ID字段,并将该架构区域所在的分支识别填入分支字段(步骤1540)。
有时希望具有多个架构区域。例如,除了一个公共的架构区域以外还希望有数个专用的架构区域,只有选中的用户能提交内容给它。只要多次完成上述架构区域建立方法就能建立多个架构区域。
图16a-b示出了为了从一个随意标记为“S”的架构区域的内容建立一个编辑,编辑建立模块1316的操作。模块1316在步骤1610得到代ID和架构区域S的根目录。模块也得到对编辑e的唯一对象ID(步骤1615)。模块1316在步骤1625建立一个代表新编辑的对象,它具有一个名字段、一个根目录字段,一个代ID字段,和一个分支字段。模块1316在步骤1630将该新编辑的名填入名字段,将架构区域S的代ID填入代ID字段,将架构区域S的根目录填入根目录字段,将在步骤1625中获得的对象ID填入对象ID字段,将该编辑所在的分支的识别填入分支字段。
采取该架构区域的代ID,从本质上模块1316就将架构区域S转换到新的编辑。因而,当建立编辑时,编辑建立模块1316在步骤1640获得新的代ID,并在步骤1650将其指定给该架构区域。
图17a-17c示出分支建立模块1346的操作。为了建立一个分支,模块1346在步骤1705判断,该建立的分支是否是主分支。若该分支不是主分支,模块1346在步骤1710从其上分出新分支的父本分支上得到称为“编辑b”的基本编辑的代ID。编辑“b”可以是父分支上的任何编辑。随后,模块1346在步骤1715从代ID模块1348得到一个从编辑b的代ID导出的新代ID。随后用如编辑b同样的根目录和在步骤1715得到的代ID,在步骤1720建立一个称为“编辑e”的初始编辑。此外在步骤1730可以建立零个以上的工作区域,每个具有与编辑e相同的根目录以及从编辑e的代ID导出的一个不同的代ID。可以在分支建立时或其后建立工作区域。在步骤1740建立一个架构区域,它具有与编辑e相同的根目录,并具有从编辑e的代ID导出的代ID。按照对于图14-16讨论的方法,建立了编辑e、工作区域和架构区域。
回到步骤1705,若建立的分支是主分支,模块1346在步骤1750获得一个根的代ID,称其为g0。一个根的代ID是使用传统的产生唯一数字的程序产生的数,它不是从其他的代ID导出的。模块1346随后在步骤1755、1760建立称为d0的空目录和对该目录的称为h0的历史对象。模块1346在步骤1765将一个输入项加到历史对象中,指出该历史对象在代g0中与目录d0相关。此输入项可用记号(g0,d0)来表示。
在建立该历史对象以后,模块1346在步骤1770建立一个初始的编辑,它具有根目录d0和根的代g0。该模块还在步骤1775建立一个架构区域和一个或多个工作区域,每个均具有与初始编辑相同的根目录(即空目录)和从该根的代导出的不同的代ID。注意,工作区域不必在分支建立时建立,它们可以在以后建立。
加条目模块1318使能把诸如文件和目录的对象加到工作区域或架构区域。图18a-d示出为了把一个具有内容“f”的条目“n”加到一个区域“a”的目录“d”中,加条目模块1318的操作。区域可以是工作区域或架构区域,条目n可以是文件或目录。条目f也能是文件或目录。为了增加此条目,模块1318在步骤1805识别对区域a的代ID(称之为g)。然后模块1318在步骤1810读出目录d并在步骤1815判断,对于代g是否有代页。如果对目录d没有代页,模块1318在步骤1820借助于拷贝最密切相关的并具有代页的父代(“最匹配的代”)的代页对目录d建立一个代页。在找到代g的代页或建立代页以后,模块1318在步骤1825扫描该代页的内容的名为“n”的条目,在步骤1835判断,条目n是否存在于代g的目录d中。如果在代g的目录d中找不到名为“n”的条目,则模块1318在步骤1840中用历史对象中的一个输入项建立一个历史对象,指出内容“f”在代g中与条目n相关。随后模块1813在步骤1845将一个用标记(n,h)表示的输入项加到代页“g”中,指出文件“n”与历史对象“h”相关。注意,将条目n加到目录d,条目n既没有虚拟地也没有物理上拷贝到目录d中。目录d仅仅是参照条目n。
当条目n已经加到目录中时,步骤1835中的问题答案是肯定的,但是条目n的更新版本代替了现有的版本(即新的内容现与条目n相关)。如果是这样的情况,模块1318在步骤1850将扫描与文件“n”相关的历史对象的内容,找出在其中条目改变的最新代。随后模块1318在步骤1855判断条目n在代g中是否已改变(即模块1318判断,条目n在区域中是否已改变,因为区域具有代ID g)。如果条目n在代g中没有改变,则模块1318在步骤1860加一个输入项到历史对象中,指出内容f在代g中与文件n相关。条目f具有一个指示条目“n”以前内容的字段(即条目f包括指向条目n以前内容的指针)。模块1318在步骤1865设置条目f的以前的字段,以指向在最匹配的代中“n”的内容。
参照步骤1855,如果条目n在代g中被改变,则模块1318在步骤1870改变与代g相关的历史条目项,以反映出在代g中条目n的内容是条目f。于是,模块1318在步骤1875设置条目f的“以前字段”指向在代g中的n的以前的内容。
为了回收资源,一个对象(若一个目录,一个文件,一个历史对象)若不能从任何区域访问就从存储部件物理上予以删除。从一个区域中增加和删除一个对象可以是虚拟的。因为经常是只存储该对象的一个物理拷贝。因此,为了判断一个对象的物理拷贝是否应该删除,必须知道该对象是否在任何哪一个区域中能被访问。如果一个对象能从一个区域被访问,它在该区域被“参照”。为判断一个对象是否能从任何哪一个区域被访问,对每一个对象保持一个参照计数,参照计数指出该对象能从多少个区域被访问。如果一个对象的计数为0,就能删除该对象。
为了能计算参照计数,每一个对象与一个“参照表”和一个“反参照表”相联系。参照表指出一个对象被加入的目录,对每个参照的目录指出,在哪个代该对象被加到该目录中。尤其是,每当一对象被加到一个目录中,在参照表中加一个输入项,指出在哪个代该对象被加到该目录中。
一个反参照表指出该对象从目录中被删除,对每个参照的目录指出在哪个代中该对象从该目录中被删除。尤其是每当一个对象从一个目录删除时,在反参照表中加入一个输入项,指出在哪个目录及代中从目录中删除该对象。
增加直接参照模块1322将输入项加到参照表中。图19示出了当一个对象(如一个文件、一个目录或一个历史对象)被加到区域“a”中的一个目录中时增加直接参照模块1322的操作。当对象c被加到目录d,加上d时c的直接参照。换言之,c的参照表指出,c被加到目录d中。为了增加一个直接参照,增加直接参照模块1322在步骤1910得到区域a的代,为方便起见称为“g”。然后,增加直接参照模块1322在步骤1920判断在对象c的参照表中是否有一个输入项,它指出对象c在代g中被加到目录d中。为方便起见,那样的输入项用标记(g,d)表示。如果(g,d)不在对象c的参照表中,则在步骤1930该输入项被加到参照表中。
在(g,d)被加到参照表以后,或如果(g,d)已经在参照表中,增加直接参照模块1322在步骤1940判断,该(g,d)是否在反参照表中。如果对象c曾在代g中从目录p中删除,输入项(g,d)将在反参照表中。如果该输入项(g,d)不在对象c的反参照表中,则增加直接参照的过程完成。如果输入项(g,d)在反参照表中,在步骤1950将该项从反参照表中删除。此外,对于每个从代g直接导出的第一个代(称它为gi),在步骤1960将输入项(gi,d)加到反参照表中。上一步骤的原因是被导出的代是从与其父代同样的内容开始的。因此,如果一个对象在一个代中能被访问,它也能从由该代导出的子代中被访问,除非该对象是子代导出以后被加到父目录的,或者除非该对象特定地从子代中被删除。结果,如果一个对象在已有现成的子代的代中被加到目录中,则反参照表必须指出,该对象不能从现有的子代中访问,因为在现有的子代被导出时,该对象不是父代的部分。当然,该对象也能使用在图18a-d示出与描述的方法加到该子代中。
删除直接参照模块1324将项加入到反参照表中。图20说明了当一个对象“c”在区域“a”中从一个目录″d″中被删除时,删除直接参照模块1324的操作。删除直接参照模块1324在步骤2010查明区域a的代ID(为方便起见称为“g”)。然后,删除直接参照模块1324在步骤2020判断,是否有一个输入项在对象的参照表中,它指出对象c以前在代g中被加到目录d中。那样的项用标记(g,d)表示。如果(g,d)不在参照表中,则处理完成,因为对象c在代g中从未有对目录d的直接参照。因此没有参照需要删除。
如果(g,d)在参照表中,在步骤2030它从对象c的表中被删除。此外,对于每一个由g导出称为gi的子代,如果输入项(gi,d)不在反参照表中,此项在步骤2040被加到该参照表中。这一步骤的理由是该参照表指出,如果对象c能从现有的子代中可被访问,尽管它从父代中被删除,它仍然可从现有的子代中访问。
在步骤2040以后,删除直接参照模块1324在步骤2050判断,输入项(g,d)是否在反参照表中。如果该输入项尚未在反参照表中,在步骤2060中被加到反参照表中。否则删除直接参照的过程已完成。虽然,该输入项(g,d)应当未在反参照表中,在该输入项在早些时后被错误地加到反参照表中的情况下,删除直接参照模块1324作出这样的判断。
参照计数模块1320对一个条目计算参照数。为此,参照计数模块1320保存二个元组的表P,它初始是空的。参照计数模块1320使用初始设置为0的整数n来表示对条目f所做参照的数。
图21a-b示出为了计算一个条目f的参照计数参数计数模块的操作。参照计数模块在步骤2110,2120取出对条目f的参照表与反参照表。参照计数模块在步骤2125得到族系树(回忆一下,本发明的所有区域能被组织成族系)的根节点的代ID,为方便起见称为“g”。参照计数模块1320在步骤2130找到代g的参照表中的所有项。例如,若条目f在代g中被加到目录d1,将在参照表中有项(g,d1),而且参照计数模块1320将找到此项。对于每个代g的项,参照计数模块1320在步骤2130将一个项(条目名,+)加到表P中,其中“条目名”是在代g中参照的条目名。“+”意味着该项是在参照表中(与反参照表相反)。例如,如果在条目f的参照表找到项(g,d1),则项(d1,+)被加到表P中。如果表P已经包括带有相同条目名的项(如d1,-),则参照计数模块保证该项被设成(条目名,+)。
参照计数模块1320还搜索反参照模块,在步骤2140找出在代g的反参照表中的所有项。对于在代g的反参照模块中的每一个项,参照计数模块1320在步骤2140加一个项(条目名,-)到表P中,此外“-”意味着该条目在反参照表中。如果表P已经包括一个带有相同条目名的项,该参照计数模块保证将该项设成(条目名,-)。
参照计数模块然后在步骤2050对每一个带有“+”的表P中的项做n=n+1。回想一下开始将n设成0。然后参照计数模块在步骤2160判断,代g是否有任何子代(即由代g导出的代)。如果没有,参照计数在步骤2170完成,n是对条目f的参照数。如果代g具有子代,对每个子代参照计数模块在步骤2180设置g等于子代的代ID并返回到步骤2130。
图22示出为在一个区域“a”中读出一个目录“d”的内容,读目录模块1326的操作。读目录模块1326在步骤2210得到区域“a”的代,称为“g”。该目录模块1326在步骤2220分析该目录,判断对代g是否有代页。如果在区域a中目录d已经被修改,就有对代g的代页。如果对代g有一个代页,读目录模块1320在步骤2230返回代页“g”上的项的表。否则,读目录在步骤2240返回在最密切相关的父代页(最匹配的代页)的代页上的项的表。
使用图12示出的目录叙述读目录模块的操作的例子。为了在一个具有代G3的区域中读该目录的内容,该目录模块1326返回在代页G3中项的表,它在本例中是项(m,h0)。
假设在图12中的代以图10所示的方式互相联系。为了在代G4中读目录d的内容,读目录模块1326判断,对G4是否有代页。因为没有对G4的代页,读目录模拟1326搜索最匹配的代页。G1是G4最密切的父代,但没有对G1的代页。GO是下一个最密切的父代,因为对GO有代页,在GO代页中项的表作为G4中目录的内容被返回。
图23a-b示出当条目“a”在具有代ID“g”的区域“a”中被删除时,删除条目模块1328的操作。条目n可以是在目录中的任何对象,如一个文件或另一个目录。为了从一个目录d删除一个条目,按照对应于图22中所述的方法在步骤2310中读出目录d。删除条目模块1328在步骤2320判断在目录d中是否有对于代g的代页。如果没有,在步骤2330借助于从最密切的父代(最匹配的代)拷贝该代页建立对代g的代页。
删除条目模块1328在步骤2330判断,在代页“g”中是否对条目有一个项。如果没有,删除条目模块1328在步骤2330指出发生一个错误,因为条目n不在代g中的目录d中,因此不能从代g中的目录中删除。
回到步骤2330,如果在代页g中对条目n有一个项,删除条目模块1328在步骤2350得到对应n的历史对象,删除条目模块1328在步骤2355判断,该历史对象是否指出条目在代g中被修改。换言之,删除条目模块1328判断,历史对象是否包括用“g”作为代的项。
如果条目n在代g中没有改变,删除条目模块1328在步骤2370将一个项加到历史对象中,指出条目n在代g中从目录d中删除。因为在此过程中条目n的删除是虚拟的,加上此项有效地在代g中从目录d删除了条目n。此项用标记(g,z)代表,其中z表示一个对象,它指出一个条目已被删除。如果z对象没有对条目n建立,删除条目模块1328建立一个z对象。
参照步骤2355,如果条目n在代g中已被改变,删除条目模块1328在步骤2360在对应代g的历史对象中改变该项,指出n在代g中被从目录d中删除(即该项变成(g,z))。如果z对象尚未存在,删除条目模块1328建立此对象。
如图12中示出的文件内容1235,z对象也有一个字段,指示一个条目以有的内容。此字段被称为“以前字段”。在步骤2360或2370以后,在步骤2380z对象中的以前被设置成指向在代g中n的以前内容。
图24a-b示出了为了在具有代ID“g”的工作区域“a”编辑在目录“d”中的文件“n”,编辑文件模块1320的操作。该编辑文件模块1320在步骤2405接受对文件“n”的写命令。编辑文件模块1320随后在步骤2410获得对文件n的历史对象,并在步骤2420判断在代g中文件n是否已被改变(即有无带代g的项?)。若是,编辑文件模块在步骤2430将所有对文件“n”的改变写到在代g中与文件n相关的内容中。
如果历史对象没有一个带有代g的项,编辑文件模块1320在步骤2440寻找带着最匹配代的项。编辑文件模块1320随后在步骤2450拷贝与步骤2440中的项相关的称为f1的文件,并在步骤2460将所有改变写到f1的新拷贝中,后者称为f2。在步骤2470将一个项加到历史对象中,指出在代g中文件n的内容就是文件f2的内容。换言之,编辑文件模块1320将用标记(g,f2)表示的项加到历史对象中。
图25示出为了将区域a中目录d1的一个条目n1(可以是文件或目录)改名为目录d2的条目n2,改名模块1332的操作。改名模块1332在步骤2510得到目录d1中条目n1的历史对象,称之为h1。注意,如果不存在那样的历史对象,改名模块1332向用户报告发生一个错误。在得到此历史对象以后,改名模块1332在步骤2520判断,在目录d2中是否存在名为n2的条目。如果存在,改名模块在步骤2533判断对条目n2是否有任何改写保护。在一个实施例中,对目录有改写保护,但对文件没有。如果存在改写保护,改名模块在步骤2527报告,在目录d2中已存在条目n2。如果没有改写保护,改名模块1332在步骤2530按照在图23a-b中图示和描述的方法从目录d2删除条目n2。
一旦现有的条目n2从目录d2中被删除,或者在d2中不存在条目n2,改名模块1332在步骤2540将名为n2的新条目加到目录d2中。改名模块1332将历史对象h1与目录d2的条目n2相联系。在条目n2的内容的“以前字段”中,改名模块1332指出,n1是n2的“改名前辈”(如下所定义)。注意,如果d1=d2,改名过程相同。
图26a-b示出,为了对区域a中的目标d产生一个全名路径,产生目录路径模块1334的操作。产生目录路径模块1334在区域a读出目录d,并识别目录d的父目录,称以为pd。根据本发明的一个实施例,父目录是与在一个目录中输入项“¨”相联系的。在本实施例中,产生目录路径模块1334对应输入项“¨”来识别该目录。
模块1334在区域a读目录Pd,并对目录d寻找输入项。然后,模块1334识别目录d作为目录路径中的名。
此算法重复进行,直到达到根目录。具体说来,上述对于目录d的方法对Pd重复进行,随后对目录Pd的父目录等等,直到达到根目录。找到的名就是目录路径上的名。在目录路径名中,找到名字的次序是从最后的到第一个。
图27示出为了在区域“a”中产生目录“d”中历史对象“h”的基本名,产生基本名模块1335的操作。产生基本名模块1335在步骤2710读出对应于目录d中区域a的代页。产生基本模块1335在步骤2720识别带有历史对象h的输入项。在输入项中对应于历史对象h的条目名是要找的基本名。例如,如果在区域a中从目录d中找到输入项(n,h),则“n”是历史对象h的基本名。
图28a-c示出了在具有代IDg的架构区域将带有历史对象h和内容f的条目“n”提交给目录d,提交模块1336的操作。提交操作用于将一个工作区域的内容提交到一个架构区域。因为一个文件的内容由它的历史对象所定义,一个文件的历史对象是实际提交给架构区域的。按照图26和27图示和描述的方法提交模块1336在步骤2805借助于在区域a计算目录d的全路径名和历史对象的基本名得到历史对象h的全路径。提交模块1336在步骤2810判断,在该架构区域是否有带着相同全路径名的对应条目。借助于重复地读目录(用读目录模块1326)判断在该架构区域中是否有与历史对象h相同全路径名的另外的对象。
如果在该架构区域中没有相应的条目,提交模块1336在步骤2830查明是否在该架构区域中存在由步骤2805计算的目录路径。如果没有,在步骤2835建立该目录路径,且在步骤2840将文件f标记成冻结的。在步骤2830或2840以后,提交模块1336调用的条目模块1318在区域a中将带有内容f的条目加到目录d中(步骤2845)。提交模块1336把项(g,f)加到历史对象中(步骤2840)。
然后,提交模块1336在步骤2855判断,条目f是否为目录。若不是,提交过程完成。若条目f是一个目录,则在工作区域提交模块1336对每个子目录di将一个输入项(g,di)加到与di相关的历史对象中。此步骤保证,当一个目录被提交给架构区域时,它的子目录也被提交。
回到步骤2810,如果在该架构区域有相应的条目,提交模块1336在步骤2815调用冲突检查模块1338(在下面叙述)来判断在称为hs的对应历史对象和历史对象h之间是否有冲突。如果a)h和hs是相同或b)h是从hs导出或c)hs从h导出,则h与hs没有冲突。如果在h和对应历史对象hs之间没有冲突,提交模块1336进到步骤2840。否则,提交模块1336在步骤2820判断,允许现有文件被改写的改写模块是否有效。如果有效,提交模块1336进入步骤2840。否则,由于碰撞提交失败。
图29示出为了在分支b的区域atarget中检查文件ftarget对文件freference的冲突,冲突检查模块1338的操作。冲突检查模块1338在步骤2910判断ftarget在分支b中是否被锁定。如果只有分支中的一个工作区域能提交一个文件到架构区,该文件在该分支中被锁定。锁定一个文件提供了避免冲突的方法。如果ftarget在分支b中被锁定,冲突检查模块1338在步骤2920判断,是否对ftarget的锁定被不同于atarget的区域拥有。若是,就存在冲突,而且ftarget不能提交给区域atarget。
如果ftarget在分支b中未被锁定,或如果对ftarget的锁定被atarget拥有,冲突检查模块在步骤2930确定,ftarget和freference是否指向相同的内容(即ftarget和freference是同一个)。如果它们指向同一个内容,冲突检查模块1338发现不存在冲突。如果二个文件没有同一内容,冲突检查模块1338在步骤2940判断,freference是否为ftarget的先辈(如同名的先辈。从先辈拷贝或从先辈改名,如下所述)。如果freference是先辈,则没有冲突,因为ftarget似乎是freference希望的修改。否则存在冲突。
图30a-b示出了为了将区域atarget中的目录dtarget与区域areference中的目录dreference比较,比较目录模块1340的操作。为了比较,比较目录模块1340在步骤3005按照图22示出和叙述的方法读出在区域atarget中目录dtarget的内容。冲突检查模块也在步骤3010按照图22示出和叙述的方法读出在区域areference中目录dreference的内容。
比较目录模块1340在步骤3015中识别在目录dtarget中的第一个条目,并判断在目录dreference中是否有一个条目具有与目录dtarget中的第一个条目相同的名字。如果没有,比较目录模块1340在步骤3045报告,在dreference中没有与dtarget中被识别的条目匹配的条目,并进到步骤3050。否则,比较目录模块1340在步骤3025判断,是否具有相同名字的二个条目具有相同的内容。借助于审阅每个条目的历史对象来做这样的比较,如果在区域areference中dreference的历史对象指向与区域atarget中dtarget的历史对象相同的内容,则两个目录的内容是相同的。如果内容是相同的,比较目录模块1340在步骤3030报告,该条目具有相同的名和内容,且比较目录模块1340进到步骤3050。如果内容不相同,比较目录模块1340在步骤3035报告,名相同,但内容不同,比较目录模块1340进到步骤3050。
在步骤3050,比较目录模块1340在步骤3050确定。是否有另外的条目在dtarget中。
如果在dtarget中有另外的条目,比较目录模块1340在步骤3053识别下一个条目并回到步骤3020。如果在dtarget中没有条目,比较目录模块1340在步骤3055识别dreference中的第一个条目。比较目录模块1340在步骤3060判断,被识别的条目是否与dtarget中的某一个条目有相同的名。若不是,比较目录模块1340在步骤3065报告,在dtarget中被识别的条目不匹配dreference中的任何条目,进到步骤3067。如果被识别的条目具有与dtarget中的条目相同的名字,该被识别的条目已经在步骤3020找到,于是比较目录模块1340进到步骤3067。
在步骤3067,比较目录模块1340判断,是否在dreference有其他条目。如果答案是在dreference中没有其他条目,比较dtarget与dreference的过程完成。否则,比较目录模块1340在步骤3070取得dreference中的下一个条目且回到步骤3060。
比较文件模块1341比较文件(不同于比较目录模块,后者比较目录)。文件当提交到架构区域时被比较。此外,网站开发者可能希望在他们对应的工作区域比较文件。
比较文件包括审视一个文件的先辈。一个文件可能具有的三种类型的先辈是“同名先辈”、“从先辈拷贝”和“从先辈改名”。
“同名先辈”是称之为f的文件的前版本,它具有与文件f(即“f”)相同的名,其中“同名先辈”先前被提交给与文件f相同的区域。一个文件的“以前字段”(如图12中的字段1240)指向该文件的“同名先辈”。
一个被称为f的文件的“从先辈拷贝”是一个文件,其内容是被拷贝到文件f。一个文件上的拷贝或反向操作可在工作区域用“从先辈拷贝”产生一个文件。若操作改写了一个现有文件就发生这种情况。例如,设文件e不是在架构区域的一个文件。该文件u是在工作区域的一个文件,它与文件e2冲突。如果文件u借助于用文件e2的内容的拷贝替代文件u的内容而被更新了,老文件u是更新后文件u的“同名先辈”,文件e2是更新后的文件u的“从先辈拷贝”。文件e2可以从另外区域或另外分支的文件。文件e2也能够是在文件u的版本历史中的文件,或者是在另外一个分支上另外文件的版本历史上的一个文件。如果一个文件具有“从先辈拷贝”,该文件的“以前字段”(如图12中字段1240)指向“从先辈拷贝”,也指向“同名先辈”。
一个文件〔称为f〕的“从先辈改名”是一个文件,文件f是从那个文件改名而得。如果一个文件有“从先辈改名”,该文件的“以前字段”指向“从先辈改名”和“同名先辈”。
图31a-b示出,为了将目录dtarget中的文件Ftarget与目录dreference中的文件freference作比较,比较文件模块1341的操作。比文件模块1341在步骤3110查找称为f1的文件,它包括在目录dtarget中ftarget的内容。注意,Ftarget和f1的差别是Ftarget是在目录中该文件的名,而f1是在目录dtarget Ftarget的实际内容。Ftatget与f1之间的差别类似于在图12中示出的目录中名为“m”的文件和在代G0中文件“m”的内容“A”之间的差别。
比较文件模块1341在步骤3120查找称为fr的文件,它包含在dreference中Freference的内容。比较模块随后在步骤3130判断fr与f1是否等同。若是,则比较文件模块1341在步骤3140报告,Freference与Ftarget是相同的。
如果fr和f1不相同,比较文件模块1341在步骤3145判断,Freference是否为Ftarget的一个先辈。回想一下,每个文件的内容包含一个指向文件的“同名先辈”(如以前的内容)的指针(在“以前字段”中),如果文件具有“从先辈拷贝”或“从先辈改名”指针针向那个先辈。比较模块往后查遍f1和它的先辈们的“以前字段”以搜索fr。如果fr出现在一个查找的“以前字段”中,则Freference是Ftarget的一个先辈。比较文件模块1341在步骤3050报告,Ftarget是Freference的一个修改。
如果Freference不是Ftarget的一个先辈,比较文件模块1341在步骤3155判断,Ftarget是否为Freference的一个先辈。具体地,比较模块往后查遍fr和它的先辈们的“以前字段”以搜索f1。如果f1出现在查找的一个“以前字段”中,比较文件模块1341在步骤3160报告,Freference是Ftarget的一个修改。否则,比较文件模块1341在步骤3165判断,是否有某个文件是Ftarget和Freference两者的先辈。如果有某个公共文件,比较文件模块1341在步骤3170报告,Freference和Ftarget具有共同的先辈;如果没有一个共同的文件,它在步骤3175报告,Ftarget与Freference不相关。
区域删除模块1342删除那些用户或系统管理不再需要的区域。图31示出了删除一个区域“a”区域删除模块的操作。区域删除模块在步骤3210取出对区域a的目录树,再在步骤3230找出任何无子节点(即目录),为方便起见称之为“c节点”区域删除模块1342在步骤3240调用删除条目模块1328从父目录中删除c节点。区域删除模块1342还在步骤3240调用删除直接参照模块1324,从C节点的参照表中删除对父目录的参照。然后区域删除模块1342在步骤3260调用参照计数模块1320判断,参照计否为0,若是0,在步骤3270中从存储器中删除与C节点相关的物理对象。否则,与C节点相关的物理对象不从存储器中删除,因为,虽然C节点已从区域a上删除,它仍存在于其他区域。在判断参照计数以后,在步骤3280判断,在该区域中是否还留下任何节点。若有,模块1342返回到步骤3230。否则,区域删除过程完成。
图32a-b和34示出锁定模块1346的操作。图33a-b示出为了在沿分支b的区域a中建立目录d中条目f的一个锁,锁定模块1346的操作。为了建立那样的锁,锁定模块1346在步骤3310确定在区域a中目录d中条目f的全路径名。随后在步骤3320判断,是否有其他锁具有相同的全路径名。若是,锁定模块1346在步骤3350报告,锁定建立模块失败,因为有一冲突锁。如果没有其他锁有同样的全路径名,锁定模块1346在步骤3330建立一个锁,它包括在步骤3310识别的全路径名,并在步骤3340作为锁的拥有者用区域a标志该锁。
图34示出为了判断区域a中目录d的一个条目是否被锁定,锁定模块1346的操作。锁定模块1346在步骤3410确定在区域a中目录d的条目f的全路径名,随后在步骤3420判断,分支b是否有带有相同全路径名的锁。若没有,锁定模块在步骤3430报告,条目未被锁定。否则,锁定模块在步骤3440报告,条目f被锁定。
现在已经叙述了网站开发软件,下面将叙述按照本发明HTTP协议的虚拟化模块137(“虚拟化模块137”)。
每个区域看来是在HTTP协议层上的一个完全的网站。为了实现此目的而不必对每个区域有分别的网站服务器,虚拟模块137使单个网站服务器表现得好象多个网站服务器那样。这就大大地减少了开发和维护的费用,而允许每个区域为在HTTP协议层上的完全的网站。
图35示出了在一个开发工作站110上的网络(Web)浏览器、虚拟化模块137、及网站服务器145之间的通信路径。在开发工作站110上的网络浏览器将所有的或有选择的(如下讨论取决于连接的类型)对网站内容的请求导向虚拟化模块137。需要的话,虚拟化模块137改变请求的目录路径,使目录路径取决于发出请求的区域(此区域称为“观察区域”--“Viewing area”)或其他希望的位置(如下所述)。换言之,发送到虚拟化模块137的HTTP请求在需要时被重新定向到对应于观察区域或其他希望的位置。
在处理HTTP请求以后,虚拟化模块137将HTTP请求转送到网站服务器145,它从请示指定的位置取出所请求的文档。网站服务器145将此所请示的文档(若找不到是错误信号)送回到虚拟化模块137,它又将所请求的文档(或错误信号)转送回网络浏览器。
虚拟化模块137使用映射规则来判断是否和如何改变一个HHTP请求。映射规则将一个表达式映射到另一个表达式。映射规则被等式分成两边。映射规则的左手边是规则表达式,它定义需被相匹配为一个变量模式的部分。映射规则的规则表达式符合在数学和计算机科学领域中规则表达式的很好确定的规则,而且在一个实施例中,在映射规则中使用的规则表达式和在UNIX操作系统中的规则表达式(如regex(5)扩展的规则表达式)同样方法应用。
映射规则的右手边是替代表达式(即代替左手边规则表达式的表达式)。在替代表达式中,记号$N(N是“1”、“2”、…“9”)表示左手边的模式的前十个部分,它们用规则表达式的括号符()分开(如$1代表左手边的第一个模式,$2代表左手边的第二个模式,等)。
HTTP请求修改以下面的次序分成三个部分:
区域前缀/文档根前缀/请求文件之名
模块137借助于改变文档根前缀和请求的区域前缀将HTTP请求重新定向。文档根前缀是“文档根”的路径名,其中文档根是对网站服务器的源目录。文档根是文件系统中的目录,在此目录下网站服务器寻找所请求的文件(除非指定的其他情况)。文档根也能看作它的根目录的网站服务器的标记。
一个区域的顶层目录不必是文档根。一个开发者可以设置一个区域,使得一个区域的顶层目录不对应于网站服务器的文档根。对网站服务器实际的文档根可以在顶层区域目录下存留任意数的目录。
对一个区域的文档根可以用专门的映射规则来规定。在一个实施例中,每个分支有一组映射规则,在此实施例中,沿着一个特定分支的每个区域具有用专门的’_docroot’映射规则规定的同样的文档根。
对一特定分支的文档案,一个映射规则的例子如下所述:
_docroot=/directory A/directiry B
如果原始的URL请求是GET/documents/index.html,文档根前缀将附在原始请求的第一个“/”前面。换言之,前缀/目录A/目录B将附在“/documents/index.html前面。
有这样的情况,希望使用其他前缀替代文档根前缀。
这种情况包括一个开发者在文档根目录外配置内容目录,使用内容目录的别名,或者在区域层应用任意的转换。对这些特殊情况存在映射规则,如果该请求与这些特殊映射规则相匹配,映射规则的替代表达式(右手边)是将前缀附到请求上而不是附到文档根前缀上。例如,假设下面是对特殊分支的映射规则:
/special(.*)=/Foo$l
如果原始请求是GET/speciai/index.html,前缀“/Foo”被加到“/index.html”。
区域前缀被附在文档根前缀的前面,或者(如果合适的话)附在替代文档根前缀的专门的前缀前面。借助于解码与原始请求一起传过来的“cookie”导出区域前缀。一个cookie是少量网络游览器存储并传到虚拟化模块137的少量不变的数据。一个cookie能包括各种类型的信息(例如,用户的识别符,用户会话的识别符(“session ID”,端口号等)一个那样的类型可以是观察区域的路径的识别符。在一个实施例中,cookie包括实际的区域前缀。在另一个实施例中,虚拟化模块从cookie取出另外类型的信息,如会话ID或端口号,而且在外部检查表中检查出该区域前缀,该表把取出的信息类型映射到区域前缀。
为继续文档前缀例子,如果从带着原始请求传输的cookie导出的区域前缀是“/iw-mount/default/main/workarea/joe”,变换以后的请求如下:GET/iw-mount/default/main/workarea/joe/directory A/directory B/document/index.html。
无论网络浏览器把所有HTTP请求导向虚拟化模块137或者在某些方面取决于包含在子系统中HTML文档中的连接的类型。至少有三种不同的连结类型包含在HTML文档中,即一个相对连结,一个绝对连结和一完全合格连结。完全合格连结包括一个明确的协议规定和一个明确的主机名,其后跟着到文档的全路径。一个绝对连结既不包含协议规定,也不包含主机名,但确实包含一个到文档的全路径。一个绝对连结一般以最初的斜杠(“/”)开始。相对连结类似于绝对连结,但其特征是有开始的斜杠字符(“/”),它表示该路径是相对于当前文档的连结。换言之,相对连结具有除了被请求文档的真实名以外当前文档的相同全路径名。
虚拟化模块能处理所有三种连结。如果储存在系统100中的HTML内容需要完全合格连接的虚拟化,网络浏览器配置成能将所有请求送到虚拟化模块137。许多公共的网络浏览器支持带有配置设置的特征。按照一个实施例,如果网站不需要管理完全合格连结,该网络浏览器只传送绝对和相对HTML连结到虚拟化模块137。网站服务器通常不需要对绝对和相对连结作专门的配置,来自动地发送请求到虚拟化模块137。
图36a-b示出了为了处理绝对和相对请求虚拟化模块137的操作。虚拟化模块137在步骤3610从一个开发工作站110上的网络浏览器接收一个HTTP请求,且在步骤3620从该请求中取出统一资源定位符(Uniform ResourceLocator-URL)的地址。虚拟化模块137还在步骤3630取出与URL地址一起发送的cookie。
然后虚拟化模块137在步骤3640判断该请求是绝对请求或者相对请求。在一个请求实施例中,这些请求由下述事实区分,一个相对HTML请求在它被虚拟化模块137处理以前(这是由网络浏览器自动完成的)总是附有一个区域前缀,但一个绝对HTML请求在被虚拟化模块137处理以前不附有区域前缀。如果请求是相对的,该请求已被指向正确的文件系统和目录(即,从这些文件系统和目录访问观察文档),而且虚拟化模块137在步骤3690将请求传送到网站服务器。
如果该请求是绝对请求,虚拟化模块137在步骤3650搜索对应于观察区域存留的分支的映射规则,并在步骤3660中选择适当的前缀(一个文档根前缀或者根据映射规则的一个专门前缀(如上所述))。虚拟化模块137在步骤3670按照适当的映射规则将所选的前缀附加到初始请求或那里的一个部分。
虚拟化模块137在步骤3680取出或从cookie导出(如前面所讨论)该区域前缀并将其附加到在步骤3670附加的前缀的前面。该请求的路径或其一部分已经完成,因而模块137在步骤3690将修改后的请求导向网站服务器145。
图37示出虚拟模块137处理完全合格连结的方法。虚拟模块137在步骤3710接收从一个开发工作站110上的一个网络浏览器来的HTTP请求,并在步骤3720从该请求取出URL和cookie。
虚拟模块137随后在步骤3730通过映射规则搜索完全合格请求,并判断,该请求是否匹配映射规则的规则表达式。若不是,在步骤3780该请求被送到网站服务器。如果是,虚拟化模块137在步骤3756将由映射规则得出的前缀按照映射规则附到该请求或其部分上。
虚拟化模块137在步骤3760从cookie取出或导出(如上所讨论)区域前缀,并在步骤3770将其附在在步骤3750附上的前缀前面。该请求的路径完全了,虚拟化模块137在步骤3780将被修改的请求导向网站服务器145。
虚拟化模块137动态地联接从外部网站服务器来的内容。在某些情况,如果该文档未驻留在原先搜索的位置(如观察区域)虚拟化模块使文档请求能被动态地重新导向到外部网站服务器。如果一个文档请求带着HTTP错误码’404 File not found(文件未找到)’,此虚拟化模块137搜索映射规则,而且如果找到匹配,它按照匹配规则改变该请求。改变后的请求随后被指定的外部目标网站服务器。
虚拟化模块137也提供从不现分支内容的动态联接。在某些情况,网站的内容能被分解到不同的开发分支中。在这些情况,如果虚拟化模块137收到错误码’404 File not found’,虚拟化模块137就用另外分支的文档根前缀替代现有的文档根前缀。然后将改变后的请求发送到网站服务器145。
图28示出为了完成基于位置或基于分支的动态联接,虚拟化模块的操作。虚拟化模块137从网站服务器145接收HTTP请求的结果。从此结果虚拟化模块判断,请求文档是否被找到。若是,虚拟化模块在步骤3825将请求的文档送到初始将请求发送给虚拟化模块137的网络浏览器。如果文档未找到,虚拟化模块在步骤3830搜索映射规则,在步骤3840判断,发送到网站服务器的HTTP请求或其部分是否与任何一个规则的左手边匹配。若是,该请求在步骤3850按照该映射规则被改变,并在步骤3860被送到适当的网站服务器。
熟悉本专业的人能理解,本发明能以其他特定形式实现而不背离其精神与内在的特点。网站开发者正是实际应用这里揭示的本发明的许多人之一。这里揭示的发明的其他应用包括开发源程序码、媒体文件(如CD-ROM多媒体)、媒体发动机等。因此,本发明揭示的内容仅是示例性的,而不是对下面权利要求宣布的发明范围的限制。
Claims (6)
1.一种开发网站的方法:
在一个工作区域编辑一个选择对象;
将所述工作区域的内容提交到一架构区域;
将所述工作区域的所述内容与提交到所述架构区域的其他内容集成;
判断所述的其他内容是否与所述工作区域的所述内容冲突;和
响应于不是与所述工作区域的所述内容有冲突的所述其他冲突,使该架构区域的内容进入网站的一个编辑。
2.一种文件管理系统,包括:
一个工作区域,所述工作区域是具有读和写操作的文件系统,使一个用户能在所述工作区域编辑文件;
一个架构区域,所述架构区域是一个具有读和版本操作的文件系统,适合于接收所述工作区域的内容;和
一个编辑区域,所述编辑区域是一个具有读操作的文件系统,适合于接收所述架构区域的内容。
3.如权利要求2所述的系统,其特征在于,进一步包括多个工作区域,而且所述架构区域适合于接收并检查在多个工作区域中的二个或多个工作区域的内容中的冲突。
4.在具有多个文件系统的系统中,一种保持在每个文件系统中的一个条目的内容的识别符的方法,并且所述条目包括在该文件系统中,其特征在于,所述方法包括:
使所述历史对象与所述条目关联;和
对包括所述条目的文件系统,在所述所述历史对象中保持一个项,指出所述内容与在那个文件系统中的所述条目相关联。
5.如权利要求4所述的方法,其特征在于,进一步包括:
响应于使新内容与多个文件系统之一中的所述条目相关联,改变对应所述文件系统的历史对象的一个项,指出所述条目具有所述的内容;和
将在所述新内容中的参照加到以前的内容中。
6.如权利要求5所述的方法,其特征在于,进一步包括:
借助于判断在一个第二条目中的内容是否为所述条目的以前的内容,判断所述的第二个条目是否与所述条目冲突。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US7376698P | 1998-02-04 | 1998-02-04 | |
US60/073,766 | 1998-02-04 | ||
US09/244,333 US6505212B2 (en) | 1998-02-04 | 1999-02-03 | System and method for website development |
US09/244,333 | 1999-02-03 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1318168A true CN1318168A (zh) | 2001-10-17 |
Family
ID=26754864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN99804877A Pending CN1318168A (zh) | 1998-02-04 | 1999-02-04 | 网站开发的系统和方法 |
Country Status (14)
Country | Link |
---|---|
US (1) | US6505212B2 (zh) |
EP (1) | EP1053523B1 (zh) |
JP (2) | JP2002503000A (zh) |
KR (1) | KR20010040666A (zh) |
CN (1) | CN1318168A (zh) |
AT (1) | ATE223590T1 (zh) |
AU (1) | AU2583799A (zh) |
BR (1) | BR9908552A (zh) |
CA (1) | CA2319557A1 (zh) |
DE (1) | DE69902752T2 (zh) |
DK (1) | DK1053523T3 (zh) |
ES (1) | ES2183514T3 (zh) |
PT (1) | PT1053523E (zh) |
WO (1) | WO1999040509A2 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1307545C (zh) * | 2002-12-24 | 2007-03-28 | 鸿富锦精密工业(深圳)有限公司 | 面向对象的商业网站架设系统 |
CN102364464A (zh) * | 2010-09-17 | 2012-02-29 | 微软公司 | 对象实例版本化 |
CN102541868A (zh) * | 2010-12-15 | 2012-07-04 | 苏州荣盈科技有限公司 | 一种网站文件管理的操作方法 |
CN103703457A (zh) * | 2011-06-20 | 2014-04-02 | 谷歌公司 | 收集关于web页面的用户反馈 |
CN112363990A (zh) * | 2020-11-09 | 2021-02-12 | 北京磨刀刻石科技有限公司 | 一种设计文件在线版本管理方法及装置 |
Families Citing this family (81)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5911145A (en) * | 1996-07-29 | 1999-06-08 | Rae Technology, Inc. | Hierarchical structure editor for web sites |
CA2268571C (en) * | 1997-02-07 | 2010-04-06 | General Internet, Inc. | Collaborative internet data mining system |
US7278098B1 (en) * | 1997-04-09 | 2007-10-02 | Adobe Systems Incorporated | Method and apparatus for implementing web pages having smart tables |
CN1176432C (zh) * | 1999-07-28 | 2004-11-17 | 国际商业机器公司 | 提供本国语言查询服务的方法和系统 |
JP5113967B2 (ja) * | 1999-08-05 | 2013-01-09 | オラクル・インターナショナル・コーポレイション | インターネットファイルシステム |
US7418435B1 (en) * | 1999-08-05 | 2008-08-26 | Oracle International Corporation | Multi-model access to data |
US7886221B1 (en) | 1999-11-05 | 2011-02-08 | Decentrix, Inc. | Method and apparatus for storing web site data by web site dimensions and generating a web site having complementary elements |
US7152207B1 (en) * | 1999-11-05 | 2006-12-19 | Decentrix Inc. | Method and apparatus for providing conditional customization for generating a web site |
US6701343B1 (en) * | 1999-12-01 | 2004-03-02 | Qwest Communications International, Inc. | System and method for automated web site creation and access |
US7107526B1 (en) * | 2000-01-19 | 2006-09-12 | Xerox Corporation | Transparent injection of specific content into web pages viewed while browsing |
US20010011275A1 (en) * | 2000-01-31 | 2001-08-02 | Benjamin Lin | Distributive web page management system |
US20010044834A1 (en) * | 2000-03-22 | 2001-11-22 | Robert Bradshaw | Method and apparatus for automatically deploying data in a computer network |
US20020035584A1 (en) * | 2000-05-09 | 2002-03-21 | Paul Scheier | icFoundation web site development software and icFoundation biztalk server 2000 integration |
AU2001274861A1 (en) * | 2000-05-17 | 2001-11-26 | Interwoven, Inc. | Method and apparatus for automatically deploying data and simultaneously executing computer program scripts in computer network |
US7054885B1 (en) * | 2000-05-23 | 2006-05-30 | Rockwell Collins, Inc. | Method and system for managing the configuration of an evolving engineering design using an object-oriented database |
US6873957B1 (en) * | 2000-10-27 | 2005-03-29 | Getthere, Inc. | System and method for replicating web-sites |
WO2002037273A2 (en) * | 2000-10-31 | 2002-05-10 | Loudcloud, Inc. | Code deployment systems and methods |
JP2004533673A (ja) * | 2001-03-14 | 2004-11-04 | ユナイテッド パーセル サービス オブ アメリカ インコーポレイテッド | ネットワークを介して返品を開始するためのシステムおよび方法 |
US7200627B2 (en) * | 2001-03-21 | 2007-04-03 | Nokia Corporation | Method and apparatus for generating a directory structure |
US20030033378A1 (en) * | 2001-05-18 | 2003-02-13 | Fred Needham | Method and apparatus for automatically creating and dynamically managing websites |
US7325193B2 (en) * | 2001-06-01 | 2008-01-29 | International Business Machines Corporation | Automated management of internet and/or web site content |
WO2003007181A1 (en) | 2001-07-13 | 2003-01-23 | Performance Training Institute | System and method for providing website business solutions to clients via the internet |
US20030105758A1 (en) * | 2001-12-05 | 2003-06-05 | International Business Machines Corporation | System and method for testing and promoting database update code |
CA2365372A1 (en) * | 2001-12-18 | 2003-06-18 | Ibm Canada Limited-Ibm Canada Limitee | Method and apparatus for editing a production data store by shadowing content |
KR100452470B1 (ko) * | 2002-03-04 | 2004-10-12 | 쉬프트정보통신 주식회사 | 인터넷 환경에서의 가우스 시스템 제어방법 |
US7240077B1 (en) | 2002-12-30 | 2007-07-03 | Amazon.Com, Inc. | Web site content change management |
US20050235256A1 (en) * | 2002-12-30 | 2005-10-20 | Mark Freydl | Web-site development tool |
US9754038B2 (en) | 2003-02-05 | 2017-09-05 | Open Text Sa Ulc | Individually deployable managed objects and system and method for managing the same |
US7421418B2 (en) * | 2003-02-19 | 2008-09-02 | Nahava Inc. | Method and apparatus for fundamental operations on token sequences: computing similarity, extracting term values, and searching efficiently |
US7840614B2 (en) | 2003-02-20 | 2010-11-23 | Bea Systems, Inc. | Virtual content repository application program interface |
JP2004280283A (ja) * | 2003-03-13 | 2004-10-07 | Hitachi Ltd | 分散ファイルシステム、分散ファイルシステムサーバ及び分散ファイルシステムへのアクセス方法 |
JP4320195B2 (ja) * | 2003-03-19 | 2009-08-26 | 株式会社日立製作所 | ファイルストレージサービスシステム、ファイル管理装置、ファイル管理方法、id指定型nasサーバ、および、ファイル読出方法 |
US7373594B1 (en) | 2003-04-30 | 2008-05-13 | Amazon.Com, Inc. | Managing the release of electronic content using a template without version logic |
US8005925B1 (en) * | 2003-10-17 | 2011-08-23 | Adobe Systems Incorporated | Live-server content staging |
US7328217B2 (en) * | 2003-11-26 | 2008-02-05 | Symantec Operating Corporation | System and method for detecting and storing file identity change information within a file system |
JP4396242B2 (ja) * | 2003-11-28 | 2010-01-13 | 富士ゼロックス株式会社 | 文書リンク構造情報作成装置及び方法 |
US20050149549A1 (en) * | 2003-12-31 | 2005-07-07 | Jos Jaspers | Content management in web environments |
US20050234921A1 (en) * | 2004-02-18 | 2005-10-20 | Raymond King | System and method for automatic domain-name registration and web publishing |
US20050228816A1 (en) * | 2004-04-13 | 2005-10-13 | Bea Systems, Inc. | System and method for content type versions |
US20050251503A1 (en) * | 2004-04-13 | 2005-11-10 | Bea Systems, Inc. | System and method for content and schema versioning |
US20060041558A1 (en) * | 2004-04-13 | 2006-02-23 | Mccauley Rodney | System and method for content versioning |
US20050256859A1 (en) * | 2004-05-13 | 2005-11-17 | Internation Business Machines Corporation | System, application and method of providing application programs continued access to frozen file systems |
US20060074904A1 (en) * | 2004-09-30 | 2006-04-06 | Mungara Ajay M | Content delivery rendering engine |
US7921076B2 (en) | 2004-12-15 | 2011-04-05 | Oracle International Corporation | Performing an action in response to a file system event |
KR100645965B1 (ko) * | 2005-08-29 | 2006-11-14 | 삼성전자주식회사 | 호스트 장치 및 그의 데이터 관리방법 |
US7627649B2 (en) * | 2005-09-09 | 2009-12-01 | At&T Intellectual Property I, L.P. | Information submission tool for website development |
US7970743B1 (en) | 2005-09-15 | 2011-06-28 | Emc Corporation | Retention and disposition of stored content associated with multiple stored objects |
US8949455B2 (en) | 2005-11-21 | 2015-02-03 | Oracle International Corporation | Path-caching mechanism to improve performance of path-related operations in a repository |
US7814063B1 (en) | 2006-03-07 | 2010-10-12 | Emc Corporation | Retention and disposition of components of a complex stored object |
US7594082B1 (en) | 2006-03-07 | 2009-09-22 | Emc Corporation | Resolving retention policy conflicts |
US7818300B1 (en) | 2006-03-07 | 2010-10-19 | Emc Corporation | Consistent retention and disposition of managed content and associated metadata |
US7849030B2 (en) | 2006-05-31 | 2010-12-07 | Hartford Fire Insurance Company | Method and system for classifying documents |
US7801862B1 (en) * | 2006-09-29 | 2010-09-21 | Emc Corporation | Retention of complex objects |
US8972939B1 (en) * | 2007-04-13 | 2015-03-03 | United Services Automobile Association (Usaa) | Systems and methods for processing and producing content for web sites |
US7739547B2 (en) * | 2007-06-07 | 2010-06-15 | International Business Machines Corporation | Failure recovery and error correction techniques for data loading in information warehouses |
US8949564B2 (en) | 2007-08-06 | 2015-02-03 | Apple Inc. | Staging electronic publications |
WO2009029356A1 (en) * | 2007-08-24 | 2009-03-05 | Ankit Agarwal | Verifying data consistency among multiple structured files |
US9258385B2 (en) * | 2007-09-25 | 2016-02-09 | Infineon Technologies Ag | Method for loading a program module into a network device and network with network devices |
JP2009187136A (ja) * | 2008-02-04 | 2009-08-20 | Fujitsu Ltd | 電子ファイル管理装置および電子ファイル管理方法 |
EP2271984A4 (en) * | 2008-04-28 | 2012-01-18 | Salesforce Com Inc | OBJECT-BASED SYSTEM FOR CREATING AND MANAGING WEB SITES AND THEIR CONTENT |
US9310980B2 (en) | 2012-08-21 | 2016-04-12 | Beyondvia Technologies | Systems and methods for performance comparisons utilizing an infinite cylinder user interface |
US8769423B2 (en) | 2008-04-30 | 2014-07-01 | Beyondvia Technologies | Content distribution systems and methods using digital images |
US8806353B2 (en) * | 2008-04-30 | 2014-08-12 | Beyondvia Technologies | Mobile electronic communications dialog using sequenced digital images |
US10304126B2 (en) | 2008-04-30 | 2019-05-28 | Beyondvia Technologies | Visual communication systems and methods designing and building entire experiences |
US8074176B2 (en) * | 2008-04-30 | 2011-12-06 | Beyondvia Technologies, Llc | Electronic communications dialog using sequenced digital images stored in an image dictionary |
US9305026B2 (en) | 2008-04-30 | 2016-04-05 | Beyondvia Technologies | Systems and methods for digital images utilizing an infinite cylinder user interface |
US20110145728A1 (en) * | 2009-12-16 | 2011-06-16 | Monika Bishop | Rich content manager (rcm) |
US20110202384A1 (en) * | 2010-02-17 | 2011-08-18 | Rabstejnek Wayne S | Enterprise Rendering Platform |
US9223892B2 (en) | 2010-09-30 | 2015-12-29 | Salesforce.Com, Inc. | Device abstraction for page generation |
US9560130B2 (en) * | 2010-09-30 | 2017-01-31 | Microsoft Technology Licensing, Llc | Presenting availability statuses of synchronized objects |
US8935360B2 (en) | 2010-12-03 | 2015-01-13 | Salesforce.Com, Inc. | Techniques for metadata-driven dynamic content serving |
US9819570B2 (en) * | 2013-10-09 | 2017-11-14 | International Business Machines Corporation | Dynamic symbolic links for referencing in a file system |
US9292482B1 (en) * | 2015-04-30 | 2016-03-22 | Workiva Inc. | System and method for convergent document collaboration |
US10325014B2 (en) | 2015-04-30 | 2019-06-18 | Workiva Inc. | System and method for convergent document collaboration |
JP6604672B2 (ja) * | 2017-10-31 | 2019-11-13 | デルタ ピーディーエス カンパニー,リミテッド | フォルダ基盤のファイル管理装置 |
US11755825B2 (en) | 2019-09-12 | 2023-09-12 | Workiva Inc. | Method, system, and computing device for facilitating private drafting |
US11100281B1 (en) | 2020-08-17 | 2021-08-24 | Workiva Inc. | System and method for maintaining links and revisions |
US11443108B2 (en) | 2020-08-17 | 2022-09-13 | Workiva Inc. | System and method for document management using branching |
US11100277B1 (en) | 2021-02-15 | 2021-08-24 | Workiva Inc. | Systems, methods, and computer-readable media for flow-through formatting for links |
US11354362B1 (en) | 2021-05-06 | 2022-06-07 | Workiva Inc. | System and method for copying linked documents |
US11640495B1 (en) | 2021-10-15 | 2023-05-02 | Workiva Inc. | Systems and methods for translation comments flowback |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0229232A2 (en) | 1985-12-31 | 1987-07-22 | Tektronix, Inc. | File management system |
US5008853A (en) * | 1987-12-02 | 1991-04-16 | Xerox Corporation | Representation of collaborative multi-user activities relative to shared structured data objects in a networked workstation environment |
US5220657A (en) * | 1987-12-02 | 1993-06-15 | Xerox Corporation | Updating local copy of shared data in a collaborative system |
JPH0540757A (ja) * | 1991-01-28 | 1993-02-19 | Fujitsu Ltd | 文書処理装置 |
US5193180A (en) | 1991-06-21 | 1993-03-09 | Pure Software Inc. | System for modifying relocatable object code files to monitor accesses to dynamically allocated memory |
JPH0561657A (ja) * | 1991-09-04 | 1993-03-12 | Pfu Ltd | プログラム編集方式 |
JPH0588867A (ja) * | 1991-09-27 | 1993-04-09 | Toshiba Corp | ソフトウエア構成管理方式 |
US5515491A (en) * | 1992-12-31 | 1996-05-07 | International Business Machines Corporation | Method and system for managing communications within a collaborative data processing system |
US5574898A (en) | 1993-01-08 | 1996-11-12 | Atria Software, Inc. | Dynamic software version auditor which monitors a process to provide a list of objects that are accessed |
US5649200A (en) | 1993-01-08 | 1997-07-15 | Atria Software, Inc. | Dynamic rule-based version control system |
US5659747A (en) | 1993-04-22 | 1997-08-19 | Microsoft Corporation | Multiple level undo/redo mechanism |
JPH07182369A (ja) * | 1993-12-24 | 1995-07-21 | Matsushita Electric Ind Co Ltd | 文書ファイル管理装置及び文書統合装置並びに文書管理システム |
US5675802A (en) | 1995-03-31 | 1997-10-07 | Pure Atria Corporation | Version control system for geographically distributed software development |
JP2972548B2 (ja) * | 1995-05-23 | 1999-11-08 | 東北日本電気ソフトウェア株式会社 | ファイル管理方式 |
JPH09138793A (ja) * | 1995-11-14 | 1997-05-27 | Matsushita Electric Ind Co Ltd | ハイパーテキスト作成装置 |
JPH09330211A (ja) * | 1996-04-12 | 1997-12-22 | Fujitsu Ltd | ソフトウェア生産物の構成管理システムおよび分散共有管理システム |
US6151609A (en) * | 1996-08-16 | 2000-11-21 | Electronic Data Systems Corporation | Remote editor system |
US6240444B1 (en) * | 1996-09-27 | 2001-05-29 | International Business Machines Corporation | Internet web page sharing |
US6233600B1 (en) * | 1997-07-15 | 2001-05-15 | Eroom Technology, Inc. | Method and system for providing a networked collaborative work environment |
US6230185B1 (en) * | 1997-07-15 | 2001-05-08 | Eroom Technology, Inc. | Method and apparatus for facilitating communication between collaborators in a networked environment |
US6240414B1 (en) * | 1997-09-28 | 2001-05-29 | Eisolutions, Inc. | Method of resolving data conflicts in a shared data environment |
US6018747A (en) * | 1997-11-26 | 2000-01-25 | International Business Machines Corporation | Method for generating and reconstructing in-place delta files |
-
1999
- 1999-02-03 US US09/244,333 patent/US6505212B2/en not_active Expired - Lifetime
- 1999-02-04 JP JP2000530856A patent/JP2002503000A/ja active Pending
- 1999-02-04 AU AU25837/99A patent/AU2583799A/en not_active Abandoned
- 1999-02-04 DE DE69902752T patent/DE69902752T2/de not_active Expired - Fee Related
- 1999-02-04 CN CN99804877A patent/CN1318168A/zh active Pending
- 1999-02-04 ES ES99905745T patent/ES2183514T3/es not_active Expired - Lifetime
- 1999-02-04 CA CA002319557A patent/CA2319557A1/en not_active Abandoned
- 1999-02-04 PT PT99905745T patent/PT1053523E/pt unknown
- 1999-02-04 DK DK99905745T patent/DK1053523T3/da active
- 1999-02-04 AT AT99905745T patent/ATE223590T1/de not_active IP Right Cessation
- 1999-02-04 BR BR9908552-6A patent/BR9908552A/pt not_active IP Right Cessation
- 1999-02-04 WO PCT/US1999/002434 patent/WO1999040509A2/en not_active Application Discontinuation
- 1999-02-04 EP EP99905745A patent/EP1053523B1/en not_active Expired - Lifetime
- 1999-02-04 KR KR1020007008540A patent/KR20010040666A/ko not_active Application Discontinuation
-
2008
- 2008-08-06 JP JP2008203263A patent/JP2009009590A/ja active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1307545C (zh) * | 2002-12-24 | 2007-03-28 | 鸿富锦精密工业(深圳)有限公司 | 面向对象的商业网站架设系统 |
CN102364464A (zh) * | 2010-09-17 | 2012-02-29 | 微软公司 | 对象实例版本化 |
CN102541868A (zh) * | 2010-12-15 | 2012-07-04 | 苏州荣盈科技有限公司 | 一种网站文件管理的操作方法 |
CN103703457A (zh) * | 2011-06-20 | 2014-04-02 | 谷歌公司 | 收集关于web页面的用户反馈 |
CN103703457B (zh) * | 2011-06-20 | 2015-09-30 | 谷歌公司 | 收集关于web页面的用户反馈 |
CN112363990A (zh) * | 2020-11-09 | 2021-02-12 | 北京磨刀刻石科技有限公司 | 一种设计文件在线版本管理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20020049697A1 (en) | 2002-04-25 |
ATE223590T1 (de) | 2002-09-15 |
EP1053523B1 (en) | 2002-09-04 |
DE69902752D1 (de) | 2002-10-10 |
DK1053523T3 (da) | 2003-01-06 |
DE69902752T2 (de) | 2003-06-05 |
AU2583799A (en) | 1999-08-23 |
US6505212B2 (en) | 2003-01-07 |
JP2002503000A (ja) | 2002-01-29 |
KR20010040666A (ko) | 2001-05-15 |
WO1999040509A3 (en) | 1999-11-25 |
CA2319557A1 (en) | 1999-08-12 |
BR9908552A (pt) | 2001-10-16 |
WO1999040509A2 (en) | 1999-08-12 |
JP2009009590A (ja) | 2009-01-15 |
PT1053523E (pt) | 2003-01-31 |
ES2183514T3 (es) | 2003-03-16 |
EP1053523A2 (en) | 2000-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1318168A (zh) | 网站开发的系统和方法 | |
US7685152B2 (en) | Method and apparatus for loading data from a spreadsheet to a relational database table | |
CN1610907A (zh) | 基于共同元素的用于过滤和组织条目的系统 | |
CN1130656C (zh) | 对一个存储文件的若干文件拷贝进行协调的方法 | |
CN1667609A (zh) | 文档信息管理系统和文档信息管理方法 | |
EP1766539B1 (en) | Data compilation apparatus and method | |
CN1759389A (zh) | 利用虚拟文件夹的系统和方法 | |
CN1315017A (zh) | 包含内部引用的两种版本数据表格之间的差别提取 | |
CN1759397A (zh) | 对数据的函数应用的结果进行结构化索引 | |
CN1647076A (zh) | 查询关系数据库的方法和设备 | |
CN1606300A (zh) | 数据处理系统中分配图像的方法与系统 | |
CN1282928A (zh) | 提供本国语言查询服务的方法和系统 | |
CN1161505A (zh) | 用于自动修改数据库存取方法的系统和方法 | |
CN1786950A (zh) | 处理抽象查询的方法和系统 | |
CN1745375A (zh) | 内容管理系统及过程 | |
CN101044481A (zh) | 用于搜索、导航和排名个人网中的文档的方法、系统和计算机程序产品 | |
CN1934569A (zh) | 集成有用户注释的搜索系统和方法 | |
CN1761962A (zh) | 将非结构化数据实时聚集为结构化数据以便关系数据库引擎进行sql处理 | |
CN1272189A (zh) | 预取信息的方法和系统 | |
CN1441354A (zh) | 交换方法和交换设备 | |
CN1269897A (zh) | 用于选择数据集的方法和/或系统 | |
CN1959674A (zh) | 网络搜索方法、网络搜索设备和用户终端 | |
CN101080714A (zh) | 用于由数据库服务器执行文件操作的基础结构 | |
CN1573753A (zh) | 数据库对象脚本生成方法和系统 | |
CN1875344A (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 |