KR101586419B1 - Gesture-based collaboration - Google Patents

Gesture-based collaboration Download PDF

Info

Publication number
KR101586419B1
KR101586419B1 KR1020107011106A KR20107011106A KR101586419B1 KR 101586419 B1 KR101586419 B1 KR 101586419B1 KR 1020107011106 A KR1020107011106 A KR 1020107011106A KR 20107011106 A KR20107011106 A KR 20107011106A KR 101586419 B1 KR101586419 B1 KR 101586419B1
Authority
KR
South Korea
Prior art keywords
application
data
xml
component
computing device
Prior art date
Application number
KR1020107011106A
Other languages
Korean (ko)
Other versions
KR20100105544A (en
Inventor
다니엘 아더슨
Original Assignee
엑세리온 악티에볼라그
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 엑세리온 악티에볼라그 filed Critical 엑세리온 악티에볼라그
Publication of KR20100105544A publication Critical patent/KR20100105544A/en
Application granted granted Critical
Publication of KR101586419B1 publication Critical patent/KR101586419B1/en

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Abstract

일반적으로 설명하면, 본 발명은, 컴퓨터 네트워크들의 연결성을 상승시키는 더 효율적인 방법들을 제공하는 네트워크 오퍼레이팅 시스템에 관한 것이다. 일 실시예에서, XML 프로그래밍 랭귀지로 작성된 상위 레벨 어플리케이션 코드를 입력으로 받아들이는 XML 가상 머신이 구현된다. XML 프로그래밍 랭귀지로 작성된 어플리케이션 코드를 컴퓨터 플랫폼들에 걸쳐 실행하기에 적합한 코드로 해석 또는 번역하는 기능성이 제공된다. 또한, XML 가상 머신은, 어플리케이션으로부터 공통 데이터 모델까지 진정한 데이터 추상화를 가능하게 하는 모델 뷰 컨트롤러 디자인 패러다임을 지원한다. 각 인스턴스들이 잠재적으로 멀티 뷰들을 지원하는, 멀티 인스턴스 어플리케이션들이 생성되고 실행될 수 있다.In general terms, the present invention relates to a network operating system that provides more efficient ways to increase the connectivity of computer networks. In one embodiment, an XML virtual machine is implemented that accepts high level application code written as an XML programming language as input. The ability to interpret or translate application code written in XML programming language into code suitable for execution across computer platforms is provided. The XML virtual machine also supports a model view controller design paradigm that enables true data abstraction from applications to common data models. Multi-instance applications, where each instance potentially supports multi-views, can be created and executed.

Figure R1020107011106
Figure R1020107011106

Description

제스쳐 기반 협업{GESTURE-BASED COLLABORATION}GESTURE-BASED COLLABORATION

인터넷 프로토콜(Internet Protocol, IP)과 같은 일반 프로토콜들에 따라 데이터를 교환하는 컴퓨터 네트워크는 원격 시스템들과 사용자들간 다양한 태스크를 수행하기 위해 점점 더 사용된다. 컴퓨터 네트워크로부터 이용 가능한 연결성(connectivity)은 조직들과 다른 사람들이 협업 프로세스(collaborative process)에의 참여를 가능하게 하는 솔루션을 찾도록 하였다. 이에 관해, 현존하는 많은 웹 사이트들, 네트워크 포탈들 및 분산된 어플리케이션들은 사용자들이 다양한 방법들로 데이터를 공유하고 협업할 수 있도록 한다. 협업을 더 지원하기 위해, 자원들은 네트워크의 서비스로 이용 가능해지도록 점점 더 만들어지고 있다. 일반적으로 설명하면, 서비스는 기본 기술들로부터 독립된 네트워크로부터 접속 가능하도록 하는 소프트웨어와 하드웨어를 지칭한다. 따라서 네트워크 서비스는, 그 서비스가 구현된 오퍼레이팅 시스템, 프로그래밍 언어들 및 하드웨어 구성 요소들에 "느슨하게 결합(loosely coupled)"되어 있다고 자주 설명된다. 결과적으로, 서로 다른 기본 기술들이 이용되더라도, 네트워크 서비스들은 분산된 어플리케이션들을 생성하기 위해 결합될 수 있다. Computer networks that exchange data according to common protocols such as Internet Protocol (IP) are increasingly used to perform various tasks between remote systems and users. The connectivity available from the computer network has led organizations and others to find solutions that enable them to participate in the collaborative process. In this regard, many existing Web sites, network portals, and distributed applications allow users to share and collaborate on data in a variety of ways. To further support collaboration, resources are increasingly being made available as services on the network. Generally speaking, a service refers to software and hardware that make it accessible from a network independent of the underlying technologies. Thus, network services are often described as being "loosely coupled" to operating systems, programming languages, and hardware components in which the services are implemented. As a result, even if different basic technologies are used, network services can be combined to create distributed applications.

"클라우드(Cloud)" 컴퓨팅이란 용어는 네트워크로부터 이용가능해진 서비스의 수가 증가하는 경향을 설명하기 위해 자주 사용된다. 네트워크 대역폭과 연결성이 증가하면서, 클라우드 컴퓨팅의 어플리케이션들과 경제적 이익들이 계속 증대될 것이다. 그러나, 현존하는 시스템들은 네트워크를 통한 통신들을 관리하고 협업을 이용하기 위해 기계 중심적인 오퍼레이팅 시스템을 이용한다. 이에 관해, 기계 중심적인 오퍼레이팅 시스템의 코어 디자인은 인터넷과 같은 컴퓨터 네트워크들의 개발 전에 확립되었다. 결과적으로, 현존하는 시스템들은, 네트워크 통신들이 어플리케이션들과 사용자 경험의 다른 측면들로 용이하게 집적되는, 일반화된 협업 환경을 제공할 수 없다. 대신에, 협업 프로세스에서 공유와 참여를 이용하도록 하는 개발중인 어플리케이션들은, 모든 사용자들 및/또는 조직들에게 여전히 몹시 힘들며 궁극적으로 너무 어렵거나 비싸다. 그러므로, 컴퓨터 네트워크들의 연결성에 영향을 미치는 더욱 효율적인 방법들을 제공하는 네트워크 오퍼레이팅 시스템에 대한 요구가 존재한다.The term "cloud" computing is often used to describe the tendency to increase the number of services available from the network. With increased network bandwidth and connectivity, the applications and economic benefits of cloud computing will continue to grow. However, existing systems use a machine-centric operating system to manage communications over the network and use collaboration. In this regard, the core design of a machine-centric operating system was established prior to the development of computer networks such as the Internet. As a result, existing systems can not provide a generalized collaborative environment in which network communications are easily integrated into applications and other aspects of the user experience. Instead, applications under development that enable sharing and participation in the collaborative process are still very difficult for all users and / or organizations, and ultimately too difficult or expensive. Therefore, there is a need for a network operating system that provides more efficient ways of affecting the connectivity of computer networks.

일반적으로 설명하면, 본 발명은 컴퓨터 네트워크들의 연결성에 영향을 미치는 더욱 효율적인 방법을 제공하는 네트워크 오퍼레이팅 시스템에 관한 것이다. 일 실시예에서, XML 프로그래밍 언어로 작성된 상위 레벨 어플리케이션 코드를 입력으로 받아들이는 XML 가상 머신이 구현된다. XML 프로그래밍 언어로 작성된 어플리케이션 코드를 컴퓨터 플랫폼들에서 실행되기에 적합한 코드로 해석하거나 번역하는 기능성이 제공된다. 더욱이, XML 가상 머신은 어플리케이션들로부터 공동 데이터 모델까지 진정한 데이터 추상화를 가능하게 하는 모델 뷰 컨트롤러(Model View Controller, MVC) 디자인 패러다임을 지원한다. 각 인스턴스가 멀티 뷰들을 지원하는 복수 인스턴스 어플리케이션들이 생성되고 실행될 수 있다.Generally speaking, the present invention relates to a network operating system that provides a more efficient method of affecting the connectivity of computer networks. In one embodiment, an XML virtual machine is implemented that accepts high level application code written in an XML programming language as input. The ability to interpret or translate application code written in an XML programming language into code suitable for execution on computer platforms is provided. Moreover, the XML virtual machine supports a Model View Controller (MVC) design paradigm that enables true data abstraction from applications to common data models. Multiple instance applications can be created and executed with each instance supporting multiple views.

본 발명의 상술한 측면들과 수반되는 이점들은, 첨부된 도면과 함께 이하의 상세한 설명을 참조하면, 용이하게 이해될 것이다.
도 1은 본 발명의 측면들을 설명하기에 적합한 서버측 데이터 센터와 복수의 클라이언트 컴퓨터를 포함하는 네트워킹 환경의 예시적인 그림 도시이다.
도 2는 본 발명의 측면들을 설명하기에 적합한 서버측 데이터 센터와 복수의 클라이언트 컴퓨터를 포함하는 네트워킹 환경의 예시적인 그림 도시이다.
도3은 본 발명의 측면들을 설명하기에 적합한 컴퓨팅 장치의 예시적인 하드웨어 아키텍쳐를 도시한 블록 다이어그램이다.
도 4A-C는 본 발명이 구현될 수 있는 예시적인 플랫폼 환경들의 블록 다이어그램들이다.
도 5A-B는 본 발명의 측면들을 설명하기에 적합한 서버측 데이터 센터와 복수의 클라이언트 컴퓨터를 포함하는 네트워킹 환경의 예시적인 그림 도시이다.
도 6A-B는 본 발명의 측면들을 설명하기에 적합한 어플리케이션에 연관된 예시적인 프로세스 및 UI XML 문서들을 도시한다.
도 7A-C는 도 6A-B에서 시맨틱하게 설명된 어플리케이션의 그래픽 요소들을 시각적으로 도시한 예시적인 그래픽 디스플레이를 도시하고 있다.
도 8A-B는 본 발명의 측면들을 설명하게 적합한 컴포넌트들의 그림 도시들이다.
도 9는 본 발명의 측면들을 구현하도록 설정된 예시적인 매니저들을 가진 블록 다이어그램이다.
도 10A-C는 본 발명의 일 실시예에 따른 어플리케이션 패키지를 오픈하기 위한 프로세싱을 처리하는 예시적인 어플리케이션 시작 루틴을 설명하는 다이어그램들이다.
도 11은 어플리케이션의 프로세스 코드에 정의된 로직을 오픈하고 초기화하는 루틴을 설명하는 예시적인 플로우 다이어그램이다.
도 12A-B는 작업들을 프로세스 단계에서 실행되도록 설정된 실행 메소드를 설명하는 예시적인 플로우 다이어그램을 도시한다.
도 13은 본 발명의 일 실시예에 따른 XML 문서를 오픈하는 오픈 핸들링 루틴의 다이어그램이다.
도 14A-14B는 본 발명의 측면들을 설명하기에 적합한 오브젝트들 사이의 상호작용들을 도시한 다이어그램들이다.
도 15A-B는 본 발명의 일 실시예에 따른 기능성을 구현하는 동작 핸들링 루틴을 설명하는 예시적인 플로우 다이어그램이다.
도 16은 본 발명의 일 실시예에 따른 오브젝트를 데이터 모델에 바인드하는 바인드 핸들링 루틴의 다이어그램이다.
도 17A-B는 본 발명의 일 실시예에 따른 활성화된 트리거에 반응하여 어플리케이션 코드가 실행되도록 하는 트리거 활성화 루틴을 도시한 다이어그램들이다.
도 18은 이밸류에이션에 기초하여 어플리케이션 실행의 플로우를 지시하는 이밸류에이션을 수행하도록 설정된 판단 핸들링 루틴의 다이어그램이다.
도 19는 본 발명의 일 실시예에 따른 변경 작업을 구현하기 위한 로직을 도시한 변경 핸들링 루틴의 다이어그램이다.
도 20A-C는 본 발명의 일 실시예에 따른 데이터 모델의 컨텐츠를 수정하기 위한 로직을 구현하는 데이터 업데이트 루틴을 도시한 다이어그램들이다.
도 21은 본 발명의 일 실시예에 따른 데이터 모델에 컴포넌트들 규칙들을 설정하기 위한 로직을 도시한 설정 규칙 루틴의 다이어그램이다.
도 22는 본 발명의 일 실시예에 따른 데이터 업데이트를 오브젝트들에 통지하는 노티파이 리스너 루틴의 다이어그램이다.
도 23은 본 발명의 일 실시예에 따른 어플리케이션들 뷰를 렌더링되게 하는 렌더링 루틴의 다이어그램이다.
도 24는 본 발명의 일 실시예에 따른 어플리케이션들이 다양한 예시적인 데이터 소스들과 상호작용하는 방법들을 설명하기에 적합한 블록 다이어그램을 설명한다.
도 25는 본 발명에 의해 제공된 XML 파일 시스템을 설명하기에 적합한 블록 다이어그램을 설명한다.
도 26은 본 발명의 일 실시예에 따른 네트워크를 걸쳐 데이터의 동기화가 가능하도록 설정된 메시지 서버를 설명한다.
도 27은 본 발명의 다른 실시예들에 따른 메시지 서버의 추가적인 측면들을 설명한다.
도 28A-28D는 본 발명에 의해 제공된 파일 시스템으로부터 파일을 검색하는 예시적인 방법을 설명한다.
도 28E는 본 발명의 측면들을 설명하기에 적합한 예시적인 파일의 발췌를 설명한다.
도 29는 본 발명의 일 실시예에 따른 파일들의 목록을 검색하도록 설정된 메소드를 설명한다.
도 30A-30C는 본 발명의 다른 실시예에 따른 XML 파일 시스템 내에서 파일을 생성하는 메소드를 설명한다.
도 31A-31E는 본 발명의 다른 실시예에 따른 XML 파일 시스템 내에 존재하는 파일을 오픈하는 메소드를 설명한다.
도 32A-B는 본 발명의 일 실시예에 따른 클라이언트 컴퓨터 상의 네트워크 오퍼레이팅 시스템의 시동을 시작하는 방법을 설명한다.
도 33은 본 발명의 다른 실시예에 따른네트워크 오퍼레이팅 시스템 그룹을 탑재하는 방법을 설명한다.
도 34는 본 발명의 일 실시예에 따른 클라이언트 컴퓨터를 온라인 상태에서 오프라인 상태로 천이하는 메소드를 설명한다.
도 34B는 본 발명의 다른 실시예에 따른 네트워크 협업을 위해 사용될 수 있는 복수의 드라이브들의 예시적인 그림 도시를 설명한다.
도 35는 본 발명의 다른 실시예에 따른 클라이언트 컴퓨터가 오프라인 상태에서 동작할 때 온라인 상태로 클라이언트 컴퓨터를 다시 천이하는 방법을 설명한다.
도 36은 본 발명의 다른 실시예에 따른 개선된 네트워크 통신들을 가능하게 하는 방법으로 새로운 파일을 생성하는 요청을 처리하는 메소드를 설명한다.
도 37은 본 발명의 추가적인 측면들을 설명하기에 적합한 채팅 어플리케이션과 함게 이용되는 공유 데이터 파일을 설명한다.
도 38은 본 발명의 다른 실시예에 따른 컴포넌트들 사이의 관계와 채팅 어플리케이션에 의해 이용되는 데이터 모델을 설명한다.
도 39는 본 발명의 다른 실시예에 따른 채팅 대화를 가능하게 하는데 이용되는 공유 데이터 파일의 업데이팅을 설명한다.
도 40은 본 발명의 다른 실시예에 따른 채팅 대화에서 수행되는 통신들의 예시적인 세트를 설명한다.
도 41은 복수의 클라이언트들 사이에서 협업 통신을 수행할 때 공유 데이터의 이용을 설명한다.
도 42는 본 발명의 추가적인 측면등를 설명하기에 적합한 예시적인 어플리케이션의 유저 인터페이스를 도시한다.
도 43은 본 발명의 추가적인 측면들을 설명하기에 적합한 예시적인 어플리케이션의 유저 인터페이스를 도시한다.
클라이언트 컴퓨터들을 포함하는 네트워킹 환경의 예시적인 그림 도시이다.
도 45는 본 발명의 일 실시예에 따라서 협업 세션이 시작되도록 하는 협업 시작 루틴의 다이어그램이다.
도 46은 본 발명의 일 실시예에 따라서 서로 다른 클라이언트들에서 실행되는 어플리케이션이 동기화도록 하는 상태 동기화 루틴의 다이어그램이다.
도 47은 본 발명의 추가적인 측면들을 설명하기에 적합한 예시적인 어플리케이션의 유저 인터페이스를 도시한다.
BRIEF DESCRIPTION OF THE DRAWINGS The foregoing aspects and the attendant advantages of the present invention will be readily appreciated upon reference to the following detailed description, taken in conjunction with the accompanying drawings, in which: FIG.
1 is an exemplary pictorial illustration of a networking environment including a server-side data center and a plurality of client computers suitable for describing aspects of the present invention.
2 is an exemplary pictorial illustration of a networking environment including a server-side data center and a plurality of client computers suitable for describing aspects of the present invention.
3 is a block diagram illustrating an exemplary hardware architecture of a computing device suitable for illustrating aspects of the present invention.
4A-C are block diagrams of exemplary platform environments in which the present invention may be implemented.
5A-B are exemplary pictorial views of a networking environment including a server-side data center and a plurality of client computers suitable for describing aspects of the present invention.
6A-B illustrate exemplary process and UI XML documents associated with an application suitable for describing aspects of the present invention.
Figures 7A-C illustrate an exemplary graphical display that graphically illustrates graphical elements of an application semantically described in Figures 6A-B.
8A-B are pictorial illustrations of components suitable to illustrate aspects of the present invention.
Figure 9 is a block diagram with exemplary managers configured to implement aspects of the present invention.
10A-C are diagrams illustrating an exemplary application launching routine for processing processing for opening an application package in accordance with an embodiment of the present invention.
Figure 11 is an exemplary flow diagram illustrating routines for opening and initializing logic defined in the process code of an application.
12A-B illustrate an exemplary flow diagram illustrating an execution method that is set up to execute tasks in a process step.
13 is a diagram of an open handling routine for opening an XML document according to an embodiment of the present invention.
14A-14B are diagrams illustrating interactions between objects suitable to illustrate aspects of the present invention.
15A-B are exemplary flow diagrams illustrating an action handling routine that implements functionality in accordance with an embodiment of the invention.
16 is a diagram of a bind handling routine for binding an object to a data model in accordance with an embodiment of the present invention.
17A-B are diagrams illustrating a trigger activation routine that causes an application code to execute in response to an activated trigger in accordance with an embodiment of the present invention.
Figure 18 is a diagram of a decision handling routine that is set up to perform this valuation indicating the flow of application execution based on this valuation.
19 is a diagram of a change handling routine that illustrates logic for implementing a change operation in accordance with an embodiment of the present invention.
20A-C are diagrams illustrating a data update routine that implements logic for modifying the content of a data model in accordance with an embodiment of the present invention.
21 is a diagram of a configuration rule routine illustrating logic for setting rules for components in a data model according to an embodiment of the invention.
22 is a diagram of a notify listener routine that notifies objects of data updates in accordance with an embodiment of the present invention.
23 is a diagram of a rendering routine that causes an application view to be rendered in accordance with an embodiment of the present invention.
Figure 24 illustrates a block diagram suitable for illustrating how applications in accordance with an embodiment of the invention interact with various exemplary data sources.
Figure 25 illustrates a block diagram suitable for describing the XML file system provided by the present invention.
FIG. 26 illustrates a message server set up to enable data synchronization across a network according to an embodiment of the present invention.
Figure 27 illustrates additional aspects of a message server in accordance with other embodiments of the present invention.
28A-28D illustrate an exemplary method for retrieving a file from a file system provided by the present invention.
Figure 28E illustrates an excerpt of an exemplary file suitable for describing aspects of the present invention.
29 illustrates a method set to retrieve a list of files according to an embodiment of the present invention.
30A-30C illustrate methods for creating a file in an XML file system according to another embodiment of the present invention.
31A-31E illustrate a method for opening a file existing in an XML file system according to another embodiment of the present invention.
32A-B illustrate a method for initiating a start-up of a network operating system on a client computer in accordance with an embodiment of the present invention.
FIG. 33 illustrates a method of mounting a network operating system group according to another embodiment of the present invention.
FIG. 34 illustrates a method for transitioning a client computer from an online state to an offline state according to an embodiment of the present invention.
Figure 34B illustrates an illustrative illustration of a plurality of drives that may be used for network collaboration in accordance with another embodiment of the present invention.
Figure 35 illustrates a method for re-transiting a client computer to an on-line state when the client computer operates in an off-line state according to another embodiment of the present invention.
36 illustrates a method for processing a request to create a new file in a manner that enables improved network communications in accordance with another embodiment of the present invention.
Figure 37 illustrates a shared data file used in conjunction with a chat application suitable for illustrating additional aspects of the present invention.
Figure 38 illustrates the relationship between the components and the data model used by the chat application in accordance with another embodiment of the present invention.
Figure 39 illustrates the updating of shared data files used to enable chat conversations in accordance with another embodiment of the present invention.
Figure 40 illustrates an exemplary set of communications performed in a chat conversation according to another embodiment of the present invention.
41 illustrates the use of shared data when performing collaborative communication among a plurality of clients.
Figure 42 illustrates a user interface of an exemplary application suitable for describing additional aspects of the invention and the like.
Figure 43 illustrates a user interface of an exemplary application suitable for illustrating additional aspects of the present invention.
Is an exemplary pictorial illustration of a networking environment including client computers.
45 is a diagram of a collaboration start routine that causes a collaboration session to be started according to one embodiment of the present invention.
46 is a diagram of a state synchronization routine that allows applications running on different clients to synchronize in accordance with one embodiment of the present invention.
Figure 47 illustrates a user interface of an exemplary application suitable for illustrating additional aspects of the present invention.

일반적으로 설명하면, 본 발명의 측면들은 인터넷 수준의 클라우드 컴퓨팅의 개발을 가능하게 하는 네트워크 오퍼레이팅 시스템에 관한 것이다. 실제 실시예에서, 여기서 설명된 네트워크 오퍼레이팅 시스템은 데이터를 표현하는 범용 언어로 XML(eXtensible Markup Language, 확장 마크업 언어)을 이용한다. 따라서, 아래에 제공된 예시들은 XML 구조 데이터와 문서들에 관련된 네트워크 오퍼레이팅 시스템의 기능성을 설명할 수 있다. 이에 관해, 많은 이점들과 시너지들이 이와 관련된 XML을 사용함으로써 달성된다. 그러나, 청구된 기술적 특징의 범위를 벗어나지 않고도 여기서 설명되지 않은 다른 기본 기술들, 또는 기술들의 조합을 이용해서도 본 발명이 구현될 수 있음을 당업자라면 이해할 수 있다. 또한, 이하에서 제공될 설명을 위한 예시들과 설명들은 본 발명을 개시된 정확한 형태들로 철저하게 한정하려고 의도된 것이 아니다. 유사하게, 동일한 결과를 달성하기 위해서, 이하에서 설명될 단계들은 다른 단계들과 상호 변경되거나 조합될 수 있다.Generally speaking, aspects of the invention relate to a network operating system that enables the development of cloud computing on the Internet level. In an actual embodiment, the network operating system described herein uses XML (eXtensible Markup Language) as a general language for representing data. Thus, the examples provided below can illustrate the functionality of a network operating system related to XML structured data and documents. In this regard, many benefits and synergies are achieved by using the associated XML. However, it will be understood by those skilled in the art that the present invention may be implemented using other basic techniques, or combinations of techniques, not described herein without departing from the scope of the claimed technical features. In addition, the illustrations and descriptions for the description provided below are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Similarly, in order to achieve the same result, the steps described below may be mutually modified or combined with other steps.

도 1을 참조하면, 이하의 내용은 본 발명의 측면들을 구현하기 위해 사용될 수 있는 네트워킹 환경(100)의 개요를 제공하기 위한 것이다. 도 1에 도시된 바와 같이, 네트워킹 환경(100)은 서버들(104)에 연관(associated)된 서버측 데이터 센터(102)를 포함한다. 네트워킹 환경(100)은 이동 전화(106), 데스크탑 컴퓨터(108) 및 씬 클라이언트(110)를 포함하는 사용자(112)에 연관된 복수의 클라이언트 컴퓨팅 장치들을 또한 포함한다. 이에 관해, 서버측 데이터 센터(102)는 네트워크(114)를 통해 이동 전화(106), 데스크탑 컴퓨터(108) 및 씬 클라이언트(110)과 통신하며, 네트워크는 로컬 에어리어 네트워크(LAN), 무선 네트워크, 인터넷과 같은 와이드 에어리어 네트워크(WAN) 등으로 구현될 수 있다. 당업자에게 알려져 있듯이, 도 1에 설명된 컴퓨팅 장치들은 네트워크(114)를 통해 파일들, 명령들 및 다른 형태의 데이터를 교환할 수 있다. 그러나, TCP/IP와 같은 네트워크 통신 프로토콜들은 당업자에게 자명하므로, 그 프로토콜들은 여기서 설명되지는 않을 것이다.Referring now to Figure 1, the following is intended to provide an overview of a networking environment 100 that may be used to implement aspects of the invention. As shown in FIG. 1, networking environment 100 includes a server-side data center 102 associated with servers 104. Networking environment 100 also includes a plurality of client computing devices associated with user 112 including mobile phone 106, desktop computer 108 and thin client 110. [ In this regard, the server-side data center 102 communicates with the mobile phone 106, the desktop computer 108 and the thin client 110 via the network 114, which may be a local area network (LAN), a wireless network, A wide area network (WAN) such as the Internet, or the like. As is known to those skilled in the art, the computing devices illustrated in FIG. 1 may exchange files, instructions, and other types of data over the network 114. However, network communication protocols such as TCP / IP will be apparent to those skilled in the art, and the protocols will not be described herein.

현존하는 시스템들에서, 한 종류의 컴퓨팅 장치에서 이용 가능한 어플리케이션 프로그램들은 다른 종류의 장치들과는 호환되지 않을 수 있다. 이 비호환성은 다양한 문제점들을 생성한다. 예를 들어, 범용 컴퓨터에서, 사용자는 이메일 메시지들에 접속하는 특정 어플리케이션을 쓸 것이다. 한편, 이동 전화와 같은 자원이 제한적인 장치에서 이메일에 접속하기 위해서는, 동일하지 않은 특징들과 인터페이스를 가진 또 다른 프로그램이 요구될 수 있다. 이 비호환성은 공통된 사용자 경험을 제공하는데 좋지 않으며 사용자에게 요구되는 지식과 기술의 양을 줄이는데도 좋지 않다. 더욱이, 많은 어플리케이션들이 유사하거나 동일한 기능성을 구현하더라도 과도한 개발 시간이 다른 종류의 장치들을 위한 어플리케이션 개발에 소모된다.In existing systems, application programs available in one type of computing device may not be compatible with other types of devices. This incompatibility creates various problems. For example, on a general purpose computer, a user will write a particular application to access email messages. On the other hand, in order to access e-mail from devices with limited resources such as mobile phones, another program with interfaces and features that are not identical may be required. This incompatibility is not good for providing a common user experience and is not good for reducing the amount of knowledge and skill required for users. Moreover, even though many applications implement similar or identical functionality, excessive development time is spent developing applications for other types of devices.

본 발명의 측면들은 이하의 내용은 단지 예시인 복수의 다른 컨텍스트들에 적용될 수 있다. 일실시예에서, 사용자의 어플리케이션들과 데이터는 네트워크 오퍼레이팅 시스템에 사용할 수 있는 모든 컴퓨팅 장치로부터 접속 가능하다. 도 1에 설명된 바와 같이, 사용자(112)는 이동 전화(106), 데스크탑 컴퓨터(108) 및 씬 클라이언트(110)로부터 네트워크(114)에 접속할 수 있다. 응답으로, 서버측 데이터 센터(102)는 네트워크 오퍼레이팅 시스템 서비스들을 적합한 장치에 전달한다. 더 분명하게는, 네트워크 오퍼레이팅 시스템과 유저 어플리케이션들의 클라이언트측 컴포넌트는 사용자가 네트워크에 접속할 때마다 전달되고 구축될 수 있다. 어플리케이션들은 로컬에서 적합한 클라이언트 컴퓨팅 장치에서 실행되며, 서버들에서는 실행되지 않는다. 사용자 데이터는 클라이언트 컴퓨팅 장치에 일시 저장(cached)되지만, 서버측 데이터 센터(102)에 의해 유지되는 스토리지에서 지속될 것이다. 따라서 클라이언트 컴퓨팅 장치(106-110)와 서버측 데이터 센터(102)간 통신들은 문서들과 업데이트 데이터를 획득하기 위해 주로 수행된다. 클라이언트가 오프라인으로 되는 경우에, 네트워크 오퍼레이팅 시스템의 클라이언트측 컴포넌트는 데이터 업데이트가 로컬에 일시 저장되도록 한다. 이 업데이트들은 서버측 데이터 센터(102)로 전송되며 네트워크가 재설정되면 모든 변경들과 동기화된다.Aspects of the present invention may be applied to a plurality of different contexts, the following being merely exemplary. In one embodiment, the user's applications and data are connectable from any computing device available to the network operating system. The user 112 may access the network 114 from the mobile phone 106, the desktop computer 108 and the thin client 110, as described in FIG. In response, the server-side data center 102 forwards the network operating system services to the appropriate device. More specifically, the network operating system and the client-side components of the user applications can be delivered and constructed each time a user connects to the network. Applications run locally on the appropriate client computing device and not on servers. User data is cached on the client computing device, but will persist in storage maintained by the server-side data center 102. Thus, communications between the client computing device 106-110 and the server-side data center 102 are performed primarily to obtain documents and update data. In case the client goes offline, the client side component of the network operating system causes the data update to be temporarily stored locally. These updates are sent to the server-side data center 102 and are synchronized with all changes once the network is reset.

일실시예에서, 네트워크 오퍼레이팅 시스템은 각 사용자의 컴퓨팅 장치들에 걸쳐 공통된 경험을 제공할 수 있다. 이에 관해, 공통 데스크탑 어플리케이션이 전달되고 이질적인 종류의 컴퓨팅 장치들에서 구축된다. 공통 데스크탑으로부터, 사용자의 모든 어플리케이션 프로그램들과 데이터는 접속될 수 있다. 예를 들어, 네트워크 오퍼레이팅 시스템에 사용할 수 있는 하나의 이메일 프로그램이 사용자(112)에 의해 모든 클라이언트 컴퓨팅 장치들(106-110)로부터 접속될 수 있다. 사용자 데이터는 서버측 데이터 센터(102)에서 이용 가능하고 서비스로 전달되므로, 동일한 어플리케이션들(예를 들어, 이메일 프로그램)과 데이터(예를 들어, 이메일 메시지들)는 어떤 컴퓨팅 장치가 사용되더라도 이용 가능하다. In one embodiment, the network operating system may provide a common experience across the computing devices of each user. In this regard, a common desktop application is delivered and constructed on heterogeneous types of computing devices. From the common desktop, all user application programs and data can be connected. For example, one email program that can be used in a network operating system may be connected from all of the client computing devices 106-110 by the user 112. Because the user data is available in the server-side data center 102 and delivered to the service, the same applications (e.g., e-mail programs) and data (e. Do.

네트워크 오퍼레이팅 시스템이 클라이언트 컴퓨팅 장치에 제공하는 서비스들은 사용자 선호들(preferences)과 다른 변수들에 따라 변경(customized)될 수 있다. 이에 관해, 어떻게 네트워크 오퍼레이팅 시스템 서비스들이 제공될 것인지를 정의한 설정 데이터가 유지된다. 예를 들어, 사용자는 사용중인 컴퓨팅 장치에 따라 사용 가능한 어플리케이션 프로그램들이나 데이터서로 다른 세트들을 가진 선호들을 설정할 수 있다. 다른 예에 의하면, 사용자는 보안되지 않은 무선 연결을 포함하는 많은 억세스 포인트들로부터 네트워크(114)에 연결할 수 있다. 이 예에서, 네트워크 연결의 보안되지 않은 특성 때문에 어떤 서비스들 및/또는 데이터가 접속할 수 없도록 보안 속성들이 설정될 수 있다. 당업자에 의해 이해될 수 있겠지만, 이상의 예들은 네트워크 오퍼레이팅 시스템 서비스들이 본 발명을 이용하여 변경될 수 있는 방법들의 일부를 표현한 것이다.The services that the network operating system provides to the client computing device may be customized according to user preferences and other variables. In this regard, configuration data defining how network operating system services are to be maintained is maintained. For example, a user may set preferences with different sets of application programs or data that are available depending on the computing device in use. According to another example, a user may connect to the network 114 from a number of access points, including unsecured wireless connections. In this example, security attributes may be set such that some services and / or data are not accessible due to the unsecured nature of the network connection. As will be appreciated by those skilled in the art, the above examples represent some of the ways in which network operating system services may be modified using the present invention.

편의를 위해, 도 1은 상호 보완적인 태스크들이 네트워크(114)를 통해 연결된 원격 컴퓨팅 장치들에 의해 실행될 수 있는 네트워크 환경(100)에서 이용될 수 있는 서버측 데이터 센터(102), 서버 컴퓨터들(104), 이동 전화(106), 데스크탑 컴퓨터(108) 및 씬 클라이언트(110)를 설명하고 있다. 그러나, 본 발명은 랩탑 컴퓨터들, 태블릿 컴퓨터들, PDA(personal digital assistant), 하이브리드/임베디드 장치들, 셋탑 박스들, 미디어 센터들 등과 같은, 그러나 여기에 한정되지 않는, 다른 종류의 클라이언트 컴퓨팅 장치들을 이용해서도 수행될 수 있다. 더욱이, 당업자라면 본 발명이 다른 네트워크 구성들에서도 구현될 수 있으며 도 1에 도시된 예는 단지 예시인 것으로 해석되어야 한다는 것을 이해할 수 있다.1 illustrates a server-side data center 102, server computers (e. G., Server computers) 102 that can be utilized in a network environment 100 in which complementary tasks can be executed by remote computing devices connected via a network 114 104, a mobile phone 106, a desktop computer 108, and a thin client 110 are described. However, the present invention is not intended to be limited to other types of client computing devices, such as, but not limited to, laptop computers, tablet computers, personal digital assistants (PDAs), hybrid / embedded devices, set top boxes, media centers, Can also be used. Moreover, it will be appreciated by those skilled in the art that the present invention may be implemented in other network configurations, and that the example shown in FIG. 1 should be construed as being exemplary only.

도 2를 참조하여, 본 발명의 추가적인 측면을 설명하는데 이용될 수 있는 다른 네트워킹 환경(200)을 설명한다. 도 2에 도시된 바와 같이, 서버측 데이터 센터(202)는 기업 네트워크(204)와 같은 사설 네트워크에 결합될 수 있다. 이 예에서, 추가적인 네트워크 오퍼레이팅 시스템 서비스들은 기업 네트워크(204)를 통해 클라이언트들(206, 208, 210)로 직접 제공된다. 그러나 네트워크 오퍼레이팅 시스템은 서버측 데이터 센터(216) 로부터 여전히 제공되고 관리되며, 기업 서버측 데이터 센터(202) 는 추가적인 서비스들을 제공할 뿐이다. 또한, 동일한 추가적인 서비스들은 기업 네트워크(204) 외부의 클라이언트들에도 제공될 수 있다. 이 예에서, 서버측 데이터 센터(202)는 인터넷(214)을 통해 네트워크 서비스들을 제공한다. 상술한 설명과 유사하게, 클라이언트들(206-212)은 네트워크 오퍼레이팅 시스템에 사용할 수 있는 모든 컴퓨팅 장치(이동 전화, 데스크탑 컴퓨터, 씬 클라이언트 등)일 있다. 또 다른 실시예에서, 네트워크된 오퍼레이팅 시스템은 추가적인 서비스들과 함께 기업 서버측 데이터 센터(202)에 의해 직접 제공될 수 있으며 기업 네트워크(204) 외부의 외부 서버측 데이터 센터(216)에 접속을 가능하게 하거나 그렇지 않을 수 있다(보안 설정들에 의함).Referring now to FIG. 2, another networking environment 200 that may be used to illustrate additional aspects of the present invention is described. As shown in FIG. 2, the server-side data center 202 may be coupled to a private network, such as a corporate network 204. In this example, additional network operating system services are provided directly to the clients 206, 208, 210 via the corporate network 204. [ However, the network operating system is still provided and managed from the server-side data center 216, and the enterprise server-side data center 202 only provides additional services. In addition, the same additional services may be provided to clients outside the enterprise network 204 as well. In this example, the server-side data center 202 provides network services over the Internet 214. Similar to the above description, the clients 206-212 are all computing devices (mobile phones, desktop computers, thin clients, etc.) that can be used in a network operating system. In yet another embodiment, the networked operating system may be provided directly by the enterprise server-side data center 202 with additional services and may be connected to an external server-side data center 216 outside the enterprise network 204 (By security settings).

네트워크 오퍼레이팅 시스템은 협업 프로세스들에의 참여를 가능하게 한다. 본 발명의 일 측면은 XML 문서들, 실행 파일들, 바이너리 파일들, 멀티미디어 등 모든 종류의 데이터를 저장할 수 있는 네트워크 저장소(repository)의 역할을 하는 XML 파일 시스템이다. XML 파일 시스템은 물리적인 저장과 데이터 접속을 관리하는 서버측 데이터 센터(202 또는 216)에 구현될 수 있다. 일반적인 파일 시스템 기능들에 더하여, XML 파일 시스템은 정의될 수 있는 다양한 종류의 협업 공간들을 허용한다. 예시적인 실시예에서, 지원되는 협업 공간들의 종류들은 현존하는 협업 공간들 내에서의 부분 집합(예를 들어, 서브 커뮤니티, 서브 그룹 등)뿐만이 아니라 커뮤니티, 그룹, 친구도 포함한다. XML 파일 시스템 내의 루트 폴더는 생성된 각 커뮤니티, 그룹 또는 다른 협업 공간에 대한 저장소 역할을 한다. 또한, 폴더들과 파일들은 개인 사용자들에 연관된 XML 파일 시스템 내에서 생성될 수 있다. 다른 실시예에서, 서로 다른 사용자들간 협업은 XML 파일 시스템 내에서 협업 공간을 공유하는 사용자들이 없어도 동적으로 가능해질 수 있다. 이하에서 상세히 설명되듯이, 실시간으로 협업 세션을 생성하거나 요청들을 승인하도록 하는 메시징 서비스들이 제공된다. 따라서, 현존하는 협업 공간이 정의되지 않았더라도 사용자들은 동적으로 생성된 협업 세션들을 통해 새로운 관계들을 설정할 수 있다.The network operating system enables participation in collaborative processes. One aspect of the present invention is an XML file system serving as a network repository capable of storing all kinds of data such as XML documents, executable files, binary files, multimedia, and the like. The XML file system may be implemented in a server-side data center 202 or 216 that manages physical storage and data connections. In addition to common file system functions, the XML file system allows a wide variety of collaborative spaces that can be defined. In an exemplary embodiment, the types of collaboration spaces supported include not only a subset (e.g., sub-community, sub-group, etc.) within existing collaboration spaces, but also communities, groups, and friends. The root folder within the XML file system acts as a repository for each community, group, or other collaborative space created. Folders and files can also be created within an XML file system associated with individual users. In another embodiment, collaboration between different users may be enabled dynamically without users sharing the collaborative space within the XML file system. As will be described in detail below, messaging services are provided to create a collaboration session in real time or to authorize requests. Thus, users can establish new relationships through dynamically created collaboration sessions even if no existing collaboration space is defined.

네트워크 오퍼레이팅 시스템의 클라이언트측 컴포넌트가 실행되기 시작하면, 로그인 프롬프트는 사용자 정보들(user credential)을 획득하는데 이용될 수 있다. 투명한 억세스(transparent access)를 가능하게 하기 위해, 사용자에 연관된 각 폴더는 클라이언트상의 가상 드라이브로서 XML 파일 시스템으로부터 매핑될 수 있다. 예를 들어, 사용자가 특정 그룹의 멤버이면, 그룹 폴더가 클라이언트 상에서 가장 드라이브로 나타난다. 일실시예에서, XML 파일 시스템 내의 폴더는 협업 공간의 공유된 자원들을 정의하는 XML 구조 데이터를 포함한다. 이 공유된 자원들은 어플리케이션들, 데이터 문서들, 접속 및 보안 설정들(access and security settings), 사용자 목록들, 통계, 일정 등을 포함하지만, 여기에 한정되지는 않는다. XML 파일 시스템은, 일실시예에서, 네트워크된 오퍼레이팅 시스템 환경에서 실행되는 하나 이상의 어플리케이션들에 대한 보관소 및 데이터베이스 대체물로 작업할 수도 있다. 이하에서 상세히 설명되듯이, 협업 및 분산 데이터베이스에서 유지되는 데이터는 본 발명에 의해 제공된 트랜잭션 관리를 통해 자동적으로 동기화될 수 있다. 이러한 종류의 협업 및 분산 데이터베이스를 이용하는 어플리케이션들을 구축함으로써, 어플리케이션들은 데이터베이스의 특징들을 상속하며, 데이터를 손쉽게 공유할 수 있다.When the client-side component of the network operating system begins to execute, the login prompt can be used to obtain user credentials. To enable transparent access, each folder associated with the user can be mapped from the XML file system as a virtual drive on the client. For example, if a user is a member of a specific group, the group folder appears as the most drive on the client. In one embodiment, the folders in the XML file system include XML structure data defining shared resources of the collaboration space. These shared resources include, but are not limited to, applications, data documents, access and security settings, user lists, statistics, schedules, and the like. The XML file system, in one embodiment, may work with repositories and database alternates for one or more applications running in a networked operating system environment. As will be described in detail below, data maintained in collaborative and distributed databases can be automatically synchronized through transaction management provided by the present invention. By building applications that use this kind of collaborative and distributed database, applications inherit the characteristics of the database and can easily share data.

XML 파일 시스템에는 어플리케이션 프로그래밍 인터페이스(API)가 따라가기 때문에, 서버측 데이터 센터(202)의 다른 실시예들이 가능해진다. 이에 관해, XML 파일 시스템으로부터 제공될 수 있는 다른 XML 웹 서비스들은 기업 내에서 레거시 어플리케이션들(legacy applications)과 데이터베이스들 상에서 추상화들이 네트워크된 오퍼레이팅 시스템 환경에서 실행되는 새로운 어플리케이션을 제공하거나 복수의 어플리케이션들을 통할할 수 있도록 요구되는 경우에 바람직하다. XML 파일 시스템의 변경(customized)된 구현들은 지원할 기능의 레벨을 선택할 수 있다. 예를 들어, 트랜잭션들을 동기화하는 지원은 한 지원 레벨에서 생략될 수 있다.Since the XML file system follows an application programming interface (API), other embodiments of the server-side data center 202 become possible. In this regard, other XML Web services that may be provided from an XML file system may provide new applications running in an operating system environment where abstractions are networked on legacy applications and databases within the enterprise, When it is required to be able to do so. Customized implementations of the XML file system can select the level of functionality to support. For example, support for synchronizing transactions may be omitted at one support level.

데이터 접속의 관리에 더하여, XML 파일 시스템은 데이터를 동기화하고 데이터 업데이트들의 트랜잭션 제어를 조정하여 협업을 가능하게 하는 방법으로 사용자들간의 연관들을 생성하고 변경(customize)하는 통합된 프레임워크를 제공한다. 예를 들어, 어플리케이션은 연관된 사용자 데이터와 함께 한 그룹의 사용자들(예를 들어, 친구들)에게 공유될 수 있다. 공유된 어플리케이션과 연관된 사용자 데이터 모두의 기능성은, 다른 자원들과 함께, 그룹 또는 사용자 폴더에 의해 유지되는 XML 문서들에 의해 표현될 수 있다. XML 파일 시스템은 각 사용자들이 공유된 어플리케이션과 연관된 사용자 데이터에 접속할 수 있는 방법을 제공한다. 이러한 방법으로, 공유된 어플리케이션은 전달되고, 같은 그룹 또는 사용자 폴더의 데이터를 조작하는 각 그룹 멤버 조작 데이터에 의해 복수의 클라이언트들에 구축될 수 있다.In addition to managing data connections, the XML file system provides an integrated framework for creating and customizing associations between users in a way that synchronizes data and coordinates the transactional control of data updates to enable collaboration. For example, an application may be shared with a group of users (e.g., friends) with associated user data. The functionality of both user data associated with a shared application may be represented by XML documents maintained by a group or user folder, along with other resources. The XML file system provides a way for each user to access user data associated with a shared application. In this way, a shared application can be delivered and constructed to multiple clients by respective group member manipulation data manipulating data in the same group or user folder.

상술한 바와 같이, 기업 네트워크(204) 외부의 클라이언트들(예를 들어, 클라이언트(212))은 서버측 데이터 센터(202)로부터 서비스들을 획득할 수 있다. 예로서, 종업원 또는 다른 사용자는, 기업 네트워크(204) 외부에 있을 때, 기업 자원들에 대한 접속을 제공받을 수 있다. 따라서, 클라이언트(212)는 인터넷(214)을 통해 서버측 데이터 센터(202)에 접속하는 가정의 컴퓨터, 이동 전화 등이 될 수 있다. 이에 관해, 당업자라면 네트워킹 환경(200)이 도 2에 설명된 것 이외의 추가적인 네트워크들을 포함할 수 있으며, 도 2의 예시적인 구성은 다른 방법에 의해 네트워크 오퍼레이팅 시스템과 추가적인 XML 파일 시스템을 전달하도록 다양하게 재구성될 수 있음을 이해한다. 예를 들어, 클라이언트(212)에 대한 네트워크 억세스 포인트는 로컬 에어리어 네트워커, 무선 네트워크, 와이드 에어리어 네트워크 등으로부터 시작되며, 이는 서버측 데이터 센터(202, 216)에 대해서도 적용될 수 있다.As described above, clients (e.g., client 212) outside the corporate network 204 may obtain services from the server-side data center 202. [ By way of example, an employee or other user may be provided access to corporate resources when they are outside the corporate network 204. Thus, the client 212 may be a home computer, mobile phone, or the like that connects to the server-side data center 202 via the Internet 214. [ In this regard, those skilled in the art will appreciate that the networking environment 200 may include additional networks other than those described in FIG. 2, and the exemplary configuration of FIG. 2 may be varied to convey additional XML file systems with the network operating system ≪ / RTI > For example, the network access point for the client 212 may originate from a local area networker, a wireless network, a wide area network, etc., which may also be applied to the server-side data center 202,216.

다른 실시예에서, 클라이언트들은 하나 이상의 변수들에 따라 기업 서버측 데이터 센터(202)로부터 다른 종류의 서비스들을 획득할 수 있다. 각 클라이언트에 동일한 네트워크 서비스들을 제공하는 대신에, 네트워크 서비스들은 클라이언트의 네트워크 억세스 포인트의 위치에 따라 설정될 수 있다. 예를 들어, 기업 네트워크(204)에 직접 접속하는 클라이언트들(206-210)은 기업에 특정된 추가적인 변경(customized) 서비스들을 제공받을 수 있다. 기업 네트워크(204) 밖에서는, 외부 서비스들이 서버측 데이터 센터(202)로부터 클라이언트(212)(예를 들어, 고객, 공급자, 종업원, 또는 기업에 관련된 사용자)에게 전달될 수 있다. 변경된 네트워크 서비스들의 안전한 전달을 가능하게 하기 위해, 자원들은 다른 종류들의 클라이언트들을 관리하는 서버측 데이터 센터(202)에 의해 할당될 수 있다. 도 2에 도시된 실시예에서, 서버측 데이터 센터(202)는 네트워크 내부의 클라이언트들(206-210)에 변경된 서비스들을 제공하도록 할당된 하드 드라이브(220)를 포함한다. 한편, 하드 드라이브(222)는 기업 네트워크 외부에 있는 클라이언트들, 예를 들어, 클라이언트(212)에 더욱 일반화된 서비스들을 제공하도록 할당될 수 있다. 또 다른 실시예들에서, 클라이언트에 제공되는 서비스들은 사용자 정보들, 설정 정보들, 클라이언트 종류 등과 같은 다른 변수들에 종속될 수 있다.In another embodiment, the clients may obtain different kinds of services from the enterprise server-side data center 202 according to one or more of the variables. Instead of providing the same network services to each client, the network services can be set according to the location of the client's network access point. For example, clients 206-210 connecting directly to corporate network 204 may be provided with additional customized services that are specific to the enterprise. Outside the corporate network 204, external services may be delivered from the server-side data center 202 to the client 212 (e.g., a customer, supplier, employee, or user associated with the enterprise). To enable secure delivery of modified network services, resources may be allocated by the server-side data center 202 managing different kinds of clients. In the embodiment shown in FIG. 2, the server-side data center 202 includes a hard drive 220 assigned to provide changed services to clients 206-210 within the network. On the other hand, the hard drive 222 may be assigned to provide more generalized services to clients, e.g., clients 212, outside the corporate network. In yet other embodiments, the services provided to the client may depend on other variables such as user information, configuration information, client type, and the like.

일측면에서, 네트워크 오퍼레이팅 시스템은 실시간 "비즈니스-투-비즈니스" 협업을 가능하게 하기 위한 더욱 일반화된 프레임 워크를 제공한다. 서로 다른 기업들이 공동 데이터 스토어의 자원들에 접속할 수 있도록 하는 협업 공간이 생성될 수 있다. 도 2에 도시된 예에서, 클라이언트(212)는 서버측 데이터 센터(202)를 유지하는 기업에 대한 협력 기업에 연관될 수 있다. 이에 관해, 도 2에 설명된 클라이언트들은 사용자들이나 서버측 데이터 센터(202)와 상호작용하는 소프트웨어 에이전트들에 의해 운영될 수 있다. 소프트웨어 에이전트들에 의해 운영될 때, 본 발명의 측면들은 기업에 연관된 사용자들 또는 개별적으로 XML 파일 시스템을 이용하는 자원들을 공유하는 EDI(Electronic Data Interchange) 관계를 효율적으로 생성한다. EDI 서비스들은, 보안 요구사항에 따라, 공개적으로 이용 가능한 서버측 데이터 센터(216)에 의해서도 제공될 수 있다. 그룹 폴더는 파트너쉽의 공유된 자원들을 저장 및/또는 EDI의 비즈니스 규칙들을 정의하는 XML 파일 시스템에서 생성될 수 있다. 상술한 설명과 유사하게, 그룹 폴더는 클라이언트(212)에서 가상 드라이브로 매핑될 수 있어서, 기업 네트워크(204) 외부의 공유된 자원들에 대한 투명한 억세스를 제공한다. 중요하게, 공유된 어플리케이션은 서버측 데이터 센터(202)에서 클라이언트들(206-212)로 XML 구조 데이터로서 전달될 수 있다. 각 클라이언트들(206-212)은 로컬에서 어플리케이션을 구축하고 실행하고, 데이터 업데이트들을 XML 파일 시스템 내의 공유된 폴더나 각 사용자들의 개인 폴더들에 보고한다. 일실시예에서, 서버측 데이터 센터(202)는 복수 클라이언트들이 동시에 동일한 문서들에 접속하고 업데이트할 수 있도록 데이터 업데이트 조정을 관리한다. 이 조정은, 데이터가 자체 XML 파일 시스템에 저장되어 있다면, 서버측 데이터 센터(216)에 의해서도 수행될 수 있다.In one aspect, the network operating system provides a more generalized framework for enabling real-time "business-to-business" collaboration. A collaborative space may be created that allows different companies to access the resources of the joint datastore. In the example shown in FIG. 2, the client 212 may be associated with a partner company for the enterprise that maintains the server-side data center 202. In this regard, the clients described in FIG. 2 may be operated by users or by software agents that interact with the server-side data center 202. When operated by software agents, aspects of the present invention efficiently create an Electronic Data Interchange (EDI) relationship that shares enterprise users or resources that individually utilize the XML file system. EDI services may also be provided by the publicly available server-side data center 216, depending on security requirements. Group folders can be created in an XML file system that stores the shared resources of the partnership and / or defines the business rules of the EDI. Similar to the description above, a group folder can be mapped as a virtual drive in the client 212, providing transparent access to shared resources outside the enterprise network 204. [ Significantly, the shared application may be delivered as XML structure data from the server-side data center 202 to the clients 206-212. Each client 206-212 locally builds and runs an application and reports data updates to a shared folder in the XML file system or to individual folders of each user. In one embodiment, the server-side data center 202 manages data update adjustments so that multiple clients can simultaneously access and update the same documents. This adjustment can also be performed by the server-side data center 216 if the data is stored in its own XML file system.

일 측면에서, 네트워크 오퍼레이팅 시스템은 클라이언트들(206-212)이 외부 네트워크 서비스들에 투명한 억세스를 하도록 허용한다. 어플리케이션 프로그램 인터페이스(API)를 이용하여, 모든(내부 또는 외부) 네트워크 서비스와 접속(interface)하는 데이터 핸들링 기능들을 추상화하는 커뮤니케이터(communicator)가 생성될 수 있다. 예로서, 개발자들은 그 중에서도 XML 웹 서비스들, REST 서비스들, XML 자원들, RSS 또는 Atom 피드들, 텍스트, csv 텍스트, HTML(Hypertext Markup Language) 기반 웹 사이트들을 호스팅하는 네트워크 서버들에 접속하는 커뮤니케이터들을 생성할 수 있다. 도 2를 참조하면, 커뮤니케이터 또는 "채널"의 인스턴스는 웹 서비스(218)과 상호작용하기 위해 클라이언트(212)에 의해 인스턴스화될 수 있다. 이 예에서, 네트워크 오퍼레이팅 시스템 서비스들은 공중 네트워크(예를 들어, 인터넷(214))에서 서버측 데이터 센터(216)를 프록시로 사용하는 클라이언트(212)에 대해 접속 가능하다. 또한, 네트워크 오퍼레이팅 서비스들이 사설 네트워크(예를 들어, 기업 네트워크(204))로부터 제공되더라도, 웹 서비스(218)는 커뮤니케이터를 이용하는 클라이언트들(206-210)에 대해 접속 가능하다. 이 예에서, 서버측 데이터 센터(216)는 클라이언트들(206-210)과 웹 서비스(218) 사이의 통신들을 관리하는 프록시 역할을 한다. 따라서, 네트워크 서비스들에 접속할 때, 클라이언트들은 데이터 핸들링 기능들을 추상화하기 위해 커뮤니케이터를 사용할 수 있다. 개발자들에게 클라이언트와 네트워크 서비스간 통신들을 관리하는 코드를 반복적으로 쓸 것을 요구하지 않기 때문에, 본 발명의 이러한 측면은 어플리케이션 개발을 단순화한다.In one aspect, the network operating system allows clients 206-212 to have transparent access to external network services. Using an application program interface (API), a communicator may be created that abstracts data handling functions that interface with all (internal or external) network services. By way of example, developers can connect to network servers hosting XML Web services, REST services, XML resources, RSS or Atom feeds, text, csv text, HTML (Hypertext Markup Language) Lt; / RTI > 2, an instance of a communicator or "channel" may be instantiated by the client 212 to interact with the web service 218. In this example, the network operating system services are connectable to a client 212 that uses the server-side data center 216 as a proxy in a public network (e.g., the Internet 214). Also, although network operating services are provided from a private network (e.g., corporate network 204), web service 218 is connectable to clients 206-210 using the communicator. In this example, the server-side data center 216 serves as a proxy for managing communications between the clients 206-210 and the web service 218. [ Thus, when connecting to network services, clients can use the communicator to abstract data handling functions. This aspect of the present invention simplifies application development, since it does not require developers to repeatedly write code to manage communications between client and network services.

도 2가 기업 네트워크(204)를 설명하고 있지만, 당업자라면 이것은 단순한 예시임을 이해할 수 있다. 대신에, 본 발명은 다른 종류의 네트워크 환경들에서 데이터 동기화와 협업을 가능하게 할 수 있다. 따라서, 도 2를 참조하여 제공된 설명은 인터넷과 같은 와이드 에러이어 네트워크들뿐만 아니라 가정이나 소규모 비즈니스에 의해 유지되는 로컬 에어리어 네트워크들에도 동일하게 적용될 수 있다. 더욱이, 상술한 예들은 각 클라이언트(206-212)에 별개의 네트워크 서비스들을 제공하는 서버측 데이터 센터(202)를 참조하여 만들어졌다. 그러나, 서버측 데이터 센터(202)는 다른 장치나 네트워크의 자원들이나 서비스들을 보완하는 네트워크 서비스들을 제공하도록 구성될 수 있다. 예를 들어, 소규모 비즈니스는 로컬 에어리어 네트워크에 연결된 모든 클라이언트들을 위한 네트워크 드라이브를 유지할 수 있다. 서버측 데이터 센터(202)는 추가 스토리지를 제공하거나 공중 네트워크 장치에 오류가 발생하는 경우 백업을 허용함으로써 서버측 데이터 센터(216)의 공중 네트워크 드라이브를 보완하는 데이터 스토리지 서비스들을 제공할 수 있다. 또 다른 실시예로, 홈 네트워크는 디지털 미디어에 대한 각 로컬 클라이언트 접속을 제공하기 위해 미디어 센터 컴퓨터를 이용할 수 있다. 미디어 센터 컴퓨터의 스토리지를 보완하기 위해, 서버측 데이터 센터(202)에 의해 가상 드라이브가 홈 네트워크에 연결된 모든 장치들에 제공될 수 있다. 이에 관해, 사용자 선호들 또는 다른 설정 변수들에 기초하여, 가상 드라이브는 미디어 센터 컴퓨터와 서버측 데이터 센터(202) 사이에서 데이터의 실제 스토리지를 할당할 수 있다.Although FIG. 2 illustrates enterprise network 204, it is understood by those skilled in the art that this is a simple example. Instead, the present invention may enable data synchronization and collaboration in other types of network environments. Thus, the description provided with reference to FIG. 2 is equally applicable to local area networks maintained by home or small business as well as wide error networks such as the Internet. Moreover, the above examples have been made with reference to a server-side data center 202 that provides separate network services for each client 206-212. However, the server-side data center 202 may be configured to provide network services that complement the resources or services of other devices or networks. For example, a small business can maintain a network drive for all clients connected to the local area network. The server-side data center 202 may provide data storage services that complement the public network drive of the server-side data center 216 by providing additional storage or allowing backup in the event of a failure of the public network device. In another embodiment, the home network may utilize the media center computer to provide each local client connection to the digital media. In order to supplement the storage of the media center computer, a virtual drive may be provided to all devices connected to the home network by the server-side data center 202. In this regard, based on user preferences or other configuration variables, the virtual drive may allocate physical storage of data between the media center computer and the server-side data center 202.

도 3을 참조하여, 컴퓨팅 장치(300)의 예시적인 하드웨어 구조가 설명된다. 도 3이 네트워크 상의 클라이언트로 구현된 컴퓨팅 장치를 참조하여 설명되지만, 이하의 설명은 본 발명을 구현하는데 이용될 수 있는 서버들이나 다른 장치들에도 적용 가능하다. 더욱이, 당업자라면 컴퓨팅 장치(300)가 현재 이용 가능하거나 추후에 개발될 장치들 중 어느 하나일 수 있음을 이해할 수 있다. 가장 기본적인 구성에서, 컴퓨팅 장치(300)는 적어도 하나의 중앙 처리 장치(CPU)(302) 및 통신 버스(306)에 의해 연결된 시스템 메모리(304)를 포함한다. 장치의 정확한 구성과 종류에 따라, 시스템 메모리(304)는, 리드 온리 메모리(Read only memory; ROM), 랜덤 억세스 메모리(Random access memory; RAM), EEPROM, 플래시 메모리 또는 유사한 메모리 기술과 같은, 휘발성 또는 비휘발성 메모리일 수 있다. 당업자라면 시스템 메모리(304)는 즉시 접근 가능 및/또는 CPU(302)에서 현재 작동중인 데이터 및/또는 프로그램 모듈들을 일반적으로 저장함을 이해할 수 있다. 이에 관해, CPU(302)는 명령어들의 실행을 지원함으로써 컴퓨팅 장치(300)의 연산 센터 역할을 한다.Referring to FIG. 3, an exemplary hardware architecture of computing device 300 is described. Although FIG. 3 is described with reference to a computing device implemented as a client on a network, the following description is applicable to servers and other devices that may be used to implement the invention. Moreover, those skilled in the art will appreciate that the computing device 300 may be any of the devices currently available or will be developed in the future. In the most basic configuration, computing device 300 includes at least one central processing unit (CPU) 302 and system memory 304 coupled by a communication bus 306. Depending on the exact configuration and type of device, the system memory 304 may include volatile (nonvolatile) memory devices such as read only memory (ROM), random access memory (RAM), EEPROM, flash memory, Or non-volatile memory. Those skilled in the art will appreciate that the system memory 304 is readily accessible and / or generally stores data and / or program modules currently being operated on by the CPU 302. [ In this regard, the CPU 302 serves as a computing center for the computing device 300 by supporting the execution of the instructions.

도 3에서 더 설명된 것과 같이, 컴퓨팅 장치(300)는 네트워크를 통해 다른 장치들과 통신하는 하나 이상의 컴포넌트들을 포함하는 네트워크 인터페이스(310)을 포함한다. 이하에서 상세히 설명되듯이, 본 발명은 일반 네트워크 프로토콜을 이용한 통신들을 수행하는 네트워크 인터페이스(310)를 이용한 기본 서비스들에 접속할 수 있다. 도 3에 도시된 예시적인 실시예에서, 컴퓨팅 장치(300)는 저장 매체(308)를 더 포함한다. 그러나, 도 4A를 참조하여 더욱 상세히 설명되듯이, 네트워크 오퍼레이팅 시스템 서비스들은 로컬 저장 매체에 데이터를 유지하는 수단을 포함하지 않는 컴퓨팅 장치를 이용해도 접속 가능할 수 있다. 따라서, 도 3에 도시된 저장 매체(308)는 선택적인 것임을 나타내기 위해 점선에 의해 표시되고 있다. 어떠한 경우에도, 저장 매체(308)는 휘발성 또는 비휘발성, 이동식 또는 고정식, 정보를 저장할 수 있는 기술, 예를 들어, 하드 드라이브, 솔리드 스테이트 드라이브, CD-ROM, DVD 또는 다른 디스크 스토리지, 마그네틱 카세트들, 마그네틱 테이프, 마그네틱 디스크 스토리지 등을 이용하여 구현될 수 있으나, 여기에만 한정되지는 않는다.As further described in FIG. 3, the computing device 300 includes a network interface 310 that includes one or more components for communicating with other devices over a network. As will be described in detail below, the present invention can access basic services using a network interface 310 that performs communications using general network protocols. In the exemplary embodiment shown in FIG. 3, computing device 300 further includes a storage medium 308. However, as will be described in more detail with reference to FIG. 4A, network operating system services may be accessible using a computing device that does not include means for maintaining data on a local storage medium. Accordingly, the storage medium 308 shown in FIG. 3 is represented by a dotted line to indicate that it is optional. In any case, the storage medium 308 may be volatile or nonvolatile, removable or non-volatile, and may store information, such as hard drives, solid state drives, CD-ROMs, DVDs or other disk storage, magnetic cassettes , Magnetic tape, magnetic disk storage, and the like, but is not limited thereto.

여기서 이용되는, "컴퓨터 판독 가능 매체"는 컴퓨터 판독 가능 명령들, 데이터 구조들, 프로그램 모듈 또는 다른 데이터와 같은 정보를 저장할 수 있는 방법 또는 기술로 구현된 휘발성 및 비휘발성 및 이동식 및 고정식 매체를 포함한다. 이에 관해, 도 3에 도시된 시스템 메모리(304)와 저장 매체(308)는 컴퓨터 판독 가능 매체의 단순한 예들에 불과하다.As used herein, "computer readable media" includes volatile and nonvolatile and removable and non-removable media implemented in any method or technology that may store information such as computer readable instructions, data structures, program modules or other data do. In this regard, the system memory 304 and the storage medium 308 shown in FIG. 3 are merely examples of computer readable media.

CPU(302), 시스템 메모리(304), 통신 버스(306), 저장 매체(308) 및 네트워크 인터페이스(310)를 포함하는 컴퓨팅 장치들의 적절한 구현들은 공지이며, 구매가 가능하다. 설명의 편의를 위해 그리고 특허청구범위에 기재된 사항을 이해하는데 중요하지 않기 때문에, 도 3은 많은 컴퓨팅 장치들의 전형적인 컴포넌트들을 생략하고 있다. 이에 관해, 컴퓨팅 장치(300)는 키보드, 마우스, 마이크로폰, 터치 입력 장치 등과 같은 입력 장치들을 일반적으로 포함할 수 있다. 유사하게, 컴퓨팅 장치(300)는 디스플레이, 스피커, 프린터 등과 같은 출력 장치들을 또한 포함할 수 있다. 이 모든 장치들은 공지되었으므로, 여기서는 설명하지 않는다.Appropriate implementations of computing devices including CPU 302, system memory 304, communication bus 306, storage medium 308, and network interface 310 are known and commercially available. 3 does not illustrate typical components of many computing devices, as it is for convenience of description and is not critical to understanding what is claimed in the claims. In this regard, the computing device 300 may generally include input devices such as a keyboard, a mouse, a microphone, a touch input device, and the like. Similarly, the computing device 300 may also include output devices such as a display, a speaker, a printer, and the like. All of these devices are known and will not be described here.

도 4A-4C를 참조하면, 본 발명이 구현될 수 있는 예시적인 플랫폼 환경들이 설명된다. 이에 관해, 도 4A-4C는 컴퓨팅 장치(300)(도3)의 플랫폼 계층들간의 계층적인 관계들을 설명한다. 더 상세하게는, 도 4A-4C에서 설명된 컴퓨팅 장치(300)의 플랫폼 계층들은 맨 아래 계층에 하드웨어 플랫폼(403), 중간 계층에 머신 오퍼레이팅 시스템(404), 그리고 맨 위 계층에 어플리케이션 플랫폼(406)을 포함한다. 물론, 당업자라면, 도 4A-4C에 도시된 컴퓨팅 장치(300)의 플랫폼 계층들이 단지 예시임을 이해할 수 있다.Referring to Figures 4A-4C, exemplary platform environments in which the present invention may be implemented are described. 4A-4C illustrate hierarchical relationships between platform layers of the computing device 300 (FIG. 3). More specifically, the platform layers of the computing device 300 illustrated in Figures 4A-4C include a hardware platform 403 at the bottom tier, a machine operating system 404 at the middle tier, and an application platform 406 ). Of course, those skilled in the art will understand that the platform layers of the computing device 300 shown in Figures 4A-4C are exemplary only.

컴퓨팅 장치(300)의 예시적인 하드웨어 플랫폼(402)가 도 3을 참조하여 위에서 설명되었으므로, 이 컴포넌트들에 대한 추가적인 설명은 하지 않는다. 그러나, 도 4A-4C에 설명되었듯이, 컴퓨팅 장치(300)는 머신 오퍼레이팅 시스템(404)을 포함할 수 있다. 이에 관해, 머신 오퍼레이팅 시스템(404)은Microsoft® 오퍼레이팅 시스템, Apple® 오퍼레이팅 시스템, UNIX® 오퍼레이팅 시스템, Linux® 오퍼레이팅 시스템, Nokia® Symbian, Google® Android 등과 같은 범용 오퍼레이팅 시스템의 패밀리 중 어느 하나로부터일 수 있다. 머신 오퍼레이팅 시스템(404)는 씬 클라이언트들, 이동 전화들, 메인 프레임들, 슈퍼 컴퓨터들 등과 같은 특화된 하드웨어(non-generic hardware)를 이용하는 전문화된 컴퓨팅 장치들에 맞춰진 오퍼레이팅 시스템일 수 있다. 또한, 머신 오퍼레이팅 시스템(404)은 실시간 오퍼레이팅 시스템들, 임베디드 오퍼레이팅 시스템들 등과 같은 어떤 설정 파라미터들을 만족하도록 설계된 오퍼레이팅 시스템일 수 있다. Since the exemplary hardware platform 402 of the computing device 300 has been described above with reference to FIG. 3, no further discussion of these components is provided. However, as illustrated in Figures 4A-4C, the computing device 300 may include a machine operating system 404. In this regard, the machine operating system 404 may be from any one of a family of general purpose operating systems such as Microsoft® operating system, Apple® operating system, UNIX® operating system, Linux® operating system, Nokia® Symbian, Google® Android, have. The machine operating system 404 may be an operating system tailored to specialized computing devices that utilize non-generic hardware such as thin clients, mobile phones, mainframes, supercomputers, and the like. In addition, the machine operating system 404 may be an operating system designed to satisfy certain configuration parameters, such as real-time operating systems, embedded operating systems, and the like.

머신 오퍼레이팅 시스템들의 목적은 접속(accessing)과 그 밖의 하드웨어 자원들 이용의 상세를 추상화하는 것이다. 따라서, 머신 오퍼레이팅 시스템들은, 예를 들어 하드웨어 컴포넌트들과의 I/O(입력 및 출력)을 관리, 메모리 관리, 태스크 스케쥴링 등과 같은 거의 모든 기본 시스템 태스크들을 수행한다. 이에 관해, 머신 오퍼레이팅 시스템은 API를 통해 어플리케이션 프로그램에 서비스를 전형적으로 제공한다. API를 통한 서비스들의 제공은 어플리케이션 개발자들이 접속의 구현 상세를 관리하거나 하부 컴퓨터 플랫폼을 사용해야 하는 노력을 경감시킨다. 상당하게, 본 발명의 측면들은 모든 현대 컴퓨터 플랫폼들로부터 이용 가능한 기본 서비스들을 위해서만 머신 오퍼레이팅 시스템(404)을 이용한다. 이에 관해, 서비스들은 네트워킹 하드웨어와 인터페이스하고 TCP/IP 프로토콜을 이용하여 통신하는 네트워크 연결을 설정하는데 사용될 수 있다.The purpose of machine operating systems is to abstract the details of accessing and using other hardware resources. Thus, machine operating systems perform almost all basic system tasks such as managing I / O (input and output) with, for example, hardware components, memory management, task scheduling, and the like. In this regard, the machine operating system typically provides services to application programs via APIs. The provision of services through the API alleviates the need for application developers to manage the implementation details of the connection or to use the underlying computer platform. Significantly, aspects of the present invention utilize the machine operating system 404 only for basic services available from all modern computer platforms. In this regard, services may be used to establish network connections that interface with networking hardware and communicate using the TCP / IP protocol.

도 4A에 도시된 실시예에서, 컴퓨팅 장치(300)는 어플리케이션 플랫폼(406)의 맨 위 계층에서 동작하는 웹 브라우저(408)를 포함한다. 상술한 바와 같이, 네트워크 오퍼레이팅 시스템의 클라이언트측 컴포넌트(410)는 컴퓨팅 장치(300)에 전달되어 구축될 수 있다. 도 4A에 도시된 실시예에서, 클라이언트측 컴포넌트(410)는 웹 브라우저(408)의 컨텍스트 내에서 동작한다. 이에 관해, 웹 브라우저(408)는 Mozilla Firefox®, Microsoft's Internet Explorer®를 포함하는, 그러나 여기에 한정되지는 않는, TCP/IP 네트워크 통신 프로토콜들을 이용하여 원격 장치들과 통신하는 임의의 수의 브라우저 어플리케이션들일 수 있다. In the embodiment shown in FIG. 4A, the computing device 300 includes a web browser 408 that operates in the top layer of the application platform 406. As described above, the client-side component 410 of the network operating system may be communicated to the computing device 300 and constructed. In the embodiment shown in FIG. 4A, the client-side component 410 operates within the context of the web browser 408. In this regard, the web browser 408 may include any number of browser applications that communicate with remote devices using TCP / IP network communication protocols, including, but not limited to, Mozilla Firefox, Microsoft's Internet Explorer .

도 4A에 도시된 실시예에서, 클라이언트측 컴포넌트(410)는 머신 오퍼레이팅 시스템(404)과 직접 상호작용하지 않는다. 그 대신, 클라이언트측 컴포넌트(410)에 의해 사용되는 기본 서비스들은 웹 브라우저(408)로부터 접속된다. 당업자라면 HTTP는, 무엇보다도, 유니폼 리소스 로케이터(URL)을 사용하여 네트워크 자원들이 요청되거나 수신될 수 있도록 하는 TCP/IP 보다 상위 프로토콜임을 이해할 수 있다. 전형적으로, 웹 브라우저들은 하이퍼텍스트 마크업 랭귀지(HTML), 익스텐서블 마크업 랭귀지(XML)와 같은 마크업 랭귀지로 포맷되거나 JSON(Java Script Object Notation) 및/또는 JavaScript로 포맷된 웹 페이지들을 획득하기 위해 HTTP 리퀘스트들을 생성한다. 일실시예에서, 웹 브라우저(408)는 HTTP를 이용한 네트워크 통신들을 수행하고, 웹 브라우저에서 이용 가능한 그래픽 표현 기술중에서 HTML로 표현된 그래픽 요소들을 렌더링하는 네트워크 오퍼레이팅 시스템의 클라이언트측 컴포넌트(410)에 의해 이용된다. In the embodiment shown in FIG. 4A, the client-side component 410 does not interact directly with the machine operating system 404. Instead, the basic services used by the client-side component 410 are connected from the web browser 408. Those skilled in the art will understand that HTTP is, above all, a superior protocol over TCP / IP that allows network resources to be requested or received using the uniform resource locator (URL). Typically, web browsers acquire web pages formatted with a markup language such as Hypertext Markup Language (HTML), Extensible Markup Language (XML), or formatted with Java Script Object Notation (JSON) and / or JavaScript To generate HTTP requests. In one embodiment, the web browser 408 performs network communications using HTTP, and by client-side component 410 of the network operating system that renders graphic elements rendered in HTML, among graphical presentation techniques available in a web browser .

도 4B에 도시된 실시예에서, 네트워크 오퍼레이팅 시스템의 클라이언트측 컴포넌트(410)는 웹 브라우저를 이용하지 않고 머신 오퍼레이팅 시스템(404)의 서비스들에 직접 접속한다. 본 발명의 측면들은 어플리케이션들이 모든 컴퓨팅 장치들에 전달되고 구축되도록 한다. 그런, 웹 브라우저들은 미리 결정된 페이즈 사이즈 및/또는 레이아웃에 따라 그래픽 요소들을 디스플레이하도록 전형적으로 설정된다. 따라서, 범용 웹 브라우저는 본 발명이 구현될 모든 종류의 컴퓨팅 장치에서 그래픽 요소들을 렌더링하는데 적절하지 않을 수 있다. 예를 들어, 스몰 폼 팩터(small form factor) 컴퓨팅 디바이스에서 그래픽 요소들을 렌더링하는 브라우저를 사용하는 것은 문제가 될 수 있다. 이에 관해, 웹 브라우저에 의해 예상되는 미리 결정된 페이지 크기 및/또는 레이아웃은 주어진 이용 가능한 폼 팩터에 비해 너무 크거나 적당하지 않을 수 있다. 도 4B에 설명된 것과 같이, 네트워크 오퍼레이팅 시스템의 클라이언트측 컴포넌트(410)는 독립 어플리케이션(stand-alone application)이나, 머신 오퍼레이팅 시스템으로도 구현될 수 있다. 이 경우에, 클라이언트측 컴포넌트(410)는 웹 브라우저를 이용하지 않고 컴퓨팅 장치의 주어진 폼 팩터에 적절한 방법으로 그래픽 렌더링을 수행하도록 설정된다. 더욱이, 이 실시예에서, 네트워크 통신들을 수행하기 위한 기본 서비스들은 머신 오퍼레이팅 시스템(404)으로부터 직접 획득되거나 클라이언트측 컴포넌트(410)에 구축될 수 있다.In the embodiment shown in FIG. 4B, the client-side component 410 of the network operating system directly connects to the services of the machine operating system 404 without using a web browser. Aspects of the present invention allow applications to be communicated and built to all computing devices. Such web browsers are typically set to display graphical elements in accordance with a predetermined phase size and / or layout. Thus, a general purpose web browser may not be suitable for rendering graphical elements in all sorts of computing devices in which the present invention will be implemented. For example, using a browser to render graphical elements in a small form factor computing device can be problematic. In this regard, the predetermined page size and / or layout expected by the web browser may not be too large or appropriate for a given available form factor. As illustrated in FIG. 4B, the client-side component 410 of the network operating system may be implemented as a stand-alone application or as a machine operating system. In this case, the client-side component 410 is configured to perform graphics rendering in a manner appropriate to a given form factor of the computing device without using a web browser. Moreover, in this embodiment, the basic services for performing network communications may be obtained directly from the machine operating system 404 or built into the client-side component 410.

도 4C에 도시된 실시예에서, 컴퓨팅 장치(300)는 전통적인 머신 오퍼레이팅 시스템을 포함하지 않는다. 대신에, 하드웨어 플랫폼(402)과 인터페이싱하기 위한 기본 서비스들은 클라이언트측 컴포넌트(410)에 구축된다. 이 실시예에서, 클라이언트측 컴포넌트(410)는 메모리 관리, 태스크 스케쥴링 등에 대한 기본 시스템 태스크들을 구현한다. 이러한 종류의 기본 머신 서비스들을 클라이언트측 컴포넌트(410)에 구축함으로써, 본 발명의 측면들은 특정 하드웨어 플랫폼들과 사용하기 위해 용이하게 변경(customize)되고 배치될 수 있다. 바꿔 말하면, 클라이언트측 컴포넌트(410)는 머신 오퍼레이팅 시스템의 공급자가 제공한 서비스들로부터 독립되도록 설정될 수 있다.In the embodiment shown in Figure 4C, the computing device 300 does not include a traditional machine operating system. Instead, basic services for interfacing with the hardware platform 402 are built in the client-side component 410. [ In this embodiment, the client-side component 410 implements basic system tasks for memory management, task scheduling, and the like. By building this kind of basic machine services on the client-side component 410, aspects of the present invention can be easily customized and deployed for use with specific hardware platforms. In other words, the client-side component 410 may be set to be independent of the services provided by the supplier of the machine operating system.

상술한 바와 같이, 클라이언트 컴포넌트(410)는 네트워크 서비스로 전달되고 사용자가 네트워크에 연결할 때마다 구축될 수 있다. 도 4 A-4C에서 설명된 것과 같이, 클라이언트측 컴포넌트(410)는 독립 어플리케이션으로, 머신 오퍼레이팅 시스템으로, 또는 웹 브라우저의 컨텍스트 내에서 구현되기에 적합하다. 이 모든 실시예들에서, 서버측 데이터 센터(202 또는 216)는 네트워크 서비스로서 클라이언트측 컴포넌트(410)로 어플리케이션 로직을 제공할 수 있다. 따라서, 저장매체(예를 들어, 하드 드라이브, CD-ROM, DVD 등)를 갖지 않는 제한된 리소스의 컴퓨팅 장치는 본 발명에 의해 제공된 네트워크 오퍼레이팅 시스템에 접속하기 위해 이용될 수 있다. 이에 관해, 클라이언트측 컴포넌트(410) 및 다른 네트워크 오퍼레이팅 시스템 데이터는, 로컬 저장매체에 계속되지 않고, 시스템 메모리(ROM, RAM 등)에 일시 저장될 수 있다. 따라서, 네트워크 오퍼레이팅 시스템에 사용할 수 있는 수 있는 어플리케이션들은, 어플리케이션이 서비스로서 전달될 수 있으므로, 컴퓨팅 장치(300)에 "설치"될 필요가 없다.As described above, the client component 410 may be delivered to a network service and may be established each time a user connects to the network. 4A-4C, the client-side component 410 is suitable for being implemented as an independent application, as a machine operating system, or in the context of a web browser. In all of these embodiments, the server-side data center 202 or 216 may provide application logic to the client-side component 410 as a network service. Thus, a limited resource computing device that does not have a storage medium (e.g., hard drive, CD-ROM, DVD, etc.) can be used to connect to the network operating system provided by the present invention. In this regard, the client-side component 410 and other network operating system data may not be continued to the local storage medium, but may be temporarily stored in system memory (ROM, RAM, etc.). Thus, applications that may be used in a network operating system do not need to be "installed" to the computing device 300, as the application may be delivered as a service.

도 5A-5B를 참조하면, 어떻게 공동 데이터 모델이 본 발명에 따른 네트워크 오퍼레이팅 시스템 서비스들을 전달하는데 이용될 수 있는지에 관한 설명이 제공된다. 네트워크 오퍼레이팅 시스템은, 어플리케이션 컴포넌트들을 서로 다른 계층들, 즉, 모델 뷰와 컨트롤러로 분리함으로써, 모델 뷰 컨트롤러(MVC) 디자인 패러다임을 지원한다. 실제 실시예에서, XML 문서들은 정보가 네트워크 오퍼레이팅 시스템 환경에서 표현되는 "모델" 또는 공동 데이터이다. 이 컨텍스트에서 공동 데이터 모델(예를 들어, XML 문서)의 사용은 많은 이익을 나으며, 아래 설명에서 더욱 명확해질 것이다.Referring to Figures 5A-5B, a description is provided of how a common data model can be used to convey network operating system services in accordance with the present invention. The network operating system supports the Model View Controller (MVC) design paradigm by separating the application components into different layers: the model view and the controller. In an actual embodiment, XML documents are "models" or common data in which information is represented in a network operating system environment. The use of a common data model (e. G., An XML document) in this context is of great benefit and will become more apparent in the description below.

도 5A-5B에 도시된 네트워킹 환경(500)은 네트워크(508)를 통해 각 클라이언트들(504, 506)에 통신 가능하게 연결된 서버측 데이터 센터(502)를 포함한다. 상술한 바와 같이, 네트워크 오퍼레이팅 시스템의 클라이언트측 컴포넌트는 서버측 데이터 센터(502)로부터 각 클라이언트들(504, 506)로 동적으로 전달될 수 있거나, 양 클라이언트(504, 506)에 로컬에서 설치될 수 있다. 양 경우에서, 네트워크 오퍼레이팅 시스템의 클라이언트측 컴포넌트는 XML 구조 어플리케이션들을 해석하거나 클라이언트들(504, 506)에서 실행되도록 하는 XML 가상 머신(510)을 제공한다. 서비스로서 전달될 때, 본 발명의 측면들은 서버측 데이터 센터(502)로부터의 프로세스 XML 문서를 전달함으로써, 네트워크 오퍼레이팅 시스템이 "부팅"되도록 한다. 이에 관해, 프로세스 XML 문서는 클라이언트들(504, 506)에 대한 시작 시퀀스(startup sequence)를 기술한 로직을 제공한다. 이하에서 상세히 설명되듯이, 이 프로세스 XML 문서는 XML 가상 머신(510) 내에서 실행된다. 시동 시퀀스는 XML 가상 머신(510)내의 한 세트의 오브젝트들을 전형적으로 인스턴스화하고 조작하여 다른 어플리케이션들이 실행될 수 있다.The networking environment 500 shown in FIGS. 5A-5B includes a server-side data center 502 communicatively coupled to each of the clients 504, 506 via a network 508. As discussed above, the client-side components of the network operating system can be dynamically delivered from the server-side data center 502 to each of the clients 504 and 506, or both locally installed in the clients 504 and 506 have. In both cases, the client-side components of the network operating system provide an XML virtual machine 510 that interprets XML architecture applications or allows them to be executed on clients 504 and 506. When delivered as a service, aspects of the present invention convey the process XML document from the server-side data center 502, thereby allowing the network operating system to "boot". In this regard, the process XML document provides logic describing the startup sequence for the clients 504, 506. As will be described in detail below, this process XML document is executed in the XML virtual machine 510. The startup sequence may be executed by other applications by typically instantiating and manipulating a set of objects within the XML virtual machine 510. [

상술한 바와 같이, XML은 네트워크 오퍼레이팅 시스템 환경에서 어플리케이션 로직과 다른 데이터가 표현되는 "모델" 또는 공동 포맷의 역할을 할 수 있으나, 다른 모델들, 데이터 포맷들, 및 데이터의 구조 또한 본 발명을 구현하는데 이용될 수 있다. 일 실시예에서, XML 어플리케이션들이 매우 높은 추상화 레벨에서 디자인 될 수 있도록 하는 프로그래밍 랭귀지들이 제공된다. 당업자라면 XML이 고도로 구조화(highly structured)되고, 전송가능(transferable)하며, 변형 가능(transformable)한 랭귀지임을 이해할 수 있다. 따라서, XML 구조 데이터와 같이 높은 추상화 레벨에서 어플리케이션 로직의 표현은 메모리 효율적이며, 컴팩트한 어플리케이션을 초래한다. 특히, 플랫폼이 하나 이상의 잘 구성된 XML 문서들에 표현된 어플리케이션의 로직을 실행하기 위해 제공된다. 어플리케이션 기능성은 MVC 디자인 패러다임에 따라 분리되어, 전통적인 시스템들에 의해 수행되던 반복 태스크들을 제거한다. 따라서, 현존하는 시스템들과 비교할 때, 서버측 데이터 센터(502)에서 클라이언트들(504, 506)로 어플리케이션 코드의 전송은 적은 양의 대역폭을 소모한다. 더욱이, 어플리케이션 로직이 XML 가상 머신(510)을 사용하여 실행되므로, 본 발명을 이용한 어플리케이션 로직의 실행은 소모되는 대역폭을 제거하거나 상당히 감소시킨다. 서버 "라운드 트립"을 수행하여서 처리되던 상호작용들은 요청하거나 서버측 데이터 센터(502)와 네트워크 통신들에 의하지 않고도 클라이언트들(504, 506)에서 직접 처리된다.As described above, XML can serve as a "model" or common format in which application logic and other data are represented in a network operating system environment, but other models, data formats, and data structures also implement the present invention . ≪ / RTI > In one embodiment, programming languages are provided that allow XML applications to be designed at a very high level of abstraction. It is understood by those skilled in the art that XML is a highly structured, transferable, and transformable language. Thus, the representation of application logic at a high level of abstraction, such as XML structure data, is memory efficient and results in a compact application. In particular, a platform is provided for executing the logic of an application represented in one or more well-formed XML documents. Application functionality is separated according to the MVC design paradigm, eliminating repetitive tasks performed by traditional systems. Thus, when compared to existing systems, the transfer of application code from the server-side data center 502 to the clients 504, 506 consumes a small amount of bandwidth. Moreover, since the application logic is executed using the XML virtual machine 510, execution of the application logic using the present invention eliminates or significantly reduces the bandwidth consumed. Interactions that have been processed by performing the server "round trip " are processed directly at the clients 504 and 506 without requesting or by server-side data center 502 and network communications.

본 발명의 일 측면은 클라이언트(504, 506)에 어플리케이션들을 실행하고 개발하기 위한 어플리케이션 프로그래밍 인터페이스(API)를 제공하는 XML 가상 머신(510)이다. 이에 관해, XML프로그래밍 랭귀지로 작성된 상위 레벨 어플리케이션 코드는 입력으로 받아들여지며 XML 가상 머신(510)에 의해 클라이언트(504, 506)에서 로컬에서 실행된다. 상위 레벨 어플리케이션 코드를 해석 가능한 코드, 바이트 코드 또는 임의의 플랫폼에서 실행하기에 적합한 다른 하위 레벨 언어로 해석하거나 번역하는 기능성이 제공된다. 이에 관해, XML 가상 머신(510)은 어플리케이션들이 모든 종류의 컴퓨팅 장치에서 동일한 방법으로 실행되도록 하부 컴퓨터 플랫폼과 네트워크 자원들을 추상화한다. 따라서, XML 가상 머신(510)은 플랫폼과 하드웨어에 완벽하게 독립되며, 예를 들어, Microsoft .NET®, Java, C, C++, HTML, JavaScript, AJAX, Adobe® Flash, Microsoft® SilverLight 등과 같은, 그러나 여기에 한정되지 않는, 현재 이용 가능하거나 개발중인 어떠한 프로그래밍 기술들을 이용해도 구현될 수 있다.One aspect of the invention is an XML virtual machine 510 that provides an application programming interface (API) for executing and developing applications on clients 504 and 506. In this regard, the high-level application code written in the XML programming language is accepted as input and executed locally in the client 504, 506 by the XML virtual machine 510. Functionality is provided for interpreting or translating high level application code into interpretable code, bytecode, or any other lower level language suitable for execution on any platform. In this regard, the XML virtual machine 510 abstracts the underlying computer platform and network resources so that applications run in the same manner on all types of computing devices. Thus, the XML virtual machine 510 is completely independent of the platform and hardware, and can be used in any way, such as, for example, Microsoft .NET, Java, C, C ++, HTML, JavaScript, AJAX, Adobe® Flash, Microsoft® SilverLight, But not limited to, any programming techniques currently in use or under development.

도 5B를 참조하면, 공동 데이터 모델이 네트워크 오퍼레이팅 시스템 서비스들을 제공하는데 어떻게 이용되는지에 관한 추가적인 측면들이 설명된다. 도 5B에 설명된 네트워킹 환경(500)은 도 5A를 참조하여 상술한 동일 컴포넌트들을 포함한다. 한편, 스토리지와 다른 네트워크 서비스들을 제공하는 XML 파일 시스템(512)은 서버측 데이터 센터(502)에 도시되어 있다. 따라서, 네트워크 오퍼레이팅 시스템 서비스들이 제공되는 동안, XML 파일 시스템(512)에서 유지되는 데이터는 클라이언트들(504, 506)에 의해 접속될 수 있다. 일 측면에서, 본 발명은 문서들의 스토리지 및 클라이언트들(504, 506)의 다른 런-타임 데이터를 관리하기 위한 클라이언트측 캐시(514)를 구현한다. 도 5B에 설명된 바와 같이, 클라이언트측 캐시(514)에 저장된 데이터는 XML 가상 머신(510)에 쉽게 접속 가능하다. 일 실시예에서, 네트워크 연결이 잠시 불가능하거나, 클라이언트들(504, 506)이 오프라인이 되더라도, 클라이언트측 캐시(514)는 XML 가상 머신(510)이 실행중인 어플리케이션들을 계속할 수 있도록 한다. 예로서, 사용자가 버스, 기차 또는 비행기를 타고 있을 때와, 네트워크 연결이 불가능한 경우에, 클라이언트들(504, 506)에서 실행중인 어플리케이션들은 오프라인에서도 동작을 계속할 수 있다. 이하에서 상세히 설명되듯이, 네트워크 연결이 재설정되면, 클라이언트들(504, 506)에서 수행되는 데이터 변경들은 서버측 데이터 센터(502)에 있는 XML 파일 시스템(512)와 동기된다.Referring to Figure 5B, additional aspects as to how the joint data model is utilized to provide network operating system services is described. The networking environment 500 illustrated in FIG. 5B includes the same components described above with reference to FIG. 5A. On the other hand, the XML file system 512, which provides storage and other network services, is shown in the server-side data center 502. Thus, while the network operating system services are being provided, the data maintained in the XML file system 512 may be accessed by the clients 504, 506. In one aspect, the present invention implements a client-side cache 514 for managing storage of documents and other run-time data of clients 504, 506. As described in FIG. 5B, the data stored in the client-side cache 514 is readily accessible to the XML virtual machine 510. In one embodiment, the client-side cache 514 allows the XML virtual machine 510 to continue running applications, even if the network connection is temporarily unavailable or the clients 504 and 506 are offline. By way of example, applications running on clients 504 and 506 may continue to operate even when off-line, when the user is on a bus, train or airplane, and network connection is not possible. As described in detail below, when the network connection is re-established, the data changes performed in the clients 504 and 506 are synchronized with the XML file system 512 in the server-side data center 502.

상술한 바와 같이, 본 발명은 개발자들이 최상위 레벨 추상화의 어플리케이션을 생성할 수 있도록 하는 프로그래밍 랭귀지를 제공한다. 실제 실시예에서, 이 프로그래밍 랭귀지들은 프로세스 XML 랭귀지, 유저 인터페이스(UI) XML 랭귀지, 및 어플리케이션 패키지 XML 랭귀지를 포함한다. 이 프로그래밍 랭귀지들로 작성된 어플리케이션 코드는 XML 구조 데이터로 표현되고 XML 문서에 저장되기에 적합하다. 도 5B에 설명된 예에서, 프로세스 XML 문서(516), 유저 인터페이스 XML 문서(518), 및 어플리케이션 패키지 XML 문서(520)는 이 프로그래밍 랭귀지들로 각각 작성된 어플리케이션 코드를 포함한다. 따라서, 어플리케이션은 서버측 데이터 센터(502)에서 유지되는 하나 이상의 XML 문서들에 정의될 수 있다. 또한, 어플리케이션은 서버측 데이터 센터(502)에서 또한 유지되는 데이터 XML 문서(522)와 같은 데이터 문서들을 전형적으로 이용할 수 있다. 이 XML 문서들(516-522)은 어플리케이션들이 XML 가상 머신(510)을 이용하여 실행될 수 있도록 하기 위해 클라이언트들(504, 506)에 의해 온 디맨드(on demand)로 접속될 수 있다.As described above, the present invention provides a programming language that enables developers to create applications of the highest level of abstraction. In an actual embodiment, these programming languages include a process XML language, a user interface (UI) XML language, and an application package XML language. The application code written in these programming languages is represented by XML structure data and is suitable for being stored in an XML document. In the example illustrated in FIG. 5B, the process XML document 516, the user interface XML document 518, and the application package XML document 520 include application codes each written with these programming languages. Thus, the application can be defined in one or more XML documents maintained in the server-side data center 502. [ In addition, the application can typically use data documents, such as data XML documents 522, which are also maintained in the server-side data center 502. These XML documents 516-522 may be accessed on demand by the clients 504 and 506 to allow applications to be executed using the XML virtual machine 510.

일 실시예에서, UI XML 랭귀지는 MVC 디자인 패러다임에서 어플리케이션의 "뷰"를 정의하는데 이용된다. 이에 관해, 마크업 랭귀지들은 원래, 페이지들이 웹 브라우저에 의해 랜더링될 수 있도록 웹 페이지들의 레이아웃을 기술하도록, 개발되었다. 마크업 랭귀지들의 구조적 특성은 웹 브라우저의 구현이나 다른 관련된 기술들에 영향을 주지 않으면서 웹 페이지들의 외관(appearance)이 수정될 수 있도록 하였다. 이에 관해, UI XML 랭귀지는 XML 신택스(syntax)에 부합하는 스키마에 따른 어플리케이션 유저 인터페이스의 외관과 가동(behavior)을 정의한다. UI XML 랭귀지를 사용하여, 개발자들은 공통 데스크탑 어플리케이션들에 존재하는 동일한 그래픽 요소들(예를 들어, 메뉴들, 툴바들, 드롭다운 박스들 등)을 가진 어플리케이션들을 생성할 수 있다. 유저 인터페이스 로직은 특정 클라이언트에 특화된 방법에 의존하거나 그 구현을 기술하지 않으므로, UI XML 랭귀지는 서로 다른 플랫폼에 걸쳐서 동작하는 사용자 인터페이스들을 개발하는데 적합하다. 또한, UI XML 랭귀지로 기술된 유저 인터페이스들과 동작은 MVC 디자인 패러다임에 따라 상위 레벨 추상화된 XML 신택스에 따르는 이 요소들을 기술한다. 따라서, UI XML 랭귀지로 기술된 유저 인터페이스들과 가동은 다른 시스템들에 영향을 주지 않고도 용이하게 변형되거나 수정될 수 있다. UI XML 랭귀지를 변형하는 능력은 어플리케이션의 기능성이 하나 이상의 변수들에 따라 변경(customized)될 수 있도록 한다. 예를 들어, 변형은, 사용되는 장치의 종류에 의존하는 어플리케이션 기능성의 어떤 측면들을 감소하거나 제거하도록 정의될 수 있다. 다른 예로, 변형은, 사용자 접속 정보(user access credential)에 의존하거나 다른 언어들 및/또는 시장들에 대해 어플리케이션을 로컬화하는 어떤 기능성을 제거하거나 제한하도록 UI XML 랭귀지에 정의될 수 있다.In one embodiment, the UI XML language is used to define a "view" of an application in the MVC design paradigm. In this regard, markup languages were originally developed to describe the layout of web pages so that the pages can be rendered by a web browser. The structural nature of markup languages allows the appearance of web pages to be modified without affecting the implementation of the web browser or other related technologies. In this regard, the UI XML language defines the appearance and behavior of the application user interface according to the schema conforming to the XML syntax. Using the UI XML language, developers can create applications with the same graphical elements (e.g., menus, toolbars, drop-down boxes, etc.) that exist in common desktop applications. Since user interface logic does not rely on a specific client-specific method or describe its implementation, the UI XML language is suitable for developing user interfaces that operate across different platforms. In addition, the user interfaces and operations described in the UI XML language describe these elements according to the high level abstraction XML syntax according to the MVC design paradigm. Thus, the user interfaces and operations described in the UI XML language can be easily modified or modified without affecting other systems. The ability to transform the UI XML language allows the functionality of an application to be customized to one or more variables. For example, variants can be defined to reduce or eliminate certain aspects of application functionality that depend on the type of device being used. As another example, the variant may be defined in the UI XML language to either remove or limit some functionality that relies on user access credentials or localizes applications to other languages and / or markets.

일실시예에서, 프로세스 XML 랭귀지는 MVC 디자인 패러다임에서 어플리케이션의 "컨트롤러" 컴포넌트를 정의하는데 이용된다. 이에 관해, 프로세스 XML 랭귀지는 개발자들이 어플리케이션의 로직을 한 세트의 프로세스 단계들로 기술할 수 있도록 한다. 각 프로세스 단계는, 전통적인 프로그래밍 랭귀지의 명령들(instructions) 및/또는 메소드 콜들(method calls)과 근사적으로 동일한 하나 이상의 작업들(operations)을 포함한다. MVC 디자인 패러다임에서, 프로세스 XML 랭귀지는 유저 인터페이스("뷰") 로직과 XML 데이터("모델") 사이의 컨트롤러나 글루(glue)로 사용된다. 따라서, 본 발명의 측면들은 어플리케이션 로직이 전통적인 프로그래밍 랭귀지들보다 더 높은 추상화 레벨에 있는 프로세스 XML 랭귀지를 이용해서 기술될 수 있도록 한다. 이에 관해, 사용자 인터페이스 로직("뷰")은 프로세스 XML 로직("컨트롤러")로부터 완전히 분리된다. 결과적으로, 현존하는 시스템들에서 다수의 어플리케이션 코드를 포함하는 데이터 핸들링 기능들은 본 발명에 의해 자동적으로 처리된다. 특히, 프로세스 XML 랭귀지를 사용하여, 지능적인 데이터 바인딩들은 뷰 로직과 데이터 모델 사이에서 정의될 수 있다. 어플리케이션들을 실행할 때, 로컬에 일시 저장된 데이터 모델로 그리고 원격 파일 시스템과 원격 리스너들(remote listeners)로의 I/O(입력 및 출력) 또는 데이터는 네트워크 오퍼레이팅 시스템에 의해 자동적으로 처리된다. 개발자들이 데이터 핸들링 로직을 제공하지 않으므로, 프로세스 XML 랭귀지를 이용하여 생성된 어플리케이션들은 자주 더 빨리 개발되며, 전통적인 어플리케이션들보다 더 적은 어플리케이션 코드를 포함한다. 이하에서 상세히 설명되듯이, 프로세스 XML 랭귀지는 도 5A를 참조하여 설명한 것 이외에, 네트워킹 환경에서 어플리케이션들을 생성하고 배포하는 다른 장점들을 제공한다.In one embodiment, the process XML language is used to define the "controller" component of the application in the MVC design paradigm. In this regard, the process XML language allows developers to describe the logic of an application as a set of process steps. Each process step includes one or more operations that are approximately the same as instructions in traditional programming language and / or method calls. In the MVC design paradigm, the process XML language is used as a controller or glue between user interface ("view") logic and XML data (the "model"). Accordingly, aspects of the present invention allow application logic to be described using process XML language at a higher level of abstraction than traditional programming languages. In this regard, the user interface logic ("view") is completely separate from the process XML logic ("controller"). As a result, data handling functions including multiple application codes in existing systems are automatically handled by the present invention. In particular, using process XML language, intelligent data bindings can be defined between the view logic and the data model. When running applications, I / O (input and output) or data to a locally stored data model and to a remote file system and remote listeners or data is handled automatically by the network operating system. Because developers do not provide data handling logic, applications created using process XML languages are often developed faster and contain fewer application codes than traditional applications. As will be described in detail below, the process XML language provides other advantages in creating and distributing applications in a networking environment, in addition to those described with reference to FIG. 5A.

상술한 랭귀지 이외에, 어플리케이션 패키지 XML 랭귀지가 또한 제공된다. 어플리케이션 패키지 XML 랭귀지는 개발자들이 어플리케이션에 의해 이용되는 자원들을 기술할 수 있도록 한다. 이에 관해, 어플리케이션의 기능성을 정의한 UI와 XML 문서들은 어플리케이션 패키지에서 식별될 수 있다. 어플리케이션 패키지 내의 로직은 개발자들이 어플리케이션의 자원들을 통제되고 안전한 방법에 의해 클라이언트로 패키징하고 배포할 수 있도록 한다. 더욱이, 어플리케이션 패키지의 이용은 XML 가상 머신(510)이 어플리케이션 내부 보안(intra-application security)을 가능하게 하는 방법에 의해 어플리케이션의 복수 인스턴스들이 생성될 수 있도록 한다.In addition to the above-mentioned language, an application package XML language is also provided. The application package XML language allows developers to describe the resources used by the application. In this regard, the UI and XML documents defining the functionality of the application can be identified in the application package. The logic within an application package allows developers to package and distribute the resources of the application to the client in a controlled and secure manner. Moreover, the use of the application package allows multiple instances of the application to be created by means of which the XML virtual machine 510 enables intra-application security.

일 측면에서, 본 발명은 네트워킹 환경에서 어플리케이션들과 소프트웨어 업데이트들을 배포하기 위한 개선된 방법들을 제공한다. 현존하는 시스템들을 사용하면, 어플리케이션은, 실행됐을 때, 컴퓨팅 장치에 어플리케이션을 "설치"하는 실행 파일(executable) 포맷으로 전형적으로 배포된다. 실행 파일은 특정 컴퓨팅 플랫폼에 특정된 머신 명령들로 어플리케이션 로직을 표현한다. 따라서, 실행 파일은 네트워킹 환경에서 배포될 때 상대적으로 많은 양의 대역폭을 소모하는 어플리케이션의 메모리 집중 표현(memory intensive representation)이다. 따라서, 복잡하고 자원 집중적인 시스템들은 실행 파일을 이용하여 어플리케이션을 배포하고 설치하도록 요구된다. In one aspect, the present invention provides improved methods for distributing applications and software updates in a networking environment. With existing systems, an application is typically deployed in an executable format that, when executed, "installs" the application on the computing device. The executable file represents application logic with machine instructions specific to a particular computing platform. Thus, an executable file is a memory intensive representation of an application that consumes a relatively large amount of bandwidth when deployed in a networking environment. Thus, complex, resource-intensive systems are required to deploy and install applications using executables.

네트워크를 통해 어플리케이션들과 소프트웨어 업데이트들을 배포하는 개선된 방법들은 네트워크 오퍼레이팅 시스템에 합체된다. 네트워크 오퍼레이팅 시스템에 사용할 수 있는 어플리케이션은 실행파일을 사용하여 클라이언트 컴퓨팅 장치에 "설치"되지 않는다. 대신, 본 발명은 어플리케이션 로직이 전체적으로 XML 구조 데이터로 표현되도록 한다. 클라이언트가 네트워크 연결을 설정하면, 하나 이상의 XML 문서들로 표현된 어플리케이션은 서비스 공급자로부터 자동적으로 획득될 수 있으며, 서비스 공급자는 인터넷 상의 로컬/사설 서버 또는 임의의 웹 서버로부터 XML 문서들을 제공할 수 있다. 따라서, 합체된 프레임워크는 네트워크를 통해 어플리케이션을 클라이언트들로 배포하기 위해 제공된다. 또한, "패치들"과 같은 업데이트들과 어플리케이션의 더 최신 버전들은 클라이언트로 자동적으로 전파될 수도 있다. 이에 관해, 어플리케이션 로직이 네트워크 서비스로서 자동적으로 배포되는 XML 문서에 표현되어 있으므로, XML 문서에 대한 수정들도 네트워크 서비스로서 클라이언트들로 전파된다. 네트워크 오퍼레이팅 시스템 환경에서, 어플리케이션 로직은 다른 데이터와 같은 방법으로 네트워크를 통해서 동기화될 수 있다. XML 가상 머신(510)과 XML 파일 시스템(512)은 트랜잰션 핸들링을 통해 데이터를 동기화하고 변경들을 관리하도록 설정되었으므로, 어플리케이션들에 대한 변경은 실시간으로 협업 방법으로 수행될 수 있다. 예를 들어, 공유 폴더에서 유지되는 어플리케이션들은 클라이언트(504)에서 오픈되고 실행될 수 있다. 동시에, 클라이언트(506)에 연관된 사용자는 어플리케이션 로직을 수정할 수 있고, 변경들이 클라이언트(504)로 자동적으로 전파되도록 할 수 있다. 어플리케이션 로직에 대한 변경들은 실시간으로 구현될 수 있고, 따라서 변경이 발생하면 클라이언트(504)에서 쉽게 관측될 수 있다.Improved methods of distributing applications and software updates over a network are incorporated into the network operating system. Applications available for the network operating system are not "installed" to the client computing device using executable files. Instead, the present invention allows the application logic to be represented entirely as XML structure data. When a client establishes a network connection, an application represented by one or more XML documents can be obtained automatically from a service provider, and the service provider can provide XML documents from a local / private server or any web server on the Internet . Thus, the coalesced framework is provided for distributing applications to clients over the network. In addition, updates such as "patches" and newer versions of the application may be automatically propagated to the client. In this regard, since the application logic is represented in an XML document that is automatically distributed as a network service, modifications to the XML document are also propagated to the clients as a network service. In a network operating system environment, application logic can be synchronized over the network in the same way as other data. Since the XML virtual machine 510 and the XML file system 512 are configured to synchronize data and manage changes through transaction handling, changes to applications can be performed in a collaborative manner in real time. For example, applications maintained in a shared folder may be opened and executed in the client 504. [ At the same time, a user associated with client 506 may modify application logic and allow changes to be automatically propagated to client 504. [ Changes to the application logic can be implemented in real time, and thus can be easily observed in the client 504 when a change occurs.

도 5A-5B를 참조하여 상술한 바와 같이, 어플리케이션의 XML 표현은 서비스 제공자에 의해 배포되며 XML 가상 머신을 사용하여 클라이언트에서 실행된다. 결과적으로, 클라이언트들은 서버측으로부터 런타임 프로세싱을 요구하지 않고 "오프라인"으로 어플리케이션들을 계속 실행할 수 있다. 이 경우에, 하나 이상의 어플리케이션들을 표현하는 XML 문서들은 클라이언트상의 메모리에 일시 저장된다. XML 가상 머신은, 네트워크 연결을 가지지 않고도 실행중인 어플리케이션들을 계속하기 위해, 이 일시 저장된 XML 문서들에 접속할 수 있다. 더욱이, 오프라인시 발생하는 데이터 업데이트들도 일시 저장되며 네트워크 연결이 재설정되면 서버측으로 전송된다.As described above with reference to Figures 5A-5B, the XML representation of the application is distributed by the service provider and executed on the client using the XML virtual machine. As a result, clients can continue to run applications "off-line" without requiring runtime processing from the server side. In this case, XML documents representing one or more applications are temporarily stored in memory on the client. The XML virtual machine can access these temporarily stored XML documents to continue running applications without having a network connection. Furthermore, data updates that occur during off-line are temporarily stored and transmitted to the server side when the network connection is re-established.

특히, 본 발명은, 컴퓨터 자원들의 가상화(virtualization)를 요구하지 않으면서 네트워크 오퍼레이팅 시스템 서비스들을 제공한다. 이에 관해, 컴퓨터 자원들을 가상화하는 다수의 기술들이 "클라우드" 스토리지와 같은 네트워크 서비스들을 제공하는데 이용되고 있다. 일반적으로 설명하면, 이 가상화 기술들은, 하부 플랫폼들로부터 떨어져 있는 서버와 전형적으로 연관된 컴퓨터 자원들을 추상화한다. 추상화된 자원들은 네트워크로부터 접속되기에 적합한 인터페이스에 독립적인 플랫폼에서 전형적으로 캡슐화된다(encapsulate). 이에 관해, 추상화될 수 있는 컴퓨터 자원들은 어플리케이션들, 하드웨어, 데스크탑들, 머신 오퍼레이팅 시스템들 등을 포함한다. 그러나, 복잡한 시스템들은 컴퓨터 자원들을 이러한 방법으로 추상화하고 캡슐화하도록 요구된다. 예를 들어, 서버의 하부 하드웨어를 시물레이션하고 성능에 적어도 영향을 미치는 가상화 계층이 요구될 수 있다. 또한, 이 가상화 기술들은 자원들이 구현되고 실행되는 위치를 서버측으로 이동시키는 서버 중심 모델을 홍보한다. 네트워크 서비스들이 늘어만가는 사용자들에게 제공될 때, 서버에 부가된 증가된 프로세싱과 다른 요구들은 측정할 수 없다. 따라서, 네트워크 서비스를 구현하는 가상화 기술들의 사용은 서비스가 온 디맨드로 사용 가능함을 보장하기 위해 서버들의 과잉 공급이 요구되는 통합 데이터 센터를 필요로 할 수 있다. 또한, 어플리케이션 로직이 원격 서버에서 실행되고 클라이언트에서 직접 실행되지 않으므로, 가상화 기술들은 더 많은 대역폭을 소모하며, 더 느린 사용자 경험을 초래한다. 네트워크 연결이 다운되거나 클라이언트가 오프라인이 되면, 이는 어플리케이션이 이용 불가능해지게도 한다.In particular, the present invention provides network operating system services without requiring virtualization of computer resources. In this regard, a number of techniques for virtualizing computer resources are being used to provide network services such as "cloud" storage. Generally speaking, these virtualization techniques abstract computer resources typically associated with servers away from underlying platforms. The abstracted resources are typically encapsulated in a platform independent of the interface suitable for being connected from the network. In this regard, computer resources that may be abstracted include applications, hardware, desktops, machine operating systems, and the like. However, complex systems are required to abstract and encapsulate computer resources in this way. For example, a virtualization layer may be required that simulates a server's underlying hardware and at least impacts performance. In addition, these virtualization technologies promote a server-centric model that moves the location where resources are implemented and executed to the server side. When network services are provided to an increasing number of users, the increased processing and other demands imposed on the server can not be measured. Thus, the use of virtualization technologies to implement network services may require an integrated data center where an oversupply of servers is required to ensure that services are available on demand. Also, because application logic runs on a remote server and not directly on the client, virtualization technologies consume more bandwidth and result in a slower user experience. When the network connection goes down or the client goes offline, this also makes the application unavailable.

컴퓨터 자원들을 가상화하지 않은 네트워크 서비스의 구현은 많은 이점을 제공한다. 이에 관해, 네트워크 서비스들이 지속적으로 증가하는 사용자들에 의해 접속되어질 수 있도록 하는 더 스케일러블한 구조가 제공된다. 클라이언트측에서 어플리케이션들을 실행하는 XML 가상 머신들을 이용함으로써, 클라이언트들로부터의 프로세싱과 다른 자원들이 최대한으로 이용될 수 있다. 이 구현은 더 스케일러블한 구조를 제공하는데, 고유한 관련성이 네트워크 서비스에 접속한 사용자의 수, 대역록 사용, 프로세싱 파워, 및 어플리케이션 로직을 실행하기 위해 클라이언트측으로부터 사용 가능한 다른 자원들 사이에 존재하기 때문이다. 더 스케일러블한 것에 더하여, XML 가상 머신을 이용하여 클라이언트에서 실행중인 어플리케이션들은 어플리케이션 기능성이 "오프라인"인 동안에 사용자들에 의해 쉽게 접속되도록 한다. 클라이언트가 "오프라인"이 되면, 하나 이상의 XML 문서들로 표현된 어플리케이션들과 사용자 데이터는 클라이언트측 캐시에 저장될 수 있다. 따라서, 모든 어플리케이션 로직은, 활성화된 네트워크 연결이 존재하느냐에 상관없이, 이용 가능하며 캐시에 있는 데이터를 이용하여 실행될 수 있다. 그러나, "오프라인"인 동안에는 어플리케이션이 네트워크 자원들에 접속할 수 없으며, 어플리케이션의 모든 기능성을 구현하기 위해서는 네트워크 연결을 재설정할 필요가 있다. 이에 반해, 가상화 기술들을 이용하여 네트워트 서비스가 구현될 때 제공되는 "오프라인" 기능성은 더 제한된다. 이에 관해, 일부 현존하는 네트워크 서비스들은, 네트워크 서비스에 접속하던 어플리케이션과 상호작용을 계속할 수 있는 "오프라인" 모드를 구현한다. 그러나, 이 기능성을 제공하기 위해, 실행파일이나 어플리케이션의 다른 하위 레벨 표현이 배포되고 클라이언트에 설치된다. 사용자가 "오프라인"이면, 이 어플리케이션의 하위 레벨 표현이 로컬에서 실행된다. 그러나, 이 "오프라인" 기능성을 제공하기 위해 클라이언트에 어플리케이션들을 설치하는 것은 실현 가능하거나 편리하지 않을 수 있다. 예를 들어, 자원이 제한적인 컴퓨팅 장치는 실행파일이나 다른 어플리케이션의 하위 레벨 표현을 설치할 충분한 스토리지를 갖지 않을 수 있다. 더욱 일반적으로, 활성화된 네트워크 연결 없이 클라이언트에서 이용 가능한 기능성은 로컬에서 설치되었던 어플리케이션들에 한정된다. 그러나, 클라이언트는 실행파일이나 어플리케이션의 하위 레벨 표현을 이용하여 원하는 어플리케이션을 설치하는 충분한 컴퓨팅 자원들(스토리지, 메모리, 대역폭 등)을 갖지 않을 수 있다. The implementation of network services without virtualizing computer resources offers many advantages. In this regard, a more scalable architecture is provided that allows network services to be accessed by ever-increasing users. By using XML virtual machines to run applications on the client side, processing and other resources from clients can be used to their fullest extent. This implementation provides a more scalable structure in which a unique association exists between the number of users connected to the network service, bandwidth usage, processing power, and other resources available from the client side to implement the application logic . In addition to being more scalable, applications running on the client using the XML virtual machine allow for easy access by users while application functionality is "offline". When the client becomes "offline, " applications and user data represented by one or more XML documents may be stored in the client-side cache. Thus, all application logic is available, and can be executed using data in the cache, regardless of whether an active network connection is present. However, while "offline" the application is unable to access network resources, it is necessary to reconfigure the network connection to implement all the functionality of the application. In contrast, the "offline" functionality provided when network services are implemented using virtualization technologies is more limited. In this regard, some existing network services implement an "offline" mode in which they can continue interacting with the application that is connecting to the network service. However, to provide this functionality, other low-level representations of executable files or applications are deployed and installed on the client. If the user is "offline, " the low-level representation of this application is run locally. However, installing applications on the client to provide this "offline" functionality may or may not be feasible. For example, a computing device with limited resources may not have enough storage to install a low-level representation of an executable or other application. More generally, the functionality available on the client without an active network connection is limited to locally installed applications. However, the client may not have sufficient computing resources (storage, memory, bandwidth, etc.) to install the desired application using an executable file or a low-level representation of the application.

일 측면에서, 본 발명은 이동, 무선 또는 불안정한 네트워크들을 통하여 네트워크 서비스들에 접속하기 위한 개선된 방법들을 구현한다. 당업자라면, 유선 네트워크들과 비교했을 때 이동 또는 무선 네트워크들은 덜 신뢰할만하며 대역폭이 제한된다는 것을 이해할 수 있다. XML 구조 데이터와 반복적인 데이터 핸들링 기능들을 자동적으로 수행하도록 설정된 XML 가상 머신(510)으로 어플리케이션 로직을 표현하는 프로그래밍 랭귀지의 제공은 매우 컴팩트하며 메모리 효율적인 어플리케이션들을 초래한다. 이에 관해, 어플리케이션 로직을 구현할 때, 어플리케이션들은 XML 가상 머신(510)의 기능성과 재생 오브젝트들(reuse objects)을 공유할 수 있다. 결과적으로, 현존하는 어플리케이션 배포 시스템들과 비교할 때, 네트워크 오퍼레이팅 시스템에 사용 가능한 어플리케이션들의 배포는 일부 대역폭을 소모한다. 또한, 본 발명은 어플리케이션들의 XML 표현들이 클라이언트측 캐시에 유지되고 XML 가상 머신(510)을 이용하여 로컬에서 실행되도록 한다. 어플리케이션 로직과 데이터가 로컬에서 일시 저장될 수 있으므로, 지속적인 네트워크 연결이 필요하지 않을 수 있다. 대신에, 본 발명은 네트워크 연결성이 간헐적인 무선 네트워크를 통하여 네트워크 서비스들로의 접속을 제공하는데 매우 적합하다. 또한, 어플리케이션들이 로컬에서 실행되므로, 서비스를 보장하는 더욱 신뢰할 수 있는 네트워크 서비스들이 제공될 수 있다. 예를 들어, 본 발명은 인터넷과 같은 네트워크의 서비스로서 기업 등급 어플리케이션들(enterprise class applications)을 제공하는데도 매우 적합하다. 이에 관해, 당업자라면 기업 등급 어플리케이션들은 네트워크 연결이 일시적으로 불가능하거나 인터넷 연결의 품질이 네트워크 접속에 영향을 미치더라도 기업 내에서는 접속이 가능할 필요가 있음을 이해할 수 있다. 여기서 설명된 발명은 이 문제를 해결한다.In one aspect, the present invention implements improved methods for connecting to network services via mobile, wireless or unstable networks. Those skilled in the art will understand that mobile or wireless networks are less reliable and bandwidth limited as compared to wired networks. The provision of a programming language that represents application logic in an XML virtual machine 510 configured to automatically perform XML structure data and iterative data handling functions results in very compact and memory efficient applications. In this regard, when implementing application logic, applications can share reuse objects with the functionality of the XML virtual machine 510. As a result, when compared to existing application distribution systems, the distribution of applications available to the network operating system consumes some bandwidth. In addition, the present invention allows XML representations of applications to be maintained in a client-side cache and executed locally using the XML virtual machine 510. [ Because application logic and data can be stored temporarily locally, a persistent network connection may not be required. Instead, the present invention is well suited for providing connectivity to network services over wireless networks where network connectivity is intermittent. In addition, since applications are run locally, more reliable network services can be provided that ensure service. For example, the present invention is well suited for providing enterprise class applications as a service of a network such as the Internet. In this regard, those skilled in the art will understand that enterprise-class applications need to be able to connect within the enterprise, even if the network connection is temporarily impossible or the quality of the Internet connection affects network access. The invention described herein solves this problem.

네트워크 오퍼레이팅 시스템의 클라이언트측 컴포넌트Client-side components of the network operating system

당업자라면 XML이 추가적인 랭귀지들의 생성을 위한 기초를 제공하는 확장 가능한 랭귀지임을 이해할 수 있다. XML 문서는 계층적인 트리 구조를 가지는데, 트리의 루트는 문서를 식별하며 문서의 다른 노드들은 루트의 파생이다. 트리의 노드들은 컨텐츠의 구조를 정의하는 데이터 뿐만이 아니라 문서 컨텐츠를 포함할 수 있다. XML에 의해 부여된 신텍스에 더하여, 요소들과 그에 연관된 속성들은XML문서의 구조와 컨텐츠에 대한 다른 시맨틱 제한들(semantic constraints)을 설정하도록 정의될 수 있다. 일 실시예에서, 본 발명은XML에 의해 부가된 것들에 대한 추가적인 시맨틱 제한들을 적용하는 스키마들과 용어들(vocabularies)을 구현할 수 있다. 본 발명에 의해 제공된 XML 랭귀지들을 이용하면, 개발자들은 MVC 디자인 패러다임에 따라 어플리케이션의 로직을 시맨틱하게 표현한다.One of ordinary skill in the art will understand that XML is an extensible language that provides the basis for the generation of additional languages. An XML document has a hierarchical tree structure, where the root of the tree identifies the document and the other nodes of the document are derived from the root. The nodes of the tree may contain document content as well as data defining the structure of the content. In addition to the syntax imposed by XML, the elements and their associated attributes can be defined to establish semantic constraints on the structure and content of the XML document. In one embodiment, the invention may implement schemas and vocabularies that apply additional semantic constraints on those added by XML. Using the XML languages provided by the present invention, developers semantically represent the logic of an application according to the MVC design paradigm.

MVC 디자인 패러다임은 Smalltalk 프로그래밍 랭귀지에서 처음으로 구현되었으며 이후 다른 엔지니어링 컨텍스트들에서 이용되었다. 당업자라면 MVC 디자인 패러다임은 기능성을 계층들로 분리하기 위한 일반적인 구조적 패러다임을 단순히 표현한 것임을 이해할 수 있다. 따라서, MVC 디자인 패러다임은 다양한 컨텍스트들에서 종속성을 제거하고 플랫폼 독립성을 제공하기 위해 구현되었다. 예로서, HTML 데이터를 저장하고, 동적 웹 페이지 컨텐츠를 수집하며 웹 페이지를 렌더링하던 현존하는 시스템들은 MVC 디자인 패러다임에 고착되었다고 자주 설명된다. 또한, 웹 어플리케이션들을 생성하던 개발 환경들은 MVC 디자인 패러다임에 따라 기능성을 계층들로 분리할 수 있다. 이 맥락에서, 웹 어플리케이션의 그래픽 유저 인터페이스는 모듈라 어플리케이션(modular application) 개발을 지원하기 위해서 데이터 모델에서 분리되었다. 그러나, 이 현존하는 시스템들은 기능성을 구현하고 본 발명보다 더욱 도메인 특정적인 하부 데이터 모델을 이용한다.The MVC design paradigm was first implemented in the Smalltalk programming language and subsequently used in other engineering contexts. Those skilled in the art will understand that the MVC design paradigm is simply a general representation of a structural paradigm for separating functionality into layers. Thus, the MVC design paradigm was implemented to remove dependencies and provide platform independence in various contexts. For example, it is often described that existing systems that store HTML data, collect dynamic web page content, and render web pages are stuck to the MVC design paradigm. Also, the development environments that created web applications can divide the functionality into layers according to the MVC design paradigm. In this context, the graphical user interface of the web application has been separated from the data model to support the development of modular applications. However, these existing systems implement functionality and use a more domain specific underlying data model than the present invention.

현존하는 시스템과 달리, 본 발명의 측면들은 모든 종류의 어플리케이션이 MVC 디자인 패러다임에 따라 생성되도록 한다. 다시 말해, 로직과 하부 데이터 모델로부터 유저 인터페이스의 분리는 웹 어플리케이션들, 웹 페이지들 등에 한정되지 않는다. 각 인스턴스가 잠재적으로 멀티 뷰들을 지원하는 멀티 인스턴스 어플리케이션들은 네트워크 오퍼레이팅 시스템 환경에서 생성되고 실행될 수 있다. 또한 이 어플리케이션 인스턴스들 각각은 공동 데이터 모델로부터 데이터를 조작한다. 개발자들이 데이터 모델로부터 데이터를 설정하고 접속하며 동기화와 유저 인터페이스("뷰")와 데이터 모델간 데이터 교환을 관리하기 위한 프로그램 로직을 제공할 필요가 없으므로, 어플리케이션 개발을 대단히 간단해진다.Unlike existing systems, aspects of the present invention allow all kinds of applications to be generated according to the MVC design paradigm. In other words, the separation of the user interface from the logic and the underlying data model is not limited to web applications, web pages, and the like. Multi-instance applications, where each instance potentially supports multi-views, can be created and executed in a network operating system environment. Each of these application instances also manipulates data from a common data model. Application development is greatly simplified because developers do not need to provide the program logic to set up and access data from the data model and to manage synchronization and data exchange between the user interface (the "view") and the data model.

도 6A-B를 참조하면, 본 발명의 측면들을 설명하는데 사용될 수 있는 예시적인 프로세스와 UI XML 문서들이 설명될 수 있다. 도 6A는 "MyTasks" 어플리케이션에 대한 컨트롤러 로직의 시맨틱 설명을 제공하는 예시적인 프로세스 XML 문서(600)("MyTasks.xml")을 도시한다. 도 6A에 설명되어 있듯이, MyTasks.xml 문서(600)는"<trigger>" XML 요소에서 정의된 트리거(602)를 포함한다. 이 트리거(602)는 뷰, 컴포넌트, 이벤트 및 단계 속성들을 포함하는 한 세트의 속성들을 유지한다. 더욱이, 프로세스XML 랭귀지로 작성된 어플리케이션 로직은 일련의 프로세스 단계들을 정의할 수 있다. 이 예에서, MyTasks.xml 문서(600)는"<step>" XML 요소들에 의해 기술된 복수의 프로세스 단계들(604-610)을 포함한다. 도 6A에 도시된 바와 같이, 두 속성들은 숫자 속성("id")와 이름 속성을 포함하는 각 프로세스 단계들(604-610)에 연관된다. 각 프로세스 단계내에서, 적어도 하나의 작업이 정의된다. 예로서, 이름 속성 "Initialize Application"에 연관된 프로세스 단계(604)는 "<operation>" XML 요소들에 의해 기술된 세 작업들(612-616)을 포함한다.6A-B, an exemplary process and UI XML documents that may be used to describe aspects of the present invention may be described. 6A shows an exemplary process XML document 600 ("MyTasks.xml") that provides a semantic description of the controller logic for the "MyTasks" application. As described in FIG. 6A, the MyTasks.xml document 600 includes a trigger 602 defined in the "<trigger> " XML element. The trigger 602 maintains a set of properties including views, components, events, and step attributes. Furthermore, application logic written in process XML language can define a series of process steps. In this example, the MyTasks.xml document 600 includes a plurality of process steps 604-610 described by the "<step>" XML elements. As shown in FIG. 6A, the two attributes are associated with respective process steps 604-610 that include a numeric attribute ("id") and a name attribute. Within each process step, at least one task is defined. By way of example, the process step 604 associated with the name attribute "Initialize Application " includes three tasks 612-616 described by the" <operation> " XML elements.

도 6B는 MyTasks 어플리케이션에 대한 예시적인 "뷰"로직의 시맨틱 설명을 제공하는 UI XML 문서("MyTasks_gui.xml")로부터의 발췌를 도시한다. 도 6B에 설명된 바와 같이, MyTasks_gui.xml 문서(650)는 "<button>" XML 요소에 의해 기술된 두 버튼 컴포넌트들(652, 654)을 포함한다. 각 버튼 요소는 이름, 텍스트 및 폭 속성들을 포함하는 한 세트의 속성들을 유지한다. 또한, MyTasks_gui.xml 문서(650)는 "<input>" XML 요소들에 의해 기술된 두 입력 컴포넌트들(656, 658)을 포함한다. 이 예에서, 입력 컴포넌트들(656, 658)은 이름, 폭, 높이 속성들을 포함하는 한 세트의 속성들을 유지한다.6B shows an excerpt from a UI XML document ("MyTasks_gui.xml") that provides a semantic description of exemplary "view" logic for the MyTasks application. 6B, the MyTasks_gui.xml document 650 includes two button components 652 and 654 described by the "<button>" XML element. Each button element maintains a set of attributes including name, text, and width attributes. In addition, the MyTasks_gui.xml document 650 includes two input components 656, 658 described by the "<input>" XML elements. In this example, input components 656 and 658 maintain a set of attributes including name, width, and height attributes.

어플리케이션을 시작하면, XML 가상 머신의 역할을 하는 본 발명의 측면들은 MyTasks.xml 문서(600)를 해석하기 시작할 수 있다. 일 실시예에서, 실행 전에 전체가 컴파일되기 보다는, 어플리케이션 로직은 한 번에 한 스테이트먼트가 해석된다. 그러나, 다른 실시예에서는, 본 발명에 의해 제공된 XML 랭귀지들로 작성된 어플리케이션 코드가 실행 가능한 코드나 바이트 코드로 컴파일 될 수도 있다. 이 예에서, MyTasks.xml 문서(600)는 트리거의 활성화에 반응하여 실행될 어플리케이션에서의 프로세스 단계(606)를 식별하는 트리거(602)를 정의한다. 최초에, 예시적인 실시예에서 XML 가상 머신이 MyTasks.xml 문서(600) 해석을 시작하면, 트리거(602)는 트리거의 활성화에 반응하여 적절한 프로세스 단계(606)로 플로우가 지시(directed)되도록 하기 위해 트리거(602)가 등록된다. When starting an application, aspects of the invention that act as XML XML virtual machines may begin to parse the MyTasks.xml document 600. In one embodiment, the application logic interprets one statement at a time rather than compiling it entirely before execution. However, in other embodiments, application code written in XML languages provided by the present invention may be compiled into executable code or bytecode. In this example, the MyTasks.xml document 600 defines a trigger 602 that identifies the process steps 606 in the application to be executed in response to activation of the trigger. Initially, in the exemplary embodiment, when the XML virtual machine begins parsing the MyTasks.xml document 600, the trigger 602 causes the flow to be directed to the appropriate process step 606 in response to the activation of the trigger The trigger trigger 602 is registered.

도 6A에 도시된 MyTasks.xml 문서(600)에서, 어플리케이션은, 어플리케이션에서 트리거들이 등록되면 제어 플로우가 지시될 기본 프로세스 단계(604)를 이름 속성 "Initialize Application"로 정의한다. 이름 속성 "open" 과 값 속성 "apps/mytasks_gui.xml"을 갖는 작업(612)은 실행될 Initialize Application process 단계(604)에서의 첫 번째 작업이다. Open 작업(612)의 실행은MyTasks_gui.xml 문서(650)로 표현된 어플리케이션의 뷰가 해석되고 컴퓨터 디스플레이에 렌더링되게 한다. 이 예에서, 어플리케이션의 뷰는 MyTasks_gui.xml 문서(650)에서 시맨틱하게 정의된 컴포넌트들(652-658)을 포함한다. MyTasks_gui.xml 문서(650)가 오픈되면, 실행은 이름 속성 "action"과 값 속성 "#MyTasks"를 갖는 작업(614)로 진행한다. 일반적으로 설명하면, Action 작업(614)의 실행은, MyTasks_gui.xml 문서(650)가 오픈되면, 버튼 컴포넌트(654)가 뷰에서 감춰지도록 한다.In the MyTasks.xml document 600 shown in FIG. 6A, the application defines a basic process step 604 to which a control flow will be directed when the triggers are registered in the application, as the name attribute "Initialize Application." The task 612 with the name attribute "open" and the value attribute "apps / mytasks_gui.xml" is the first task in the Initialize Application process step 604 to be executed. Execution of the Open task 612 causes the view of the application represented by the MyTasks_gui.xml document 650 to be interpreted and rendered on the computer display. In this example, the view of the application includes semantically defined components 652-658 in the MyTasks_gui.xml document 650. When MyTasks_gui.xml document 650 is opened, execution proceeds to task 614 with a name attribute "action" and a value attribute "#MyTasks". Generally speaking, the execution of the Action task 614 causes the button component 654 to be hidden from view when the MyTasks_gui.xml document 650 is opened.

도 7A-C를 참조하면, MyTasks 어플리케이션에 연관된 예시적인 그래픽 디스플레이(700)가 설명된다. 특히, 도 7A에 도시된 그래픽 디스플레이(700)는, MyTasks_gui.xml 문서(650)에서 시맨틱하게 정의된 버튼 컴포넌트들(652-654)에 대응하는 Button 1 컴포넌트(702)와 Button 2 컴포넌트(704)를 포함한다. 또한 그래픽 디스플레이(700)는, 입력 컴포넌트들(656-658)의 시맨틱 설명에 각각 대응하는 Input3 컴포넌트(706)와 Input4 컴포넌트(708)를 포함한다. 이에 관해, 도 7A의 그래픽 디스플레이(700)는 MyTasks_gui.xml 문서(650)의 시각적 묘사를 표현한다. 상술한 바와 같이, MyTasks 어플리케이션이 시작되면, MyTasks_gui.xml 문서(650) 내의 프로세스 로직은 Button2 컴포넌트가 감춰지도록 한다. 따라서, Button2 컴포넌트(704)는 Button2 컴포넌트(704)가 Action 작업(614)의 실행 이후 처음에는 사용자에게 보이지 않음을 나타내기 위해 도 7A에 점선으로 도시된다. Referring to Figures 7A-C, an exemplary graphical display 700 associated with the MyTasks application is described. 7A includes a Button 1 component 702 and a Button 2 component 704 corresponding to semantically defined button components 652-654 in the MyTasks_gui.xml document 650, . Graphic display 700 also includes an Input3 component 706 and an Input4 component 708, each corresponding to a semantic description of input components 656-658. In this regard, the graphical display 700 of FIG. 7A represents a visual depiction of the MyTasks_gui.xml document 650. As described above, when the MyTasks application is started, the process logic in the MyTasks_gui.xml document 650 causes the Button2 component to be hidden. Thus, Button2 component 704 is shown in phantom in Figure 7A to indicate that Button2 component 704 is initially invisible to the user after execution of Action task 614.

일반적으로 설명하면, 예시적인 MyTasks 어플리케이션은 "data/tasks.xml" 문서에 저장된 태스크 설명들의 목록을 디스플레이하도록 설정된다. 더 상세하게는, 어플리케이션이 시작될 때, 태스크 설명들은 기본적으로 Input3 컴포넌트(706)에 디스플레이 된다. 일 측면에서, 사용자는 Inpu3 컴포넌트(706)와 직접 상호작용하고 태스크 설명들의 항목들을 변경함으로써 태스크 목록을 수정할 수 있다. 다른 측면에서, 사용자는 Input4 컴포넌트(708)로 신규 태스크 설명을 입력하고 Button1 컴포넌트(702)를 선택하여 트리거(602)를 활성화시킬 수 있다. 유효한 입력이 수신되면, 신규 태스크 설명은 "data/tasks.xml"에 추가되고 Input3 컴포넌트(706)에 의해 자동적으로 디스플레이된다. 반대로, 사용자가 Input4 컴포넌트(708)에 아무 입력도 제공하지 않고 Button1 컴포넌트(702)를 단지 선택하면, Button2 컴포넌트(704)는 사용자가 유효한 태스크 설명을 제공할 것을 요청하는 문구와 함께 디스플레이된다. Generally speaking, the exemplary MyTasks application is configured to display a list of task descriptions stored in a "data / tasks.xml" document. More specifically, when an application is started, task descriptions are displayed in the Input 3 component 706 by default. In one aspect, the user can modify the task list by interacting directly with the Inpu3 component 706 and changing items in the task descriptions. In another aspect, a user may enter a new task description into the Input4 component 708 and select the Button1 component 702 to activate the trigger 602. [ When a valid input is received, a new task description is added to "data / tasks.xml" and is automatically displayed by the Input3 component 706. Conversely, if the user does not provide any input to the Input4 component 708 and only selects the Button1 component 702, the Button2 component 704 is displayed with a statement that prompts the user to provide a valid task description.

다시 도 6A를 참조하면, 이름 속성 "bind"와 값 속성 "data/tasks.xml"를 갖는 작업(616)은 Initialize Application 프로세스 단계(604)에서 실행될 다음 작업이다. 일반적으로 설명하면, Bind 작업(616)의 실행은 Input3 컴포넌트(706)가 태스크 설명들의 목록을 디스플레이하는 데이터 바인딩 컴포넌트가 되게 한다. 특히, Bind 작업(616)에서 제공된 로직과 이에 연관된 컴포넌트 요소(618)는, Input3 컴포넌트(706)를 "data/tasks.xml" 문서에 표현된 태스크 설명들의 목록에 바인드(bind)한다. 이 예에서, 태스크는 "data/tasks.xml" 문서 안에서 연관된 설명 속성을 유지하는 요소로서 정의된다. 컴포넌트 요소(618)에 의해 제공된 로직은, Input3 컴포넌트(706)에서 디스플레이할 태스크 요소의 "/tasks/task/@description" 속성을 선택한다. 도 6A에 도시된 바와 같이, Bind 작업(616)은 Initialize Application 프로세스 단계(604)에서 실행되는 마지막 작업이다Referring again to FIG. 6A, job 616 with a name attribute "bind" and a value attribute "data / tasks.xml" is the next task to be executed in the Initialize Application process step 604. Generally speaking, execution of Bind job 616 causes Input3 component 706 to be a data binding component that displays a list of task descriptions. In particular, the logic provided in the Bind task 616 and the associated component element 618 bind the Input3 component 706 to the list of task descriptions represented in the "data / tasks.xml" document. In this example, the task is defined as an element that holds the associated description attributes in the "data / tasks.xml" document. The logic provided by the component element 618 selects the "/ tasks / task / @ description" attribute of the task element to display in the Input3 component 706. As shown in FIG. 6A, the Bind job 616 is the last task executed in the Initialize Application process step 604

이제 도 7B를 참조하면, Bind 작업(616)의 실행 다음의 그래픽 디스플레이(700)의 상태가 설명된다. 이에 관해, 도 7B는 도 7A를 참조하여 상술한 동일한 버튼 및 입력 컴포넌트들(702-708)을 도시한다. 그러나, Bind 작업(616)의 실행 후, 한 세트의 태스크 설명들이 Input3 컴포넌트(706)에 의해 디스플레이된다. 특히, Input3 컴포넌트(706)는 "data/tasks.xml" 문서에서 정의된 태스크 요소들의 설명 속성에 바인드된다. 따라서, Bind 작업(616)이 실행된 후, 데이터 모델(예를 들어, 문서 오브젝트(710))에 표현된, 이 태스크 설명들에 할당된 값들은 Input3 컴포넌트(706)에 디스플레이 된다. Referring now to FIG. 7B, the state of the graphical display 700 following the execution of the Bind job 616 is described. In this regard, Figure 7B illustrates the same button and input components 702-708 described above with reference to Figure 7A. However, after execution of the Bind task 616, a set of task descriptions is displayed by the Input3 component 706. [ In particular, the Input3 component 706 is bound to the description attribute of the task elements defined in the "data / tasks.xml" document. Thus, after the Bind job 616 is executed, the values assigned to these task descriptions, represented in the data model (e.g., document object 710), are displayed in the Input3 component 706.

Initialize Application 프로세스 단계(604)를 실행하면, MyTasks.xml 문서(600)에 표현된 어플리케이션 로직의 실행은, 트리거가 활성화되기 전까지 다시 시작하지 않는다. 이 예에서, MyTasks.xml 어플리케이션은, Button1 컴포넌트(702)가 "select" 이벤트를 경험하면 실행 플로우를 프로세스 단계 "2"로 지시하는 트리거(602)를 정의한다. 따라서, 트리거는, 선택된 Button1 컴포넌트(702)에 대한 응답으로, 실행 플로우를 "Press Button"으로 명명된 프로세스 단계(606)로 지시한다. 이 예에서, 이름 속성 "decision"과 값 속성 "#MyTasks#input4"을 갖는 작업(602)은 Press Button 프로세스 단계(606)에서 실행될 작업이다. 일반적으로 설명하면, 결정 작업(620)은, Button1 컴포넌트(702)가 선택되면 어떤 텍스트가 Input4 컴포넌트(708)에 입력되었지를 결정하는 테스트를 수행한다. "<when>" XML 요소(622) 내의 로직은, Button1 컴포넌트(702)가 선택될 때 Input4 컴포넌트(708)에 텍스트가 입력되었으면, 실행 플로우를 프로세스 단계(608)로 지시한다. 반대로, 결정 작업(620)은, 트리거의 출현시 Input4 컴포넌트(708)에 텍스트가 입력되지 않았으면, 실행 플로우를 프로세스 단계(610)로 지시한다.When the Initialize Application process step 604 is executed, the execution of the application logic represented in the MyTasks.xml document 600 does not start again until the trigger is activated. In this example, the MyTasks.xml application defines a trigger 602 that directs the execution flow to process step "2 " when the Button1 component 702 experiences a" select " Thus, the trigger, in response to the selected Button1 component 702, directs the execution flow to a process step 606 named "Press Button ". In this example, job 602 having a name attribute " decision "and a value attribute" # MyTasks # input4 "is a job to be executed in the Press Button process step 606. Generally speaking, the decision task 620 performs a test to determine which text is input to the Input4 component 708 when the Button1 component 702 is selected. The logic in the "when" XML element 622 directs the execution flow to the process step 608 if text has been input to the Input4 component 708 when the Button1 component 702 is selected. Conversely, the decision task 620 directs the execution flow to process step 610 if no text has been entered in the Input4 component 708 at the time of the occurrence of the trigger.

예에서, Input4 컴포넌트(708)로 텍스트가 입력되면, 실행 플로우는 "Add Task" 프로세스 단계(608)로 진행한다. 따라서, 이름 속성 "change"와 값 속성 "data/tasks.xml"을 갖는 작업(624)은 실행될 다음 작업이다. 변경 작업(624)은 적합한 설명 속성을 갖는 신규 태스크 요소가 "data/tasks.xml" 문서에 추가되도록 한다. 이에 관해, 변경 작업(624) 내의 "<store>" XML 요소(626)는 Input4 컴포넌트(708)에 입력된 텍스트가 신규 태스크의 설명 속성에 저장되도록 하는 로직을 제공한다.In the example, when text is entered into the Input4 component 708, the execution flow proceeds to the "Add Task " process step 608. [ Thus, task 624 with the name attribute "change" and the value attribute "data / tasks.xml" is the next task to be executed. The change task 624 causes the new task element with the appropriate description attribute to be added to the "data / tasks.xml" document. In this regard, the "<store>" XML element 626 in the change task 624 provides logic to cause the text entered in the Input4 component 708 to be stored in the description attribute of the new task.

Accordingly, 이제 도 7C를 참조하면, 신규 태스크의 입력과 Button1 컴포넌트(702)의 선택 다음의 그래픽 디스플레이(700)의 상태가 도시된다. 따라서, 도 7C는 도 7A-7B를 참조하여 상술된 동일한 컴포넌트들(702-708)을 포함한다. 이 예에서, 사용자가 텍스트 "purchase airline tickets"를 Input4 컴포넌트(708)에 의해 제공된 텍스트 영역에 입력했다. 상술한 변경 작업(624)은, 상응하는 문서 오브젝트(710)을 이용하여, 이 태스크 설명의 값을 "data/tasks.xml" 문서에 추가한다. Input3 컴포넌트(706)는, 변경 작업(624)에 의해 영향을 받는 설명 속성들의 선택에 바인드되어 있으므로, Input3 컴포넌트(706)에 의해 디스플레이된 태스크들의 목록은 문서 오브젝트(710)에서 자동적으로 업데이트된다. 다시 말해, 개발자들은, 동기화와 Input3 컴포넌트(706)와 데이터 모델 사이의 데이터 교환을 위한 어플리케이션 코드를 제공하지 않아도 된다. Thus, referring now to FIG. 7C, the state of the graphical display 700 following the input of the new task and the selection of the Button1 component 702 is shown. Thus, Figure 7C includes the same components 702-708 described above with reference to Figures 7A-7B. In this example, the user has entered the text "purchase airline tickets " into the text area provided by the Input4 component 708. The above-described change operation 624 adds the value of this task description to the "data / tasks.xml" document using the corresponding document object 710. The Input3 component 706 is bound to the selection of the description attributes that are affected by the change operation 624 so that the list of tasks displayed by the Input3 component 706 is automatically updated in the document object 710. [ In other words, the developers do not have to provide application code for synchronization and data exchange between the Input3 component 706 and the data model.

일 측면에서, 사용자는 신규 태스크 설명을 Input4 컴포넌트(708)에 입력하고, Button1 컴포넌트(702)를 선택하여 태스크 목록을 업데이트할 수 있다. 또한, 사용자는, input3 컴포넌트(706)에 디스플레이된 항목들과 직접 상호작용하여 태스크 설명들을 수정할 수 있다. 예로서, 사용자는, inpu3 컴포넌트(706)에 의해 현재 디스플레이되고 있는 "update presentation" 태스크를 삭제할 수 있다. 데이터 바인딩이 정의되어 있으므로, 삭제는 자동적으로 "data/tasks.xml" 문서로 전파된다. 이에 관해, 하나 이상의 컴포넌트들 및/또는 로컬이나 원격 어플리케이션들은, "data/tasks.xml" 문서에서 표현된 태스크 설명들에 대한 데이터 리스너들일 수 있다. 각 로컬 데이터 리스너들은, 삭제중인 "update presentation" 태스크에 응답한 문서 오브젝트(710)에 의해 통지되고 업데이트된다. 특히, 태스크의 삭제는, 개발자들은 데이터 업데이트를 처리하기 위한 어플리케이션 코드를 제공하도록 요구되어지지 않으면서, 하부 데이터 모델로 전파되며, 이후 네트워크를 통해 어떠한 리스너들에게도 전파된다. In one aspect, the user can enter a new task description into the Input4 component 708 and select the Button1 component 702 to update the task list. The user can also modify the task descriptions by interacting directly with the items displayed in the input3 component 706. [ By way of example, the user may delete the "update presentation" task that is currently being displayed by the inpu3 component 706. [ Since the data binding is defined, the deletion is automatically propagated to the "data / tasks.xml" document. In this regard, one or more components and / or local or remote applications may be data listeners for task descriptions expressed in a "data / tasks.xml" document. Each local data listener is notified and updated by the document object 710 in response to the "update presentation " task being deleted. In particular, the deletion of tasks is propagated to the underlying data model, and then propagated to any listener over the network, without requiring developers to provide application code to handle data updates.

다시 도 6A를 참조하면, Button1 컴포넌트(702)가 선택될 때 텍스트가 Input4 컴포넌트(708)에 입력되지 않으면, 실행 플로우는 "Show Button" 프로세스 단계(610)로 진행한다. 따라서, 이름 속성 "action"과 값 속성 "#MyTasks"을 갖는 작업(628)은 실행될 다음 작업이다. 일반적으로 설명하면, 이 Action 작업(628)의 실행은, 처음에 감춰졌던(도 7A) Button2 컴포넌트(704)가 디스플레이 되도록 한다. MyTasks_gui.xml 문서(650)에 표시되었듯이, Button2 컴포넌트(704)는, 사용자에게 유효한 태스크 설명을 제공하도록 요청하는 텍스트 스트링을 디스플레이한다.Referring again to FIG. 6A, if text is not entered into the Input4 component 708 when the Button1 component 702 is selected, the execution flow proceeds to the "Show Button" process step 610. Thus, task 628 with the name attribute "action" and the value attribute "#MyTasks" is the next task to be executed. Generally speaking, the execution of this Action task 628 causes the initially hidden (Figure 7A) Button2 component 704 to be displayed. As shown in the MyTasks_gui.xml document 650, the Button2 component 704 displays a text string requesting the user to provide a valid task description.

당업자에 의해 이해될 수 있듯이, 도6A-7C 를 참조하여 설명된 MyTasks 어플리케이션은 본 발명의 측면들을 설명하기 위해 이용될 수 있는 한 어플리케이션의 매우 간략한 예이다. 추가적인 어플리케이션들은, 네트워크 오퍼레이팅 시스템 환경 안에서 생성되고 실행될 수 있다. 따라서, 여기에서 MyTasks 어플리케이션을 참조한 예들과 설명은 예시적인 것으로 해석되어야만 한다.As can be appreciated by those skilled in the art, the MyTasks application described with reference to Figures 6A-7C is a very simple example of an application that can be used to describe aspects of the invention. Additional applications may be created and executed within a network operating system environment. Thus, the examples and descriptions referring to the MyTasks application here should be interpreted as illustrative.

현대 어플리케이션들을 개발하는데 이용되는 프로그래밍 랭귀지들(C++,Java™, Python™ 등)은 어플리케이션의 프로세스 로직에서 생성되고 유지되는 유저 인터페이스 컴포넌트들을 포함한다. 다시 말해, 개발자는, 유저 인터페이스 컴포넌트들상에서 데이터를 생성하고 설정하는 로직을 명시적으로 제공한다. 또한, 개발자는, 어플리케이션의 유저 인터페이스에 영향을 주는 이벤트를 듣거나(listen) 적어도 데이터 변경들을 모니터하는 코드를 어플리케이션의 프로세스 로직 내에서 제공한다. 이 이벤트 리스너들은, 데이터 변경들이 어플리케이션의 유저 인터페이스와 도메인 특정적인 데이터 구조 사이에서 유지되도록 한다. 그러나, 어플리케이션의 유저 인터페이스에서 데이터 구조 사이의 입력/출력은 표준화되어 있지 않다. 따라서, 어플리케이션의 유저 인터페이스 상에서 데이터의 제시는 데이터 구조 내에서 데이터가 어떻게 표현되었는가에 강하게 결합되어 있다. 결과적으로, 유저 인테피이스 또는 데이터 구조에 대한 수정들은 어플리케이션의 다른 측면들에 영향을 줄 수 있다.Programming languages (C ++, Java ™, Python ™, etc.) used to develop modern applications include user interface components that are created and maintained in the application's process logic. In other words, the developer explicitly provides the logic to create and set up data on the user interface components. The developer also provides code in the application's process logic to listen for events that affect the user interface of the application, or at least monitor for data changes. These event listeners allow data changes to be maintained between the user interface of the application and the domain specific data structure. However, input / output between data structures in the user interface of an application is not standardized. Thus, presentation of data on the user interface of an application is strongly coupled to how data is represented in the data structure. As a result, modifications to the user experience or data structure can affect other aspects of the application.

네트워크 오퍼레이팅 시스템은, 유저 인터페이스와 MVC 디자인 패러다임을 고수하는 어플리케이션들의 실행을 지원하는 하부 데이터 모델 사이의 자동화된 통신 경로를 제공한다. 이에 관해, 개발자들은, 유저 인터페이스 컴포넌트(다른 프로그래밍 환경 랭귀지들에서 자주 제어 또는 위젯(widget)으로 언급됨)와 하부 데이터 모델간의 바인딩을 정의할 수 있다. 하부 데이터 모델에 대한 데이터 업데이트들과 컴포넌트들에 영향을 미치는 데이터 변경들의 조정은 본 발명에 의해 관리되므로, 어플리케이션 개발을 단순하게 한다. MyTasks 어플리케이션의 설명에서 설명되듯이, 하부 데이터 문서에서 표현된 데이터가 변경되면, 데이터 변경을 듣는 어떤 데이터 바운드 컴포넌트들은 자동적으로 업데이트된다. 더 상세하게는, MyTasks 어플리케이션의 바인드 작업(616)은 Input3 컴포넌트(706)을 데이터 모델에서 표현된 한 세트의 데이터에 바인드하는 어플리케이션 로직을 제공한다. 따라서, "update presentation" 태스크의 하부 데이터 XML 문서로부터의 삭제는, 네트워크를 통해 동일한 문서를 듣고 있는 어플리케이션들과 컴포넌트들을 포함하는 리스닝 컴포넌트들에 자동으로 전파된다. 또한, 데이터 바인딩들은, 네트워크를 통해 로컬과 원격 클라이언트들의 유저 인터페이스 컴포넌트들 사이의 데이터 교환과 동기화를 가능하게 한다. 예로서, MyTasks 어플리케이션의 변경 작업(624)은, Input4 컴포넌트(708)에 입력된 텍스트로 하부 데이터 문서를 업데이트하는 어플리케이션 로직을 제공한다. 이에 관해, Input3 컴포넌트(706)는 하부 데이터 문서에 대한 변경을 듣고 있다. Input3 컴포넌트(706)의 시각적 디스플레이는, 텍스트가 input4 컴포넌트(708)에 입력되고 트리거(602)가 활성화되면 업데이트된다. 이 예에서, 데이터 바인딩과 변경 작업(624)의 조합은 유저 인터페이스 컴포넌트들간의 데이터의 동기화된 교환을 가능하게 한다. The network operating system provides an automated communication path between the user interface and the underlying data model that supports the execution of applications that adhere to the MVC design paradigm. In this regard, developers can define a binding between a user interface component (often referred to as a control or widget in other programming environment languages) and a underlying data model. Data updates to the underlying data model and coordination of data changes affecting the components are managed by the present invention, thus simplifying application development. As described in the description of the MyTasks application, when the data represented in the underlying data document changes, any data bound components listening to the data change are automatically updated. More specifically, the bind operation 616 of the MyTasks application provides application logic to bind the Input3 component 706 to a set of data represented in the data model. Thus, the deletion from the underlying data XML document of the "update presentation" task is automatically propagated to listening components that include applications and components listening to the same document over the network. Data bindings also enable data exchange and synchronization between user interface components of local and remote clients over the network. By way of example, the change operation 624 of the MyTasks application provides the application logic to update the underlying data document with the text entered in the Input4 component 708. [ In this regard, the Input3 component 706 is listening to changes to the underlying data document. The visual display of the Input3 component 706 is updated when the text is input to the input4 component 708 and the trigger 602 is activated. In this example, the combination of data binding and modification operations 624 enables synchronized exchange of data between user interface components.

상술한 바와 같이, 바인딩은, 유저 인터페이스 컴포넌트들과 하부 데이터 모델 사이의 자동화된 통신 경로를 제공한다. 일 측면에서, 본 발명은, 유저 인터페이스 컴포넌트들 사이에서 바인딩이 공유 및/또는 전달될 수 있도록 한다. 본 발명의 이 측면은 도 8A-B에 표현되어 있는데, 사용자의 파일 시스템 폴더들의 서로 다른 시각적 표현들을 디스플레이하도록 설정된 컴포넌트들(800, 850)을 도시하고 있다. 특히, 도 8A는, 사용자의 폴더를 트리 구조로 디스플레이하도록 설정된 컴포넌트(800)을 도시한다. 사용자가 폴더들이 목록으로 디스플레이하도록 요청하는 입력을 생성하면, 하부 데이터 모델에 대한 컴포넌트(800)의 데이터 바인딩은 컴포넌트(850)로 전달되며, 컴포넌트(800)의 상태 또한 전달된다. 이 예는 본 발명이 데이터 모델의 설정으로부터 데이터의 표현과 처리 사이의 의존성을 제거했음을 설명한다. 또한, 데이터 바인딩의 전달과 공유는, MVC 디자인 패러다임에 따른 어플리케이션 계층간 자동화된 통신 경로를 제공할 뿐만 아니라, 개발중인 어플리케이션에 대한 개량된 플랫폼을 제공한다.As described above, the binding provides an automated communication path between the user interface components and the underlying data model. In one aspect, the invention enables a binding to be shared and / or communicated between user interface components. This aspect of the invention is illustrated in Figures 8A-B, which illustrates components 800,850 that are configured to display different visual representations of the user's file system folders. In particular, FIG. 8A shows a component 800 that is configured to display a user's folder in a tree structure. When a user creates an input that requests folders to display in a list, the data binding of the component 800 to the underlying data model is passed to the component 850 and the state of the component 800 is also passed. This example illustrates that the present invention removes the dependency between the presentation of the data model and the presentation of the data. In addition, the delivery and sharing of data binding not only provides an automated communication path between application layers according to the MVC design paradigm, but also provides an improved platform for the application under development.

본 발명은 한 세트의 유저 인터페이스 컴포넌트들(예를 들어, 버튼들, 입력 박스들, 드롭다운 박스들, 디스플레이 패널 등)을 제공한다. 어플리케이션 개발을 가능하게 하기 위해, 표준 프레임워크는, 어플리케이션들이 관련된 유저 인터페이스 컴포넌트들로부터 구축되도록 한다. 이에 관해, 유저 인터페이스 컴포넌트들은, UI XML 랭귀지를 이용하여 페어런트 컴포넌트 (parent component)로부터 속성(property)들을 상속할 수 있으므로, 더욱 복잡한 유저 인터페이스 요소들을 표현하기 위해 결합될 수 있다. 결과적으로, 어플리케이션은, 각 컴포넌트가 연관된 문서를 인지하는 계층적 구조로 조직된 관련 컴포넌트들의 한 세트를 포함할 수 있다. 다른 실시예에서, 단일 유저 인터페이스 컴포넌트는, 어플리케이션의 전체 뷰를 표현하도록 정의될 수 있다. 또한, 개발자들이 본 발명과 함께 사용하기 위한 새로운 유저 인터페이스 컴포넌트들을 생성할 수 있도록 하는 컴포넌트 API(Application Programming Interface)가 제공된다. The present invention provides a set of user interface components (e.g., buttons, input boxes, drop down boxes, display panels, etc.). To enable application development, the standard framework allows applications to be built from the associated user interface components. In this regard, the user interface components may inherit properties from the parent component using the UI XML language, and thus may be combined to represent more complex user interface elements. As a result, the application may include a set of related components organized in a hierarchical structure in which each component recognizes the associated document. In another embodiment, a single user interface component may be defined to represent the entire view of the application. In addition, a component application programming interface (API) is provided that allows developers to create new user interface components for use with the present invention.

일 측면에서, 본 발명은, XML 랭귀지를 이용하여 프로세스 지향적인(process-oriented) 어플리케이션들의 개발을 지원한다. 이에 관해, MyTasks.xml 문서(600)의 각 프로세스 단계는 프로세스 실행 플로우의 부분을 표현한다. 프로세스 단계 내의 작업들은 실행중인 어플리케이션에서의 상태 변화를 정의할 수 있다. 프로세스들간의 통신들은, 어플리케이션의 런타임 상태를 설명하는 데이터에 대한 제어된 접속을 통해 그리고 메시징 포트들의 이용을 통해 지원된다. 개발자들은, 뷰들, 컴포넌트들, 및 전역적으로 명명된(globally-named) 오브젝트들을 이용하는 익스프레션들(expressions)을 가진 다른 런타임 변수들을 참조할 수 있다. 이에 관해, 오브젝트를 참조하고 조작하는 익스프레션 랭귀지 또는 일반적인 방법이 제공된다. 일반적으로 설명하면, 익스프레션들 및 프로세스 XML 랭귀지들은 실행중인 멀티 인스턴스 어플리케이션들의 복잡성을 집합적으로 추상화한다. 대신에, 개발자들은, 어플리케이션이 단일 인스턴스 실행시 존재하는 것처럼 어플리케이션을 생성할 수 있다. MyTasks.xml 문서(600)가 설명하듯이(도 6A), 익스프레션들은 XML 신택스와 호환되도록 구조화되며 다른 프로그래밍 랭귀지 내에서 사용되기 위해 범위가 정해지거나 태그가 붙여진다. 익스프레션이 이밸류에이션되면, XML 가상 머신은, 수신된 익스프레션에 따라 요청된 데이터를 식별, 병합, 및 조작하는 태스크를 수행한다. 결과적으로, 전역적으로 명명된 오브젝트들은, 어플리케이션의 다중 런타임 인스턴스들이 실행되더라도 어플리케이션 코드 내에서 개발자들에 의해 이용될 수 있다.In one aspect, the invention supports the development of process-oriented applications using XML language. In this regard, each process step in the MyTasks.xml document 600 represents part of the process execution flow. Jobs within the process step can define state changes in the running application. Communications between processes are supported through controlled connections to data describing the runtime state of the application and through the use of messaging ports. Developers can refer to other runtime variables with expressions that use views, components, and globally-named objects. In this regard, an expression language or a general method of referencing and manipulating objects is provided. Generally speaking, expressions and process XML languages collectively abstract the complexity of running multi-instance applications. Instead, developers can create applications as if they existed when running a single instance. As described in MyTasks.xml document 600 (FIG. 6A), expressions are structured to be compatible with XML syntax and are scoped or tagged for use within other programming languages. Once the expression is valued, the XML virtual machine performs tasks to identify, merge, and manipulate the requested data according to the received expression. As a result, globally named objects can be used by developers in application code, even when multiple runtime instances of an application are executed.

본 발명은, 어떤 "오브젝트들"이 인스턴스화될 것인지로부터 복수의 "클래스들"로 구현되는 클라이언트측 컴포넌트를 제공한다. 다시 말해, 클라이언트측 컴포넌트는, 객체 지향적 프로그래밍 특징을 이용하는 JavaScript와 같은 프로그래밍 랭귀지를 이용하여 구현될 수 있다. 다른 실시예에서, 본 발명은, C 프로그래밍 랭귀지와 같은 비 객체 지향적 랭귀지나 구조들이 오브젝트들로 표현될 수 있는 다른 랭귀지를 이용하여 구현될 수 있다. 당업자에 의해 이해될 수 있듯이, 클래스로부터 생성된 오브젝트들은, 그 오브젝트의 기능성을 구현하는 알고리즘을 캡슐화하거나 감추는 메소드들을 전형적으로 포함한다. 이 구현 상세를 공개하는 대신에, 오브젝트들은, 다른 모듈들이 추상적으로 그 기능성에 접속할 수 있는 인터페이스들을 제공한다. 따라서, 본 발명의 일 실시예에 따른 XML 가상 머신을 구현한 기능성은, 객체 지향(object orientation)과 상속을 이용하는 오브젝트들의 컨텍스트에 존재한다. The present invention provides a client-side component implemented in a plurality of "classes" from which "objects" are to be instantiated. In other words, the client-side component can be implemented using a programming language such as JavaScript that utilizes object-oriented programming features. In another embodiment, the invention may be implemented using other languages in which non-object oriented languages or structures, such as C programming languages, may be represented by objects. As can be appreciated by those skilled in the art, objects created from a class typically include methods that encapsulate or obscure algorithms that implement the functionality of the object. Instead of disclosing this implementation detail, the objects provide interfaces through which other modules can abstractly access the functionality. Accordingly, the functionality that implements the XML virtual machine according to an embodiment of the present invention exists in the context of objects using object orientation and inheritance.

상술한 바와 같이, 클라이언트측 컴포넌트는, XML 신택스를 고수하는 랭귀지들로 작성된 어플리케이션들을 실행하는 XML 가상 머신 역할을 한다. 실제 실시예에서, XML 가상 머신은, 프로세스 모델링 랭귀지(예를 들어, 프로세스 XML 랭귀지), 유저 인터페이스 모델링 랭귀지(예를 들어, UI XML 랭귀지) 및 어플리케이션 패키지 모델링 랭귀지(예를 들어, 어플리케이션 패키지 XML 랭귀지)로 시맨틱하게 설명된 어플리케이션 코드를 실행하도록 설정된다. 특히, XML 가상 머신은, 여기서 설명되지 않은 기능성을 제공하는 추가적인 XML 랭귀지들이나 XML 기반 어플리케이션들을 이해하기 위해 확장될 수 있다. 또한, 여기서 설명된 XML 랭귀지들을 이용한 프로그래밍 로직을 실행하는 대신에, 다른 실시예들이 가능하다. 예를 들어, JavaScript API 또는 라이브러리들은 동일한 기능성을 구현한 어플리케이션들을 구축하는데 이용될 수 있다. 따라서, XML 기반 랭귀지들의 이용은 단순히 예시적이며, 본 발명은 전통적인 프로그래밍 랭귀지들을 이용해서도 구현될 수 있다.As described above, the client-side component serves as an XML virtual machine that executes applications written in languages that adhere to the XML syntax. In an actual embodiment, the XML virtual machine may include a process modeling language (e.g., a process XML language), a user interface modeling language (e.g., a UI XML language), and an application package modeling language ) To execute the semantically described application code. In particular, XML virtual machines can be extended to understand additional XML languages or XML-based applications that provide functionality not described here. Further, instead of executing the programming logic using the XML languages described herein, other embodiments are possible. For example, JavaScript APIs or libraries can be used to build applications that implement the same functionality. Thus, the use of XML-based languages is merely exemplary, and the invention may be implemented using conventional programming languages.

언제든지, XML 가상 머신에 의해 해석중인 어플리케이션은 특정 실행 상태에 있는 것으로 이해될 수 있다. 프로세스 XML 랭귀지는, 개발자들이 상태들 사이에서 천이하기 위한 조건들을 정의할 수 있도록 한다. 무엇보다도, XML 가상 머신은, (1) 실행중인 어플리케이션의 상태를 설명하는 런타임 변수들/오브젝트들의 한 세트를 정의, (2) 어플리케이션 상태에 천이가 발생하면 구동하는 로직을 구현, (3) 어플리케이션 상태에 적절한 변경을 구현하는 하위 레벨 구조체들(constructs)을 제공함으로써, 상태 천이들을 관리하는 기능성을 구현한다.At any time, the application being interpreted by the XML virtual machine can be understood as being in a particular execution state. The process XML language allows developers to define conditions for transitions between states. Among other things, the XML virtual machine defines (1) a set of runtime variables / objects that describe the state of the running application, (2) implement logic to drive when a transition occurs in the application state, (3) Implementing functionality to manage state transitions is provided by providing low-level constructs that implement appropriate changes to state.

이제 도 9를 참조하면, XML 가상 머신을 구현하는 클라이언트측 컴포넌트와 클래스들과 오브젝트들의 측면들이 설명된다. 클라이언트측 컴포넌트는, 네트워크 오퍼레이팅 시스템의 클라이언트측 컴포넌트의 시동시 인스턴스화되고 사용자 세션 동안 활성화를 유지하는 복수의 "매니저" 또는 오브젝트들을 포함한다. 상술한 바와 같이, 예시적인 실시예에 따라 클라이언트측 컴포넌트에 의해 제공된 오브젝트들은, 객체 지향과 상속을 이용한다. 이에 관해, 매니저들과 다른 오브젝트들이 런타임시 임베디드되는 플레이스 홀더 역할을 하는 시스템 컨텍스트 오브젝트(902)는 인스턴스화된다. 따라서, 시스템 컨텍스트 오브젝트(902)는, 어플리케이션 매니저(904), 프로세스 매니저(906), 뷰 매니저(908), 트랜잭션 매니저(910), 문서 매니저(912) 및 이벤트 매니저(914)를 포함하는 도 9에 도시된 매니저들의 인스턴스들을 생성하는데 이용될 수 있다.Referring now to FIG. 9, aspects of the client-side components and classes and objects that implement an XML virtual machine are described. The client-side component includes a plurality of "managers" or objects that are instantiated upon startup of a client-side component of the network operating system and maintain activation during a user session. As discussed above, the objects provided by the client-side components in accordance with the illustrative embodiment utilize object orientation and inheritance. In this regard, the system context object 902, which serves as a placeholder where managers and other objects are embedded at runtime, is instantiated. 9A, which includes the application manager 904, the process manager 906, the view manager 908, the transaction manager 910, the document manager 912 and the event manager 914, the system context object 902 May be used to create instances of the managers shown in FIG.

각 매니저는 시스템 컨텍스트 오브젝트(902)로부터 접속 가능한 인터페이스를 통해 노출된 특정 태스크를 전형적으로 수행한다. 따라서, 본 발명에 의해 구현된 다른 오브젝트들은, 원하는 태스크를 수행하는 매니저의 기능성을 호출하고 사용할 수 있다. 예를 들어, 프로세스 매니저(906)는, 어플리케이션의 프로세스 코드를 실행할 준비중인 프로세스 오브젝트의 인스턴스화하도록 호출될 수 있다. 다른 측면에서, 매니저들은, 내부 어플리케이션 및 내부 프로세스 보안의 기초를 제공하는 제어된 인스턴스 생성과 오브젝트들간의 통신을 허용한다. 여기서 설명이 특정 매니저들 및 매니저가 수용한 연관된 오브젝트들을 참조하여 제공되었지만, 당업자라면 특정 종류의 매니저로의 기능성의 캡슐화는 예시적인 것임을 이해할 것이다. 다른 실시예들에서, 특정 매니저들 및 그들의 대응되는 오브젝트들에 관련되어 여기서 설명된 기능성은, 캡슐화되지 않고 수행되거나, 설명된 것과 다른 방법으로 캡슐화될 수 있다. 또한, 다른 툴들이 청구된 주제의 범위를 벗어나지 않고도 이용될 수 있는 것과 같이, 여기서 설명된 객체 지향적 프로그래밍 랭귀지들과 특징들은 단지 예시적이다. Each manager typically performs a specific task exposed through an interface accessible from the system context object 902. Thus, other objects implemented by the present invention may invoke and use the functionality of the manager performing the desired task. For example, the process manager 906 may be invoked to instantiate a process object that is ready to execute the process code of the application. In other respects, managers allow controlled instance creation and communication between objects, providing a basis for internal application and internal process security. Although the description herein is provided with reference to the associated objects accepted by particular managers and managers, those skilled in the art will understand that the encapsulation of functionality to a particular type of manager is exemplary. In other embodiments, the functionality described herein with respect to particular managers and their corresponding objects may be performed without being encapsulated, or encapsulated in a manner other than that described. Also, the object-oriented programming languages and features described herein are merely exemplary, as other tools may be used without departing from the scope of the claimed subject matter.

도 9에 도시된 바와 같이, 클라이언트측 컴포넌트는, 어플리케이션의 수명(lifecycle)을 관리하는 로직을 제공하는 어플리케이션 매니저(904)를 포함한다. 이에 관해, 함수들은, 어플리케이션들을 생성하고, 오픈하고, 종료하기 위해 어플리케이션 매니저(904)에 의해 노출된다. 어플리케이션은, 어플리케이션 매니저(904)에 "등록"하는 어플리케이션 오브젝트로서 내부적으로 표현될 수 있다. 어플리케이션이 실행하도록 스케쥴되면, 어플리케이션 매니저(904)는 상응하는 어플리케이션 오브젝트를 생성하도록 호출될 수 있다. 따라서, 어플리케이션 매니저(904)는 시스템 내에서 모든 활성화된 어플리케이션들에 대한 참조들을 생성하고 수용한다. As shown in FIG. 9, the client-side component includes an application manager 904 that provides logic to manage the lifecycle of the application. In this regard, functions are exposed by the application manager 904 to create, open, and close applications. The application may be represented internally as an application object that "registers" to the application manager 904. If the application is scheduled to run, the application manager 904 may be invoked to generate a corresponding application object. Thus, the application manager 904 creates and accepts references to all active applications in the system.

상술한 바와 같이, 하나 이상의 어플리케이션들의 속성들은, 개발자에 의해 어플리케이션 패키지 XML 랭귀지를 이용하여 어플리케이션 페이지에서 시맨틱하게 설명될 수 있다. 어플리케이션 패키지에 설명된 속성들은 실행할 특정 어플리케이션에 의해 이용될 자원들과 시스템 설정들에 대한 참조들을 포함한다. 어플리케이션 패키지에서 식별된 자원들은 어플리케이션 뷰와 프로세스 로직의 시맨틱한 설명을 제공하는 XML 문서들을 포함한다. 일 측면에서, 어플리케이션 매니저(904)는, 어플리케이션이 실행하도록 스케쥴되면, 적합한 어플리케이션 패키지에서 정보를 추상화하고 식별된 자원들을 획득하도록 설정된다. 다른 실시예에서, UI와 프로세스 XML문서들을 포함하는, 어떤 XML 데이터 자원은 어플리케이션 패키지로 직접 임베디드될 수 있다. 다른 측면에서, 클라이언트가 "오프라인"이 될 때 어플리케이션들이 실행을 계속하도록 하는 기능성은 어플리케이션 매니저(904)에 의해 구현된다. 이에 관해, 적합한 어플리케이션 패키지가 대응하는 어플리케이션에 의해 사용된 자원들을 식별하는 어플리케이션 매니저(904)에 의해 참조될 수 있다. 이후, 로컬에서 일시 저장되지 않은 어떤 자원들이 식별되고 적합한 서비스 제공자로부터 획득된다. As described above, attributes of one or more applications can be semantically described in the application page using the application package XML language by the developer. The attributes described in the application package include references to resources and system settings to be used by the particular application to execute. The resources identified in the application package include XML documents that provide a semantic description of the application view and the process logic. In one aspect, the application manager 904 is configured to abstract information in an appropriate application package and to acquire identified resources when the application is scheduled to run. In another embodiment, some XML data resources, including UI and process XML documents, may be embedded directly into an application package. In another aspect, functionality that allows applications to continue execution when the client becomes "offline " is implemented by application manager 904. In this regard, a suitable application package may be referred to by the application manager 904 that identifies the resources used by the corresponding application. Thereafter, certain resources that are not temporarily stored locally are identified and obtained from the appropriate service provider.

도 9에 도시된 프로세스 매니저(906)는, 어플리케이션에서 프로세스 단계들을 실행하는데 이용되는 내부 프로세스 오브젝트들의 생성과 수용을 담당한다. 상술한 바와 같이, 프로세스 XML 랭귀지로 작성된 어플리케이션 로직은, 각각이 하나 이상의 작업들을 포함하는 일련의 프로세스 단계를 정의한다. 프로세스 매니저(906)에 의해 생성되고 수용되는 프로세스 오브젝트는 루프 쓰루(loop through) 및 하나 이상의 하위 레벨 구조체들이나 작업 핸들러들의 호출을 담당한다. 전통적인 플랫폼들과 달리, 네트워크 오퍼레이팅 시스템의 개념적인 기초는 하위 레벨 구조체들을 모델링하는 프로세스 지향적 작업들에 근거한다. 예를 들어, 모델 워크플로우들, 프로덕트 수명 관리, 사용자 협업 등과 같은 상위 레벨 구조체들은, 이 하위 레벨 구조체로부터 구축된다. 예로서, 본 발명에 의해 제공된 하위 레벨 구조체를 모델링하는 한 세트의 작업 핸들러들은, 오픈 작업 핸들러, 바인드 작업 핸들러, 변경 작업 핸들러, 결정 작업 핸드러 등을 포함하지만, 여기에 한정되지는 않는다. 또한, 개발자들이 추가적인 작업 핸들러들을 정의할 수 있도록 하는 작업 API가 제공된다. 이 방법으로, XML 가상 머신은 추가적인 하위 레벨 구조체들을 지원하고 실행하도록 확장될 수 있다. 한편, 어플리케이션에서 사용될 수 있는 작업들은 작업 API들에 따라 생성되거나 본 발명에 의해 제공된 작업들에 한정된다. 결과적으로, 오직 제한되고 잘 정의된 세트의 작업들이 어플리케이션 로직을 실행할 수 있으므로, 악성 소프트웨어를 생성하거나 악의적인 기능성을 구현하는 사용자의 능력은 심각하게 제한된다. 한편으로는, XML 문서를 조작할 수 있는 제한된 수의 방법들이 있기 때문에, 상대적으로 적은 수의 작업들이 제공될 필요가 있다. XML이 매우 일반적인 랭귀지이므로, 어떤 어플리케이션이나 도메인은 그 랭귀지를 이용하여 설명될 수 있다. 따라서, 본 발명에 의해 제공된 프로세스 XML 랭귀지와 그에 대응하는 작업들은 어떠한 수의 프로세스 로직을 설명할 수 있으며, 어떠한 종류의 어플리케이션을 설명하는데 이용될 수 있다. The process manager 906 shown in FIG. 9 is responsible for creating and accepting internal process objects used to execute process steps in an application. As described above, the application logic written in the process XML language defines a series of process steps each containing one or more tasks. Process objects created and accepted by the process manager 906 are responsible for loop through and invocation of one or more lower level structures or task handlers. Unlike traditional platforms, the conceptual basis of a network operating system is based on process-oriented tasks that model low-level constructs. For example, high-level structures such as model workflows, product lifecycle management, user collaboration, etc., are built from this low-level structure. By way of example, a set of task handlers that model the low-level structure provided by the present invention include, but are not limited to, an open task handler, a bind task handler, a change task handler, a decision task handler, and the like. There is also a working API that allows developers to define additional work handlers. In this way, the XML virtual machine can be extended to support and execute additional low-level constructs. On the other hand, the tasks that can be used in the application are created according to the task APIs or are limited to the tasks provided by the present invention. As a result, only a limited and well-defined set of tasks can execute application logic, severely limiting the user's ability to create malicious software or implement malicious functionality. On the one hand, there are a limited number of ways to manipulate an XML document, so a relatively small number of jobs need to be provided. Because XML is a very common language, some applications or domains can be described using that language. Thus, the process XML language and its corresponding tasks provided by the present invention can describe any number of process logic and can be used to describe any kind of application.

일 실시예에 따르면, 실행중인 어플리케이션 또는 인스턴스의 "런타임 상태"를 추적하는 인스턴스 오브젝트는 본 발명에 의해 제공된다. 당업자라면 실행중인 어플리케이션의 런타임 상태는 로직이 실행되므로 지속적으로 발달할 수 있음을 이해할 수 있다. 인스턴스 오브젝트는 실행중인 어플리케이션의 런타임 상태를 추적하고 관리하며, XML 가상 머신을 구현하는데 이용된 다른 오브젝트들에 컨텍스트를 제공한다. 따라서, 인스턴스 오브젝트들은 작업의 의미를 프로세스들의 실행과 그들에 연관된 작업들에 결합한다. 결과적으로, 어플리케이션 인스턴스의 런타임 상태가 지속적으로 변경하더라도, 작업 핸들러들은 이 변경들을 설명하는 데이터를 공급받는다. 이 방법으로, 본 발명은, 상태가 없는 프로세스 오브젝트들을 사용하는 어플리케이션 로직의 동적인 실행을 지원한다. 다른 말로, 어플리케이션의 복수 인스턴스가 존재하더라도, 어플리케이션 코드의 단일 버전만이 필요하므로, 메모리를 절약할 수 있다.According to one embodiment, instance objects that track the "runtime state" of a running application or instance are provided by the present invention. Those skilled in the art will appreciate that the runtime state of the running application may continue to evolve as the logic is executed. The instance object tracks and manages the runtime state of the running application, and provides context to other objects used to implement the XML virtual machine. Thus, instance objects combine the meaning of a task into the execution of processes and the tasks associated with them. As a result, even if the runtime state of the application instance continuously changes, the work handlers are supplied with data describing these changes. In this way, the present invention supports the dynamic execution of application logic using stateless process objects. In other words, even if there are multiple instances of the application, only a single version of the application code is needed, thus saving memory.

도 9에 도시된 바와 같이, 클라이언트측 컴포넌트는 "뷰" 또는 실행중인 어플리케이션에 연관된 유저 인터페이스의 추적을 담당하는 뷰 매니저(908)를 포함한다. 어플리케이션의 유저 인터페이스를 렌더링하고 업데이트하는데 이용되는 내부 뷰 오브젝트를 생성하는 메소드들이 뷰 매니저(908)에 의해 제공된다. MVC 디자인 패러다임에 따라서, 어플리케이션의 유저 인터페이스는 UI XML 랭귀지를 이용하여 시맨틱하게 설명될 수 있다. 따라서, 컴포넌트들과 어플리케이션의 완전한 유저 인터페이스의 다른 그래픽 속성들은 UI XML 문서에 표현될 수 있다. 뷰 매니저(908)에 의해 인스턴스화되고 수용되는 뷰 오브젝트들은 UI XML 문서에 시맨틱하게 설명된 유저 인터페이스들을 렌더링하는데 이용된다. 일 실시예에서, 유저 인터페이스의 렌더링은 일련의 XML 트랜스포메이션들(transformations)을 통해 수행될 수 잇다. 그러나, 당업자라면 유저 인터페이스는 XML 트랜스포메이션들을 수행하지 않고도 렌더링 될 수 있으며 상술한 설명은 예시적인 것으로 해석되어야 한다는 것을 이해할 수 있다. 어떤 경우에도, 뷰 매니저(908)는 새로운 뷰 오브젝트들을 생성하고 시스템 내의 모든 활성화된 뷰들에 대한 참조를 수용하도록 설정된다. As shown in Fig. 9, the client-side component includes a "view" or view manager 908 that is responsible for tracking the user interface associated with the running application. Methods are provided by the view manager 908 to create an internal view object used to render and update the user interface of the application. Depending on the MVC design paradigm, the user interface of the application can be semantically described using the UI XML language. Thus, other graphical properties of the components and the complete user interface of the application can be represented in the UI XML document. View objects instantiated and accepted by the view manager 908 are used to render the semantically described user interfaces in the UI XML document. In one embodiment, rendering of the user interface may be performed through a series of XML transformations. However, those skilled in the art will appreciate that the user interface can be rendered without performing XML transformations and the above description should be interpreted as illustrative. In any case, view manager 908 is configured to create new view objects and to accept references to all active views in the system.

도 9에 도시된 바와 같이, 클라이언트측 컴포넌트는 문서 오브젝트들의 인스턴스의 생성 및 문서 오브젝트들에 대한 참조의 수용을 담당하는 문서 매니저(912)를 포함한다. 상술한 바와 같이, XML 문서들은, 네트워크 오퍼레이팅 시스템 환경에서 공동 데이터 소스의 역할을 하는 데이터 모델이다. 어플리케이션 로직, 시스템 설정들, 어플리케이션 상태 등도 XML 문서들에서 표현된다. 일 측면에서, 문서 매니저(912)는, 클라이언트 컴퓨터 상의 메모리에 문서들이 로딩되거나 일시 저장되도록 하는 것을 담당한다. 따라서, 문서 매니저(912)는 문서들을 획득하기 위해 통신 매니저(이하에서 설명됨)와 같은 다른 매니저들과 상호작용할 수 있다. 문서들은 통신 채널 또는 로컬 하드 드라이브 상에 또는 클라언트 컴퓨터 상의 비휘발성 메모리에 유지되는 문서들에 접속하기 위해 생성될 수 있는 채널을 사용하여 원격 네트워크 위치로부터 획득될 수 있다. 다른 측면에서, 문서 매니저(912)는, 클라이언트 컴퓨터 상의 메모리에 로딩된 각 문서를 추적하는 클라이언트측 캐시 역할을 한다. 문서가 로컬에서 획득되면, 문서의 구조 객체 지향적 표현(structured object-oriented representation)을 제공하는 내부 문서 오브젝트가 인스턴스화될 수 있다. 이에 관해, 문서 매니저(912)는 시스템 내의 모든 문서 오브젝트들에 대한 참조들을 수용하며, 다른 것들 중에서, XML 문서들을 생성하고, 검색하고, 저장하고, 이름을 변경하는 메소드들을 노출한다. As shown in FIG. 9, the client-side component includes a document manager 912 that is responsible for creating instances of document objects and accepting references to document objects. As described above, XML documents are data models that serve as a common data source in a network operating system environment. Application logic, system settings, application state, and so on are also represented in XML documents. In one aspect, the document manager 912 is responsible for causing documents to be loaded or temporarily stored in memory on the client computer. Thus, the document manager 912 may interact with other managers, such as a communications manager (described below), to obtain documents. Documents may be obtained from a remote network location using a channel that may be created to connect to documents maintained on a communication channel or on a local hard drive or on a non-volatile memory on a client computer. In another aspect, the document manager 912 serves as a client-side cache that tracks each document loaded into memory on the client computer. Once a document is obtained locally, an internal document object providing a structured object-oriented representation of the document may be instantiated. In this regard, the document manager 912 accepts references to all document objects in the system, among other things, exposes methods for creating, retrieving, storing, and renaming XML documents.

도 9에 시각적으로 도시된 이벤트 매니저(914)는, XML 가상 머신의 측면들이 트리거의 활성화에 대한 응답으로 어플리케이션 로직을 실행하도록 하는 트리거 이벤트 버스 역할을 한다. 한편, 프로세스 오브젝트는, 트리거를 이벤트 매니저(914)에 리스너로 등록하는 노티파이어(notifier) 오브젝트를 이용할 수 있다. 컴포넌트 오브젝트들과 같은 시스템 내의 다른 오브젝트들은 자주 자기를 리스너로 이벤트 매니저(914)에 직접 등록한다. 무엇보다도, 노티파이어 오브젝트는, 활성화된 트리거에 대한 응답으로 실행될 어플리케이션 내의 프로세스 단계를 식별하는 데이터를 수신하고 저장한다. 또한, 노티파이어 오브젝트에 의해 제공된 데이터는 트리거를 오리지네이팅(originating) 오브젝트(즉, 종종 뷰 또는 컴포넌트 오브젝트)에 연관시킨다. 한편, 이벤트 매니저(914)는, 트리거가 활성화되면, 오브젝트들(즉, 뷰 또는 컴포넌트 오브젝트)이 등록된 리스너들을 푸쉬하거나 통지하도록 한다. 이 예에서, 컴포넌트 오브젝트는 이벤트 매니저(914)에 통지하고 데이터를 패스한다. 응답으로, 이벤트 매니저(914)는 활성화된 이벤드에 대한 리스너들을 식별하는 룩업(look-up)을 수행한다. 이후, 적합한 노티파이어 또는 다른 리스닝 오브젝트들은 경보를 받고, 어플리케이션 실행이 적합한 프로세스 단계로 진행하도록 하는 데이터를 제공받을 수 있다. 이하에서 상세히 설명되듯이, 개별 어플리케이션 인스턴스들은 동일한 세트의 트리거들과 노티파이어 오브젝트들을 각각 이용할 수 있다. 이 방법으로 동일한 자원들을 재사용하도록 설정된 이벤트 매니저(914) 및 관련된 시스템들의 제공은 성능을 향상시키면서 사용되는 메모리를 감소한다.The event manager 914, shown graphically in FIG. 9, serves as a trigger event bus that allows aspects of the XML virtual machine to execute application logic in response to activation of the trigger. On the other hand, the process object may use a notifier object that registers the trigger in the event manager 914 as a listener. Other objects in the system, such as component objects, frequently register themselves with the event manager 914 as listeners. Among other things, the Notifier object receives and stores data identifying the process steps in the application to be executed in response to the activated trigger. Also, the data provided by the Notify object associates the trigger with the originating object (i.e., often a view or component object). On the other hand, the event manager 914 pushes or notifies registered listeners that the objects (i.e., view or component object) are activated when the trigger is activated. In this example, the component object notifies the event manager 914 and passes the data. In response, the event manager 914 performs a look-up that identifies the listeners for the activated event. The appropriate notifier or other listening objects may then be alerted and provided with data that allows the application execution to proceed to the appropriate process step. As will be described in detail below, individual application instances can use the same set of triggers and notify objects, respectively. Providing the event manager 914 and related systems configured to reuse the same resources in this manner reduces the memory used while improving performance.

여기서 사용되는, "트리거"는 어플리케이션 코드가 실행되도록 하는 정의된 트리거링의 존재를 나타낸다. 따라서, 도 6A를 참조하여 상술한 예시적인 프로세스 XML 문서(600)에서, 트리거(602)의 활성화는, 어플리케이션 코드에 정의된 특정 프로세스 단계가 실행되도록 한다. 현존하는 시스템에 비해, 본 발명에 의해 구현된 트리거들은 데이터 업데이트의 존재시 정상적으로 활성화되지 않는다. 다시 말해, 데이터 바인딩과 같은 특정하는 작업들 이외에, 개발자들은 어플리케이션 유저 인터페이스로부터 데이터 모델로의 입력과 출력을 관리하는 로직을 제공하도록 요구되지 않는다. 대신에, 데이터 업데이트들은, 개별 데이터 업데이트 통지 이벤트 버스에 의한 본 발명에 의해 관리되며, 트리거의 활성화에 대응하지 않는다. 이하에서 상세히 설명되듯이, 본 발명의 측면들은, 컴포넌트들과 오브젝트들에 대한 데이터 업데이트의 전파를 자동적으로 처리하는 문서 오브젝트에 구현된 개별 이벤트 버스를 제공한다.As used herein, a "trigger" indicates the presence of a defined triggering that causes the application code to execute. Thus, in the exemplary process XML document 600 described above with reference to FIG. 6A, activation of the trigger 602 causes certain process steps defined in the application code to be executed. Compared to existing systems, the triggers implemented by the present invention are not normally activated in the presence of data updates. In other words, in addition to specific tasks such as data binding, developers are not required to provide logic to manage input and output from the application user interface to the data model. Instead, data updates are managed by the present invention by an individual data update notification event bus, and do not correspond to activation of a trigger. As will be described in detail below, aspects of the present invention provide a separate event bus implemented in a document object that automatically handles the propagation of data updates to components and objects.

도 9에 또한 도시된 트랜잭션 매니저(910)는 XML 문선의 컨텐츠를 업데이트하는데 이용되는 트랜잭션들을 생성하고 전파하는 인터페이스를 제공한다. 따라서, 데이터 모델에 대한 변경이 수행되면, 이는 트랜잭션을 초래한다. 이에 관해, 트랜잭션은 상대적인 변경을 표현하며 데이터 모델에 대한 변경을 구현하거나 원상태로 회복하는데 이용되는 데이터를 포함하는 XML 데이터 조각(fragment)으로 표현될 수 있다. 예를 들어, 도 6A를 참조하여 상술한 MyTasks 어플리케이션에서, 하부 데이터 XML 문서에 태스크를 추가하는 변경 작업(624)은 트랜잭션의 생성을 초래한다. 트랜잭션에 반영된 데이터 업데이트는 어떤 원격 리스너들 뿐만이 아니라 데이터 모델에서도 지속될 수 있다. 일 실시예에서, 트랜잭션 매니저(910)는, 트랜잭션이 생성된 순서를 식별할 뿐만 아니라 트랜잭션에 표현된 데이터 업데이트를 "롤백"하는데 이용될 수 있는 트랜잭션이 언제 생성되었는지에 관한 식별 및 타임 스탬핑 데이터를 포함한다. The transaction manager 910, also shown in FIG. 9, provides an interface for creating and propagating transactions used to update the contents of an XML document. Thus, when a change to the data model is performed, this results in a transaction. In this regard, a transaction can be represented as an XML data fragment that represents the relative change and contains the data used to implement or restore the changes to the data model. For example, in the MyTasks application described above with reference to FIG. 6A, a change operation 624 that adds a task to a lower data XML document results in the creation of a transaction. Data updates reflected in the transaction can persist in the data model as well as in any remote listeners. In one embodiment, the transaction manager 910 not only identifies the order in which the transactions were created, but also includes an identification of when a transaction was created that could be used to "rollback " the data update represented in the transaction, and timestamping data .

이제 도 10A를 참조하면, 어플리케이션 패키지를 오픈하는 프로세싱을 수행하는 어플리케이션 시작 루틴(1000)이 설명된다. 어플리케이션 시작 루틴(1000)은, 어플리케이션을 시작하는 명령을 생성한 사용자에 응답하여 수행될 수 있다. 상술한 바와 같이, 본 발명의 측면들은, 사용자가 메뉴 아이템, 아이콘 등의 선택을 통해 어플리케이션들을 시작할 수 있는 데스크탑 환경을 제공할 수 있다. 이 종류의 명령을 수신한 것에 대한 응답으로, 시스템 컨텍스트 오브젝트(902) 내부의 데이터 종류 인식자(data type recognizer)에 어플리케이션 패키지, XML 문서 또는 바이너리 파일에 연관된 위치를 식별하는 URL이 패스될 수 있다. 이하에서 상세히 설명되듯이, 데이터 종류 인식자는, 동작들을 식별하여 특정 종류의 문서들에 연관시키는 다양한 방법에 이용된다. 어떤 경우에도, 어플리케이션 시작 루틴(1000)은, 데이터 종류 인식자가 어플리케이션 패키지(예를 들어, 어플리케이션 패키지 XML 문서)에 대응하는 문서가 오픈되었다고 결정하면 수행될 수 있다.Referring now to FIG. 10A, an application launching routine 1000 for performing processing to open an application package is described. The application start routine 1000 can be performed in response to a user who has generated an instruction to start an application. As noted above, aspects of the invention may provide a desktop environment in which a user may launch applications through selection of menu items, icons, and the like. In response to receiving this type of command, a URL identifying the location associated with the application package, XML document, or binary file may be passed to the data type recognizer within the system context object 902 . As will be described in detail below, a data type identifier is used in various ways to identify operations and associate them with certain types of documents. In any case, the application start routine 1000 can be performed when the data type recognizer determines that the document corresponding to the application package (for example, the application package XML document) has been opened.

도 10A에 도시된 어플리케이션 시작 루틴(1000)에서, 어플리케이션 매니저(904)는, 블록(1002)의 어플리케이션 오브젝트를 인스턴스화 하는데 이용된다. 각각이 다른 어플리케이션을 표현하는 다중 어플리케이션 오브젝트들은, 인스턴스화되고 어플리케이션 매니저(904)에 수용된다. 어플리케이션 시작 루틴(1000)을 통한 이 반복에서, 예를 들어 워드 프로세싱 프로그램을 표현하는 제1 어플리케이션 오브젝트가 인스턴스화될 수 있다. 어플리케이션 시작 루틴(1000)을 통한 다른 반복에서, 다른 프로그램(예를 들어, 이메일 프로그램)을 표현하는 제2 어플리케이션 오브젝트가 인스턴스화될 수 있다. 어플리케이션 오브젝트들에 대한 인스턴스 생성과 접속을 제어함으로써, 한 어플리케이션에 연관된 프로세스 로직은, 다른 어플리케이션에 연관된 내부 오브젝트들(예를 들어, 뷰 오브젝트들, 인스턴스 오브젝트, 프로세스 오브젝트 등)에 접속할 수 없다. 따라서, 워드 프로세싱 프로그램의 프로세스 로직을 실행할 때, 이메일 어플리케이션 패키지에 연관된 뷰 오브젝트는 접속할 수 없다. 이하에서 상세히 설명되듯이, 어플리케이션 오브젝트들를 인스턴스화하고 수용하는 어플리케이션 매니저(904)의 이용은 내부 어플리케이션 및 내부 프로세스 보안 모두를 보장하는 본 발명에 의해 제공된 더 큰 프레임워크의 일부이다.In the application start routine 1000 shown in FIG. 10A, the application manager 904 is used to instantiate an application object in the block 1002. FIG. Multiple application objects, each representing a different application, are instantiated and placed in the application manager 904. In this iteration through the application launching routine 1000, a first application object representing, for example, a word processing program may be instantiated. In another iteration through the application launch routine 1000, a second application object representing another program (e. G., An email program) may be instantiated. By controlling instance creation and connection to application objects, the process logic associated with one application can not access internal objects (e.g., view objects, instance objects, process objects, etc.) associated with other applications. Thus, when executing the process logic of a word processing program, the view object associated with the email application package is not accessible. As described in detail below, the use of application manager 904 to instantiate and accept application objects is part of the larger framework provided by the present invention to ensure both internal application and internal process security.

블록(1004)에서, 대응하는 어플리케이션 패키지에서 특정된 오픈중인 어플리케이션의 자원들이 획득된다. 본 발명에 따라 형성된 어플리케이션 패키지 내의 로직은 자원들과 어플리케이션 설정의 전체 청사진을 제공한다. 따라서, 어플리케이션 패키지 XML 문서는, 다른 것들 중에서, 이미지들, 데이터 문서들, XSLT 문서들과 같은 다른 어플리케이션 자원들뿐만이 아니라, 어플리케이션에 연관된 프로세스와 UI XML문서들을 식별할 수 있다. 어플리케이션 패키지 XML 문서 자체를 포함한, 어플리케이션에 의해 이용되는 자원들은, 클라이언트 상의 메모리에 일시 저장되거나, 통신 채널(이하에서 설명됨)을 이용하여 서비스 제공자로부터 획득될 수 있다. 자원 및 설정 관리에 더하여, 어플리케이션 패키지 XML 랭귀지는, 개발자들이 어플리케이션 패키지들을 더 발전된 방법으로 설정할 수 있도록 한다. 예로서만, 어플리케이션 패키지 XML 문서 내의 조건부 로직은, 자원들이 패일오버 네트워크 위치(failover network location)로부터 획득되는 더욱 폴트-톨러런트(fault-tolerant) 네트워크 서비스를 구현하는데 이용될 수 있다. 주 네트워크 위치를 이용할 수 없는 경우에, 어플리케이션 패키지는 자원들을 획득할 수 있는 대체 네트워크 위치들을 식별할 수 있다. 그러나, 이는, 본 발명이 개발자들로 하여금 패키지 XML 랭귀지를 이용하여 어플리케이션 패키지를 설정하도록 하는 방법의 단지 한 예일 뿐이다. At block 1004, the resources of the open application specified in the corresponding application package are obtained. The logic in the application package formed in accordance with the present invention provides an overall blueprint of resources and application settings. Thus, the application package XML document can identify, among other things, processes and UI XML documents associated with the application, as well as other application resources such as images, data documents, and XSLT documents. The resources used by the application, including the application package XML document itself, may be temporarily stored in memory on the client, or may be obtained from a service provider using a communication channel (described below). In addition to resource and configuration management, the application package XML language allows developers to set up application packages in a more advanced way. By way of example only, the conditional logic in the application package XML document can be used to implement more fault-tolerant network services where resources are obtained from a failover network location. If the primary network location is not available, the application package may identify alternative network locations from which resources may be obtained. However, this is just one example of how the invention allows developers to set up an application package using a package XML language.

도 10A에서 설명되듯이, 블록(1006)에서, 어플리케이션 시작 루틴(1000)은 어플리케이션의 추가적인 런타임 인스턴스(들)이 허용되었는지를 결정한다. 어플리케이션 패키지 XML 랭귀지는 개발자들이, 생성될 수 있는 어플리케이션 인스턴스들의 숫자를 제한하는 설정을 설정할 수 있도록 한다. 따라서, 블록(1006)에서 만들어진 결정은 어플리케이션 패키지 XML에 정의된 설정에 종속될 수 있다. 블록(1006)에서, 추가적인 인스턴스가 허용되지 않는다는 결정이 만들어지면, 어플리케이션 시작 루틴(1000)은 추가적인 인스턴스를 허용하지 않는 어플리케이션을 시작하는 명령이 처리되는 블록(1008)로 진행한다. 이에 관해, 블록(1008)에서의 명령 핸들링은 어플리케이션의 현존하는 런타임 인스턴스의 리프레싱(refreshing)을 포함할 수 있다. 추가적으로 또는 다른 실시예에서, 명령 핸들링은 어플리케이션의 추가적인 인스턴스가 허용되지 않는다는 다이얼로그를 통해 사용자에게 통지하는 것을 포함할 수 있다. 이후, 명령을 처리할 때, 어플리케이션 시작 루틴(1000)은 종료하는 블록(1014)로 진행한다.As illustrated in FIG. 10A, at block 1006, application launch routine 1000 determines if additional runtime instance (s) of the application are allowed. The application package XML language allows developers to configure settings that limit the number of application instances that can be created. Thus, the decision made at block 1006 may depend on the settings defined in the application package XML. At block 1006, if a determination is made that no additional instances are allowed, the application launch routine 1000 proceeds to block 1008 where an instruction to start an application that does not allow additional instances is processed. In this regard, the instruction handling in block 1008 may include refreshing an existing runtime instance of the application. Additionally or in other embodiments, command handling may include notifying the user via a dialog that additional instances of the application are not allowed. Then, when processing the command, the application start routine 1000 proceeds to block 1014 where it ends.

. 한편, 블록(1006)에서 만들어진 결정이 어플리케이션의 추가적인 인스턴스를 허용하면, 어플리케이션 시작 루틴(1000)은 블록(1010)으로 진행한다. 블록(1010)에서, 시작된 어플리케이션의 런타임 상태를 추적하고 관리하는 인스턴스 오브젝트가 인스턴스화된다. 프로세스와 뷰 오브젝트들이 생성되면, 본 발명의 측면들은 이 오브젝트들을 그들에 상응하는 인스턴스에 연관시킨다. 블록(1010)에서 인스턴스화된 인스턴스 오브젝트는 프로스세와 뷰 오브젝트들, 앨리어스들, 및 다른 런타임 변수들을 추적하는 구조들을 유지한다. 따라서, 이 어플리케이션 인스턴스에 연관된 프로세스와 뷰 오브젝트들은 인스턴스 오브젝트에 잘 알려진다. 제어된 인스턴스 생성과 오브젝트들의 참조를 통해, 어플리케이션 인스턴스의 경계를 한정하는 로컬화된 관계 계층구조가 설정될 수 있다. 이하에서 설명되듯이, 이 프레임워크는 프로세스와 뷰 오브젝트들을 상응하는 인스턴스에 연관시키고 로컬화된 관계 계층구조 밖에서 이 오브젝트들에 대한 접속을 한정한다. . On the other hand, if the decision made at block 1006 allows for an additional instance of the application, then the application launching routine 1000 proceeds to block 1010. At block 1010, an instance object is instantiated that tracks and manages the runtime state of the launched application. As processes and view objects are created, aspects of the invention associate these objects with their corresponding instances. Instance objects instantiated at block 1010 maintain structures that track the progress and view objects, aliases, and other runtime variables. Therefore, the process and view objects associated with this application instance are well known to the instance object. Through controlled instance creation and reference of objects, a localized relationship hierarchy can be established that defines the boundaries of the application instance. As described below, the framework associates process and view objects with corresponding instances and defines connections to these objects outside the localized relationship hierarchy.

블록(1010)에서 인스턴스화된 오브젝트에 의해 제공된 컨텍스트는 어플리케이션 런타임 상태에 관한 기능성이 구현되도록 한다. 일 측면에서, 인스턴스 오브젝트는, 해석중인 어플리케이션 코드에서 접한 익스프레션들을 이밸류에이션하는 로컬 익스프레션 엔진을 인스턴스화하고 수용한다. 프로세스 오브젝트는 상응하는 인스턴스 오브젝트 및 익스프레션을 이밸류에이션하기 위해 인스턴스가 포함하고 있는 로컬 익스프레션 엔진을 이용할 수 있다. 또한, 블록(1010)에서 인스턴스화된 인스턴스 오브젝트는, 작업의 의미를 프로세스 로직의 실행에 결합하기 위해 작업들을 실행할 때 제공될 수 있다.The context provided by the instantiated object at block 1010 allows the functionality associated with the application runtime state to be implemented. In one aspect, the instance object instantiates and accepts a local expression engine that valuates expressions tangent to the application code being interpreted. The process object can use the local expression engine that the instance contains to valorise the corresponding instance objects and expressions. Instance objects instantiated at block 1010 may also be provided when executing operations to combine the semantics of the operations with the execution of the process logic.

도 10A에서 상세히 설명되듯이, 블록(1012)에서, 블록(1002)에서 인스턴스화된 어플리케이션 오브젝트는 어플리케이션의 프로세스와 뷰 로직의 실행을 오픈하고 시작하는데 이용될 수 있다. 프로세스와 UI XML 문서들 내의 로직의 실행을 오픈하고 시작하는 루틴들은 이하에서 설명되며 여기서는 제공되지 않는다. 중요하게, 매번 어플리케이션 패키지에 연관된 어플리케이션이 시작될 때, 새로운 인스턴스 오브젝트가 어플리케이션의 런타임 상태를 추적하기 위해 제공된다. 예를 들어, 워드 프로세싱 프로그램을 표현하는 어플리케이션 오브젝트는 워드 프로세싱 어플리케이션이 시작될 때마다 다른 인스턴스 오브젝트를 제공한다. 이 방법으로 어플리케이션 오브젝트를 이용함으로써 본 발명의 측면들은 실행중인 어플리케이션에 연관된 오브젝트들에 대한 접속을 제어할 수 있다. 이후, 어플리케이션 시작 루틴(1000)은 종료하는 블록(1004)로 진행한다.As detailed in FIG. 10A, at block 1012, an application object instantiated in block 1002 can be used to open and launch the execution of the application's process and view logic. The routines for opening and starting the execution of logic within the process and UI XML documents are described below and are not provided here. Importantly, each time an application associated with an application package is started, a new instance object is provided to track the runtime state of the application. For example, an application object representing a word processing program provides a different instance object each time the word processing application is started. By using an application object in this way, aspects of the invention can control access to objects associated with an application that is running. The application start routine 1000 then proceeds to block 1004 where it terminates.

이제 도 10B를 참조하면, 어플리케이션들을 캡슐화하고 내부 어플리케이션 보안을 제공하는 어플리케이션 오브젝트의 사용은 추가적으로 상세하게 설명된다. 어플리케이션 패키지로부터 어플리케이션이 시작되면, 어플리케이션 매니저(904)는 어플리케이션의 캡슐화된 표현을 제공하는 어플리케이션 오브젝트를 인스턴스화한다. 도 10B에서 설명되듯이, 어플리케이션 매니저(904)는 Application Object A(1030)와 Application Object B(1032)를 인스턴스화할 수 있다. 일 실시예에서, 어플리케이션 오브젝트는 하나 이상의 인스턴스 오브젝트들를 인스턴스화하고 수용할 수 있다. 도 10B에 도시된 예에서, Application Object A(1030)는 Instance Object A1(1035), Instance Object A2(1038), 및 Instance Object AN(1040)를 인스턴스화하고 수용할 수 있다. 유사하게, Application Object B(1032)는 Instance Object B1(1042) 및 Instance Object BN(1044)를 인스턴스화하고 수용할 수 있다. 이에 관해, 도 10B에 도시된 오브젝트들간의 일방향 화살표는, 화살표가 시작된 소스 오브젝트가 화살표에 의해 식별된 데스티네이션 오브젝트를 수용함을 나타낸다. 따라서, 어플리케이션 매니저(904)로부터 어플리케이션 오브젝트들(1030-1034)로의 화살표는 이 오브젝트들이 어플리케이션 매니저(904)에 수용됨을 나타낸다. 도 10B의 설명으로부터, 어플리케이션 매니저(904), 어플리케이션 오브젝트들(1030-1034) 및 그들의 상응하는 인스턴스 오브젝트들(1036-1044)간의 관계가 명확해진다.Referring now to FIG. 10B, the use of application objects to encapsulate applications and provide internal application security is described in further detail. When an application is launched from an application package, the application manager 904 instantiates an application object that provides an encapsulated representation of the application. As illustrated in FIG. 10B, application manager 904 may instantiate Application Object A 1030 and Application Object B 1032. In one embodiment, an application object can instantiate and accept one or more instance objects. In the example shown in FIG. 10B, Application Object A 1030 can instantiate and accept Instance Object A1 1035, Instance Object A2 1038, and Instance Object AN 1040. Similarly, Application Object B 1032 can instantiate and accept Instance Object B 1 1042 and Instance Object BN 1044. In this regard, the one-way arrows between the objects shown in Fig. 10B indicate that the source object from which the arrow was started accepts the destination object identified by the arrow. Thus, the arrows from the application manager 904 to the application objects 1030-1034 indicate that these objects are to be accepted by the application manager 904. 10B, the relationship between the application manager 904, the application objects 1030-1034 and their corresponding instance objects 1036-1044 is clarified.

도 10B에 도시된 오브젝트들간의 관계는 본 발명이 내부 어플리케이션 보안을 보장할 수 있는지를 설명한다. 어플리케이션 오브젝트들에의 접속은, 어플리케이션들을 생성하고, 오픈하고, 종료하는 메소드들을 노출한 어플리케이션 매니저(904)에 의해 제어된다. 어플리케이션 오브젝트가 인스턴스화되면, 어플리케이션 매니저(904)는 어플리케이션 오브젝트를 분리된 메모리 공간으로 고립시킨다. 어플리케이션 오브젝트들이 메모리 공간을 공유하는 것을 방지함으로써, 한 어플리케이션으로부터의 코드는, 다른 어플리케이션에 할당된 메모리 공간에 주입되거나 영향을 미칠 수 없다. 또한, 어플리케이션 오브젝트는, 어플리케이션에 연관된 내부 데이터가 감춰진 어플리케이션의 캡슐화된 표현을 제공한다. 어플리케이션의 기능성과 내부 데이터로의 접속 모두는 노출된 메소드들의 생성을 통해 제어된다. 이러한 방법으로 어플리케이션들을 격리하고 캡슐화함으로써, 한 어플리케이션에 연관된 내부 오브젝트들(예를 들어, 뷰 오브젝트들, 인스턴스 오브젝트, 프로세스 오브젝트 등)은 다른 어플리케이션에게는 접속되어질 수 없게 된다. 따라서, Application Object A(1030)를 이용하는 코드를 실행하면, Application Object B(1032)에 연관된 내부 오브젝트들은 접속될 수 없다. 어플리케이션의 내부 데이터가 접속될 수 없더라도, 데이터는 하부 데이터 모델을 이용하여 공유될 수 있다. 따라서, 사용자가 충분한 접속 권한들을 가지면, 문서는 다중 어플리케이션에 의해 공유될 수 있다. 다시 말해, 본 발명에 의해 제공된 내부 어플리케이션 보안 프레임워크는 하부 데이터 모델을 이용하는 어플리케이션들 사이에서의 데이터의 인가된 고유를 금지하지 않는다. The relationship between the objects shown in Fig. 10B explains whether the present invention can guarantee internal application security. The connection to the application objects is controlled by the application manager 904 which exposes methods for creating, opening, and terminating applications. Once the application object is instantiated, the application manager 904 isolates the application object into a separate memory space. By preventing application objects from sharing memory space, code from one application can not be injected or influenced by memory space allocated to another application. The application object also provides an encapsulated representation of the application in which the internal data associated with the application is hidden. Both the functionality of the application and its connection to internal data is controlled through the creation of exposed methods. By isolating and encapsulating applications in this way, the internal objects associated with one application (for example, view objects, instance objects, process objects, etc.) can not be accessed by other applications. Therefore, when executing the code using the application object A 1030, the internal objects associated with the application object B 1032 can not be connected. Even if the application's internal data can not be accessed, the data can be shared using the underlying data model. Thus, if the user has sufficient access rights, the document can be shared by multiple applications. In other words, the internal application security framework provided by the present invention does not prohibit the authenticated nature of the data between applications using the underlying data model.

. 이제 도 10C를 참조하면, 로컬화된 관계 계층구조를 구현하기 위한 인스턴스 오브젝트들의 사용이 추가적으로 상세하게 설명된다. 로컬화된 관계 계층구조를 정의함으로써, 본 발명의 측면들은 멀티 인스턴스 어플리케이션들이 안전하게 실행되도록 한다. 도 10C의 설명은 어플리케이션 오브젝트(1050)와 인스턴스 오브젝트(1052)를 포함한다. 또한, 도 10C는 어플리케이션의 프로세스와 UI XML 문서들이 오픈되면 인스턴스화 되는 프로세스 오브젝트(1054), 뷰 오브젝트(1056), 컴포넌트 오브젝트(1058) 및 다이얼로그 오브젝트(1060)를 도시한다. 일 실시예에서, 어플리케이션 오브젝트(1050)는 어플리케이션의 실행을 시작할 때 인스턴스 오브젝트(1052)를 제공한다. 어플리케이션 오브젝트(1050)에서 시작해서 뷰 오브젝트(1056)와 프로세스 오브젝트(1054)로 향하는 점선 일방향 화살표는, 이 오브젝트들이 제공된 인스턴스 오브젝트(1052)에 특정된 로컬화된 관계 계층구조 내에서 생성되었다는 것을 나타낸다. 이에 관해, 인스턴스 오브젝트(1052)는MiniView 매니저(1062)와 MiniProcess 매니저(1064)를 유지한다. 어플리케이션의 프로세스 XML 문서가 오픈되면, 인스턴스 오브젝트(1052)는, MiniProcess 매니저(1064)를 이용하여 추적된 결과적인 프로세스 오브젝트(1054)를 참조하여 제공된다. 유사하게, 어플리케이션 뷰가 오픈되면 발생하는 뷰 오브젝트(1056)가 인스턴스 오브젝트(1052)에 제공되며 MiniView 매니저(1062)에 의해 수용된다. 따라서, MiniView 매니저(1062)와 MiniProcess 매니저(1064)에 대한 업데이트들은 인스턴스 오브젝트(1052)가 특정 어플리케이션 인스턴스에 연관된 오브젝트들을 추적하고 식별할 수 있게 한다.. Referring now to FIG. 10C, the use of instance objects to implement a localized relationship hierarchy is described in further detail. By defining a localized relationship hierarchy, aspects of the present invention allow multi-instance applications to be executed safely. The description of FIG. 10C includes an application object 1050 and an instance object 1052. 10C also shows a process object 1054, a view object 1056, a component object 1058, and a dialog object 1060 that are instantiated when an application's process and UI XML documents are opened. In one embodiment, the application object 1050 provides an instance object 1052 when starting execution of the application. The dashed one-way arrows starting from the application object 1050 and directed to the view object 1056 and the process object 1054 indicate that these objects were created within a localized relationship hierarchy specific to the provided instance object 1052 . In this regard, the instance object 1052 maintains the MiniView manager 1062 and the MiniProcess manager 1064. When the application's process XML document is opened, the instance object 1052 is provided with reference to the resulting process object 1054 tracked using the MiniProcess manager 1064. Similarly, a view object 1056, which occurs when an application view is opened, is provided in the instance object 1052 and is accepted by the MiniView manager 1062. Accordingly, updates to the MiniView manager 1062 and MiniProcess manager 1064 allow the instance object 1052 to track and identify objects associated with a particular application instance.

어플리케이션의 로직을 설명하는 코드를 통해, 개발자들은 어플리케이션의 로직을 정의하기 위해 전역적으로 명명된 오브젝트들을 이용할 수 있다. 이 전역적으로 명명된 오브젝트들은 본 발명에 의해 제공된 익스프레션 랭귀지에 따라 참조될 수 있다. 그러나, 어플리케이션 코드 내의 오브젝트들에 할당된 전역 이름들(global name)은 다른 인스턴스에 속한 런타임 오브젝트들을 참조할 수 있다. 예를 들어, 다음 익스프레션 "#MyTasks#"이 뷰 오브젝트(1056)을 참조하는 어플리케이션 코드에서 이용될 수 있다. 또한, 다음 익스프레션 "#MyTasks#button1"이, 상술한 뷰 오브젝트(1056)의 컨텍스트 내에서 생성된 컴포넌트 오브젝트(예를 들어 Button)를 참조하는데 이용될 수 있다. 애매함을 제거하고 보안을 강화하기 위해, 본 발명의 측면들은 어플리케이션 코드에서 접한 전역적으로 명명된 오브젝트들이 적절한 인스턴스에 관해서 이밸류에이션되도록 하는 기능성을 구현한다. 이에 관해, 전역적으로 명명된 오브젝트들의 이밸류에이션은 복제된 프로세스나 UI XML 문서들을 생성하지 않고 수행된다. 대신에, 어플리케이션의 프로세스와 UI 문서들은 멀티플 어플리케이션 인스턴스들에 대한 런타임 오브젝트들을 구축하기 위해 공유되고 사용된다. 이하에서 명확해지듯이, 로컬화된 관계 계층구조의 구현은, 익스프레션들이 이밸류에이션되고 인스턴스 안에서 적절한 뷰 오브젝트에 접속할 때 적절한 인스턴스의 식별 및/또는 공급에 대한 기초를 제공한다.Through code that describes the logic of the application, developers can use globally named objects to define the logic of the application. These globally named objects may be referred to in accordance with the expression language provided by the present invention. However, the global names assigned to the objects in the application code can refer to runtime objects belonging to other instances. For example, the following expression "# MyTasks #" may be used in the application code that references the view object 1056. Further, the following expression "# MyTasks # button1" can be used to reference a component object (for example, a Button) generated in the context of the above-described view object 1056. [ To eliminate ambiguity and enhance security, aspects of the invention implement functionality that allows globally named objects encountered in application code to be valued in terms of the appropriate instance. In this regard, this valuation of globally named objects is performed without generating duplicated processes or UI XML documents. Instead, the application's processes and UI documents are shared and used to build runtime objects for multiple application instances. As will become apparent below, the implementation of the localized relationship hierarchy provides the basis for the identification and / or provisioning of the appropriate instance when the expressions are valued and connected to the appropriate view object within the instance.

도 10C에 도시된 예에서, 양방향 화살표가 인스턴스 오브젝트(1052)와 뷰 오브젝트(1056) 사이에 도시되어 있다. 한편, 양방향 화살표는 인스턴스 오브젝트(1052)가 뷰 오브젝트(1056)는 이 특정 어플리케이션 인스턴스에 연관된다는 것을 알고 있음을 나타낸다. 인스턴스화 되면, 뷰 오브젝트(1056)는 인스턴스 오브젝트(1052)에 제공되며 MiniView 매니저(1062)에 의해 수용된다. 한편, 어플리케이션 뷰가 생성되어 뷰 오브젝트(1056)가 그에 연관된 인스턴스를 인식할 때 인스턴스 오브젝트(1052)에 대한 식별자가 공급된다. 결과적으로, 데이터 업데이트 또는 어플리케이션 로직이 실행되도록 하는 입력이 수신될 때 적합한 인스턴스가 식별된다. 예를 들어, 뷰 오브젝트(1056)이 어플리케이션 뷰를 오픈하도록 사용될 때 컴포넌트 오브젝트(1058)가 인스턴스화 될 수 있다. 컴포넌트 오브젝트(1058)는 어플리케이션 뷰의 컨텍스트 내에서 생성되므로, 뷰 오브젝트(1056)와 통신할 수 있다. 결과적으로, 컴포넌트 오브젝트(1058)는, 예를 들어 사용자가 어플리케이션 코드를 실행하게 하는 입력을 제공할 때, 적절한 인스턴스 오브젝트(1052)를 식별한다. In the example shown in FIG. 10C, a bi-directional arrow is shown between the instance object 1052 and the view object 1056. On the other hand, a double-headed arrow indicates that the instance object 1052 knows that the view object 1056 is associated with this particular application instance. Once instantiated, a view object 1056 is provided to the instance object 1052 and accepted by the MiniView manager 1062. On the other hand, when an application view is created and the view object 1056 recognizes the instance associated with it, an identifier for the instance object 1052 is supplied. As a result, an appropriate instance is identified when an input is received that causes the data update or application logic to execute. For example, a component object 1058 may be instantiated when the view object 1056 is used to open an application view. Since the component object 1058 is created in the context of the application view, it can communicate with the view object 1056. As a result, the component object 1058 identifies the appropriate instance object 1052, for example, when the user provides input to execute the application code.

도 10C에 도시된 예에서, 일방향 화살표가 인스턴스 오브젝트(1052)와 프로세스 오브젝트(1054) 사이에 도시된다. 일 실시예에서, 어플리케이션 내의 프로세스 단계가 프로세스 오브젝트(1052)를 이용하여 실행된다. MiniProcess 매니저(1064)의 이용 및 업데이트를 통해, 인스턴스 오브젝트(1052)는 연관된 프로세스 오브젝트(1054)를 인식한다. 그러나, 본 발명에 의해 제공된 프로세스 오브젝트들은 프로세스 단계들 사이에서는 상태가 보존되지 않는다(stateless). 결과적으로, 프로세스 오브젝트들은 단일 인스턴스 오브젝트(1052)로부터 컨텍스트를 제공받는다. 다시 말해, 프로세스 오브젝트(1052)는, 프로세스 단계들의 실행 사이에서, 연관된 인스턴스 오브젝트(1052)를 인식하지 않는다. 그러나, 프로세스 오브젝트(1054)는, 제공된 인스턴스 오브젝트(1052)에 의해 수용된 익스프레션 엔진(이하에서 설명됨)의 서비스들을 이용할 수 있다. 도 10C에 도시된 로컬화된 관계 계층구조 및 연관된 설명은, 멀티 인스턴스 어플리케이션들을 여전히 지원하면서 어떻게 본 발명이 내부 프로세스 보안을 보장할 수 있는지를 설명한다. 프로세스 단계에서 작업들을 통해 반복하면, 프로세스 오브젝트(1054)는 한 인스턴스 오브젝트(1054)로부터 컨텍스트를 제공받을 수만 있다. 관계들이 설정되어 프로세스 오브젝트(1054)가 단일 인스턴스 오브젝트(1054)로부터 컨텍스트를 공급 받는 프레임워크는, 다른 인스턴스들에 연관된 오브젝트들 사이에 엄격한 분리를 허용한다. 따라서, 어플리케이션 코드를 실행할 때, 프로세스 오브젝트(1054)는 다른 인스턴스의 로컬화된 관계 계층구조 내에 있는 오브젝트들에는 접속할 수 없다. In the example shown in FIG. 10C, a one-way arrow is shown between the instance object 1052 and the process object 1054. In one embodiment, the process steps in the application are executed using the process object 1052. [ Through the use and update of the MiniProcess manager 1064, the instance object 1052 recognizes the associated process object 1054. However, the process objects provided by the present invention are stateless between process steps. As a result, the process objects are provided with a context from a single instance object 1052. In other words, the process object 1052 does not recognize the associated instance object 1052 between executions of the process steps. However, the process object 1054 may utilize the services of the expression engine (described below) received by the provided instance object 1052. The localized relationship hierarchy and associated description shown in Figure 10C illustrate how the present invention can ensure internal process security while still supporting multi-instance applications. By repeating through the tasks in the process step, the process object 1054 can only be provided with a context from one instance object 1054. [ The framework in which the relationships are set and the process object 1054 is supplied with context from a single instance object 1054 allows strict separation between objects associated with other instances. Thus, when executing application code, the process object 1054 can not connect to objects in the localized relationship hierarchy of another instance.

본 발명의 측면들은, 페어런트 인스턴스에 의해 설정된 로컬화된 관계 계층구조 내에서 서브 인스턴스를 생성할 수 있다. 이 실시예에서, 서브 인스턴스와 결과적인 서브 뷰 오브젝트 및 서브 프로세스 오브젝트들은 페어런트 인스턴스에 의해 설정된 로컬화된 관계 계층구조 내에서 생성된다. 서브 인스턴스에 의해 설명된 로컬화된 관계 계층구조는 페어런트 인스턴스에 의해 설정된 로컬화된 관계 계층구조 내에서 생성된 오브젝트들에게 보여질 수 있다. 그러나, 서브 인스턴스 내에서 생성된 런타임 오브젝트들은 페어런트 인스턴스 또는 다른 서브 인스턴스들에 연관된 오브젝트들을 인식하지 못한다. 페어런트 인스턴스 내에 서브 인스턴스를 넣는(nest) 능력은, 다른 스코프들을 이용하는 능력뿐 아니라 모듈라 코드를 구축하는데 있어 어플리케이션 개발자들에게 큰 유연성을 제공한다.Aspects of the present invention may create sub-instances within a localized relationship hierarchy established by the parent instance. In this embodiment, the sub-instance and the resulting sub-view object and sub-process objects are created within a localized relationship hierarchy established by the parent instance. The localized relationship hierarchy described by the sub-instance may be visible to objects created within the localized relationship hierarchy established by the parent instance. However, the runtime objects created within the sub-instance do not recognize objects associated with the parent instance or other sub-instances. The ability to nest subinstances within a parent instance provides application developers greater flexibility in building modular code as well as the ability to use other scopes.

이제 도 11을 참조하면, 어플리케이션의 프로세스 코드에서 정의된 로직의 실행을 오픈하고 시작하기 위한 프로세스 시작 루틴(1100)이 설명된다. 프로세스 시작 루틴(1100)은 프로세스 로직을 포함한 문서를 오픈하라는 호출이 생성되면 실행될 수 있다. 일 실시예에서, 파일을 오픈하라는 호출은, 호출하는 오브젝트로부터 URL을 수신한 데이터 종류 인식자에게 발행될 수 있다. 데이터 종류 인식자에 전달된 URL은 어플리케이션 패키지 XML 문서, 프로세스 XML문서 또는 UI XML 문서를 포함하는, 그러나 여기에 한정되지 않는, 어떠한 종류의 문서들에 대응할 수 있다. 프로세스 로직을 포함하는 문서를 오픈할 때, 데이터 종류 인식자는 어플리케이션 실행을 가능하게 하는 특정한 동작이 수행되도록 할 수 있다. 도 11에 도시된 예시적인 실시예에서, 데이터 종류 인식자는, 제공된 문서가 프로세스 XML 문서인지를 판단하고 이 파일의 종류에 특정된 동작들을 수행되도록 한다.Referring now to FIG. 11, a process start routine 1100 for opening and starting execution of logic defined in the process code of an application is described. The process start routine 1100 can be executed when a call to open a document containing process logic is generated. In one embodiment, a call to open a file may be issued to the data type identifier that received the URL from the calling object. The URL passed to the data type identifier may correspond to any kind of document, including, but not limited to, an application package XML document, a process XML document, or a UI XML document. When opening a document containing process logic, the data type recognizer can cause certain operations to be performed that enable application execution. In the exemplary embodiment shown in FIG. 11, the data type identifier determines if the provided document is a process XML document and performs operations specific to the type of the file.

도 11에 도시된 프로세스 시작 루틴(1100)은, 프로세스 XML 문서가 오픈될 수 있는 두 예시적인 환경들을 설명한다. 그러나, 프로세스 XML 문서들이 청구된 주제의 범위를 벗어나지 않는 다른 환경에서도 오픈될 수 있으므로, 이하에서 제공된 예들은 예시적인 것으로 해석되어야 한다. 도 11에 설명된 바와 같이, 프로세스 시작 루틴(1100)은 블록(1102) 또는 블록(1104)에서 시작한다. 예시적인 실시예에서, 루틴(1100)은, 데이터 종류 인식자가 어플리케이션 패키지에 연관된 프로세스 XML 문서를 오픈하는 호출을 수신한 블록(1102)에서 시작한다. 이 실시예에서, 어플리케이션 오브젝트는, 호출시 블록(1102)에서 수신한 이전에 생성된 인스턴스 오브젝트를 제공한다. 이하에서 상세히 설명되듯이, 프로세스 시작 루틴(1100)은, 프로세스 XML 문서에서 정의된 프로세스 단계들을 실행할 것으로 예상된 프로세스 오브젝트를 인스턴스화한다. 이 프로세스 오브젝트에 대한 참조는, 호출시 블록(1102)에서 수시한 제공된 상응하는 인스턴스에 이후 제공될 수 있다. The process start routine 1100 shown in FIG. 11 describes two exemplary environments in which a process XML document can be opened. However, since process XML documents may be opened in other environments that do not fall outside the scope of the claimed subject matter, the examples provided below should be interpreted as illustrative. 11, the process start routine 1100 begins at block 1102 or at block 1104. As shown in FIG. In an exemplary embodiment, the routine 1100 begins at block 1102 where the data type recognizer has received a call to open a process XML document associated with the application package. In this embodiment, the application object provides a previously created instance object received at block 1102 upon invocation. As described in detail below, the process start routine 1100 instantiates a process object that is expected to execute the process steps defined in the process XML document. A reference to this process object may subsequently be provided to the corresponding instance provided at some time in block 1102 upon invocation.

다른 실시예에서, 프로세스 시작 루틴(1100)은, 데이터 종류 인식자가 독립형 어플리케이션을 표현하는 프로세스 XML 문서를 오픈하는 호출을 수신한 블록(1104)에서 시작한다. 어플리케이션들은 어플리케이션 패키지와 연관되어질 필요는 없다. 이 실시예에서, 데이터 종류 인식자는, 프로세스 XML 문서를 오픈하라는 호출시 블록(1104)에서 제공받은 인스턴스를 수신하지 않는다. 이러한 방법으로 독립적이 되도록 설정된 어플리케이션들은 실행의 멀티 인스턴스들을 지원하지 않으며 어플리케이션들이 적어도 메모리 공간 일부를 공유하도록 한다.In another embodiment, the process start routine 1100 begins at block 1104 where the data type recognizer has received a call to open a process XML document representing a standalone application. Applications need not be associated with an application package. In this embodiment, the data type identifier does not receive the instance provided in block 1104 upon invoking the process XML document to open. Applications set to be independent in this way do not support multiple instances of execution and allow applications to share at least some memory space.

블록(1106)에서, 프로세싱은 오픈될 문서의 파일 종류를 식별하는 데이터 종류 인식자에 의해 실행된다. 이 예에서, 데이터 종류 인식자에 의해 수행되는 분석은, 수신된 호출에 연관된 문서가 프로세스 XML 문서인지를 판단한다. 상술한 바와 같이, 데이터 종류 인식자는 동작들을 특정 파일 종류에 연관시킬 수 있다. 프로세스 XML 문서를 오픈하라는 요청을 접하면, 데이터 종류 인식자는, 블록(1108)에서, 프로세스 XML 문서를 오픈하라는 요청이 수신되었음을 나타내는 프로세스 매니저(906)을 호출하도록 설정된다.At block 1106, processing is performed by a data type identifier that identifies the file type of the document to be opened. In this example, the analysis performed by the data type identifier determines whether the document associated with the received call is a process XML document. As described above, the data type recognizer may associate actions with a particular file type. Upon receipt of the request to open the process XML document, the data type identifier is set, at block 1108, to call the process manager 906 indicating that a request has been received to open the process XML document.

판단 블록(1110)에서, 프로세스 매니저(906) 내의 로직은 이 프로세스 XML 문서에 대한 프로세스 오브젝트가 메모리에 일시 저장되었는지를 판단한다. 일 측면에서, 프로세스 시작 루틴(1100)는, 어플리케이션이 최초로 시작되면 새로운 프로세스 오브젝트를 인스턴스화하는 것을 담당한다. 인스턴스화되면, 로직은, 새롭게 인스턴스화된 프로세스 오브젝트가 프로세스 단계를 실행할 수 있도록 하는 프로세스 시작 루틴(1100)에 의해 구현된다. 프로세스 오브젝트는 상태가 보존되지 않으므로, 재사용될 수 있다. 따라서, 동일한 프로세스 로직은 어플리케이션 패키지 또는 프로세스 XML 문서에 임베디드된 다른 프로세스들의 동일한 인스턴스로부터 어플리케이션 코드를 실행하는데 이용될 수 있다. 따라서, 어플리케이션이 시작될 때 인스턴스화된 프로세스 오브젝트는 프로세스 매니저(906)에 의해 메모리에 일시 저장될 수 있다. 프로세스 매니저(906)가 여전히 메모리에 있는 이 어플리케이션을 위한 프로세스 오브젝트를 인스턴스화하면, 블록(1110)에서 수행된 테스트의 결과는 "예"이며, 프로세스 시작 루틴(1100)은 블록(1120)으로 진행하며, 이하에서 상세히 설명된다. 반대로, 새로운 프로세스 오브젝트가 인스턴스화되어야 한다고 판단되면, 프로세스 시작 루틴(1100)는 블록(1112)으로 진행한다. 새로운 프로세스 오브젝트가 인스턴스화되기 전에, 오픈중인 프로세스 XML 문서는 로컬에서 이용 가능하여야 한다. 따라서, 프로세스 매니저(904)는, 블록(1112)에서, 적합한 프로세스 XML 문서를 획득하기 위해 문서 매니저(912)를 통해 라우팅되는 호출을 생성한다.At decision block 1110, the logic within the process manager 906 determines whether the process object for this process XML document has been temporarily stored in memory. In one aspect, the process start routine 1100 is responsible for instantiating a new process object when the application is first started. Once instantiated, the logic is implemented by a process start routine 1100 that allows the newly instantiated process object to execute the process steps. Process objects can be reused because their state is not preserved. Thus, the same process logic can be used to execute application code from the same instance of another process embedded in an application package or process XML document. Thus, the process object instantiated when the application is started can be temporarily stored in the memory by the process manager 906. [ If the process manager 906 still instantiates a process object for this application in memory, the result of the test performed at block 1110 is YES and the process start routine 1100 proceeds to block 1120 , Which will be described in detail below. Conversely, if it is determined that a new process object should be instantiated, the process start routine 1100 proceeds to block 1112. Before a new process object is instantiated, the process XML document being opened must be available locally. Thus, at block 1112, the process manager 904 generates a call that is routed through the document manager 912 to obtain a suitable process XML document.

블록(1114)에서, 프로세스 매니터(904)에 의해 요청중인 프로세스 XML 문서가 클라이언트 컴퓨팅 장치의 메모리에 로딩되었는지가 판단된다. 상술한 바와 같이, 문서 매니저(912)는 클라이언트상의 메모리에 로딩되는 각 문서를 추적하는 클라이언트측 캐시 역할을 한다. 오픈중인 프로세스 XML 문서가 문서 매니저(912)에 의해 유지되는 클라이언트측 캐시에서 참조된다고 판단되면, 프로세스 시작 루틴(1100)은 블록(1118)로 진행하며, 이하에서 상세히 설명된다. 반대로, 요청된 프로세스 XML문서가 클라이언트측 캐시에 로딩되지 않았으면, 프로세스 시작 루틴(1100)은 문서 매니저(912)가 요청된 프로세스 XML 문서를 획득되도록 하는 블록(1116)으로 진행한다. 더욱 상세하게는, 블록(1116)에서, 문서 매니저(912)는, 적합한 프로세스 XML 문서가 제공된 URL에 의해 식별된 네트워크 위치로부터 획득되도록 요청하기 위해 통신 매니저(이하에서 설명됨)를 이용한다. At block 1114, it is determined whether the process XML document being requested by the process manager 904 has been loaded into the memory of the client computing device. As discussed above, the document manager 912 serves as a client-side cache that tracks each document loaded into memory on the client. If it is determined that the process XML document being opened is referenced in the client-side cache maintained by the document manager 912, the process start routine 1100 proceeds to block 1118, which is described in detail below. Conversely, if the requested process XML document has not been loaded into the client side cache, the process start routine 1100 proceeds to block 1116 where the document manager 912 causes the requested process XML document to be obtained. More specifically, at block 1116, the document manager 912 uses a communication manager (described below) to request that a suitable process XML document be obtained from the network location identified by the provided URL.

프로세스 XML 문서가 클라이언트측 캐시로부터 이용가능하면, 새로운 프로세스 오브젝트가 블록(1118)에서 인스턴스화된다. 특히, 프로세스 매니저(904) 내의 로직은 어플리케이션 코드를 실행하기로 한 새로운 프로세스 오브젝트를 인스턴스화하는데 이용된다. 이후, 새로운 프로세스 오브젝트는, 블록(1120)에서, 대응하는 프로세스 XML 문서에 리스너로 등록된다. 이하에서 상세히 설명되듯이, 데이터 모델 내의 문서에 리스너로 등록함으로써, 오브젝트는, 문서에 대한 특정 데이터 업데이트가 수행되면 통지를 받고 어떤 동작을 취할 수 있다.If a process XML document is available from the client-side cache, a new process object is instantiated in block 1118. In particular, the logic within the process manager 904 is used to instantiate new process objects that are intended to execute application code. Thereafter, a new process object is registered as a listener in the corresponding process XML document, at block 1120. As described in detail below, by registering as a listener in a document in a data model, the object can be notified and take some action when a specific data update to the document is performed.

블록(1122)에서, 노티파이어 오브젝트들은 어플리케이션에서 각 트리거에 대해 인스턴스화된다. 특히, 파싱(parsing)은, 오픈중인 프로세스 XML 문서에서 정의된 트리거 요소들을 식별하도록 수행될 수 있다. 예로서, MyTasks 어플리케이션은, 블록(1122)에서 인스턴스화되는 노티파이어 오브젝트를 초래하는 트리거(602)(도 6A)를 정의한다. 트리거들은 뷰, 컴포넌트, 이벤트 및 단계 속성을 포함하는 각 트리거를 가진 프로세스 XML 문서에서 요소로서 정의될 수 있다. 뷰와 컴포넌트 속성들에 할당된 값은 트리거가 활성화될 어플리케이션 뷰 및/또는 컴포넌트를 식별한다. 유사하게, 이벤트 속성에 할당된 값은 트리거를 활성화할 이벤트의 종류를 식별한다. 또한, 단계 속성에 할당된 값은 트리거에 대한 응답으로 실행이 지시될 어플리케이션의 프로세스 코드 내의 프로세스 단계를 식별한다. 어플리케이션 내의 각 트리거에 대해, 프로세스 매니저(906) 내의 로직은 노티파이어 오브젝트를 인스턴스화하고 특정 프로세스 단계를 수행하기 위해 이후에 이용될 수 있는 노트파이어 오브젝트에 데이터를 일시 저장한다. At block 1122, the Notify objects are instantiated for each trigger in the application. In particular, parsing can be performed to identify trigger elements defined in the process XML document being opened. By way of example, the MyTasks application defines a trigger 602 (Figure 6A) that results in a Notifier object instantiated in block 1122. [ Triggers can be defined as elements in a process XML document with each trigger containing views, components, events, and step attributes. The values assigned to the view and component properties identify the application view and / or component for which the trigger is to be activated. Similarly, the value assigned to the event attribute identifies the type of event to activate the trigger. In addition, the value assigned to the step attribute identifies the process step in the process code of the application to which execution is directed in response to the trigger. For each trigger in the application, the logic in the process manager 906 instantiates the Notifier object and temporarily stores the data in a NotFire object that may subsequently be used to perform a particular process step.

도 11에서 상세히 설명되듯이, 어플리케이션에서 정의된 각 트리거는 블록(1124)에서 이벤트 매니저(914)에 등록된다. 일 실시예에서, 이벤트 매니저(914)는 한 세트의 트리거 데이터를 리스닝 노티파이어 오브젝트들에 연관시키는 내부 해쉬 데이터 구조를 유지한다. 따라서, 트리거들은 이벤트 매니저(914)에 의해 유지되는 해쉬 데이터 구조를 업테이트함으로써 등록될 수 있다. 이하에서 상세히 설명되듯이, 이벤트 매니저(914)는, 컴포넌트와 이벤트 종류에 대한 등록된 이벤트에 매치되는 이벤트가 발생하면 적합한 리스닝 오브젝트와 노티파이어 오브젝트들에 통지한다.As described in detail in FIG. 11, each trigger defined in the application is registered in the event manager 914 in block 1124. [ In one embodiment, the event manager 914 maintains an internal hash data structure that associates a set of trigger data with the listening Notifier objects. Thus, the triggers can be registered by updating the hash data structure maintained by the event manager 914. [ As described in detail below, the event manager 914 notifies suitable listening objects and notify objects when an event matching a registered event for a component and an event type occurs.

도 11에서 상세히 설명되듯이, 새로운 인스턴스가 인스턴스화될 것인지에 관한 판단이 블록(1126)에서 이루어진다. 프로세스 XML 문서를 오픈할 때, 인스턴스가 제공될 수 있다. 특히, 상술한 어플리케이션 시작 루틴(1000)은, 프로세스 XML 문서를 오픈할 때 인스턴스화하고 인스턴스를 제공한다. 또한, 인스턴스들은, 모듈라 어플리케이션 개발을 지원하기 위해서 그리고 컨텍스트를 공유하는 다른 프로세스들을 위하여 다른 환경들에 제공될 수 있다. 이 실시예들에서, 새로운 인스턴스는 인스턴스화되지 않으며, 프로세스 시작 루틴(1100)은 블록(1130)으로 진행하며, 이하에서 상세히 설명된다. 반대로, 인스턴스 오브젝트가 제공되지 않으면, 프로세스 시작 루틴(1100)은 블록(1128)로 진행하며, 인스턴스 오브젝트가 인스턴스화된다. 특히, 프로세스 매니저(906) 내부의 로직은, 블록(1128)에서 새로운 인스턴스 오브젝트를 인스턴스화하는 호출을 생성한다.11, a determination is made at block 1126 as to whether a new instance is to be instantiated. When opening a process XML document, an instance can be provided. In particular, the application start routine 1000 described above instantiates and provides an instance when opening a process XML document. Instances can also be provided in other environments to support modular application development and for other processes sharing the context. In these embodiments, the new instance is not instantiated and the process start routine 1100 proceeds to block 1130, which is described in detail below. Conversely, if no instance object is provided, the process start routine 1100 proceeds to block 1128, where the instance object is instantiated. In particular, the logic inside the process manager 906 generates a call that instantiates a new instance object at block 1128.

블록(1130)에서, 프로세스 XML 문서에서 정의된 프로세스 단계를 실행하는 호출이 생성된다. 실제 실시예에서, 프로세스 오브젝트는 프로세스 시스템이 수신한 두 개의 파라미터에 기초하여 실행되도록 설정된다. (1) 어플리케이션의 런타임 상태를 표현하는 제공된 인스턴스 및 (2) 실행될 프로세스 단계의 식별자. 이에 관해, 프로세스 오브젝트에 제공되는 인스턴스는 어플리케이션 패키지 또는 독립 어플리케이션의 컨텍스트 내에서 생성될 수 있다. 양 실시예에서, 프로세스 시작 루틴(1100)은, 프로세스 XML 문서에 정의된 각 프로세스 단계를 실행할 때 멀티 인스턴스들에 대해 프로세스 오브젝트가 재사용되도록 하는 파라미터를 프로세스 오브젝트에 제공하도록 설정된다. 이후, 프로세스 시작 루틴(1100)는 종료하는 블록(1132)으로 진행한다.At block 1130, a call is made to execute the process steps defined in the process XML document. In an actual embodiment, the process object is set to run based on two parameters received by the process system. (1) a given instance representing the runtime state of the application and (2) the identifier of the process step to be executed. In this regard, the instance provided to the process object may be created in the context of an application package or an independent application. In both embodiments, the process start routine 1100 is configured to provide the process object with a parameter that allows the process object to be reused for multiple instances when executing each process step defined in the process XML document. Thereafter, the process start routine 1100 proceeds to block 1132 where it terminates.

프로세스 단계가 시작되면, 제어 플로우는 프로세스 오브젝트 내에서 인코딩된 실행 메소드(execute method)에 지시된다. 일반적으로 설명하면, 실행 메소드는 루프 스루(loop through)하고 프로세스 단계에서 정의된 각 작업이 실행되도록 한다. 다시 말해, 실행 메소드는 프로세스 작업 API에 따라 개발된 프로세스 작업들에 대한 인터페이스이다. 따라서, 실행 메소드는 MyTasks 어플리케이션에서 정의된 프로세스 단계 "1"을 실행하기 위해서 프로세스 시작 루틴(1100)에 의해 호출될 수 있다. 응답으로, 실행 메소드는 Open, Bind 및 Action작업들(612-616)이 이 프로세스 단계(604) 내에서 실행되도록 할 수 있는 프로세싱을 수행한다. When the process step is started, the control flow is directed to the encoded execute method in the process object. Generally speaking, the run method loops through and allows each task defined in the process stage to execute. In other words, the run method is the interface to the process tasks developed according to the process task API. Thus, the execute method may be called by the process start routine 1100 to execute process step "1 " defined in the MyTasks application. In response, the execute method performs processing that allows Open, Bind, and Action tasks 612-616 to be executed within this process step 604.

이제 도 12A-B를 참조하면, 프로세스 단계에서 작업들이 실행되도록 설정된 실행 메소드(1200)가 설명된다. 도 12A에 설명되듯이, 실행 메소드(1200)는 프로세스 단계 내의 새로운 작업이 식별된 블록(1202)에서 시작한다. 일 실시예에서, 프로세서 단계 내의 작업들은 전형적으로 식별되고 순차적으로 실행된다. 새로운 작업을 접하면, 작업의 값 속성에서 제공된 익스프레션은 블록(1203)에서 이밸류에이션을 위해 선택된다. 예를 들어, 상술한 MyTasks 어플리케이션에서, MyTasks 문서(600)(도 6A)는 initialize Application 프로세스 단계(604)를 정의한다. 이 프로세스 단계(604) 내에서, 제1 작업은 값 속성 "apps/mytasks_gui.xml"을 갖는 Open 작업(612)이다. 실행 메소드(1200)를 통한 반복으로, 익스프레션 "apps/mytasks_gui.xml"은 블록(1203)에서 이밸류에이션을 위해 선택된다.Referring now to Figures 12A-B, an execute method 1200 is described in which tasks are set to execute at a process step. As illustrated in Figure 12A, the execute method 1200 begins at block 1202 where a new job is identified within the process step. In one embodiment, tasks within the processor step are typically identified and executed sequentially. Upon encountering a new job, the expression provided in the value attribute of the job is selected for this valuation in block 1203. For example, in the MyTasks application described above, the MyTasks document 600 (FIG. 6A) defines an initialize Application process step 604. Within this process step 604, the first job is an Open job 612 with the value attribute "apps / mytasks_gui.xml ". In an iteration through execution method 1200, the expression "apps / mytasks_gui.xml" is selected for this valuation at block 1203.

도 12를 참조한 설명은 프로세스 단계 이내에 있는 작업들이 순차적으로 실행되는 예들을 제공한다. 그러나, 본 발명의 측면들은 작업들의 비동기 실행을 지원해서, 프로세스 단계의 각 작업들이 순차적으로 실행되지 않을 수 있다. 예를 들어, 제1 작업이 원격 네트워크 위치에서만 이용 가능한 자원을 요청하면, 자원이 비동기적으로 획득되는 동안 (제1작업의 결과에 종속적이지 않은) 다른 작업들이 실행될 수 있다.The description with reference to FIG. 12 provides examples in which tasks within a process step are executed sequentially. However, aspects of the present invention support asynchronous execution of tasks, so that each task of the process step may not be executed sequentially. For example, if a first job requests resources available only at a remote network location, other jobs may be executed while resources are acquired asynchronously (not dependent on the outcome of the first job).

도 12A에서 상세히 설명되듯이, 블록(1203)에서 이밸류에이션을 위해 선택된 익스프레션은 블록(1204)에서 XBind로 이밸류에이션된다. 여기서 사용되는, XBind는 URL, 베이스 경로(예를 들어, 특정 URL에 의해 식별된 문서 내에 있는 XML 조각을 참조하는 XPath 표현), 및 선택(예를 들어, 복스의 XPath 익스프레션들)을 포함하는 데이터 종류이다. MyTasks 어플리케이션에서 정의된 예시적인 Open 작업(612)에서, "apps/mytasks_gui.xml" 익스프레션은 블록(1204)에서 다음의 XBind로 이밸류에이션된다.As described in detail in FIG. 12A, at block 1203, the expression selected for this valuation is valued at XBind at block 1204. As used herein, XBind includes data that includes a URL, a base path (e.g., an XPath expression that refers to an XML fragment in the document identified by a particular URL), and a selection (e.g., XPath expressions of the box) It is kind. In an exemplary Open operation 612 defined in the MyTasks application, the "apps / mytasks_gui.xml" expression is valued at block 1204 with the next XBind.

URL = apps/mytasks_gui.xmlURL = apps / mytasks_gui.xml

Base path = /Base path = /

Selection =Selection =

이 XBind의 URL은 어플리케이션의 유저 인터페이스의 시맨틱 설명을 제공하는 UI XML 문서를 참조한다. 여기서 제공된 예들이 URL을 자원들을 식별하는 포맷으로 이용할 때, 이는 예시적인 것으로 해석되어야 한다. 자원을 고유하게 식별할 수 있는 어떠한 시스템도 본 발명과 함께 구현될 수 있다. 이하에서 상세히 설명되듯이, 네트워크 오퍼레이팅 시스템은, XML 파일 시스템, 데이터베이스, 및 URL을 이용한 XML 웹 서비스들에 접속하기 위한 프로토콜들과 추상화들을 제공한다. 그러나, 다른 프로토콜들은 URL이외의 자원 위치를 식별하는데 이용되었다는 것이 고려된다. 위 XBind의 베이스 경로는, URL에서 식별된 UI XML 문서의 루트 요소를 참조하는 "/"이다. 어플리케이션 뷰를 오픈할 때, 베이스 경로는 UI XML 문서의 조각을 참조한다. 이 경우에, 뷰 로직의 시맨틱 설명은 UI XML 문서의 루트 노드에 연관되지 않는다. 따라서, 이 변형(variation)에 대한 XBind는 뷰 로직에 대응하는 노드를 참조하는 베이스 경로를 포함한다. 이 예시적인 XBind에 대한 선택은 데이터를 포함하지 않는 "null"이다. 익스프레션이 이밸류에이션되면, 실행 메소드(1200)는 블록(1206)으로 진행하며, 이하에서 설명된다.This XBind URL refers to a UI XML document that provides a semantic description of the application's user interface. When the examples provided herein use a URL as a format for identifying resources, this should be interpreted as illustrative. Any system capable of uniquely identifying a resource can be implemented with the present invention. As described in detail below, the network operating system provides protocols and abstractions for accessing XML Web services using an XML file system, a database, and a URL. However, it is contemplated that other protocols have been used to identify resource locations other than URLs. The base path of the above XBind is "/" which refers to the root element of the UI XML document identified in the URL. When opening an application view, the base path refers to a slice of the UI XML document. In this case, the semantic description of the view logic is not associated with the root node of the UI XML document. Thus, XBind for this variation includes a base path that references the node corresponding to the view logic. The selection for this exemplary XBind is "null &quot; Once the expression is valued, the execute method 1200 proceeds to block 1206, described below.

이제 도 12B를 참조하면, 익스프레션이 이밸류에이션될 때 발생하는 교환이 설명된다. 도 12B의 설명은 인스턴스 오브젝트(1250), 프로세스 오브젝트(1252) 및 뷰 오브젝트(1254)를 포함하는 한 세트의 오브젝트를 포함한다. 도 10C를 참조하여 제공한 설명에 유사하게, 도 12B에 도시된 점선 화살표는 프로세스와 뷰 오브젝트(1252-1254)가 인스턴스 오브젝트(1250)에 특정된 로컬화된 관계 계층구조와 이전에 연관되어 있음을 나타낸다. 실행 메소드(1200)내에서, 프로세스 오브젝트(1252)는 접하게 된 익스프레션을 이밸류에이션하기 위해 인스턴스 오브젝트(1250)를 이용할 수 있다. 프로세스 단계의 실행이 시작될 때 인스턴스 오브젝트(1250)가 제공되므로, 프로세스 오브젝트(1252)는, 익스프레션 엔진(1260)에 의해 익스프레션이 이밸류에이션되도록 하기 위해 프로세스 단계 내에서 인스턴스 오브젝트(1250)을 이용할 수 있다.Referring now to FIG. 12B, the exchange that occurs when an expression is valued is described. 12B includes a set of objects including an instance object 1250, a process object 1252, and a view object 1254. Similar to the description provided with reference to FIG. 10C, the dashed arrows shown in FIG. 12B show that process and view objects 1252-1254 are previously associated with a localized relationship hierarchy specific to instance object 1250 . Within the execution method 1200, the process object 1252 may use the instance object 1250 to valuate the encountered expression. The instance object 1250 is provided at the beginning of the execution of the process step so that the process object 1252 can use the instance object 1250 within the process step to ensure that the expression is valued by the expression engine 1260 .

일 실시예에서, 본 발명은 인스턴스에 의해 제공된 컨텍스트 내에서 익스프레션들을 이밸류에이션하도록 설정된 익스프레션 엔진(1260)을 구현한다. 특히, 익스프레션 엔진(1260)에서 캡슐화된 기능성은, 익스프레션(1262)을 XBind(1264), XML 포맷 데이터 또는 일반 텍스트로 이밸류에이션하기 위해 인스턴스 오브젝트(1250)의 컨텍스트 내에서 이용될 수 있다. 이밸류에이션되면, 익스프레션 엔진(1260)에 의해 식별된 XBind(1264)는, 인스턴스 오브젝트(1250)에서 프로세스 오브젝트(1252)로 패스된다. 로컬 인스프레션 엔진(1260)을 인스턴스화하고 수용하기 위해 인스턴스 오브젝트(1250)을 이용함으로써, 익스프레션들의 이밸류에이션은, 인스턴스나 서브 인스턴스에 의해 제공된 컨텍스트에 관해 쉽게 수행된다. 무엇보다도, 이 방법으로 로컬 익스프레션 엔진(1260)을 이용하는 것은, 인스턴스와 스코프 핸들링이 다중 체인 스코프 깊이(multiple changed scope depth) 내에서 수행되도록 한다. 따라서, 익스프레션들은, 실행중인 어플리케이션 인스턴스에 따라서, 다르게 이밸류에이션될 수 있으며, 개발자들은 복수 인스턴스들이나 스코프들 관리의 복잡성을 설명할 필요가 없다. 익스프레션 엔진(1260) 내에서 구현된 기능성들의 추가적인 설명들과 본 발명에 의해 이밸류에이션될 수 있는 익스프레션들의 종류는 이하에서 상세히 설명된다. 이에 관해, 익스프레션 엔진(1260)은 작업 내에서 정의된 다중 익스프레션들을 이밸류에이션하는데 사용될 수 있다. 작업 내의 각 익스프레션들은 작업 핸들러가 호출되기 전에 이밸류에이션되며, 이하에서 상세히 설명된다. In one embodiment, the present invention implements an expression engine 1260 that is configured to valuate expressions within the context provided by the instance. In particular, the functionality encapsulated in the expression engine 1260 can be used within the context of the instance object 1250 to valuate the expression 1262 as XBind 1264, XML formatted data, or plain text. The XBind 1264 identified by the expression engine 1260 is passed from the instance object 1250 to the process object 1252. By using the instance object 1250 to instantiate and accept the local contention engine 1260, this valuation of the expressions is easily performed on the context provided by the instance or sub-instance. Best of all, using local expression engine 1260 in this manner allows instance and scope handling to be performed within a multiple changed scope depth. Thus, expressions can be valued differently, depending on the running application instance, and developers do not need to account for the complexity of managing multiple instances or scopes. Additional descriptions of the functionality implemented within the expression engine 1260 and the types of expressions that can be valued by the present invention are described in detail below. In this regard, the expression engine 1260 can be used to valuate multiple expressions defined in the job. Each expression in the job is valued before the job handler is called, and is described in detail below.

다시 도 12A를 참조하면, 실행 메소드(1200)는 블록(1206)에서 적합한 작업 핸들러의 실행을 시작한다. 상술한 바와 같이, 복수의 작업 핸들러들이 본 발명에 의해 제공된다. 각 작업 핸들러는 접할 수 있는 작업의 종류에 특정된 기능성을 구현한다. 따라서, 현재 작업이 오픈 작업이면, 실행 메소드(1200)는 블록(1206)에서 오픈 작업 핸들러를 호출한다. 그러나, 다른 작업 핸들러(Bind, Decision, Action, Change 등)는 실행 메소드(1200) 내에서 호출될 수 있도록 구현된다. 따라서, 실행 메소드(1200)는 잘 정의된 프로세스 작업 API들을 이용하여 호출된 특정 작업 핸들러에 적절한 인수들(arguments)을 패스하도록 설정되며, 이는 아래 예들에서 설명된다. 그러나 각 작업 핸들러는 호출될 때 적어도 인스턴스 및 프로세스 오브젝트들과 이밸류에이션된 XBind를 제공받는다. Referring again to Figure 12A, the execute method 1200 begins execution of a suitable task handler at block 1206. [ As described above, a plurality of job handlers are provided by the present invention. Each task handler implements functionality specific to the type of task it can interact with. Thus, if the current job is an open job, the execute method 1200 calls the open job handler at block 1206. [ However, other job handlers (Bind, Decision, Action, Change, etc.) are implemented so that they can be called within the execute method 1200. Thus, the execute method 1200 is set up to pass the appropriate arguments to the particular task handler called using well-defined process task APIs, as described in the examples below. However, each job handler receives at least the instance and process objects and this valued XBind when invoked.

판단 블록(1208)에서, 실행 메소드(1200)는 프로세스 단계의 추가 작업들인 실행될지를 판단한다. 따라서, 현재 프로세스 단계의 모든 작업들이 이전에 실행되지 않았으면, 실행 메소드(1200)는 블록(1202)으로 돌아가고, 블록들(1202-1208)은 각 작업이 실행될 때까지 반복된다. 특히, 프로세스 단계는 어플리케이션 실행의 플로우를 지시하는 선언문(statement)을 포함할 수 있다. 예를 들어, "call" 선언문은, 현재 프로세스 단계의 모든 작업들이 실행되면 다른 프로세스 작업으로 실행의 플로우를 지시하는 프로세스 단계에서의 선언문으로 정의될 수 있다. 더 일반적으로, 개발자들이 한 프로세스 단계의 동작들과 다른 프로세스 단계들 사이에서 실행의 플로우를 지시하는 "call" 작업이 제공된다. "call" 작업이 정의되면, 플로우는 새로운 프로세스 단계로 진행하며, 완료하면, 시작된 프로세스 단계 내에 있는 위치로 복귀한다. 실제 실시예에서, 비동기 호출들, 시간 지연 호출들 및 시간 반복 간격 호출들이 "call" 작업을 이용하여 생성될 수 있다. 이후, 모든 작업이 실행되면, 실행 메소드(1200)는 종료하는 블록(1210)으로 진행한다.At decision block 1208, the execute method 1200 determines whether it is to be executed as additional operations of the process step. Thus, if all the tasks of the current process step have not been previously executed, the execute method 1200 returns to block 1202, and blocks 1202-1208 are repeated until each task is executed. In particular, the process step may include a statement indicating a flow of application execution. For example, a "call" declaration may be defined as a statement at the process level that indicates the flow of execution to another process job when all the operations of the current process stage are executed. More generally, developers are provided with a "call" job that directs the flow of execution between one process step and other process steps. If a "call" job is defined, the flow proceeds to a new process step, and upon completion, returns to a location within the initiated process step. In an actual embodiment, asynchronous calls, time delayed calls and time repetition interval calls can be generated using a "call" operation. Thereafter, when all the tasks are executed, the execution method 1200 proceeds to block 1210 where it ends.

상술한 바와 같이, 실행 메소드(1200)는, 어플리케이션 로직을 해석할 때 특정 작업 핸들러들의 실행을 시작한다. 상술한 MyTasks 어플리케이션을 계속 참조하여, 특정 작업 핸들러들에 의해 구현된 기능성이 설명된다. 작업 핸들러가 상태 변경을 구현하므로, 작업 핸들러가 이용하는 모든 데이터가 제공된다. 또한, 본 발명의 측면들은 작업 핸들러들이 데이터를 반환하지 않도록 설정된다. 따라서, 작업 핸들러들은, 데이터를 반환하지 않으면서 실행하는데 이용되는 모든 것을 공급받는 독립 함수들로 구현될 수 있다. 따라서, 어플리케이션의 프로세스 작업들은 로컬에서 실행될 수 있다. 그러나, 작업 핸들러들은 독립 함수들이므로, 서버측 데이터 센터로부터 웹 서비스로서 제공되어질 수 있다.As described above, the execute method 1200 starts execution of specific task handlers when interpreting the application logic. With continued reference to the MyTasks application described above, the functionality implemented by particular work handlers is described. Because the work handler implements state changes, all the data used by the work handler is provided. Also aspects of the invention are set such that job handlers do not return data. Thus, work handlers can be implemented as standalone functions supplied with everything that is used to execute without returning data. Thus, the process tasks of the application can be executed locally. However, because work handlers are independent functions, they can be provided as a web service from a server-side data center.

이제 도 13을 참조하면, 오픈 작업 핸들러를 이용하는 예시적인 오픈 핸들러 루틴(1300)이 설명된다. 상술한 예시적인 MyTasks 어플리케이션(도 12A)에서, 어플리케이션은 실행 메소드(1200)(도 12A) 내에서 XBind에 이밸류에이션되는 속성을 가진 Open 작업(612)을 정의한다. 따라서, 오픈 작업 핸들러는 오픈 작업(612)을 실행하기 위해 호출될 수 있다. 일 실시예에서, 인수들은, 이전에 이밸류에이션된 XBind와 적합한 인스턴스 및 프로세스 오브젝트들을 포함하는 오픈 작업 핸들러 호출시 오픈 작업 핸들러로 패스될 수 있다.Referring now to FIG. 13, an exemplary open handler routine 1300 using an open task handler is described. In the exemplary MyTasks application described above (FIG. 12A), the application defines an Open job 612 with this valued attribute in XBind within the execute method 1200 (FIG. 12A). Thus, the open job handler can be invoked to execute the open job 612. In one embodiment, the arguments may be passed to an open task handler upon invocation of an open task handler that previously contained the instance and process objects that matched this valued XBind.

도 13에서 설명되듯이, 블록(1302)에서, 데이터 종류 인식자는 문서를 오픈하기 위한 오픈 작업 핸들러 내에서 호출된다. 상술한 바와 같이, 이전에 이밸류에이션된 XBind는 오픈되는 문서 내에서 문서 또는 조각(노드)를 가르킬 수 있다. 무엇보다도, 오픈 작업 핸들러는, 데이터 종류 인식자 호출시 오픈중인 문서를 식별하는 이전에 이밸류에이션된 XBind를 패스한다. 호출을 수신하면, 데이터 종류 인식자는 수신한 XBind에서 참조되는 문서의 파일 종류를 식별하기 위해 블록(1304)에서 프로세싱을 수행한다. 상술한 예시적인 MyTasks 어플리케이션에서, 데이터 종류 인식자로 패스된 XBind는 "MyTasks_gui.xml"으로 명명된 문서를 참조한다. 이 예에서, 데이터 종류 인식자는 UI XML 문서가 되는 파일 종류를 식별한다. 상술한 바와 같이, 로직은 동작들을 특정 파일 종류에 연관시키는 데이터 종류 인식자 내에서 제공된다. 데이터 종류 인식자가 UI XML 문서를 오픈하기 위해 사용될 때 시작된 예시적인 동작들의 한 세트는 이하에서 설명된다. As illustrated in FIG. 13, at block 1302, the data type identifier is called in an open job handler to open the document. As noted above, this previously valued XBind can point to a document or piece (node) within the document being opened. First of all, the open job handler passes this valued XBind previously, which identifies the document being opened when calling the data type identifier. Upon receiving the call, the data type identifier performs processing in block 1304 to identify the file type of the document referenced in the received XBind. In the exemplary MyTasks application described above, XBind passed to the data type identifier refers to a document named "MyTasks_gui.xml ". In this example, the data type identifier identifies the file type that is the UI XML document. As discussed above, the logic is provided within a data type identifier that associates operations with a particular file type. One set of exemplary operations initiated when a data type identifier is used to open a UI XML document is described below.

오픈 핸드링 루틴(1300)의 블록(1306)에서, 데이터 종류 인식자는 명령을 UI XML 문서를 오픈하라는 요청이 수신되었음을 나타내는 뷰 매니저(908)로 패스한다. 특히, 뷰 매니저(908)는 새로운 유저 인터페이스나 어플리케이션 뷰를 렌더링하는데 이용될 수 있는 뷰 오프젝트를 생성하기 위해 호출된다. 상술한 바와 같이, 어플리케이션의 유저 인터페이스는 UI XML 문서(예를 들어, "MyTasks_gui.xml")에 시맨틱하게 설명된다. 이에 관해, 다중 뷰 오브젝트들은 각 어플리케이션 인스턴스에 연관될 수 있다. 따라서, 뷰 매니저(908)에 대한 호출시, 적합한 인스턴스와 새로운 뷰를 설명하는 UI XML 문서의 식별자는 데이터 종류 인식자에 의해 제공될 수 있다.At block 1306 of the open handing routine 1300, the data classifier passes the command to the view manager 908, which indicates that a request to open the UI XML document has been received. Specifically, view manager 908 is called to create a view object that can be used to render a new user interface or application view. As described above, the user interface of the application is semantically described in the UI XML document (e.g., "MyTasks_gui.xml"). In this regard, multiple view objects may be associated with each application instance. Thus, upon invocation of the view manager 908, the identifier of the UI XML document describing the appropriate instance and the new view may be provided by the data type identifier.

도 13에서 설명되듯이, 블록(1308)에서, 새로운 어플리케이션 뷰의 시맨틱 설명을 제공하는 로직의 실행이 시작된다. 상술한 바와 같이, 뷰 매니저(908)는 뷰 오브젝트를 인스턴스화하고 UI XML 문서에 설명된 어플리케이션 뷰가 렌더링되록 하는 작업을 수행하는 것을 담당한다. 새로운 어플리케이션 뷰를 렌더링하기 위해, 컴포넌트와 다이얼로그 오브젝트들은 뷰 오브젝트를 이용하여 인스턴스화된다. 도 23을 참조하여 이하에서 상세히 설명되듯이, 본 발명에 의해 제공되는 이 오브젝트들은 UI XML 문서에서 시맨틱하게 설명된 그래픽 요소들이 컴퓨터 디스플레이 상에서 렌더링되게 하는 기능을 구현한다. 이후, 오픈 핸들링 루틴(1300)은 종료하는 블록(1310)으로 진행한다.13, at block 1308, execution of logic that provides a semantic description of the new application view begins. As described above, the view manager 908 is responsible for instantiating the view object and performing the task of rendering the application view described in the UI XML document. To render a new application view, the components and dialog objects are instantiated using the view object. As will be described in detail below with reference to FIG. 23, these objects provided by the present invention implement the function of causing graphic elements described semantically in a UI XML document to be rendered on a computer display. Thereafter, the open handling routine 1300 proceeds to block 1310 where it terminates.

이제 도 14A-14B를 참조하면, 오프닝 프로세스에서의 데이터 종류 인식자와 UI XML 문서들의 사용이 추가적으로 상세하게 설명된다. 도 14A의 설명은, UI XML 문서가 오픈될 때 상호작용하는 프로세스 오브젝트(1400), 오픈 작업 핸들러(1402), 데이터 종류 인식자(1404), 인스턴스 오브젝트(1406), 뷰 매니저(908) 및 뷰 오브젝트(1408)를 도시한다. 따라서, 도 14A의 블록도는 도 13을 참조하여 상술한 오픈 작업 핸들링 루틴(1300)에 의해 이용되는 오브젝트들에 상응할 수 있다. 어플리케이션 뷰의 오프닝은 프로세스 오브젝트(1400)에 의해 시작될 수 있으며, 프로세스 오브젝트(1400)는 이밸류에이션된 XBind에 의해 식별된 특정 문서를 오픈하기 위해 오픈 작업 핸들러(1402)를 호출한다. 호출을 수신하면, 오픈 작업 핸들러(1402)는 파일 종류를 식별하기 위해 데이터 종류 인식자(1404)를 이용하며 적합한 동작들이 실행되도록 한다. 일 실시예에서, UI XML 문서가 오픈 작업 핸들러(1402)에서 데이터 종류 인식자(1404)로 전달될 때, 어플리케이션의 뷰 로직을 오픈하고 실행을 시작하게 하는 동작들이 정의된다. 또한, 데이터 종류 인식자(1404)는 결과 뷰 오브젝트(1408)을 적합한 인스턴스 오브젝트(1406)에 연관시키는데 이용된다. Referring now to Figures 14A-14B, the use of data type identifiers and UI XML documents in the opening process is described in further detail. 14A illustrates a process object 1400, an open work handler 1402, a data type identifier 1404, an instance object 1406, a view manager 908, and a view Object 1408 is shown. Thus, the block diagram of Fig. 14A may correspond to the objects used by the open task handling routine 1300 described above with reference to Fig. The opening of the application view may be started by the process object 1400 and the process object 1400 calls the open job handler 1402 to open the specific document identified by this valued XBind. Upon receiving the call, the open job handler 1402 uses the data type identifier 1404 to identify the file type and causes appropriate operations to be performed. In one embodiment, when the UI XML document is passed from the open job handler 1402 to the data type identifier 1404, operations are defined that open the view logic of the application and start execution. The data type identifier 1404 is also used to associate the result view object 1408 with the appropriate instance object 1406.

도 14A에 도시된 예에서, 뷰 매니저(908)는 UI XML 문서를 오픈하라는 호출이 수신되면 데이터 종류 인식자(1404)에 의해 호출된다. UI XML 문서의 로직을 오픈하고 실행하기 위해, 뷰 매니저(908)는 뷰 오브젝트(1408), 인스턴스 오브젝트(1406)의 식별자 및 적합한 UI XML문서를 참조하는 XBind를 인스턴스화하고 공급한다. 데이터를 이 방법으로 패스함으로써, 뷰 오브젝트(1408)는 그것에 연관된 인스턴스를 인지하게 된다. 뷰 오브젝트(1408)가 인스턴스화되면, 새로운 어플리케이션 뷰의 시맨틱 설명을 제공하는 로직의 실행이 상술한 프로세스 시작 루틴(1100)(도 11)과 유사한 기능성을 이용하여 시작된다. 특히, 뷰 매니저(908)는 적절한UI XML이 클라이언트측 캐시에 로딩되도록 할 수 있다. 이후, 뷰 오브젝트(1408)는 인스턴스화될 수 있으며 어플리케이션의 유저 인터페이스 컴포넌트들과 다이얼로그들을 렌더링하는데 이용될 수 있다. 그러나, 프로세스들과 달리, 멀티 뷰 오브젝트들은 인스턴스화될 수 있으면 동일한 인스턴스에 연관될 수 있다. In the example shown in FIG. 14A, the view manager 908 is called by the data type identifier 1404 when a call to open the UI XML document is received. To open and execute the logic of the UI XML document, the view manager 908 instantiates and provisions the view object 1408, the identifier of the instance object 1406, and an XBind referencing the appropriate UI XML document. By passing data in this way, the view object 1408 is aware of the instance associated with it. Once the view object 1408 is instantiated, the execution of the logic to provide a semantic description of the new application view is initiated using functionality similar to the process start routine 1100 (FIG. 11) described above. In particular, the view manager 908 may cause the appropriate UI XML to be loaded into the client-side cache. The view object 1408 can then be instantiated and used to render user interface components and dialogs of the application. However, unlike processes, multi-view objects can be associated with the same instance if they can be instantiated.

실제 실시예에서, 본 발명의 측면들은 레이지 로딩(lazy loading) 및/또는 어플리케이션의 UI 로직의 렌더링을 지원한다. 이를 위해, World Wide Web Consortium에 의해 정의된 표준에 따르게 구현된 XLinks가 레이지 로딩 및/또는 하나 이상의UI XML 문서들의 렌더링을 수행하기 위해 이용될 수 있다. 당업자라면 XLink는 서로 다른 XML 자원들간의 링크를 설명하는 XML 문서에 포함될 수 있다는 것을 이해할 수 있다. 웹 페이지를 링크하는 의미를 사용자에게 제공하는 전통적인 HTML 기반 하이퍼링크들과 달리, XLinks는 소프트웨어 시스템들과 컴퓨터들에 의해 더욱 쉽게 해석된다. 특히, XLinks는 활성화시 취해질 동작 뿐만이 아니라 XLinks를 활성화하는 조건을 정의하는 로직을 포함할 수 있다. 결과적으로, XLinks는 어플리케이션 UI 로직의 온 디맨드 및/또는 레이지 렌더링 수행에 가장 적합하다. 어플리케이션이 실행될 때 어플케이션들의 UI 로직을 모두 로딩하는 대신, XLinks는 요구된 적합한 XML 자원들과 링크하기 위해 정의될 수 있다. 예를 들어, 상술한 예시적인 MyTasks 어플리케이션에서, Button2 컴포넌트(704)는 모든 어플리케이션들의 유저 인터페이스 로직이 로딩되고 렌더링된 이후에 "감춰"진다. 균등한 기능성과 개선된 성능은, 필요시 Button2 컴포넌트(704)의 UI 로직을 로딩하고 및/또는 렌더링하기 위해 XLinks를 이용함으로써 달성될 수 있다. 이 예에서, MyTasks_gui.xml 문서(650)의 Button2 컴포넌트(704)의 유저 인터페이스 로직은, 관련된 유저 인터페이스 로직을 정의한 로컬 또는 원격 자원(예를 들어, 다른 UI XML 문서)을 참조하는 XLinks를 포함할 수 있다. 어플리케이션 로직에 의해 지시받으면, 이 XLinks는 Button2 컴포넌트(704)에 상응하는 UI 로직을 로딩 및/또는 렌더링하는데 이용될 수 있다.In an actual embodiment, aspects of the invention support lazy loading and / or rendering the UI logic of the application. To this end, XLinks implemented in accordance with standards defined by the World Wide Web Consortium can be used to perform lazy loading and / or rendering of one or more UI XML documents. Those skilled in the art will appreciate that XLink can be included in an XML document describing links between different XML resources. Unlike traditional HTML-based hyperlinks that provide users with the means to link Web pages, XLinks are more easily interpreted by software systems and computers. In particular, XLinks can include logic to define conditions for activating XLinks as well as actions to be taken upon activation. As a result, XLinks are best suited for performing on-demand and / or lazy rendering of application UI logic. Instead of loading all the UI logic of the applications when the application is running, XLinks can be defined to link with the appropriate XML resources required. For example, in the exemplary MyTasks application described above, the Button2 component 704 is "hidden " after the user interface logic of all applications is loaded and rendered. Equal functionality and improved performance can be achieved by using XLinks to load and / or render the UI logic of the Button2 component 704, if desired. In this example, the user interface logic of the Button2 component 704 of the MyTasks_gui.xml document 650 includes XLinks that reference local or remote resources (e.g., other UI XML documents) that define the associated user interface logic . When instructed by the application logic, the XLinks can be used to load and / or render UI logic corresponding to the Button2 component 704. [

오픈 작업 핸들러(1402)가 완료되면, 결과 뷰 오브젝트(1408)가 데이터 종류 인식자(1404)에 반환된다. 이후 데이터 종류 인식자(1404)는 뷰 오브젝트(1408)를 적합한 인스턴스에 연관시킨다. 특히, 새로운 어플리케이션 뷰가 생성되면, 데이터 종류 인식자(1404)는 결과 뷰 오브젝트(1408)를 인스턴스 오브젝트(1406)으로 패스한다. 응답으로, MiniView 매너저(1412)가 업데이트 되어, 뷰 오브젝트(1408)가 상응하는 인스턴스에 연관된다. MiniView 매니저(1412)에 의해 동일한 오브젝트에 할당된 것보다 더 복잡한 이름이 뷰 매니저(908) 내의 뷰 오브젝트(1408)에 할당된다. 특히, 뷰 매니저(908) 내의 뷰 오브젝트(1408)에 할당된 이름은 상응하는 인스턴스 오브젝트(1406)의 식별자를 포함한다. 이하에서 상세히 설명되듯이, 이 방법으로 오브젝트들을 명명하는 시스템을 구현함으로써, 동일한 뷰는 다중 어플리케이션 인스턴스들 사이에서 구별될 수 있다. 이 방법으로 데이터의 패싱을 제어함으로써, 본 발명의 측면들은 어플리케이션 인스턴스의 경계를 정하는 로컬화된 관계 계층구조를 구현한다.When the open job handler 1402 is completed, the result view object 1408 is returned to the data type identifier 1404. The data type identifier 1404 then associates the view object 1408 with the appropriate instance. Specifically, when a new application view is created, data type identifier 1404 passes result view object 1408 to instance object 1406. In response, the MiniView manager 1412 is updated to associate the view object 1408 with the corresponding instance. A more complex name than that assigned to the same object by the MiniView manager 1412 is assigned to the view object 1408 in the view manager 908. [ In particular, the name assigned to the view object 1408 in the view manager 908 includes the identifier of the corresponding instance object 1406. As described in detail below, by implementing a system for naming objects in this way, the same view can be distinguished between multiple application instances. By controlling the passing of data in this manner, aspects of the present invention implement a localized relationship hierarchy that bounds application instances.

이제 도 14B를 참조하면, 프로세스 XML 문서를 오픈할 때의 데이터 종류 인식자(1404)의 이용이 추가적으로 상세하게 설명된다. 도 14A에 유사하게, 도 14B의 설명은, 프로세스 매니저(906)뿐만이 아니라, 프로세스 오브젝트(1400), 데이터 종류 인식자(1404), 인스턴스 오브젝트(1406)를 도시한다. 따라서, 도 14B에 도시된 블록도는 프로세스 시작 루틴(1100)(도11)에 의해 이용되는 오브젝트들에 상응할 수 있다. 프로세스 XML 문서가 오픈되면, 데이터 종류 인식자(1404)가 문서의 파일 종류를 식별하기 위해 어플리케이션 패키지의 컨텍스트 또는 독립 어플리케이션에서 이용된다. 이 예에서, 데이터 종류 인식자(1404)는 프로세스 XML 문서에 설명된 로직의 오픈과 실행의 시작을 가능하게 하는 동작들을 정의한다. 특히, 실행 플로우는 데이터 종류 인식자(1404)에서 프로세스 오브젝트(1400)를 인스턴스화하는 프로세스 매니저(906)로 진행한다. 프로세스 XML 문서가 오픈되면, 결과 프로세스 오브젝트(1400)에 대한 참조가 데이터 종류 인식자(1404)로 반환될 수 있다. 이후, 데이터 종류 인식자(1400)는 인스턴스 오브젝트(1406)에 결과 프로세스 오브젝트(1400)에 대한 참조를 제공한다. 응답으로, MiniProcess 매니저(1414)가 업데이트되어, 프로세스 오브젝트(1400)을 상응하는 인스턴스에 연관시킨다.Referring now to Figure 14B, the use of the data type identifier 1404 when opening a process XML document is described in further detail. Similar to FIG. 14A, the description of FIG. 14B shows not only the process manager 906, but also a process object 1400, a data type identifier 1404, and an instance object 1406. Thus, the block diagram shown in FIG. 14B may correspond to the objects used by the process start routine 1100 (FIG. 11). Once the process XML document is opened, a data type identifier 1404 is used in the context of the application package or in an independent application to identify the file type of the document. In this example, the data type identifier 1404 defines the operations that enable the opening of the logic described in the process XML document and the start of execution. In particular, the execution flow proceeds to the process manager 906, which instantiates the process object 1400 in the data type identifier 1404. When a process XML document is opened, a reference to the resulting process object 1400 may be returned to the data type identifier 1404. The data type identifier 1400 then provides a reference to the resulting process object 1400 in the instance object 1406. In response, the MiniProcess manager 1414 is updated to associate the process object 1400 with the corresponding instance.

도 15A-B를 참조하면, 프로세스 실행을 가능하게 할 때 MiniView 매니저의 이용에 관한 예를 제공하는 동작 작업이 설명된다. MyTasks 어플리케이션의 Open 작업(612)이 실행되면, 실행 플로우는 Action 작업(614)(도 6A)으로 진행한다. 이에 관해, 동작 핸들링 루틴(1500)이 루틴(1500)을 구현하는데 포함된 오브젝트들간의 상호 작용뿐 아니라 로직도 설명하는 도 15A-B를 참조하여 설명된다. Referring to Figures 15A-B, operational tasks are provided that provide examples of the use of the MiniView manager when enabling process execution. When the Open task 612 of the MyTasks application is executed, the execution flow proceeds to the Action task 614 (FIG. 6A). In this regard, the behavior handling routine 1500 is described with reference to Figures 15A-B, which illustrate the logic as well as the interactions between the objects involved in implementing the routine 1500.

도 15A에서 설명되듯이, Action 작업(614)의 값 속성으로 표현된 익스프레션은 블록(1502)에서 XBind로 이밸류에이션된다. 예시적인 MyTasks 어플리케이션에서, Action 작업(614)은 블록(1502)에서 XBind로 이밸류에이션되는 값 속성 "#MyTasks"을 포함한다. 도 15B를 특별히 참조하면, 익스프레션 엔진(1550)에서 캡슐화된 기능성은 "#MyTasks" 익스프레션을 XBind로 이밸류에이션하기 위해 인스턴스 오브젝트(1552)에 의해 이용될 수 있다. 이 예에서, 익스프레션 엔진(1550)은 "MyTasks"로 명명된 뷰 오브젝트에 대한 MiniView 매니저(1554)에서 룩업(lookup)을 수행하도록 설정된다. 새로운 어플리케이션 뷰가 생성되면, 결과 뷰 오브젝트는 그에 따라 MiniView 매니저(1554)를 업데이트하는 상응하는 인스턴스로 패스된다. 이에 관해, MyTasks 뷰 오브젝트는 전역 뷰 매니저(908)의 뷰들에 대해 사용되는 더 복잡한 식별자보다는 인스턴스에 의해 수용된 MiniView 매니저(1554) 안에서 간단한 이름이 할당된다. 복잡한 이름은 서로 다른 인스턴스들과 어플리케이션들에 속한 뷰를 구분하기 위해서 사용되므로, 더 복잡한 이름은 인스턴스 냉에서는 필요하지 않다. MiniView 매니저(1554)가 자체 뷰들을 수용하고 있으므로, 이 정보는 인스턴스와 MiniView 매니저(1554)가 이미 알고 있는 것이다. 이 아키텍쳐를 제공함으로써, 익스프레션 엔진(1550)은, MiniView 매니저(1554)의 도움으로, 서로 다른 인스턴스들과 어플리케이션들에 연관된 뷰들 사이에서 구별할 수 있다. 그러므로, 예시적인 MyTasks 어플리케이션에서, MiniView 매니저(1554)는 "MyTasks"로 명명된 뷰 오브젝트를 포함한다. 뷰 오브젝트는 이 뷰 오브젝트가 연관된 인스턴스에 대한 참조를 또한 포함한다. "#MyTasks" 익스프레션을 이밸류에이션할 때, 익스프레션 엔진(1550)은 MyTasks 뷰 오브젝트(1558)를 소스나 작업의 "에미터"로 식별한다. 특히, 인스턴스 오브젝트(1552)에 연관된 MyTasks 뷰 오브젝트(1558)는 에미터로 식별되며, 다른 인스턴스에 연관된 "MyTasks" 뷰 오브젝트가 아니다. 익스프레션 엔진(1550)이 인스턴스에 관한 익스프레션들을 이밸류에이션하므로, 이벤트의 소스였던 정확한 MyTasks 뷰 오브젝트(1558)는 MiniView 매니저(1554)를 이용하여 식별된다. As described in FIG. 15A, the expression represented by the value attribute of the Action task 614 is valued at XBind at block 1502. [ In the exemplary MyTasks application, the Action task 614 includes this valued value attribute "# MyTasks" in XBind at block 1502. [ 15B, the functionality encapsulated in the expression engine 1550 can be used by the instance object 1552 to valuate the "#MyTasks" expression with XBind. In this example, the expression engine 1550 is configured to perform a lookup in the MiniView manager 1554 for a view object named "MyTasks ". When a new application view is created, the result view object is then passed to the corresponding instance that updates the MiniView manager 1554 accordingly. In this regard, the MyTasks view object is assigned a short name within the MiniView manager 1554, which is accommodated by the instance, rather than the more complex identifier used for views of the global view manager 908. [ Since complex names are used to distinguish between views belonging to different instances and applications, more complex names are not required in instance cold. Since the MiniView manager 1554 accepts its own views, this information is already known to the instance and the MiniView manager 1554. By providing this architecture, the expression engine 1550 can distinguish between views associated with different instances and applications, with the help of the MiniView manager 1554. Thus, in the exemplary MyTasks application, the MiniView manager 1554 includes a view object named "MyTasks ". The view object also contains a reference to the instance to which this view object is associated. Expression engine 1550 identifies the MyTasks view object 1558 as an "emitter" of the source or task when valued at the "#MyTasks" expression. In particular, the MyTasks view object 1558 associated with the instance object 1552 is identified as an emitter and is not a "MyTasks" view object associated with another instance. Since the expression engine 1550 valued expressions about the instance, the exact MyTasks view object 1558 that was the source of the event is identified using the MiniView manager 1554. [

이 예에서, 프로세스 오브젝트(1556)에 반환된 XBind는 MyTasks_gui.xml 문서(650)와 MyTasks 뷰 오브젝트(1558)를 참조하는 URL을 포함한다. 지시자(indicator)가MyTasks 뷰 오브젝트(1558)가 실행중인 작업의 에미터나 소스인 XBind와 포함된다. MiniView 매니저(1554)의 룩업이 익스프레션에서 참조되는 오브젝트에 대한 일치를 식별하지 않으면, 익스프레션 엔진(1550)은 관련된 뷰 오브젝트를 획득하기 위해 뷰 매니저(908)에서 룩업을 수행하도록 설정된다.In this example, the XBind returned to the process object 1556 includes a URL that references the MyTasks_gui.xml document 650 and the MyTasks view object 1558. [ An indicator is included with the XBind which is the emitter or source of the work MyTasks view object 1558 is executing. If the lookup of the MiniView manager 1554 does not identify a match for the object referenced in the expression, the expression engine 1550 is configured to perform a lookup in the view manager 908 to obtain the associated view object.

루틴(1500)의 블록(1504)에서, 프로세스 오브젝트(1556)는 동작 작업 핸들러(1560)의 실행을 시작한다. 예시적인 MyTasks 어플리케이션에서, 익스프레션 엔진(1550)과 에미팅 MyTasks 뷰 오브젝트(1558)를 이용하여 이전에 이밸류에이션된 XBind는 프로세스 오브젝트(1556)에 의해 동작 작업 핸들러(1560)에 패스된다. 이후, 블록(1506)에서, 동작 작업 핸들러(1560)는 어플리케이션 프로세스 로직에 특정된 대로, 메소드가 수행되도록 한다. 이 예에서, MyTasks 어플리케이션의 동작 작업(614)는 메소드와 동작이 수행될 타겟을 식별하는 다음 "<component>" XML 요소를 정의한다.At block 1504 of routine 1500, the process object 1556 begins execution of the action task handler 1560. In the exemplary MyTasks application this previously valued XBind is passed to the action task handler 1560 by the process object 1556 using the expression engine 1550 and the emitting MyTasks view object 1558. [ Thereafter, at block 1506, the action task handler 1560 causes the method to be executed as specified in the application process logic. In this example, the action task 614 of the MyTasks application defines the next < component > &gt; XML element that identifies the method and the target on which the action is to be performed.

<component name="button2" action="hide" value=""x/component><component name = "button2" action = "hide" value = "" x / component>

이 요소를 정의함으로써, 어플리케이션 코드는 "button2"로 명명된 컴포넌트가 감춰지도록 지시한다. 일 측면에서, 뷰 오브젝트들은 enable, disable, hide, 및 show 메소드들 등을 포함하는, 그러나 여기에 한정되지 않는, 연관된 유저 인터페이스 컴포넌트들상에서 상태 노작들을 수행하는 제너릭 메소드들(generic methods)로 인코딩된다. MyTasks 뷰 오브젝트(1558)이 동작 작업 핸들러(1560)으로 패스되므로, 이 제너릭 메소드들은 오브젝트(1558) 상에서 직접 호출될 수 있다. 이 예에서, 동작 작업 핸들러는 "hide" 메소드를 MyTasks 뷰 오브젝트(1558) 상에서 호출하고 Button2 컴포넌트(1562)를 감춰질 타겟 컴포넌트로 식별한다. 이후 동작 핸들링 루진(1500)은 종료하는 블록(1508)로 진행한다.By defining this element, the application code instructs the component named "button2" to be hidden. In one aspect, view objects are encoded with generic methods that perform state invocations on associated user interface components, including, but not limited to, enable, disable, hide, and show methods . Since the MyTasks view object 1558 is passed to the action task handler 1560, these generic methods can be called directly on the object 1558. [ In this example, the action task handler calls the "hide" method on the MyTasks view object 1558 and identifies the Button2 component 1562 as the target component to be hidden. The action handling routine 1500 then proceeds to block 1508 where it ends.

이제 도 16을 참조하면, 바인드 작업 핸들러의 구현이 추가적으로 상세하게 설명된다. MyTasks 어플리케이션의 Open 및 Action 작업들(612-614)이 실행되면, 실행 플로우는 Bind 작업(616)(도 6A)로 진행한다. 도 16에 설명되듯이, 블록(1602)에서, Bind 작업(616)의 값 속성에서 표현된 익스프레션은 XBind로 이밸류에이션되며 적합한 프로세스 오브젝트로 반환된다. 상술한 설명에 유사하게, 프로세스 오브젝트는 제공된 익스프레션을 이밸류에이션하는 인스턴스에 로컬한 익스프레션 엔진을 이용한다. 예시적인 Bind 작업(616)에서, "data/tasks.xml" 익스프레션은 블록(1602)에서 다음 XBind로 이밸류에이션된다.Referring now to Figure 16, an implementation of the bind operation handler is described in further detail. When the Open and Action tasks 612-614 of the MyTasks application are executed, the execution flow proceeds to the Bind task 616 (FIG. 6A). As shown in FIG. 16, at block 1602, the expression represented in the value attribute of the Bind job 616 is valued by XBind and returned to the appropriate process object. Similar to the above description, the process object uses an expression engine that is local to the instance that valued the provided expression. In the exemplary Bind operation 616, the "data / tasks.xml" expression is valued at block 1602 to the next XBind.

URL = data/tasks.xml URL = data / tasks.xml

Base path = / Base path = /

Selection =Selection =

XBind의 URL은 태스크 설명들을 저장하는 데이터 문서를 참조한다. 또한, 베이스 경로는 URL에 상응하는 데이터 문서의 루트 노드를 참조하며, 이 예시적인 XBind의 선택 측면은 null이다.The URL of XBind refers to a data document that stores task descriptions. In addition, the base path refers to the root node of the data document corresponding to the URL, and the optional aspect of this exemplary XBind is null.

바인드 핸들링 루틴(1600)의 블록(1604)에서, 현 프로세스 단계를 실행하기 위해 이용중인 프로세스 오브젝트는 바인드 작업 핸들러의 실행을 시작한다. 호출시, 바인드 작업 핸들러는 이전에 이밸류에이션된 XBind와 적합한 프로세스 및 인스턴스 오브젝트들을 수신한다. 상술한 바와 같이, 개발자들은 작업의 바디 안에 존재할 수 있는 함수 호출 파라미터들과 XML 시맨틱 구조를 정의하는 프로세스 작업 API들에 따라 작업을 생성할 수 있다. 이 예에서, Bind 작업(616)(도 6A)은 다음 "<component>" XML 요소(618)를 정의한다.At block 1604 of the bind handling routine 1600, the process object being used to execute the current process step begins execution of the bind operation handler. On invocation, the bind operation handler previously receives this valued XBind and the appropriate process and instance objects. As described above, developers can create tasks in accordance with process call APIs that define function call parameters and an XML semantic structure that may exist in the body of a task. In this example, the Bind operation 616 (FIG. 6A) defines the following "<component>" XML element 618.

<component view ="MyTasks" name= "input3" select="/tasks/task/@description"><component view = "MyTasks" name = "input3" select = "/ tasks / task /

따라서, 바인드 작업 핸들러(블록(1604)에서 호출됨)는 특정 컴포넌트를 XML 문서 내의 조각에 바인드하기 위해 이 로직을 해석하는 것을 담당한다. 더 일반적으로, 각 작업 핸들러는 작업 요소의 차일드 요소들에서 정의된 로직을 해석하는 것을 담당한다. 이에 관해, 프로세스 작업 API들은 개발자들이 작업 핸들러 내에서 실행되는 로직이 필요에 따라 설정되도록 하기 위해 작업의 바디에 XML 신택스를 정의할 수 있도록 한다.Thus, the bind operation handler (called at block 1604) is responsible for interpreting this logic to bind a particular component to a fragment in the XML document. More generally, each work handler is responsible for interpreting the logic defined in the child elements of the work element. In this regard, the process task APIs enable developers to define XML syntax in the body of a task so that the logic to be executed within the task handler is set as needed.

블록(1605)에서, 하부 XML 문서에 바인드되는 컴포넌트에 대응하는 뷰 오브젝트는 식별되고 바인드 작업 핸들러에 반환된다. 이 예에서, 바인드 작업 핸들러에 의해 해석되는 컴포넌트 요소(618)는 "MyTasks" 뷰 오브젝트의 컨텍스트 안에서 생성되는 것으로 "Input3" 컴포넌트를 식별한다. 적합한 인스턴스 오브젝트가 바인드 작업 핸들러에 제공되므로, 옳은 뷰 오브젝트는 용이하게 식별될 수 있다. 특히, 인스턴스의 MiniView 매니저에서의 룩업이 실행되고, "MyTasks" 뷰 오브젝트가 바인드 작업 핸들러로 직접 반환된다.At block 1605, the view object corresponding to the component bound to the underlying XML document is identified and returned to the bind operation handler. In this example, the component element 618 interpreted by the bind operation handler identifies the "Input3" component by being created in the context of the "MyTasks" Since the appropriate instance object is provided to the bind operation handler, the correct view object can be easily identified. In particular, a lookup in the instance's MiniView manager is executed and the "MyTasks" view object is returned directly to the bind operation handler.

도 16에서 설명되듯이, 번역된 XBind는 블록(1606)에서 바인드 작업 핸들러 내에서 생성된다. 바인드 작업 핸들러로 패스되는 XBind는 MyTasks 어플리케이션에 의해 이용되는 컨텐츠를 저장한다. 그러나, 식별된 XML 문서의 데이터의 서브셋만이 Input3 컴포넌트에 바인드된다. 따라서, 이 예의 바인드 작업(616)에 의해 수행된 바인딩은, Input3 컴포넌트의 바인딩을 XPath 익스프레션에 의해 식별된 "data/tasks.xml" 문서에서의 데이터의 조각으로 좁히도록 설정된다. 특히, 컴포넌트 요소(618)의 선택 특성은, 바인드 작업(616)의 값 속성에서 익스프레션이 적합하게 되도록 하는(qualify) XPath 익스프레션을 포함한다. 이 예에서, XPath 익스프레션은, 작업 핸들러를 바인드하고, 다음의 번역된 XBind를 생성하기 위해, 들어온(incoming) XBind가 적합하게 되도록 하는데 이용되는 XML 문서 내에서 적합한 조각을 식별한다. As illustrated in FIG. 16, the translated XBind is created in the bind operation handler at block 1606. [ The XBind passed to the bind operation handler stores the content used by the MyTasks application. However, only a subset of the data in the identified XML document is bound to the Input3 component. Thus, the binding performed by the bind operation 616 in this example is set to narrow the binding of the Input3 component to pieces of data in the "data / tasks.xml" document identified by the XPath expression. In particular, the selection property of the component element 618 includes an XPath expression that qualifies the expression in the value attribute of the bind operation 616. In this example, the XPath expression identifies the appropriate fragment in the XML document that is used to bind the job handler and to make the incoming XBind suitable to generate the next translated XBind.

URL = data/tasks.xml URL = data / tasks.xml

Base path = /tasks/task/@descriptionBase path = / tasks / task / @ description

Selection =Selection =

상술한 번역된 XBind는 data/tasks.xml#/tasks/task/@description와 같은 약칭으로 작성될 수 있다. 이에 관해, 번역된 XBind의 URL은 관련된 설명들을 저장하는 데이터 모델에서 XML 문서를 참조한다. URL에 의해 식별된 XML 문서 내에서, 베이스 경로는 태스크 요소와 이에 연관된 설명 속성을 참조하다. 이하에서 상세히 설명되듯이, XBind는 데이터 모델에서 조각들을 참조하는데 있어서 추가적인 특징으로 제공하는 "Selection"을 포함할 수 있다.The above-described translated XBind can be created with an abbreviation such as data / texts.xml#/tasks/task/@description. In this regard, the URL of the translated XBind refers to the XML document in the data model that stores the relevant descriptions. Within the XML document identified by the URL, the base path refers to the task element and its associated description attribute. As will be described in detail below, XBind may include "Selection" which provides additional features in reference to fragments in the data model.

바인드 핸들링 루틴(1600)의 블록(1608)에서, 적합한 유저 인터페이스 컴포넌트에 의해 제공되는 설정 데이터 함수가 호출된다. 이 예에서, Input3 컴포넌트는 Bind 작업(616)의 대상이며, 태스크 설명들 목록에 바인드된다. 컴포넌트 API들은 특정 컴포넌트에서 데이터를 설정하는 어떤 메소드들을 정의하는데 사용될 수 있다. 일 실시예에서, Input3 컴포넌트는 블록(1608)에서 호출되는 설정 데이터 메소드를 포함할 수 있다. 특히, 적합한 컴포넌트가 뷰 오브젝트 및 바인드 작업 핸들러가 호출될 때 블록(1604)에서 수신한 컴포넌트 이름에 대한 참조에 기초하여 식별될 수 있다.At block 1608 of the bind handling routine 1600, the configuration data function provided by the appropriate user interface component is called. In this example, the Input3 component is the target of the Bind job 616 and is bound to a list of task descriptions. Component APIs can be used to define certain methods to set data in a particular component. In one embodiment, the Input3 component may include a configuration data method called at block 1608. [ In particular, an appropriate component may be identified based on a reference to the component name received at block 1604 when the view object and the bind operation handler are called.

호출되면, 설정 데이터 메소드는, 컴포넌트가 데이터 모델의 XML 문서에 이미 바인드되지 않은 것을 보장하기 위해, 관리 기능들과 에러 핸들링을 수행한다. 이후 블록(1612)에서, 바인드 작업(616)의 대상인 Input3 컴포넌트는 업데이트 리스너로서 "data/tasks.xml" 문서에 추가된다. 상술한 바와 같이, 본 발명은 문서 오브젝트 형태로 XML 문서의 구조 객체 지향적 표현을 제공한다. 일 실시예에서, 문서 오브젝트들은, 웹 브라우저와 XML 파서(parser)에 의해 이용되는 DOM("Document Object Model") 오브젝트들에 대한 래퍼(wrapper) 역할을 한다. 이에 관해, 개선된 특징들은, 네트워크 오퍼레이팅 시스템 환경 내에 존재하는 어떠한 오브젝트들도 데이터 모델에 적용된 업데이트들에 대한 리스너들로 추가하는 능력을 포함하는 본 발명에 의해 제공되는 문서 오브젝트 내에서 인코딩된다. 오직 예로서, 데이터 업데이트 리스너들이 될 수 있는 오브젝트들은 프로세스들, 뷰들, 컴포넌트들, 통신 채널들 등을 포함하지만 여기에만 한정되지는 않는다. 블록(1612)에서, Input3 컴포넌트를 업데이트 리스너로서 "data/tasks.xml" 문서에 상응하는 오브젝트에 추가하도록 호출된다. 이에 관해, 각 문서 오브젝트는 데이터 업데이트에 대한 응답으로 통지될 리스너들의 목록을 유지한다. 블록(1612)에서 업데이트 리스너들을 추가하는 호출을 발행함으로써, Input3 컴포넌트는 동일한 문서 오브젝트 상에서 잠재적으로 많은 데이터 리스너들 중의 하나가 된다.  When called, the configuration data method performs management functions and error handling to ensure that the component is not already bound to the XML document in the data model. Thereafter, at block 1612, the Input3 component that is the subject of the bind operation 616 is added to the "data / tasks.xml" document as an update listener. As described above, the present invention provides a structural object oriented representation of an XML document in the form of a document object. In one embodiment, the document objects serve as a wrapper for DOM ("Document Object Model") objects used by the web browser and an XML parser. In this regard, the improved features are encoded within the document object provided by the present invention, including the ability to add any objects present in the network operating system environment to the listener for updates applied to the data model. By way of example only, objects that may be data update listeners include, but are not limited to, processes, views, components, communication channels, and the like. At block 1612, it is called to add the Input3 component as an update listener to the object corresponding to the "data / tasks.xml" document. In this regard, each document object maintains a list of listeners to be notified in response to the data update. By issuing a call to add update listeners at block 1612, the Input3 component becomes one of a potentially many data listeners on the same document object.

판단 블록(1614)에서, 업데이트 리스너로서 문서에 추가되는 컴포넌트가 규칙들을 이용하는지에 관해 판단이 된다. 일 측면에서, 본 발명은 규칙들이 데이터 바인딩 컴포넌트에 연관되도록 하는 기능성을 지원한다. 이에 관해, 규칙 핸들러가 컴포넌트들과 다른 오브젝트들이 그들의 데이터 바인딩을 해석할지를 정의하는 데이터 모델에 포함될 수 있다. 이하에서 상세히 설명되듯이, 규칙들은, 제네릭 컴포넌트들이 데이터 모델의 컨텐츠에 기초하여 해석하고, 학습하고, 적합한 동작을 취할 수 있게 한다. 따라서, 서로 다른 요소들, 속성들 및 계층구조들을 가진 XML 시맨틱스 또는 랭귀지들은 같은 종류의 제네릭 컴포넌트들을 이해 및/또는 바인드될 수 있다. 다시 말해, 규칙들을 사용하는 컴포넌트들은 어떤 데이터 모델에 특정되게 생성될 필요가 없다. 대신에, 규칙들은 컴포넌트들의 제네릭 세트가 어떠한 종류의 하부 데이터와 이용될 수 있도록 하므로, MVC 디자인 패러다임에서 진정한 데이터 추상화를 가능하게 한다. 컴포넌트는 하부 데이터 모델의 구조를 이해할 필요가 없으며, 원하는 기능성을 달성하기 위해 컨텐츠를 해석하는 규칙들을 이용할 수 있다. 규칙을 이용하는 컴포넌트와 바인딩을 설정할 때, 규칙들이 적용될 수 있도록 하기 위해 규칙 핸들러를 설정하고 업데이트하기 위한 기능성이 구현된다. 컴포넌트를 업데이트 리스너로 추가하는 호출시, 컴포넌트가 규칙 사용자인지를 나타내는 플래그가 포함될 수 있다. 따라서, 컴포넌트가 규칙 사용자가 아니라고 수신된 플래그가 나타내면, 블록(1614)에서 수행된 테스트의 결과는 "no"이며 바인드 핸들링 루틴(1600)은 블록(1618)로 진행하며, 이하에서 상세히 설명된다. 반대로, 컴포넌트가 규칙 사용자라고 수신된 플래그가 나타내면, 테스트의 결과는 "yes"이며 바인드 핸들링 루틴은 블록(1616)으로 진행한다. 블록(1616)에서, 데이터 바인딩 컴포넌트의 규칙들을 데이터 모델에서 유지되는 규칙 핸들러에 적용하거나 병합하는 설정 규칙 루틴(1600)이 실행된다. 이에 관해, 설정 규칙 루틴에 의해 구현된 로직은 도 21을 참조하여 이하에서 상세히 설명한다.At decision block 1614, a determination is made as to whether the component added to the document as an update listener utilizes the rules. In one aspect, the present invention supports functionality that allows rules to be associated with a data binding component. In this regard, a rule handler can be included in the data model that defines whether components and other objects will interpret their data binding. As described in detail below, the rules allow generic components to interpret, learn, and take appropriate action based on the content of the data model. Thus, XML semantics or languages with different elements, attributes, and hierarchies can be understood and / or bound to generic components of the same kind. In other words, components using rules do not need to be specific to any data model. Instead, rules enable true data abstraction in the MVC design paradigm, since generic sets of components can be used with some kind of underlying data. The component does not need to understand the structure of the underlying data model and can use rules to interpret the content to achieve the desired functionality. When configuring bindings with components that use rules, functionality is implemented to set and update rule handlers so that rules can be applied. A call to add a component as an update listener may include a flag indicating whether the component is a rule user. Thus, if the received flag indicates that the component is not a rule user, the result of the test performed at block 1614 is "no" and the bind handling routine 1600 proceeds to block 1618, which is described in detail below. Conversely, if the received flag indicates that the component is a rule user, the result of the test is "yes" and the bind handling routine proceeds to block 1616. At block 1616, a set rule routine 1600 is executed that applies or merges the rules of the data binding component to the rule handlers maintained in the data model. In this regard, the logic implemented by the configuration rule routine is described in detail below with reference to FIG.

바인드 핸들링 루틴(1600)의 블록(1618)에서, 바인드 작업의 대상인 컴포넌트의 유저 인터페이스를 업데이트 하기 위한 호출이 생성된다. 컴포넌트 API들에 따라 정의된 메소드들은 유저 인터페이스의 업데이트를 수행하는데 이용될 수 있다. 특히, 컴포넌트 API들은 개발자들이 컴포넌트데 대한 "Update()" 메소드들을 구현하는데 이용되는 로직을 제공하도록 한다. 이에 관해, "Update()" 메소드 내에서 구현될 수 있는 로직이 도 22를 참조하여 이하에서 상세히 설명된다. 이 예에서, Input3 컴포넌트에 연관된 "Update()" 메소드는 디스플레이중인 데이터 모델에서 유지되는 태스크 설명들을 초래한다. 이후, 바인드 핸들링 루틴(1600)은 종료하는 블록(1620)으로 진행한다. Bind 작업(616)이 실행을 완료하면, 새로운 데이터 바인딩 컴포넌트는 데이터 모델("data/tasks.xml")에 영향을 미치는 업데이트들을 통지 받는다. At block 1618 of the bind handling routine 1600, a call is made to update the user interface of the component that is the subject of the bind operation. The methods defined according to the component APIs can be used to perform an update of the user interface. In particular, component APIs allow developers to provide the logic used to implement the "Update ()" methods on components. In this regard, the logic that may be implemented within the "Update ()" method is described in detail below with reference to FIG. In this example, the "Update ()" method associated with the Input3 component results in task descriptions being maintained in the data model being displayed. Thereafter, the bind handling routine 1600 proceeds to block 1620 where it terminates. When the Bind operation 616 completes execution, the new data binding component is notified of updates that affect the data model ("data / tasks.xml").

예시적인 MyTasks 어플리케이션(도 6A)에서, Bind 작업(616)은 실행되는 Initialize Application 프로세스 단계(604)에서 마지막 작업이다. Bind 작업(616)이 실행되면, MyTasks 어플리케이션의 프로세싱은 트리거가 생성될 때까지 아이들(idle) 상태를 유지한다. 이에 관해, 트리거 활성화 루틴(1700)이 도 17을 참조하여 이하에서 설명된다. 그러나, 트리거들의 이용을 설명하기 이전에, 본 발명에 의해 제공된 익스프레션 엔진에 의해 구현된 기능성의 설명이 추가적으로 상세하게 설명된다. In the exemplary MyTasks application (Fig. 6A), the Bind job 616 is the last task in the Initialize Application process step 604 to be executed. Once the Bind operation 616 is executed, the processing of the MyTasks application remains idle until a trigger is generated. In this regard, the trigger activation routine 1700 is described below with reference to FIG. Before describing the use of triggers, however, a description of the functionality implemented by the expression engine provided by the present invention is described in further detail.

현존하는 플랫폼들에서, 개발자들은 데이터를 질의하고 어플리케이션의 연산 로직을 정의하는 동일한 프로그래밍 툴들을 제공받는다. 이에 관해, 사실상 명령형(imperative) 프로그래밍 랭귀지는, 모든 어플리케이션의 로직이 일련의 정렬된 선언문들로 결국 표현되도록 한다. 엄격한 프로그램밍 툴들의 정렬된 특성은 연산 로직을 구현하는데에는 적합한 반면, 엄격한 랭귀지의 데이터 쿼링 능력은 덜 견고(robust)해진다. 대신에, 비명령형(non-imperative) 랭귀지 프로그래밍 툴들은 데이터를 쿼링하거나 접속하는데 적합하다. 이를 위해, VO를 수행할 때, 개발자들이 비명령형 프로그래밍 랭귀지 툴들을 이용할 수 있는 익스프레션 랭귀지가 제공된다. 이에 관해, 익스프레션들은 XML 신택스와 호환되도록 구조화되며, 본 발명에 의해 제공된 XML 기반 프로그래밍 랭귀지들 안에서 한계가 정해진다. 어떻게 프로세스 XML 랭귀지가 익스프레션들을 용이하게 사용할 수 있는지에 대한 특정 예들이 여기에서 제공된다. 그러나, 익스프레션들은 다른 XML 랭귀지들에서 사용되기 위해 결합될 수 있으며 또한 직접적으로 오브젝트들 내의 프로그램 코드로부터 이밸류에이션되고 사용될 수 있으므로, 이 예들은 예시적인 것으로 해석되어야 한다. On existing platforms, developers are provided with the same programming tools that query data and define the operational logic of the application. In this regard, an imperative programming language in effect allows all application logic to be eventually represented in a series of ordered declarations. The ordered nature of rigorous programming tools is adequate to implement the arithmetic logic, while the strict language dataqualiting capability becomes less robust. Instead, non-imperative language programming tools are suitable for querying or connecting data. To this end, when performing a VO, an expression language is provided in which developers can use non-imperative programming language tools. In this regard, expressions are structured to be compatible with the XML syntax and are delimited within the XML-based programming languages provided by the present invention. Specific examples of how process XML languages can facilitate expressions are provided here. However, expressions can be combined to be used in other XML languages and can also be valued and used directly from program code in objects, so these examples should be interpreted as illustrative.

MVC 디자인 패러다임을 고수하는 어플리케이션을 실행하도록 설정된 개발 플랫폼의 구현은 런타임시 변화할 수 있는 데이터에의 접속에 관한 도전들을 제공한다. 일 실시예에서, XBind는 내부 메모리(in-memory) 오브젝트들, 문서들, 데이터 서브셋들 등을 참조하는 표준화된 수단을 제공한다. 상술한 바와 같이, XBind는 URL, 베이스 경로(예를 들어, XML 문서 내의 조각 또는 전체 XML 문서를 참조하는 XPath 익스프레션), 및 선택(예를 들어, 복수의 XPath 익스프레션들)을 포함하는 3 차원 데이터 종류이다. 따라서, XBind는 헐겁게 결합된 시스템의 서로 다른 부분들이 표준화된 방법으로 자기들의 상태 정보를 효율적으로 송수신할 수 있도록 한다. 이에 관해, XBind들은 데이터를 유저 인터페이스 컴포넌트들에 바인딩하는 간단하고 쉬운 방법을 제공한다. 선택들의 이용을 통해, 컴포넌트의 상태는, 다른 시스템들에 입력으로 제공될 수 있는 XBind에서 설명되어 질 수 있다. 더 일반적으로, 네트워크 오퍼레이팅 시스템 환경 내에 있는 각 오브젝트는, 오브젝트의 상태를 설명하는 XBind에 대해 항상 질의될 수 있다. 따라서, 오브젝트의 상태를 설명하는 XBind는, 컴포넌트들의 상태를 "복제"하거나 전달하기 위해 다른 오브젝트에 설정될 수 있다. 다른 측면에서, 오브젝트에 연관된 XBind는 네트워크를 통해 동기화될 수 있다. 결과적으로, 원격 컴퓨터들상에서 실행되는 오브젝트들은 동기화된 상태를 유지하기 위해 XBind를 이용하여 업데이트될 수 있다. 이는 본 발명의 측면들이 네트워크를 통해 실시간 협업을 가능하게 하는 한 방법이다. Implementation of a development platform that is configured to run an application that adheres to the MVC design paradigm provides challenges for accessing data that can change at runtime. In one embodiment, XBind provides a standardized means of referring to in-memory objects, documents, data subsets, and the like. As described above, XBind includes three-dimensional data including a URL, a base path (e.g., an XPath expression that references a piece in the XML document or an entire XML document), and a selection (e.g., a plurality of XPath expressions) It is kind. Thus, XBind allows different parts of loosely coupled systems to efficiently transmit and receive their state information in a standardized way. In this regard, XBinds provide a simple and easy way to bind data to user interface components. Through the use of selections, the state of a component can be described in XBind, which can be provided as input to other systems. More generally, each object in the network operating system environment can always be queried for XBind, which describes the state of the object. Thus, XBind, which describes the state of an object, can be set on another object to "clone" or dispatch the state of the components. In another aspect, the XBind associated with the object may be synchronized across the network. As a result, objects running on remote computers can be updated using XBind to maintain a synchronized state. This is one way in which aspects of the present invention enable real-time collaboration over a network.

일 실시예에서, XPath 이밸류에이션들은 익스프레션 엔진에 의해 적용될 수 있다. 당업자라면 XPath는 특정 위치에서 XML 문서의 데이터를 식별하고 선택하는 랭귀지를 제공하는 World Wide Web Consortium(W3C)의 표준임을 이해할 수 있다. 또한 XPath는 특정 값들을 이밸류에이션하는 익스프레션들을 만들어내는 조약들(conventions)을 설정한다. 예를 들어, "description"으로 명명된 속성을 찾는 "@" 심볼의 축약된 신택스를 포함하는 XPath 익스프레션 "/tasks/task/@description"은 MyTasks 어플리케이션에서 이용된다. 이 신택스는 XPath 조약들에 부합하며, 특정한 선택 또는 매칭 파라미터를 만족하는 XML 문서에서 데이터의 서브셋을 참조하는데 이용된다. In one embodiment, the XPath valuations may be applied by an expression engine. Those skilled in the art will appreciate that XPath is a World Wide Web Consortium (W3C) standard that provides a language for identifying and selecting data in XML documents at specific locations. XPath also sets conventions that produce expressions that valorise certain values. For example, the XPath expression "/ tasks / task / @ description" containing the abbreviated syntax of the "@" symbol to find an attribute named "description" is used in the MyTasks application. This syntax conforms to the XPath treaties and is used to reference a subset of data in an XML document that satisfies a particular selection or matching parameter.

본 발명에 의해 제공된 익스프레션 랭귀지는 개발자들이 런타임시 상태 변경들을 겪을 수 있는 내부 메모리(in-memory) 오브젝트들을 참조할 수 있도록 한다. 예를 들어, "#MyTasks"와 "#MyTask#input3" 익스프레션들은 다른 뷰와 컴포넌트 오브젝트들을 각각 참조한다. 간단한 표기를 이용하면, 개발자들은 이 내부 메모리 오브젝트들과 그들의 데이터 바인딩들을 구별할 수 있다. 예를 들어, 개발자가 오브젝트를 참조하는 대신에 "Input3" 컴포넌트에 바인드된 데이터에 접속하면, "{#MyTasks#input3}" 익스프레션이 이용될 수 있다. 이 특정 익스프레션은, MyTasks 뷰 안에 있는 Input3에 연관된 XBind에서 참조되는 XML 문서 안에서 발견된 값에 이밸류에이션한다. 구부러진 괄호({ 또는 })를 포함하는 익스프레션을 접하면, 익스프레션 엔진은 식별된 오브젝트에 바인드된 하나 이상의 XML 노드들을 텍스트나 XML로 변환한다. 이에 관해, 본 발명에 의해 제공된 뷰와 컴포넌트 오브젝들들은 그들의 데이터 바인딩들을 인지하며, 그들의 XBind에 대해 항상 질의받을 수 있다. 인스턴스에 관한 익스프레션들을 이밸류에이션함으로써, 익스프레션 엔진은 이러한 종류의 익스프레션들을 이밸류에이션할 때 적합한 오브젝트와 상응하는 데이터 바인딩을 식별할 수 있다. 따라서, 익스프레션 랭귀지는 개발자들이 내부 메모리 오브젝트들과 그들의 데이터 바인딩들을 같은 간단한 표기를 이용하여 참조할 수 있도록 한다. 또한, 익스프레션들은 통신 채널을 사용하여 자동적으로 획득될 수 있는 URL에 의해 식별된 외부 자원들을 참조할 수 있다.The expression language provided by the present invention allows developers to refer to in-memory objects that may undergo state changes at runtime. For example, "#MyTasks" and "#MyTask # input3" expressions refer to different views and component objects, respectively. With simple notation, developers can distinguish these internal memory objects from their data bindings. For example, if a developer accesses data bound to an "Input3" component instead of referring to an object, the expression "{# MyTasks # input3}" can be used. This particular expression evaluates to the value found in the XML document referenced in XBind associated with Input3 in the MyTasks view. When you touch an expression that contains a curly brace ({or}), the expression engine converts one or more XML nodes bound to the identified object to text or XML. In this regard, the view and component objects provided by the present invention are aware of their data bindings and can always be queried for their XBinds. This valuation of expressions about the instance allows the expression engine to identify the appropriate object and corresponding data binding when valuating these kinds of expressions. Thus, an expression language allows developers to reference internal memory objects and their data bindings using the same simple notation. In addition, expressions may refer to external resources identified by a URL that can be automatically obtained using a communication channel.

문서들 내에서 데이터의 네비게이션과 선택을 위해 XPath를 이용하는 현존하는 시스템들과 달리, 본 발명의 측면들은 내부 메모리 오브젝트들과 그들에 연관된 데이터들이 XPath 조약들을 이용하여 참조될 수 있게 한다. "Input1"으로 명명된 컴포넌트가 "MyView"로 불리는 어플리케이션 뷰 안에 존재한다고 가정하면, 다음은 본 발명에 의해 이밸류에이션되는 유효한 익스프레션이다. Unlike existing systems that use XPath for navigation and selection of data within documents, aspects of the present invention allow internal memory objects and their associated data to be referenced using XPath treaties. Assuming that a component named "Input1" exists in an application view called "MyView ", the following is a valid expression valued by the present invention.

{ #My View#input 1 # @ name }{#My View # input 1 # @ name}

XML 문서, 변수, 또는 내부 메모리 오브젝트에 대한 참조 이후에, XPath 조약들은 컴포넌트들 XBind에 관한 익스프레션에서 마지막 "#" 문자 이후에 적용된다. 상대적인 XPath 익스프레션을 접하면, 베이스 경로 또는 컴포넌트 내에서의 선택은 바인드 핸들링 루틴(1600)(도 16)을 참조하여 설명된 제공된 XPath와 병합된다. 위에서 제공된 예시적인 익스프레션에서, 마지막 "#"은, XPath 익스프레션(예를 들어 "@name")이 상대적이므로 이 XPath 익스프레션은 컴포넌트들의 XBind와 병합되는 것을 나타낸다. 그러나, 본 발명에 의해 이밸류에이션된 XPath 익스프레션들은 또한 절대적일 수 있다. "/"으로 표기된 절대적 XPath 익스프레션을 이밸류에이션하는데 있어서, 본 발명의 측면들은 컴포넌트들의 XBind의 베이스 경로나 선택을 무시한다. 본 발명의 측면들은 상술한 것과는 다른 방법으로 XPath 조약들을 이용한다. XPath 조약들의 사용의 추가적인 예들은, 본 발명에 의해 이밸류에이션될 수 있는 다른 종류들의 익스프레션들에 더해, 공통적으로 양수된 미국 가특허출원 60/976,339 "Network-Based Operating System"(2007년 9월 28일 출원)에서 찾을 수 있으며, 이의 내용은 여기서 참조로서 명시적으로 결합된다. After a reference to an XML document, variable, or internal memory object, the XPath treaties are applied after the last "#" character in the expressions for the components XBind. Upon encountering a relative XPath expression, the selection in the bass path or component is merged with the provided XPath described with reference to the bind handling routine 1600 (Fig. 16). In the exemplary expression provided above, the last "#" indicates that this XPath expression is merged with the XBind of components, since the XPath expression (eg "@name") is relative. However, these valued XPath expressions may also be absolute by the present invention. In valuating absolute XPath expressions denoted by "/ ", aspects of the present invention ignore the bass path or selection of XBind of components. Aspects of the present invention use XPath treaties in a manner different from that described above. Additional examples of the use of XPath treaties may be found in commonly-assigned U.S. patent application 60 / 976,339 entitled "Network-Based Operating System" (September 28, 2007), in addition to other types of expressions that may be valued by the present invention , The contents of which are expressly incorporated herein by reference.

일 실시예에서, 내부 메모리 오브젝트의 특성들은 익스프레션 랭귀지를 이용하여 접속될 수 있다. 이 특성들은 다음 신택스에 따라 그 데이터 종류에 상관없이 접속될 수 있다.In one embodiment, the characteristics of the internal memory object may be accessed using an expression language. These properties can be accessed regardless of the data type according to the following syntax.

#MyView.id# MyView.id

내부 메모리 오브젝트에 동작들을 수행하는 메소드들은 익스프레션 랭귀지를 이용하여 호출될 수도 있다. 이에 관해, 본 발명에 의해 제공된 내부 메모리 오브젝트들은 이 메소드들로 인코딩될 수 있다. 익스프레션 랭귀지를 이용하면, 메소드들은 이 오브젝트들에서 직접 호출될 수 있다. 예를 들어, 다음은 오브젝트에서 메소드를 호출하는 본 발명에 의해 이밸류에이션된 익스프레션들의 종류이다.Methods that perform operations on an internal memory object may be called using an expression language. In this regard, the internal memory objects provided by the present invention may be encoded into these methods. With Expression Language, methods can be called directly on these objects. For example, the following is a kind of this valued expression by the present invention which calls a method on an object.

#MyView#maximize()# MyView # maximize ()

#MyView#input1.clear () # MyView # input1.clear ()

또한, 인수들로 다른 익스프레션들을 받아들이는 고차(higher-order)의 익스프레션들은 본 발명에 의해 이밸류에이션된다. 다시 말해, 익스프레션 랭귀지는, 다음의 예가 설명하는 것처럼, 비명령적 프로그래밍 테크닉들에 일치하는 익스프레션들의 반복적인 이밸류에이션을 지원한다. Also, higher-order expressions that accept different expressions as arguments are valued by the present invention. In other words, the expression language supports iterative valuation of expressions that conform to non-imperative programming techniques, as the following example illustrates.

# MyView#{#MyView#inputl.getName()}# MyView # {# MyView # inputl.getName ()}

이 예에서, Input1 컴포넌트의 이름은 getName() 메소드를 이용하여 내부 익스프레션에서 처음으로 이밸류에이션된다. 컴포넌트 이름을 식별하는 반복적으로 이밸류에이션된 익스프레션은 외부 익스프레션의 파라미터로 제공된다. 이것은 비명령적 프로그래밍 툴들이 본 발명에 의해 제공된 XML 프로그래밍 랭귀지들과 함께 결합되고 사용되는 방법의 한 예이다. In this example, the name of the Input1 component is valued for the first time in an internal expression using the getName () method. Repeatedly identifying this component name, this valued expression is provided as an external expression parameter. This is an example of how non-imperative programming tools are combined and used with the XML programming languages provided by the present invention.

네트워크 오퍼레이팅 시스템 환경 내에서, 프로세스 단계들과 연관된 작업들은 트리거의 생성에 반응하여 실행될 수 있다. 다시 말해, 프로세스 단계들의 실행은 이벤트 주도적(event driven)일 수 있다. 따라서, MyTasks.xml 문서(600)가 오픈되면, 트리거(602)는 등록되어, 트리거가 활성화될 때 플로우는 적합한 프로세스 단계로 지시될 수 있다. 트리거 활성화 루틴(1700)은, 루틴(1700)을 구현하기 위해 이용된 오브젝트들 사이의 플로우와 상호작용들을 설명하는 도 17A-B를 참조하여 설명된다. 상술한 바와 같이, MyTasks.xml 문서(600)는 다음의 트리거(602)를 정의한다.Within the network operating system environment, tasks associated with process steps can be executed in response to the generation of a trigger. In other words, the execution of process steps may be event driven. Thus, when the MyTasks.xml document 600 is opened, the trigger 602 is registered and the flow can be directed to the appropriate process step when the trigger is activated. The trigger activation routine 1700 is described with reference to Figs. 17A-B, which illustrate the flow and interactions between the objects used to implement the routine 1700. Fig. As described above, the MyTasks.xml document 600 defines the following trigger 602.

<trigger view = "MyTasks" component = "button 1" event = "select" step = "2"><trigger view = "MyTasks" component = "button 1" event = "select" step = "2">

도 17에 도시된 트리거 활성화 루틴(1700)은 사용자가 이 트리거 요소 내에서 식별된 Button1 컴포넌트를 선택하여서, 블록(1702)에서 트리거(602)를 활성화한다고 가정한다.The trigger activation routine 1700 shown in FIG. 17 assumes that the user selects the Button1 component identified within this trigger element, and activates the trigger 602 at block 1702. FIG.

활성화된 트리거에 대한 응답으로, 트리거가 발생한 컴포넌트 오브젝트는, 블록(1704)에서 이벤트 매니저(914)에 노티파이 리스너들 호출(notify listeners call)을 패스한다. 호출시, 적합한 컴포넌트 오브젝트는 한 세트의 이벤트 데이터를 제공하며, 이벤트 매니저(914)가 노티파이어 오브젝트 또는 제공된 데이터에 매칭하는 오브젝트를 등록한 모든 이벤트 리스너들에게 통지하도록 지시한다. 도 17B를 특별히 참조하면, MyTasks 뷰 오브젝트(1752)에 연돤된 Button1 컴포넌트 오브젝트(1750)는 노티파이 리스너들 호출을 블록(1704)에서 이벤트 매니저(914)로 패스한다. 호출시, 이벤트 종류(예를 들어, "select") 뿐만이 아니라트리거 이벤트가 시작된 컴포넌트를 식별하는 익스프레션(예를 들어, "#MyTasks#button1")이 제공된다. In response to the activated trigger, the component object that caused the trigger passes a notify listeners call to the event manager 914 at block 1704. Upon invocation, the appropriate component object provides a set of event data and instructs the event manager 914 to notify all event listeners that have registered the notifier object or an object matching the provided data. 17B, the Button1 component object 1750 drawn in the MyTasks view object 1752 passes the notify listener calls at block 1704 to the event manager 914. [ At the time of the call, an expression (e.g., "# MyTasks # button1") is provided that not only identifies the type of event (e.g., "select") but also identifies the component from which the trigger event originated.

블록(1706)에서, 이벤트 매니저(914)는 이벤트의 활성화에 대한 하나 이상의 리스닝 오브젝트들에게 통지한다. 특히, 이벤트 매니저(914)는 Button1 컴포넌트 오브젝트(1750)으로부터 패스되는 이벤트 데이터가 이전에 이벤트 리스너가 등록될 때 제공된 데이터에 매치되는지에 대해 룩업을 수행한다. 이에 대해, 프로세스 시작 루틴(1100)(도 11)은 오브젝트들이 이벤트 매니저(914)에 이벤트 리스너를 등록할 수 있는지에 대한 설명을 제공한다. 일 실시예에서, 프로세스 XML 문서에서 접하는 각 트리거는 어플리케이션이 처음에 시작되면 상응하는 노티파이어 오브젝트가 이벤트 리스너로서 메모리에 미리 일시 저장되도록한다. 노티파이어 오브젝트는, 하나 이상의 어플리케이션 인스턴스들이 트리거를 활성화할 것으로 예상해서 어플리케이션의 최초 시작시 메모리에 미리 일시 저장된다. 미리 일시 저장된 노티파이어 오브젝트는 뷰 이름, 컴포넌트 이름 및 이벤트 종류에 연관되는데, 이들은 블록(1706)에서 룩업을 실행할 때 고유키(unique key) 역할을 한다. 다시 말해, 특정 뷰 안에서 컴포넌트가 트리거에서 식별된 이벤트의 종류를 경험할 때에만 상응하는 노티파이어 오브젝트가 이벤트 활성화를 통지받는다. 따라서, 단일 노티파이어 오브젝트만이, 실행중인 어플리케이션 인스턴스들의 수에 상관없이 프로세스 XML 문서에 정의된 트리거에 대한 이벤트 매니저(914)에 등록한다. 어플리케이션의 복수 인스턴스들이 존재해도, 이 아키텍쳐는 동일한 노티파이어 오브젝트가 각 어플리케이션 인스턴스들에 의해 재사용되도록 한다. 추가적으로, 이 아키텍쳐는, 단일 트리거가 이벤트 리스너를 이후에 다중 어플리케이션 인스턴스들에 의해 공유되는 노티파이어 오브젝트의 형태로 등록하므로, 이벤트 매니저(914)가 더 효율적으로 반복하고 리스너들에게 통지하도록 한다. 다른 말로, 블록(914)에서 수행되는 룩업의 성능은 실행중인 어플리케이션 인스턴스들의 숫자에 종속되지 않는다. At block 1706, the event manager 914 notifies one or more listening objects for activation of the event. In particular, the event manager 914 performs a lookup as to whether the event data passed from the Button1 component object 1750 matches the data provided when the event listener was previously registered. In response, the process start routine 1100 (FIG. 11) provides an explanation as to whether the objects can register an event listener with the event manager 914. In one embodiment, each trigger tangent to a process XML document causes the corresponding notifie object to be temporarily stored in memory as an event listener first when the application is initially started. The Notify object is temporarily stored in memory at the initial start of the application, expecting that one or more application instances will activate the trigger. The previously temporarily stored Notifier objects are associated with a view name, a component name, and an event type, which serve as unique keys when performing a lookup at block 1706. In other words, only when the component experiences the kind of event identified in the trigger in a particular view, the corresponding Notifier object is notified of the event activation. Thus, only a single Notifier object registers with the event manager 914 for the trigger defined in the process XML document, regardless of the number of running application instances. Even if there are multiple instances of the application, this architecture allows the same Notifier object to be reused by each application instance. Additionally, this architecture allows the event manager 914 to repeat more efficiently and notify listeners, since a single trigger registers the event listener in the form of a Notify object that is later shared by multiple application instances. In other words, the performance of the lookup performed in block 914 is not dependent on the number of application instances running.

트리거 활성화 루틴(1700)의 블록(1708)에서, 활성화된 이벤트(트리거)에 연관된 적합한 인스턴스가 식별된다. 이벤트의 발생을 통지받으면, 인수들은 적합한 리스닝 오브젝트와 영향을 받는 인스턴스를 식별하는에 이용되는 이벤트 매니저(914)로 패스된다. 이 예에서, Button1 컴포넌트 오브젝트(1750)를 식별하는 익스프레션은 이벤트 매니저(914)에 제공되며, 속하는 인스턴스에 대한 참조를 수용하는 컴포넌트 뷰 오브젝트에의 접속을 통해 적합한 인스턴스를 식별하는데 이용될 수 있다. 상술한 바와 같이, 어플리케이션뷰를 오픈할 때, 인스턴스에 대한 참조는 결과 뷰 오브젝트에 제공된다. 따라서, MyTasks 뷰 오브젝트(1754)는 그에 연관된 인스턴스 오브젝트(1758)를 인지한다. 컴포넌트 오브젝트들은 뷰의 컨텍스트 내에서 생성되므로, Button1 컴포넌트 오브젝트(1750)는 MyTasks 뷰 오브젝트(1754)를 블록(1708)에서 적합한 인스턴스를 식별하는데 이용할 수 있다. 적합한 인스턴스가 알려지면, 인스턴스 오브젝트(1758)는 프로세스 오브젝트의 실행 메소드로 제공된다.  At block 1708 of the trigger activation routine 1700, an appropriate instance associated with the activated event (trigger) is identified. When notified of the occurrence of an event, the arguments are passed to the event manager 914, which is used to identify the appropriate listening object and the affected instance. In this example, an expression identifying the Button1 component object 1750 is provided to the event manager 914 and may be used to identify the appropriate instance through a connection to a component view object that accepts a reference to the instance to which it belongs. As described above, when opening an application view, a reference to the instance is provided to the result view object. Thus, the MyTasks view object 1754 recognizes the instance object 1758 associated with it. Because the component objects are created in the context of the view, the Button1 component object 1750 can use the MyTasks view object 1754 to identify the appropriate instance at block 1708. [ Once the appropriate instance is known, the instance object 1758 is provided as the execute method of the process object.

상술한 도 17B에 도시된 아키텍쳐와 설명은 어떻게 본 발명이 어플리케이션 로직의 이벤트 주도적 실행을 지원하는 시스템에서 상태가 보존되지 않는 프로세스 단계들의 실행을 지원하는지를 설명한다. 상술한 바와 같이, 단일 프로세스 XML 문서는 다중 어플리케이션 인스턴스들을 실행하는데 이용된다. 이에 관해, 프로세스 오브젝트는 다른 어플리케이션 인스턴스들에 의해 반복적으로 재사용될 수 있으므로, 어플리케이션들을 실행하는데 효율적인 플랫폼을 제공한다. 오직 단일 노티파이어 오브젝트(1756)가 어플리케이션에서 각 크리거에 대해 미리 일시 저장되지만, 본 발명은 적합한 인스턴스가 프로세스 오브젝트(1700)에 제공되도록 할 수 있다. 이에 관해, 노티파이어 오브젝트(1756)는, 뷰, 컴포넌트 및 이벤트 종류를 포함하는 고유 키에 매칭하는 이벤트가 이벤트 매니저(914)에 의해 수신되면 활성화된다. 또한, 이벤트 매니저(914)는, 제공받은 컴포넌트, 뷰 또는 이벤트 리스닝 오브젝트를 이용하여, 적합한 인스턴스 오브젝트(1758)를 식별하여 노티파이어 오브젝트(1758)에 제공할 수 있다. 트리거 활성화 루틴(1700)의 블록(1712)에서, 어플리케이션에서 프로세스 단계를 실행하는 호출이 생성된다. 상술한 바와 같이, 실행될 프로세스 단계는 노티파이어 오브젝트(1756)에 일시 저장되거나 이벤트 리스닝 오브젝트에 의해 알려진다. 따라서, 적합한 인스턴스가 제공되면, 노티파이어 오브젝트(1756)는 블록(1712)에서 (1) 어플리케이션의 현재 런타임 상태를 표현하는 인스턴스 오브젝트(1758)와 (2) 실행될 어플리케이션의 프로세스 로직에서의 프로세스 단계(예를 들어 "2")를 제공하는 실행 메소드(도 12)를 호출할 수 있다. 이후, 트리거 활성화 루틴(1700)은 종료하는 블록(1714)로 진행한다. 다른 이벤트 리스닝 오브젝트들은 프로세스 오브젝트 단계를 호출하거나 자체 커스텀 코드를 직접 실행할 수 있다.The architecture and description shown in FIG. 17B described above illustrates how the present invention supports the execution of state steps that are not preserved in a system that supports event-driven execution of application logic. As described above, a single process XML document is used to execute multiple application instances. In this regard, the process object can be reused repeatedly by other application instances, thus providing an efficient platform for executing applications. Although only a single notifier object 1756 is temporarily stored in advance for each Kruger in the application, the present invention may allow for a suitable instance to be provided to the process object 1700. In this regard, the notifier object 1756 is activated when an event matching the unique key including the view, component, and event type is received by the event manager 914. The event manager 914 may also identify the appropriate instance object 1758 and provide it to the notifier object 1758 using the provided component, view, or event listening object. At block 1712 of the trigger activation routine 1700, a call is made to execute a process step in the application. As described above, the process step to be executed is temporarily stored in the notifier object 1756 or is announced by the event listening object. Thus, if a suitable instance is provided, then the notify object 1756 may determine at block 1712 that (1) the instance object 1758 representing the current runtime state of the application and (2) the process step in the process logic of the application to be executed (E.g., "2"). Thereafter, the trigger activation routine 1700 proceeds to block 1714 where it ends. Other event listening objects can invoke process object steps or execute their own custom code directly.

MyTasks 어플리케이션의 트리거가 활성화되면, 실행 플로우는 판단 작업(620)으로 진행한다. 일반적으로 설명하면, 판단 작업(620) 내의 로직은, 트리거(602)가 활성화되면, 어떠한 텍스트가 Input4 컴포넌트에 입력되었는지를 판단하는 테스트를 수행한다. 이에 관해, 판단 작업(620)을 구현하는 판단 핸들링 루틴(1800)이 도 18을 참조하여 설명된다. 도 18에서 설명되듯이, 판단 핸들링 루틴(1800)은 익스프레션이 이밸류에이션을 위해 익스프레션 엔진에 패스되는 블록(1802)에서 시작한다. 이 예에서, 판단 작업(620)은, 블록(1802)에서 판단을 위해 익스프레션 엔진으로 패스되는 값 속성 "#MyTasks#input4"을 포함한다. 상술한 바와 같이, 개발자들은 내부 메모리 오브젝트들을 참조하기 위해 본 발명에 의해 제공된 익스프레션 랭귀지를 이용할 수 있다. 특히, 블록(1802)에서 선택되고 이밸류에이션을 위한 익스프레션 엔진에 패스되는 "#MyTask#input4" 익스프레션은 어플리케이션이 실행되면 상태 변경을 경험할 수 있는 컴포넌트 오브젝트를 참조한다. When the trigger of the MyTasks application is activated, the execution flow proceeds to decision operation 620. Generally speaking, the logic in the decision task 620 performs a test to determine which text is input to the Input4 component when the trigger 602 is activated. In this regard, a decision handling routine 1800 that implements the decision task 620 is described with reference to FIG. 18, the decision handling routine 1800 begins at block 1802 where the expression is passed to the expression engine for this valuation. In this example, the decision task 620 includes a value attribute "# MyTasks # input4" that is passed to the expression engine for decision at block 1802. [ As described above, developers can use the expression language provided by the present invention to refer to internal memory objects. Specifically, the expression "# MyTask # input4" selected in block 1802 and passed to the expression engine for this valuation refers to a component object that can experience state changes when the application is executed.

블록(1804)에서, 이밸류에이션중인 익스프레션인 데이터 바인딩에 연관된 컴포넌트를 참조하는지에 관해 판단된다. 일부 경우에, 데이터 바인딩은 데이터 입력 및/또는 컴포넌트에 의해 디스플레이되는 데이터가 컴포넌트와 데이터 모델 사이에 자동적으로 전파되는지를 정의할 수 있다. 한편, 컴포넌트는 "아토믹(atomic)" 또는 존재하는 데이터 바인딩에 연관되지 않을 수 있다. 아토믹 컴포넌트들을 참조하는 익스프레션들을 이밸류에이션할 때, 익스프레션 엔진은 컴포넌트로부터의 데이터 입력/출력 또는 컴포넌트들의 상태에 영향을 미치는 다른 데이터가 작업 핸들러의 로직 내에서 접속될 수 있도록 하는 기능성을 구현한다. 이 기능성을 구현함으로써, 익스프레션 엔진은 이 데이터가 XML 기반 익스프레션을 이용하여 항상 접속 가능하도록 한다.  At block 1804, it is determined whether it refers to a component associated with the data binding being this valuation being an expression. In some cases, the data binding may define whether data input and / or data displayed by the component is automatically propagated between the component and the data model. On the other hand, a component may not be "atomic" or an existing data binding. When valuating expressions that refer to atomic components, the expression engine implements functionality that allows data input / output from the component or other data that affects the state of the components to be accessed within the logic of the task handler. By implementing this functionality, the Expression Engine ensures that this data is always accessible using XML-based expressions.

컴포넌트가 블록(1804)에서 데이터 바인딩에 연관되어 있는지를 판단하기 위해서, 익스프레션 엔진은 인스턴스를 이용하여 "Input4"로 명명된 컴포넌트 오브젝트를 식별할 수 있다. 상술한 바와 같이, 본 발명에 의해 제공되는 컴포넌트 오브젝트들는 그들의 데이터 바인딩들을 인지한다. 따라서, 적합한 컴포넌트 오브젝트가 식별되면, 익스프레션 엔진은, 컴포넌트가 아토믹하거나 데이터 바인딩에 연관되어 있는지를 용이하게 판단할 수 있다. 수행된 테스트의 결과가 익스프레션에서 참조되는 컴포넌트가 데이터 바인딩에 연관되어 있지 않다고 나타내면, 판단 핸들링 루틴(1800)은 블록(1808)로 진행하며, 이하에서 상세히 설명된다. 반대로, 블록(1804)에서 수행된 테스트의 결과가 익스프레션이 데이터 바인딩에 연관된 컴포넌트를 참조한다고 나타내면, 판단 핸들링 루틴(1800)은 블록(1806)으로 진행한다.To determine if a component is associated with a data binding at block 1804, the expression engine may use the instance to identify the component object named "Input4 ". As described above, the component objects provided by the present invention recognize their data bindings. Thus, once an appropriate component object is identified, the expression engine can easily determine whether the component is atomic or related to data binding. If the result of the performed test indicates that the component referenced in the expression is not associated with a data binding, the decision handling routine 1800 proceeds to block 1808, which is described in detail below. Conversely, if the result of the test performed at block 1804 indicates that the expression refers to a component associated with the data binding, the decision handling routine 1800 proceeds to block 1806. [

블록(1806)에 도달하면, 접한 익스프레션에서 참조되는 컴포넌트는 데이터 바인딩에 연관된다. 이 예에서, 데이터 바인딩의 비존재를 설명하는 임시 XBind를 생성하지 않고 익스프레션은 이밸류에이션된다. 더 상세하게는, 익스프레스 엔진은 블록(1806)에서 "#MyTasks#input4" 익스프레션을 이밸류에이션하고 Input4 컴포넌트로부터 XBind를 요청한다. 이 예에서, 익스프레션 엔진에 의해 반환되는 XBind는 작업 핸들러에 실행할 필요가 있는 모든것으르 제공한다.Upon reaching block 1806, the component referenced in the adjacent expression is associated with the data binding. In this example, the expression is valued without creating a temporary XBind that describes the absence of data binding. More specifically, the Express engine valued the expression "# MyTasks # input4" at block 1806 and requests XBind from the Input4 component. In this example, the XBind returned by the expression engine provides everything you need to do with the job handler.

일 실시예에서, 개발자들은 데이터에 억세스하거나 I/O를 수행하기 위해 XML 시맨틱 설명들을 제공할 수 있다. 그러나, 익스프레션은, 스크립팅 랭귀지(예를 들어, Java Script)로 구현된 내부 메모리 오브젝트로부터만 이용 가능한 데이터를 요구할 수 있다. 따라서, 컴포넌트가 바인드에 연관되지 않더라도, 본 발명은 익스프레션들이 상응하는 내부 메모리 오브젝트를 이용하여 컴포넌트에 연관된 데이터를 연산하고 접속할 수 있도록 한다. 예를 들어, MyTasks 어플리케이션의 판단 작업(620)은 다음 "<when>" XML 요소(622)를 포함한다.In one embodiment, developers can provide XML semantic descriptions to access data or perform I / O. Expressions, however, may require data available only from internal memory objects implemented in a scripting language (e.g., Java Script). Thus, even if a component is not associated with a bind, the present invention allows expressions to compute and connect data associated with the component using the corresponding internal memory object. For example, the decision task 620 of the MyTasks application includes the following "<when>" XML element 622.

<when test= "text() = " " step ="37> <when test = "text () =" "step =" 37>

<otherwise step="4"/><otherwise step = "4" />

when 요소(622)는 텍스트를 Input4 컴포넌트에 입력시키도록 요청하기 위해 XPath 이밸류에이션 조약들을 적용하는 XPath 익스프레션 "text()"를 포함한다. 컴포넌트가 아토믹하므로, 요청된 데이터는 현존하는 데이터 바인딩을 사용할 수 없다. 대신, 본 발명은 XML 기반 익스프레션을 이밸류에이션하고 요청된 데이터가 데이터 모델에서 현재 유지되지 않더라도 데이터에 접속할 수 있도록 한다. 대신에, 임시 XBind가 시스템 제공(system-provided) 상태 문서 내의 조각을 참조하는 오브젝트(예를 들어, 컴포넌트)에 대해 생성된다. 이하에서 상세히 설명되듯이, 시스템 제공 상태 XML 문서는 관련된 컴포넌트의 모든 상태 정보를 포함할 수 있다.  The when element 622 contains an XPath expression "text () ", in which XPath applies valuation treaties to request input of text into the Input4 component. Because the component is atomic, the requested data can not use the existing data binding. Instead, the present invention valued this XML-based expression and made it possible to access the data even if the requested data is not currently maintained in the data model. Instead, a temporary XBind is created for an object (e.g., a component) that references a piece in a system-provided state document. As described in detail below, the system-provided state XML document may include all of the state information of the associated component.

판단 핸들링 루틴(1800)의 블로(1808)에서, 요청된 데이터는 아토믹 컴포넌트에 연관된 내부 메모리 오브젝트로부터 획득된다. 작업 핸들러 내에 구현된 로직은 아토믹 컴포넌트의 상태를 포함하는 데이터를 이용할 수 있다. 예를 들어, 판단 핸들링 루틴(1800)의 블록(1808)에 도달하면, Input4 컴포넌트는 데이터 바인딩에 연관되지 않은 아토믹 컴포넌트이다. 따라서, 판단 작업(620)의 바디 내의 XPath 익스프레션 "text()"은 데이터 모델의 알려진 문서에 바인드되지 않은 컴포넌트의 상태를 포함하는 데이터를 요청한다. 이러한 종류의 익스프레션을 적절히 이밸류에이션하기 위해, 요청된 데이터는 데이터 모델로부터 이용 가능하여야만 한다. 이에 관해, 익스프레션에서 요청된 XBind가 존재하지 않으므로, 익스프레션 엔진은 관련된 데이터에 관한 Input4 컴포넌트를 질의할 수 있다.At decision 1808 in decision handling routine 1800, the requested data is obtained from an internal memory object associated with the atomic component. The logic implemented within the work handler may utilize data including the state of the atomic component. For example, upon reaching block 1808 of decision handling routine 1800, the Input4 component is an atomic component that is not associated with the data binding. Thus, the XPath expression "text ()" in the body of decision operation 620 requests data that includes the state of the component that is not bound to a known document in the data model. To adequately valorise this kind of expression, the requested data must be available from the data model. In this regard, since there is no XBind requested in the expression, the expression engine can query the Input4 component for the related data.

일 실시예에서, 아토믹 컴포넌트가 이밸류에이션중인 익스프레션에서 참조될 때마다, 시스템 제공 상태 XML 문서가 컴포넌트의 현재 상태로 업데이트된다. 이하에서 상세히 설명되듯이, 요청된 데이터가 획득될 수 있는 시스템 제공 상태 XML 문서 내에서 적합한 조각을 지시하는 임시 XBind는 이후 생성될 수 있다. 다른 실시예에서, 시스템의 모든 컴포넌트들의 상태(컴포넌트가 아토믹이든 데이터 바인딩에 연관되든 상관없이)는, State Manger에 캡슐화된 기능성을 이용하여 시스템 제공 상태 XML 문서로 지속적으로 전파될 수 있다. 이 예에서, 요청된 데이터는 데이터 모델로부터 항상 이용 가능하며 번역된 XBind를 이용하여 접속 가능하며, 이하에서 설명된다. 특히, 이 실시예는 다중 클라이언트 컴퓨터들에 걸쳐 어플리케이션의 상태의 동기화를 가능하게 한다. 또한, 이 방법으로 데이터 모델에 상태 정보를 자동적으로 전파함으로써, 어플리케이션이 클로즈되고 뒤이어 오픈될 때, 어플리케이션의 상태는 쉽게 복구될 수 있다.In one embodiment, whenever an atomic component is referenced in the valuation being valued, the system-provided state XML document is updated with the current state of the component. As will be described in detail below, a temporary XBind may be subsequently generated indicating a suitable piece in the system provisioned state XML document in which the requested data can be obtained. In another embodiment, the state of all components of the system (whether components are associated with anatomic or data binding) can be propagated continuously to system-provided state XML documents using functionality encapsulated in the State Manger. In this example, the requested data is always available from the data model and is accessible using the translated XBind and is described below. In particular, this embodiment enables synchronization of the state of an application across multiple client computers. In addition, by automatically propagating state information to the data model in this manner, the state of the application can be easily recovered when the application is closed and subsequently opened.

블록(1810)에서, 아토믹 컴포넌트로부터 획득된 데이터에 접속하기 위한 임시 XBind가 생성되고 적합한 프로세스 오브젝트로 반환된다. 어플리케이션이 아토믹 컴포넌트를 이용하는 작업을 포함하면, 데이터는 컴포넌트 오브젝트로부터 직업 획득될 수 있으며, 메모리 제공 상태 문서에 저장될 수 있다. 요청된 데이터가 획득된 상태 문서 내의 위치를 참조하는, 이 익스프레션을 이밸류에이션하는데 임시로 사용되는 번역된 XBind가 생성된다. "#MyTask#input4" 익스프레션을 이밸류에이션할 때, 익스프레션 엔진은 다음과 유사한 XBind를 생성할 수 있다.At block 1810, a temporary XBind to connect to the data obtained from the atomic component is created and returned to the appropriate process object. If the application includes an operation that utilizes an atomic component, the data may be acquired professionally from the component object and stored in a memory provisioning state document. A translated XBind is created that temporarily uses this valuation to refer to the location in the state document where the requested data was obtained. "# MyTask # input4" When valuating an expression, the expression engine can generate an XBind similar to the following:

URL = #StateURL = #State

Base path = /states/state[@qid = '#MyTasks#input4'] Selection = Base path = / states / state [@qid = '# MyTasks # input4'] Selection =

이 XBind의 URL은, 컴포넌트 상태 정보를 저장하도록 할당된 시스템 제공 상태 XML 문서를 참조한다. 또한 베이스 경로는, 블록(1808)에서 Input4 컴포넌트로 입력된 텍스트가 저장된 상태 문서 내에서의 노드를 지시한다. 이밸류에이션되면, 임시 XBind는 익스프레션 엔진에서 적합한 프로세스 오브젝트로 반환된다. 이 방법으로 상태 정보를 저장하고 임시 XBind를 생성함으로써, 본 발명의 측면들은, 컴포넌트가 데이터 바인딩에 연관되어있는지에 상관없이 개발자들이 컴포넌트들과 그 데이터를 참조하기 위해 XML 기반 익스프레션들을 이용하도록 한다. 더욱 일반적으로, XML 문서들에 접속하는 모든 작업 핸들러들은, 데이터 바인딩에 연관되지 않은 아토믹 오브젝트들로 작업할 수 있고 참조할 수도 있다. 위에서 설명한 예와 같이, 익스프레션의 오브젝트들(예를 들어 컴포넌트들)에 대한 참조들은 XBind에 이밸류에이션된다. 결과적으로, 본 발명의 측면들은 컴포넌트들이 서로를 바인드하도록 한다. 이 종류의 바인딩이 정의되면, 두 번째 컴포넌트는 첫 번째 컴포넌트의 XBind를 효과적으로 "복제"한다. 다시 말해, 두 번째 컴포넌트에는 첫 번째 컴포넌트로부터의 동기화된 XBind가 제공된다. 컴포넌트들간의 데이터 바인딩은 바인딩의 타겟이 아토믹 컴포넌트인 경우에도 가능하다. 이 경우에, 두 번째 컴포넌트는, 첫 번째 컴포넌트의 상태를 설명하는 시세틈 제공 문서를 참조하는 XBind에 연관된다. 첫 번째 컴포넌트가 아토믹하므로, 이는 두 컴포넌트들간에 마스터-슬레이브 관계를 효과적으로 생성한다.    This XBind URL refers to a system-provided state XML document that is assigned to store component state information. The bass path also points to the node in the state document where the text entered into the Input4 component at block 1808 is stored. Once valued, the temporary XBind is returned to the appropriate process object in the Expression Engine. By storing state information and creating temporary XBinds in this manner, aspects of the present invention allow developers to use XML-based expressions to reference components and their data, regardless of whether the components are associated with data binding. More generally, all work handlers that access XML documents can work with and reference atomic objects that are not associated with data binding. As in the example above, references to expressions' objects (eg, components) are valued by XBind. As a result, aspects of the present invention allow components to bind to each other. If this kind of binding is defined, the second component effectively "clones" the XBind of the first component. In other words, the second component is provided with a synchronized XBind from the first component. Data binding between components is possible even if the target of the binding is an atomic component. In this case, the second component is associated with XBind, which refers to a ticker break document that describes the state of the first component. Since the first component is atomic, it effectively creates a master-slave relationship between the two components.

도 18에서 상세히 설명되듯이, 판단 작업 핸들러는, 판단 작업 (606)에서 정의된 이밸류에이션을 수행하도록 블록(1812)에서 호출된다. 이에 관해, 파라미터들은, 작업이 아토믹 컴포넌트를 포함하면, 호출시 임시 XBind를 포함할 수 있는 판단 작업 핸들러로 패스된다. 일 실시예에서, 개발자들은, 함수 호출 파라미터들 및 작업의 바디 내에 존재할 수 있는 XML 시맨틱 구조를 정의한 작업 API에 따른 작업들을 생성할 수 있다. 판단 작업(620)에서, 이밸류에이션된 XPath 익스프레션의 결과에 따라 프로그램 실행 플로우가 지시되도록 하는 요소들이 정의된다. 이 예에서, 텍스트가 Input4 컴포넌트로 입력되었는지를 판단하기 위해 판단 작업 핸들러 내에서 스트링 비교가 수행된다. 따라서, XPath 익스프레션(예를 들어 "text()")은 판단 작업 핸들러 내에서 텍스트로 이밸류에이션된다. 이밸류에이션중인 익스프레션이 아토믹 컴포넌트로부터 데이터를 참조하는 경우에, 특정 익스프레션을 이밸류에이션하기 위해 번역된 임시 XBind가 요청된 데이터를 획득하기 위해 사용된다. 특히, 판단 작업 핸들러에 패스되는 XBind는, Input4 컴포넌트로부터 이전에 추상화된 상태 데이터가 접속 가능한 시스템 제공 상태 문서에 대한 참조를 포함할 수 있다. As described in detail in FIG. 18, the decision job handler is called at block 1812 to perform this valuation as defined in decision operation 606. [ In this regard, the parameters are passed to the decision task handler, which may include a temporary XBind in the call, if the task contains an atomic component. In one embodiment, developers may create tasks based on task APIs that define function call parameters and an XML semantic structure that may reside in the body of the task. At decision operation 620, elements are defined that direct the program execution flow according to the result of this valued XPath expression. In this example, a string comparison is performed within the decision task handler to determine whether the text has been entered as an Input4 component. Thus, an XPath expression (for example, "text ()") is valued as text within the decision task handler. When the valuation being valued refers to data from an atomic component, a translated transient XBind is used to obtain the requested data to valued the particular expression. In particular, the XBind passed to the decision task handler may include a reference to a system provisioning state document to which state data previously abstracted from the Input4 component are connectable.

이후, 블록(1814)에서, 어플리케이션의 적합한 프로세스 단계를 수행하라는 호출이 생성된다. 판단 작업 핸들러 내에서 수행된 이밸류에이션의 결과는 실행 플로우를 프로세스 단계(608) 또는 프로세스 단계(610)로 지시할지를 결정한다. 판단 작업 핸들러가 호출되면, 프로세스 및 인스턴스 오브젝트들뿐만이 아니라 XBind도 수신된다. 이 수신된 인수들은 판단 작업 핸들러가 이밸류에이션의 결과에 따라 다음 적합한 프로세스 단계의 실행을 용이하게 시작하도록 한다. 이에 관해, 수신된 인수들은, 판단 작업 핸들러에 의해 수정되거나 직접 패스될 수 있다. 이후, 판단 핸들링 루틴(1800)은 종료하는 블록(1816)으로 진행한다.Thereafter, at block 1814, a call is made to perform the appropriate process steps of the application. The result of this valuation performed within the judgment job handler determines whether to direct the execution flow to process step 608 or process step 610. [ When the judgment job handler is called, not only the process and instance objects but also XBind are received. These received arguments cause the judgment job handler to easily start execution of the next appropriate process step according to the result of this valuation. In this regard, the received arguments may be modified or directly passed by the decision task handler. Thereafter, the decision handling routine 1800 proceeds to block 1816 where it ends.

상술한 바와 같이, 판단 작업(620)은, 트리거(602)의 발생시 텍스트가 Input4 컴포넌트에 입력되지 않으면, 실행 플로우가 프로스세 단계(610)으로 진행하도록 한다. 프로세스 단계(610) 에서의 유일한 작업은, 버튼 컴포넌트가 디스플레이하도록 하는 동작 작업(628)이다. 이에 관해, 동작 작업(628)은 도 15A-B를 참조하여 상술한 동작 작업 핸들러를 이용하여 실행될 수 있다. 따라서, 프로그램 플로우가 프로세스 단계(610)으로 지시될 때 구현된 기능성의 추가적인 설명은 여기서 상세하게 설명되지 않는다.As described above, the determination operation 620 causes the execution flow to proceed to the proof step 610 if the text is not input to the Input4 component when the trigger 602 is generated. The only task in process step 610 is an action task 628 that causes the button component to display. In this regard, the action task 628 may be performed using the action task handler described above with reference to Figures 15A-B. Thus, a further description of the functionality implemented when the program flow is directed to process step 610 is not described in detail herein.

트리거(602)의 발생시 Input4 컴포넌트로 텍스트가 입력되면, MyTaks 어플리케이션의 실행은 프로세스 단계(608)로 진행한다. 프로세스 단계(608) 내에서 정의된 작업은, 컴포넌트로 입력된 텍스트가 XML 문서에 추가되도록 하는 변경 작업(624)이다. 이에 관해, 변경 작업 핸들러를 이용한 데이터 업데이트를 구현하는 예시적인 변경 핸들링 루틴(1900)이 도 19를 참조하여 설명된다. If the text is entered into the Input4 component at the occurrence of the trigger 602, execution of the MyTaks application proceeds to process step 608. [ The job defined within process step 608 is a change operation 624 that causes the text entered as a component to be added to the XML document. In this regard, an exemplary change handling routine 1900 for implementing data updates using a change task handler is described with reference to FIG.

도 19에 설명에서 설명되듯이, 변경 핸들링 루틴(1900)은, 익스프레션 이밸류에이션이 수행되는 블록(1902)에서 시작한다. 특히, 변경 작업(624)의 값 속성의 "data/tasks.xml" 익스프레션은, 블록(1902)에서 XBind로 이밸류에이션된다. 이 예에서, 이밸류에이션으로부터 발생된 XBind는, "data/tasks.xml" 문서의 루트 노드를 참조하는 URL과 베이스 경로를 포함한다. As described in the description of FIG. 19, the change handling routine 1900 begins at block 1902 where the expression is valued. In particular, the "data / tasks.xml" expression of the value attribute of the change operation 624 is valued at XBind at block 1902. [ In this example, XBind resulting from this valuation contains a URL and a base path that reference the root node of the "data / tasks.xml" document.

상기 설명이 설명하듯이, 작업의 값 속성의 익스프레션은 어플리케이션의 각 작업들에 대한 XBind로 이밸류에이션된다. 일 실시예에서, 작업의 바디 내 익스프레션들은 오퍼레이터 핸들러에 의해 구현된 로직 내에서 이밸류에이션될 수 있다. 다른 실시예에서, 작업의 바디 내 익스프레션들은 적합한 작업 핸들러가 호출되기 전에 이밸류에이션될 수 있다. 양 실시예들이 지원되는 동안, 작업 핸들러의 로직의 작업의 바디 내 익스프레션들의 이밸류에이션이 더 효율적이므로 바람직하다. 이에 관해, 변경 작업(624)은 다음 "<store>" XML 요소(626)를 포함한다. As described above, the expression of the job's value attribute is valued by XBind for each job in the application. In one embodiment, the expressions in the body of the task may be valued within the logic implemented by the operator handler. In another embodiment, the expressions in the body of the job may be valuated before the appropriate job handler is called. While both embodiments are supported, this valuation of the expressions in the body of the work of the logic of the work handler is preferred because it is more efficient. In this regard, the change operation 624 includes the following "<store>" XML element 626.

<store type="append" select="/tasks/task/@description" value=<store type = "append" select = "/ tasks / task / @ description" value =

" { #MyTasks#input4 } ""{# MyTasks # input4}"

저장 요소(626) 내 익스프레션 "{#MyTasks#input4}"은 블록(1904)에서 텍스트로 이밸류에이션된다. 상술한 바와 같이, 본 발명에 의해 제공된 익스프레션 엔진은 개발자들이 구브러진 괄호 표기를 이용하여 익스프레션에 대한 이밸류에이션의 한계를 지을 수 있도록 한다. 이 익스프레션들은 속성들, 요소들간, 그리고 어플리케이션 코드의 다른 위치들에서 정의될 수 있다. 이 예에서, 익스프레션 엔진 내 로직은 익스프레션 "{#MyTasks#input4}"이 텍스트로 이밸류에이션되록 한다. The expression "{# MyTasks # input4}" in storage element 626 is valued as text in block 1904. As described above, the expression engine provided by the present invention allows developers to limit the valuation of expressions using the braille bracket notation. These expressions can be defined at attributes, between elements, and at other locations in the application code. In this example, the logic within the Expression Engine is valued by the expression "{# MyTasks # input4}" as text.

일반적으로, 본 발명에 의해 구현된 변경 작업은 개발자들에게 XML 문서의 컨텐츠에 대해 필요한 모든 수정을 수행하기 위한 원시 데이터 조작 툴(raw data manipulation tool)을 제공한다. 이에 관해, 본질적으로 World Wide Web Consortium의 DOM 표준과 일치하는 복수의 데이터 조작 프리미티브들(data manuplulation primitives)이 제공된다. 또한 본 발명의 측면들은, replaceText 와 삭제 칠드런 프리미티브들(delete children primitives)을 포함하는 추가 데이터 조작 프리미티브들을 제공한다. 따라서, 다음의 예시적인 프리미티브들은, 본 발명에 의해 제공되는 변경 작업(교체(replace), 텍스트 교체(replaceText), 붙임(append), 앞에 붙임(prepend), 삽입(insert), 제거(remove), 칠드런 제거(remove children), 신규(new), 및 삭제(delete))을 이용하여 XML 문서의 컨텐츠를 변경하도록 수행될 수 있다. 당업자라면, 제공된 프리미티브들이 데이터 모델에 대한 필요한 모든 수정들을 수행하기 위해 사용되거나 결합될 수 있음을 이해할 수 있다. 이하에서 상세히 설명되듯이, 데이터 모델에 영향을 주는 어떠한 변경 작업은, 만들어질 정확한 업데이트를 설명하는 트랜잭션 매니저(910) 내에서 트랜잭션이 생성되도록 한다. In general, the modifications implemented by the present invention provide developers with a raw data manipulation tool for performing all necessary modifications to the contents of an XML document. In this regard, a plurality of data manipulation primitives are provided that essentially conform to the World Wide Web Consortium's DOM standard. Aspects of the present invention also provide additional data manipulation primitives including replaceText and delete children primitives. Thus, the following exemplary primitives can be used in conjunction with the changes provided by the present invention (replace, replaceText, append, prepend, insert, remove, (E.g., remove children, new, and delete) to change the content of the XML document. Those skilled in the art will appreciate that the provided primitives may be used or combined to perform all necessary modifications to the data model. As will be described in detail below, any change that affects the data model causes a transaction to be created within the transaction manager 910 that describes the exact update to be made.

변경 핸들링 루틴(1900)의 블록(1906)에서, 변경 작업 핸들러는 적합한 프로세스 오브젝트에 의해 호출된다. 블록(1906)에 다다르면, 현재 프로세스를 실행하는 프로세스 오브젝트는 적합한 인스턴스와 프로세스 오브젝트들뿐만이 아니라 이전에 이밸류에이션된 XBind를 변경 작업 핸들러에 패스할 수 있다. 이하에서 상세히 설명되듯이, 변경 작업 핸들러는 XML 문서의 컨텐츠를 수정하기 위해 수신한 인수들을 이용한다.At block 1906 of the change handling routine 1900, the change work handler is called by the appropriate process object. Upon reaching block 1906, the process object executing the current process may pass this valued XBind to the change work handler previously, as well as the appropriate instance and process objects. As described in detail below, the change task handler uses the received arguments to modify the contents of the XML document.

변경 핸들링 루틴(1900)의 판단 블록(1908)에서, 실행중인 변경 작업이 데이터 변형(data transform)을 정의하는지가 판단된다. 변경 작업(624)에서 정의된 값 속성은 변경 작업의 대상인 문서(예를 들어, "data/tasks.xml")를 식별한다. 저장 요소(626) 내에서, 셀렉트 속성은 데이터 수정이 실행될 특정 XML 문서 내 위치를 참조하는 XPath 익스프레션(예를 들어, tasks/task/@description)을 포함할 수 있다. 또한, 셀렉트 속성은, XML 문서에서 붙여지거나, 교체되거나 또는 포함될 컨텐츠를 이밸류에이션하는 익스프레션(예를 들어, "{#MyTasks#input4}")을 포함할 수 있다. 일 실시예에서, 본 발명의 측면들은, 데이터 모델에 붙여지거, 교체되거나, 추가되기 전에, 변경 작업 내에서 데이터가 변형되도록 한다. 예를 들어, 저장 요소(626)는, 특정 데이터 변형을 수행하기 위한 XSLT(Extensible Stylesheet Language Transformation)를 참조하는 변형 속성을 포함할 수 있다. 이런 종류의 데이터 변형이 정의되면, 블록(1908)에서 수행되는 테스트의 결과는 "yes"이며 루틴(1900)은 블록(1910)으로 진행한다. 그러나, 예시적인 MyTasks 어플리케이션의 변경 작업(624)은 변형 속성을 포함하지 않는다. 이 예에서, 블록(1908)에서 수행되는 테스트의 결과는 "no"이고, 루틴(1900)은 블록(1910)으로 진행하며, 이하에서 상세히 설명된다. At decision block 1908 of the change handling routine 1900, it is determined whether the currently executing change defines a data transform. The value attribute defined in change operation 624 identifies the document (e.g., "data / tasks.xml") that is the subject of the change operation. Within the storage element 626, the select attribute may include an XPath expression (e.g., tasks / task / @ description) that references a location within a particular XML document where the data modification is to be performed. The select attribute may also include an expression (e.g., "{# MyTasks # input4}") that valued this content to be pasted, replaced, or included in the XML document. In one embodiment, aspects of the invention allow data to be transformed within a change operation before being pasted, replaced, or added to the data model. For example, the storage element 626 may include a transformation attribute that references an Extensible Stylesheet Language Transformation (XSLT) to perform a particular data transformation. If this kind of data transformation is defined, the result of the test performed in block 1908 is "yes" and the routine 1900 proceeds to block 1910. However, the exemplary change 624 of the MyTasks application does not include a transformation attribute. In this example, the result of the test performed in block 1908 is "no ", and the routine 1900 proceeds to block 1910, which is described in detail below.

블록(1910)에서, 변경 작업 내에서 정의된 로직에 따라 데이터 변형이 적용된다. 실제 실시예에서, 변경 동작의 저장 요소는 XSLT 문서를 참조하는 변형 속성을 포함할 수 있다. XSLT 문서 내 로직은, 블록(1910)에서, 소스 포맷으로부터 목적 포맷으로 데이터를 변형하기 위해 적용될 수 있다. 전통적으로, XSLT는, 웹 페이지들의 동적 생성 및 수정들을 지원하기 위해 데이터를 변형하는데 이용되어 왔다. 또한, XSLT는, Electronic Data Interchange (EDI) 집적 서버들의 부분으로 XML 비즈니스 포맷 랭귀지들과 그들의 상응하는 구조들간 변형하는데 이용된다. 그러나, 이 예들은 단지 예시적인 것이며, XSLT는 다른 예들에서도 이용된다. 또한, 다른 트랜스폼 랭귀지들은 본 발명과 함께 사용될 수 있으며, XSLT의 사용이 제한하는 것으로 해석되어서는 안된다. 어떤 경우에도, 당업자라면 XSLT는 XML 스키마들과 다른 XML 스키마들 또는 DTD(Document Type Definition)을 구현하는 XML 문서들 사이뿐만이 아니라 다양한 마크업 랭귀지들(XML, HTML, XHTML 등)사이의 변형들을 정의하기 위한 XML 기반 랭귀지임을 이해할 것이다. 이에 관해, XSLT 프로세서는, 블록(1910)에서, 데이터 변형을 적용하기 위해 변경 작업 핸들러에 의해 사용될 수 있다. 이 방법으로 변형들의 동적 어플리케이션을 지원함으로써, 어플리케이션들이 데이터를 교환하고, 상호작용하며, 기능성을 집적하고/재사용하도록 잘 준비된 개량된 개발 플랫폼이 제공된다.  At block 1910, the data transformation is applied in accordance with the logic defined within the modification. In an actual embodiment, the storage element of the modification operation may include a transformation attribute that references an XSLT document. The logic within the XSLT document may be applied at block 1910 to transform the data from the source format to the destination format. Traditionally, XSLT has been used to transform data to support dynamic creation and modification of web pages. XSLT is also used to transform between XML business format languages and their corresponding structures as part of Electronic Data Interchange (EDI) integration servers. However, these examples are merely illustrative, and XSLT is used in other examples. In addition, other transform languages may be used with the present invention and should not be construed as limiting the use of XSLT. In any case, those skilled in the art will define XSLT not only between XML schemas and other XML schemas or XML documents implementing DTD (Document Type Definition) but also variations between various markup languages (XML, HTML, XHTML, etc.) Quot; XML-based &quot; language. In this regard, the XSLT processor may, in block 1910, be used by the change task handler to apply the data transformation. By supporting dynamic applications of variations in this manner, an improved development platform is provided that is well-prepared for applications to exchange data, interact, and integrate / reuse functionality.

컴퓨터 사용자는, 이메일, 웹 브라우저, 캘린더 어플리케이션들, 워드 프로세서들, 미디어 플레이어들 등과 같은 복수 어플리케이션들을 일반적으로 이용한다. 그러나, 서로 다른 어플리케이션들에 의해 이용되는 데이터 포맷들과 로직은 현존하는 시스템을 이용해서는 호환되지 않는다. 예를 들어, 이메일 프로그램은 사용자들이 다른 사용자에 관련된 정보를 저장하고 접속하는데 이용되는 "연락처(contact)"를 정의하도록 할 수 있다. 한편, 캘린더 어플리케이션은 사용자들이 다른 사용자들, 그룹들 등을 포함하는 회의들과 약속들을 생성하도록 한다. 이메일 프로그램에서 정의된 연락처로부터의 메시지 검토에 대한 응답으로, 사용자는 캘린더 어플리케이션에서 새로운 회의를 자동적으로 생성하기를 원할 수 있다. 그러나, 서로 다른 어플리케이션들이 이 방법으로 상호작용하도록 하는 기능성을 지원하는 것은 현존하는 시스템을 이용해서는 용이하게 수행되지 않는다.Computer users typically use multiple applications such as email, web browsers, calendar applications, word processors, media players, and the like. However, the data formats and logic used by different applications are incompatible using existing systems. For example, an email program may allow users to define "contacts " that are used to store and access information related to other users. Meanwhile, the calendar application allows users to create conferences and appointments that include other users, groups, and the like. In response to reviewing a message from a contact defined in the email program, the user may want to automatically create a new meeting in the calendar application. However, supporting functionality to allow different applications to interact in this manner is not readily accomplished using existing systems.

블록(1910)에서 적용되는 데이터 변형은, 변경 작업의 원시 데이터 조작이 수행되기 전에 발생한다. 이러한 종류의 데이터 변형들의 동적 어플리케이션을 지원함으로써, 본 발명의 측면들은, 어플리케이션 개발자들에게 다른 어플리케이션들로부터 이용 가능한 기능성과 데이터에 영향을 미치는 더 나은 기회들을 제공한다. 위에서 제공된 예에서, 이메일과 캘린더 어플리케이션이 상호작용하도록 용이하게 허용하는 데이터 변형이 수행될 수 있다. 예를 들어, XSLT 변형은 수신한 이메일 및/또는 연락처를 새로운 약속을 설명하는 데이터 항목(data item)으로 변환하기 위해 정의될 수 있다. 이에 관해, 변형은 연락처 정보, 이메일 메시지의 컨텐츠 및/또는 회의의 속성들을 설정하기 위한 사용자의 입력을 이용할 수 있다. 변경 작업 내에서, 서로 다른 하부 스키마들과 XML 구조가 이용되더라도, 서로 다른 어플리케이션들이 통신할 수 있도록 하는 이러한 종류의 XSLT 변형이 적용될 수 있다. The data transformation applied at block 1910 occurs before the raw data manipulation of the modification operation is performed. By supporting dynamic applications of this kind of data variants, aspects of the present invention provide application developers with better opportunities to influence the functionality and data available from other applications. In the example provided above, a data transformation may be performed that allows e-mail and calendar applications to easily interact. For example, an XSLT transformation can be defined to transform a received email and / or contact into a data item describing a new appointment. In this regard, the modification may utilize the user's input to set contact information, content of the email message, and / or properties of the meeting. Within the change, this kind of XSLT transformation can be applied, allowing different applications to communicate, even if different subschemas and XML structures are used.

변경 핸들링 루틴(1900)의 블록(1912)에서, 변경 동작에서 표현된 특정 데이터 업데이트를 수행하는 호출이 적합한 URL 오브젝트에 대해 이루어진다. 이하에서 상세히 설명되듯이, 본 발명에 의해 제공된 URL 오브젝트는, 변경 작업 핸들러에 의해 지원되는 서로 다른 종류의 데이터 수정 프리미티브들(위에서 설명됨) 각각을 수핸하기 위한 메소드들을 노출하는 가벼운 포인터(lightweight pointer) 역할을 한다. 따라서, 변경 작업 핸들러는, 호출할 적합한 URL 오브젝트를 식별하기 위해 변경 작업(626) 내에서, 수신된 XBind와 로직을 이용한다. URL 오브젝트의 이용은 문서들과의 상호작용의 상세를 막기 위한 단순하게 구현되며, 본 발명은 다른 방법들로도 용이하게 구현될 수 있음이 이해될 수 있다. URL 오브젝트에 대한 호출이 이뤄지면, 실행 플로우는 이하에서 도 20을 참조하여 설명될 데이터 업데이트 루틴(2000)으로 진행한다. 이후, 변경 핸들링 루틴(1900)는 종료하는 블록(1914)으로 진행한다.At block 1912 of the change handling routine 1900, a call is made to the appropriate URL object to perform the specific data update represented in the change operation. As will be described in detail below, the URL object provided by the present invention is a lightweight pointer that exposes methods for enumerating each of the different kinds of data modification primitives (as described above) supported by the modify operation handler ). Thus, the change task handler uses the received XBind and logic within change operation 626 to identify the appropriate URL object to call. It is to be understood that the use of a URL object is simply implemented to prevent details of interaction with documents, and that the present invention can be readily implemented in other ways. When a call to the URL object is made, the execution flow proceeds to the data update routine 2000, which will be described below with reference to FIG. Thereafter, the change handling routine 1900 proceeds to block 1914 where it ends.

이제 도 20A-C를 참조하면, 데이터 업데이트 루틴(2000)과 루틴(2000)에 의해 사용되는 오브젝트들 사이의 상호작용이 설명된다. 도 20에 도시된 데이터 업데이트 루틴(2000)은 데이터 업데이트가 수행되는 블록들(2002 또는 2004)에서 시작하는 두 경우들을 설명한다. 데이터 업데이트 루틴(2000)이 블록(2002)에서 시작하는 실시예에서, URL 오브젝트는 변경 작업 핸들러(1250)의 컨텍스트 내에서 데이터 업데이트를 수행하는 호출을 수신한다. 상술한 바와 같이, 어플리케이션은 XML 문서의 컨텐츠를 수정하기 위한 변경 동작을 포함할 수 있다. 따라서, 변경 핸들링 루틴(1900)(도 19)은 블록(2002)에서 수신된 특정한 URL 오브젝트(1253) 상에서 데이터 업데이트를 수행하는 호출을 생성할 수 있다.20A-C, the interaction between the objects used by the routine 2000 and the data update routine 2000 is described. The data update routine 2000 shown in FIG. 20 describes two cases beginning with blocks 2002 or 2004 where data update is performed. In an embodiment where the data update routine 2000 begins at block 2002, the URL object receives a call to perform data update within the context of the change task handler 1250. [ As described above, the application may include a change operation for modifying the contents of the XML document. Thus, the change handling routine 1900 (FIG. 19) may generate a call to perform a data update on a particular URL object 1253 received in block 2002.

루틴(2000)이 블록(2004)에서 시작하면, 특정 URL 오브젝트(1253) 상에서 데이터 업데이트를 수행하는 호출은 유저 인터페이스 컴포넌트로부터 시작된다. 바인딩이 정의되면, 컴포넌트는 URL 및 바인딩에 연관된 XML 문서를 인지하게 된다. 예를 들어, Mytasks 어플리케이션의 Input3 컴포넌트는, Bind 작업(616)이 실행되면, "data/tasks.xml" 문서에 상응하는 URL 오브젝트를 수신한다. 이하에서 상세히 그리고 일 실시예에 따라 설명되듯이, HTML DOM을 이용하는 웹 브라우저는 유저 인터페이스를 렌더링하는데 이용될 수 있다. 이 실시예에서, 상응하는 뷰 오브젝트의 컨텍스트에서 생성된 컴포넌트 오브젝트들은 다양한 이벤트 리스너들이 웹 브라우저를 이용하여 HTML DOM 상에 등록되도록 한다. 컴포넌트는, 예를 들어, 사용자가 입력을 제공하거나 웹 브라우저에 디스플레이된 유저 인터페이스와 상호작용할 때 발생하는, HTML DOM에 영향을 미치는 이벤트들을 듣는다. 도 20B를 특별히 참조하면, 컴포너트(1252)는 수신한 데이터를 해석하고 데이터 업데이트 이벤트를 구현하도록 하는 호출을 URL 오브젝트(1253)로 생성한다. 예를 들어, "Update Presentation" 태스크가 예시적인 MyTasks 어플리케이션에서 삭제되면, "data/tasks.xml" 문서에 상응하는 URL 오브젝트가 생성되며 데이터 모델로부터 태스크 설명을 삭제하도록 호출된다. 이하에서 상세히 설명되듯이, URL 오브젝트(1253)는 이후 트랜잭션 매니저(910)과 데이터 업데이트를 통신한다. 차례로, 트랜잭션 매니저(910)는, 실제로 데이터 업데이트가 구현되도록 하는 하부 XML 문서 오브젝트로 데이터 업데이트를 전파한다. 데이터 업데이트를 구현하는 것에 더하여, 문서 오브젝트(1254)는 데이터 업데이트가 모든 적합한 리스닝 데이터 업데이트 오브젝트들로 전하되도록 한다. 이 리스닝 오브젝트들은 자주 컴포넌트들이지만, 다른 종류들의 오브젝트들이 될 수 있다. XML 문서는, XML 문서 오브젝트에 발생한 변경들을 듣는 원격 컴퓨터들에 걸쳐 공유될 수 있다. 그러나, 클라이언트측 캐시에서 유지되는 로컬 문서 오브젝트(1254)에 대한 데이터 업데이트는, 데이터 업데이트가 어떠한 원격 리스너들에게 전파되기 전에 구현된다. 다시 말해, 전체 네트워크 업데이트는 로컬에서 구현되는 데이터 업데이트에 이어서 수행된다. When the routine 2000 starts in block 2004, the call to perform data update on a particular URL object 1253 begins with the user interface component. Once the binding is defined, the component will recognize the XML document associated with the URL and the binding. For example, the Input3 component of the Mytasks application receives a URL object corresponding to the "data / tasks.xml" document when the Bind operation 616 is executed. As described in detail below and in accordance with one embodiment, a web browser using the HTML DOM can be used to render the user interface. In this embodiment, the component objects created in the context of the corresponding view object allow various event listeners to be registered on the HTML DOM using a web browser. The component listens to events that affect the HTML DOM that occur, for example, when a user provides input or interacts with a user interface displayed in a web browser. 20B, the component 1252 generates a URL object 1253 that calls to interpret the received data and implement a data update event. For example, if the "Update Presentation" task is deleted from the example MyTasks application, a URL object corresponding to the "data / tasks.xml" document is created and called to delete the task description from the data model. As will be described in detail below, the URL object 1253 then communicates data updates with the transaction manager 910. In turn, the transaction manager 910 propagates the data update to the underlying XML document object, which actually causes the data update to be implemented. In addition to implementing data updates, the document object 1254 allows data updates to be transferred to all suitable listening data update objects. These listening objects are often components, but they can be different kinds of objects. An XML document may be shared across remote computers listening to changes made to an XML document object. However, the data update for the local document object 1254 maintained in the client-side cache is implemented before the data update is propagated to any remote listeners. In other words, the entire network update is performed following the locally implemented data update.

데이터 업데이트 루틴(2000)의 블록(2006)에서, 업데이트될 문서 오브젝트(1254)에 대응하는 URL 오브젝트(1253)는 새로운 트랜잭션이 생성되도록 한다. 이에 관해, 트랜잭션 매니저(910)가 블록(2006)에서 호출되며, 새로운 "트랜잭션" 또는 XML 문서에 대한 상대적인 변경을 표현하는 XML 조각을 생성한다. 일 실시예에서, 트랜잭션 매니저(910)는 XML 조각에서 상대적인 변경을 구현하고 뒤바꾸기 위한 정보를 포함한다. 또한, 데이터 업데이트가 컴포넌트의 컨텍스트 또는 변경 작업 핸들로로부터 시작되는지에 상관없이, XML로 직렬화(serialized)된 XBind는 블록(2006)에서 생성된 트랜잭션과 함께 포함된다. 이하에서 상세히 설명되듯이, 트랜잰션 매니저(910)는 데이터 업데이트가 로컬에서 구현되고 어떠한 원격 리스너들에게 전파되도록 한다. 어느 경우에도, 데이터 업데이트가 수행될 데이터 모델에서의 위치 및 요청된 데이터 조작 작업을 되돌리는 로직(여기서는 "rollback" 수행이라고 함)을 포함하는 XML 포맷 데이터를 식별하는 XBind는 제공된다. At block 2006 of the data update routine 2000, the URL object 1253 corresponding to the document object 1254 to be updated causes a new transaction to be created. In this regard, transaction manager 910 is invoked at block 2006 to generate an XML fragment representing a new "transaction " or a change relative to the XML document. In one embodiment, the transaction manager 910 includes information for implementing and rewriting relative changes in the XML fragment. Also, XBind serialized into XML is included with the transaction generated in block 2006, regardless of whether the data update begins with the context of the component or with the change operation handle. As will be described in detail below, the transience manager 910 allows data updates to be implemented locally and propagated to any remote listeners. In either case, XBind is provided that identifies the XML format data including the location in the data model where the data update is to be performed and the logic to return the requested data manipulation operation (here called "rollback" performance).

블록(2008)에서, 트랜잭션 매니저(910)는 데이터 업데이트가 로컬에서 구현되도록 한다. 트랜잭션은 데이터 모델에 대한 복수의 그리고 잠재적으로 다른 종류의 수정들을 포함하는 세션을 표현할 수 있다. 따라서, 데이터 통지 이벤트시, 데이터 모델에 대한 수정들이 설명되는 유닛을 표현하는 하나 이상의 업데이트 이벤트 오브젝트들이 생성된다. 한편, 트랜잭션은 데이터 모델에 대해 만들어지는 하나 이상의 변경들과 이 변경들을 되돌리는 로직을 완전히 설명한다. 또한, 데이터 통지 이벤트들을 송부하는 것에 더하여, 문서 오브젝트들은 업데이트 이벤트 오브젝트들에서 표현된 하부 XML 문서의 실제 컨텐츠를 수정하는 메소드를 제공한다. 특히, XML 문서상에서 실행될 수 있는 각 데이터 조작 프리미티브(replace, append, prepend, insert 등)는, URL 오브젝트(1253), 트랜잭션 매니저(910) 및 문서 오브젝트(1254)에 의해 제공된 상응하는 메소드들에서 구현된다. At block 2008, the transaction manager 910 causes the data update to be implemented locally. A transaction may represent a session that contains multiple and potentially other types of modifications to the data model. Thus, at the time of a data notification event, one or more update event objects are generated that represent the unit in which modifications to the data model are described. A transaction, on the other hand, fully describes one or more changes made to the data model and the logic that returns those changes. In addition to sending data notification events, document objects also provide methods for modifying the actual content of the underlying XML document represented in the update event objects. In particular, each data manipulation primitive (replace, append, prepend, insert, etc.) that can be executed on an XML document is implemented in the corresponding methods provided by the URL object 1253, the transaction manager 910 and the document object 1254 do.

도 20의 블록(2012)에서 설명되듯이, 트랜잭션 매니저(910)는 어떠한 원격 리스너들에게 트랜잭션을 전파하기 위해 통신 매니저(1256)를 호출한다. 이에 관해, 통신 매니저(1256)는 어플리케이션들이 원격 네트워크 서비스들과의 통신들을 추상화하는 채널들을 인스턴스화하도록 한다. 수신된 XBind에 기초하여, 통신 매니저(1256)는, 만약 있다면, 네트워크를 통해 트랜잭션을 전송하기 위한 적합한 통신 채널을 식별한다. 이하에서 상세히 설명되듯이, 통신 채널들은 URL 표준에 의해 정의된 대로 서로 다른 프로토콜들 하에서 동작한다. 예를 들어, 적합한 통신 채널은, "http://," "xios://," 또는 "database://" 같은 URL에서 식별된 트로토콜에서 식별될 수 있다. 통신 API들에 따라 획득된 로직을 이용하면, 트랜잭션 매니저(910)로부터 수신한 데이터는 원격 네트워크 서비스에 의해 이해될 수 있는 포맷으로 번역된다. 이에 관해, 통신 채널들을 이용한 네트워크 통신을 수행하기 위한 시스템들과 방법들은 이하에서 상세히 설명된다. 특히, 로털 데이터 리스너들에게 통지하고 업데이트하기 위한 로직은, 네트워크를 통해 전송되는 상응하는 트랜잭션 전에 그리고 독립해서 수행된다. 일 실시예에서, 본 발명은 비동기적으로 네트워크를 통해 트랜잭션들을 전파하도록 설정된다. 결과적으로, 로컬에서의 어플리케이션의 실행은, 네트워크 통신들에 내재된 네트워크 레이턴스(latency)나 다른 지연들에 의해 방해받지 않는다. 이후, 트랜잭션이 적합한 체널로 제공되면, 데이터 업데이트 루틴(2000)은 종료하는 블록(2014)로 진행한다.As illustrated in block 2012 of Figure 20, the transaction manager 910 calls the communication manager 1256 to propagate the transaction to any remote listeners. In this regard, communication manager 1256 allows applications to instantiate channels that abstract communications with remote network services. Based on the received XBind, the communication manager 1256 identifies, if any, a suitable communication channel for transmitting transactions over the network. As will be described in detail below, the communication channels operate under different protocols as defined by the URL standard. For example, a suitable communication channel may be identified in the protocol identified in a URL such as "http: //," "xios: //," or "database: //". Using the logic obtained according to the communication APIs, the data received from the transaction manager 910 is translated into a format that can be understood by the remote network service. In this regard, systems and methods for performing network communications using communication channels are described in detail below. In particular, the logic for notifying and updating the local data listeners is performed before and independently of the corresponding transaction being transmitted over the network. In one embodiment, the present invention is configured to asynchronously propagate transactions across the network. As a result, the execution of applications locally is not hampered by network latency or other delays inherent in network communications. Thereafter, if the transaction is provided in the appropriate channel, the data update routine 2000 proceeds to block 2014 where it ends.

이제 도 20C를 참조하면, 어떻게 트랜잭션들이 원격 클라이언트들 사이에서 전파되는지에 대한 설명에 적합한 예시적인 네트워킹 환경이 설명된다. 상술한 바와 같이, 트랜잭션 매니저(910)는, 로컬에 저장된 문서들에 대한 상대적인 변경을 표현하는 트랜잭션들 또는 데이터 조각들이 어떠한 원격 리스너들에게 전파되도록 한다. 도 20C에 도시된 예에서, 클라이언트들(2080, 2082)와 함께 시작된 트랜잭션들은 서버측 데이터 센터에서 유지되는 XML 파일 시스템(2084)로 연속적으로 전송된다. 특히, 각 클라이언트들(2080, 2082)은 트랜잭션들(2086-2088 및 2090-2092)을 능동적으로 공유된 문서(2093)에 전파한다. 클라이언트측 캐시(2098)에서 로컬하게 수행된 문서 오브젝트들(2094 또는 2096)에 대한 어떠한 데이터 업데이트들은, 식별되고 XML 파일 시스템(2084)으로 전파되어, 클라이언트들(2080, 2082)이 실시간으로 데이터를 공유할 수 있다. Referring now to FIG. 20C, an exemplary networking environment suitable for an explanation of how transactions are propagated among remote clients is described. As discussed above, the transaction manager 910 allows transactions or pieces of data representing relative changes to locally stored documents to be propagated to any remote listeners. In the example shown in FIG. 20C, transactions initiated with the clients 2080 and 2082 are continuously transferred to the XML file system 2084, which is maintained in the server-side data center. In particular, each client 2080, 2082 propagates transactions 2086-2088 and 2090-2092 to actively shared document 2093. Any data updates to the locally performed document objects 2094 or 2096 in the client side cache 2098 are identified and propagated to the XML file system 2084 so that the clients 2080 and 2082 can send data in real time You can share.

이제 도 21을 참조하면, 어떻게 규칙들이 더욱 지능적인 컴포넌트들을 제공하기 위해 적용되는지에 대한 추가적인 설명이 제공된다. 데이터에 바인드될 때, 컴포넌트에 연관된 어떠한 규칙들은 데이터 모델에 고유한 네임스페이스(namespace)를 적용하고 할당한다. 일반적으로 설명하면, 규칙들은, 데이터 모델의 컨텐츠에 기초하여 제네릭 컴포넌트들이 해석하고, 학습하고, 적합한 동작을 취하도록 한다. 다시 말해, 컴포넌트를 이용하는 규칙은 특정 데이터 모델들을 위해 생성될 필요가 없다. 이에 관해, 상술한 바인드 핸들링 루틴(1600)(도 16)은 특정 컴포넌트가 규칙들을 이용하는지를 판단할 수 있다. 이 경우에, 도 21을 참조하여 설명된 설정 규칙 루틴(2100)은 새로운 컴포넌트의 데이터 바인딩에 연관된 규칙들을 적용하고 병합하기 위해 호출될 수 있다. 일 실시예에서, 컴포넌트의 규칙들의 고유한 XML 네임스페이스는 데이터 모델로 병합되고, 데이터 모델에 바인드된 컴포넌트들에게 용이하게 이용가능해진다. 다른 실시예에서, 컴포넌트에 연관된 규칙들은 원격에서 저장될 수 있으며, 웹 서비스들이나 추가적인 XML 문서들을 통해 접속가능할 수 있다.Referring now to FIG. 21, an additional description is provided of how rules are applied to provide more intelligent components. When bound to data, any rules associated with the component apply and assign namespaces that are unique to the data model. Generally speaking, rules allow generic components to interpret, learn, and take appropriate action based on the content of the data model. In other words, rules using components do not need to be created for specific data models. In this regard, the bind handling routine 1600 (FIG. 16) described above can determine whether a particular component uses rules. In this case, the configuration rule routine 2100 described with reference to FIG. 21 may be invoked to apply and merge the rules associated with the data binding of the new component. In one embodiment, the unique XML namespace of the rules of the component is merged into the data model and is readily available to the components bound to the data model. In another embodiment, the rules associated with the component may be stored remotely and accessible via Web services or additional XML documents.

도 21에서 설명되듯이, 설정 규칙 루틴(2100)은 블록(2102)에서 시작하며, 결정 블록(2104)에서, 적합한 문서에 대한 규칙 핸들러가 정의되었는지에 대해 결정된다. 이에 관해, 규칙 핸들러들은 서로 다른 컴포넌트들에 연관된 규칙들이 동일한 데이터에 관해서 실행될 수 있도록 한다. XML 문서에 바인드된 규칙 사용(rule-using) 컴포넌트 각각은 데이터 모델에서 유지되는 상응하는 규칙 핸들러에 로직(예를 들어, "규칙들")을 제공한다. 따라서, 규칙들을 이용하는 컴포넌트가 관련된 문서에 이미 바인드되었으면, 상응하는 규칙 핸들러는 존재하고, 루틴(2100)은 블록(2108)로 진행하며, 이하에서 상세히 설명된다. 이에 관해, 다수의 규칙 사용 컴포넌트들이 동일한 문서에 바인드되면, 동일한 규칙 핸들러는 모든 컴포넌트들에 대해 사용될 수 있다. 반대로, 규칙 사용 컴포넌트가 관련된 문서에 이미 바인드되어 있지 않으면, 루틴(2100)은 블록(2106)으로 진행한다. 도 21의 블록(2106)에서 상세히 설명되듯이, 새로운 규칙 핸들러가 동일한 하부 데이터에 바인드된 각 컴포넌트들의 규칙들을 수용하기 위해 생성된다.As illustrated in FIG. 21, the setting rule routine 2100 begins at block 2102, and at decision block 2104, a determination is made as to whether a rule handler for the appropriate document has been defined. In this regard, rule handlers allow rules associated with different components to be executed on the same data. Each of the rule-using components bound to an XML document provides logic (e.g., "rules") to the corresponding rule handler maintained in the data model. Thus, if the component using the rules has already been bound to the associated document, then there is a corresponding rule handler, and the routine 2100 proceeds to block 2108, which is described in detail below. In this regard, if multiple rule use components are bound to the same document, the same rule handler can be used for all components. Conversely, if the rule usage component is not already bound to the associated document, then routine 2100 proceeds to block 2106. As described in detail in block 2106 of FIG. 21, a new rule handler is created to accommodate the rules of each component bound to the same underlying data.

상술한 바와 같이, 현대 그래픽 기반 어플리케이션들에 의해 사용되는 종류의 제네릭 컴포넌트들의 한 세트가 제공된다. 규칙들을 정의함으로써, 본 발명에 의해 제공된 제네릭 컴포넌트들은 하부 데이터 모델에 대해 어떠한 것도 이해할 필요가 없다. 이에 관해, 도 8A는 파일 시스템에서 폴더들의 계층 구조를 시각적으로 도시하고, 폴더 이름들, 아이콘들 등을 포함하는 트리 컴포넌트(800)를 설명한다. 데이터 모델에서 유지되는 컨텐츠로 제네릭 트리 컴포넌트를 만드는(ppopulate) 로직을 제공하는 규칙들은 정의될 수 있다. 예를 들어, 본 발명의 측면들은, 문서의 각 요소들이 서로 다른 폴더를 표현하는 folders.xml 문서의 파일 시스템의 컨텐츠들을 설명할 수 있다. 식별자, 아이콘 등과 같은 특정 폴더들에 연관된 데이터는 폴더 요소 내 속성들에 따라 식별될 수 있다. 오직 예로서, 다음 규칙들은 도 8A에 도시된 트리 컴포넌트(800)에 디스플레이 하기 위한 folders.xml 문서 안의 컨텐츠를 해석하도록 정의될 수 있다.As described above, a set of generic components of the kind used by modern graphical applications is provided. By defining the rules, the generic components provided by the present invention need not understand anything about the underlying data model. In this regard, FIG. 8A illustrates a tree component 800 that visually illustrates the hierarchy of folders in the file system and includes folder names, icons, and the like. Rules that provide logic to create a generic tree component (ppopulate) from content maintained in the data model can be defined. For example, aspects of the present invention may describe the contents of the file system of the folders.xml document, where each element of the document represents a different folder. Data associated with particular folders, such as identifiers, icons, etc., may be identified according to attributes within the folder element. By way of example only, the following rules may be defined to interpret the contents in the folders.xml document for display in the tree component 800 shown in FIG. 8A.

<tree name = "folder tree"><tree name = "folder tree">

<rule match="folder" display=" @id"/><rule match = "folder" display = "@ id" />

<rule match="folder [@id ='email']'' display="@id" icon= <rule match = "folder [@ id = 'email'] '' display =" @ id "icon =

"icons/mailicon.png"/>"icons / mailicon.png" />

</tree></ tree>

이에 관해, "folder"의 매칭 속성과 "@id"의 디스플레이 속성을 갖는 첫번째 규칙 요소는 folder.xml 문서의 "id" 속성의 컨텐츠들이 폴더 이름으로 디스플레이되도록 한다. 따라서, 도 8A에 도시된 트리 컴포넌트(800)에서 폴더들에게 할당된 이름들은 규칙을 이용해서 정의될 수 있다. "folder[@id ='emair]"의 매칭 속성을 갖는 두번째 규칙 요소는 "email"의 이름 속성을 갖는 폴더들에 도 8A에 도시된 것과 같이 이메일 메세지들에 연관된 특정한 아이콘이 할당되도록 한다. 위에서 제공된 규칙들은 단순히 예시적인 것이며, 트리 컴포넌트(800)의 컨텐츠들을 만드는데 실제로 사용되는 로직의 서브셋만을 포함하는 것을 이해하여야 한다. folders.xml 문서의 구조가 수정되는 경우에, 컴포넌트의 규칙들은 그 변경을 설명하기 위해 용이하게 업데이트될 수 있다. 또한, 규칙 사용 컴포넌트들은 다른 데이터 업데이트들과 같은 방법으로 변경들을 통지 받는다. 특히, 이벤트 업데이트 오브젝트가 생성되고, 이하에서 상세히 설명될 데이터 업데이트 이벤트 통지 버스의 노티파이 리스너 루틴(notify listeners routine)(2200)을 이용하여 컴포넌트에게 변경들을 통지하는데 이용될 수 있다.  In this regard, the first rule element having a matching attribute of "folder" and a display attribute of "@id" causes the contents of the "id" attribute of the folder.xml document to be displayed as a folder name. Thus, the names assigned to the folders in the tree component 800 shown in FIG. 8A can be defined using rules. The second rule element with the matching attribute of "folder [@ id = 'emair]' causes folders with the name attribute of" email " to be assigned a particular icon associated with email messages as shown in FIG. 8A. It should be understood that the rules provided above are merely exemplary and include only a subset of the logic actually used to create the contents of the tree component 800. [ If the structure of the folders.xml document is modified, the rules of the component can be easily updated to account for the change. Rule-using components are also informed of changes in the same way as other data updates. In particular, an event update object may be created and used to notify the components of changes using the notify listeners routine 2200 of the data update event notification bus, which will be described in detail below.

다시 도 21을 참조하면, 데이터 모델에 바인드된 컴포넌트의 규칙들이 블록(2108)에 적용된다. 규칙 핸들러가 생성되면, 바인드 작업의 대상인 컴포넌트는 규칙들은 적합한 규칙 핸들러에 제공한다. 이에 관해, 규칙 핸들러는 데이터 모델에 대한 확장(extension) 역할을 하며, 동일한 문서에 구석되는 서로 다른 데이터 바인딩 컴포넌트들의 규칙들을 관리한다. 일 실시예에서, 네임스페이스들은 컴포넌트들 또는 오브젝트들을 이용하여 서로 다른 규칙의 용어들을 분리하는 데이터 모델에 할당될 수 있다. 네임스페이스들을 이용하여 컴포넌트 규칙을을 할당하고 관리함으로써, 규칙 핸들러는, 데이터 모델 내에서 충돌들을 회피하는 방법으로 모든 컴포넌트 규칙들을 실행할 수 있다.Referring again to Figure 21, the rules of the component bound to the data model are applied to block 2108. [ When a rule handler is created, the component that is the subject of the bind operation provides the rules to the appropriate rule handler. In this regard, the rule handler acts as an extension to the data model and manages the rules of the different data binding components that are nested within the same document. In one embodiment, namespaces may be assigned to a data model that separates terms of different rules using components or objects. By assigning and managing component rules using namespaces, the rule handler can execute all the component rules in a way that avoids conflicts within the data model.

블록(2108)에서 새로운 규칙들을 적용할 때, 규칙 핸들러는 호출되어 관련된 문서에 바인드된 각 컴포넌트의 규칙들이 실행되도록 한다. 다시 말해, 잠재적으로 다수의 데이터 바인딩 컴포넌트들에 연관된 규칙들은 데이터 모델의 현재 버전에 관해서 실행된다. 이후, 모든 규칙들이 실행되면, 바인드 작업의 대상인 컴포넌트는 규칙 핸들러에 의해 상응하게 할당된 네임스페이스를 인지하게 된다. 특히, 규칙 핸들러는 컴포넌트의 규칙들에 할당된 데이터 모델에서 네임스페이스를 식별하는 새로운 데이터 바인딩에 연관된 컴포넌트에 대한 참조를 패스한다. When applying the new rules at block 2108, the rule handler is invoked to cause the rules of each component bound to the associated document to be executed. In other words, the rules associated with potentially multiple data binding components are executed with respect to the current version of the data model. Thereafter, when all the rules are executed, the component that is the subject of the bind operation is aware of the correspondingly assigned namespace by the rule handler. In particular, the rule handler passes a reference to the component associated with the new data binding that identifies the namespace in the data model assigned to the rules of the component.

설정 규칙 루틴(2100)의 블록(2110)에서, 바인드 작업의 대상인 컴포넌트에 연관된 규칙들은 다른 컴포넌트들의 규칙들과 함께 병합된다. 개발자들은, 본 발명에 의해 제공된 XML 기반 랭귀지들을 이용하여 컴포넌트의 규칙들의 시맨틱 로직을 정의할 수 있다. 예로서, 규칙은 XPath 익스프레션들, UIXML 로직 참조들, 다른 컴포넌트들을 설명하는 요소들, 변수들, 앨리어스들 및 규칙 네임스페이스의 저장소 외부의 데이터에 대한 다른 참조들을 포함할 수 있다. 이에 관해, 서로 다른 컴포넌트들의 데이터 바인딩들은, 연관된 어플리케이션과 규칙 로직 덕분에 이행성(transive) 관계를 가질 수 있다. 따라서, 동일한 하부 데이터 상에서 동작하는 서로 다른 컴포넌트들의 규칙들은 데이터 모델에서 또한 유지된다. 컴포넌트가 그의 네임스페이스를 인지하게 되면, 컴포넌트에 새로운 데이터를 설정하는 호출이 생성된다. 이 경우에, 컴포넌트상에 새로운 데이터를 설정하는 호출은 컴포넌트 규칙의 시맨틱 로직이 서로 다른 컴포넌트들에 연관된 규칙들로부터 분리된 네임스페이스의 데이터 모델에 포함되도록 한다.  At block 2110 of the configuration rule routine 2100, the rules associated with the component that is the subject of the bind operation are merged with the rules of other components. Developers can define the semantic logic of the rules of the component using the XML-based languages provided by the present invention. By way of example, a rule may include XPath expressions, UIXML logic references, elements describing other components, variables, aliases, and other references to data outside the repository of the rule namespace. In this regard, the data bindings of the different components may have a transitive relationship due to the associated application and rule logic. Thus, the rules of the different components operating on the same underlying data are also maintained in the data model. When a component recognizes its namespace, a call is made to set new data in the component. In this case, the call to set up new data on the component causes the semantic logic of the component rule to be included in the data model of the namespace, separate from the rules associated with the different components.

블록(2112)에서, 데이터 모델에 반영된 데이터 업데이트가 어떠한 데이터 업데이트 리스너들에게 전파되도록 하는 호출이 생성된다. 상술한 바와 같이, 문서 오브젝트는 데이터 업데이트에 대한 응답으로 통지되는 리스너들의 목록을 유지한다. 데이터 모델에 새로운 규칙들이 추가되면, 블록(2010)에서 발생하듯이, 상응하는 리스너들은 데이터 업데이트를 통지받는다. 이에 관해, 리스너들에게 업데이트를 통지하는 로직은 이하 도22를 참조하여 상세히 설명된다. 이후, 설정 규칙 루틴(2100)은 종료하는 블록(2114)으로 진행한다. At block 2112, a call is generated that causes the data updates reflected in the data model to propagate to some data update listeners. As discussed above, the document object maintains a list of listeners that are notified in response to data updates. When new rules are added to the data model, the corresponding listeners are notified of the data update, as occurs at block 2010. In this regard, the logic for notifying the listeners of updates is described in detail below with reference to FIG. The set rule routine 2100 then proceeds to block 2114 where it ends.

위의 예에서, 컴포넌트가 데이터 모델에서 유지되는 컨텐츠들을 자동적으로 디스플레이하도록 하는 바인딩들이 정의되었다. 바인딩들을 이 방법으로 이용함으로써, 개발자들은 유저 인터페이스 컴포넌트 상에서 데이터를 설정하고 업데이트하기 위한 로직을 어플리케이션 코드에서 제공해야 하는 것에서 해방된다. 그러나 위의 예들은 매우 단순화되었으며, 본 발명의 한 예시적인 측면을 반영한 것에 불과한다. 이에 관해, 바인딩들과 상응하는 XBind들은 복잡한 기능성을 구현을 가능하게 한다. In the above example, bindings have been defined that allow the component to automatically display the content maintained in the data model. Using bindings in this way, developers are free from having to provide logic in the application code to set and update data on user interface components. However, the above examples have been greatly simplified and merely reflect one exemplary aspect of the present invention. In this regard, bindings and corresponding XBinds enable the implementation of complex functionality.

일 실시예에서, 본 발명은, 현재 상태를 설명하고, 저장하고, 통신하기 위한 오브젝트에 대한 표준화된 수단을 제공한다. 예로서, 도 8A는 사용자들이 찾아가고, 파일 시스템에서 폴더들을 선택할 수 있도록 하는 트리 컴포넌트(800)을 설명한다. 사용자 선택은, 네트워크 오퍼레이팅 환경에서 표준화된 변수 포맷을 제공하는 XBind에서 설명될 수 있다. 도 8A에 도시된 예에서, 사용자는 "video_encoding"으로 명명된 폴더에 찾아가기 위해 일련의 선택을 한다. 이 특정 폴더의 선택에 관한 트리 컴포넌트(800)의 상태는 다음 XBind에서 설명될 수 있다.In one embodiment, the present invention provides standardized means for objects to describe, store, and communicate current state. By way of example, FIG. 8A illustrates a tree component 800 that allows users to browse and select folders in the file system. User selection can be described in XBind, which provides a standardized variable format in a network operating environment. In the example shown in Fig. 8A, the user makes a series of selections to browse to a folder named "video_encoding ". The state of the tree component 800 with respect to the selection of this particular folder can be described in the following XBind.

URL: folder s. xmlURL: folder s. xml

XPath: /XPath: /

Selection: /folders/research/work/video_encoding/Selection: / folders / research / work / video_encoding /

위에 제공된 예는 단순화되었으며 설명하는 목적으로만 이용된다. 실제 실시예에서, 트리 컴포넌트(800)을 설명하는 XBind는 실제로 다음과 같다. The examples provided above are simplified and are used for illustrative purposes only. In an actual embodiment, XBind describing the tree component 800 is actually as follows.

URL: folders.xml URL: folders.xml

XPath: /XPath: /

Selection: /fs:folder/fs:folder[@name = 'research']/fs:folder[@name = 'work']/fs:folder[@name = 'videoencoding] Fs: folder [@name = 'videoencoding'] / fs: folder [@name = 'work'

여기서 설명된 모든 XBind는 어디에 데이터가 저장되었는지에 상관없이 데이터를 참조하는데 이용될 수 있다. 따라서 하부 데이터가 네트워크 위치에서 유지되면, 상기 선택은 다음 XBind에서 설명된다.All XBinds described here can be used to refer to data regardless of where the data is stored. Thus, if the underlying data is maintained at the network location, the selection is described in the next XBind.

URL: http://www.networkdomain.com.folders.xmlURL: http: //www.networkdomain.com.folders.xml

Base path: / Base path: /

Selection: /folders/research/work/video_encoding/Selection: / folders / research / work / video_encoding /

어떤 경우에, 다른 오브젝트들은 동작들을 수행하거나 어플리케이션 기능성을 구현하기 위한 기초로서 사용자 선택을 설명하는 XBind를 자주 이용한다. 도 8B에 설명되듯이, 목록 컴포넌트(850)는 트리 컴포넌트(800)으로부터 만들어진 사용자 선택에 기초할 수 있는 파일 시스템 데이터를 디스플레이 한다. 예를 들어, 목록 컴포넌트(850)는 트리 컴포넌트(800)에서 선택된 폴더에 기초하여 문서들(예를 들어, "whitepaper.txt," "testresults.xml," 및 "blog.html")을 디스플레이하도록 설정된다. 선택을 설명하는 XBind는 트리 컴포넌트(800)에 의해 공유되는 데이터 모델에 대한 출력이다. 차례로, 이 XBind는 다른 리스닝 오브젝트들(예를 들어, 목록 컴포넌트(850))에 입력으로 제공될 수 있다. 따라서, 한 오브젝트(예를 들어, 목록 컴포넌트(850))에 제공된 입력은 다른 오브젝트로부터 데이터 모델에 이미 계속되는 출력에 끼워진다. XBind의 구현은, 데이터 모델로부터 접속되는 값들이 이전 I/O의 값들에 의존하는 이 I/O의 끼우기를 가능하게 하는 제네릭 변수 포맷을 제공한다. 이에 관해, XML 가상 머신을 구현하는 오브젝트들의 내부 연산 로직은 다른 오브젝트들과 시스템들과의 상호작용으로부터 분리된다. 일 측면에서, XBind들은, 상호작용들을 모델링하고 이를 분리하도록 하는데 이용되는 표준화된 변수 포맷을 제공한다. 본 발명에 의해 제공된 XBind들은 요청된 데이터에 대한 값들을 포함하지 않는다. 대신에, XBind들은 데이터를 획득할 수 있는 위치들을 참조함으로써, 서로 다른 오브젝트들과 시스템들이 동일한 하부 데이터를 가지고 동작할 수 있게 한다. 또한, XBind들은, XML 기반 시스템 사용을 위해 변형되거나, 병합되거나, 직렬화될 수 있다. 여기서 설명된 것처럼, XBind 는 XBind의 선택 측면을 이용하여 오브젝트 상태 정보의 전달자(carrier) 역할을 한다. 특히, XBind들은 오브젝트 상태 정보가 획득될 수 있는 위치들을 참조하므로, 상태 정보는 참조되는 정보나 오브젝트들을 바꾸거나 변경하지 않고 통신될 수 있다.  In some cases, other objects frequently use XBind to describe user selections as the basis for performing actions or implementing application functionality. As illustrated in FIG. 8B, the list component 850 displays file system data that may be based on user selections made from the tree component 800. For example, list component 850 may be configured to display documents (e.g., "whitepaper.txt," "testresults.xml," and "blog.html") based on the folder selected in tree component 800 Respectively. The XBind describing the selection is an output for the data model shared by the tree component 800. [ In turn, this XBind may be provided as input to other listening objects (e.g., list component 850). Thus, the input provided to one object (e. G., List component 850) is fitted to an output that already follows the data model from the other object. An implementation of XBind provides a generic variable format that enables the insertion of this I / O, where the values to be connected from the data model depend on the values of the previous I / O. In this regard, the internal arithmetic logic of the objects implementing the XML virtual machine is separate from the interaction of other objects with the systems. In one aspect, XBinds provide a standardized variable format that is used to model and isolate interactions. The XBinds provided by the present invention do not include values for the requested data. Instead, XBinds refer to locations where data can be acquired, allowing different objects and systems to operate with the same underlying data. In addition, XBinds can be modified, merged, or serialized for use with XML-based systems. As described here, XBind serves as a carrier for object state information using the optional aspects of XBind. In particular, since XBinds refer to locations where object state information can be obtained, the state information can be communicated without changing or changing the information or objects referenced.

사용자가 파일 시스템을 찾아갈 때, 트리 컴포넌트(800)는, 선택을 설명하기 위해 XBind의 모든 차원들을 이용할 수 있다. 예를 들어, 사용자가 트리 컴포넌트(800)에서 "whitepaper.txt" 및 "testresults.xml" 문서들을 모두 선택하면, 선택은 다음 XBind에서 설명될 수 있다. When the user browses the file system, the tree component 800 may use all the dimensions of XBind to illustrate the selection. For example, if the user selects both "whitepaper.txt" and "testresults.xml" documents in the tree component 800, the selection can be described in the next XBind.

URL: folder s. xmlURL: folder s. xml

Base path: /folders/research/work/video_encoding/Base path: / folders / research / work / video_encoding /

Selection: /folders/research/work/video_encoding/document[ @ name = 'testresults.xml'] Selection: / folders / research / work / video_encoding / document [@ name = 'testresults.xml']

/folders/research/work/video_encoding//document[@name =     / folders / research / work / video_encoding // document [@name =

'whitepaper.txt']'whitepaper.txt']

다시, 위의 예가 예시적인 목적들을 위해 이용되며 본 발명의 실제 실시예를 표현하지는 않는다. 이 XBind의 URL은, 파일 시스템을 설명하는 하부 XML 문서를 참조하며, 베이스 경로는 바인딩을 "video_encoding" 폴더에 한정한다. 또한, 이 XBind의 선택은, 사용자에 의해 선택된 각 문서를 식별하는 XPath 익스프레션의 어레이를 포함한다. 위에서 제공된 설명과 유사하게, 이 XBind는 동작들을 수행하기 위해 다른 오브젝트들에 대한 기준 역할을 할 수 있다. 예로서, 사용자는 선택된 문서들을 삭제하는 이벤트를 생성한다. 트리 컴포넌트(800)의 선택 상태를 설명하는 위의 XBind는 파일 삭제를 구현하는 시스템에 입력으로 제공된다. Again, the above example is used for illustrative purposes and does not represent an actual embodiment of the present invention. The URL of this XBind refers to the underlying XML document that describes the file system, and the base path restricts the binding to the "video_encoding" folder. The selection of XBind also includes an array of XPath expressions that identify each document selected by the user. Similar to the description provided above, this XBind can serve as a reference for other objects to perform actions. As an example, the user creates an event to delete selected documents. The above XBind describing the selection state of the tree component 800 is provided as input to the system implementing the file deletion.

이전에 나타난 바와 같이, 컴포넌트들과 다른 오브젝트들은 데이터 모델에서의 변경에 대한 응답으로 통지된다. 본 발명의 측면들은 컴포너트들을 특정 문서 상에서 수행된 데이터 업데이트들에 대한 리스너로 등록하도록 한다. 데이터 업데이트가 발생하면, 문서 오브젝트에 등록된 각 리스너는 데이터 업데이트를 통지 받고 그에 따라 유저 인터페이스를 업데이트할 수 있다. 이제 도 22를 참조하면, 데이터 업데이트들을 리스닝 컴포넌트들에 전파하는 노티파이 리스너 루틴(2200)이 설명된다. 노티파이 리스너 루틴(2200)이 리스닝 컴포넌트 오브젝트들을 참조하여 설명되나, 다른 오브젝트들도 데이터 업데이트 리스너들이 될 수 있으므로 이는 단순한 예시이다. As previously indicated, components and other objects are notified in response to changes in the data model. Aspects of the present invention allow components to be registered as listeners for data updates performed on a particular document. When a data update occurs, each listener registered in the document object is notified of the data update and can update the user interface accordingly. Referring now to FIG. 22, a notify listener routine 2200 that propagates data updates to listening components is described. Although the notifier listener routine 2200 is described with reference to listening component objects, this is a simple example as other objects may also be data update listeners.

도 22에서 설명되듯이, 노티파이 리스너 루틴(2200)는, 데이터 업데이트가 XML 문서 상에서 수행되는 블록(2202)에서 시작한다. 위의 예에서 설명되듯이, 데이터 모델에 대한 데이터 업데이트들은 서로 다른 환경들에서 수행될 수 있다. 데이터 바인딩 컴포넌트와 상호작용할 때, 사용자는 컴포넌트에 의해 데이터 모델에서 자동적으로 계속되는 입력을 생성할 수 있다. 한편, 데이터 업데이트는 변경 작업에서 정의된 어플리케이션 로직 실행의 결과로서 수행될 수 있다. 또한, XML 가상 머신을 구현하는 오브젝트들은, 공유 데이터 모델과 바인딩들을 통신 인터페이스로서 이용할 때, 데이터 업데이트를 수행한다. 예를 들어, 컴포넌트의 규칙들의 시맨틱 설명은, 서로 다른 컴포넌트들이 동일한 하부 데이터를 해석하도록 하는 데이터 모델에 계속된다.  As illustrated in FIG. 22, the notifier listener routine 2200 begins at block 2202 where data updates are performed on the XML document. As described in the example above, data updates to the data model can be performed in different environments. When interacting with a data binding component, the user can generate inputs that are automatically followed by the component in the data model. On the other hand, the data update can be performed as a result of application logic execution defined in the change operation. In addition, objects implementing the XML virtual machine perform data updates when using the shared data model and bindings as communication interfaces. For example, the semantic description of the rules of a component follows a data model that allows different components to interpret the same underlying data.

블록(2204)에서, 데이터 업데이트가 상응하는 규칙 핸들러로 문서 상에서 수행되었는지 여부가 판단된다. 규칙 사용 컴포너트가 문서에 이전에 바인드되지 않아서 규칙 핸들러가 정의되지 않으면, 블록(2204)에서 수행된 테스트의 결과는 "no"이고 노티파이 리스너 루틴(2200)은 블록(2208)로 진행하며, 이하에서 상세히 설명된다. 반대로, 관련된 문서가 상응하는 규칙 핸들러를 가지면, 노티파이 리스너 루틴(2200)는 블록(2206)으로 진행한다.At block 2204, it is determined whether the data update was performed on the document with the corresponding rule handler. If the rule usage component is not previously bound to the document and the rule handler is undefined, the result of the test performed at block 2204 is "no ", and the notifier listener routine 2200 proceeds to block 2208, Will be described in detail below. Conversely, if the associated document has a corresponding rule handler, then the notify listener routine 2200 proceeds to block 2206. [

블록(2206)에서, 데이터 업데이트를 경험한 문서에 연관된 규칙 핸들러가 호출된다. 규칙 핸들러를 호출함으로써, 로직은, 각 데이터 바인딩 컴포넌트들에 의해 이해되는 규칙 네임스페이스는 현재임을 보장하고 데이터 모델의 무결성을 지키기 위해 구현된다. 이에 관해, 블록(2002)에서 수행되는 데이터 업데이트는 규칙 핸들러에 로직을 추가하거나 수정하는 것을 포함할 수 있다. 예를 들어, 새로운 데이터 바인딩이 정의되면, 설정 규칙 루틴(2100)(도 21)은, 데이터 바인딩에 연관된 새 컴포넌트의 규칙들이 다른 컴포넌트들의 규칙들과 함께 데이터 모델에 병합되도록 한다. 동일한 하부 문서에 바인드된 어떠한 리스닝 컴포넌트들은 노티파이 리스너 루틴(2200)내에서 규칙 핸들러에 대한 데이터 업데이트에 대해서 통지받는다.  At block 2206, the rule handler associated with the document experiencing the data update is called. By calling the rule handler, the logic is implemented to ensure that the rule namespace understood by each data binding component is current and to ensure the integrity of the data model. In this regard, data updates performed in block 2002 may include adding or modifying logic to the rule handler. For example, if a new data binding is defined, the configuration rule routine 2100 (FIG. 21) causes the rules of the new component associated with the data binding to be merged with the rules of the other components into the data model. Any listening components bound to the same underlying document are notified of data updates to the rule handler within the notify listener routine 2200.

위에서 설명된 설정 규칙 루틴(2100)(도 21)에서, 규칙 핸들러는 현재 버젼의 데이터 모델에 반영된 모든 규칙이 실행되도록 한다. 이후 새로운 데이터 바인딩에 연관된 컴포넌트는, 데이터 모델에서 컴포넌트의 상응하는 규칙들에 관한 현재 네임스페이스 정보를 제공받는다. 그러나, 새로운 규칙의 추가가 다른 규칙 사용 컴포넌트들의 바인딩들에 영향을 줄 수 있으므로, 업데이트 통지는 이 규칙 사용 컴포넌트들에 또한 제공된다. 따라서, 블록(2206)에서 호출될 때, 규칙 핸들러는 현재 버젼의 데이터 모델에 반영된 모든 규칙들이 실행되도록 한다. 결과적으로, 규칙 핸들러는 현재 네임스페이스 정보와 최신 규칙들을 규칙 사용자인 어떠한 리스닝 컴포넌트에 제공할 수 있다. 교대로, 이 새로운 데이터는 컴포넌트 상에 설정되므로, 새로운 규칙들의 데이터 업데이트가 리스닝 컴포넌트들의 데이터 바인딩에 반영되도록 한다.In the configuration rule routine 2100 (FIG. 21) described above, the rule handler causes all rules reflected in the current version of the data model to be executed. The components associated with the new data binding are then provided with current namespace information regarding the corresponding rules of the components in the data model. However, since the addition of a new rule may affect the bindings of other rule-using components, update notification is also provided to these rule-using components. Thus, when invoked at block 2206, the rule handler causes all rules reflected in the current version of the data model to be executed. As a result, the rule handler can provide current namespace information and up-to-date rules to any listening component that is the rule user. Alternately, this new data is set on the component, so that the data updates of the new rules are reflected in the data binding of the listening components.

규칙 핸들러가 종료하면, 리스닝 컴포넌트에 연관된 "Update()" 메소드가 블록(2208)에서 호출된다. 컴포너트들은 컴포넌트 API들에 따라 정의되었으므로, "Update()" 메소드 내에서 수행되는 로직은 설정 가능하다. 다시 말해, 각 컴포넌트는 "Update()" 메소드 내에서 동일한 로직을 구현하지 않는다. 대신에, 개발자들은 이 로직을 채택하고 XML 가상 머신의 능력을 효율적으로 확장하는 새로운 컴포넌트들을 생성할 수 있다. 따라서, 이하에서 제공된 설명은 본 발명에 의해 제공된 컴포넌트들을 참조하여 이루어졌으며, "Update()" 메소드 내에서 구현될 수 있는 로직의 단순한 대표이다. When the rule handler terminates, the "Update ()" method associated with the listening component is called at block 2208. Since components are defined according to component APIs, the logic to be performed within the "Update ()" method is configurable. In other words, each component does not implement the same logic within the "Update ()" method. Instead, developers can adopt this logic and create new components that efficiently extend the capabilities of the XML virtual machine. Thus, the description provided below is made with reference to the components provided by the present invention and is merely representative of the logic that may be implemented within the "Update ()" method.

판단 블록(2210)에서, 초기 데이터 업데이트가 블록(2202)에서 수행되었는지 여부에 관해 판단된다. 일 실시예에서, 데이터 업데이트들은 트랜잭션 매니저(910)을 통해 지시된다. 데이터 업데이트를 구현하기 위한 아토믹 유닛을 포현하는 하나 이상의 이벤트 업데이트 오브젝트들 생성되고 이후에 리스닝 컴포넌트의 "Update()" 메소드(블록(2208)에서 수신함)에 대한 호출시 제공될 수 있다. 일실시예에서, 이벤트 업데이트 오브젝트가 "Update()" 메소드에 대한 호출시 수신되면, 데이터 업데이트는 최초 업데이트가 아니며, 노티파이 리스너 루틴(2200)은 블록(2214)로 진행하며, 이하에서 상세히 설명된다. 이벤트 업데이트 오브젝트가 "Update()" 메소드에 대한 호출시 수신되지 않으면, 이후 루틴(2200)은 최초 데이터 업데이트가 실행되고 있다고 판단하며, 블록(2212)로 진행한다.At decision block 2210, it is determined whether an initial data update has been performed at block 2202. [ In one embodiment, data updates are directed through the transaction manager 910. One or more event update objects that embody the atomic unit for implementing the data update may be created and provided at a subsequent call to the "Update ()" method of the listening component (received at block 2208). In one embodiment, if an event update object is received upon a call to the "Update ()" method, the data update is not the original update and the notify listener routine 2200 proceeds to block 2214, do. If the event update object is not received upon a call to the "Update ()" method, then the routine 2200 determines that the initial data update is being performed and proceeds to block 2212.

블록(2212)에서, 컴포넌트의 유저 인터페이스는, 컴포넌트에 바인드된 하부 데이터의 완전한 표현을 이용하여 시각적으로 렌더링된다. 블록(2212)에 닿으면, 최초 데이터 업데이트가 수행되며, 컴포넌트 상의 모든 데이터 셋은 컴포넌트의 유저 인터페이스에 반영되어야 한다. 이에 관해 XML 포맷 데이터가 컴포넌트의 유저 인터페이스에 렌더링되게 하는 루틴은 도 23을 참조하여 이하에서 상세히 설명된다. 그러나, 어떻게 렌더링이 수행되는가는 개발자의 선택이며, 컴포넌트 API들에 의해 지시되지 않음이 이해되어야 한다. 이하에서 상세히 설명되듯이, 렌더링은 XSLT, JavaScript, HTML, VML/SVG or Adobe™ Flash를 포함하는, 그러나 여기에 한정되지는 않는 다양한 기술들에 의해 수행될 수 있다.At block 2212, the user interface of the component is visually rendered using a complete representation of the underlying data bound to the component. Upon reaching block 2212, an initial data update is performed, and all datasets on the component must be reflected in the user interface of the component. The routine for causing the XML format data to be rendered on the user interface of the component is described in detail below with reference to FIG. However, it should be understood that how rendering is performed is the developer's choice, and is not dictated by component APIs. As described in detail below, rendering can be performed by a variety of techniques including, but not limited to, XSLT, JavaScript, HTML, VML / SVG or Adobe Flash.

상술한 바와 같이, 하나 이상의 이벤트 업데이트 오브젝트들이 리스닝 컴포넌트의 "Update()" 메소드가 호출될 때 제공된다. 도 22에서 설명되듯이, 데이터 업데이트를 설명하는 아토믹 유닛을 표현하는 수신된 이벤트 업데이트 오브젝트는 블록(2212)에서 프로세싱을 위해 선택된다. 일 실시예에서, 하나 이상의 업데이트 오브젝트들에서 표현된 데이터 업데이트가 리스닝 컴포넌트의 유저 인터페이스에 반영되도록 하는 로직이 구현된다. As described above, one or more event update objects are provided when the "Update ()" method of the listening component is called. As illustrated in FIG. 22, a received event update object representing an atomic unit describing a data update is selected for processing in block 2212. In one embodiment, logic is implemented such that the data updates represented in one or more update objects are reflected in the user interface of the listening component.

판단 블록(2214)에서, 선택된 이벤트 업데이트 오브젝트가 리스닝 컴포넌트에 영향을 미치는 데이터 업데이트를 표현하는지 여부가 판단된다. 상술한 바와 같이, 데이터 업데이트가 시작된 컴포넌트나 작업은, 데이터 업데이트에 의해 영향을 받는 데이터 모델내의 위치를 참조하는 XBind를 제공한다. 데이터 모델에 수행된 변경을 설명하는 이 변수는 각 리스닝 컴포넌트에 전파되는 이벤트 업데이트 오브젝트들에 포함되어 있다. 이에 관해, XBind는 리스닝 컴포넌트의 유저 인터페이스에 대한 데이터의 바인딩을 설명하는데도 이용된다. 일 실시예에서, 리스닝 컴포넌트의 데이터 바인딩을 설명하는 XBind는 데이터 업데이트를 설명하는 제공된 XBind와 비교될 수 있다. 공동 변수 포맷(예를 들어, XBind)의 사용은 리스닝 컴포넌트가 비교를 수행하고 컴토넌트의 유저 인터페이스가 데이터 업데이트에 의해 영향을 받는지 여부를 판단하도록 한다. 이 비교의 결과들이 리스닝 컴포넌트들이 데이터 업데이트에 영향을 받지 않는다고 나타내면, 노티파이 리스너 루틴(2200)은 블록(2222)로 진행하며, 이하에서 상세히 설명된다. 반대로, 리스닝 컴포넌트의 유저 인터페이스의 데이터 바인딩이 데이터 업데이트에 의해 영향을 받으면, 노티파이 리스너 루틴(2200)은 블록(2216)으로 진행한다.At decision block 2214, it is determined whether the selected event update object represents a data update that affects the listening component. As discussed above, the component or task that initiated the data update provides XBind that refers to the location in the data model that is affected by the data update. This variable, which describes the changes made to the data model, is contained in the event update objects that are propagated to each listening component. In this regard, XBind is also used to describe the binding of data to the user interface of the listening component. In one embodiment, the XBind describing the data binding of the listening component may be compared to the provided XBind describing the data update. The use of a common variable format (e.g., XBind) allows the listening component to perform comparisons and determine whether the user interface of the component is affected by data updates. If the results of this comparison indicate that the listening components are not affected by the data update, then the notify listener routine 2200 proceeds to block 2222, which is described in detail below. Conversely, if the data binding of the user interface of the listening component is affected by the data update, the notify listener routine 2200 proceeds to block 2216. [

일 실시예에서, 본 발명은 컴포넌트의 유저 인터페이스의 시각적 디스플레이에 대한 부분적 업데이트들을 지원한다. 블록(2216)에서, 부분적 업데이트가 리스닝 컴포넌트들에 의해 수행될 수 있는지 여부가 판단된다. 이에 관해, 로직이 부분적 업데이트들을 지원하는 "Update()" 메소드 안에서 제공되면, 노티파이 리스너 루틴(2200)은 블록(2220)으로 진행하며, 이하에서 상세히 설명된다. 반대로, 리스닝 컴포넌트가 부분적 업데이트들을 지원하지 않으면, 노티파이 리스너 루틴(2200)은 블록(2218)로 진행하며, "Update()" 메소드는 컴포넌트의 유저 인터페이스가 컴포넌트의 데이터 바인딩에 반영된 모든 데이터에 기초하여 렌더링되도록 한다. 이에 관해, XML 포맷이 컴포넌트의 유저 인터페이스 상에서 렌더링되도록 하는 루틴은 도 23을 참조하여 이하에서 설명된다. In one embodiment, the invention supports partial updates to the visual display of the user interface of the component. At block 2216, it is determined whether the partial update can be performed by the listening components. In this regard, if the logic is provided in an "Update ()" method that supports partial updates, the notify listener routine 2200 proceeds to block 2220, described in detail below. Conversely, if the listening component does not support partial updates, then the notify listener routine 2200 proceeds to block 2218, where the "Update ()" method is based on all data for which the user interface of the component is reflected in the data binding of the component . In this regard, the routine for causing the XML format to be rendered on the user interface of the component is described below with reference to FIG.

노티파이 리스너 루틴(2200)의 블록(2220)에서, 컴포넌트의 유저 인터페이스에 대한 부분적 업데이트가 수행된다. 부분적 업데이트들이 지원되면, 컴포넌트들 데이터 바인딩에서 데이터 업데이트에 의해 영향을 받는 데이터만이 부분적 업데이트를 수행하기 위해 이용된다. 제공된 XBind를 이용하여, 블록(2220)에서, 이 데이터는 식별될 수 있으며, 컴포넌트 상에 설정될 수 있다. 컴포넌트의 "Update()" 메소드는 컴포넌트의 유저 인터페이스가 컴포넌트들 데이터 바인딩에 이제 반영된 부분적 업데이트에 기초하여 렌더링되도록 한다. At block 2220 of the notify listener routine 2200, a partial update to the user interface of the component is performed. If partial updates are supported, only the data affected by the data update in the components data binding is used to perform the partial update. With the provided XBind, at block 2220, this data can be identified and set on the component. The component's "Update ()" method allows the user interface of the component to be rendered based on the partial update now reflected in the components data binding.

판단 블록(2222)에서, 추가 업데이트가 컴포넌트의 유저 인터페이스에 반영되어야 하는지에 대해 판단된다. 따라서, "Update()" 메소드 호출시 수신된 이벤트 오브젝트들이 이전에 선택되지 않았으면, 루틴(2200)은 블록(2212)로 진행하며, 블록들(2212-2220)은 각 이벤트 업데이트 오브젝트가 선택되고 처리될 때까지 반복된다. 이후, 데이터 업데이트에서 표현된 모든 변경들이 컴포넌트의 유저 인터페이스에 반영되면, 루틴(2200)은 종료하는 블록(2224)로 진행한다. At decision block 2222, it is determined whether additional updates should be reflected in the user interface of the component. Thus, if the event objects received at the time of the "Update ()" method call were not previously selected, the routine 2200 proceeds to block 2212 where blocks 2212-2220 select each event update object It is repeated until it is processed. Thereafter, if all changes represented in the data update are reflected in the user interface of the component, the routine 2200 proceeds to block 2224 where it terminates.

도 4A-B를 참조하여 상술한 바와 같이, 네트워크 오퍼레이팅 시스템은 클라이언트 컴퓨터 상에서, 독립 어플리케이션이나 머신 오퍼레이팅 시스템처럼, 웹 브라우저의 컨텍스트 내에서 구현될 수 있다. 이에 관해, 어플리케이션의 컴포넌트들과 다이얼로그들을 그래픽적으로 렌더링하고 초기화하는 프로세싱을 수행하는 렌더링 루틴(2300)은 도 23을 참조하여 설명된다. 아래 특정 웹 브라우저 기술들이 특별히 참조되지만, 본 발명은 웹 브라우저 없이도 구현될 수 있다는 것이 이해되어야 한다. 또한, 다른 실시예에서, 렌더링 루틴(2300)은 브라우저 특정 변형들(browser-specific variations)을 설명하기 위해 다르게 구현될 수도 있다. 따라서, 도 23을 참조하여 이하에서 제공된 설명은 단지 예시적이며 다양한 플랫폼들에서 다르게 수행될 수 있다.As described above with reference to Figures 4A-B, a network operating system may be implemented on a client computer, in the context of a web browser, such as an independent application or a machine operating system. In this regard, a rendering routine 2300 that performs processing to graphically render and initialize components and dialogs of an application is described with reference to FIG. It should be understood that although specific web browser technologies below are specifically referenced, the present invention may be implemented without a web browser. Further, in other embodiments, the rendering routine 2300 may be implemented differently to illustrate browser-specific variations. Thus, the description provided below with reference to Fig. 23 is merely exemplary and can be performed differently on various platforms.

도 23에서 설명되듯이, 렌더링 루틴(2300)은, 뷰 오브젝트가 인스턴스화되고 새로운 어플리케이션 뷰를 렌더링하도록 호출된 블록(2302)에서 시작한다. 상술한 바와 같이, 본 발명에 의해 제공된 데이터 종류 인식자는, UI XML 문서가 오픈되면, 새로운 뷰 오브젝트가 인스턴스화되도록 한다. 뷰 오브젝트는, 블록(2304)에서, 새로운 다이얼로그 오브젝트를 획득하는 요청을 생성한다. 일반적으로 설명하면, 다이얼로그는 어플리케이션의 컴포넌트들에 대한 프레임 역할을 하며, 어플리케이션의 뷰의 시각적 표현을 축소(minimizing), 확대(expanding) 및 조작(manipulating)하기 위한 제어들을 포함한다. 일 실시예에서, 다이얼로그 오브젝트들을 재활용하도록 설정된 다이얼로그 매니저가 제공되어 소모되는 메모리의 양을 감소시킨다. 따라서, 이전에 생성된 다이얼로그 오브젝트가 더 이상 이용되지는 않으나 여전히 메모리에서 유지되고 있다면, 존재하고 있는 다이얼로그 오브젝트는 새로운 어플리케이션 뷰에 재할당된다.23, the rendering routine 2300 begins at block 2302, where the view object is instantiated and called to render a new application view. As described above, the data type recognizer provided by the present invention causes a new view object to be instantiated when the UI XML document is opened. The view object, at block 2304, generates a request to obtain a new dialog object. Generally speaking, the dialog acts as a frame for the components of the application and includes controls for minimizing, expanding, and manipulating the visual representation of the view of the application. In one embodiment, a dialog manager configured to reuse dialog objects is provided to reduce the amount of memory consumed. Thus, if a previously created dialog object is no longer used but is still maintained in memory, the existing dialog object is reassigned to the new application view.

렌더링 루틴(2300)의 블록(2306)에서, 뷰 오브젝트는 상응하는 view.xml 문서 상에 리스너로 등록된다. 유저 인터페이스 컴포너트와 유사하게, 뷰 오브젝트는, 뷰를 설명하는 데이터 모델에 수행된 데이터 업데이트들에 대한 리스너로 등록한다. 이하에서 상세히 설명되듯이, 뷰 오브젝트가 리스너로 등록된 view.xml 문서는 웹 브라우저로부터 시작된 특정 이벤트들이 발생하면 업데이트된다. 전형적으로, 이벤트들은, 입력이 제공되거나 또는 사용자가 시스템과 상호작용할 때, 사용자에 의해 발생한다.At block 2306 of the rendering routine 2300, the view object is registered as a listener on the corresponding view.xml document. Similar to the user interface component, the view object registers as a listener for the data updates performed on the data model describing the view. As will be described in detail below, a view.xml document in which a view object is registered as a listener is updated when certain events originated from a web browser occur. Typically, events are generated by the user when input is provided or when the user interacts with the system.

렌더링 루틴(2300)의 블록(2308)에서, 어플리케이션의 유저 인터페이스의 XML 기반 설명은, HTML 기반 표현으로 변형(transformed)되거나 변환된다. 상술한 바와 같이, 본 발명은 개발자들이 UI XML 랭귀지를 이용하여 어플리케이션의 뷰의 시각적 표현을 시맨틱하게 설명하도록 한다. 이에 관해, UI XML 프로그래밍 랭귀지는 개발자들이 어떠한 연산 또는 스크립팅 로직을 제공하게 하지 않는다. 대신에, 그래픽 요소들의 추상적 설명들과 그들의 관계들이 어플리케이션의 UI XML 문서에서 제공된다. 웹 브라우저가 이용될 때를 예를 들면, XSLT는 UI XML 로직을 웹 브라우저를 렌더링하기에 적합한 HTML이나 다른 마크업 포맷들로 변형하도록 정의될 수 있다. 특히, UI XML 로직이 블록(2308)에서 변형될 때, 어플리케이션의 컴포넌트들에 연관된 고유한 식별자들이, 웹 브라우저에 의해 렌더링되는 결과 HTML DOM 문서에 포함된다. 변형이 수행되면, 웹 브라우저는 어플리케이션의 뷰에 연관된 그래픽 요소들이 렌더링되도록 한다. At block 2308 of the rendering routine 2300, the XML-based description of the user interface of the application is transformed or transformed into an HTML-based representation. As described above, the present invention allows developers to semantically describe a visual representation of a view of an application using a UI XML language. In this regard, the UI XML programming language does not allow developers to provide any operations or scripting logic. Instead, abstract descriptions of graphical elements and their relationships are provided in the application's UI XML document. For example, when a web browser is used, XSLT can be defined to transform UI XML logic into HTML or other markup formats suitable for rendering a web browser. In particular, when the UI XML logic is transformed at block 2308, unique identifiers associated with the components of the application are included in the resulting HTML DOM document rendered by the web browser. When a transformation is performed, the web browser causes the graphical elements associated with the view of the application to be rendered.

블록(2310)에서, 컴포넌트의 연산 로직을 포함하는 오브젝트는 인스턴스화되고, 상응한는 뷰 오브젝트에 연관된다. 일 실시예에서, 어플리케이션 유저 인터페이스 로직을 설명하는 UI XML 문서는 트래버스(traverse)된다. UI XML 문서에서 표현된 각 컴포넌트는 선택되고, 상응하는 컴포넌트 오브젝트가 인스턴스화된다. 일 실시예에서, 본 발명은 컴포넌트의 연산 로직과 그의 그래픽 표현 사이의 분리를 제공한다. 다시 말해, 컴포넌트의 시각적 표현의 UI XML 설명은 어떠한 연산 로직도 포함하지 않으며, 컴포넌트의 가동에 영향을 주시 않으면서 다양한 방법으로 및 다양한 플렛폼에 대해 변형될 수 있다. 이에 관해, 블록(2310)에서 인스턴스화된 컴포넌트 오브젝트는 컴포넌트의 연산 로직을 인코딩하며, 이는 JavaScript, SilverLight, 또는 AAdobe™ Flash와 같은 스크립팅 프로그래밍 랭귀지로 표현될 수 있다. 그러나, 개발자들은 스크립팅 랭귀지를 이용하여 컴포넌트의 바람직한 가동을 정의하지 않는다. 새로운 컴포넌트들이 필요하면, 개발자들은 컴포넌트 API들에 따른 새로운 컴포넌트들을 생성할 수 있다. 이에 관해, 각 컴포넌트 오브젝트는, 컴포넌트 API들에 따라 수신된 정보에 기초하는 메소드들을 구현한다. 이 메소드들은, 컴포넌트 상에 데이터를 설정하기 위한 "Initialize()" 메소드 및 컴포넌트의 유저 인터페이스에 대한 업데이트들으르 수행하기 위한 "Update()"를 포함한다. 어플리케이션 뷰가 클로즈될 때 컴포넌트를 제거하기 위한 "Upload()"와 같은 여기서 논의되지 않은 수 많은 메소드들이 컴포넌트들 내에서 구현될 수 있다. 그러나, 컴포넌트 API들에 의해 정의된 기본 메소드들이 존재하는한, 컴포넌트들은 어떠한 이용가능한 렌더링 기술을 이용하여 구현될 수 있다. 다시 말해, 컴포넌트들은 XSLT를 이용하여 유저 인터페이스를 HTML로 렌더링하도록 요구되어지지 않는데, 그것이 여기서 주요하게 설명되어진 실시예이더라도 그렇다. 또한, 렌더링 로직은, 전통적인 프로그래밍 로직을 이용한 컴포넌트로 설명될 수 있다.At block 2310, the object containing the operation logic of the component is instantiated, and the corresponding is associated with the view object. In one embodiment, the UI XML document describing the application user interface logic is traversed. Each component represented in the UI XML document is selected, and the corresponding component object is instantiated. In one embodiment, the invention provides a separation between the operational logic of the component and its graphical representation. In other words, the UI XML description of the component's visual representation does not include any computational logic, and can be modified in various ways and for various platforms without affecting the operation of the component. In this regard, the instantiated component object in block 2310 encodes the operation logic of the component, which may be expressed in a scripting programming language such as JavaScript, SilverLight, or AAdobe ™ Flash. However, developers do not define the desired operation of a component using scripting language. If new components are needed, developers can create new components according to component APIs. In this regard, each component object implements methods based on information received according to component APIs. These methods include "Initialize ()" method for setting data on the component and "Update ()" for performing updates to the user interface of the component. A number of methods not discussed herein, such as "Upload ()" for removing components when an application view is closed, may be implemented within components. However, as long as the underlying methods defined by the component APIs are present, the components can be implemented using any available rendering technique. In other words, components are not required to render the user interface to HTML using XSLT, even if it is the main described embodiment. Rendering logic can also be described as a component using traditional programming logic.

블록(2312)에서, 블록(2310)에서 인스턴스화된 컴포넌트 오브젝트의 연산 가동이 초기화된다. 어플리케이션의 뷰의 UI XML 로직이 변형되면, 하나 이상의 컴포넌트들에 연관된 식별자들은, 웹 브라우저에 의해 렌더링되는 결과HTML DOM 문서에 포함된다. 블록(2312)에서 컴포넌트들의 가동을 초기화할 때, HTML DOM의 컴포넌트에 관련된 적합한 참조들은 view.xml 문서를 이용하여 뷰 오브젝트에 의해 식별될 수 있다. view.xml 문서를 해석함으로써, 뷰 오브젝트는 생성된 HTML DOM에 상응하는 컴포넌트 오브젝트들을 인스턴스화할 수 있고, 각 컴포넌트 오브젝트를 상응하는 유저 인터페이스에 연결시킬 수 있다. 이 방법으로, 컴포넌트의 연산 가동과 로직이 컴포넌트의 유저 인터페이스 상에서 호출된다. 컴포넌트가 각 유저인터페이스에 연관되었으면, 컴포넌트의 기본 상태들 및/또는 값들은 컴포넌트 API들을 이용하여 각 컴포넌트에 구현된 "Initialize()" 메소드에 따라 설정된다. 어플리케이션의 UI XML 문서에 표현된 모든 컴포넌트들이 초기화되면, 렌더링 루틴(2300)은 종료하는 블록(2314)로 진행한다.At block 2312, a computational operation of the instantiated component object at block 2310 is initiated. UI of the application's view Once the XML logic is transformed, the identifiers associated with one or more components are included in the resulting HTML DOM document rendered by the web browser. When initiating the operation of the components at block 2312, appropriate references related to the components of the HTML DOM may be identified by the view object using the view.xml document. By parsing the view.xml document, the view object can instantiate the component objects corresponding to the generated HTML DOM, and link each component object to the corresponding user interface. In this way, the computational operations and logic of the component are invoked on the user interface of the component. If a component is associated with each user interface, the basic states and / or values of the component are set according to the "Initialize ()" method implemented in each component using component APIs. Once all of the components rendered in the application's UI XML document have been initialized, the rendering routine 2300 proceeds to block 2314 where it terminates.

일반적으로 설명하면, 렌더링 루틴(2300)에 의해 수행된 기능성은 뷰 오브젝트가 XML 기반 어플리케이션들과 웹 브라우저에 의해 이용되는 HTML DOM간 통신들을 가능하게 한다. 웹 브라우저에서의 이벤트의 발생에 대한 응답으로, 영향받은 컴포넌트와 뷰 오브젝트는 통지를 받으며, 프로세싱 후, 그 이벤트를 적합한 이벤트 리스너들(예를 들어, 프로세스 XML 문서의 트리거들 또는 이벤트 리스닝 오브젝트들)에게 전파한다. 바인딩이 정의되면, 상술한 바와 같이, 전체 또는 부분적 업데이트시 "Update()" 메소드에 상응하는 컴포넌트가 호출될 때, 웹 브라우저의 컴포넌트의 그래픽 표현은 변경될 수 있다. Generally speaking, the functionality performed by the rendering routine 2300 enables communication between HTML DOMs in which view objects are used by XML-based applications and web browsers. In response to the occurrence of an event in the web browser, the affected component and view object are notified and, after processing, send the event to the appropriate event listeners (e.g., triggers or event listening objects of the process XML document) . Once the binding is defined, the graphical representation of the component of the web browser may be changed when a component corresponding to the "Update ()" method is called upon full or partial update, as described above.

특히, 컴포넌트 API들은 컴포넌트가 연산 로직의 기본 세트를 구현하도록 요구한다. 결과적으로, 컴포넌트들은 HTML 이외의 렌더링 기술들을 이용하도록 용이하게 설정될 수 있으며, 여전히 데이터 업데이트들을 인지하고 데이터에 바인드 할 수 있다. 다른 실시예들에서, 컴포넌트들은, AAdobe® Flash, Microsoft® SilverLight, Java® Applet, 또는 각 클라이언트측 컴포넌트들 연산 로직을 실행한느 XML 가상 머신의 연산 로직 냉에서 호출될 수 있는 다른 렌더링 기술을 이용해서 초기화되고 렌더링될 수 있다. 또한, 상술한 렌더링 루틴(2300)은, 본 발명을 서로 다른 종류의 컴퓨팅 장치들에서 구현할 때, 다른 방법으로 수행될 수 있다. 웹 브라우저가 이용되지 않을 때, 어플리케이션의 유저 인터페이스 로직은, 블록(2308)에서 XML과 HTML간 변형을 수행하지 않고 렌더링될 수 있다. 대신에, "Initialize()" 및/또는 "Update()" 메소드들 내에서 컴포넌트의 유저 인터페이스를 구현하고 호출하며, C, C++, Java 또는 Microsoft® SilverLight와 같은 전통적인 프로그래밍 랭귀지를 사용하여 구축되기에 적합한 그래픽 프리미티브들은 제공될 수 있다. In particular, component APIs require components to implement a basic set of computational logic. As a result, the components can be easily configured to use rendering techniques other than HTML, and still be able to recognize and bind data updates. In other embodiments, the components may use other rendering techniques that may be called from within the operational logic of an AAdobe® Flash, a Microsoft® SilverLight, a Java® Applet, or an XML virtual machine executing each client-side components arithmetic logic Can be initialized and rendered. In addition, the above-described rendering routine 2300 may be performed in other ways when implementing the invention in different types of computing devices. When the web browser is not used, the user interface logic of the application may be rendered at block 2308 without performing any transformation between XML and HTML. Instead, it implements and calls the user interface of the component within the "Initialize ()" and / or "Update ()" methods and is built using traditional programming languages such as C, C ++, Java, or Microsoft® SilverLight Appropriate graphics primitives may be provided.

XIOS 통신 개요XIOS Communications Overview

네트워크 오퍼레이팅 시스템을 위해 작성된 XIOS 어플리케이션들은, 모델 뷰 컨트롤러(MVC) 모델을 이용한다. 이를 위해, XIOS 어플리케이션들은 데이터 모델과 주로 상호작용하며, 이는 데이터 소스의 컨텐츠들의 추상화이다. XIOS 어플리케이션과 데이터 소스 사이의 이 추상화 계층은, XIOS 어플리케이션이 데이터 소스에서 만들어진 변경들로부터 격리되도록 한다. 다시 말해, 데이터 소스에서의 변경들은 XIOS 어플리케이션에서의 변경들을 필연적으로 요구하지는 않는다. XIOS applications written for network operating systems use the Model View Controller (MVC) model. To this end, XIOS applications interact primarily with the data model, which is an abstraction of the contents of the data source. This abstraction layer between the XIOS application and the data source allows the XIOS application to be isolated from changes made at the data source. In other words, changes in the data source do not necessarily require changes in the XIOS application.

도 24는 XIOS 어플리케이션들(2402)이 이 프레임워크 내에서 다양한 예시적인 데이터 소스들과 어떻게 상호작용하는지에 대한 일 실시예의 개요를 설명한다. MVC 용어들로, XIOS 어플리케이션들(2402)은 데이터 모델과 주로 상호작용한다. 이 아키텍쳐의 일 실시예에서, XIOS 어플리케이션들(2402)은, 각 데이터 소스의 데이터 모델을 표현하는 XML 문서들과 상호작용함으로써, 다양한 데이터 소스들에 대한 데이터 모델들과 상호작용한다. 다른 실시예에서, XIOS 어플리케이션들(2402)은, 상술한 바와 같이, 데이터 모델을 노출한 프로그래밍 오브젝트와 직접 상호작용한다. 아래 설명은 XIOS 어플리케이션들(2402)이 XML 문서들과 상호작용하는 실시예에 주로 관련되었으나, 당업자라면 MCV 패러다임의 다른 구현들로 대체될 수도 있음을 이해할 수 있다. Figure 24 illustrates an overview of one embodiment of how XIOS applications 2402 interact with various exemplary data sources within this framework. In MVC terms, XIOS applications 2402 interact primarily with the data model. In one embodiment of this architecture, XIOS applications 2402 interact with data models for various data sources by interacting with XML documents representing the data model of each data source. In another embodiment, XIOS applications 2402 interact directly with programming objects that have exposed the data model, as described above. While the following discussion is primarily concerned with embodiments where XIOS applications 2402 interact with XML documents, those skilled in the art can appreciate that other implementations of the MCV paradigm may be substituted.

주어진 데이터 소스와의 통신은, 실행시 시스템 컨텍스트 오브젝트(902)(도 9)에 임베디드될 수 있는 통신 매니저(2412)에 의해 처리된다. 통신 매니저(2412)는 한 세트의 커뮤니케이터 인스턴스들을 관리하며, 각각은 커뮤니케이터 API(2410)를 구현한다. 커뮤니케이터 API(2410)는 임의의 데이터 소스에 적용가능한 제네릭 작업들을 노출한다. 예를 들어, 커뮤니케이터 API(2410)는 XIOS 어플리케이션(2402)가 데이터 소스에 연결, 데이터 소스에 저장된 데이터 수정, 데이터 소스에 새로운 데이터 생성, 데이터 소스로부터 데이터의 질의 또는 제거 등을 표현하는 문서를 로딩, 수정, 생성 또는 삭제할 수 있도록 한다. Communication with a given data source is handled by the communication manager 2412, which may be embedded in the system context object 902 (Fig. 9) at runtime. The communication manager 2412 manages a set of communicator instances, each implementing a communicator API 2410. Communicator API 2410 exposes generic operations applicable to any data source. For example, the Communicator API 2410 may be used by the XIOS application 2402 to load a document that represents a connection to a data source, modify data stored in the data source, create new data in the data source, query or remove data from the data source, Modify, create, or delete any of the following:

커뮤니케이터 API(2410)는, 어떠한 데이터 소스도 단지 URL을 이용하여 접속될 수 있다는 개념을 중심으로 구축된다. 커뮤니케이터 API(2410)를 구현하는 커뮤니케이터는 URL을 통해 데이터에 접속할 수 있도록 하며, XIOS 어플리케이션(2402)이 데이터 모델로서 조작할 수 있는 XML 문서들을 반환한다. 이 간단한 방법론을 이용하여, 반환된 XML 문서를 이용하는 XIOS 어플리케이션(2402)은, 문서가 도착한 채널, 또는 그것이 생성된 하부 데이터 소스의 종류에 대한 어떠한 지식도 요구하지 않는다. 데이터를 사용하고, 조작하고, 생성하는 통일된 방법을 가지는 것은 어플리케이션 개발과 데이터 추상화 솔루션의 구현을 단순화한다. XIOS 어플리케이션들(2402)은 한 데이터 소스에서 다른 데이터 소스로 변경 및/또는 데이터 소스를 변형할 수도 있다.The Communicator API 2410 is built around the notion that any data source can only be accessed using a URL. The Communicator implementing communicator API 2410 allows access to data via a URL and returns XML documents that the XIOS application 2402 can manipulate as a data model. Using this simple methodology, the XIOS application 2402 using the returned XML document does not require any knowledge of the channel on which the document arrived or the type of underlying data source from which it was created. Having a unified way to use, manipulate, and generate data simplifies the implementation of application development and data abstraction solutions. XIOS applications 2402 may change from one data source to another and / or modify the data source.

통신 매니저(2412)는 주어진 커뮤니케이터를 인스턴스화하여, XIOS 어플리케이션(2402)로부터의 URL에 대한 요청에 대한 응답으로 채널을 생성한다. 채널의 이름 또는 종류는 URL 프로토콜으로 제공되며, URL의 나머지는 채널에 대한 정보를 제공한다. 채널은 이후 채널 특정 방법(channel specific manner)으로 정보를 처리한다. 예를 들어, 웹 서치 채널은 "websearch://example+search+terms"과 같은 URL을 접수한다. 프로토콜 "websearch"는 통신 매니저(2412)가 URL을 엡 서치 채널로 패스하도록 지시하며, 위치 "example+search+terms"는 웹 서치 엔진으로 전송될 서치 질의를 만들기 위해 웹 서치 채널에 의해 이용될 수 있다. 다른 채널의 예로, IMAP 폴더 스토어의 수신함에 있는 메시지는, "imap://servername/userl/inbox/messagel"와 같은 URL이 패스될 때, IMAP 채널을 통해 유사한 방법으로 접속될 수 있다.  The communication manager 2412 instantiates a given communicator and generates a channel in response to a request for a URL from the XIOS application 2402. The name or kind of a channel is provided by the URL protocol, and the remainder of the URL provides information about the channel. The channel then processes the information in a channel specific manner. For example, a web search channel receives a URL such as "websearch: // example + search + terms". Protocol "websearch" instructs communication manager 2412 to pass the URL to the eavesdrop channel, and location "example + search + terms" may be used by the web search channel to create a search query to be sent to the web search engine have. As an example of another channel, a message in the inbox of an IMAP folder store may be accessed in a similar manner via an IMAP channel when a URL such as "imap: // servername / userl / inbox / messagel"

일부 경우들에서, 간단한 URL은, 로딩 함수 또는 저장 함수와 같이, 특정 커뮤니케이터에 의해 구현된 커뮤니케이터 API(2410)의 함수로 패스된다. 다른 경우들에서, 동작 URL(action URL)은 커뮤니케이터로 패스될 수 있다. 동작 URL들은, 커뮤니케이터 API(2410)에 의해 제공된 표준 데이터 읽기/편집/쓰기/붙이기 작업들을 제외한 추가적인 기능성을 제공할 필요가 있을 때 커뮤니케이터에서 이용될 수 있다. 동작 URL은, 하부 데이터 모델, 다른 자원들, 또는 하부 데이터 모델을 다른 자원들과 함께 이용하는 커뮤니케이터 특정 함수들(communicator-specific functions)을 제공할 수 있다. 일 예는, 커뮤니케이터가 하부 데이터 모델의 복잡한 프로세싱을 수행하도록 하여, 프로그래머가 프로그램 코드에서 이 프로세싱을 하도록 하는 부담을 경감하는 동작 URL이 될 수 있다. 다른 예는 하부 데이터 모델의 외부에 있는 데이터 또는 함수들에 기초한 기능성을 제공하는 것이 될 수 있다. 동작 URL의 포맷은 커뮤니케이터 API(2410)에 패스되는 다른 URL에 유사하다. "channel_name://function(paraml, param2, . . . param n)" 여기서, "channel_name"은 동작 URL을 처리할 커뮤니케이터를 결정하며, "function"은 어떤 프로세싱이 수행될지를 판단하도록 커뮤니케이터에 의해 이용되며, "param1, param 2, . . . param n"은 함수로 패스될 파라미터들의 목록이다. 일 실시예에서, 동작 URL에 대한 요청은 XML 문서를 반환한다.In some cases, a simple URL is passed to a function of the Communicator API 2410 implemented by a particular communicator, such as a loading function or a storage function. In other cases, the action URL (action URL) may be passed to the communicator. The action URLs may be used in the communicator when it is necessary to provide additional functionality except for the standard data read / edit / write / paste operations provided by the communicator API 2410. The action URL may provide communicator-specific functions that utilize the underlying data model, other resources, or underlying data model with other resources. An example could be an action URL that alleviates the burden of having the programmer perform this processing in the program code, allowing the communicator to perform complex processing of the underlying data model. Another example would be to provide functionality based on data or functions external to the underlying data model. The format of the action URL is similar to other URLs that are passed to the Communicator API 2410. "channel_name: // function (paraml, param2, ... param n)" where "channel_name" determines the communicator to process the action URL and "function" is used by the communicator to determine what processing is to be performed Param1, param 2, ... param n "is a list of parameters to pass to the function. In one embodiment, the request for the action URL returns an XML document.

데이터 모델 문서들, 커뮤니케이터들 및 데이터 소스들의 세 예들이 도 24에 보여진다. 일 예는, Google, Yahoo!, MSN Live Search등과 같은 웹 서치 서비스(2426)과 통신하기 위헤 이용되는 데이터 모델 문서(2404)와 커뮤니케이터(2414)이다. XIOS 어플리케이션(2402)은 문서 매니저(912)로부터 웹 서치 서비스(2426)과의 통신을 추상화하는 웹 서치 모델 문서(2404)를 요청한다. 문서 매니저(912)는, XIOS 어플리케이션(2402)이 웹 서치 모델 문서(2404)와 상호작용할 때, 웹 서치 커뮤니케이터(2414)와 통신하기 위해 커뮤니케이터 API(2410)를 이용한다. 교대로, 웹 서치 커뮤니케이터(2414)는 커뮤니케이터 API(2410)를 통해 웹 서치 서비스(2426)의 기능성을 노출하는 SOAP인터페이스(2420)에 의해 이해되는 포맷으로 제출된 요청들을 번역한다. 따라서, XIOS 어플리케이션(2402)이 문서 매니저(912)로부터 "websearch://example+search+terms"와 같은 URL을 요청하면, 서치 결과들을 표현하는 웹 서치 모델 문서(2402)와 같은 XML 문서가 반환된다. Three examples of data model documents, communicators, and data sources are shown in FIG. An example is a data model document 2404 and communicator 2414 used to communicate with a web search service 2426, such as Google, Yahoo !, MSN Live Search, and the like. The XIOS application 2402 requests a Web search model document 2404 that abstracts communication with the Web search service 2426 from the document manager 912. [ The document manager 912 uses the Communicator API 2410 to communicate with the Web search communicator 2414 when the XIOS application 2402 interacts with the Web search model document 2404. [ Alternately, the web search communicator 2414 translates requests submitted in a format understood by the SOAP interface 2420 that exposes functionality of the web search service 2426 via the communicator API 2410. Therefore, when the XIOS application 2402 requests a URL such as "websearch: // example + search + terms" from the document manager 912, an XML document such as a Web search model document 2402 representing search results is returned do.

도 24에서 보여지는 다른 예는 SQL 모델 문서(2406)이다. 웹 서치 모델 문서(2404)와 마찬가지로, XIOS 어플리케이션(2402)은 SQL 모델 문서(2406)를 조작한다. 이 문서에 대한 변경은 문서 매니저(912)가 커뮤니케이터 API(2410)를 통해 SQL 커뮤니케이터(2416)를 호출하도록 한다. SQL 커뮤니케이터(2416)는 커뮤티케이터 API(2410)로부터의 호출을 SQL 웹 서비스(2422)에 의해 이해되는 포맷으로 번역한다. SQL 웹 서비스(2422)는 SQL API(2432)에 대한 전단(front end)이며, 이는 SQL 데이터베이스(2428)로의 접속을 허용한다. Another example shown in FIG. 24 is an SQL model document 2406. FIG. Like the Web search model document 2404, the XIOS application 2402 manipulates the SQL model document 2406. Changes to this document cause the document manager 912 to call the SQL Communicator 2416 via the Communicator API 2410. [ The SQL communicator 2416 translates calls from the communicator API 2410 into a format understood by the SQL Web service 2422. SQL Web service 2422 is a front end to SQL API 2432, which allows access to SQL database 2428.

도 24에서 보여지는 또 다른 예와 같이, XIOS 어플리케이션들(2402)은 IMAP 모델 문서(2408)과 같은 문서를 요청할 수 있다. XIOS 어플리케이션(2402)이 IMAP 모델 문서(2408)를 조작하면, 문서 매니저(912)는 커뮤니케이터 API(2410)를 통해 IMAP 커뮤니케이터(2418)와 통신한다. IMAP 커뮤니케이터(2418)는 커뮤니케이터 API(2410)로부터의 요청들을 IMAP 웹 서비스(2424)에 의해 이해되는 포맷으로 번역한다. IMAP 웹 서비스(2424)는 IMAP 서버(2430) 상의 표준 IMAP인터페이스(2434)에 대한 전단이다.As another example shown in FIG. 24, the XIOS applications 2402 may request a document such as an IMAP model document 2408. FIG. When the XIOS application 2402 manipulates the IMAP model document 2408, the document manager 912 communicates with the IMAP communicator 2418 via the Communicator API 2410. The IMAP communicator 2418 translates requests from the communicator API 2410 into a format understood by the IMAP web service 2424. The IMAP web service 2424 is a front end to the standard IMAP interface 2434 on the IMAP server 2430.

웹 서치 커뮤니케이터(2414), SQL 커뮤니케이터(2416) 및 IMAP 커뮤니케이터(2418)와 같은 각 커뮤니케이터 인스턴스는 클라이언트측 컴포넌트(2400)의 통신 매니저(2412)에 의해 호스팅된다. 통신 매니저(2412)는 URL들을 포함하는 문서 매니저(912)로부터의 요청들을 수신하고, 각 요청들에 대한 응답으로 채널을 형성하기 위해 필요한 커뮤니케이터들을 인스턴스화하는 것을 담당한다. 예를 들어, 통신 매니저(2412)가 imap://으로 시작하는 URL에 대한 요청을 수신하면, 통신 매니저(2412)는 IMAP 커뮤니케이터(2418)을 인스턴스화하며(현재 인스턴스화되어 있지 않으면), 요청을 IMAP 커뮤니케이터(2418)로 패스한다.Each communicator instance, such as web search communicator 2414, SQL communicator 2416, and IMAP communicator 2418, is hosted by the communication manager 2412 of the client-side component 2400. Communications manager 2412 is responsible for receiving requests from document manager 912 that include URLs and instantiating the communicators necessary to form a channel in response to each of the requests. For example, if the communication manager 2412 receives a request for a URL starting with imap: //, the communication manager 2412 instantiates the IMAP communicator 2418 (if it is not currently instantiated) And communicates with communicator 2418.

도 24에 도시되어 있듯이, 각 데이터 소스들-웹 서비스(2426), SQL 데이터베이스(2428) 및 IMAP 서버(2430)-은 SOAP 인터페이스(2420), SQL 웹 서비스(2422) 및 IMAP 웹 서비스(2424)와 같은 웹 기반 전단으르 통해 접속 가능하다. 클라이언트측 컴포넌트(2400)가 HTTP를 통해서 접속 가능한 데이터 소스들하고만 통신하면, 클라이언트측 컴포넌트(2400)는, 표준 웹 브라우저들, 프록시 서버들, 방화벽들 등에 포함된 기능성과 같은 현존하는 통신 기능성을 많이 재사용할 수 있는 혜택을 받는다. 그러나, 후단(back end)으로 HTTP 가능(HTTP-enabled) 데이터 소스를 요구하지 않는 커뮤니케이터를 생성하는 것도 가능하다. 예를 들어, 적합한 커뮤니케이터로, IMAP 웹 서비스(2424)나 SQL 웹 서비스(2422)가 제거되며, IMAP 커뮤니케이터(2418)와 SQL 커뮤니케이터(2416)가 IMAP 인터페이스(2434)나 SQL API(2432)와 각각 직접 통신할 수 있다.24, each of the data sources-the web service 2426, the SQL database 2428, and the IMAP server 2430-includes a SOAP interface 2420, an SQL web service 2422, and an IMAP web service 2424, Or through a web-based front end such as &lt; RTI ID = 0.0 &gt; If the client-side component 2400 communicates only with data sources connectable via HTTP, the client-side component 2400 can provide the existing communication functionality, such as functionality included in standard web browsers, proxy servers, firewalls, You get a lot of reusable benefits. However, it is also possible to create a communicator that does not require an HTTP-enabled data source at the back end. For example, if the IMAP web service 2424 or the SQL web service 2422 is removed with an appropriate communicator and the IMAP communicator 2418 and the SQL communicator 2416 are in communication with the IMAP interface 2434 or the SQL API 2432 You can communicate directly.

XIOS 파일 시스템-서버측 컴포넌트XIOS File System - Server Side Components

도 25는 XML 파일 시스템 서버측 컴포넌트(2500)의 일 실시예의 개요를 설명한다. 도 24에서와 같이, 클라이언트측 컴포넌트(2400)는, 문서 매니저(912)에 의해 XIOS 어플리케이션들(2402)에 이용 가능하게 된 XML-FS 모델 문서(2502)에 임베디드된 데이터 모델을 포함한다. 문서 매니저(912)는, XIOS 어플리케이션들(2402)이 XML-FS 모델 문서(2502)와 상호작용할 때 커뮤니케이터 API(2410)를 통해 통신 매니저(2412)에 의해 호스팅되는 XIOS 커뮤니케이터(2504)와 통신한다. XIOS 커뮤니케이터(2504)는, 교대로, 서버측 컴포넌트(2500)와 통신한다. 서버측 컴포넌트(2500)는 클라이언트 인터페이스 컴포넌트들(2506)과 데이터 스토리지 컴포넌트들(2514)를 포함한다.25 illustrates an overview of one embodiment of the XML file system server side component 2500. [ As shown in FIG. 24, the client-side component 2400 includes a data model embedded in the XML-FS model document 2502 made available to the XIOS applications 2402 by the document manager 912. The document manager 912 communicates with the XIOS Communicator 2504 hosted by the communication manager 2412 via the Communicator API 2410 when the XIOS applications 2402 interact with the XML-FS model document 2502 . The XIOS communicator 2504 alternately communicates with the server-side component 2500. The server-side component 2500 includes client interface components 2506 and data storage components 2514.

클라이언트 인터페이스 컴포넌트들(2506)는 XIOS 커뮤니케이터(2504)와 통신하는 주요 컴포넌트들(primary components)이다. XML 기반 웹 서비스(2510)(웹 기반 HTTP 전단(2508)과 함께)와 트랜잭션 코디네이터(2522)는 XIOS 커뮤니케이터(2504)가 서버측 컴포넌트(2500)와 통신하는 주요 방법들이다. XML 웹 서비스(2510)는 XML 파일 시스템 내에서 파일 생성, 파일 검색, 파일 삭제, 파일 서치 등과 같은 기능성을 노출한다. 트랜잭션 코디네이터(2522)는, 이하에서 상세히 설명되듯이, 하나 이상의 클라이언트가 동일한 파일에 현재 접속할 때 데이터 스토리지(2514)에서 파일들에 대한 변경을 관리하는 것을 도우며, 캐싱 메커니즙으로 동작한다. 메시지 서버(2512), 이하에서 상세히 설명되듯이, XIOS 커뮤니케이터(2504)가 신청한 XML 파일 시스템(2500) 내의 오브젝트들의 변경들을, XIOS 커뮤니케이터(2504)를 통해, 클라이언트측 컴포넌트(2400)에 통지하는데 이용된다. The client interface components 2506 are primary components that communicate with the XIOS Communicator 2504. The XML-based Web service 2510 (along with the Web-based HTTP front end 2508) and transaction coordinator 2522 are the main methods by which the XIOS Communicator 2504 communicates with the server-side component 2500. The XML Web service 2510 exposes functionality within the XML file system, such as file creation, file retrieval, file deletion, file search, and the like. Transaction coordinator 2522 serves as a caching mechanism to help manage changes to files in data storage 2514 when one or more clients are currently connected to the same file, as described in detail below. The message server 2512 notifies the client side component 2400 of changes in objects in the XML file system 2500 that the XIOS communicator 2504 has subscribed to via the XIOS communicator 2504 .

다이어그램에서 보이는 바와 같이, XIOS 커뮤니케이터(2504)와 XML 웹 서비스(2510) 사이의 통신은 양방향이다. 다시 말해, XIOS 커뮤니케이터(2504)는 XML 웹 서비스(2510)로 정보를 보내고, XML 웹 서비스(2510)로부터 정보를 받는다. 이에 반해, 메시지 서버(2512)는 XIOS 커뮤니케이터(2504)로 정보를 주로 푸쉬한다.As shown in the diagram, the communication between the XIOS Communicator 2504 and the XML Web service 2510 is bidirectional. In other words, the XIOS communicator 2504 sends information to the XML Web service 2510 and receives information from the XML Web service 2510. In contrast, the message server 2512 pushes information to the XIOS communicator 2504 primarily.

데이터 스토리지 컴포넌트들(2514)은 파일 서버(2516), 인덱스 서버(2518) 및 폴더 데이터베이스(2520)를 포함한다. 일 실시예에서, XML 파일 시스템은 파일 데이터를 세 가지 분리된 부분들로 저장한다. 파일 내에 포함된 원시 데이터는 파일 서버(2516) 상에 파일로 저장된다. 각 파일에 연관된 파일이름, 작성자, 수정일자, 접속 제어 목록(access control list, ACL) 및 다른 일반 파일 정보는 폴더 데이터베이스(2520) 내에 저장된다. 폴더 데이터베이스(2520)는, 각 폴더에 대한 ACL들 및 연관된 아이콘들, 폴더 렌더링 종류(예를 들어, 폴더가 그림들을 포함한다고 나타내고, 따라서 그림 썸네일로 렌더링 되어야 함) 등과 같은 추가적인 폴더 메타데이터를 포함하는, 파일들이 조직된 폴더 계층구조도 저장한다. 인덱스 서버(2518)는, 전문 서치를 이용하여 메타데이터를 서치하는 것과 같은, 파일들을 식별하고 위치시키는 추가적인 메타데이터를 저장한다.The data storage components 2514 include a file server 2516, an index server 2518, and a folder database 2520. In one embodiment, the XML file system stores the file data in three separate parts. The raw data contained in the file is stored as a file on the file server 2516. The file name, creator, modification date, access control list (ACL), and other common file information associated with each file are stored in the folder database 2520. Folder database 2520 includes additional folder metadata, such as ACLs and associated icons for each folder, folder rendering type (e.g., indicating that the folder contains pictures, and thus rendered as picture thumbnails), etc. It also stores the folder hierarchy in which the files are organized. The index server 2518 stores additional metadata that identifies and locates files, such as searching for metadata using a specialized search.

이 컴포넌트들이 도 25에서 단일 서버 상의 분리된 컴포넌트로 도시되어 있지만, 당업자라면 하나 이상의 이 컴포넌트들은 분리된 물리적 하드웨어 상에 호스트될 수 있음을 이해할 수 있다. 다른 실시예에서, 하나 이상의 이 컴포넌트들은 복수의 컴포넌트들로 쪼개지거나, 서버측 컴포넌트((2500) 내에서 복제되거나, 그 기능성들이 단일 컴포넌트로 결합될 수도 있다. 예를 들어, XML 웹 서비스(2510), 메시지 서버(2512), 트랜잭션 코디네이터(2522), 인덱스 서버(2518), 파일 서버(2516) 및 폴더 데이터베이스(2520)는 모두 동일한 물리적 머신 상에 호스트될 수 있다. 다른 예로, 폴더 데이터베이스(2520)는, 독립 SQL 기반 데이터 스토어로서, 나머지 컴포넌트들로부터 분리될 수 있거나, 파일 서버(2516)는 특화된 고성능 파일 스토리지 시스템 상에 위치할 수도 있다. 또한, XML 파일 시스템은 오직 하나의 서버측 컴포넌트(2500)를 포함할 수도 있고, 다수를 포함할 수도 있다.Although these components are shown as separate components on a single server in Fig. 25, those skilled in the art will appreciate that one or more of these components may be hosted on separate physical hardware. In another embodiment, one or more of these components may be split into a plurality of components, replicated within the server-side component 2500, or the functionality may be combined into a single component. For example, XML Web services 2510 ), The message server 2512, the transaction coordinator 2522, the index server 2518, the file server 2516 and the folder database 2520 may all be hosted on the same physical machine. ) Is an independent SQL-based data store, which may be separate from the rest of the components, or the file server 2516 may be located on a specialized high performance file storage system. In addition, the XML file system may contain only one server- 2500), or may include a plurality.

일 실시예에서, XIOS 커뮤니케이터(2504)는 항상 동일한 서버측 컴포넌트(2500)과 통신할 수 있다. 이후, 서버측 컴포넌트(2500)는, 요청을 서비스할 적합한 XML 웹 서비스(2510), 메시지 서버(2512) 등을 결정하기 위해, XIOS 커뮤니케이터(2504)에 의해 요청된 URL 내에 포함된 정보를 이용할 수 있다. XIOS 커뮤니케이터(2504)에 의해 접촉된 서버측 컴포넌트(2500)는 요청을 더 적합한 서버측 컴포넌트(2500)에 함께 전달할 수 있다. 이 방법으로, 클라이언트측 컴포넌트(2400)는, 로브 밸런싱, 리던던시, 또는 서버측 컴포넌트(2500)에 의해 구현된 스케일링 아키텍쳐로부터 격리된다.  In one embodiment, the XIOS communicator 2504 can always communicate with the same server-side component 2500. The server-side component 2500 may then use the information contained in the URL requested by the XIOS communicator 2504 to determine the appropriate XML Web service 2510, message server 2512, have. The server-side component 2500 contacted by the XIOS communicator 2504 may communicate the request to a more suitable server-side component 2500 together. In this way, the client-side component 2400 is isolated from the scaling architecture implemented by rob-balancing, redundancy, or server-side component 2500.

도 26은 메시지 서버(2512)의 컨텐츠의 상세 일부의 일 실시예를 설명한다. 메시지 서버(2512)는 XML 파일 시스템을 이용하는 각 클라이언트에 대한 신청 목록(subscription list)을 포함한다. 예를 들어, 도 26은 두 클라이언트, 클라이언트 1(2606)과 클라이언트 2(2608)을 설명한다. 클라이언트 1(2606)은 클라이언트 1 신청 목록(2602)에 연관되어 있고, 클라이언트 2(2608)는 클라이언트 2 신청 목록(2604)에 연관되어 있다. 26 illustrates one embodiment of a detailed portion of the content of the message server 2512. [ The message server 2512 includes a subscription list for each client using the XML file system. For example, FIG. 26 illustrates two clients, client 1 2606 and client 2 2608. Client 1 2606 is associated with client 1 request list 2602 and client 2 2608 is associated with client 2 request list 2604.

각 신청 목록은, 오브젝트가 업데이트되면 통지받기를 희망하는 클라이언트들에 대해 서버측 컴포넌트들에 의해 저장된 오브젝트들의 목록을 포함한다. 클라이언트 1 신청 목록(2602)는 클라이언트 1(2606)은, 서버측 컴포넌트들(2500)에 의해 저장된 다른 오브젝트들과 정보뿐만이 아니라, foo.doc (파일), bar.doc (역시 파일), 사용자 3의 상태에 대한 변경들, 그룹 1 폴더 목록에 대한 변경들을 통지 받기를 원한다. foo.doc 및 bar.doc에 대한 신청은, 이 파일들이 업데이트되거나, 삭제되거나, 이름이 변경되거나, 다른 클라이언트에 의해 오픈되거나 다른 방법으로 변경되면, 메시지 서버(2512)가 클라이언트 1(2606)을 업데이트하도록 한다. 사용자 3의 상태에 관한 항목(entry)은, 사용자 3이 온라인 또는 오프라인이 되거나, 사용자 3이 자기가 바쁘다고 나타내거나, 사용자 3이 아이들 상태에 들어가는 등과 같이 사용자 3의 상태가 변경될 때, 클라이언트1(2606)이 업데이트되도록 한다. 그룹 1 폴더에 관한 항목은, 그룹 1에 속한 폴더들이 업데이트되거나, 삭제되거나, 폴더들이 추가된 아이템을 가지거나, 다른 방법으로 변경되면, 클라이언트 1(2606)을 업데이트되도록 한다. 클라이언트 2 신청 목록(2604) 내 항목들은 클라이언트 1 신청 목록(2602) 내 항목들과 유사하며, 유사한 방법으로 행동하지만, 클라이언트 2(2608)가 클라이언트 1(2606)과 반대로 업데이트되도록 한다. 일 실시예에서, 통지는 롱 폴링(long polling)을 거쳐서 메시지 서버(2512)에 의해 전송되지만, 정보를 클라이언트들로 푸시하기 위한 다른 적합한 기술들이 그 대신에 사용될 수 있다.Each application list contains a list of objects stored by the server-side components for clients wishing to be notified when the object is updated. Client 1 application list 2602 indicates that client 1 2606 has not only information and other information stored by server side components 2500 but also foo.doc (file), bar.doc (file also), user 3 Changes in the status of the group 1 folder list, and changes to the group 1 folder list. The applications for foo.doc and bar.doc are sent to the client 1 2606 if the files are updated, deleted, renamed, opened by another client, or otherwise modified. Update. An entry related to the state of the user 3 is a state in which the state of the user 3 changes, such as when the user 3 is online or offline, when the user 3 indicates that he is busy, when the user 3 enters the idle state, (2606) is updated. Items relating to the group 1 folder are updated when the folders belonging to the group 1 are updated, deleted, have items added with folders, or are changed in other ways. Items in the client 2 application list 2604 are similar to items in the client 1 application list 2602 and behave in a similar manner, but allow client 2 2608 to be updated as opposed to client 1 2606. In one embodiment, the notification is sent by the message server 2512 via long polling, but other suitable techniques for pushing information to clients may be used instead.

클라이언트 1(2606)과 같은 클라이언트가 서버측 컴포넌트(2500)에 처음으로 연결하면, 클라이언트 1(2606)은, XIOS 커뮤니케이터(2504)를 통해, 오브젝트를 신청 목록에 추가하도록 요청할 수 있다. 일 실시예에서, XIOS 커뮤니케이터(2504)는 내부 신청 목록에 문서를 추가하고, 이에 응답하여, 문서 매니저(912)(또는 클라이언트측 컴포넌트(2400)의 다른 서브 컴포넌트)는 XML 웹 서비스(2510)에 요청을 발행한다. XIOS 커뮤니케이터(2504)는 XML 웹 서비스(2510)과 통신하며, 이는 메시지 서버(2512)가 오브젝트를 클라이언트 1(2606)에 대한 신청 목록에 추가하도록 지시한다. 클라이언트 1(2606)이 이전에 연결된 적이 없으므로, 메시지 서버(2512)는, 클라이언트 1 신청 목록(2602)와 같은 클라이언트 1(2606)에 대한 새로운 신청 목록을 생성한다. 이 목록은 키(2610)에 의해 식별된다. 키(2610)는 고유한 식별자를 포함하느데, 이는 바람직하게는 추측하기 어렵다. 이 키(2610)는, 클라이언트 1(2606)이 키(2620)를 인지하기 위해, XML 웹 서비스(2510)와 XIOS 커뮤니케이터(2504)를 통해 클라이언트 1(2606)으로 전송된다. 일 실시예에서, XML 웹 서비스(2510)와 메시지 서버(2512)는, 클라이언트 1(2606)으로 전송되는 키(2610)를 생성하기 위해 단순히 함께 동작한다. 이 실시예에서, 클라이언트 1(2606)(XML 웹 서비스(2510)와 반대로)은 클라이언트 1(2606)에 대한 오브젝트를 신청 목록에 추가하도록 메시지 서버(2512)를 지시한다.When a client, such as client 1 2606, first connects to server-side component 2500, client 1 2606 may request, through XIOS communicator 2504, to add the object to the application list. In one embodiment, the XIOS Communicator 2504 adds a document to the internal application list, and in response, the document manager 912 (or other subcomponent of the client-side component 2400) Issue a request. The XIOS communicator 2504 communicates with the XML Web service 2510, which directs the message server 2512 to add the object to the request list for client 1 2606. [ Since client 1 2606 has not previously been connected, message server 2512 creates a new application list for client 1 2606, such as client 1 application list 2602. This list is identified by key 2610. Key 2610 includes a unique identifier, which is preferably hard to guess. This key 2610 is sent to the client 1 2606 via the XML Web service 2510 and the XIOS communicator 2504 to allow the client 1 2606 to recognize the key 2620. In one embodiment, the XML Web service 2510 and the message server 2512 simply operate together to generate a key 2610 that is transmitted to the client 1 2606. In this embodiment, client 1 2606 (as opposed to XML Web service 2510) directs message server 2512 to add an object for client 1 2606 to the application list.

상술한 바와 같이, 클라이언트 1(2606)과 같은 클라이언트는, 보안을 제공하기 위한 로그인시 XML 파일 시스템에 의해 인증된다. 일 실시예에서, 이 인증은 메시지 서버(2512)와 클라이언트 1(2606) 사이에 복사되지 않는다. 이 실시예에서 키(2610)의 추측하기 어려운(difficult-to-guess) 특성은, 이전 인증에 더하여, 클라이언트 1 신청 리스트(2602)를 엿듣는 제3자에 대한 적절한 보안을 제공한다. 메시지 서버(2512)의 클라이언트들에 대해 보안을 제공하기 위해 키(2610)를 사용하는 또 다른 이점은, 더 자원 집중적인 인증 기술과는 반대로, 메시지 서버(2512) 상에 부하를 경감시킨다는 것이다. As described above, a client, such as client one 2606, is authenticated by an XML file system at login to provide security. In one embodiment, this authentication is not copied between the message server 2512 and the client 1 2606. In this embodiment, the difficult-to-guess nature of the key 2610 provides adequate security for third parties who override the Client 1 application list 2602, in addition to previous authentication. Another advantage of using the key 2610 to provide security for the clients of the message server 2512 is to alleviate the load on the message server 2512, as opposed to more resource intensive authentication techniques.

도 27은 메시지 서버(2512)의 작업의 일 실시예의 다른 측면을 설명한다. 이 그림에서, 메시지 서버(2512)는 세 신청 목록들(클라이언트 1 신청 목록(2602), 클라이언트 2 신청목록(2604) 및 클라이언트 3 신청 목록(2702))과 함께 도시되어 있다. XML 웹 서비스의 작업중에, 트랜잭션 코디네이터(2522)는, 모니터되고 있는 오브젝트들에 변경들이 발생하면 통지를 받는다. 트랜잭션 코디네이터(2522)는 이후 메시지 서버(2512)에 통지들이 그 오브젝트를 신청한 모든 클라이언트들에 전송되어야 한다는 것을 통지한다. Figure 27 illustrates another aspect of an embodiment of the operation of message server 2512. [ In this figure, message server 2512 is shown with three application lists (Client 1 Application List 2602, Client 2 Application List 2604 and Client 3 Application List 2702). During operation of the XML Web service, transaction coordinator 2522 is notified when changes are being made to the objects being monitored. Transaction coordinator 2522 then notifies message server 2512 that notifications should be sent to all clients that have subscribed to the object.

당업자라면, 메시지 서버(2512)가 XML 웹 서비스를 이용하는 각 클라이언트에 대한 신청 목록을 포함하고 있으며, 각 신청 목록은 연관된 클라이언트가 듣고 있는 각 오브젝트에 대한 항목을 포함하고 있으므로, 메시지 서버(2512) 상에 저장되어 있는 데이터의 양은 XML 웹 서비스에 연결된 클라이언트들의 수와 함께 빠르게 증가한다는 것을 이해할 수 있다. 메신저 서버(2512)에 의해 필요한 작업의 양을 줄이는 방법은 메시지 체인들(2704)을 통하는 것이다. 메시지 체인(2704)은 주어진 오브젝트를 듣고 있는 각 신청 목록을 연관시키는 연결된 목록(linked list)이다. 예를 들어, 도 27에서, 메시지 체인(2704)은, 오브젝트 bar.doc를 듣고 있는 메시지 서버(2512) 상의 각 신청 목록을 연결한다. 이 메시지 체인(2704)의 이용을 통해, 메시지 서버(2512)가 bar.doc에 변경이 있다고 통지받으면, 메시지 서버(2512)는, 처음에 클라이언트 1에 통지하고, 이후에 클라이언트 2에 통지하고, 그 후에 클라이언트 3에 통지함으로써, 메시지 체인(2704)의 연결된 목록을 먼저 트래버스하여야 한다. 이것은, 다수의 신청 목록들이 bar.doc에 대한 참조들을 포함하고 있는지를 결정해야 하는 메시지 서버(2512)에 대한 필요를 제거하므로써, 프로세싱 시간을 줄이며 메시지 서버(2512)의 효율을 증가시킨다. 하나의 메시지 체인(2704)이 도 27에 도시되어 있으나, 클라이언트에 의해 현재 모니터링되고 있는 XML 파일 시스템 내의 각 오브젝트들에 연관된 하나의 메시지 체인이 있을 수 있다는 것이 이해될 수 있다. Those skilled in the art will appreciate that the message server 2512 includes an application list for each client using the XML Web service and each application list includes an entry for each object that the associated client is listening on, It can be appreciated that the amount of data stored in the XML Web service increases rapidly with the number of clients connected to the XML Web service. The way to reduce the amount of work required by messenger server 2512 is through message chains 2704. [ The message chain 2704 is a linked list that associates each application list that is listening to a given object. For example, in FIG. 27, message chain 2704 links each application list on message server 2512 listening to object bar.doc. Through the use of this message chain 2704, when the message server 2512 is notified that there is a change in bar.doc, the message server 2512 first notifies the client 1, then notifies the client 2, And then traverses the linked list of message chains 2704 by notifying the client 3 first. This reduces the processing time and increases the efficiency of the message server 2512 by eliminating the need for the message server 2512 to determine if multiple application lists contain references to bar.doc. One message chain 2704 is shown in FIG. 27, but it can be appreciated that there may be one message chain associated with each object in the XML file system currently being monitored by the client.

XIOS 파일 시스템-파일 작업들XIOS file system - file operations

상술한 바와 같이, XML 파일 시스템은 폴더 데이터베이스(2520) 내의 시스템에 저장된 폴더들의 계층구조를 표현하는 정보를 저장한다. XIOS 어플리케이션(2402)은, XIOS 커뮤니케이터(2504)에 의해 XML 웹 서비스(2510)으로부터 검색된 folders.xml 파일을 통해 폴더 계층구조와 상호작용할 수 있다. As described above, the XML file system stores information representing a hierarchical structure of folders stored in the system in the folder database 2520. [ The XIOS application 2402 can interact with the folder hierarchy through the folders.xml file retrieved from the XML Web service 2510 by the XIOS Communicator 2504. [

도 28A-28D는 folders.xml 파일을 검색하기 위한 예시적인 메소드(2800)의 일 실시예를 도시하고 있다. 시작 블록(2802)로부터, 메소드(2800)는, XIOS 어플리케이션(2402)가 folders.xml 파일에 대한 파일 신청을 생성하고 파일 신청을 문서 매니저(912)에 제출하는 블록(2804)으로 진행한다. 일 실시예에서, 요청은 고유하게 폴더를 식별하고, 폴더 정보가 저장된 폴더 데이터베이스(2520)의 위치를 지시하기 위해 서버측 컴포넌트(2500)에 이용가능한 정보를 제공하는 폴더 식별자("folder ID")를 포함한다. folders.xml 파일은 폴더 ID에 연관된 폴더에 관련된 정보와, 또한 그 폴더 내의 서브 폴더들에 연관된 정보를 포함할 수 있다. folders.xml 파일은, 상술한 바와 같이, 각 폴더에 연관된 추가적인 메타데이터를 또한 포함할 수 있다. 일 실시예에서, XIOS 어플리케이션(2402)에 의해 제출된 요청은 URL의 형태를 취한다. 다른 실시예에서, XIOS 어플리케이션(2402)은 문서 매니저(912)로부터 folders.xml 파일을 단순하게 요청할 수 있으며, 이는 요청을 표현하는 URL을 생성한다.28A-28D illustrate one embodiment of an exemplary method 2800 for searching the folders.xml file. From the start block 2802, the method 2800 proceeds to block 2804 where the XIOS application 2402 creates a file application for the folders.xml file and submits the file request to the document manager 912. In one embodiment, the request includes a folder identifier ("folder ID") that uniquely identifies the folder and provides information that is available to the server-side component 2500 to indicate the location of the folder database 2520 where the folder information is stored, . The folders.xml file may contain information related to the folder associated with the folder ID and information associated with the subfolders in the folder. The folders.xml file may also include additional metadata associated with each folder, as described above. In one embodiment, the request submitted by the XIOS application 2402 takes the form of a URL. In another embodiment, the XIOS application 2402 can simply request the folders.xml file from the document manager 912, which generates the URL representing the request.

일 실시예에서, 문서 매니저(912)는 folders.xml 파일의 일시 저장본을 이미 가지고 있을 수 있으며, 이 경우 문서 매니저(912)는 그 문서의 일시 저장본을 XIOS 어플리케이션(2402)에 단순히 제공한다. 그러나, 이 설명의 나머지는 요청된 문서의 일시 저장본이 문서 매니저(912) 내에 존재하지 않는다고 가정한다. 메소드(2800)는, 문서 매니저(912)가 통신 매니저(2412)로부터 XIOS 커뮤니케이터(2504)를 획득하고 파일 요청을 XIOS 커뮤니케이터(2504)의 로딩 함수에 패스하는 블록(2806)으로 진행한다. 메소드(2800)는 XIOS 커뮤니케이터(2504)가 folders.xml에 대한 폴더 ID를 포함하는 요청을 서버측 컴포넌트(2500)의 적합한 XML 웹 서비스(2510)으로 전송하는 블록(2808)로 진행한다. 다음에, 블록(2810)에서, 서버측 컴포넌트는 사용자를 인증하고, 요청을 XML 웹 서비스(2510)으로 라우팅한다. 메소드(2800)는 이후, XML 웹 서비스(2510)가 폴더 ID의 컨텐츠의 적어도 일부에 기초하여 폴더 ID에 연관된 폴더 트리를 호스팅하는 폴더 데이터베이스를 판단하는 블록(2812)로 진행한다. 메소드(2800)는 이후 연속 터미날(continuation terminal)("터미날 A1")로 진행한다.In one embodiment, the document manager 912 may already have a temporary save of the folders.xml file, in which case the document manager 912 simply provides a temporary save of the document to the XIOS application 2402 . However, the remainder of this description assumes that a temporary save of the requested document is not present in the document manager 912. [ The method 2800 proceeds to block 2806 where the document manager 912 obtains the XIOS communicator 2504 from the communication manager 2412 and passes the file request to the loading function of the XIOS communicator 2504. Method 2800 proceeds to block 2808 where the XIOS Communicator 2504 sends a request containing a folder ID for folders.xml to the appropriate XML Web service 2510 of the server-side component 2500. [ Next, at block 2810, the server-side component authenticates the user and routes the request to the XML Web service 2510. The method 2800 then proceeds to block 2812 where the XML Web service 2510 determines the folder database hosting the folder tree associated with the folder ID based at least in part on the contents of the folder ID. The method 2800 then proceeds to a continuation terminal ("terminal A1").

터미날 A1(도 28B)로부터, 메소드(2800)는 XML 웹 서비스(2510)가 요청된 폴더에 연관된 정보를 검색하기 위해 적합한 폴더 데이터베이스(2520)에 질의하는 블록(2814)로 진행한다. 이 검색된 정보는 폴더 접속 제어 목록(ACL)을 포함할 수 있으며, 또한 추가적인 폴더 메타데이터 정보를 포함할 수 있다. 다음으로, 메소드(2800)는 연속 터미날("터미날 B")및 이후 XML 웹 서비스(2510)가 폴더 정보를 folders.xml파일에 추가하는 블록(2816)으로 진행한다. 일 실시예에서, folders.xml파일에 추가된 폴더 정보는 폴더 ACL을 포함하지 않는다. 대신에 folders.xml파일은 요청한 사용자가 folders.xml파일 내 모든 폴더에 적어도 읽기 접속할 수 있다는 것을 암시적으로 표시한다. 폴더들의 ACL들에 관한 더 상세한 정보는 분리된 요청을 통해 이 실시예에서 획득될 수 있다. 이 기술의 일부 이점들의 예들은 folders.xml파일의 크기와 서버측 컴포넌트(2500)에 의해 수행되는 프로세싱의 복잡성이 최소로 유지된다는 것이다.From terminal A1 (FIG. 28B), the method 2800 proceeds to block 2814 where the XML Web service 2510 queries the appropriate folder database 2520 to retrieve information associated with the requested folder. The retrieved information may include a folder access control list (ACL), and may also include additional folder metadata information. Next, the method 2800 proceeds to block 2816 where the continuous terminal ("Terminal B") and subsequently the XML Web service 2510 adds the folder information to the folders.xml file. In one embodiment, the folder information added to the folders.xml file does not include a folder ACL. Instead, the folders.xml file implicitly indicates that the requesting user has at least read access to all folders in the folders.xml file. More detailed information regarding the ACLs of the folders may be obtained in this embodiment through separate requests. Examples of some of the benefits of this technique are that the size of the folders.xml file and the complexity of the processing performed by the server-side component 2500 is kept to a minimum.

여기서, XML 웹 서비스(2510)에 의해 해석되는 folders.xml파일은 폴더 ID에 의해 식별된 폴더만에 관련된 정보를 포함한다. 주어진 폴더에 대한 folders.xml파일에 대한 요청은 요청된 폴더의 서브 폴더들에 과한 정보를 또한 반환한다. 다수 폴더들에 대한 폴더 정보-각각은 서로 다르게 연관된 승인들(및 따라서 서로 다른 ACL들)을 가짐-는 단일 folders.xml파일로 클라이언트에게 반한되므로, 일치하는 ACL들을 가진 폴더들에 대한 정보만이 주어진 folders.xml파일에 포함되어야 한다는 것이 중요하다. 이를 위해, 메소드(2800)는, XML 웹 서비스(2510)가, 폴더 ID와 각 서브 폴더의 ACL을 포함하는 폴더 ID에 의해 식별된 폴더의 직속 서브폴더들에 연관된 정보를 추상화하기 위해 폴더 데이터베이스(2520)에 질의하는 블록(2818)로 진행한다. 이후 그 질의의 결과를 이용하여, 메소드(2800)는, 블록(282)과 시작하는 FOR 루프 및 FOR 루프의 시작을 나타내는 연속 터미날("터미날 C")로 진행한다. 터미날 C로부터, 메소드(2800)는 XML 웹 서비스(2510)이 서브 폴더의 ACL을 요청된 폴더의 ACL과 비교하는 블록(2822)으로 진행한다. 이후 메소드(2800)는 다른 연속 터미널("터미널 A2")로 진행한다. Here, the folders.xml file interpreted by the XML Web service 2510 includes information related only to the folder identified by the folder ID. The request to the folders.xml file for a given folder also returns information on the subfolders of the requested folder. Folder information for multiple folders - each with differently associated approvals (and thus different ACLs) - is infringed on the client by a single folder.xml file, so only information about folders with matching ACLs It is important to be included in the given folders.xml file. To this end, the method 2800 includes the following steps: the XML Web service 2510 sends a request to the folder database (e. G., The folder database) to abstract the information associated with direct subfolders of the folder identified by the folder ID, 2520, &lt; / RTI &gt; Using the results of the query thereafter, the method 2800 proceeds to block 282 and to a continuation terminal ("terminal C") that indicates the beginning of a FOR loop and a FOR loop beginning. From terminal C, the method 2800 proceeds to block 2822 where the XML Web service 2510 compares the ACL of the subfolder with the ACL of the requested folder. Method 2800 then proceeds to another continuous terminal ("terminal A2").

터미널 A2(도 28C)로부터, 메소드(2800)는, 서브 폴더의 ACL이 요청된 폴더의 ACL과 일치하는지를 판단하기 위하여 테스트가 수행되는 판단 블록(2824)로 계속된다. 판단 블록(2824)에서 테스트에 대한 답이 YES이면, 메소드(2800)는 터미날 B로 되돌아가고, 블록(2816)에서 현재 서브폴더를 folders.xml 파일에 추가하며, 메소드(2800)는 현재 서브폴더의 다른 서브폴더들에서 반복된다. 달리, 판단 블록(2824)에서 테스트에 대한 답이NO이면, 메소드(2800)는, 서브폴더에 관한 다른 정보들과 반대로, XML 웹 서비스(2510)가 서브폴더를 참조하는 XLINK를 folders.xml 파일에 추가하는 블록(2826)으로 진행한다.From terminal A2 (Fig. 28C), method 2800 continues to decision block 2824 where a test is performed to determine whether the ACL of the subfolder matches the ACL of the requested folder. If the answer to the test is YES in decision block 2824, then method 2800 returns to Terminal B and at block 2816 adds the current subfolder to the folders.xml file, method 2800 returns the current subfolder &Lt; / RTI &gt; Otherwise, if the answer to the test in decision block 2824 is NO, then method 2800 returns XLINK, in which XML Web service 2510 refers to the subfolder to the folders.xml file And then proceeds to block 2826 where it is added.

XLINK의 사용은, 별도의 승인 체크를 필요로 하는 정보를 클라이언트에 노출하지 않고도 서로 다른 ACL을 가진 서브폴더를 포함하는 새로운 folders.xml 파일을 요청하기에 충분한 정보를 클라이언트에 제공한다. 이는, 상술한 바와 같이, folders.xml 파일은 클라이언트가 적어도 그안에 포함된 각 폴더에 대한 적어도 읽기 접속을 할 수 있다는 암시적인 주장을 포함하고 있기 때문에 중요하다. 서브폴더가 요청된 폴더와 다른 ACL을 가지고 있다면(예를 들어, 서브폴더가 서로 다른 사용자에게 소유되어 있거나, 서브폴더가 서로 다른 그룹에서 공유되고 있는 등), 이 암시적인 주장은 그 서브폴더에 대해서는 참이 아니다. XLINK의 사용은, 이 암시적인 주장의 진실성이 여전히 유지되는 동안에 서브폴더에 대한 최소한의 정보가 클라이언트에 제공되도록 한다.The use of XLINK provides the client with enough information to request a new folders.xml file containing subfolders with different ACLs without exposing to the client any information that requires separate authorization checks. This is important because, as described above, the folders.xml file contains an implicit assertion that the client can at least have at least read access to each folder contained therein. If the subfolder has an ACL that differs from the requested folder (for example, if the subfolder is owned by a different user, or if the subfolder is shared by different groups) Not true. The use of XLINK ensures that the client has minimal information about the subfolder while the truth of this implicit assertion is still maintained.

판단 블록(2828)에서 테스트에 대한 답이 YES이면, 메소드(2800)는 연속 터미날 C로 진행하며, 다음 서브 폴더가 처리된다. 달리, 판단 블록(2828)에서테스트에 대한 답이 NO이면, 메소드(2800)는 다른 연속 터미날("터미날 A3")로 진행한다.If the answer to the test in decision block 2828 is YES, the method 2800 proceeds to the continuation terminal C and the next subfolder is processed. Otherwise, if the answer to the test in decision block 2828 is NO, method 2800 proceeds to another continuous terminal ("Terminal A3").

터미날 A3로부터, 메소드(2800)는, 동일한 폴더에 대한 미래 요청들을 신속히 처리하기 위해(클라이언트 요청들 사이에는 폴더 계층구조에 변경들이(일시 저장된 folders.xml 파일이 재생성되어야 하는) 없었다고 가정함) XML 웹 서비스(2510)가 완전한 folders.xml 파일의 사본을 일시 저장하는 블록(2830)으로 진행한다. 다음으로, 블록(2832)에서, XML 웹 서비스(2510)는 완전한 folders.xml 파일을 XIOS 커뮤니케이터(2504)에 반환한다. 메소드(2800)는, XIOS 커뮤니케이터(2504)가 folders.xml 파일은 문서 매니저(912)에 제공하는 블록(2834)로 진행한다. 다음에, 블록(2836)에서, 문서 매니저(912)는 folers.xml 파일을 일시 저장하고, folders.xml 파일을 XIOS 어플리케이션(2402)에 제공한다. 메소드(2800)는 이후 종료 블록(2836)으로 진행하고 종료한다.From terminal A3, the method 2800 can be used to expedite future requests for the same folder (assuming no changes have been made to the folder hierarchy between client requests (the temporarily stored folders.xml file has to be regenerated) The web service 2510 proceeds to block 2830 where it temporarily stores a copy of the complete folders.xml file. Next, at block 2832, the XML Web service 2510 returns the complete folders.xml file to the XIOS communicator 2504. [ The method 2800 proceeds to block 2834 where the XIOS Communicator 2504 provides the folders.xml file to the document manager 912. Next, at block 2836, the document manager 912 temporarily stores the folers.xml file and provides the folders.xml file to the XIOS application 2402. The method 2800 then proceeds to end block 2836 and ends.

도 28E는 상술한 메소드(2800)의 실시예에 의해 생성된 folders.xml 파일(2840)의 일 실시예를 설명한다. 도 28E의 목적을 위해, XML 파일 시스템(2500)는 도 8A의 트리 컴포넌트(800)에 도시된 폴더 계층구조와 같은 폴더 계층구조를 저장하고, 사용자는 폴더 "RESEARCH"에 대한 folders.xml 파일을 요청했다고 가정한다. 또한 도 28E에는 한 세트의 줄 번호(2842)가 설명의 편의를 위해 포함되었다.Figure 28E illustrates one embodiment of the folders.xml file 2840 generated by the embodiment of method 2800 described above. 28E, the XML file system 2500 stores a folder hierarchy, such as the folder hierarchy shown in the tree component 800 of FIG. 8A, and the user saves the folders.xml file for the folder "RESEARCH " It is assumed that you requested. Also in Fig. 28E, a set of line numbers 2842 is included for convenience of explanation.

도 28E에서 보이는 바와 같이, 메소드(2800)는 요청에 대한 응답으로 folders.xml 파일(2840)을 생성하였다. 파일(2840)의 1-4줄은 XML 버전과 문서의 나머지 부분에 대한 스키마를 포함한다. 메소드(2800)는 요청된 폴더 "RESAERCH"에 대한 항목을 생성하였으며, 일치하는 ACL을 가진 다른 폴더들을 추가하기 위해 요청된 폴더의 서브폴더들을 열거하였다. 이 경우에, 도 8A에 도시된 폴더들 "PERSONAL", "WORK" 및 "LETTERS"와 파일(2840)의 7, 8, 12줄은 각각 일치하는 ACL들을 가졌음이 발견되었다. 메소드는 이 폴더들의 일치하는 ACL들을 가진 서브폴더들을 추가하기 위해 또한 진행하였다. 이 경우에, 폴더들 "PERSONAL" 및 "LETTERS"는 서브폴더를 가지지 않으나, 폴더 "WORK"는 9 및 10줄에서 발견된 일치하는 ACL들을 갖는 두 서브폴더 "BROWSERS" 및 "VIDEO ENCODING"를 가졌다. 각 폴더에 대해, 메소드(2800)는 제한된 메타데이터 정보를 파일(2840)에 추가하였다. 여기서 설명된 실시예에서, 메소드(2800)는 각 폴더에 대한 "이름", "id" 및 "종류"를 포함하는 메타데이터를 추가하였으나, 다른 실시예들에서는, 더 많거나 더 적은 메타데이터가 추가될 수 있다. 더욱이, "id" 요소들이 단순함을 위해 정수로 표시되었지만, 상술한 바와 같이, "id" 값들은 폴더 정보를 저장하고 있는 폴더 데이터베이스(2520)를 나타내기 위해 더 복잡한 정보를 포함할 수 있다. 다른 실시예에서, 정수값과 같은 단순한 값들은 "id" 요소들에 사용될 수 있으며, 룩업은 폴더 정보를 저장하고 있는 폴더 데이터베이스(2520)를 결정하기 위해 수행될 수 있다.As shown in FIG. 28E, the method 2800 has generated the folders.xml file 2840 in response to the request. A line 1-4 of the file 2840 includes an XML version and a schema for the remainder of the document. Method 2800 created an entry for the requested folder "RESAERCH " and enumerated the subfolders of the requested folder to add other folders with matching ACLs. In this case, it has been found that the folders "PERSONAL", "WORK" and "LETTERS" shown in FIG. 8A and the lines 7, 8, and 12 of the file 2840 respectively have matching ACLs. The method also proceeded to add subfolders with matching ACLs on these folders. In this case, the folders "PERSONAL" and "LETTERS" do not have subfolders, but the folder "WORK " has two subfolders" BROWSERS "and" VIDEO ENCODING "with matching ACLs found on lines 9 and 10 . For each folder, the method 2800 has added limited metadata information to the file 2840. In the embodiment described herein, the method 2800 has added metadata including "name", "id" and "type" for each folder, but in other embodiments more or less metadata Can be added. Moreover, although the "id" elements are represented as integers for simplicity, as described above, the "id" values may include more complex information to represent the folder database 2520 storing the folder information. In other embodiments, simple values such as integer values may be used for the "id" elements, and lookup may be performed to determine the folder database 2520 storing the folder information.

메소드(2800)는, 폴더 "RESEARCH"의 ACL과 일치하는 ACL을 가지지 않은 폴더 "EMAIL"에 대한 항목을 또한 생성하였다. "EMAIL"에 대한 항목은, 13-19줄에 도시된 것처럼, 폴더에 대한 최소한의 정보를 포함하고 있는데, 단지 "이름" 요소만을 보여준다. (폴더 "EMAIL"의 ACL에 일치하는 ACL을 가진 어떠한 서브폴더들뿐만이 아니라) 폴더 "EMAIL" 에 대한 정보를 포함하는 새로운 folders.xml 파일을 생성하기 위해 사용자에 의해 트래버스될 수 있는 XLINK를 포함한다. The method 2800 also generates an entry for the folder "EMAIL" that does not have an ACL matching the ACL of the folder "RESEARCH ". The entry for "EMAIL" contains minimal information about the folder, as shown on line 13-19, showing only the "name" element. Includes an XLINK that can be traversed by the user to create a new folders.xml file that contains information about the folder "EMAIL" (as well as any subfolders with ACLs that match the ACL of the folder "EMAIL" .

일 실시예에서, folders.xml 파일은 폴더 계층구조에 관한 정보를 포함하지만, 폴더 내의 개별 파일들에 대한 정보는 포함하지 않는다. 도 29는, folders.xml 파일이 파일 목록 정보를 포함하지 않을 때 주어진 폴더에서 파일들의 목록을 검색하기 위한 메소드(2900)의 일 실시예를 설명한다. 시작 블록(2902)으로부터, 메소드(2900)는 XIOS 어플리케이션(2402)이 특정 폴더의 폴더 ID를 포함하는 파일 목록 요청을 생성하고 파일 목록 요청을 문서 매니저(912)에 제출하는 블록(2904)으로 계속한다. 상술한 바와 같이, 폴더 ID는 특정 폴더의 컨텐츠에 관한 정보를 저장하는 폴더 데이터베이스(2520)를 나타내는 정보를 포함한다. 파일 목록 요청은 희망하는 파일 종류들, 정렬 선호들(sorting preferences), 기간 필터들(date range filters) 등과 같은 추가 옵션을 더 포함할 수 있다. 다음에, 메소드(2900)는, 문서 매니저(912)가 통신 매니저(2412)로부터 XIOS 커뮤니케이터(2504)를 획득하고, 파일 목록 요청을 XIOS 커뮤니케이터(2504)로 패스하는 블록(2906)으로 계속한다. 다음에, 블록(2908)에서, XIOS 커뮤니케이터(2504)는 서버측 컴포넌트(2500)의 적합한 XML 웹 서비스(2510)로 질의를 전송한다. 메소드(2900)는 이후, 서버측 컴포넌트(2500)가 사용자를 인증하고, 그 요청을 요청된 폴더(2910)에 대한 승인들을 확인하는XML 웹 서비스(2510)로 라우팅하는 블록(2910)으로 계속한다. 요청된 폴더에 대한 승인들을 확인하기 위해, XML 웹 서비스(2510)는, 주어진 패어런트 폴더에 대한 ACL을 검색하고, ACL이 인증된 사용자에 대한 접속을 허가하는지를 판단하기 위해 폴더 데이터베이스(2520)에 질의한다. In one embodiment, the folders.xml file contains information about the folder hierarchy, but does not include information about individual files within the folder. 29 illustrates one embodiment of a method 2900 for retrieving a list of files in a given folder when the folders.xml file does not contain file listing information. From the start block 2902 the method 2900 continues to block 2904 where the XIOS application 2402 generates a file list request containing the folder ID of the particular folder and submits the file list request to the document manager 912 do. As described above, the folder ID includes information indicating the folder database 2520 that stores information on the contents of a specific folder. The file list request may further include additional options such as desired file types, sorting preferences, date range filters, and the like. The method 2900 then continues to block 2906 where the document manager 912 obtains the XIOS communicator 2504 from the communication manager 2412 and passes the file list request to the XIOS communicator 2504. Next, at block 2908, the XIOS Communicator 2504 sends the query to the appropriate XML Web service 2510 of the server-side component 2500. The method 2900 then continues to block 2910 where the server-side component 2500 authenticates the user and routes the request to an XML Web service 2510 that acknowledges the authorizations for the requested folder 2910 . To confirm approvals for the requested folder, the XML Web service 2510 retrieves the ACL for the given parent folder, and sends the ACL to the folder database 2520 to determine whether the ACL allows access to the authenticated user Query.

사용자가 인증되고 승인들이 검증되면, 메소드(2900)는, XML 웹 서비스(2510)가 요청된 폴더 ID에 상응하는 인덱싱 서버(2518)를 결정하고, 질의를 인덱싱 서버(2518)로 전송하는 블록(2912)로 진행한다. 상술한 바와 같이, 폴더 ID 내에 포함된 정보는, 상응하는 인덱싱 서버(2518)를 결정하기 위해 XML 웹 서비스(2510)에 의해 이용될 수 있다. 다음에, 블록(2914)에서, 인덱싱 서버(2518)는 요청된 폴더에 대한 파일 목록을 검색하기 위해 인덱스를 질의하며, 목록의 각 파일의 ACL에 관한 결과를 처리한다. 일 실시예에서, 인덱싱 서버(2518)의 인덱스는 정보의 풀텍스트 인덱스이고, 각 파일에 대해 인덱스된 필드들은 패어런트 폴더의 폴더 ID를 포함한다. 목록내의 각 파일의 ACL에 관한 결과의 프로세싱은 인증된 사용자가 억세스 할 수 있는 파일들에 대해서만 폴더 목록에 추가되는 것을 보장한다. 일 실시예에서, 이 프로세싱은, 프로세싱 타임을 줄이기 위해 생략되며, 대신에 사용자 승인들은 사용자가 파일들 중의 하나에 접속하려고 할 때 강화된다.If the user is authenticated and the approvals are verified, the method 2900 determines whether the XML Web service 2510 determines the indexing server 2518 corresponding to the requested folder ID and sends the query to the indexing server 2518 2912). As described above, the information contained within the folder ID may be used by the XML Web service 2510 to determine the corresponding indexing server 2518. [ Next, at block 2914, the indexing server 2518 queries the index to retrieve the list of files for the requested folder, and processes the results for each file's ACL in the list. In one embodiment, the index of the indexing server 2518 is a full text index of information, and the indexed fields for each file include the folder ID of the parent folder. The processing of the results on the ACL of each file in the list ensures that only those files that the authenticated user can access are added to the folder list. In one embodiment, this processing is skipped to reduce processing time, and instead user approvals are enhanced when the user tries to access one of the files.

다음에, 블록(2916)에서, 인덱싱 서버(2518)는 인덱스에 의해 반환된 파일들의 목록을, 인덱스로부터 검색된 제한된 파일 메타데이터와 함께, 적합한 포맷(예를 들어, ATOM, RSS 또는 다른 적합한 포맷)의 피드로서, 포맷을 만들며, 클라이언트측 컴포넌트(2400)로 이를 반환한다. 제한된 파일 메타데이터는 최종 수정일자, 작성자, 파일 종류 등과 같은 항목들을 포함할 수 있다. 메소드(2900)는 이후 종료 블록(2918)으로 계속하고 종료한다.Next, at block 2916, the indexing server 2518 retrieves the list of files returned by the index in a suitable format (e.g., ATOM, RSS or other suitable format), along with the restricted file metadata retrieved from the index. And returns it to the client-side component 2400. The client- Restricted file metadata may include items such as last modified date, author, file type, and the like. The method 2900 then continues to end block 2918 and ends.

데이터는 XML 파일 시스템에서 협업적으로 저장되고 다수 클라이언트들이 주어진 패어런트 폴더를 업데이트하거나 동일한 파일을 생성할 수 있으므로, 어떤 실시예들에서 XML 파일 시스템에 파일의 단순한 생성은 파일 생성 클라이언트와 서버측 컴포넌트(2500)의 측면들 사이에 관리(coordination)를 포함할 수 있다. 도 30A-30C는 XML 파일 시스템 내에서 파일을 생성하는 메소드(300)의 실시예를 설명한다. 시작 블록(3002)으로부터, 메소드(3000)는, XIOS 어플리케이션(2402)이 파일 이름과 새로운 파일에 대한 목적 폴더를 특정하고, 원시 파일 데이터 컨텐츠를 초기화하는 블록(3004)으로 진행한다. 원시 파일 데이터 컨텐츠의 초기화는 새로운, 빈 파일을 생성하거나, 존재하는 컨텐츠를 원시 파일 데이터에 삽입(사용자가 이미 생성하기 시작한 컨텐츠를 처음에 저장하는 경우)할 수 있다. 다음에, 블록(3006)에서, XIOS 어플리케이션(2402)은 파일 생성 요청을 문서 매니저(912)로 제출하며, 파일 생성 요청은 파일 이름, 목적 폴더 ID, 및 원시 파일 데이터 컨텐츠를 포함한다. 일 실시예에서, 이 요청의 적어도 일부는 URL로 포맷이 만들어진다. 메소드(3000)는 이후, 문서 매니저(912)가 통신 매니저(2412)로부터 XIOS 커뮤니케이터(2504)를 획득하고 파일 생성 요청을 XIOS 커뮤니케이터(2504)로 패스하는 블록(3008)으로 진행한다. 다음에, 블록(3010)에서, XIOS 커뮤니케이터(2504)는 새로운 파일을 생성하는 요청을 서버측 컴포넌트(2500)의 XML 웹 서비스(2510)으로 전송한다. 메소드(3000)는 이후, 서버측 컴포넌트(2500)가 사용자를 인증하고, 그 요청을 XML 웹 서비스(2510)로 라우팅하는 블록(3012)으로 진행한다. Data may be stored collaboratively in an XML file system and multiple clients may update a given parent folder or create the same file so that in some embodiments a simple creation of a file in an XML file system may result in a file creation client and a server- And may include coordination between the sides of the display unit 2500. 30A-30C illustrate an embodiment of a method 300 for generating a file within an XML file system. From start block 3002, the method 3000 proceeds to block 3004 where the XIOS application 2402 specifies the file name and the destination folder for the new file and initializes the source file data content. The initialization of the raw file data contents may create a new, empty file, or insert existing content into the raw file data (if the user has already stored the content that they have already created). Next, at block 3006, the XIOS application 2402 submits a file creation request to the document manager 912, which includes a file name, a destination folder ID, and a source file data content. In one embodiment, at least a portion of the request is formatted with a URL. The method 3000 then proceeds to block 3008 where the document manager 912 obtains the XIOS communicator 2504 from the communications manager 2412 and passes the file creation request to the XIOS communicator 2504. Next, at block 3010, the XIOS Communicator 2504 sends a request to create a new file to the XML Web service 2510 of the server-side component 2500. The method 3000 then proceeds to block 3012 where the server-side component 2500 authenticates the user and routes the request to the XML Web service 2510.

다음에, 메소드(3000)는 이후, XML 웹 서비스(2510)가 목적 폴더를 호스팅하는 폴더 데이터베이스를 결정하고, 사용자가 목적 폴더에서 파일을 생성하는 승인을 가지고 있는지를 판단하는 블록(3014)로 진행한다. 상술한 바와 같이, 목적 폴더의 폴더 ID는, XML 웹 서비스(2510)가 목적 폴더에 연관된 정보를 포함하는 폴더 데이터베이스를 결정하도록 하는 정보를 포함한다. 상술한 바와 같이, XML 웹 서비스(2510)는, 목적 폴더에 대한 ACL을 검색하기 위해 폴더 데이터베이스(2520)에 질의하고, ACL이 인증된 사용자에게 적합한 권한들을 부여했는지를 판단함으로써, 사용자가 파일을 생성하는 승인을 가지고 있음을 보장할 수 있다. 메소드(3000)는 이후, 연속 터미날("터미날 A1")로 진행한다.The method 3000 then proceeds to block 3014 where the XML Web service 2510 determines the folder database hosting the destination folder and determines whether the user has permission to create the file in the destination folder do. As described above, the folder ID of the destination folder contains information that allows the XML Web service 2510 to determine the folder database containing the information associated with the destination folder. As described above, the XML Web service 2510 queries the folder database 2520 to retrieve the ACL for the destination folder, and determines whether the ACL has granted appropriate rights to the authenticated user, You can ensure that you have the authorization to generate. The method 3000 then proceeds to a continuous terminal ("terminal A1").

터미날 A1으로부터, 메소드(3000)는, XML 웹 서비스(2510)가 특정된 목적 폴더가 특별한 폴더인지를 확인하는 블록(3016)으로 진행한다. 일 실시예에서, XML 파일 시스템에는, 스토리지 폴더와 특별 폴더라는 두 종류의 폴더들이 있다. 스토리지 폴더는, 주로 파일들과 다른 폴더들을 저장한다는 점에서, 일반 파일 시스템에 있는 폴더와 매우 동일하다. 특별 폴더는, 이에 반해, 통신의 다른 형태를 추상화하기 위해 XML 파일 시스템에 의해 이용된다. 이는 XIOS 어플리케이션(2402)이 스토리지 내의 파일과 상호작용하는 것과 동일한 방법으로 이 통신의 다른 형태와 상호작용하도록 하므로, 어플리케이션 개발을 단순화한다. 예를 들어, 특별 폴더는 이메일 특별 폴더로 지정될 수 있으며, 이메일 특별 폴더내에서의 새로운 파일 생성은 이메일이 전송되도록 한다. 일 실시예에서, 각 사용자에게는 도착 특별 폴더 또는 "수신함"과 발송 특별 폴더 또는 "발송함"이라는 두 개의 특별 폴더들이 있다. 다른 실시예들에서, 더 많거나 적은 특별 폴더들이 존재한다.From terminal A1, the method 3000 proceeds to block 3016 where the XML Web service 2510 verifies that the specified destination folder is a special folder. In one embodiment, the XML file system has two types of folders: a storage folder and a special folder. A storage folder is very much the same as a folder in a normal file system, in that it mainly stores files and other folders. Special folders, on the other hand, are used by the XML file system to abstract other forms of communication. This simplifies application development by allowing the XIOS application 2402 to interact with other forms of this communication in the same way that it interacts with files in the storage. For example, a special folder can be designated as an email special folder, and the creation of a new file within an email special folder allows the email to be sent. In one embodiment, each user has two special folders: an arriving special folder or "inbox " and a special dispatch folder or" dispatch ". In other embodiments, there are more or fewer special folders.

메소드(3000)는 특정된 목적 폴더가 특별 폴더인지를 판단하는 테스트가 수행되는 판단 블록(3018)으로 계속한다. 판단 블록(3018)에서 테스트에 대한 답이 YES이면, 메소드(3000)는 그 요청이 이후 프로세싱을 위해 특별 폴더에 연관된 서버 프로세스로 전송되는 블록(3019)로 진행한다. 그 프로세싱의 실시예의 예는 도 36과 첨부된 텍스트에 설명된 메소드(3600)에 관해 이하에서 설명된다. 메소드는 연속 터미날("터미날 B")로 진행한다.The method 3000 continues to a decision block 3018 where a test is performed to determine if the specified destination folder is a special folder. If the answer to the test is YES at decision block 3018, the method 3000 proceeds to block 3019 where the request is forwarded to the server process associated with the special folder for later processing. An example of an embodiment of the processing is described below with respect to the method 3600 described in Figure 36 and attached text. The method proceeds to a continuous terminal ("terminal B").

도 30B가 메소드(3600)와 같은 메소드는 특별 폴더에서 새로운 파일이 생성되기 전에 발생한다고 설명하지만, 이는 반드시 그 경우일 필요는 없다. 일 실시예에서, 판단 블록93018)에서 수행된 테스트는 터미날 B(도 30C)와 같이, 파일이 생성된 이후에 수행될 수도 있다. 그러한 실시예에서, 특별 폴더를 모니터하는 서버 프로세스는, 특별 폴더에서 생성된 파일 상에서 작업하는데, 클라이언트로부터의 요청에 바로 작업하는 것에 반대된다. 서버 프로세스는 특별 폴더의 컨텐츠를 폴링함으로써 파일의 생성을 통지 받는다. 다른 실시예에서, 서버 프로세스는 메시지 서버 상에서 프로세스에 연관된 신청 목록을 생성하거나 특별 폴더를 신청 목록에 추가함으로써 파일의 생성을 통지 받으며, 그로 인해 예를 들어, 메소드(3000)의 블록(3030)에서, 파일의 생성에 대하여 메시지 서버로부터 통지를 수신한다. 30B explains that methods such as method 3600 occur before a new file is created in a special folder, but this is not necessarily the case. In one embodiment, the test performed in decision block 93018 may be performed after the file is created, such as terminal B (Figure 30C). In such an embodiment, a server process monitoring a special folder is working on a file created in a special folder, opposed to working directly on a request from a client. The server process is notified of the creation of the file by polling the contents of the special folder. In another embodiment, the server process is notified of the creation of a file by creating an application list associated with the process on the message server or by adding a special folder to the application list, thereby causing, for example, , And receives a notification from the message server regarding generation of the file.

판단 블록(3018)에서 테스트의 답이 NO이면, 메소드(3000)는, 파일 서버(2516)가 새로운 파일의 원시 파일 데이터를 위한 공간을 파일 서버에 연관된 스토리지 장소에 할당하고, 그 스토리지 위치에 초기 원시 파일 데이터를 저장하는 블록(3020)으로 진행한다. 다음에, 블록(3022)에서, 폴더 데이터베이스(2520)는 폴더 데이터베이스에 새로운 파일에 대한 항목을 생성하며, 그 항목은 파일에 연관된 제한된 메타데이터를 포함하며, 파일 이름, 생성일자, 고유 파일 ID, 스토리지 위치 등을 포함한다. 일 실시예에서, 파일은 단일 파일 ID에 연관된 하나 이상의 파일 스트림을 가질 수 있다. 그 경우에, 파일 서버(2516)는 각 스트림에 대하여 스토리지 위치에 분리된 공간을 할당하며, 폴더 데이터베이스(2520)에 저장된 메타데이터는 파일 ID를 모든 스토리지 위치들과 연관시킨다. XML 파일 시스템은 파일에 연관된 모든 스트림들을 이용가능한 파일의 메타데이터를 통해 클라이언트에 노출한다.If the answer to the test in decision block 3018 is NO, the method 3000 determines that the file server 2516 allocates space for the raw file data of the new file to the storage location associated with the file server, And proceeds to block 3020 where raw file data is stored. Next, at block 3022, the folder database 2520 creates an entry for the new file in the folder database, which entry contains the restricted metadata associated with the file and includes the file name, creation date, unique file ID, Storage location, and the like. In one embodiment, the file may have one or more file streams associated with a single file ID. In that case, the file server 2516 allocates a separate space to the storage location for each stream, and the metadata stored in the folder database 2520 associates the file ID with all storage locations. The XML file system exposes all streams associated with the file to the client through the available file metadata.

메소드(3000)는 이후, 폴더 데이터베이스(2520)가 새로운 파일을 특정된 목적 폴더에 연관시티는 블록(3024)로 진행한다. 패어런트 폴더와 새로운 파일 사이에 생성된 연관은, 폴더 내에 저장된 파일들을 검색할 때, XML 웹 서비스(2510)가 폴더 데이터베이스(2520)와 인덱스 서버(2518)에 폴더 ID를 이용하여 질의할 수 있도록 한다. 메소드(3000)는 이후 다른 연속 터미날("터미날 A2")로 진행한다.The method 3000 then proceeds to block 3024 where the folder database 2520 associates the new file with the specified destination folder. The association created between the parent folder and the new file is such that the XML Web service 2510 can query the folder database 2520 and the index server 2518 using the folder ID when searching for files stored in the folder do. The method 3000 then proceeds to another continuous terminal ("terminal A2").

터미날 A2로부터(도 30C), 메소드(3000)는 XML 웹 서비스(2510)가 새로운 파일에 대한 메타데이터를 인덱스 서버(2518)로 전송하는 블록(3026)으로 계속한다. 이 메타데이터는 폴더 데이터베이스에 의해 저장된 동일한 메타데이터일 수 있으며, 이는 메타데이터의 빠른 풀텍스트를 검색을 가능하게 하기 위해 인덱스 서버(2518)로 카피된다. 인덱스 서버(2518)로 전송된 메타데이터는, 풀텍스트 인덱싱이 유익하도록 하는 폴더 데이터베이스에 저장된 이상의 정보, 예를 들어, 사용자 또는 어플리케이션 특정 속성들, 작성자 정보, 사용자 코메트들 등을 추가적으로 포함할 수 있다. 인덱스 서버(2518)로 전송된 메타데이터는 그 파일에 연관된 하나 이상의 파일 스트림들로부터 직접 추상화된 정보를 또한 포함할 수 있다.From terminal A2 (FIG. 30C), the method 3000 continues to block 3026 where the XML Web service 2510 sends the metadata for the new file to the index server 2518. This metadata may be the same metadata stored by the folder database, which is copied to the index server 2518 to enable fast full text search of the metadata. Metadata sent to the index server 2518 may additionally include further information stored in the folder database that allows full-text indexing to be beneficial, such as user or application specific attributes, author information, user commits, . Metadata sent to the index server 2518 may also include abstracted information directly from one or more file streams associated with the file.

다음에, 블록(3028)에서, XML 웹 서비스(2510)는, 새로운 파일이 특정된 목적 폴더에서 생성되었다는 통지를 메시지 서버(2512)로 전송한다. 다른 실시예에서, 이 통지는, 패어런트 폴더에 대한 새로운 파일의 연관을 검출하면 폴더 데이터베이스(2520) 또는 인덱스 서버(2518)에 의해 전송될 수도 있다. 메소드(3000)는 이후, 메시지 서버(2512)가 신청 목록에 특정된 목적 폴더를 갖는 각 클라이언트에게 업데이트 통지를 전송하는 블록(3030)으로 진행한다. 다음에, 블록(3032)에서, 클라이언트는, 새로운 파일을 클라이언트의 신청 리스트에 추가하라는 요청을 XML 웹 서비스(2510)를 통해 메시지 서버로 전송하며, 그 요청은 파일 ID를 포함한다. 다음에, 블록(3034)에서, 메시지 서버(2512)는 클라이언트의 신청 리스트에 새로운 파일을 추가한다. 이후, 메소드는 터미날 B로 진행하며, 이후 메소드(3000)이 종료하는 종료 블록(3036)으로 진행한다.Next, at block 3028, the XML Web service 2510 sends a notification to the message server 2512 that a new file has been created in the specified destination folder. In another embodiment, this notification may be sent by the folder database 2520 or index server 2518 upon detecting the association of a new file to the parent folder. The method 3000 then proceeds to block 3030 where the message server 2512 sends an update notification to each client having a destination folder specified in the application list. Next, at block 3032, the client sends a request to the message server via XML Web service 2510 to add a new file to the client's request list, which includes the file ID. Next, at block 3034, the message server 2512 adds a new file to the client's application list. The method then proceeds to terminal B and then proceeds to end block 3036 where method 3000 terminates.

도 31A-31E는, XML 파일 시스템 내에서 현존하는 파일들을 오픈하기 위한 메소드(3100)의 일 실시예를 설명한다. 시작 블록(3102)으로부터, 메소드(3100)는, 연속 터미날("터미날 B")와 출구 터미날("터미날 C") 사이에 정의된 한 세트의 메소드 단계들(3104)로 계속한다. 메소드 단계들(3104)의 세트는 공유되지 않고 있는 현존하는 파일(다시 말해, 다른 클라이언트에 의해 현재 오픈되지 않은 파일)을 오픈하는 메소드를 설명한다. 터미날 B(도 31B)로부터, 메소드(3100)는 제1 클라이언트 상의 XIOS 어플리케이션(2402)이 문서 매니저(912)로부터 파일을 요청하는 블록(3110)으로 진행하며, 그 요청은 파일 ID를 포함한다. 일 실시예에서, 요청은 URL의 형태이다. 요청은 새롭게 생성된 URL에 합체된 파일 ID를 포함할 수 있거나, 제1 클라이언트는 파일 목록 안에 포함된 파일 URL과 같이, 파일에 접근할 수 있는 URL을 이미 가지고 있을 수 있다. 일 실시예에서, URL은 파일 ID 자체를 포함하지 않을 수 있으나, 대신에 파일 ID가 유도될 수 있는 정보는 포함한다. Figures 31A-31E illustrate one embodiment of a method 3100 for opening existing files in an XML file system. From start block 3102, the method 3100 continues with a set of method steps 3104 defined between a continuous terminal ("terminal B") and an exit terminal ("terminal C"). The set of method steps 3104 describes a method for opening an existing file that is not shared (in other words, a file that is not currently open by another client). From Terminal B (FIG. 31B), the method 3100 proceeds to block 3110 where the XIOS application 2402 on the first client requests a file from the document manager 912, which request includes a file ID. In one embodiment, the request is in the form of a URL. The request may include a file ID incorporated into the newly created URL, or the first client may already have a URL accessible to the file, such as a file URL contained within the file list. In one embodiment, the URL may not include the file ID itself, but instead includes information from which the file ID may be derived.

다음에, 블록(3112)에서, 문서 매니저(912)는 통신 매니저(2412)로부터 XIOS 커뮤니케이터(2504)를 획득하며, 파일 요청을 XIOS 커뮤니케이터(2504)로 패스한다. 메소드(3100)는 이후, XIOS 커뮤니케이터(2504)가 파일에 대한 요청을 서버측 컴포넌트(2506)의 적합한 XML 웹 서비스(2510)로 전송하는 블록(3114)로 진행하며, 요청은 파일 ID를 포함한다. 상술한 바와 같이, 요청은 파일 ID를 포함하는URL 형태일 수 있거나, 대신에 파일 ID가 유도될 수 있는 정보를 포함할 수 있다. 다음에, 블록(3116)에서, 서버측 컴포넌트(2506)는 사용자를 인증하고, 요청을 XML 웹 서비스(2510)로 라우팅한다. Next, at block 3112, the document manager 912 obtains the XIOS communicator 2504 from the communication manager 2412 and passes the file request to the XIOS communicator 2504. The method 3100 then proceeds to block 3114 where the XIOS Communicator 2504 sends a request for the file to the appropriate XML Web service 2510 of the server-side component 2506, where the request includes a file ID . As described above, the request may be in the form of a URL containing a file ID, or may instead include information from which a file ID may be derived. Next, at block 3116, the server-side component 2506 authenticates the user and routes the request to the XML Web service 2510.

일 실시예에서, 요청 내에 포함된 파일 ID 또는 파일 URL은, XML 웹 서비스(2510)가 파일을 획득하기 위해 적합한 폴더 데이터베이스(2520), 파일 서버(2516) 또는 트랜잭션 코디네이터(2522)를 결정하는 것을 돕기 위해, 파일이 존재하는 파일 서버(2516)를 나타내는 정보를 또한 포함할 수 있다. 다른 실시예에서, 요청은 패어런트 폴더의 폴더 ID를 또한 포함할 수 있으며, XML 웹 서비스(2510)는 폴더 ID 내에 포함된 정보에 기초하여 파일을 획득하기 위해 적합한 데이터 스토리지 서버들을 결정할 수 있다. 단일 파일 요청에 대해 반드시 접촉되어야 하는 서로 다른 서버들의 수와, 따라서 파일 ID 또는 파일 URL에서 제공하는 정보의 양은 데이터베이스가 어떻게 분할되어 있는지에 의존하며, 스케일러빌러티의 양은 특정 실시예에 의해 제공된다.  In one embodiment, the file ID or file URL included in the request is determined by the XML Web service 2510 determining the appropriate folder database 2520, file server 2516, or transaction coordinator 2522 to obtain the file To help, the file may also include information indicating the file server 2516 on which the file resides. In another embodiment, the request may also include a folder ID of the parent folder, and the XML Web service 2510 may determine the appropriate data storage servers to obtain the file based on the information contained within the folder ID. The number of different servers that must be contacted for a single file request and therefore the amount of information provided in the file ID or file URL depends on how the database is partitioned and the amount of scalability is provided by the particular embodiment .

다음에, 블록(3117)에서, XML 웹 서비스(2510)는 제1 클라이언트의 사용자가 파일을 오픈하는 승인을 가지고 있는지를 확인하며 파일에 대한 요청을 적합한 트랜잭션 코디네이터(2522)에 제출한다. 일 실시예에서, XML 웹 서비스(2510)는 적합한 폴더 데이터베이스(2520로부터 파일에 대한 ACL을 검색하고, ACL이 인증된 사용자가 파일에 접속할 수 있도록 하는지를 확인함으로써 클라이언트 승인들을 확인한다. 다음에, 블록(3118)에서, 트랜잭션 코디네이터(2522)는 메시지 서버(2512)가 요청된 파일을 제1 클라이언트의 신청 목록에 추가하도록 지시한다. 메소드(3100)는 이후 트랜잭션 코디네이터(2522)가 파일이 현재 공유되고 있는지를 판단하는 블록(3119)로 진행한다. 메소드(3100)는 이후 연속 터미날("터미날 B1")로 진행한다.  Next, at block 3117, the XML Web service 2510 confirms that the user of the first client has authorization to open the file and submits the request to the appropriate transaction coordinator 2522 for the file. In one embodiment, the XML Web service 2510 validates client approvals by retrieving the ACLs for the files from the appropriate folder database 2520 and verifying that the ACL allows the authenticated user to access the file. Next, The transaction coordinator 2522 directs the message server 2512 to add the requested file to the first client's application list. The method 3100 then continues until the transaction coordinator 2522 determines that the file is currently shared The method 3100 proceeds to block 3119. The method 3100 then proceeds to a continuous terminal ("terminal B1").

터미날 B1(도 31C)로부터, 메소드(3100)는 파일이 현재 공유되고 있는지를 판단하는 테스트가 수행되는 판단 블록(3120)으로 진행한다. 판단 블록(3120)에서 테스트에 대한 답이 YES이면, 메소드는 연속 터미널("터미날 D1")로 진행한다. 이와 달리, 판단 블록(3120)에서 테스트에 대한 답이 NO이면, 메소드(3100)는 트랜잭션 코디네이터(2522)가 원시 파일 데이터를 저장하는 파일 서버(2516)을 결정하기 위해 적합한 폴더 데이터베이스(2520)에 질의하는 블록(3122)로 진행한다. 다음에, 블록(3124)에서, 트랜잭션 코디네이터(2522)는 적합한 파일 서버(2516)로부터 원시 파일 데이터를 검색한다. 이후, 블록(3126)에서, 트랜잭션 코디네이터(2522)는 원시 파일 데이터를 FALSE로 설정된 공유 플래그와 함께 XML 웹 서비스(2510)으로 반환한다. 다음에, 블록(3128)에서, XML 웹 서비스(2510)는 원시 파일 데이터를 FALSE로 설정된 공유 플래그와 함께 제1 클라이언트의 XIOS 커뮤니케이터(2504)로 반환한다. 메소드(3100)는 이후, XIOS 커뮤니케이터(2504)가 원시 파일 데이터에 대한 접속을 문서 매니저(912)로 제공하는 블록(3129)로 진행하며, XIOS 커뮤니케이터는 차례로 원시 파일 데이터에 대한 접속을 XIOS 어플리케이션(2402)로 제공한다. 메소드(3100)는 이후 다른 연속 터미날("터미날 C")로 진행한다.From terminal B1 (Fig. 31C), method 3100 proceeds to decision block 3120 where a test is performed to determine if a file is currently being shared. If the answer to the test in decision block 3120 is YES, the method proceeds to a continuation terminal ("terminal D1"). Alternatively, if the answer to the test is NO at decision block 3120, then the method 3100 can be used by the transaction coordinator 2522 to determine the file server 2516 that stores the raw file data in the appropriate folder database 2520 Proceed to query block 3122. Next, at block 3124, transaction coordinator 2522 retrieves the source file data from the appropriate file server 2516. Thereafter, at block 3126, the transaction coordinator 2522 returns the raw file data to the XML Web service 2510 along with a share flag set to FALSE. Next, at block 3128, the XML Web service 2510 returns the raw file data with the shared flag set to FALSE to the XIOS communicator 2504 of the first client. The method 3100 then proceeds to block 3129 where the XIOS Communicator 2504 provides a connection to the document manager 912 for the source file data and the XIOS Communicator in turn passes the connection to the source file data to the XIOS application 2402). The method 3100 then proceeds to another continuous terminal ("terminal C").

터미날 C(도 31A)로부터, 메소드(3100)는 터미날 D와 터미날 E사이에 정의된 한 세트의 메소드 단계들(3106)로 진행하며, 이는 다른 클라이언트에 의해 공유되고 있는 현존하는 파일을 오픈하는 방법을 설명한다. 이 설명의 목적을 위해, 이 메소드 단계들(3106)의 세트는 메소드 단계들(3104)의 세트가 제1 클라이언트에 의해 이미 실행되었고, 따라서 요청된 파일이 제1 클라이언트에 의해 이미 오픈되었다고 가정한다. From terminal C (FIG. 31A), method 3100 proceeds to a set of method steps 3106 defined between terminal D and terminal E, which is a method of opening an existing file being shared by another client . For purposes of this description, the set of method steps 3106 assumes that the set of method steps 3104 has already been executed by the first client, and thus the requested file has already been opened by the first client .

터미날 D(도 31D)로부터, 메소드(3100)는 제2 클라이언트 상의 XIOS 어플리케이션(2402)이 문서 매니저(912)를 통해 서버측 컴포넌트(2514)로 파일 요청을 전송하는 블록(3130)으로 진행하며, 파일 요청은 파일 ID를 포함한다. 상술한 바와 같이, 요청은 파일 ID를 포함하는URL 형태일 수 있거나, 파일 ID가 유도될 수 있는 정보를 포함하는 URL 형태일 수 있다. 블록(3130)에서 동작들을 포함하는 개별 동작들은 이하에서 상세히 설명되므로, 이들에 대한 상세한 설명은 간결하게 하기 위해 여기서 생략된다. 다음에, 블록(3132)에서, 서버측 컴포넌트(2514)는 제2 클라이언트의 사용자를 인증하고, 요청을 XML 웹 서비스(2510)로 라우팅한다. 메소드(3100)는 이후, XML 웹 서비스(2510)가 제2 클라이언트의 사용자가 파일을 오픈하는 승인을 가지고 있는지를 확인하고, 파일에 대한 요청을 적합한 트랜잭션 코디네이터(2522)로 제출하는 블록(3134)로 진행한다. 메소드(3100)는 이후 트랜잭션 코디네이터(2522)가 제2 클라이언트의 신청 리스트에 파일을 추가하도록 메시지 서버(2512)에 지시하는 블록(3136)으로 진행한다. 당업자라면, 여기까지, 블록들(3110-3116) 사이에 정의된 메소드와 상응하는 블록들(3130~3136) 사이의 유사점들을, 즉, 공유된 파일을 오픈하는 것과 공유되지 않은 파일을 오픈하기 위한 방법 사이에는 거의 차이가 없다는 것을 인식할 수 있다.  From Terminal D (Figure 31D), the method 3100 proceeds to block 3130 where the XIOS application 2402 on the second client sends a file request to the server-side component 2514 via the document manager 912, The file request includes the file ID. As described above, the request may be in the form of a URL including a file ID, or in the form of a URL including information from which a file ID can be derived. The individual operations including the operations in block 3130 are described in detail below, so that detailed descriptions thereof are omitted here for the sake of brevity. Next, at block 3132, the server-side component 2514 authenticates the user of the second client and routes the request to the XML Web service 2510. The method 3100 then proceeds to block 3134 where the XML Web service 2510 verifies that the user of the second client has authorization to open the file and submits the request for the file to the appropriate transaction coordinator 2522. [ . The method 3100 proceeds to block 3136 where the transaction coordinator 2522 then instructs the message server 2512 to add the file to the second client's request list. Those skilled in the art will appreciate that the similarities between the methods defined between the blocks 3110-3116 and the corresponding blocks 3130-3136 thus far, namely the possibility of opening shared files, There is little difference between the methods.

다음에, 블록(3138)에서, 트랜잭션 코디네이터(2522)는 요청된 파일이 현재 공유되고 있는지를 판단한다. 여기서, 공유되는 파일을 오픈하는 메소드는 공유되지 않는 파일을 오픈하는 메소드와 달라진다. 메소드(3100)는 터미날 D1으로 진행하고, 이후 원시 파일 데이터를 저장하는 파일 서버(2516)를 판단하기 위해 트랜잭션 코디네이터(2522)가 폴더 데이터베이스(2520)에 질의하는 블록(3140)으로 진행한다. 다음에, 블록(3142)에서, 트랜잭션 코디네이터(2522)는 적합한 파일 서버(2516)로부터 원시 파일 데이터를 검색하고 그 사본을 일시 저장한다. 다음에, 블록93144)에서, 트랜잭션 코디네이터(2522)는 파일이 공유되고 있는 제1 클라이언트에 통지하라고 메시지 서버(2512)에 지시한다. 메소드(3100)는 이후 다른 연속 터미날("터미날 D2")로 진행한다.Next, at block 3138, transaction coordinator 2522 determines whether the requested file is currently being shared. Here, the method of opening a shared file is different from the method of opening a file that is not shared. The method 3100 proceeds to terminal D1 and proceeds to block 3140 where the transaction coordinator 2522 queries the folder database 2520 to determine the file server 2516 storing the raw file data. Next, at block 3142, transaction coordinator 2522 retrieves the raw file data from the appropriate file server 2516 and temporarily stores the copy. Next, at block 93144, transaction coordinator 2522 directs message server 2512 to notify the first client that the file is being shared. The method 3100 then proceeds to another continuous terminal ("terminal D2").

터미날 D2(도 31E)로부터, 메소드(3100)는 트랜잭션 코디네이터(2522)가 TRUE로 설정된 공유 플래그와 함께 원시 파일 데이터를 XML 웹 서비스(2510)로 전송하는 블록(3146)으로 진행한다. 이는 XML 웹 서비스(2510)와 XIOS 커뮤니케이터에게 원시 파일 데이터를 파일이 공유되지 않았을 때와는 다르게 취급하라고 통지한다. 다음에, 블록(3148)에서, XML 웹 서비스(2510)는 TRUE로 설정된 공유 플래그와 함께 원시 파일 데이터를 제2 클라이언트에 반환한다. 메소드(3100)는 이후, 메시지 서버(2512)가 파일이 현재 공유되고 있는 적어도 제1 클라이언트에 통지하는 블록(3150)으로 진행한다. 메소드(3100)는 이후, 파일이 현재 공유되고 있다는 통지의 수신에 대한 응답으로, 제1 클라이언트가 어떠한 이전에 기록되지 않는 트랜잭션들을 XML 웹 서비스(2510)로 전송하는 블록(3152)로 진행한다.  From terminal D2 (FIG. 31E), the method 3100 proceeds to block 3146 where the transaction coordinator 2522 sends the raw file data to the XML Web service 2510 along with a share flag set to TRUE. This notifies the XML Web service 2510 and the XIOS communicator to treat the raw file data differently than when the file was not shared. Next, at block 3148, the XML Web service 2510 returns the raw file data to the second client along with a share flag set to TRUE. The method 3100 then proceeds to block 3150 where the message server 2512 notifies at least the first client that the file is currently being shared. The method 3100 then proceeds to block 3152 where the first client sends to the XML Web service 2510 some previously unrecorded transactions in response to receiving a notification that the file is currently being shared.

이하에서 설명하듯이, 제1 클라이언트 상의 파일 데이터 모델에 변경이 이루어지면, 제1 클라이언트의 트랜잭션 매니저(910)는 이 변경들을 저장을 위해 XML 웹 서비스(2510)로 즉시 전송하지 않은채 이 변경들을 모을 수 있다. 제1 클라이언트가 오프라인 코드에서 작업하는 경우 이는 특히 그렇게 할 수 있으나, 높은 네트워크 레이턴시, 높은 프로세서 부하 등에 의해서도 발생할 수 있다. 제1 클라이언트가 파일이 현재 공유되고 있다는 통지를 수신하면, 트랜잭션 매니저(910)는 기록되지 않는 트랜잭션들을 취하고, 이들을 XML 웹 서비스(2510)로 전송한다. As described below, if a change is made to the file data model on the first client, then the transaction manager 910 of the first client will not send these changes immediately to the XML Web service 2510 for storage, Can gather. This can be especially true when the first client is working in off-line code, but may also be caused by high network latency, high processor load, and the like. When the first client receives a notification that the file is currently being shared, the transaction manager 910 takes the unrecorded transactions and sends them to the XML Web service 2510.

메소드(3100)의 블록(3154)에서, XML 웹 서비스(2510)는, 이 트랜잭션들을 수신한 후, 기록되지 않는 트랜잭션들을 트랜잭션 코디네이터(2522)로 전송하며, 이는 트랜잭션 코디네이터(2522)에 의해 저장된 원시 파일 데이터의 일시 저장 버전에 저장되지 않은 트랜잭션들을 기록한다. 이 트랜잭션들은 파일 서버(2516) 상의 원시 파일 데이터에 결국 기록된다. 일 실시예에서, 트랜잭션들은 파일을 수용하고 있는 클라이언트가 저장 명령을 실행하면 기록된다. 또 다른 실시예에서, 변경들은 문서의 모든 클라이언트 사용자들이 연결을 끊으면 기록된다. 다음에, 블록(3156)에서, 트랜잭션 코디네이터(2522)는 모든 리스닝 클라이언트들에게 기록된 변경들을 통지하라고 메시지 서버(2512)에 지시한다. 메소드(3100)는 이후, 제1 클라이언트와 제2 클라이언트가 메시지 서버로부터 기록된 변경의 통지를 수신하는 블록(3158)로 진행한다. 다음에, 메소드(3100)는 터미날 E로 진행하고 종료한다.At block 3154 of method 3100, after receiving these transactions, XML Web service 2510 sends unrecorded transactions to transaction coordinator 2522, which, in turn, Records transactions that are not stored in the temporary storage version of the file data. These transactions are eventually recorded in the raw file data on the file server 2516. In one embodiment, transactions are recorded when a client accepting a file executes a save command. In another embodiment, changes are recorded when all client users of the document have disconnected. Next, at block 3156, transaction coordinator 2522 directs message server 2512 to notify all listening clients of the changes recorded. The method 3100 then proceeds to block 3158 where the first client and the second client receive notification of the change recorded from the message server. Next, method 3100 proceeds to terminal E and ends.

네트워크 오퍼레이팅 시스템 클라이언트 컴포넌트 시동(startup)Network operating system Client component startup

도 32A는 네트워크 오퍼레이팅 시스템의 클라이언트측 컴포너트(2400)를 시작하는 메소드(3200)의 일 실시예를 설명한다. 시작 블록(3202)로부터, 메소드(3200)는 클라이언트측 컴포넌트(2400)의 부트 로더(boot loader)가 시스템 컨텍스트 오브젝트(902)를 이에 연관된 매니저들과 함께 인스턴스화하고 XML 파일 시스템(2500)에 대한 통신 채널을 시작하는 블록(3204)로 진행한다. 일부 실시예들에서, XML 가상 머신이 클라이언트측 컴포넌트(2400)에 이미 포함되어 있으므로, 부트 로더의 이용은 요구되지 않는다. 예를 들어, 이는 클라이언트측 컴포넌트(2400)가 이동 장치 이내, 셋톱 박스나 씬 클라이언트 컴포넌트 상에서와 같이 독립 어플리케이션으로 웹 브라우저 외부에서 구현되는 실시예들에서의 경우가 될 수 있다. 이는 실행을 위해 호스트 오퍼레이팅 시스템을 요구하지 않는 머신 오퍼렝팅 시스템으로 구현된 실시예들에 대한 경우가 또한 될 수 있다. 네트워크 오퍼레이팅 시스템은, 인터넷을 통한 HTTP 프로토콜의 이용을 포함한, 그러나 여기에 한정되지는 않는 네트워크 연결을 통해, 시작 프로세스를 정의한 파일들을 검색함으로써 동작한다. 메소드(3200)에서 설명된 시동 프로세스가 없어도, 네트워크 오퍼레이팅 시스템은 동작할 수 있으나 초기 설정은 설정 단계들을 수동으로 실행하는 사용자에 의해 구동될 수 있다.32A illustrates an embodiment of a method 3200 for initiating a client side component 2400 of a network operating system. From the start block 3202, the method 3200 causes the boot loader of the client-side component 2400 to instantiate the system context object 902 with the managers associated with it and to communicate with the XML file system 2500 The process proceeds to block 3204 where the channel is started. In some embodiments, the use of the boot loader is not required because the XML virtual machine is already included in the client-side component 2400. For example, this may be the case in embodiments in which the client-side component 2400 is implemented outside the web browser as an independent application, such as within a mobile device, on a set-top box or on a thin client component. This may also be the case for embodiments implemented with a machine operating system that does not require a host operating system for execution. The network operating system operates by searching for files that define the startup process, such as through a network connection, including but not limited to the use of the HTTP protocol over the Internet. Even without the startup process described in method 3200, the network operating system may operate, but the initial setup may be driven by a user who manually executes the setup steps.

전통적인 오퍼레이팅 시스템들과 달리, 클라이언트측 컴포넌트의 일부 실시예들은 예를 들어, 현존하는 웹 브라우저와 같은 다른 프로그램 내에 호스팅될 수 있다. 그 실시예들에 대해, 어떤 특정 XML 파일 시스템(들)(2500)에 연결하거나 통신 채널이 시작하는지를 포함하는 시동 시퀀스에 관련된 특별한 설정들은, 호스트 프로그램, HTTP, 질의 파라미터들, HTTP 쿠키들, 또는 클라이언트에 연관된 다른 설정 파라미터들(IP, 위치, 머신, 브라우저 ID 등)을 이용하여 찾아가야하는 위치 URL에 의해 결정될 수 있다. 예를 들어, 웹 브라우저를 http://os1.icloud.com으로 지시하는 것은 클라이언트측 컴포넌트(2400)가 제1 XML 파일 시스템(2500)에 연결하도록 할 수 있으며, 웹 브라우저를 http://os2.icloud.com으로 지시하는 것은 클라이언트측 컴포넌트(2400)가 제1 XML 파일 시스템(2500)으로부터 다른 위치에서 호스팅되고 있는 제2 XML 파일 시스템(2500)에 연결하도록 할 수 있다.Unlike traditional operating systems, some embodiments of client-side components may be hosted in other programs, such as, for example, an existing web browser. For those embodiments, the specific settings associated with the startup sequence, including whether to connect to a particular XML file system (s) 2500 or a communication channel, may include host programs, HTTP, query parameters, HTTP cookies, And may be determined by a location URL that should be visited using other configuration parameters (IP, location, machine, browser ID, etc.) associated with the client. For example, directing the web browser to http://os1.icloud.com may cause the client-side component 2400 to connect to the first XML file system 2500 and send the web browser to http: // os2 Directing .icloud.com may cause the client-side component 2400 to connect to the second XML file system 2500 being hosted elsewhere from the first XML file system 2500.

일 실시예에서, 클라이언트측 컴포넌트(2400는, 시동 시퀀스 중에, XML 파일 시스템(2500)이 아닌(또는 이에 더하여) 데이터 소스에 대한 통신 채널을 시작할 수 있으며, 원격 데이터 소스에 연결하거나 로컬 데이터 소브에 연결한다. 예를 들어, 한 파일 시스템은 서비스 제공자 데이터 센터를 통해 제공된 전역 XIOS 파일 시스템일 수 있다. 시동 시퀀스 동안에 연결된 다른 파일 시스템은 기업 네트워크 상에 로컬하게 설치될 수 있다. 시동 시퀀스 동안에 연결된 세 번째 파일 시스템은 사용자의 로컬 하드 드라이브에 대한 접속을 줄 수 있다. 도 32B는 드라이브들로 시동하는 동안 클라이언트측 컴포넌트(2400)에 바인드된 데이터 소스들의 몇 가지 예들을 설명한다. 예를 들어, 로컬 머신의 드라이브는 "Local Drive"로 바인드되어 있다. 또한, XML 파일 시스템(2500) 상의 폴더는 "Shared Family Folder"로 바인드되어 있다. 또 다른 실시예로, 그룹에 대한 루트 폴더는 "Class of 1992 Reunion"으로 바인드되어 있다. 중요하게, 이 데이터 소스들 각각이 서로 다른 장소에 저장되고 서로 다른 기술을들 통해 접속되는 반면, 차이들은 각 데이터 소소들을 단순하게 접속 가능한 드라이브로 보는 XIOS 어플리케이션들(2402)로부터 감춰진다. 이 예들은 완전하지는 않지만, 그들은 시동 시퀀스가 하나 이상의 파일 시스템에 연결할 수 있다는 것을 보이도록 의도된다. 사용자가 인증되면, 시동 시퀀스는 추가적인 파일 시스템들에 대한 연결과 추가적인 채널들의 초기화를 포함하는 사용자 특정 시동 시퀀스로 연속될 수 있다.  In one embodiment, the client-side component 2400 may initiate a communication channel to a data source other than (or in addition to) the XML file system 2500 during the startup sequence and may connect to a remote data source, For example, one file system may be a global XIOS file system provided through a service provider data center. Other file systems connected during the startup sequence may be installed locally on the corporate network. Figure 32B illustrates some examples of data sources bound to the client-side component 2400 during startup with the drives. For example, a local The drive of the machine is bound to "Local Drive. &Quot; Folder is bound to "Shared Family Folder." In another embodiment, the root folder for the group is bound to "Class of 1992 Reunion." Significantly, each of these data sources is stored in a different location And the differences are hidden from the XIOS applications 2402, which view each data point as a simply connectable drive. While these examples are not exhaustive, they suggest that the startup sequence is connected to one or more file systems If the user is authenticated, the startup sequence may be sequenced to a user-specific startup sequence that includes connection to additional file systems and initialization of additional channels.

다른 프로그램 내에 호스팅된 네트워크 오퍼레이팅 시스템의 실시예들과 전통적인 오퍼레이팅 시스템 사이의 다른 차이는 호스트 프로그램에 관해 수행되는 작업들이 클라이언트측 컴포넌트(2400)의 실행을 인터럽트할 수 있다는 것이다. 예를 들어, 사용자가 시동 시퀀스를 성공적으로 마치고 네트워크 오퍼레이팅 시스템에 로그인 한 후에, 호스트 프로그램은 클라이언트측 컴포넌트(2400)를 재로딩하는 작업을 수행할 수 있다. 일 실시예에서, 클라이언트측 컴포넌트(2400)는, 상태를 복구하기 위해, 재로딩 이전의 네트워크 오퍼레이팅 시스템의 로그인 상태가 재로딩 이후의 클라이언트측 컴포넌트(2400)에 이용가능하게 함으로서, 이 상황을 처리한다. 이를 위해, 블록(3206)에서, 클라이언트측 컴포넌트(2400)는 사용자가 이미 로그인되었는지를 확인한다. 메소드(3200)는 사용자가 이미 로그인되었는지를 판단하기 위한 테스트가 수행되는 판단 블록(3208)로 진행한다. 판단 블록(3208)에서 테스트에 대한 답이 YES이면, 메소드(3200)는 연속 터미날("터미날 A")로 진행하므로, 시동 메소드의 로그인 부분을 생략한다.Another difference between the embodiments of the network operating system hosted within other programs and the traditional operating system is that tasks performed on the host program can interrupt the execution of the client-side component 2400. [ For example, after the user successfully completes the startup sequence and logs in to the network operating system, the host program may perform an operation to reload the client-side component 2400. In one embodiment, the client-side component 2400 processes the situation by restricting the login state of the network operating system prior to reloading to the client-side component 2400 after reloading, do. To this end, at block 3206, the client-side component 2400 verifies that the user is already logged in. Method 3200 proceeds to decision block 3208 where a test is performed to determine if the user is already logged in. If the answer to the test is YES at decision block 3208, the method 3200 proceeds to a continuous terminal ("terminal A"), thus omitting the login portion of the startup method.

판단 블록(3208)에서 테스트에 대한 답이 NO이면, 메소드(3200)는 클라이언트측 컴포넌트(2400)가 통신 채널에 연관된 로그인 어플리케이션을 오픈하는 블록(3210)으로 진행한다. 시작될 특정 로그인 어플리케이션은 통신 채널에 의해 결정될 수 있지만, 전형적으로, 로그인 어플리케이션은, 사용자 이름과 패스워드와 같은 사용자 정보를 사용자에게 안전하게 요청한다. 로그인 절차의 다른 실시예들은, 로그인 정보가 부트 로딩이 시작하기 전에 요청되고, 더 이상의 사용자 상호작용 없이 그 로그인 정보가 인증을 위한 통신 채널로 직접 패스되는 곳에 존재한다. 부트 로더가 없는 실시예들에서, 클라이언트측 컴포넌트(2400)는 로그인 정보를 인증을 위한 통신 채널로 직접 패스할 수 있다. 변형들(variations)들이 부트 로더가, 직접 로딩된 후, 스스로 로그인 정보를 요청하고, 이후에 별도의 로그인 어플리케이션을 사용하지 않고 통신 채널로 정보를 패스하는 경우 발생할 수도 있다. 다음에, 블록(3212)에서, 통신 채널을 사용자 정보들을 처리한다. 통신 채널은 인증 서비스로 이들을 전송하거나, 이들을 로컬에서 처리함으로써 사용자 정보들을 처리할 수 있다.If the answer to the test in decision block 3208 is NO, the method 3200 proceeds to block 3210 where the client-side component 2400 opens the login application associated with the communication channel. Typically, the login application securely requests user information, such as a user name and password, to the user, although the specific login application to be started may be determined by the communication channel. Other embodiments of the login procedure are where login information is requested before bootloading begins and where the login information is passed directly to the communication channel for authentication without further user interaction. In embodiments without a boot loader, the client-side component 2400 may pass login information directly to the communication channel for authentication. Variations may also occur when the boot loader is directly loaded, then requests its own login information, and then passes the information to the communication channel without using a separate login application. Next, at block 3212, the communication channel processes the user information. The communication channels can process user information by sending them to an authentication service or by processing them locally.

메소드(3200)는 이후 터미날 A로 진행한다. 터미날 A로부터, 메소드(3200)는, 통신 채널이 사용자의 setting.xml 파일을 클라이언트측 컴포넌트(2400)에 제공하는 블록(3214)로 진행하며, 클라이언트측 컴포넌트는 사용자 특정 시동 시퀀스를 수행하고 모든 특정 가상 드라이브들을 탑재하기 위해 setting.xml 파일을 이용한다. 통신 채널은 setting.xml 파일을 원격 데이터 서버로부터 획득하거나, setting.xml 파일을 로컬 데이터 소스에서 획득하거나 또는 통신 채널 특정 기본값들에 기초하여 기본 setting.xml 파일을 생성할 수 있다. setting.xml 파일은 네트워크 오퍼레이팅 시스템의 설정을 위한 사용자 특정 설정들의 모음을 포함한다. 이 설정들은 사용자 이름, 이메일 주소, 다양한 어플리케이션의 설정들, 시동시 탐재될 가상 드라이브들의 모음(통신 채널들) 및 연관된 루트 폴더 ID(그룹들을 포함. 이하에서 설명됨), 친구 목록, 및 시동 시퀀스를 포함하지만, 이에 한정되지는 않는다. setting.xml 파일에 포함된 시동 시퀀스는 성공적인 로그인 후, 어느 데스크탑 매니저, 콘솔, 또는 오픈하는 시작 어플리케이션 등을 포함하는, 무슨 프로그램들을 클라이언트측 컴포넌트(2400)가 시작해야 하는지를 특정한다. 다음에, 메소드는 종료 블록(3216)으로 진행하며, 종료한다. The method 3200 then proceeds to terminal A. From terminal A, the method 3200 proceeds to block 3214 where the communication channel provides the user &apos; s settings.xml file to the client-side component 2400, where the client-side component performs a user- Use setting.xml file to mount virtual drives. The communication channel may obtain a settings.xml file from a remote data server, obtain a settings.xml file from a local data source, or create a default settings.xml file based on communication channel specific defaults. The settings.xml file contains a collection of user specific settings for configuring the network operating system. These settings include user name, email address, settings of various applications, a collection of virtual drives to be probed at startup (communication channels) and an associated root folder ID (including groups, described below), a buddy list, But is not limited thereto. The startup sequence contained in the settings.xml file specifies, after successful login, which programs the client-side component 2400 should start, including which desktop manager, console, or open-start application. The method then proceeds to end block 3216 and ends.

일부 실시예들에서, setting.xml 파일은 네트워크 오퍼레이팅 시스템에서 다양한 항목들을 표현하는 메타데이터의 수동적인 저장소이며, 시동 어플리케이션은 시동 시퀀스를 가동하는데 더 중심적인 역할을 한다. 예를 들어, 일 실시예에서, 시동 어플리케이션이 실행되고, 이후 데스크탑을 사용자에게 디스플레이하는 데스크탑 어플리케이션과 같은 두 번째 어플리케이션을 실행한다. 이 시퀀스는 이 실시예에서 시동 어플리케이션에 의해 실행되었으나, 시동 어플리케이션은 setting.xml 파일에 문의하여 어떤 두 번째 어플리케이션이 실행되어야 하는지를 그럼에도 불구하고 결정할 수 있다. In some embodiments, the settings.xml file is a passive repository of metadata representing various items in a network operating system, and the boot application plays a more central role in running the startup sequence. For example, in one embodiment, the startup application runs and then executes a second application, such as a desktop application, which displays the desktop to the user. This sequence was executed by the startup application in this embodiment, but the startup application can still consult the settings.xml file to determine which second application should be executed, nevertheless.

네트워크 오퍼레이팅 시스템 그룹들과 친구들Network operating system groups and friends

네트워크 오퍼레이팅 시스템에서, 그룹들은 사용자들간에 협업과 파일 공유를 빠르고 효율적으로 가능하게 하는데 이용된다. 다른 시스템들과 달리, 네트워크 오퍼레이팅 시스템에서 새로운 그룹의 생성과 협업과 파일 공유를 가능하게 하는 것은 매우 가볍다. 예를 들어, 일 실시예에서, 사용자는 새로운 그룹을 생성하기 위해 단순히 오른쪽 클릭을 필요로 하며, 이는 공동 스토리지 폴더를 자동적으로 생성하고 그룹의 멤버들이 메시지들을 교환하고, 그룹의 다른 멤버들과 상호작용하기 위한 새로운 신원(identity)을 생성하며, 다른 사람과 실시간으로 협업할 수 있도록 한다. In a network operating system, groups are used to enable collaboration and file sharing among users quickly and efficiently. Unlike other systems, it is very lightweight to enable the creation of new groups, collaboration and file sharing in a network operating system. For example, in one embodiment, the user simply needs to right click to create a new group, which automatically creates a shared storage folder and allows the members of the group to exchange messages and interact with other members of the group Create a new identity to work on, and collaborate with others in real time.

그룹은, 생성시, 그룹 정보의 모음을 저장한다. 이 그룹 정보는, 상술한 바와 같이, XML 파일 시스템에서 스토리지 위치에 대한 참조로서 역할을 하는 루트 폴더 ID를 포함한다. 이 스토리지 위치에 위치한 폴더들과 파일들은 그룹의 멤버들에게만 접속가능한다. 상술한 바와 같이, 클라이언트측 컴포넌트(2400)를 시작하면, settings.xml 파일이 로그인된 사용자를 위해 획득된다. 이 settings.xml 파일은 사용자가 멤버인 그룹들에 대한 참조들의 모음을 포함한다. 이 참조들은, 적합한 커뮤니케이터와 통신 채널을 시작하기 위해, 원하는 그룹에 대한 참조를 통신 매니저(2412)에 제공함으로써, 그것이 어떤 다른 스토리지 위치 또는 파일 시스템인 것처럼 그룹을 탑재하기 위해 클라이언트측 컴포넌트(2400)에 의해 사용된다. When a group is created, it stores a collection of group information. This group information includes a root folder ID serving as a reference to the storage location in the XML file system, as described above. Folders and files located in this storage location are only accessible to members of the group. As described above, when the client-side component 2400 is started, a settings.xml file is obtained for the logged-in user. This settings.xml file contains a collection of references to groups that the user is a member of. These references may be used by the client side component 2400 to mount the group as if it were some other storage location or file system by providing a reference to the desired group to the communication manager 2412 to initiate a communication channel with the appropriate communicator. Lt; / RTI &gt;

도 33은 네트워크 오퍼레이팅 시스템 그룹을 탑재하기 위한 메소드(3300)의 일 실시예를 설명한다. 시작 블록(3302)으로부터, 메소드(3300)는, 클라이언트측 컴포넌트(2400)가 그룹에 대한 통신 채널을 시작하는 블록(3304)으로 진행한다. 다음에, 블록(3306)에서, 통신 채널을 사용자에 연관된 사용자 정보를 처리한다. 통신 채널을 멤버쉽 이름과 암호와 같은, 그룹에 특정된 추가적인 사용자 정보를 사용자에게 요청할 수 있거나, 간편한 싱글 사인 온(single sign-on)을 위해 사용자 로그인 정보들을 재사용할 수 있다. 통신 채널이 사용자 정보들을 검증할 수 있다고 가정하고, 메소드(3300)는 이후, 통신 채널이 사용자 settings.xml 파일로부터 획득한 루트 폴더 ID를 이용하여 그룹 folders.xml 파일을 획득하는 블록(3308)로 진행한다. 다음에, 블록(3310)에서, 클라이언트측 컴포넌트(2400)는 그룹 folders.xml 파일에 대한 참조를 클라이언트 상의 현존하는 folders.xml 파일에 초가한다. (현존하는 folders.xml 파일의 생성은 도 28A-28D를 참조하여 상술하였다) 이 참조는, 클라이언트 상에서의 모든 오픈 통신 채널들의 목록을 포함하는 가상 통신 매니저 XML 문서 채널 #CommunicationManager를 표현한다. 다음에, 블록(3312)에서, 통신 채널은, 존재한다면, 그룹에 대한 autostart.xml 파일을 획득하고, 클라이언트측 컴포넌트(2400)는 명령들 또는 autostart.xml 파일에 특정된 어플리케이션들을 실행한다. 이 autostart.xml 파일은, 그룹 관리자(group administrator)가 그룹 멤버들에 의해 로그인시 항상 실행되어야 하는 감사 프로그램들(auditing programs), 환영 스크린들, 공통 데스크탑 설정들, 그룹을 표현하는 커뮤니티 등과 같은 공통 프로그램들을 특정할 수 있도록 한다. 그룹들은, 시스템 로그인시 사용자가 그들의 사용자 시동 시퀀스로 가지기 위해 선택할 수 있는 대안적인 시동 시퀀스들을 특정할 수도 있다. 메소드(3300)는 이후 종료 블록(3314)으로 진행하며, 종료한다. 33 illustrates one embodiment of a method 3300 for mounting a network operating system group. From start block 3302, the method 3300 proceeds to block 3304 where the client-side component 2400 initiates a communication channel for the group. Next, at block 3306, the communication channel processes the user information associated with the user. The communication channel can be requested by the user with additional user information specific to the group, such as membership name and password, or reused for user sign-in information for simple single sign-on. Assuming that the communication channel can verify the user information, the method 3300 then proceeds to block 3308 where the communication channel obtains the group folders.xml file using the root folder ID obtained from the user settings.xml file Go ahead. Next, at block 3310, the client-side component 2400 adds a reference to the group folders.xml file to the existing folders.xml file on the client. (The creation of the existing folders.xml file has been described above with reference to Figures 28A-28D). This reference represents a virtual communication manager XML document channel #CommunicationManager that contains a list of all open communication channels on the client. Next, at block 3312, the communication channel, if present, obtains an autostart.xml file for the group, and the client-side component 2400 executes applications or applications specified in the autostart.xml file. This autostart.xml file is a common file for the group administrators, such as auditing programs, welcome screens, common desktop settings, communities representing groups, etc., Allow programs to be specified. The groups may specify alternative startup sequences that the user may choose to have in their user startup sequence at system login. The method 3300 then proceeds to end block 3314 and ends.

일부 실시예들에서, 메소드(3300)는, 파일 스토리지 위치들이 그룹들의 대부분 동일한 특징등을 가지므로, 파일 스토리지 위치들을 탑재하는데에 사용될 수도 있다. 파일 스토리지 위치들은 파일 스토리지 위치(그룹들에 대해서 위에서 설명됨)의 멤버들인 연관들을 가지는 개념이 없으나, 파일 스토리지 위치를 탑재하기 위한 프로세스와 그 안에 있는 파일들에의 접속은 매우 유사하다. 파일 스토리지 위티들은 상술한 autostart.xml 파일에도 포함될 수 있다.In some embodiments, the method 3300 may be used to mount file storage locations, as the file storage locations have most of the same features, etc., of the groups. File storage locations have no concept of associations that are members of a file storage location (as described above for groups), but the process for mounting the file storage location and the connections to the files therein are very similar. File storage witnesses may also be included in the above-described autostart.xml file.

그룹 기능성 또는 파일 스토리지 위치들은 커뮤니티들을 구현하는데 사용될 수도 있다. 파일 스토리지 위치는, 특정 멤버쉽을 요구하지 않는 커뮤니티들을 생성하기 위해 사용될 수 있다. 다시 말해, 모든 사용자들은 커뮤니티의 회원들이 자동적으로 될 수 있다. 그룹 기능성은, 한편, 회원 전용 커뮤니티들을 생성하는데 이용될 수도 있다.Group functionality or file storage locations may also be used to implement communities. File storage locations can be used to create communities that do not require specific membership. In other words, all users can become members of the community automatically. Group functionality, on the other hand, may also be used to create member-only communities.

상술한 그룹 정보는 멤버쉽들의 모음을 포함할 수도 있다. 멤버쉽은 사용자와 그룹 사이의 연관이며, 사용자가 그룹의 멤버라는 사실을 표현한다. 각 멤버쉽은 그룹의 다른 멤버들에게 보여질 연관된 이름을 포함할 수 있으며, 따라서 그룹내에서 상호작용할 때 그 사용자에 대한 새로운 신원을 생성한다. 멤버쉽 이름들은 그룹에 가입할 때 사용자에 의해 생성될 수 있으므로, 사용자는 그들의 프라이버시를 유지하면서 넓게 변화하는 주제들을 가진 그룹들에 가입할 수 있다. 예를 들어, "Group One"으로 명명된 그룹은, 사용자 이름 "Alice"를 가진 사용자와 사용자 이름"Bob"을 가진 사용자가 모두 Group One의 멤버임을 나타내는 멤버쉽의 모음을 가질 수 있다. Alice가 Group One의 멤버임을 나타내는 첫 번째 멤버쉽은 "AliceGourpOne"과 같이 Alice의 사용자이름과 동일하거나 유사할 수 있다. Bob이 Group One의 멤버임을 나타내는 두 번째 멤버쉽은, "AnonymousGroupMember"과 같이 Bob의 사용자이름과 다를 수 있다. Alice가 다른 그룹 멤버들을 검색할 때, 그녀에게는 멤버쉽 이름들의 목록에의 접속이 주어지지만, 연관된 사용자 이름들은 아니다. 그러므로, 그녀는 "AnonymousGroupMember"가 그룹의 멤버임을 볼 수 있으나, "AnonymousGroupMember"가 실제로는 "Bob"과 연관되어 있다는 것을 알 수 없다. 다른 실시예에서, 그룹 내의 멤버들은 연관된 사용자 이름을 골개적으로 하도록 선택할 수 있는데, 그 경우에, Alice는 "AnonymousGroupMember"가 "Bob"에 연관되어 있다는 것을 알 수 있다. The group information described above may include a collection of memberships. Membership is an association between a user and a group, and represents the fact that a user is a member of a group. Each membership can contain an associated name that will be visible to other members of the group, thus creating a new identity for that user when interacting within the group. Membership names can be created by the user when joining the group, so that users can join groups with widely varying themes while maintaining their privacy. For example, a group named "Group One" may have a collection of memberships indicating that both a user with the user name "Alice " and a user with the user name" Bob & The first membership to indicate that Alice is a member of Group One may be the same or similar to Alice's username, such as "AliceGourpOne". The second membership, indicating that Bob is a member of Group One, may be different from Bob's username, such as "AnonymousGroupMember". When Alice searches for other group members, she is given access to a list of membership names, but not associated user names. Therefore, she can see that "AnonymousGroupMember" is a member of the group, but she does not know that "AnonymousGroupMember" is actually associated with "Bob". In another embodiment, the members in the group may choose to associate the associated username with, in which case Alice can know that "AnonymousGroupMember" is associated with "Bob &quot;.

메시징 서비스들은 사용자간 통신에서 사용자들의 많은 신원들을 처리할 수 있다. 이는, 한 사용자가 그의 친구들 리스트에서 동일한 친구를, 실제로 동일한 사람인지를 알지 못하면서, 두 개의 서로 다른 참가자들로 가질 수 있다는 점에서, 시스템의 친구들 핸들링에 대해서도 적용된다. 사용자는 서로 다른 인스턴트 메시지들을, 이것들이 동일한 사람으로부터 전송되었다는 것을 알지 못한채, 서로 다른 두 참가자들로부터 수신할 수도 있다.Messaging services can handle many identities of users in user-to-user communication. This also applies to the handling of friends of the system in that one user can have two different participants, without knowing whether they are the same friend, actually the same person, in his buddy list. The user may receive different instant messages from two different participants without knowing that they were sent from the same person.

온라인과 오프라인 상태들간의 천이(transitioning)Transitioning between online and offline states

네트워크 오퍼레이팅 시스템의 일부 실시예들에서, 클라이언트측 컴포넌트(2400)는 정상, 온라인 상태 및 오프라인 상태에서 동작할 수 있되, 클라이언트측 컴포넌트(2400)는 어떠한 서버측 자원들에 대한 접속을 가지지 않는다. 클라이언트측 컴포넌트(2400)에서 이 기능성 제공의 이점은, 클라이언트측 컴포넌트(2400)가 온라인과 오프라인 모드들 모두에서 작동하는 단일 어플리케이션을 중단 없이(seamlessly) 지원하는 것을 돕는다는 것이며, 반면에 양 모드를 지원하기 위해 어플리케이션 개발자에게 요구되는 일의 양을 줄인다. In some embodiments of a network operating system, the client-side component 2400 may operate in normal, on-line, and off-line conditions, with the client-side component 2400 having no connection to any server-side resources. The advantage of providing this functionality in the client-side component 2400 is that it assists the client-side component 2400 in seamlessly supporting a single application operating in both on-line and off-line modes, Reduce the amount of work required by the application developer to support it.

도 34는 제1 클라이언트의 클라이언트측 컴포넌트(2400)를 온라인 상태에서 오프라인 상태로 천이하기 위한 메소드(3400)의 일 실시예를 설명한다. 이 메소드(3400)는 제1 클라이언트의 클라이언트측 컴포넌트(2400)가 이미 시동하였고 메소드(3200)와 같은 메소드를 통해 XML 파일 시스템(2500)에 접속하였다고 가정한다. 시작 블록(3402)으로부터, 메소드(3400)는, XML 파일 시스템(2500)의 XML 웹 서비스(2510)로 통지를 전송함으로써 제1 클라이언트의 클라이언트측 컴포넌트(2400)가 제1 클라이언트의 상태를 오프라인 상태로 설정하는 블록(3404)로 진행한다. 이 상태는 이후 제1 클라이언트가 오프라인인지를 판단하기 위해 동일한 XML 웹 서비스들을 이용하여 다른 클라이언트들에 의해서도 확인될 수 있다. 다음에, 블록(3406)에서, XML 웹 서비스(2510)는 제1 클라이언트의 상태에 대해 신청한 다른 모든 클라이언트들에게 제1 클라언트가 오프라인이 되었다는 통지를 전송하도록 메시지 서버(2512)에 지시한다. 전형적으로, XML 파일 시스템(2500)에 연결된, 제1 클라이언트와 동일한 그룹에 연관된 다른 클라이언트들은 메시지 서버(2512)상에 있는 그들의 신청 리스트에 제1 클라이언트를 추가한다. 통지들은 메시지 서버(2512)에 의해 업데이트들에 관한 통지들과 동일한 방법으로 발송되며, 이는 상술되었다. 34 illustrates one embodiment of a method 3400 for transitioning a client-side component 2400 of a first client from an online state to an offline state. This method 3400 assumes that the client side component 2400 of the first client has already started up and has connected to the XML file system 2500 via a method such as method 3200. [ From the start block 3402, the method 3400 sends a notification to the XML Web service 2510 of the XML file system 2500 so that the client-side component 2400 of the first client is in the offline state of the first client The process proceeds to block 3404 where it is set. This state may then be verified by other clients using the same XML Web services to determine if the first client is offline. Next, at block 3406, the XML Web service 2510 instructs the message server 2512 to send a notification to all other clients who have subscribed to the status of the first client that the first client has gone offline . Typically, other clients associated with the same group as the first client, connected to the XML file system 2500, add a first client to their request list on the message server 2512. [ Notifications are dispatched by the message server 2512 in the same manner as notifications regarding updates, which have been described above.

클라이언트측 컴포넌트(2400) 및 클라이언트측 컴포넌트(2400)에 의해 실행되는 어플리케이션들이 XML 파일 시스템(2500)에 접속을 가지지 않고도 계속 기능하도록 하기 위해, 클라이언트측 컴포넌트(2400)는 XML 파일 시스템(2500)으로부터 어떠한 필요한 자원들을 제1 클라이언트 상에 일시 저장하여야 한다. 이를 위해, 메소드(3400)는, 제1 클라이언트의 어플리케이션 매니저(904)가 클라이언트측 컴포넌트92400)에 의해 현재 실행중인 각 인스턴스들에 연관된 어플리케이션 패키지에서 나타난 아직 처리되지 않은, 다운로드되지 않은 자원들을 다운로드하는 블록(3408)로 진행한다. 어플리케이션 개발자는, 어플리케이션의 오프라인 사용을 가능하게 하기 위해, 어플리케이션 패키지에서 어떤 자원들이 클라이언트측 컴포넌트(2400)에 의해 반드시 일시 저장되어야 하는지를 나타낼 수 있다. 다른 실시예에서, 클라이언트측 컴포넌트(2400)는, 어플리케이션 패키지의 컴포넌트들에 의해 이용되는 참조들을 분석함으로써, 무슨 자원들이 일시 저장되어야 하는지를 자동적으로 판단할 수 있다.In order to allow applications executed by the client-side component 2400 and the client-side component 2400 to continue functioning without having a connection to the XML file system 2500, the client- Any necessary resources must be temporarily stored on the first client. To that end, the method 3400 downloads the unprocessed, un-downloaded resources from the application package associated with each of the instances currently running by the application manager 904 of the first client) Proceed to block 3408. The application developer can indicate which resources in the application package must be temporarily stored by the client-side component 2400 to enable offline use of the application. In another embodiment, the client-side component 2400 can automatically determine what resources should be temporarily stored by analyzing the references used by the components of the application package.

일부 실시예들에서, 어플리케이션 매니저(904)는 제1 클라이언트 상에 무슨 자원들이 일시 저장되어야 하는지에 대해 판단하기 위하 추가적인, 선택적인 단계들을 수행할 수 있다. 예를 들어, 메소드(3400)는, 제1 클라이언트의 어플리케이션 매니저(904)가 각 인스턴스에 의해 동적으로 로딩되는 어떤 자원들을 다운로드하는 블록(3410)으로 진행할 수 있다. 이 자원들은 인스턴스에 연관된 어플리케이션 패키지에 의해 참조되지 않으나, 대신에 실행중에 인스턴스에 의해 판단될 수 있다. 메소드(3400)는 이후, 제1 클라이언트의 어플리케이션 매니저(904)가 각 오픈 뷰 파일에 연관된 자원들을 다운로드하는 블록(3412)로 진행할 수 있다. 동적으로 로딩된 자원들과 마찬가지로, 각 오픈 뷰 파일은 어플리케이션 패키지에 의해 참조되지 않은 자원들에 연관될 수 있다. 메소드(3400)는 어플리케이션 매니저(904)가 각 프로세스에 연관된 자원들을 유사하게 다운로드하는 블록(3414)로 또한 진행할 수 있다. 당업자라면 블록들(3410-3414)이 선택적이므로, 하나 또는 하나 이상의 블록이 메소드(3400)의 실시예에서 실행될 수 있거나, 어느 블록도 실행되지 않을 수 있음을 인식할 수 있다. In some embodiments, the application manager 904 may perform additional, optional steps to determine what resources should be temporarily stored on the first client. For example, the method 3400 may proceed to block 3410 where the application manager 904 of the first client downloads some resources dynamically loaded by each instance. These resources are not referenced by the application package associated with the instance, but instead can be determined by the instance during execution. The method 3400 may then proceed to block 3412 where the application manager 904 of the first client downloads resources associated with each open view file. Like dynamically loaded resources, each open view file can be associated with resources that are not referenced by an application package. The method 3400 may also proceed to block 3414 where the application manager 904 similarly downloads the resources associated with each process. One of ordinary skill in the art will recognize that blocks 3410-3414 are optional, so that one or more blocks may be executed in an embodiment of method 3400, or none of the blocks may be executed.

블록(3408)에서 자원들이 다운로드되고, 0 이상의 블록들(3410-3414) 이후에, 메소드(3400)는 제1 클라이언트의 클라이언트측 컴포넌트(2400)가 제1 클라이언트가 오플라인임을 나타내는 시스템 플래그를 설정하는 블록(3416)으로 진행한다. 이 시스템 플래그는 클라이언트측 컴포넌트(2400)와 제1 클라이언트에서 실행되는 어플리케이션들 모두의 가동(behavior)을 변경하는데 이용될 수 있다. 예를 들어, 일 실시예에서, 메소드(3400)는, 파일 작업들과 트랜잭션들을 XML 파일 시스템(2500)으로 즉시 전송하는 대신에, 제1 클라이언트의 클라이언트측 컴포넌트(2400)가 후속하는 파일 작업들을 큐에 대기시키고(queue), 제1 클라이언트의 각 채널들이 파일에 대한 수정을 설명하는 후속하는 트랜잭션들을 일시 저장하는 블록(3418)으로 계속한다. 오프라인인 동안에 클라이언트측 컴포넌트(2400)가 파일 작업들을 큐에 대기시키고 트랜잭션들을 일시 저장하므로, 네트워크 오퍼레이팅 시스템의 사용자들에게는 제1 클라이언트가 오프라인일 때 아무런 변경도 클라이언트측 컴포넌트(2400)에 의해 실행되는 어플리케이션들은, 네트워크 연결성을 요구하는 기능성을 불능으로 하는 것과 같이, 시스템 플래그에 기초하여 그들의 가동을 변경할 수도 있다. 클라이언트측 컴포넌트(2400) 자체는, 제1 클라이언트의 사용자가 네트워크 연결성을 요구하는 동작을 수행하려고 시도하면, 에러 메시지를 디스플레이 하는 것과 같이, 그 가동을 더 변경할 수 있다. 메소드(3400)는 이후 종료 블록(3420)으로 진행하며, 종료한다. The resources are downloaded at block 3408 and after zero or more blocks 3410-3414 the method 3400 sets the system flag indicating that the client side component 2400 of the first client is the operand of the first client Gt; 3416 &lt; / RTI &gt; This system flag may be used to change the behavior of both the client side component 2400 and applications running on the first client. For example, in one embodiment, instead of immediately sending file operations and transactions to the XML file system 2500, the method 3400 may cause the client-side component 2400 of the first client to perform subsequent file operations Queue continues and continues to block 3418 where each channel of the first client temporarily stores subsequent transactions describing modifications to the file. Because the client-side component 2400 queues file operations and temporarily stores transactions while offline, users of the network operating system are notified that when the first client is offline, no changes are made by the client-side component 2400 Applications may change their operations based on system flags, such as disabling functionality that requires network connectivity. The client-side component 2400 itself may further modify its operation, such as displaying an error message, if the user of the first client attempts to perform an operation that requires network connectivity. The method 3400 then proceeds to end block 3420 and ends.

도 35는 제1 클라이언트가 메소드(3400)와 같은 메소드를 이미 실행하고 오프라인 상태에서 동작할 때 온라인으로 돌아오는 메소드(3500)의 일 실시예를 설명한다. 시작 블록(3502)으로부터, 메소드(3500)는 제1 클라이언트가 온라인이 되며, 제1 클라이언트의 클라이언트측 컴포넌트(2400)가 XML 웹 서비스(2510)로 온라인 상태의 통지를 전송하는 블록(3504)로 진행한다. 제1 클라이언트는 로컬 에어리어 네트워크, 무선 네트워크, 다이얼업 네트워크 등 중 하나와, 여기에 한정되지는 않는, 연결을 설정하거나 재설정함으로써, 온라인이 될 수 있다. 다른 실시예에서, 제1 클라이언트는 사용자가 온라인으로 하려는 희망을 나타낼 때, 네트워크 연결이 이미 설정되어 있으면, 온라인이 될 수 있다. 다음에, 블록(3506)에서, XML 웹 서비스(2510)는 제1 클라이언트가 온라인이 되었다는 통지를 제1 클라이언트이 상태에 대해 신청한 모든 클라이언트에 전송하라고 메시지 서버(2512)에 지시한다. Figure 35 illustrates one embodiment of a method 3500 in which a first client is already running a method, such as method 3400, and comes back online when operating in an off-line state. From the start block 3502, the method 3500 proceeds to block 3504 where the first client is brought online and the client-side component 2400 of the first client sends a notification of being online to the XML Web service 2510 Go ahead. The first client may be online by establishing or re-establishing a connection with, but not limited to, a local area network, a wireless network, a dial-up network, or the like. In another embodiment, the first client may be online when the user indicates a desire to go online, if the network connection is already established. Next, at block 3506, the XML Web service 2510 directs the message server 2512 to send a notification that the first client has come online to all clients that have subscribed to the first client's status.

메소드(3500)는 이후, 제1 클라이언트의 트랜잭션 매니저(910)가 XML 웹 서비스(2510)로부터 제1 클라이언트 상에 일시 저장된 문서들에 대한 변경들을 다운로드하는 블록(3508)으로 진행한다. 일 실시예에서, 이 다운로드된 변경들은 제1 클라이언트가 오프라인 동안 다른 클라이언트들에 의해 XML 파일 시스템(2500)의 문서들에 만들어진 변경이다. 다음으로, 블록(3510)에서, 제1 클라이언트의 트랜잭션 매니저(910)는 일시 저장된 문서들과 다운로드된 변경들 사이의 충돌들을 해결한다. 일 실시예에서, 트랜잭션 매니저(910)는 충돌이 존재하는 것을 단지 감지하고, (일시 저장된 변경들을 포함하는 새로운 파일을 생성하고, 다운로드된 변경들을 위해 일시 저장된 변경들을 삭제하는 등) 사용자에게 수동으로 충돌을 해결하도록 요청할 수 있다. 다른 실시예에서, 트랜잭션 매니저(910)는 어떤 변경들이 유지되어야 하고 어떤 것들이 버려져야 하는지를 판단하는 알고리즘을 실행한다.The method 3500 then proceeds to block 3508 where the transaction manager 910 of the first client downloads changes from the XML Web service 2510 to documents temporarily stored on the first client. In one embodiment, these downloaded changes are changes made to documents in the XML file system 2500 by other clients while the first client is offline. Next, at block 3510, the transaction manager 910 of the first client resolves conflicts between temporarily stored documents and downloaded changes. In one embodiment, the transaction manager 910 can only detect that a conflict exists, manually (e.g., create a new file containing temporarily saved changes, delete temporarily saved changes for downloaded changes, etc.) You can ask to resolve the conflict. In another embodiment, transaction manager 910 executes an algorithm that determines which changes should be maintained and which ones should be discarded.

다음에, 블록(3512)에서, 제1 클라이언트의 트랜잭션 매니저(910)는 큐에 대기된 파일 작업들을 XML 웹 서비스(2510)으로 전송한다. 예를 들어, 오프라인인 동안에 제1 클라이언트의 사용자가 XML 파일 시스템(2500)의 어떤 파일들을 생성하고, 삭제하고, 이름을 변경하려고 시도하면, 파일 작업들은 이 때 XML 파일 시스템(2500)으로 전송될 수 있다. 일 실시예에서, XML 파일 시스템(2500)은 다른 사용자들에 의해 만들어진 변경들(이미 삭제된 파일의 이름을 변경하려는 시도와 같은)과의 충돌을 감지하고, 적절하게 대응한다.Next, at block 3512, the transaction manager 910 of the first client sends the queued file operations to the XML Web service 2510. For example, if the user of the first client while offline is attempting to create, delete and rename certain files in the XML file system 2500, the file operations are then transferred to the XML file system 2500 . In one embodiment, the XML file system 2500 detects conflicts with changes made by other users (such as an attempt to rename a file that has already been deleted) and responds accordingly.

메소드(3500)는 이후, 제1 클라이언트의 신청 리스트에 모니터된 오브젝트들을 재추가하기 위해, 제1 클라이언트의 클라이언트측 컴포넌트(2400)가 XML 웹 서비스(2510)를 통해 메시지 서버(2512)에 접촉하는 블록(3514)로 진행한다. 다음에, 블록(3516)에서, 제1 클라이언트의 클라이언트측 컴포넌트(2400)는 제1 클라이언트가 온라인임을 나타내는 시스템 플래그를 설정한다. 일 실시예에서, 이 시스템 플래그의 설정은 클라이언트측 컴포넌트(2400)와 어플리케이션들을 정상, 즉 네트워크 연결된 작업 상태로 복귀시킨다. 메소드(3500)는 이후 종료 블록(3518)로 진행하며, 종료한다. 여기서, 제1 클라이언트의 XML 파일 시스템은 이후 네트워크 오퍼레이팅 시스템의 서버측 컴포넌트(2500)와 동기화되며, 온라인이 된다. The method 3500 then places the client side component 2400 of the first client in contact with the message server 2512 via the XML Web service 2510 to re-add the monitored objects to the first client's application list Proceed to block 3514. Next, at block 3516, the client side component 2400 of the first client establishes a system flag indicating that the first client is online. In one embodiment, the setting of this system flag returns the client side component 2400 and applications to a normal, network connected working state. The method 3500 then proceeds to end block 3518 and ends. Here, the XML file system of the first client is then synchronized with the server-side component 2500 of the network operating system and is online.

XML 파일 시스템 특별 폴더들XML file system special folders

상술한 바와 같이, XML 파일 시스템(2500) 내의 어떤 폴더들은 특별 폴더로 지정될 수 있다. 일 실시예에서, 특별 폴더에 대한 항목은 일반 폴더들에 대한 항목과 같은 방법으로 폴더 데이터베이스(2520)에 저장되지만, 그 폴더가 특별 폴더임을 나타내는 플래그가 설정된다. 일 실시예에서, 특별 폴더에 대한 폴더 데이터베이스(2520) 내의 항목은, 특별 폴더에 파일들을 생성하는 요청을 처리하는 많은 서버 프로세스 중 하나의 지시를 포함할 수 있다. 다른 실시예에서, 한 서버 프로세스는 특별 폴더에서의 파일들을 생성하는 모든 요청들을 처리하며, 그 파일의 파일 종류와 같은, 파일의 컨텐츠에 따라 파일을 어떻게 처리할지를 결정한다. As described above, some folders in the XML file system 2500 can be designated as special folders. In one embodiment, the entry for the special folder is stored in the folder database 2520 in the same manner as an entry for general folders, but a flag is set to indicate that the folder is a special folder. In one embodiment, an item in the folder database 2520 for a special folder may include an indication of one of a number of server processes that process requests to create files in a special folder. In another embodiment, a server process processes all requests to create files in a special folder, and determines how to process the file according to the contents of the file, such as the file type of the file.

이 특별 폴더들은, 파일 스토리지를 제공하는 대신에, 사용자들간의 비동기적인 메시징과 같은 일부 다른 데이터 핸들링 루틴에 대한 추상화 역할을 할 수 있다. 그러한 비동기적인 메시징의 일 예는 다른 사용자들에게로 의도된 발신 메시지들을 수신하고 처리하기 위한 발신함의 이용이 될 수 있다. 사용자간 통신을 위한 특별한 폴더의 이용은 많은 이점들을 제공한다. 예를 들어, 클라이언트 어플리케이션 개발을 단순화한다. XIOS 어플리케이션(2402)은 익숙한 파일 생성 루틴들을 단지 이용함으써 특별 폴더에 연관된 메시징 프로토콜을 이용할 수 있으며, 통신 프로토콜의 하부 상세와 씨름할 필요가 없다. 다른 예로, 사용자간 통신을 위한 특별 폴더들의 이용은 XIOS 어플리케이션(2402)이, 상술한 바와 같이, XML 파일 시스템(2500)에 포함된 그룹 기능성에 영향을 미치도록 한다. 그러므로, XIOS 메시징을 위해 특별 폴더들을 이용하는 어플리케이션(2402)은 보안, 그룹 멤버쉽, 친구 목록들, 주소지정, 익명성 등을 구현하기 위한 추가적인 코드를 추가할 필요가 없는데, 그러한 특징들에 대한 XML 파일 시스템(2500)의 하부 기능성에 의존하면 되기 때문이다. These special folders may serve as abstractions for some other data handling routines, such as asynchronous messaging between users, instead of providing file storage. One example of such asynchronous messaging may be the use of a callout to receive and process outgoing messages intended for other users. The use of special folders for user-to-user communication offers many advantages. For example, it simplifies client application development. The XIOS application 2402 can use the messaging protocol associated with the special folder by merely using familiar file creation routines, and does not have to struggle with the underlying details of the communication protocol. As another example, the use of special folders for user-to-user communication allows the XIOS application 2402 to affect the group functionality included in the XML file system 2500, as described above. Therefore, the application 2402 using special folders for XIOS messaging does not need to add additional code to implement security, group membership, friend lists, addressing, anonymity, etc. An XML file Since it depends on the lower functionality of the system 2500.

도 36은 발신함 특별 폴더에서 새로운 파일을 생성하는 요청을 처리하는 메소드(3600)의 일 실시예를 설명한다. 그러한 요청이 클라이언트 상에서 실행하는 XIOS 어플리케이션(2402)에게 파일을 생성하는 요청인 것처럼 보이지만, 서버는 그 요청을 제2 사용자에게 메시지를 전송하라는 요청으로 취급한다. 시작 블록(3602)로부터, 메소드(3600)는 제1 사용자의 발신함 폴더에 연관된 서버 프로세스가 발신함 특별 폴더에 새로운 파일을 생성하는 요청을 수신하는 블록(3604)로 진행한다. 다음에, 블록(3606)에서, 서버 프로세스는 그 요청으로부터 의도된 수신자의 주소를 추상화한다. 메소드(3600)는 서버 프로세스가 의도된 수신자의 주소와 연관된 제2 사용자를 식별하는 블록(3608)로 진행한다.  Figure 36 illustrates one embodiment of a method 3600 for handling a request to create a new file in a sender special folder. Although such a request appears to be a request to create a file to the XIOS application 2402 running on the client, the server treats the request as a request to send a message to the second user. From start block 3602, the method 3600 proceeds to block 3604 where it receives a request to create a new file in a special folder that the server process associated with the first user's outbox folder has sent. Next, at block 3606, the server process abstracts the address of the intended recipient from the request. Method 3600 proceeds to block 3608 where the server process identifies the second user associated with the intended recipient's address.

상술한 XML 파일 시스템(2500)의 그룹과 친구 목록 기능성은 많은 서로 다른 종류의 주소 지정(addressing)이 제2 사용자를 식별하도록 한다. 예를 들어, 제1 사용자는 메시지를 제2 사용자의 사용자 이름으로 직접 주소 지정할 수 있다. 다른 예로서, 제1 사용자는 제2 사용자에 연관된 멤버쉽 이름으로 메시지를 주소 지정할 수 있다. 이 경우에, 제2 사용자의 익명성은 보장되지만, 제1 사용자는 제2 사용자로 메시지를 여전히 주소 지정할 수 있다. 또 다른 예로, 제1 사용자는 제2 사용자에 연관된 메타데이터에 저장된 주소, 예를 들어, 전화 번호로 메시지를 주소 지정할 수 있다. 서버 프로세스는 어떤 종류의 주소 지정이 이용되었는지를 판단하며, 그에 따라 제2 사용자를 식별한다. The group and friend list functionality of the XML file system 2500 described above allows many different kinds of addressing to identify the second user. For example, the first user may address the message directly to the second user's user name. As another example, the first user may address the message with the membership name associated with the second user. In this case, the anonymity of the second user is guaranteed, but the first user can still address the message to the second user. As another example, the first user may address the message to an address, e.g., a telephone number, stored in the metadata associated with the second user. The server process determines what kind of addressing is used and identifies the second user accordingly.

다음에, 블록(3610)에서, 서버 프로세스는 제2 사용자의 수신함 폴더 ID를 결정한다. 일 실시예에서, 이는 제2 사용자에 연관된 수신함 폴더에 대하여 폴더 데이터베이스(2520)를 검색하는 것을 단순히 포함한다. 메소드(3600)는 이후, 수신함 폴더 ID를 이용하여, 서버 프로세스가 제2 사용자의 수신함 폴더에서 새로운 파일을 생성하는 블록(3612)으로 진행하며, 새로운 파일은 그 요청에 포함된 데이터를 포함한다. 특별 폴더에서 파일이 생성된 실시예들에서(파일 생성 요청을 직접적으로 처리하는 서버 프로세스에 반대로), 서버 프로세스는 새로운 파일을 제1 사용자의 발신함 폴더로부터 제2 사용자의 수신함 폴더로 단순히 이동한다. 다음에, 메소드(3600)는 종료 블록(3514)으로 진행하고 종료한다. Next, at block 3610, the server process determines the inbox folder ID of the second user. In one embodiment, this simply involves searching the folder database 2520 for the inbox folder associated with the second user. The method 3600 then proceeds to block 3612 where the server process creates a new file in the inbox folder of the second user, using the inbox folder ID, and the new file contains the data contained in the request. In embodiments where a file is created in a special folder (as opposed to a server process that handles the file creation request directly), the server process simply moves the new file from the first user's Outbox folder to the second user's Inbox folder . Next, method 3600 proceeds to end block 3514 and ends.

예제 어플리케이션-채팅Example Application - Chat

위에서 강조된 것처럼, 네트워크 오퍼레이팅 시스템의 이점은 네트워크 오퍼레이팅 시스템에 임베디드된 특징들이 재사용가능하고 스케일러블하고, 여러 플랫폼에 적용되고(cross-platform), 풍부한 보안과 익명성 기능성을 포함하는 협업 컴포넌트들을 신속하게 개발할 수 있도록 한다는 것이다. 이 많은 특징들의 이점을 이용하는 예시적인 어플리케이션의 일 실시예는 아래에서 설명할 채팅 어플리케이션이다. As highlighted above, an advantage of a network operating system is that features embedded in a network operating system are reusable, scalable, cross-platform, and rapidly deploy collaborative components, including rich security and anonymity functionality So that it can be developed. One embodiment of an exemplary application that takes advantage of many of these features is the chat application described below.

도 37은, 상위 레벨에서, 채팅 어플리케이션(3700)과 상응하는 공유 데이터 파일(3710)의 일 실시예를 설명한다. 새로운 통신 프로토콜들과 인증 방법들을 고안하고 코딩하는 대신에, 채팅 어플리케이션(3700)은 XML 파일 시스템(2500)에 존재하는 공유 데이터 파일(3710)의 이용을 통해 채팅 대화에 참여한 참가자들 사이에 통신을 수행한다. 채팅 어플리케이션(3700)의 인터페이스는 네 개의 주요 컴포넌트들인, 호스트 윈도우 컴포넌트(3712), 텍스트 디스플레이 컴포넌트(3702), 텍스트 항목 컴포넌트(3704) 및 버튼 컴포넌트(3706)를 포함한다. 채팅 대화의 시작시, 텍스트 디스플레이 컴포넌트(3702)는 바인딩(3708)을 통해 공유 데이터 파일(3706)에 바인드되어, 채팅 대화에 참가한 어느 참가자에 의해 공유 데이터 파일(3710)에 만들어진 변경들은 텍스트 디스플레이 컴포넌트(3710)(명확성을 위해 이 텍스트는 도 37에서 생략되었음)에 반영된다. 37 illustrates one embodiment of a shared data file 3710 corresponding to the chat application 3700 at a higher level. Instead of devising and coding new communication protocols and authentication methods, the chat application 3700 communicates with participants participating in a chat conversation through the use of a shared data file 3710 present in the XML file system 2500 . The interface of the chat application 3700 includes a host window component 3712, a text display component 3702, a text item component 3704, and a button component 3706, which are four main components. At the beginning of a chat conversation, the text display component 3702 is bound to the shared data file 3706 via the bindings 3708 so that any changes made to the shared data file 3710 by any participant participating in the chat conversation, (This text is omitted in Fig. 37 for the sake of clarity).

도 38은, 상위 레벨에서, 채팅 어플리케이션(3700)의 일 실시예의 텍스트 디스플레이 컴포넌트(3702)와 버튼 컴포넌트(3706)가 공유 데이터 파일(3710)에도 바인드되는 것을 설명한다. 사용자가 텍스트를 텍스트 항목 컴포넌트(3704)에 입력하고 버튼 컴포넌트(3706)를 클릭하면, 변경이 공유 데이터 파일(3710)에 만들어진다. 이 변경은, 텍스트 디스플레이 컴포넌트(3702)를 포함하는, 공유 데이터 파일(3710)에 바인드된 모든 컴포넌트들에 이후 전파된다. 38 illustrates that, at a higher level, the text display component 3702 and the button component 3706 of one embodiment of the chat application 3700 are also bound to the shared data file 3710. [ When the user enters text into the text entry component 3704 and clicks the button component 3706, a change is made to the shared data file 3710. [ This change is then propagated to all the components bound to the shared data file 3710, including the text display component 3702.

도 39는, 상위 레벨에서, 제1 사용자(3902)의 채팅 어플리케이션과 제2 사용자(3904)의 채팅 어플리케이션 사이의 채팅 대화중에 공유 데이터 파일(3710)의 업데이트를 설명한다. 이 도면에서, 제1 사용자(3902)의 채팅 어플리케이션의 텍스트 디스플레이 컴포넌트(3702)와 제2사용자(3904)의 채팅 어플리케이션의 텍스트 디스플레이 컴포넌트(3702)는 모두 공유 데이터 파일(3710)에 바인드되므로, 공유 데이터 파일(3710)의 컨텐츠를 디스플레이한다. 제1 사용자가 텍스트 입력 컴포넌트(3704)에 텍스트를 입력하고, 버튼 컴포넌트(3706)를 클릭한다. 버튼 컴포넌트(3706)는 트리거에 연관되어 있으며, 이는 버튼 컴포넌트가 클릭되면, 텍스트 항목 컴포넌트(3704)로부터 텍스트를 읽고, 텍스트(3906)를 공유 데이터 파일(3710)에 붙이고, 텍스트 항목 컴포넌트(3704)에서 텍스트를 지우는 단계들이 실되도록 한다.  39 illustrates updating of the shared data file 3710 during a chat conversation between the chat application of the first user 3902 and the chat application of the second user 3904 at a higher level. In this figure, since the text display component 3702 of the chat application of the first user 3902 and the text display component 3702 of the chat application of the second user 3904 are both bound to the shared data file 3710, The contents of the data file 3710 are displayed. The first user enters text into the text input component 3704 and clicks the button component 3706. The button component 3706 is associated with a trigger that reads text from the text item component 3704 when the button component is clicked and attaches the text 3906 to the shared data file 3710, So that the steps of erasing the text are executed.

공유 데이터 파일(3710)을 업데이트하는 이 절차는, 개발자는 이 기능성을 가능하게 하기 위해 상술한 네 개의 컴포넌트들을 단순히 연관시켜야 하며, 텍스트 항목 컴포넌트에 바인드되는 규칙을 생성하여야 한다는 점에서, 네트워크 오퍼레이팅 시스템의 적어도 하나의 이점을 보여주는 것을 돕는다. 장면들 너머에는, 네트워크 오퍼레이팅 시스템이 공유 데이터 파일(3710)을 업데이트하는 수 많은 상세들을 처리한다. 예를 들어, 일 실시예에서, 일시 저장된 공유 데이터 파일의 사본(3710)은 문서 매니저(912)에 의해 유지되는 클라이언트측 캐시에 저장된다. 상응하는 URL 오브젝트는 공유 데이터 파일(3710)을 업데이트하는 요청을 수신하고, 이는 트랜잭션 매니저(910)가 변경들을 표현하는 트랜잭션을 생성하도록 한다. 트랜잭션 매니저(910)는, 트랜잭션이 XIOS 커뮤니케이터(2504)와 XIOS 채널을 통해 XML 웹 서비스(2510)으로 제출되도록 함으로써, 이 트랜잭션을 원격 리스너들로 전파한다. XML 웹 서비스(2510)는 파일이 공유되었음을 언급하고, 제출된 트랜잭션을 트랜잭션 코디네이터(2522)로 전달한다. 트랜잭션 코디네이터(2522)는 XML 파일 시스템 내에서 공유 데이터 파일(3710)을 업데이트하는 트랜잭션을 이후 기록한다. This procedure of updating the shared data file 3710 requires the developer to simply associate the four components described above to enable this functionality and to create a rule bound to the text item component, At least one advantage of &lt; / RTI &gt; Beyond the scenes, the network operating system processes a number of details to update the shared data file 3710. For example, in one embodiment, a copy 3710 of a temporarily stored shared data file is stored in a client-side cache maintained by the document manager 912. [ The corresponding URL object receives a request to update the shared data file 3710, which causes the transaction manager 910 to generate a transaction representing the changes. The transaction manager 910 propagates this transaction to the remote listeners by allowing the transaction to be submitted to the XML Web service 2510 via the XIOS communicator 2504 and the XIOS channel. The XML Web service 2510 mentions that the file has been shared and forwards the submitted transaction to the transaction coordinator 2522. Transaction coordinator 2522 then writes a transaction that updates the shared data file 3710 within the XML file system.

도 40은, 상위 레벨에서, 채팅 어플리케이션(3700)의 일 실시예에서 공유 데이터 파일(3710)에 대한 변경의 전파를 통한 채팅 메시지의 전송을 설명한다. 상술한 바와 같이, 제1 클라이언트(3902)의 채팅 어플리케이션과 제2 클라이언트(3904)의 채팅 어플리케이션의 텍스트 디스플레이 컴포넌트(3702)는 공유 데이터 파일에 바인드된다. 그러므로, XML 파일 시스템(2500)이 공유 데이터 파일(3710)을 업데이트하면, 바인드된 각 컴포넌트들은 변경을 통지받으며, 따라서 업데이트된다.40 illustrates, at a higher level, the transmission of a chat message through the propagation of changes to the shared data file 3710 in one embodiment of the chat application 3700. [ As described above, the text display component 3702 of the chat application of the first client 3902 and the chat application of the second client 3904 are bound to the shared data file. Thus, when the XML file system 2500 updates the shared data file 3710, each of the bound components is notified of the change and is therefore updated.

유리하게, 이는 개발자가, 데이터 업데이트 이벤트 전파를 통해, 자동적으로 항상 공유된 데이터 파일(3710)에 동기화된 정확한 정보를 표시하는 UI 컴포넌트들을 갖도록 하며, 대신에 컴포넌트를 공유 데이터 파일(3710)에 바인딩 함으로써, 코드를 작성하지 않아도 채팅 통신을 완료하도록 한다. 공유 데이터 파일(3710)의 업데이트와 마찬가지로, 네트워크 오퍼레이팅 시스템은 이 트랜잭션의 다수의 상세들을 처리한다. 예를 들어, 일 실시예에서, 트랜잭션 코디네이터(2522)가 트랜잭션을 기록하면, 메시지 서버(2512)가 공유 데이터 파일(3710)에서의 변경에 신청된 각 클라이언트에 공유 데이터 파일(3710)이 업데이트되었음을 통지하도록 지시한다. 메시지 서버(2512)는 이 통지들을 각 클라이언트에 전송하며, 클라이언트들은 통지로부터 업데이트된 정보를 추상화하거나 그 파일의 최신 버전을 획득하기 위해 XML 파일 시스템(2500)에 접촉한다. 이에 관해, 다른 클라이언트들의 트랜잭션 매니저(910)는 변경이 제1 클라이언트에 의해 제출되었음을 인지하고, 그의 공유 데이터 파일(3710)의 일시 저장 버전을 반복적으로 업데이트하지 않는다. 다른 클라이언트들의 트랜잭션 매니저(910)는 변경들이 그들의 각 공유 데이터 파일의 일시 저장 버전들에 일체되도록 한다. 다른 데이터 업데이트들이 발생하는 것과 같이, 제1 클라이언트(3902)의 채팅 어플리케이션의 텍스트 디스플레이 컴포넌트들(3702)과 제2 클라이언트(3904)의 채팅 어플리케이션을 포함하는, 리스닝 컴포넌트들은 파일이 업데이트되었음을 통지받는다. 텍스트 디스플레이 컴포넌트들(3702)는 추가된 컨텐츠(3906)으로 따라서 자동적으로 업데이트된다.  Advantageously, this allows the developer to have UI components that automatically display always the correct information synchronized to the shared data file 3710, via data update event propagation, and instead bind the component to the shared data file 3710 So that the chat communication is completed without writing the code. As with updating the shared data file 3710, the network operating system processes multiple details of this transaction. For example, in one embodiment, when transaction coordinator 2522 records a transaction, message server 2512 determines that shared data file 3710 has been updated for each client subscribed to the change in shared data file 3710 Instructs to notify. The message server 2512 sends these notifications to each client, which contacts the XML file system 2500 to abstract updated information from the notification or obtain the latest version of the file. In this regard, the transaction manager 910 of the other clients recognizes that the change has been submitted by the first client and does not update the temporarily stored version of its shared data file 3710 repeatedly. The transaction manager 910 of the other clients allows the changes to be integrated into the temporary storage versions of their respective shared data files. The listening components, including the text display components 3702 of the chat application of the first client 3902 and the chat application of the second client 3904, are notified that the file has been updated, as other data updates occur. The text display components 3702 are automatically updated with the added content 3906.

도 41은 클라이언트들간 협업 통신을 위해 공유 데이터 파일(3710)을 이용하여 가능하게 된 추가적인 특징을 설명한다. 즉, 주어진 공유 데이터 파일(3710)에 대한 업데이트들이 공유 데이터 파일(3710)을 신청한 어떤 수의 클라이언트들에 전파되므로, 둘 이상의 참가자들간의 협업적인 통신을 가능하게 하기 위한 추가적인 작업이 필요하지 않다. 도 41에 도시된 바와 같이, 제1 클라이언트(3902)와 제2 클라이언트(3904)간 대화는, 어떠한 추가적인 디자인 변경들 없이도, 제3 클라이언트와 제4 클라이언트와 같은, 어떤 수의 다른 클라이언트들에 의해서도 참가될 수 있다. 각 클라이언트는 공유 데이터 파일(3710)에 바인드되며, 상술한 업데이트들을 수신한다.Figure 41 illustrates additional features enabled using shared data file 3710 for collaborative communication between clients. That is, no further work is required to enable collaborative communication between two or more participants, as updates to a given shared data file 3710 are propagated to any number of clients that have submitted the shared data file 3710 . 41, the conversation between the first client 3902 and the second client 3904 may be performed by any number of other clients, such as the third client and the fourth client, without any additional design changes Can participate. Each client is bound to a shared data file 3710 and receives the above-described updates.

주어진 사용자의 채팅 친구 목록에 대한 연락처들의 추가와 개별 채팅 세션들의 설정은 네트워크 오퍼레이팅 시스템 내에 포함된 많은 특징들을 또한 설명한다. 일 실시예에서, 제1 사용자는 제1 사용자의 친구 목록의 멤버이고 제1 사용자와의 채팅 통신을 동의한 제2 사용자와 채팅 메시지를 주고 받을 수만 있다. 제1 사용자의 친구 목록은 XML 파일 시스템(2500) 내의 문서에 저장될 수 있거나, settings.xml 파일의 일부에 저장되고 전송될 수 있다. 제2 사용자를 친구 목록에 추가하기 위해, 제1 사용자는 먼저 사용자를 검색하여야 한다. 일 실시예에서, 그룹에 속할 때 사용자들의 익명성을 보존하기 위해, 제1 사용자는 멤버쉽 이름들을 검색할 수만 있으며, 각 멤버쉽 이름들은 사용자와 제1 사용자가 속한 그룹에 연관된다. 일 실시예에서, 제1 사용자는 전역 그룹을 또한 검색할 수 있으며, 여기에는 사용자의 실제 이름의 지시가 있으나, 그룹들에서 발견한 이름과의 연결은 없다. The addition of contacts for a given user's chat buddy list and the configuration of individual chat sessions also illustrate many of the features included within the network operating system. In one embodiment, the first user may only be able to send and receive chat messages with a second user who is a member of the first user's friend list and has agreed to a chat communication with the first user. The friend list of the first user may be stored in a document in the XML file system 2500, or may be stored and transmitted in a portion of the settings.xml file. To add a second user to the buddy list, the first user must first search for the user. In one embodiment, in order to preserve the anonymity of users when belonging to a group, the first user can only retrieve the membership names, and each membership name is associated with the user and the group to which the first user belongs. In one embodiment, the first user may also search for a global group, where there is an indication of the user's real name, but no association with the name found in the groups.

어느 경우에도, 검색은 제1 사용자에게 제2 사용자에 연관된 주소를 반환한다. 제1 사용자는 이후 제2 사용자의 주소로 제2 사용자를 제1 사용자의 친구 리스트에 추가하는 요청을 전송한다. 일 실시예에서, 이는 상술한 메소드(3600)를 이용해서 할 수 있으며, 제1 사용자는 제1 사용자의 발신함 폴더에 친구 목록 요청을 구성하는 파일을 생성하며, 이는 이후에 서버 프로세스에 의해 라우팅되고 제2 사용자의 수신함 폴더로 전송된다. 제2 사용자의 클라이언트 상에서, 요청은 제2 사용자의 수신함으로부터 검색되고, 제2 사용자에게 제1 사용자가 친구 목록에 추가하기를 원하는지를 묻는 다이얼로그가 디스플레이된다. 제2 사용자가 응답하면, 메시지는 제1 사용자의 친구 목록에 제2 사용자의 추가를 종료하기 위해 제1 사용자에게 비슷한 방법으로 다시 전송되며, 제1 사용자는 이후 제2 사용자와의 채팅 대화를 시작할 수 있다. In either case, the search returns the address associated with the second user to the first user. The first user then sends a request to add the second user to the buddy list of the first user at the address of the second user. In one embodiment, this may be done using the method 3600 described above, where the first user creates a file that constitutes a friend list request in the outbox folder of the first user, which is then routed by the server process And transferred to the inbox folder of the second user. On the client of the second user, the request is retrieved from the inbox of the second user, and a dialog is displayed to the second user asking whether the first user wants to add to the friends list. If the second user responds, the message is sent back to the first user in a similar manner to terminate the addition of the second user to the first user's buddy list, and the first user then initiates a chat conversation with the second user .

제1 사용자가 채팅 세션을 제2 사용자와 시작하기 위해, 유사한 프로세스가 발생한다. 제1 사용자의 채팅 어플리케이션은 공유 데이터 파일(3710)을 생성하고, 텍스트 디스플레이 컴포넌트(3702)를 공유 데이터 파일(3710)에 바인드하고, 제2 사용자의 주소로 채팅 세션을 시작하자는 요청을 전송한다. 요청은 상술한 바와 같이 전달된다. 제2 사용자가 요청을 수락하면, 통지가 제1 사용자의 채팅 어플리케이션으로 전달되고, 이는 이후 공유 데이터 파일(3710)의 문서 ID를 제2 사용자의 채팅 어플리케이션으로 전송한다. 제2 사용자의 채팅 어플리케이션은 그의 텍스트 디스플레이 컴포넌트(3702)를 공유 데이터 파일(3710)에 바인드하고, 채팅 대화는 상술한 바와 같이 진행한다. A similar process occurs for the first user to start the chat session with the second user. The first user's chat application generates a shared data file 3710, binds the text display component 3702 to the shared data file 3710, and sends a request to start the chat session to the address of the second user. The request is delivered as described above. If the second user accepts the request, the notification is delivered to the first user's chat application, which then sends the document ID of the shared data file 3710 to the second user's chat application. The second user's chat application binds its text display component 3702 to the shared data file 3710 and the chat conversation proceeds as described above.

이 특징들이 채팅을 참조하여 설명되었지만, 당업자라면 메시지 보드들, 이메일 등과 같은 서버 중재 통신(server-mediated communication)이 공유 데이터 파일들을 이용하여 구현될 수 있음을 인지할 수 있다. 또한, 공유 데이터 파일들은 중재를 위한 서버를 요구하지 않는 다른 형태의 통신을 조정하는데 이용될 수 있다. 예를 들어, 제1 사용자와 제2 사용자는 VOIP 또는 화상 회의 같은 피어-투-피어 통신을 위한 대역폭 설정들, 암호 설정들 등을 협상하기 위해 공유 데이터 파일을 이용할 수 있다.While these features have been described with reference to a chat, those skilled in the art will recognize that server-mediated communication, such as message boards, email, etc., may be implemented using shared data files. Also, shared data files can be used to coordinate other forms of communication that do not require a server for arbitration. For example, the first user and the second user may use the shared data file to negotiate bandwidth settings, password settings, and the like for peer-to-peer communications such as VOIP or video conferencing.

더욱이, 위의 채팅의 설명이 채팅 어플리케이션이 단순화를 위해 수신함 폴더에 도착한 모든 메시지들을 처리하고 있지만, 클라이언트 상의 추가적인 컴포넌트가 수신 메시지들을 관리하는 것도 가능하다. 일실시예에서, 클라이언트 상의 컴포넌트는 수신함 폴더에 나타난 각 메시지들을 분석하고 메시지를 처리할 적합한 어플리케이션을 결정한다. 컴포넌트는 이후 어플리케이션을 시작하고, 이후 처리를 위해 메시지를 어플리케이션으로 패스한다. 이렇게, 수신 채팅 요청들 또는 친구 리스 요청들이 이미 구동중인 채팅 어플리케이션을 가지지 않아도 처리될 수 있다. Moreover, it is also possible that the above chat description handles all messages arriving in the Inbox folder for simplicity, but additional components on the client can manage incoming messages. In one embodiment, the component on the client analyzes each message displayed in the Inbox folder and determines the appropriate application to process the message. The component then starts the application and passes the message to the application for further processing. Thus, incoming chat requests or friend lease requests can be processed without having a chat application already running.

도 42는 XIOS 어플리케이션들 생성시 재사용가능한 컴포넌트들의 이용의 다른 이점을 설명한다. 도면은 웹 브라우저 내에 호스팅된 네트워크 오퍼레이팅 시스템의 일 실시예를 설명하며, 네트워크 오퍼레이팅 시스템이 독립 어플리케이션이나 클라이언트측 컴포넌트(2400)의 머신 오퍼레이팅 시스템 구현과 같은 다른 실시예들에서 어떻게 보여지는지를 나타낼 수 있다. 웹 브라우저 내의 각 박스들은 이메일 컴포넌트, 시계 컴포넌트, 웹 서치 컴포넌트, 그룹 메시지 컴포넌트 및 날씨 예보 컴포넌트와 같은 재사용 가능한 컴포넌트들로 생성된 XIOS 어플리케이션(2402)을 표현한다. 단순히 독립 채팅 어플리케이션 내에 있는 것과는 반대로, 아래 오른쪽의 박스는 이 웹 브라우저 내의 채티 어플리케이션 컴포넌트의 재사용을 보여준다. 컴포넌트들이 다른 컨텍스트에서 작동하기 위해 다시 작성될 필요가 없으므로, 재사용 가능한 컴포넌트들의 사용은 그러한 복잡한 어플리케이션들의 신속한 개발을 가능하게 한다. 복잡한 어플리케이션들을 생성할 수 있는 다른 이점은 데이터 모델들로부터 어플리케이션에 주는 하부 데이터가 복수의 이질적인 소스들로부터 병합될 수 있으며, 따라서 어플리케이션들이 다수의 데이터 소스들의 합성으로부터 작동할 수 있게 한다.  Figure 42 illustrates another benefit of using reusable components in creating XIOS applications. The drawing illustrates one embodiment of a network operating system hosted within a web browser and may indicate how a network operating system is shown in other embodiments, such as a standalone application or a machine operating system implementation of client side component 2400 . Each box in the web browser represents an XIOS application 2402 created with reusable components such as an e-mail component, a clock component, a web search component, a group messaging component, and a weather forecast component. Contrary to being simply in a stand-alone chat application, the box on the right below shows the reuse of the Chatty application component in this web browser. Since components do not need to be rewritten to work in different contexts, the use of reusable components enables the rapid development of such complex applications. Another advantage of creating complex applications is that the underlying data from the data models to the application can be merged from multiple heterogeneous sources, thus allowing applications to operate from the synthesis of multiple data sources.

예제 어플리케이션-동창회Sample application - alumni association

도 43은 시스템의 실시예들을 이용하여 쉽게 생성된 예제 협업 어플리케이션을 설명한다. 1992년 학급 동창회 어플리케이션은 그룹의 멤버들에게 제공될 수 있는 기능성의 일 예이다. 도 42를 참조하여 상술한 바와 같이, 도 43은 복수의 데이터 소스들을 참조하는 컴포넌트들의 모음을 설명한다. 1992년 학급 동창회 어플리케이션에 의해 설명되는 것은 그룹 폴더를 바인딩할 때 로딩되는 autostart.xml 파일의 일부로서 시작되는 컴포넌트들의 모음이다. 도 32B에 도시된 바와 같이, 1992년 학급 동창회 그룹 폴더는 데이터 소스로서 클라이언트에 바인드될 수 있으며, 그 경우에 사용자 인터페이스 내에서 드라이브로 디스플레이된다. 사용자가 그후에 그 데이터 소스를 오픈하면(또는 사용자가 처음으로 데이터 소스를 바인드하면), 그 그룹 폴더에 연관된 autostart.xml 문서는 Schedule of Events, the Map to Reunion Events, the Countdown to Reunion 등과 같은 컴포넌트들의 모음이 디스플레이되도록 한다.Figure 43 illustrates an example collaborative application that is easily generated using embodiments of the system. The 1992 classroom alumni application is an example of the functionality that can be provided to members of a group. As described above with reference to Figure 42, Figure 43 illustrates a collection of components that reference a plurality of data sources. Illustrated by the 1992 class reunion application is a collection of components that begin as part of the autostart.xml file that is loaded when binding group folders. As shown in Figure 32B, a 1992 class alumni group folder may be bound to the client as a data source, in which case it is displayed as a drive within the user interface. If the user then opens the data source (or the user binds the data source for the first time), the autostart.xml document associated with that group folder will contain the components of the Schedule of Events, the Map to Reunion Events, and the Countdown to Reunion Let vowels be displayed.

이 컴포넌트들의 자동 디스플레이와 함께, 그룹 기능성은 보안을 또한 제공한다. 예를 들어, 그룹의 멤버들만이, 그룹 폴더 계층구조 내에서 저장된 폴더의 뷰일 수 있는 Photo Album 내의 항목들을 볼 수 있다. 그룹 기능성은 그룹의 다른 멤버들과의 쉬운 협업을 또한 제공하며, 도 43의 Chat 컴포넌트에 보여지는 바와 같이, 이는 사용자에게 다른 그룹 멤버들을 친구 리스트에 추가하도록 요구하지 않고도, 그룹의 다른 온라인 멤버들을 보여준다. Along with automatic display of these components, group functionality also provides security. For example, only members of a group can view items in a Photo Album that can be views of folders stored within the group folder hierarchy. The group functionality also provides for easy collaboration with other members of the group, and as shown in the Chat component of Figure 43, this allows other online members of the group to be added to the buddy list without requiring the user to add other group members to the buddy list Show.

예제 어플리케이션 - 제스쳐(gesture) 기반 협업Example application - gesture-based collaboration

네트워크를 통한 협업에 이용하기 위한 현존하는 시스템들은 이메일, 인스턴스 메시징, 워크플로우들 등과 같은 복수 어플리케이션들을 포함할 수 있다. 이에 관해, 엔티티들이 네트워킹 환경에서 상호작용하고 협업하도록 하는 것은 이메일, 인스턴스 메시징 및/또는 컨퍼런싱과 같은 다양한 툴들과 어플리케이션들을 이용하여 문서들과 메시지들의 교환을 전형적으로 포함한다. 대안적으로, 중앙화된 저장소 또는 네트워크 포탈이 협업을 지원하기 위한 목적으로 데이터의 수집과 배포를 중앙화하기 위해 구현될 수 있다. 그러나 이러한 현존하는 시스템들은 사용자에게 용이하게 이해될 수 있는 협업의 효율적인 방법들을 제공하지 않는다. 일 실시예에서, 본 발명의 측면들은 더욱 자연스럽게 실제 생활과 같은 협업을 시뮬레이션하는 방법으로 사용자들이 네트워크를 통해 협업하는 제스쳐 기반 협업을 지원한다.Existing systems for use in collaboration over a network may include multiple applications such as email, instant messaging, workflows, and the like. In this regard, allowing entities to interact and collaborate in a networking environment typically involves the exchange of documents and messages using a variety of tools and applications such as email, instant messaging and / or conferencing. Alternatively, a centralized repository or network portal can be implemented to centralize the collection and distribution of data for the purpose of supporting collaboration. However, these existing systems do not provide efficient ways of collaboration that can be easily understood by the user. In one embodiment, aspects of the invention more naturally support gesture-based collaboration where users collaborate over the network in a way that simulates real-life collaboration.

도 44를 참조하면, 다음은 본 발명의 추가적인 측면들을 설명하는데 이용될 수 있는 네트워킹 환경(4400)의 개요를 제공하기 위해 의도되었다. 도 44에 설명된 바와 같이, 네트워킹 환경(4400)은 네트워크(4407)를 통해 클라이언트들(4404, 4406) 각각과 통신 가능하게 연결된 서버측 데이터 센터(4402)를 포함한다. 상술한 바와 같이, 네트워크 오퍼레이팅 시스템의 클라이언트측 컴포넌트는 서버측 데이터 센터(4402)로부터 클라이언트들(4404, 4406) 각각으로 동적으로 전달되거나, 로컬에 설치될 수 있다. 양 경우에서, 네트워크 오퍼레이팅 시스템의 클라이언트측 컴포넌트는 XML 구조 어플리케이션들을 해석하거나 클라이언트들(4404, 4406) 각각에서 실행되도록 하는 XML 가상 머신(4408)을 제공한다.Referring now to Figure 44, the following is intended to provide an overview of networking environment 4400 that may be used to describe additional aspects of the present invention. 44, the networking environment 4400 includes a server-side data center 4402 communicatively coupled with each of the clients 4404 and 4406 via a network 4407. As shown in FIG. As described above, the client-side components of the network operating system can be dynamically delivered to the respective clients 4404 and 4406 from the server-side data center 4402, or installed locally. In both cases, the client-side components of the network operating system provide the XML virtual machine 4408 to interpret the XML structure applications or to be executed on each of the clients 4404 and 4406.

도 44에 도시된 실시예에서, 협업 매니저(4410) 및 상태 매니저(4412)는 네트워크 오퍼레이팅 시스템의 클라이언트측 컴포넌트 내에 구현된다. 이 매니저들(4410, 4412)은 실행중인 어플리케이션이 원격 컴퓨팅 장치들(예를 들어, 클라이언트들(4404, 4406))상에서 능동적으로 공유되고 시각적으로 렌더링 되는 협업 세션들을 지원한다. 동일한 어플리케이션 유저 인터페이스(어플리케이션 상태 및 관련된 데이터를 포함)는 렌더링되고 각 사용자에 의해 조작될 수 있다. 어플리케이션을 포함하는 상태 변경들은, XML 가상 머신(4408)을 로컬에서 이용하여 변경들을 해석하는 협업 세션에 포함된 각 클라이언트들(4404, 4406)과 실시간으로 동기화된다. 일 실시예에서, 다른 사용자와 협업 세션을 시작하기 위해, 사용자는 어플리케이션을 시각적 디스플레이의 경계로 “드래그 앤 드랍”할 수 있다. 이 종류의 지시자가 수신되면, 어플리케이션 상태를 설명하는 메시지들이 자유롭게 교환될 수 있도록, 협업 매니저(4410)는 협업 세션의 설정을 가능하게 한다. 이에 관해, 시작지 클라이언트 상에서 실행중인 어플리케이션은 온 디맨드로 다른 클라이언트로 동적으로 전송 가능하다. 일 실시예에서, 협업 매니저(4410)는 어플리케이션 상태 정보뿐만이 아니라 어플리케이션 패키지에 연관된 모든 자원들이 목적지 클라이언트로 전송되도록 한다. 결과적으로, 목적지 클라이언트는 협업 세션에 포함될 어플리케이션에 관한 어떠한 사전 지식도 가질 필요가 없다. 대신, 목적지 클라이언트에 의해 요구되는 그 자원들만이, 예를 들어, 어플리케이션이 목적지 클라이언트 상에서 이미 이용가능할 때, 전송될 수 있다. 협업 세션이 설정되자 마자, 각 클라이언트 상의 상태 매니저(4412)는 로컬에서 발생한 상태 변경들의 공지를 수신한다. 이전에 언급된 바와 같이, 시스템의 모든 컴포넌트의 상태는 상태 매니저(4412)에 의해 캡슐화된 기능성을 이용하기 위해 스템에 의해 제공된 상태 XML 문서로 전파된다. 특히, 이 실시예는 협업 세션에 참여한 각각의 클라이언트(4404 및 4406)상에서 어플리케이션에 대한 상태의 동기화를 촉진한다. 더욱이, 공유된 어플리케이션에 바운드된 문서에 영향을 미치는 데이터 업데이트는 데이터 업데이트 이벤트로써 전파된다. 상술한 채팅 어플리케이션과 유사하게, 사용자 인터페이스 컴포넌트는 공유된 데이터 파일을 이용하는 데이터 업데이트 이벤트 전파를 통해 동기화된 정확한 정보를 항상 디스플레이한다. 예를 들어, 실시예에서, 트랜잭션 코디네이터가 데이터 업데이트를 포함하는 트랜잭션을 기록할 때, 메시지 서버는 협업 세션에 참여하여 데이터 업데이트 이벤트를 신청한 각 클라이언트에게 공지할 것을 지시한다. 차례로, 메시지 서버는 데이터 업데이트 이벤트의 이들 공지를 리스닝 클라이언트로 전송한다. 하기에 더 상세히 설명된 바와 같이, 본 발명에 의해 제공되는 추가적인 오브젝트들 및 매니저들은 제스처 기반 협업을 구현하는데 이용되고, 도 44에 설명된 블록 다이어그램은 단지 예시적이다.In the embodiment shown in FIG. 44, collaboration manager 4410 and status manager 4412 are implemented within the client-side components of the network operating system. These managers 4410 and 4412 support collaborative sessions in which a running application is actively shared and visually rendered on remote computing devices (e.g., clients 4404 and 4406). The same application user interface (including application state and associated data) can be rendered and manipulated by each user. The state changes that include the application are synchronized in real time with each client 4404, 4406 included in the collaboration session that uses the XML virtual machine 4408 locally to interpret changes. In one embodiment, to initiate a collaboration session with another user, a user may &quot; drag and drop &quot; the application to the boundary of the visual display. When this kind of indicator is received, the collaboration manager 4410 enables the setting of the collaboration session so that messages describing the application state can be freely exchanged. In this regard, applications running on the initiator client can be dynamically transferred to other clients on demand. In one embodiment, the collaboration manager 4410 allows not only application state information, but all resources associated with the application package to be transmitted to the destination client. As a result, the destination client need not have any prior knowledge of the application to be included in the collaboration session. Instead, only those resources required by the destination client can be transmitted, for example, when the application is already available on the destination client. As soon as the collaboration session is established, the state manager 4412 on each client receives notification of locally occurring state changes. As previously mentioned, the state of all components of the system is propagated to the state XML document provided by the system to take advantage of the functionality encapsulated by the state manager 4412. In particular, this embodiment facilitates synchronization of states for an application on each client 4404 and 4406 participating in a collaboration session. Moreover, data updates that affect documents bound to shared applications are propagated as data update events. Similar to the chat application described above, the user interface component always displays accurate information synchronized through propagation of data update events using a shared data file. For example, in an embodiment, when the transaction coordinator records a transaction that includes a data update, the message server is instructed to participate in the collaboration session and notify each client that subscribed to the data update event. In turn, the message server sends these announcements of the data update event to the listening client. As described in more detail below, the additional objects and managers provided by the present invention are used to implement gesture-based collaboration, and the block diagram illustrated in Figure 44 is merely exemplary.

도 45를 참조하면, 협업 시작 루틴(4500)은 설명될 원격 객체들간에 협업 세션을 설정한다. 도 45에 도시된 바와 같이, 협업 시작 루틴(4500)은 협업 세션을 시작하기 위한 명령이 시작되는 블록(4502)에서 시작된다. 일 실시예에서, 제스쳐 기반 협업은 원격 클라이언트들간의 어플리케이션을 능동적으로 공유하는데 포함되는 복잡한 설명이 요구되는 개발자들 없이 오퍼레이팅 시스템 레벨에서 실행된다. 이전에 언급된 바와 같이, 사용자는 다른 사용자와의 협업 세션을 시작하기 위한 명령을 생성하기 위해 시각적 디스플레이의 경계에 걸쳐 어플리케이션 뷰를 “드래그-앤-드랍”할 수 있다. 이에 관해, 시각적 디스플레이상의 위치는 시스템 설정 또는 다른 설정 정보에 기초하여 특별한 사용자와 연관될 수 있다. 다른 실시예에서, 사용자 이름에 연관된 사용자 또는 다른 오브젝트의 리스트는 제스쳐-기반 협업에 이용될 수 있다. 상술한 바와 같이, XIOS 어플리케이션은 보안, 그룹 멤버쉽, 친구 목록들, 주소 지정, 익명성 등과 같은 어떤 기능성을 구현하기 위해 추가적인 코드를 추가할 필요가 없는데, 그러한 특징들에 대해 네트워크 오퍼레이팅 시스템에 의존하면 되기 때문이다. 어플리케이션에 이용되는 이들 오브젝트들은 협업을 가능하게 하는 제스쳐를 이해할 수 있도록 인코딩될 수 있다. 예를 들어, 특별한 오브젝트 “드래그-앤-드랍”이 어플리케이션이 어플리케이션의 유저이름 위로 디스플레이됨으로써 협업 세션이 시작될 수 있다. 그러나, 청구된 기술적 특징의 범위를 벗어나지 않고도 제스쳐-기반 협업은 다른 방법으로 구현될 수 있다. Referring to Figure 45, the collaboration start routine 4500 establishes a collaboration session between remote objects to be described. As shown in Figure 45, the collaboration start routine 4500 begins at block 4502 where an instruction to start a collaboration session begins. In one embodiment, gesture-based collaboration is performed at the operating system level without developers requiring a complex description involved in actively sharing applications between remote clients. As previously mentioned, a user may &quot; drag-and-drop &quot; an application view across the boundaries of a visual display to create a command to initiate a collaboration session with another user. In this regard, the location on the visual display may be associated with a particular user based on system settings or other configuration information. In another embodiment, a list of users or other objects associated with a user name may be used for gesture-based collaboration. As described above, the XIOS application does not need to add additional code to implement any functionality, such as security, group membership, friend lists, addressing, anonymity, etc. Depending on the network operating system for such features . These objects used in the application can be encoded to understand the gesture that enables collaboration. For example, a special object "drag-and-drop" can be displayed above the application name of an application to start a collaboration session. However, gesture-based collaboration can be implemented in other ways without departing from the scope of the claimed technical features.

협업 시작 루틴(4500)의 블록(4504)에서, 시작지 클라이언트와 하나 이상의 목적지 클라이언트는 초대/수락 메시지를 교환한다. 특히, 시작지 클라이언트상의 협업 매니저(4410)는 블록(4502)에서 생성된 협업 세션을 시작하기 위한 명령을 수신한다. 이에 대한 응답으로, 초대 메시지가 시작지 클라이언트로부터 서버측 데이터 센터(4402)로 전송된다. 예를 들어, 초대 메시지는 XML 파일 시스템에 의해 유지되는 제1 사용자와 연관된 발신함 특별 폴터에 저장된다. 상술한 바와 같이, 발신함 특별 폴더내의 파일의 생성은 제2 사용자에게 메시지 전송을 요청함으로써 새로운 파일을 취급하는 하나 이상의 서버들에 의해 모니터링된다. 그러나, 이는 협업 세션을 시작하기 위한 초대 메시지를 제2 사용자에게 전송하기 위한 한가지 방법이다. 이에 관해, 초대 메시지는 목적지 클라이언트에 의해 제2 사용자의 수신함으로부터 반환될 수 있다. 일 실시예에서, 제2 사용자가 협업 세션에 참여하기를 원하는지에 관한 입력 요청시 다이얼로그가 디스플레이 될 수 있다. 초대가 수락될 때, 수락 메시지가 유사한 방식으로 시작지 클라이언트로 전달된다. 당업자라면, 여기에 설명된 협업 환경이 사용자들간에 협업을 지원하기 위해 제한되지 않음을 이해할 수 있다. 대신에, 사용자는 수신된 입력에 기초하여 기능성의 구현이 자동화된 어플리케이션과 협업할 수 있다. At block 4504 of the collaborative start routine 4500, the initiator client and one or more destination clients exchange invite / accept messages. In particular, the collaboration manager 4410 on the initiator client receives an instruction to start the collaboration session generated in block 4502. [ In response, an invitation message is sent from the initiator client to the server-side data center 4402. For example, the invitation message is stored in the Outbox special folder associated with the first user maintained by the XML file system. As described above, the creation of a file in the Outbox special folder is monitored by one or more servers handling the new file by requesting the second user to send a message. However, this is one way to send an invite message to a second user to initiate a collaboration session. In this regard, the invitation message may be returned from the inbox of the second user by the destination client. In one embodiment, a dialog may be displayed upon an input request as to whether the second user wishes to participate in the collaboration session. When an invitation is accepted, an acceptance message is passed to the initiator client in a similar manner. Those skilled in the art will appreciate that the collaborative environment described herein is not limited to support collaboration between users. Instead, the user can collaborate with the automated application of functionality based on the received input.

수락 메시지가 수신될 때, 시작지 클라이언트는 공유될 어플리케이션 “export”에 대한 기능성을 구현한다. 특히, 수신된 수락 메시지는 시작지 클랑이언트상의 협업 매니저(4410)로 라우팅된다. 이에 대한 응답으로, 협업 매니저(4410)은 블록(4506)에서 어플리케이션에 연관된 자원에 대한 임시 접근 권한을 제2 사용자에게 제공하기 위한 기능성을 구현한다. 상술한 바와 같이, 어플리케이션을 실행하기 위해 필요한 어플리케이션 자원들은 어플리케이션 패키지내에서 참조되거나 직접적으로 임베디드될 수 있다. 협업을 지원하기 위해, 적정한 어플리케이션 자원들이 어플리케이션에 현재 바운드된 어떤 문서들과 함께 식별된다. 이때, 제2 사용자에게 이들 자원들 및 문서들에 대한 임시 권한을 제공하기 위한 설정(settings)이 설정된다. 특히, 어플리케이션 패키지에 연관된 자원들은 어플리케이션의 뷰와 프로세스 로직에 대한 시맨틱 설명을 제공하는 XML 문서를 포함할 수 있다. 따라서, 시작지 클라이언트상에 실행중인 어플리케이션은 동적으로 온 디맨드로(on demand) 다른 클라이언트들로 전달될 수 있다. 어플리케이션이 서비스로서 전달되고 제2 사용자에게 임시 권한이 제공된 이후, 목적지 클라이언트는 공유되는 어플리케이션에 관한 어떠한 이전 지식도 가질 필요가 없다.When an accept message is received, the initiator client implements functionality for the application "export" to be shared. In particular, the received acceptance message is routed to the collaboration manager 4410 on the initiator branch. In response, the collaboration manager 4410 implements functionality in block 4506 to provide temporary access to the resources associated with the application to the second user. As described above, the application resources required to execute the application can be referred to in the application package or embedded directly. To support collaboration, appropriate application resources are identified along with any documents currently bound to the application. At this time, settings are set to provide temporary rights for these resources and documents to the second user. In particular, the resources associated with an application package may include an XML document that provides a view of the application and a semantic description of the process logic. Thus, applications running on the initiating client can be dynamically delivered to other clients on demand. After the application is delivered as a service and the temporary user is provisioned to the second user, the destination client need not have any prior knowledge of the shared application.

협업 시작 루틴(4500)의 블록(4508)에서, 시작지 클라이언트에 의해 전달된 어플리케이션을 위한 고유한 이름이 생성된다. 목적지 클라이언트는 전달된 어플리케이션과 동일한 이름이 할당된 어플리케이션을 실행할 수 있다. 어플리케이션 인스턴스들과 협업 세션들을 차별화하기 위해, 고유한 이름이 전달된 어플리케이션 인스턴스에 할당된다. 일 예에서, 해쉬 알고리즘은 제1 사용자에 연관된 식별자에 적용되는데 이는 블록(4508)에서 고유한 어플리케이션 이름을 생성하기 위함이다. 그러나, 청구된 기술적 특징의 범위를 벗어나지 않고서도 어플리케이션/협업 세션을 위한 고유한 이름은 다른 방법으로 생성될 수 있다.At block 4508 of the collaboration start routine 4500, a unique name is generated for the application delivered by the initiator client. The destination client can execute an application that has the same name as the forwarded application. In order to differentiate between application instances and collaboration sessions, a unique name is assigned to the delivered application instance. In one example, a hash algorithm is applied to the identifier associated with the first user, which is at block 4508 to generate a unique application name. However, a unique name for an application / collaboration session may be generated in other ways without departing from the scope of the claimed technical features.

도 45에서 더 설명된 바와 같이, 시작지 클라이언트로부터 전달된 어플리케이션의 상태는 블록(4510)에서 네트워크를 통해 전송되기 적합한 포맷으로 직렬화된다. 하나 이상의 오브젝트들을 직렬화하는 것은 바이트 또는 XML과 같은 텍스트 지향적인 포맷으로 이들 오브젝트들의 표현을 내부 메모리에서 번역하는 것을 포함한다는 것을 당업자라면 이해할 수 있다. 특히, 어플리케이션의 상태에 영향을 주는 본 발명에 의해 구현된 각각의 오브젝트는 XML로 직렬화될 수 있도록 인식된다. 예로서, 블록(4510)에서 직렬화된 상태 정보는 어플리케이션의 사용자 인터페이스 컴포넌트(예를 들어, 축소됨, 확장됨, 선택됨 등)의 조건, 동적으로 로드된 자원들, 시각 디스플레이상의 어플리케이션에 의해 점유된 좌표 위치를 설명하는 변수를 포함할 수 있다.As further described in FIG. 45, the state of the application delivered from the originator client is serialized into a format suitable for transmission over the network at block 4510. [ Those skilled in the art will understand that serializing one or more objects involves translating the representation of these objects in internal memory in a text-oriented format such as byte or XML. In particular, each object implemented by the invention that affects the state of the application is recognized as being serializable into XML. By way of example, the serialized state information at block 4510 may include conditions of a user interface component of the application (e.g., reduced, expanded, selected, etc.), dynamically loaded resources, coordinates occupied by the application on the visual display It may contain variables describing the location.

협업 시작 루틴(4500)의 블록(4512)에서, 초기화 메시지는 시작지 클라이언트로부터 목적지 클라이언트로 전송된다. 상술한 바와 같이, 블록(4512)에서, 서버측 데이터 센터(4402)에 의해 제공되는 메시징 서비스들이 적정한 목적지 클라이언트와 초기화 메시지를 통신하기 위해 이용될 수 있다. 일 예로, 협업 세션을 시작하는 초기화 메시지는 전달된 어플리케이션에 상응하는 어플리케이션 패키지 XML 문서를 포함한다. 블록(4512)에서, 어플리케이션 상태((블록(4510)에서 생성된)의 직렬화된 표현은 목적지 클라이언트로 전송을 위해 어플리케이션 패키지 XML 문서 내에 포함되거나 독립적으로 제공된다.At block 4512 of the collaboration start routine 4500, an initialization message is sent from the initiator client to the destination client. As described above, at block 4512, messaging services provided by the server-side data center 4402 may be used to communicate initialization messages with appropriate destination clients. In one example, the initialization message that initiates the collaboration session includes an application package XML document corresponding to the delivered application. At block 4512, the serialized representation of the application state (generated at block 4510) is included in the application package XML document or provided independently for transmission to the destination client.

협업 시작 루틴(4500)의 블록(4514)에서, 공유된 어플리케이션이 구축되고, 목적지 클라이언트에서 실행을 시작한다. 초기화 메시지가 수신되면, 목적지 클라이언트의 데이터 종류 인식자는 수신된 어플리케이션 패키지를 식별하고, 수신된 어플리케이션 패키지의 오프닝을 초기화하기 위해 이용된다. 이에 관해, 도 10을 참조하여 설명된 어플리케이션 시작 루틴(1000)은 어플리케이션 패키지를 오픈하고, 목적지 클라이언트의 어플리케이션을 구축한다. 그러나, 일 예로, 내부 메모리의 어플리케이션 상태를 포함하는 오브젝트들의 표현들은 수신된 초기화 메시지에서 제공되는 상태 정보에 기초하여 비직렬화(de-serialized)된다. 결과적으로, 어플리케이션 상태는 시작지 클라이언트에서 직렬화될 때 재생성되고, 목적지 클라이언트상의 XML 가상 머신에 의해 렌더링된다. 이후, 협업 시작 루틴(4500)은 종료를 위해 블록(4516)으로 진행한다.At block 4514 of the collaboration start routine 4500, the shared application is established and begins execution at the destination client. When an initialization message is received, the data type identifier of the destination client is used to identify the received application package and initialize the opening of the received application package. In this regard, the application start routine 1000 described with reference to FIG. 10 opens the application package and builds the application of the destination client. However, in one example, the representations of the objects including the application state of the internal memory are de-serialized based on the state information provided in the received initialization message. As a result, the application state is regenerated when it is serialized in the initiator client and rendered by the XML virtual machine on the destination client. The collaboration start routine 4500 then proceeds to block 4516 for termination.

협업 시작 루틴(4500)이 완료되면, 하나의 클라이언트상의 어플리케이션의 상태에 영향을 미치는 변경이 동기화될 수 있고, 협업 세션에 참여한 다른 클라이언트에 반영될 수 있다. 어플리케이션이 공유되는 동안, 협업 세선에 참여한 각 클라이언트는 XML 가상 머신과 로컬 프로세서를 이용하여 어플리케이션을 실행한다. 어플리케이션과 어플리케이션 상태에 바운드된 데이터는 상태 매니저와 협업 매니저를 독립적으로 이용하는 각 클라이언트에 의해 동기화되고 해석된다. 결과적으로 어플리케이션 실행을 위해 로드된 프로세싱은 협업 세션에 참가한 각 클라이언트들 사이에서 분산된다.Once the collaboration start routine 4500 is completed, changes that affect the state of the application on one client can be synchronized and reflected to other clients participating in the collaboration session. While the application is being shared, each client participating in the collaboration lease runs the application using the XML virtual machine and the local processor. The data bound to the application and application state is synchronized and interpreted by each client that uses the state manager and the collaboration manager independently. As a result, the processing loaded for application execution is distributed among each of the clients participating in the collaboration session.

도 46을 참조하면, 상태 동기화 루틴(4600)은 설명될 협업 세션에 참여한 클라이언트들을 통해 어플리케이션의 상태를 동기화한다. 도 46에서 설명되는 바와 같이, 상태 동기화 루틴(4600)은 상태 변경을 발생한 협업 세션을 포함하는 어플리케이션이 있는 블록(4602)에서 시작한다. 협업 세션이 시작되면, 사용자는 어플리케이션의 모든 기능성들에 접근을 지속할 수 있다. 어플리케이션의 상태에 영향을 미치는 이벤트의 발생에 따라, 상태 변경을 설명하는 XML 포맷화된 메시지가 시작지 클라이언트로부터 하나 이상의 목적지 클라이언트로 전파될 수 있다. 전통적으로, 어플리케이션의 상태에 영향을 미치는 이벤트는 입력이 제공되거나 어플리케이션과의 상호작용에 의해 사용자에 의해 생성될 수 있다. 특히, 데이터는 State Manager의 기능성을 이용하기 위해 동기화되지 않은 협업 세션에 포함된 어플리케이션에 바운드된 데이터를 포함하여 업데이트한다. 대신에, 상술한 채팅 어플리케이션과 유사하게, 협업 세션에 포함된 어플리케이션에 바운드된 문서들은 상술한 바와 같이, 각 클라이언트의 트랜잭션 매니저와 서버측 트랜잭션 코디네이터를 이용하여 능동적으로 공유된다. 이에 따라, 블록(4602)에서 발생한 상태 변경은 어플리케이션 데이터 바인딩에 영향을 미치는 데이터 업데이트에 대응하지 않는다.Referring to Figure 46, the state synchronization routine 4600 synchronizes the state of an application with clients participating in a collaboration session to be described. As illustrated in FIG. 46, the state synchronization routine 4600 begins at block 4602 where there is an application containing a collaboration session in which a state change has occurred. Once a collaboration session is initiated, the user can continue to access all the functionality of the application. Depending on the occurrence of an event that affects the state of the application, an XML formatted message describing the state change may be propagated from the originating client to one or more destination clients. Traditionally, events that affect the state of an application may be provided by an input or by a user by interacting with the application. In particular, the data is updated to include data bound to the applications included in the non-synchronized collaboration session to take advantage of the functionality of the State Manager. Instead, similar to the chat application described above, documents bound to applications included in a collaboration session are actively shared using the transaction manager and server-side transaction coordinator of each client, as described above. Accordingly, the state change occurring at block 4602 does not correspond to data updates affecting application data binding.

도 46에서 더 설명되는 바와 같이, 어플리케이션내의 상태 변경은 블록(4604)에서 상태 변경이 시작된 클라이언트에서 로컬로 구현된다. 어플리케이션 상태 변경을 구현하는 XML 가상 머신의 측면을 설명한 후 본 발명에 대한 측면에 대한 설명은 여기에서 제공되지 않는다. 이전에 언급된 바와 같이, 상태 매니저(4412)는 시스템의 각 사용자 인터페이스 컴포넌트의 상태를 모니터하기 위한 기능성을 제공한다. 일 예로, 어플리케이션의 상태에서의 각 변경은 적정한 사용자 인터페이스 컴포넌트로부터 상태 매니저(4412)로 궁극적으로 통신된다.As further described in FIG. 46, the state change in the application is implemented locally at the client where the state change has begun at block 4604. [ After describing aspects of an XML virtual machine that implement application state changes, a description of aspects of the invention is not provided here. As noted previously, status manager 4412 provides functionality for monitoring the status of each user interface component of the system. In one example, each change in the state of the application is ultimately communicated to the state manager 4412 from the appropriate user interface component.

다음, 블록(4606)에서, 상태 변경이 발생한 어플리케이션이 협업 모드인지 여부가 결정된다. 일 예로, 어플리케이션을 포함하는 협업 세션이 시작될 때 어플리케이션은 협업 모드로 놓인다. 이에 관해, 플래그 또는 변수가 어플리케이션이 현재 협업 모드인지를 지시하기 위해 어플리케이션과 연관된다. 만일 변수의 값이 어플리케이션이 현재 협업 모드가 아님을 지시하면, 블록(4606)에서 수행된 테스트 결과는 “no”이고, 상태 동기화 루틴(4600)은 종료를 위해 블록(4616)으로 진행한다. 반대로 만일 어플리케이션이 협업 모드이면, 블록(4606)에서 수행된 테스트의 결과는 “yes”이고, 상태 동기화 루틴(4600)은 블록(4608)로 진행한다.Next, at block 4606, it is determined whether the application in which the state change has occurred is in collaborative mode. For example, when a collaboration session involving an application is initiated, the application is placed in a collaboration mode. In this regard, a flag or variable is associated with the application to indicate that the application is in the current collaboration mode. If the value of the variable indicates that the application is not currently in collaborative mode, the test result performed in block 4606 is &quot; no &quot;, and the state synchronization routine 4600 proceeds to block 4616 for termination. Conversely, if the application is in collaborative mode, the result of the test performed in block 4606 is "yes" and the state synchronization routine 4600 proceeds to block 4608.

상태 동기화 루틴(4600)의 블록(4608)에서, 블록(4602)에서 발생한 상태 변경을 하나 이상의 목적지 클라이언트로 전파하기 위해 협업 매니저(4410)가 호출된다. 일 예로, 상태 매니저(4412)에서 구현된 기능성은 상태 변경이 발생한 어플리케이션을 식별하고, 어플리케이션이 협업 모드인지 여부를 결정한다. 만일 어플리케이션이 협업 모드이면, 협업 매니저(4410)는 협업 세션에 참여한 각 클라이언트의 상태 변경을 동기화하기 위해 이용된다. 이에 관해, 상태 매니저(4412)는 어플리케이션 이름과 블록(4608)에서 발행된 호출에서의 상태 변경에 대한 시맨틱 설명을 포함하는 협업 매니저(4412)를 제공할 수 있다. At block 4608 of the state synchronization routine 4600, the collaboration manager 4410 is invoked to propagate the state change that occurred at block 4602 to one or more destination clients. In one example, the functionality implemented in the state manager 4412 identifies the application in which the state change occurred and determines whether the application is in collaborative mode. If the application is in the collaborative mode, the collaboration manager 4410 is used to synchronize state changes of each client participating in the collaboration session. In this regard, the state manager 4412 may provide a collaboration manager 4412 that includes an application name and a semantic description of the state change in the call issued in block 4608.

상태 동기화 루틴(4600)의 블록(4610)에서, 상태 변경을 설명하는 업데이트 메시지는 상태 변경이 발생한 시작지 클라이언트로부터 하나 이상의 목적지 클라이언트로 전송된다. 일 예로, 업데이트 메시지는 다른 클라이언들에서 실행된 어플리케이션의 상태를 동기화하기 위해 이용된다. 서버측 데이터 센터(4402)에 의해 제공되는 서비스들을 이용하는 업데이트 메시지를 전달함으로써, 어플리케이션 상태를 협업 세션에 참여한 클라이언트들에 의해 공유될 수 있다. 특히, 업데이트 메시지에서 시맨틱하게 설명된 상태 변경은 시작지 클라이언트에서 수행된 상태 변경을 복제하기 위해 목적지 클라이언트 상의 협업 매니저와 상태 매니저에 의해 해석될 수 있다.At block 4610 of the state synchronization routine 4600, an update message describing the state change is sent from the originating client where the state change occurred to one or more destination clients. In one example, the update message is used to synchronize the status of applications executed on other clients. By transmitting an update message using services provided by the server-side data center 4402, the application state can be shared by clients participating in the collaboration session. In particular, the status change semantically described in the update message may be interpreted by the collaboration manager and the state manager on the destination client to replicate the status change performed at the originating client.

협업 시작 루틴(4614)의 블록(4614)에서, 상태 변경은 협업 세션에 참여한 목적지 클라이언트에서 구현된다. 상태 변경을 설명한 업데이트 메시지가 수신되면, 업데이트 메시지는 목적지 클라이언트의 상태 매니저(4412)로 라우팅된다. 일 예로, setProperty() 함수는 어플리케이션 상태 변경을 구현하기 위해 XML 가상 머신에 의해 제공된 오브젝트내에서 인코딩된다. 인수들이 업데이트 메시지에서 수신됨에 따라, 상태 매니저(4412)는 적정한 어플리케이션 컴포넌트에서 직접적으로 setProperty() 함수를 호출할 수 있다. 이에 관해, 상태 변경이 발생된 시작지 클라이언트로부터 수신된 데이터는 목적지 클라이언트상의 상태 변경을 구현하기 위해 setProperty() 함수에 대한 호출이 제공된다. 이후, 협업 세션에 참여한 각 클라이언트에서 상태 변경이 구현되면, 상태 동기 루틴(4600)은 종료하는 블록(4616)으로 진행한다. At block 4614 of the collaboration start routine 4614, the state change is implemented at the destination client participating in the collaboration session. When an update message describing a state change is received, the update message is routed to the state manager 4412 of the destination client. As an example, the setProperty () function is encoded in the object provided by the XML virtual machine to implement the application state change. As arguments are received in the update message, the state manager 4412 may call the setProperty () function directly in the appropriate application component. In this regard, the data received from the initiating client where the state change occurred is provided a call to the setProperty () function to implement the state change on the destination client. Thereafter, when a state change is implemented at each client participating in the collaboration session, the state synchronization routine 4600 proceeds to block 4616 where it ends.

도 47을 참조하면, 본 발명의 측면들을 설명하기 위해 사용할 수 있는 어플리케이션의 예시적인 스크린 디스플레이(4700)가 설명된다. 이 예에서, “presentation viewer” 어플리케이션의 인스턴스는 협업 세션에 참여하는 다수의 클라이언트와 공유된다. 도 47에 설명된 바와 같이, 어플리케이션 뷰는 네비게이션 컴포넌트(4702), 슬라이드 디스플레이 컴포넌트(4704) 및 노드 컴포넌트(4706)을 포함하는 복수의 사용자 인터페이스 컴포넌트를 포함한 프리젠테이션 뷰어 다이얼로그(4701)내에서 렌더링된다. Referring to Figure 47, an exemplary screen display 4700 of an application that can be used to illustrate aspects of the present invention is described. In this example, an instance of the &quot; presentation viewer &quot; application is shared with a number of clients participating in the collaboration session. 47, an application view is rendered in a presentation viewer dialog 4701 that includes a plurality of user interface components including a navigation component 4702, a slide display component 4704, and a node component 4706 .

제스쳐 기반 협업을 수행하기 위핸 본 발명의 측면은 다수의 실시예로 구현된다. 이전에 언급된 바와 같이, 사용자가 스크린 디스플레이(4700)의 경계 외부로 프리젠테이션 뷰어 다이얼로그(4701)를 이동하는 “드래그-앤-드랍” 을 수행할 때, 협업 세션이 시작될 수 있다. 이 예에서, “virtual desktop”상에서 동일한 프리젠테이션 뷰어 다이얼로그(4701)이 공유되는 효과가 나타난다. 특히, “드래그-앤-드랍” 작업이 수행될 때, 스크린 디스플레이(4700)의 경계 외부로 이동된 프레젠테이션 뷰어 다이얼로그(4701)의 어떤 부분이 목적지 클라이언트에서 렌더링된다. 차례로, 목적지 클라이언트에서 발생한 프리젠테이션 뷰어 다이얼로그(4701)의 위치 변경은, 각 사용자가 동일한 가상 데스크탑으로 상호작용하는 것처럼, 시작지 클라이언트의 다이얼로그(4701)의 위치에 영향을 미친다. 다시 말하면, 프리젠테이션 뷰어 다이알로그(4701)가 할당된 위치는 협력세션에 참여한 클라이언트들의 스크린 디스플레이들을 통해, 특히 다수의 사용자들이 상호 작용하는 하나의 가상 데스크탑을 제공하며 렌더링된다. 다른 실시예에서, 다이얼로그(4701)에 의해 점유된 프리젠테이션 및 위치는 협업 세션에 참여한 각 클라이언트에 “mirrored”된다. 이전에 언급된 바와 같이, 제스쳐들이 이해할 수 있도록 인식된 오브젝트가 특별한 사용자 이름과 연관될 때, 협업 세션은 시작될 수 있다. 예를 들어, 도 47에 설명된 노트 컴포넌트(4706)는 프리젠테이션의 특별한 슬라이드(slide)에 관한 다수의 사용자들로부터 수신된 코멘트를 포함한다. 수신된 코멘트는 코멘트를 제공한 사용자의 유저네임들(4708 및 4710)과 연관된다. 예를 들어, 슬라이드 디스플레이 컴포넌트(4704)에 설명된 슬라이드(4712)가 유저네임(4708)에서 “dropped”될 때, 협업 세션이 시작될 수 있다. 이 인스턴스 및 다른 인스턴스에서, 스크린 디스플레이의 경계를 통해 렌더링되지 않는 동일한 어플리케이션 뷰를 공유하는 각 사용자에게로 어플리케이션이 반영될 수 있다. 대신에, 프리젠테이션 뷰어 다이얼로그(4701)에의해 점유된 위치는 상태 변경들 및 데이터 업데이트와 함께 각 클라이언트에 복제된다.Aspects of the present invention for performing gesture-based collaboration are implemented in a number of embodiments. As previously mentioned, when a user performs a &quot; drag-and-drop &quot; to move the presentation viewer dialogue 4701 out of the bounds of the screen display 4700, a collaboration session may be initiated. In this example, the effect of sharing the same presentation viewer dialogue 4701 on the &quot; virtual desktop &quot; appears. In particular, when a "drag-and-drop" operation is performed, any portion of the presentation viewer dialog 4701 that has been moved outside the bounds of the screen display 4700 is rendered at the destination client. In turn, the repositioning of the presentation viewer dialogue 4701 that originates at the destination client affects the location of the dialogue 4701 of the initiator client, as each user interacts with the same virtual desktop. In other words, the location to which the presentation viewer dialog 4701 is assigned is rendered through the screen displays of the clients participating in the collaboration session, in particular providing one virtual desktop with multiple users interacting. In another embodiment, the presentation and location occupied by the dialogue 4701 is &quot; mirrored &quot; to each client participating in the collaboration session. As previously mentioned, when a recognized object is associated with a particular user name so that the gestures can understand it, the collaboration session can be started. For example, the note component 4706 illustrated in FIG. 47 includes comments received from multiple users regarding a particular slide of a presentation. The received comments are associated with the user names 4708 and 4710 of the user who provided the comment. For example, when slide 4712 described in slide display component 4704 is &quot; dropped &quot; in user name 4708, a collaboration session may be initiated. In this and other instances, the application may be reflected to each user sharing the same application view that is not rendered through the boundaries of the screen display. Instead, the position occupied by the presentation viewer dialogue 4701 is replicated to each client with state changes and data updates.

다른 실시예에서, 협업 세션에 포함된 어플리케이션은 각 클라이언트에 “cloned”된다. 협업 세션의 이 종류가 시작될 때, 각 클라이언트에게 구별되고 분리된 어플리케이션 뷰가 제공된다. 어플리케이션 뷰가 공유 또는 복제되는지 여부에 상관없이, 데이터 업데이트와 상태 동기화는 즉각적으로 협업 세션에 포함된 클라이언트들로 전파된다. 그러나, 어플리케이션이 복제될 때, 다이얼로그의 리포지셔닝(re-positioning)은 협업 세션에 포함된 다른 클라이언트로 전파되지 않는다. 대신에, 상태 변경과 데이터 업데이트가 클라이언트들간에 전파된다. 다이얼로그 리포지셔닝(re-positioning)과 같은, 상태 변경 또는 데이터 업데이트를 표현하지 않은 어플리케이션의 시각적 표현의 변경들은 전파되지 않는다. 이 실시예는 사용자들에게 다른 클라이언트의 뷰에 영향을 미치지 않는 다양한 방법들로 어플리케이션과 상호작용할 수 있는 협력 경험을 할 수 있게 한다. 예를 들어, 사용자는 웹 브라우저와 상호작용하는 경험을 공유한 협업 세션을 초기화할 수 있다. 사용자가 특별한 웹 사이트를 항해할 때, 웹 페이지를 로딩하는 이벤트는 협업 세션을 포함하는 클라이언들간에 전파된다. 그러나, 실시예에서 어플리케이션이 복제될 때, 어플리케이션 뷰에 영향을 미치는 다른 상호작용은 전파되지 않는다. 예를 들어, 만일 사용자가 웹 브라우저에 의해 표현된 시각 디스플레이 외부 컨텐츠를 접속하기 위해 “scrolls”하면, 이 이벤트는 상태 변경 또는 데이터 업데이트를 생성하지 않고, 동일한 인터넷 네비게이션 경험을 공유하는 동안 각 사용자에게 독립적으로 원하는 컨텐츠에 접근하는 것이 허락된다. 이것은 어플리케이션들의 실행을 위한 더 적응적인 플랫폼을 제공하기 위해 설명된 제스쳐 기반 협업의 다양한 실시예들에 대한 방법들의 일 예이다.
In another embodiment, the applications included in the collaboration session are &quot; cloned &quot; to each client. When this kind of collaboration session is started, a separate and distinct application view is provided for each client. Regardless of whether the application view is shared or replicated, data updates and state synchronization are immediately propagated to the clients involved in the collaboration session. However, when the application is replicated, the re-positioning of the dialog is not propagated to other clients involved in the collaboration session. Instead, state changes and data updates are propagated between clients. Changes in the visual representation of an application that do not represent state changes or data updates, such as dialog repositioning, are not propagated. This embodiment allows users to experience collaborations that can interact with the application in a variety of ways that do not affect the view of other clients. For example, a user can initiate a collaboration session that shares the experience of interacting with a web browser. When a user navigates to a particular web site, the event that loads the web page is propagated between clients including the collaboration session. However, in an embodiment, when an application is replicated, other interactions that affect the application view are not propagated. For example, if a user &quot; scrolls &quot; to access content outside the visual display represented by a web browser, this event may be sent to each user while sharing the same Internet navigation experience, It is allowed to independently access desired content. This is an example of methods for various embodiments of the described gesture-based collaboration to provide a more adaptive platform for execution of applications.

설명적인 실시예들이 설명되고 묘사되었지만, 다양한 변경들이 본 발명의 사상과 범위를 벗어나지 않고도 만들어질 수 있음은 이해될 수 있다.While illustrative embodiments have been illustrated and described, it will be understood that various modifications may be made without departing from the spirit and scope of the invention.

Claims (27)

시작지 및 목적지 컴퓨팅 장치에서 실행할 수 있는 어플리케이션을 능동적으로 공유하는 방법에 있어서,
상기 시작지 및 목적지 컴퓨팅 장치간에 협업 세션을 초기화하는 단계를 포함하되,
상기 초기화 단계는,
실행중인 어플리케이션의 상태를 상기 시작지 컴퓨팅 장치로부터 상기 목적지 컴퓨팅 장치로 전달하는 단계(4508-4512);
상기 실행중인 어플리케이션에 바운드된 데이터에 포함된 상기 어플리케이션에 의해 이용되는 자원들에 접근하기 위한 권한들을 상기 목적지 컴퓨팅 장치로 제공하는 단계(4506);
상기 목적지 컴퓨팅 장치에 상기 어플리케이션을 구축하는 단계(4514); 및
상기 어플리케이션에 대한 상태 변경의 발생에 대한 응답으로, 상기 협업 세션에 참여한 각 컴퓨팅 장치로 상기 상태 변경에 대한 설명을 전파하고 해석하는 단계(4600)를 포함하는 방법.
A method for actively sharing an application that can be executed at a start location and a destination computing device,
Initiating a collaboration session between the initiator and the destination computing device,
In the initialization step,
Transferring (4508-4512) the status of the running application from the initiating computing device to the destination computing device;
Providing (4506) rights to the destination computing device to access resources used by the application contained in data bound to the running application;
Establishing (4514) the application at the destination computing device; And
And propagating (4600) the description of the state change to each computing device participating in the collaboration session in response to the occurrence of a state change for the application.
제1 항에 있어서,
상기 시작지 컴퓨팅 장치에서 실행중인 어플리케이션의 상태를 전달하는(4508-4512) 것은,
상기 어플리케이션에 현재 바운드된 데이터 및 어플리케이션에 의해 이용되는 상기 자원들을 확인하는 것을 포함하는 방법.
The method according to claim 1,
Communicating (4508-4512) the state of the application running on the initiating location computing device,
Identifying the data currently bound to the application and the resources used by the application.
제1 항에 있어서,
상기 실행중인 어플리케이션의 상태를 전달하는(4508-4512) 것은,
상기 목적지 컴퓨팅 장치에 이전에 설치된 상기 어플리케이션을 요구하지 않고, 상기 목적지 컴퓨팅 장치로 어플리케이션 자원들을 동적으로 전달하는 것을 포함하는 방법.
The method according to claim 1,
Communicating the status of the running application (4508-4512)
And dynamically communicating application resources to the destination computing device without requiring the application previously installed in the destination computing device.
제1 항에 있어서,
상기 협업 세션을 시작하기 위해 사용자가 시각적 디스플레이의 경계로 어플리케이션 다이얼로그(4701)의 시각적 렌더링을 드래그-앤-드랍하는 방법.
The method according to claim 1,
And dragging-and-dropping the visual rendering of the application dialogue (4701) to the border of the visual display for the user to begin the collaboration session.
제1 항에 있어서,
상기 협업 세션을 시작하기 위해 시각적 디스플레이상에 디스플레이된 사용자 이름에 연관된 오브젝트를 활성화하는 단계를 포함하는 방법.
The method according to claim 1,
And activating an object associated with the user name displayed on the visual display to initiate the collaboration session.
제1 항에 있어서,
상기 실행중인 어플리케이션의 상태를 상기 시작지 컴퓨팅 장치로부터 상기 목적지 컴퓨팅 장치로 전달하는(4508-4512) 단계는,
네트워크 파일 시스템에 제1 사용자에 연관된 발신함 특별 폴더를 유지하는 단계;
상기 네트워크 파일 시스템에 제2 사용자에 연관된 수신함 특별 폴더를 유지하는 단계를 포함하되,
서버 프로세스는 상기 제1 사용자에 연관된 상기 발신함 특별 폴더를 모니터링하고, 상기 제1 사용자의 상기 발신함 특별 폴더에 위치한 협업 세션을 시작하기 위한 메시지가 수신되는지 확인하고, 상기 제2 사용자의 상기 수신함 특별 폴더로 상기 메시지를 이동하는 방법.
The method according to claim 1,
(4508-4512) transferring the status of the running application from the initiating-point computing device to the destination computing device,
Maintaining a sender special folder associated with a first user in a network file system;
Maintaining a special inbox folder associated with a second user in the network file system,
The server process monitors the sender special folder associated with the first user and verifies that a message is received to initiate a collaboration session located in the sender special folder of the first user, And moving said message to a special folder.
제1 항에 있어서,
접근 권한이 제공된 상기 목적지 컴퓨팅 장치의 적어도 하나의 자원은 상기 시작지 컴퓨팅 장치의 어플리케이션 인스턴스에 의해 이용되는 프로세스 및 뷰로부터 동적으로 식별되는 방법.
The method according to claim 1,
Wherein at least one resource of the destination computing device to which the access right is provided is dynamically identified from the process and view used by the application instance of the initiating computing device.
제1 항에 있어서,
상기 어플리케이션 상태를 전달하는(4508-4512) 것은,
상기 협업 세션을 위해 고유한 이름을 생성한 제1 사용자에 연관된 식별자를 이용하고,
상기 어플리케이션의 상기 자원들은 상기 고유한 이름에 연관되고, 임시 권한들이 상기 고유한 이름에 연관된 어플리케이션 자원들에 접근하기 위해 제2 사용자에게 제공되는 방법.
The method according to claim 1,
Communicating the application state (4508-4512)
Using an identifier associated with a first user that has generated a unique name for the collaboration session,
Wherein the resources of the application are associated with the unique name and temporary rights are provided to the second user to access application resources associated with the unique name.
제1 항에 있어서,
상기 어플리케이션의 상태를 전달하는(4508-4512)하는 것은,
상기 어플리케이션에 연관된 하나 이상의 오브젝트를 텍스트 또는 바이너리 포맷으로 직렬화한(4510) 정보가 포함되도록 하는 것을 포함하는 방법.
The method according to claim 1,
Communicating the status of the application (4508-4512)
Including information (4510) serializing one or more objects associated with the application in text or binary format.
제9 항에 있어서,
하나 이상의 오브젝트로부터 직렬화된(4510) 상기 정보는,
사용자 인터페이스 컴포넌트가 최소화되는지, 확장되는지 및 선택되는지 여부를 설명하는 변수 그룹으로부터 선택된 사용자 인터페이스 컴포넌트의 상태를 설명하는 적어도 하나의 변수를 포함하는 방법.
10. The method of claim 9,
The information, serialized 4510 from one or more objects,
The method comprising at least one variable describing a state of a user interface component selected from a group of variables describing whether the user interface component is minimized, expanded and selected.
제1 항에 있어서,
상기 실행중인 어플리케이션 상태를 전달하는(4508-4512) 것은,
데이터를 식별하기 위한 사용자 인터페이스 컴포넌트를 모델링하고, XBind로 바운드된 오브젝트가 인식되는 것을 포함하는 방법.
The method according to claim 1,
Communicating the running application state (4508-4512)
Modeling a user interface component for identifying data, and including an object bound to XBind being recognized.
제1 항에 있어서,
상기 목적지 컴퓨팅 장치에 상기 어플리케이션을 구축하는(4514) 것은,
입력으로써 XML 프로그래밍 랭귀지로 작성된 어플리케이션 코드를 받아들이고, 어플리케이션 코드가 실행되도록 하는 XML 가상 머신을 제공하는 것을 포함하는 방법.
The method according to claim 1,
Building 4514 the application at the destination computing device comprises:
Receiving an application code written as an input in an XML programming language, and providing an XML virtual machine to cause the application code to execute.
제1 항에 있어서,
상기 목적지 컴퓨팅 장치에 상기 어플리케이션을 구축하는(4514) 것은,
어플리케이션 패키지에서 수신된 문서 종류를 식별하기 위해 데이터 종류 인식자를 이용하는 것을 포함하는 방법.
The method according to claim 1,
Building 4514 the application at the destination computing device comprises:
And using a data type identifier to identify the type of document received in the application package.
하나 이상의 컴퓨터 프로세서에 의해 실행될 때, 컴퓨팅 장치들간에 어플리케이션에 영향을 미치는 변경을 전파하는 방법을 수행하는 컴퓨터 실행 가능한 명령을 가지는 컴퓨터 판독 가능한 매체에 있어서,
상기 방법은,
제1 및 제2 컴퓨팅 장치 사이에 협업 세션을 설립하는(4500) 단계;
상기 제1 컴퓨팅 장치에 응답으로 상기 어플리케이션에 영향을 미치는 변경을 발생하는 단계;
상기 변경을 설명하는 트랜잭션을 생성하는(2006)하는 단계;
상기 제1 컴퓨팅 장치상에 로컬로 상기 변경을 구현하는(4604) 단계;
상기 제2 컴퓨팅 장치에 전달될 상기 변경을 설명하는 상기 트랜잭션을 일으키는(4606-4610) 단계; 및
상기 제2 컴퓨팅 장치상에서 상기 변경을 구현하기 위해 상기 수신된 트랜잭션을 해석하는(4614) 단계를 포함하는 컴퓨터 판독 가능한 매체.
A computer-readable medium having computer-executable instructions for performing a method of propagating changes affecting an application between computing devices when executed by one or more computer processors,
The method comprises:
Establishing (4500) a collaboration session between the first and second computing devices;
Generating a change that affects the application in response to the first computing device;
Creating (2006) a transaction describing the change;
Implementing (4604) the change locally on the first computing device;
Causing the transaction to be communicated to the second computing device (4606-4610); And
And interpreting (4614) the received transaction to implement the change on the second computing device.
제14 항에 있어서,
설정된 협업 세션의 종류는 상기 제1 및 제2 컴퓨팅 장치로 하여 어플리케이션 다이얼로그(4701)에 의해 점유된 위치가 스크린 디스플레이를 통해 공유되는 가상 데스크탑을 공유하도록 하는 컴퓨터 판독 가능한 매체.
15. The method of claim 14,
The type of collaboration session established is such that the locations occupied by the application dialogs (4701) with the first and second computing devices share a virtual desktop shared through a screen display.
제15 항에 있어서,
상기 설정된 협업 세션의 종류는,
상기 어플리케이션 다이얼로그(4701)에 의해 점유된 프리젠테이션 및 위치를 상기 제1 및 제2 컴퓨팅 장치 모두에 반영하도록 하는 컴퓨터 판독 가능한 매체.
16. The method of claim 15,
The type of the set collaboration session may include:
And to reflect the presentation and location occupied by the application dialogue (4701) to both the first and second computing devices.
제15 항에 있어서,
상기 설정된 협업 세션의 종류는,
어플리케이션 뷰가 어플리케이션에 영향을 미치는 상태 변경들과 데이터 업데이트들은 제1 컴퓨팅 장치들 사이에 전파되고, 어플리케이션 다이얼로그(4701)의 리포지셔닝(re-positioning)은 제1 및 제2 컴퓨팅 장치 모두에 반영되지 않게 복제되도록 하는 컴퓨터 판독 가능한 매체.
16. The method of claim 15,
The type of the set collaboration session may include:
State changes and data updates affecting the application view are propagated between the first computing devices and the re-positioning of the application dialog 4701 is not reflected in both the first and second computing devices A computer-readable medium for causing a computer to be cloned.
제14 항에 있어서,
제1 및 제2 컴퓨팅 장치간에 협업 세션을 설정하는(4500) 것은,
상기 제1 컴퓨팅 장치상에 실행된 어플리케이션 인스턴스에 의해 사용되는 동적 자원을 식별하는 단계; 및
상기 동적 자원에 접근하기 위한 최소한의 임시 권한을 포함하여 상기 제2 컴퓨팅 장치로 제공하는 단계를 포함하는 컴퓨터 판독 가능한 매체.
15. The method of claim 14,
Establishing (4500) a collaboration session between the first and second computing devices,
Identifying a dynamic resource used by an application instance executed on the first computing device; And
And providing the second computing device with at least temporary rights to access the dynamic resource.
제14 항에 있어서,
상기 제1 컴퓨팅 장치상에 로컬로 상기 변경을 구현하는(4604) 것은,
문서에서 상기 문서에 바운드된 사용자 인터페이스로 데이터 업데이트를 자동으로 전파하기 위한 데이터 업데이트 이벤트 버스를 제공하는 것을 포함하는 컴퓨터 판독 가능한 매체.
15. The method of claim 14,
Implementing (4604) the change locally on the first computing device comprises:
And providing a data update event bus for automatically propagating data updates to the user interface bound to the document in the document.
제14 항에 있어서,
상기 변경은 상기 제2 컴퓨팅 장치로 전송될 상기 트랜잭션에 의해 제1 컴퓨팅 장치의 로컬에서 비동기적으로 구현되는 컴퓨터 판독 가능한 매체.
15. The method of claim 14,
Wherein the modification is implemented locally and asynchronously by the first computing device by the transaction to be sent to the second computing device.
제14 항에 있어서,
상기 제2 컴퓨팅 장치 상에서 상기 트랜잭션을 해석하는(4614) 것은,
상기 트랜잭션에서 XML 데이터를 비직렬화하고(deserializing), 적정한 내부 메모리 오브젝트로 비직렬화된(deserialized) 데이터를 제공하는 것을 포함하는 컴퓨터 판독 가능한 매체.
15. The method of claim 14,
Interpreting (4614) the transaction on the second computing device,
Deserializing the XML data in the transaction and providing deserialized data to a suitable internal memory object.
협업 세션에 참여하는 컴퓨팅 장치(300)에 있어서,
프로세서(302);
상기 협업 세션에 참여하는 동안 네트워크를 통해 데이터를 전송하는 네트워크 인터페이스(310);
상기 협업 세션에서 데이터를 교환하기 위한 컴퓨터 실행 가능한 컴포넌트들을 포함하는 컴퓨터 판독 가능한 매체를 가지는 메모리(304)를 포함하되,
상기 메모리는,
어플리케이션의 사용자 인터페이스로부터 상기 어플리케이션에 바운드된 하나 이상의 문서로 데이터 업데이트를 자동으로 전파하기 위한 데이터 업데이트 버스(1254);
하나 이상의 상태 문서들에서 설명되는 어플리케이션 뷰의 상태를 자동으로 일으키는 상태 매니저(4410)을 포함하되,
상기 협업 매니저(4412)는,
상기 어플리케이션에 바운드된 하나 이상의 문서들에 영향을 미치는 데이터 업데이트들의 발생과 상기 어플리케이션의 시각적 디스플레이에 영향을 미치는 상태 변경들의 발생을 식별하고,
상기 데이터 업데이트 및 상기 상태 변경을 설명하는 트랜잭션을 캡슐화하고, 상기 협업 세션에 참여한 제2 컴퓨팅 장치로 전달하는 컴퓨팅 장치.
In a computing device (300) participating in a collaboration session,
A processor 302;
A network interface (310) for transmitting data over the network while participating in the collaboration session;
And a memory (304) having a computer-readable medium comprising computer-executable components for exchanging data in the collaboration session,
The memory comprising:
A data update bus 1254 for automatically propagating data updates from a user interface of the application to one or more documents bound to the application;
A state manager 4410 that automatically raises the state of the application view described in one or more state documents,
The collaboration manager 4412,
Identifying occurrences of data updates affecting one or more documents bound to the application and occurrence of status changes affecting a visual display of the application,
Encapsulates a transaction describing the data update and the state change, and delivers the encapsulated transaction to a second computing device participating in the collaboration session.
제22 항에 있어서,
상기 데이터 업데이트 버스(1254)는,
상기 데이터 업데이트에 의해 공지될 문서에 바운드된 사용자 인터페이스 컴포넌트에 의해 로컬에서 상기 데이터 업데이트가 구현되도록 하는 컴퓨팅 장치.
23. The method of claim 22,
The data update bus 1254,
Wherein the data update is implemented locally by a user interface component bound to a document to be known by the data update.
제22 항에 있어서,
상기 어플리케이션의 상기 시각적 디스플레이에 영향을 미치는 상기 변경의 발생을 확인하는 것은,
상태 변경이 발생된 사용자 인터페이스 컴포넌트가 아토믹 컴포넌트인지 여부를 결정하는 단계;
만일 상기 상태 변경이 아토믹 컴포넌트에 영향을 미치면, 내부 메모리 오브젝트로부터 상기 상태 변경을 설명하는 데이터를 획득하는 단계; 및
상기 상태 변경을 설명하는 데이터를 상기 하나 이상의 상태 문서들로 전파하는 단계를 포함하는 컴퓨팅 장치.
23. The method of claim 22,
Confirming the occurrence of said change affecting said visual display of said application,
Determining whether a user interface component in which a state change has occurred is an atomic component;
If the state change affects an atomic component, obtaining data describing the state change from an internal memory object; And
And propagating data describing the state change to the one or more state documents.
제22 항에 있어서,
상기 메모리(304)는,
상기 협업 세션 동안 메시지들의 교환을 관리하는 네트워크 서비스와의 통신을 추상화하는 통신 채널 컴포넌트를 더 포함하는 컴퓨팅 장치.
23. The method of claim 22,
The memory (304)
And a communication channel component for abstracting communication with a network service that manages the exchange of messages during the collaboration session.
제22 항에 있어서,
상기 협업 매니저(4410)는,
상기 제2 컴퓨팅 장치상에 발생한 상기 어플리케이션의 상태 변경을 설명하는 업데이트 메시지를 획득하고,
상기 제2 컴퓨팅 장치상에서 발생한 상기 상태 변경을 사용자 인터페이스 컴포넌트에서 구현하도록 하는 컴퓨팅 장치.
23. The method of claim 22,
The collaboration manager 4410,
Obtaining an update message describing a state change of the application that occurred on the second computing device,
And cause the user interface component to implement the state change occurring on the second computing device.
삭제delete
KR1020107011106A 2007-10-22 2008-10-22 Gesture-based collaboration KR101586419B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US98179407P 2007-10-22 2007-10-22
US60/981,794 2007-10-22

Publications (2)

Publication Number Publication Date
KR20100105544A KR20100105544A (en) 2010-09-29
KR101586419B1 true KR101586419B1 (en) 2016-02-03

Family

ID=42234524

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107011106A KR101586419B1 (en) 2007-10-22 2008-10-22 Gesture-based collaboration

Country Status (5)

Country Link
EP (1) EP2203844A4 (en)
KR (1) KR101586419B1 (en)
CN (1) CN101952815A (en)
BR (1) BRPI0818688A2 (en)
WO (1) WO2009055499A2 (en)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3188437B1 (en) * 2012-06-13 2019-06-12 Huawei Device Co., Ltd. Method and system for implementing information sharing
EP3028166A1 (en) * 2013-07-31 2016-06-08 Hewlett Packard Enterprise Development LP Cloud based service design inheritance
CN104243602A (en) * 2014-09-26 2014-12-24 三星电子(中国)研发中心 User information synchronizing device, system and method
KR101647278B1 (en) 2015-04-29 2016-08-23 (주)유미테크 JSON Transformation of DNS Packet and Top Extraction Method
CN107665245A (en) * 2017-09-12 2018-02-06 平安科技(深圳)有限公司 A kind of triggering method based on event, terminal, equipment and readable storage medium storing program for executing
CN107766531B (en) * 2017-10-26 2020-06-23 天津开心生活科技有限公司 Data display method and device, storage medium and electronic equipment
CN114416183A (en) * 2020-10-28 2022-04-29 武汉软艺信息技术有限公司 Method and device for rapidly restoring App state based on iOS system
CN114237577B (en) * 2022-02-24 2022-05-06 成都无糖信息技术有限公司 CEL and ML based complete language parsing system and parsing method for realizing Tulip

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020026478A1 (en) 2000-03-14 2002-02-28 Rodgers Edward B. Method and apparatus for forming linked multi-user groups of shared software applications
US20030167301A1 (en) 2000-12-29 2003-09-04 Min Zhu Distributed network system architecture for collaborative computing

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5392400A (en) * 1992-07-02 1995-02-21 International Business Machines Corporation Collaborative computing system using pseudo server process to allow input from different server processes individually and sequence number map for maintaining received data sequence
US6199116B1 (en) * 1996-05-24 2001-03-06 Microsoft Corporation Method and system for managing data while sharing application programs
US6754674B2 (en) * 2000-11-03 2004-06-22 Strohl Systems Group, Inc. Method and apparatus for creation and maintenance of incident crisis response plans

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020026478A1 (en) 2000-03-14 2002-02-28 Rodgers Edward B. Method and apparatus for forming linked multi-user groups of shared software applications
US20030167301A1 (en) 2000-12-29 2003-09-04 Min Zhu Distributed network system architecture for collaborative computing

Also Published As

Publication number Publication date
EP2203844A4 (en) 2011-12-14
WO2009055499A3 (en) 2009-07-16
CN101952815A (en) 2011-01-19
WO2009055499A4 (en) 2009-09-17
EP2203844A2 (en) 2010-07-07
BRPI0818688A2 (en) 2015-05-05
KR20100105544A (en) 2010-09-29
WO2009055499A2 (en) 2009-04-30

Similar Documents

Publication Publication Date Title
US20210258377A1 (en) Network operating system
US7917584B2 (en) Gesture-based collaboration
KR101586419B1 (en) Gesture-based collaboration

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20181226

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20200103

Year of fee payment: 5