KR20100113080A - 구조화된 데이터 요소들에 대한 액세스 및 업데이트를 위한 멀티-클라이언트 협업 - Google Patents
구조화된 데이터 요소들에 대한 액세스 및 업데이트를 위한 멀티-클라이언트 협업 Download PDFInfo
- Publication number
- KR20100113080A KR20100113080A KR1020107015130A KR20107015130A KR20100113080A KR 20100113080 A KR20100113080 A KR 20100113080A KR 1020107015130 A KR1020107015130 A KR 1020107015130A KR 20107015130 A KR20107015130 A KR 20107015130A KR 20100113080 A KR20100113080 A KR 20100113080A
- Authority
- KR
- South Korea
- Prior art keywords
- client
- structured data
- data elements
- data element
- update
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/0482—Interaction with lists of selectable items, e.g. menus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/103—Formatting, i.e. changing of presentation of documents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/177—Editing, e.g. inserting or deleting of tables; using ruled lines
- G06F40/18—Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/40—Support for services or applications
- H04L65/403—Arrangements for multi-party communication, e.g. for conferences
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/545—Gui
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Multimedia (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Document Processing Apparatus (AREA)
Abstract
구조화된 데이터 요소들에 대한 액세스 및 업데이트를 위한 멀티-클라이언트 협업을 제공하기 위한 도구 및 기술들이 개시된다. 클라이언트 시스템들은 협업에 이용가능한 게시된 데이터 요소들의 라이브러리를 제공하는 사용자 인터페이스를 제시할 수 있다. 클라이언트들은 선택된 데이터 요소들에 연관된 고유 식별자들을 참조하면서, 그 선택된 데이터 요소들을 요청할 수 있다. 다른 클라이언트들에 의한 협업을 위해 데이터 요소들을 게시하는 클라이언트들은 후보인 구조화된 데이터 요소들의 표현을 제공하는 사용자 인터페이스를 제시하고, 게시를 위해 선택된 데이터 요소들의 선택을 수신할 수 있다. 그리고, 게시측 클라이언트들은 선택된 데이터 요소들을 게시를 위해 송신할 수 있다. 클라이언트 시스템들은 클라이언트들이 다른 클라이언트들에 의한 액세스를 위해 게시한 구조화된 데이터 요소들을 수신할 수 있는 서버 또는 협업 서비스들과 상호작용할 수 있다. 서버들은 게시된 데이터 요소들에 대한 각각의 고유 식별자를 정의할 수 있고, 구조화된 데이터 요소들과 대응 고유 식별자들을 다양한 클라이언트 시스템들에 송신할 수 있다.
Description
다양한 이유들로, 컴퓨팅 시스템들 및 애플리케이션들의 사용자들은 서로 지리적으로 점점 더 떨어져 있거나 분산되어져 가고 있다. 이러한 거리 또는 간격에도 불구하고, 이 사용자들은 작업하고 있을 수 있는 다양한 프로젝트들에 관해 협업을 하고자 할지도 모른다. 서로 다른 애플리케이션들 및 유틸리티들이 어느 정도 협업을 지원할 수 있지만, 이 분야에서의 추가적인 개발들 및 개선들이 진행 중이다.
구조화된 데이터 요소들에 액세스하여 업데이트하기 위해 멀티-클라이언트 협업(multi-client collaboration)을 제공하는 도구들 및 기법들이 개시되어 있다. 클라이언트 시스템들("클라이언트들")은 협업에 이용가능한 게시된 데이터 요소들의 라이브러리들을 제공하는 사용자 인터페이스들을 제시할 수 있다. 클라이언트들은, 선택된 데이터 요소들과 연관된 고유 식별자들을 참조하면서, 그 선택된 데이터 요소들을 요청할 수 있다. 다른 클라이언트들과의 협업을 위해 데이터 요소들을 게시하는 그 클라이언트들은 구조화된 데이터 요소 후보들의 표현들을 제공하고 게시를 위해 선택된 그 데이터 요소들의 선택들을 받는 사용자 인터페이스들을 제시할 수 있다. 게시측 클라이언트들은 이어서, 게시를 위한 선택된 데이터 요소들을 전송할 수 있다. 클라이언트 시스템들은 클라이언트들이 다른 클라이언트들이 액세스하도록 게시한 구조화된 데이터 요소들을 수신할지도 모르는 서버들 또는 협업 서비스들과 상호작용할 수 있다. 서버들은 게시된 데이터 요소들에 대한 각자의 고유 식별자들을 정의할 수 있고 또 구조화된 데이터 요소들 및 대응하는 고유 식별자들을 다양한 클라이언트 시스템들로 전송할 수 있다.
상기한 발명 대상이 컴퓨터-제어 장치, 컴퓨터 프로세스, 컴퓨팅 시스템, 또는 컴퓨터-판독가능 매체 등의 제조 물품으로서도 구현될 수 있다. 이들 및 다양한 다른 특징들이 이하의 상세한 설명을 읽어보고 또 관련 도면들을 살펴보면 명백하게 될 것이다.
이 요약은 이하에서 상세한 설명에 더 기술되는 일련의 개념들을 간략화된 형태로 소개하기 위해 제공된 것이다. 이 요약은 청구된 발명 대상의 주요 특징들 또는 필수적인 특징들을 확인하기 위한 것이 아니며, 또한 이 요약은 청구된 발명 대상의 범위를 제한하는 데 사용되기 위한 것도 아니다. 게다가, 청구된 발명 대상은 본 개시 내용의 임의의 부분에 기술된 단점들의 일부 또는 그 전부를 해결하는 구현들로 제한되지 않는다.
도 1은 구조화된 데이터 요소들에 액세스하여 업데이트하기 위해 멀티-클라이언트 협업을 가능하게 해주는 시스템들 또는 동작 환경들을 나타낸 블록도.
도 2는 협업하는 클라이언트 시스템들이 서버로부터의 구조화된 마스터 데이터에 액세스할 수 있게 해주는 프로세스들의 블록, 데이터 및 흐름도를 함께 나타낸 도면.
도 3은 클라이언트 시스템들이 구조화된 데이터 요소들에 로컬 지정들(local specifications)을 적용할 수 있게 해주는 프로세스들의 블록, 데이터 및 흐름도를 함께 나타낸 도면.
도 4는 서로 다른 클라이언트 테이블들 내의 마스터 테이블 데이터에 행해지는 진행 중인 변경들 또는 수정들을 처리하는 프로세스들의 블록, 데이터 및 흐름도를 함께 나타낸 도면.
도 5는 2개 이상의 클라이언트 테이블 구조들 사이에서 공유되는 마스터 테이블 구조의 일례들을 나타낸 블록도.
도 6은 클라이언트 테이블들 중의 하나가 마스터 테이블로부터 소비된 데이터를 변경할 때 생길 수 있는 업데이트들을 나타낸 블록도.
도 7은 클라이언트 테이블들 중 하나로부터의 업데이트들로 인해 마스터 테이블로부터 전파될 수 있는 업데이트들을 나타낸 블록도.
도 2는 협업하는 클라이언트 시스템들이 서버로부터의 구조화된 마스터 데이터에 액세스할 수 있게 해주는 프로세스들의 블록, 데이터 및 흐름도를 함께 나타낸 도면.
도 3은 클라이언트 시스템들이 구조화된 데이터 요소들에 로컬 지정들(local specifications)을 적용할 수 있게 해주는 프로세스들의 블록, 데이터 및 흐름도를 함께 나타낸 도면.
도 4는 서로 다른 클라이언트 테이블들 내의 마스터 테이블 데이터에 행해지는 진행 중인 변경들 또는 수정들을 처리하는 프로세스들의 블록, 데이터 및 흐름도를 함께 나타낸 도면.
도 5는 2개 이상의 클라이언트 테이블 구조들 사이에서 공유되는 마스터 테이블 구조의 일례들을 나타낸 블록도.
도 6은 클라이언트 테이블들 중의 하나가 마스터 테이블로부터 소비된 데이터를 변경할 때 생길 수 있는 업데이트들을 나타낸 블록도.
도 7은 클라이언트 테이블들 중 하나로부터의 업데이트들로 인해 마스터 테이블로부터 전파될 수 있는 업데이트들을 나타낸 블록도.
이하의 상세한 설명은 구조화된 데이터 요소들에 액세스하여 업데이트하기 위해 멀티-클라이언트 협업(multi-client collaboration)을 가능하게 하는 기술들에 관한 것이다. "구조화된 데이터 요소들(structured data elements)"이라는 용어는 본 명세서에서, 가능한 구현들을 제한함이 없이, 전체적인 구성 방식(organizational scheme)과 관련하여 발생되는 데이터 요소들을 말하기 위해 사용된다. 예를 들어, 이러한 구성 방식들은 스프레드시트 또는 그의 컴포넌트들 내에서 구현될 수 있다. 이 스프레드시트 컴포넌트들은 워크북, 테이블, 행, 열, 셀 또는 그의 일부분을 포함할 수 있다. 가능한 구현들을 제한함이 없이 또 단지 이 설명을 용이하게 해주기 위해, 이하의 계층구조가 설명에 도움이 되는 스프레드시트 용어들을 참조하여 제시되어 있다.
예시적인 스프레드시트 용어 |
일반화 | 예시적인 역할 |
워크북 | 모델, 보고서 또는 애플리케이션 | 테이블이 동작할 수 있는 컨텍스트를 제공함. 수식들이 테이블을 참조할 수 있음. 마스터 테이블 내에서, 마스터 테이블 내의 수식들이 마스터 테이블 자체 내에 실제로 있지 않은 워크북 내의 다른 데이터를 참조할 수 있음. |
테이블 | 데이터 협업 구조 | 사용자들이 동일한 테이블에 대해 협업할 수 있지만, 다른 사용자들이 다른 워크북을 가질 수 있음. 본 명세서에서의 설명은 테이블 레벨에서의 사용자들 간의 협업을 가능하게 해줄 수 있음. |
행ID, 열 | 데이터점 식별자 | 테이블에 대한 변경들이 다른 사용자들에 의해 유지되는 다른 워크북들 내의 동일한 논리적 셀/데이터점에 적용되도록 데이터점들을 식별함 |
셀 | 데이터점 | 개개의 데이터값 |
본 명세서에 기술된 발명 대상이 일반적으로 컴퓨터 시스템 상에서 운영 체제 및 애플리케이션 프로그램을 실행하는 것과 관련하여 실행되는 프로그램 모듈들과 관련하여 제공되어 있지만, 당업자라면 다른 구현들이 다른 유형의 프로그램 모듈들과 관련하여 수행될 수 있다는 것을 잘 알 것이다. 일반적으로, 프로그램 모듈들은 특정의 태스크들을 수행하거나 특정의 추상 데이터 유형들을 구현하는 루틴, 프로그램, 컴포넌트, 데이터 구조, 및 기타 유형의 구조체를 포함한다. 게다가, 당업자라면 본 명세서에 기술된 발명 대상이 핸드헬드 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 또는 프로그램가능 가전 제품, 미니컴퓨터, 메인프레임 컴퓨터, 기타 등등을 비롯한 기타 컴퓨터 시스템 구성에서 실시될 수 있다는 것을 잘 알 것이다.
이하의 상세한 설명에서, 본 명세서의 일부를 형성하고 예로서 구체적인 실시예들 또는 일례들이 도시되어 있는 첨부 도면들이 참조되고 있다. 이제부터, 유사한 참조 번호들이 몇개의 도면들에 걸쳐 유사한 구성요소들을 나타내고 있는 도면들을 참조하여, 구조화된 데이터 요소들에 액세스하여 업데이트하기 위한 멀티-클라이언트 협업을 위한 도구들 및 기법들의 여러 측면들에 대해 기술할 것이다.
도 1은 다수의 클라이언트 시스템들이 구조화된 데이터 요소에 협업적으로 액세스하여 업데이트할 수 있게 해주는 시스템들 또는 동작 환경들(전체적으로 100으로 나타냄)을 나타낸 것이다. 이 시스템들(100)은 하나 이상의 서버 시스템들(102)을 포함할 수 있으며, 도 1은 2개의 서버 일례(102A 및 102N)[모두 합하여 서버들(102)이라고 함]를 제공한다. 그렇지만, 본 명세서에서의 설명의 구현들은 임의의 수의 서버들을 포함할 수 있다.
서버들(102)은 하나 이상의 클라이언트 시스템들(104)과 통신할 수 있으며, 도 1은 2개의 클라이언트 시스템 일례(104A 및 104N로 표시됨)[모두 합하여 클라이언트 시스템들(104)이라고 함]를 제공한다. 서버들 및 클라이언트 시스템들은 하나 이상의 네트워크들(106)을 통해 서로 통신을 할 수 있으며, 이 네트워크들은 임의의 적절한 네트워킹 및 시그널링 기술들을 사용하여 구축된 근거리 통신망 또는 원거리 통신망을 나타낼 수 있다. 네트워크(106)는, 예를 들어, 인터넷을 포함할 수 있다. 이 네트워크들은 무선 및/또는 유선 통신 능력을 제공할 수 있다.
서버들 및 클라이언트들은 적당한 링크들(108)을 통해 네트워크들(106)과 통신을 할 수 있다. 도 1은 서버들(102A 및 102N) 및 클라이언트들(104A 및 104N)과 각각 연관되어 있는 링크들(108A, 108B, 108C, 및 108N)을 나타내고 있다. 이 링크들(108)은 서버들 및 클라이언트 시스템들이 네트워크들에 연결할 수 있게 해주는 하드웨어 및/또는 소프트웨어 컴포넌트들을 나타낸다. 이 컴포넌트들은 네트워크 어댑터들, 프로토콜 스택들, 기타를 포함할 수 있다.
서버들, 클라이언트 시스템들, 및 네트워크들을 나타내기 위해 도 1에서 사용된 그래픽 요소들은 단지 설명을 용이하게 해주기 위해 선택된 것이며, 본 명세서에서의 설명의 가능한 구현들을 제한하기 위해 선택된 것이 아니다. 보다 상세하게는, 도 1은 클라이언트 시스템(104A)이 휴대용 컴퓨팅 시스템(랩톱, 노트북 또는 기타 모바일 시스템이든 상관없음)인 일례들을 나타내고 있다. 클라이언트 시스템(104N)은 고정형(stationary) 또는 데스크톱 시스템을 나타낸다. 그렇지만, 본 명세서에서의 설명이 또한 무선 PDA(personal digital assistant), 스마트폰, 기타(이들로 제한되지 않음)를 비롯한 다른 형태의 클라이언트 시스템들도 생각하고 있다.
서버들(102)을 더 상세히 살펴보면, 서버들은 특정의 구현들에 적절한 것으로 선택된 특정의 유형 또는 아키텍처를 가질 수 있는 하나 이상의 프로세서들(110)을 포함할 수 있다. 프로세서들(110)은 프로세서들(110)과 호환하도록 선택되는 하나 이상의 버스 시스템들(112)에 결합될 수 있다.
서버들(102)은 버스 시스템들(112)에 결합되어 있는 하나 이상의 컴퓨터-판독가능 저장 매체(114) 인스턴스들을 포함할 수 있다. 이 버스 시스템들에 의해 프로세서들(110)이 컴퓨터-판독가능 저장 매체(114)로/로부터 코드 및/또는 데이터를 판독할 수 있다. 매체(114)는 반도체, 자성 물질, 광학, 기타(이들로 제한되지 않음)를 비롯한 임의의 적당한 기술을 사용하여 구현된 저장 요소들을 나타낼 수 있다. 매체(114)는 메모리 컴포넌트들(RAM, ROM, 플래쉬, 또는 기타 유형들이든 상관없음)을 포함할 수 있고 또한 하드 디스크 드라이브들도 나타낼 수 있다.
저장 매체(114)는, 프로세서(110)에 로드되어 실행될 때, 서버(102)로 하여금 구조화된 데이터 요소들에 액세스하여 업데이트하기 위한 멀티-클라이언트 협업을 가능하게 하는 일련의 서비스들을 클라이언트 시스템들에 제공하게 하는 하나 이상의 명령어 모듈들(116)을 포함할 수 있다. 이 설명 전반에 걸쳐 상세히 기술하는 바와 같이, 이러한 서버측 협업 서비스들에 의해 클라이언트 시스템들에 있는 하나 이상의 사용자들(이후의 도면들에 도시되어 있음)이 마스터 테이블(118) 내에 저장되어 있는 구조화된 데이터에 액세스할 수 있다. 이 설명은 스프레드시트 애플리케이션들과 관련하여 구조화된 데이터에 관한 일례들을 제공하지만, 본 명세서에 기술된 원리들이 본 명세서에서의 설명의 범위 및 사상을 벗어나지 않고 기타 애플리케이션들로 확장될 수 있다. 일반적으로, 협업 서비스 모듈들(116)은, 점선(120)으로 나타낸 바와 같이, 마스터 테이블(118)로/로부터의 액세스 및 데이터 전송을 관리한다.
클라이언트 시스템들(104)에 대해 더 상세히 살펴보면, 클라이언트 시스템들은 하나 이상의 프로세서들(122)을 포함할 수 있다. 이 프로세서들은 클라이언트 시스템들에 적절한 것으로 선택될 수 있으며, 서버들 내의 프로세서들(110)과 동일한 유형 또는 아키텍처를 갖거나 갖지 않을 수 있다. 프로세서들(122)은 프로세서들(122)과 호환하도록 선택되는 하나 이상의 버스 시스템들(124)과 결합될 수 있으며, 따라서 서버들 내의 버스 시스템들(112)과 동일한 유형 또는 아키텍처를 갖거나 갖지 않을 수 있다.
클라이언트 시스템들은 버스 시스템들(124)에 결합되어 있는 하나 이상의 컴퓨터-판독가능 저장 매체(126) 인스턴스들을 포함할 수 있다. 버스 시스템들(124)에 의해 프로세서들(122)이 컴퓨터-판독가능 저장 매체(126)로/로부터 코드 및/또는 데이터를 판독할 수 있다. 저장 매체(114)에 대한 개괄적인 설명이 일반적으로 저장 매체(126)에 적용되며, 따라서 여기에서 반복되지 않는다.
저장 매체(126)는, 프로세서(122)에 로드되어 실행될 때, 클라이언트 시스템들(104)로 하여금 서버측 모듈들(116)과 함께 참여하여 협업 서비스들을 제공하게 하는 하나 이상의 명령어 모듈들(128)을 포함할 수 있다. 이 설명 전반에 걸쳐 상세히 기술하는 바와 같이, 이러한 클라이언트측 협업 서비스들에 의해 클라이언트 시스템들의 사용자들은 구조화된 데이터를 마스터 테이블(118)로부터 클라이언트측 테이블, 즉 로컬 테이블(130) 내로 로드할 수 있다. 일반적으로, 협업 서비스 모듈들(128)은, 점선(132)으로 나타낸 바와 같이, 클라이언트 테이블(130)로/로부터의 액세스 및 데이터 전송을 관리한다.
도 1에 나타낸 바와 같이, 서버측 서비스들(116) 및 클라이언트측 서비스들(128)은 협동하여, 전체적으로 점선(134)으로 나타낸 바와 같이, 작업흐름들이 서버들과 클라이언트 시스템들 사이에서 전달될 수 있게 해줄 수 있다. 이후의 도면들 및 설명이 협업 작업흐름들(134)에 대해 추가적으로 상세히 설명하지만, 이 작업흐름들은 일반적으로 클라이언트 시스템들(104)(및 관련 사용자들)이 서버들(102)에서 호스팅되는 구조화된 데이터에 대해 협업하는 것과 관련된 명령 흐름들, 데이터 흐름들 및 기타 처리를 나타낸다.
도 1이 서버(102N) 및 클라이언트 시스템(104N)의 컴포넌트들에 대해 상세히 설명하고 있지만, 이 설명들이 서버(102A) 및 클라이언트 시스템(104A)에 똑같이 적용될 수 있다. 이 설명들은 또한 도 1에는 도시되어 있지 않지만 본 명세서에 제공된 기술들의 구현들에 포함될 수 있는 서버들 또는 클라이언트 시스템들에도 적용될 수 있다.
도 1이 서버 시스템들 및 클라이언트 시스템들을 포함하는 예시적인 구현들을 나타내고 있지만, 유의할 점은 다른 구현들이 가능하다는 것이다. 예를 들어, 본 명세서에서 서버들에 의해 수행되는 것으로 기술된 기능이 클라이언트들로 분산될 수 있다. 보다 구체적으로는, 클라이언트들이 본 명세서에 기술된 서버 기능들을 수행하기 위해 다른 클라이언트들과 통신하는 서비스들을 포함할 수 있다. 이와 같이, 서버 기능들이 분산화되어 클라이언트들 자체로 분배될 수 있다.
도 1에 도시된 시스템들 또는 동작 환경들(100)에 대해 기술하였으며, 이제 도 2에 제시되어 있는, 구조화된 데이터 요소들에 액세스하여 업데이트하기 위한 멀티-클라이언트 협업에 관련된 프로세스 및 데이터 흐름들에 대해 계속 설명하기로 한다. 상세하게는, 도 2는 클라이언트 시스템들이 서버로부터의 구조화된 마스터 데이터에 협업적으로 액세스할 수 있게 해주는 프로세스 및 데이터 흐름들(전체적으로 200으로 나타냄)을 나타내고 있다. 가능한 구현들을 제한하기 위한 것이 아니라 설명의 편의상, 도 2는 유사한 구성요소들을 가리키기 위해 이전의 도면으로부터의 참조 번호들을 그대로 사용할 수도 있다.
도 2는 클라이언트 테이블들(130)의 일례들을 그대로 사용하며, 예시적인 클라이언트 테이블(130A)은 도 1의 클라이언트 시스템(104A)과 연관되어 있고, 예시적인 클라이언트 테이블(130N)은 클라이언트 시스템(104N)과 연관되어 있다. 도 2는 또한 서버(102)와 연관된 예시적인 마스터 테이블(118)도 그대로 사용한다. 클라이언트측 협업 서비스들(128A 및 128N)의 각자의 인스턴스들이 클라이언트 테이블들(130A 및 130N)을 관리하고 서버측 협업 서비스들(116)이 마스터 테이블(118)을 관리한다. 도 2는 또한 협업 작업흐름들(134)의 인스턴스들을 제공하며, 작업흐름들(134A)은 클라이언트측 협업 서비스(128A)로/로부터 전달되고 작업흐름들(134N)은 클라이언트측 협업 서비스(128N)로/로부터 전달된다. 도 2를 보면 알 수 있는 바와 같이, 도 2에 도시된 다양한 데이터 흐름들이 협업 작업흐름들(134A 및 134N)에 대해 추가적으로 상세히 나타내고 있다.
프로세스 및 데이터 흐름들(200)에 대해 더 상세히 살펴보면, 블록(202)은 클라이언트 시스템[예를 들어, 클라이언트측 서비스(128N)와 연관된 클라이언트 시스템(104N)]이, 하나 이상의 구조화된 데이터 요소들이 클라이언트 시스템으로부터 서버로 게시되도록 사용자가 요청할 수 있게 해주는 사용자 인터페이스(UI)를 제시하는 것을 나타낸다. 이러한 구조화된 데이터 요소들의 일례들은 테이블들을 포함할 수 있으며, 이 테이블들은 행들 및 열들로 배열된 데이터 구조들의 컬렉션들(collections)을 나타내고, 여기서 행들과 열들의 교차점들에 셀들이 정의된다. 이 셀들은 사용자들에 의해 선택되거나 프로그램된 데이터, 수식들, 또는 라벨들을 포함할 수 있다. 블록(202)은 명시적인 사용자 명령에 응답하여 UI를 제시하는 것을 포함할 수 있거나, 어떤 일련의 조건들에 응답하여 자동으로 UI를 제시하는 것을 포함할 수 있다.
블록(202)에서 제시된 UI에 응답하여, 사용자(204)는 게시를 위한 하나 이상의 테이블들을 선택할 수 있다. 예를 들어, 사용자는 서로 다른 기능들을 수행하기 위해 복수의 서로 다른 테이블들 또는 워크시트들(worksheets)을 프로그램했을 수 있고, 다른 사용자들이 이 테이블들 또는 워크시트들에 대해 작업하는 데 협업할 수 있게 해주기 위해, 이 테이블들 또는 워크시트들 중 하나 이상을 게시를 위해 선택할 수 있다. 사용자는 동일한 워크북(workbook) 중의 다수의 테이블들을 게시하기로 선택할 수 있다. 사용자는 게시를 위해 테이블들 또는 워크시트들 전체를 선택할 수 있거나, 그의 일부분들을 선택할 수 있다. 도 2는 이러한 테이블 선택들을 206으로 나타내고 있고, 처리 블록(208)은 이 선택들(206)을 수신하는 것을 나타낸다. 예를 들어, 블록(208)은 하드웨어 및/또는 소프트웨어에 의해 전달되는 적절한 신호들 및/또는 이벤트들로 표현되는, 사용자로부터의 마우스 클릭들, 선택들, 또는 기타 응답들의 표시들을 수신하는 것을 포함할 수 있다.
블록(210)은 사용자가 게시를 위해 선택했던 테이블들을 전달 또는 전송하는 것을 나타낸다. 도 2는 이 선택된 테이블들을 212로 나타내고 있다. 도 2에 명시적으로 도시되어 있지는 않지만, 사용자들이 다른 사용자들에게 게시하기 위해 다수의 구조화된 데이터 인스턴스들을 선택할 수 있게 해주기 위해, 블록들(202, 208 및 210)이 임의의 횟수 반복될 수 있다.
서버측 서비스(116)와 연관된 서버에서, 블록(214)은 테이블들(예를 들어, 212)이 게시되었고 소비에 이용될 수 있다는 통지들을 하나 이상의 클라이언트 시스템들로 전송하는 것을 나타낸다. 가능한 구현들을 제한함이 없이, "게시(publication)"라는 용어는, 본 명세서에서 사용되는 바와 같이, 테이블을 공동의 풀(pool) 또는 라이브러리(library) 내에 배치하는 것을 말할 수 있으며, 이 때 임의의 수의 다른 클라이언트들(및/또는 대응하는 사용자들)이 이 게시된 테이블들을 브라우징할 수 있고 협업을 위해 이 테이블들 중 하나 이상을 선택할 수 있다. 구현들에서, 이 게시된 테이블들의 풀 또는 라이브러리는, 불특정 다수의 클라이언트들 또는 사용자들이 협업을 위해 그 라이브러리에 액세스하여 그 테이블들의 공유된 사본들을 획득할 수 있다는 점에서 개방적이다. 주어진 클라이언트가 테이블을 게시할 때, 그 클라이언트는 어느 다른 클라이언트들이 게시된 테이블을 궁극적으로 공유하게 될지를 알지 못할 수 있다.
도 2는 이용가능한 테이블들의 통지들을 216으로 나타내고 있으며, 이 테이블들(216)은 클라이언트 서비스들(128N)에 의해 게시된 테이블들(212)은 물론 다른 클라이언트 서비스들 및 관련 클라이언트 시스템들에 의해 게시된 다른 테이블들도 포함할 수 있다. 이용가능한 테이블들(216)은 게시된 다양한 테이블들에 대한 엔트리들을 포함할 수 있는 라이브러리로 구성될 수 있다.
서버 시스템들 및 클라이언트 시스템들은 클라이언트 시스템들에 의해 선택될 수 있는 일련의 후보 데이터 요소들(예를 들어, 이상에서 제공된 예시적인 계층적 구조에 나타낸 바와 같은, 테이블들, 데이터 협업 구조들, 또는 이들의 임의의 부분들)을 구성하는 하나 이상의 프로토콜들을 정의할 수 있다. 이 프로토콜들은 이 후보 데이터 요소들 중 어느 것이 특정의 클라이언트 시스템들에 의해 선택되었는지를 식별할 수 있다. 예를 들어, 이 프로토콜들은 후보 데이터 요소들을 구성할 수 있고, 고유 식별자를 후보 데이터 요소들 각각과 연관시킬 수 있다. 가능한 구현들을 제한하기 위한 것이 아니라 본 명세서에서 참조의 편의상, 이 설명은 이 후보 데이터 요소들과 연관되어 있는 각자의 고유 데이터점 식별자들(data point identifiers)에 관한 것이다. 이에 따라, 블록(214)은 이 식별자들의 각자의 인스턴스들을 서버 시스템들로부터 클라이언트 시스템들로 게시되는 이용가능한 테이블들(216) 내의 요소들과 연관시키는 것을 포함할 수 있다. 협업 서비스들(128 및 116)은, 사용자들이 식별자들을 보기로 명시적으로 선택하지 않는 한, 사용자들에게 보이지 않게 이 식별자들을 유지한다. 그에 부가하여, 게시측 또는 제공측 클라이언트와 연관된 협업 서비스들(128N)은 특정의 클라이언트에 의해 게시되거나 제공된 그 테이블들에 대한 변경들에 대한 나중의 추적(tracking) 및 조정(reconciliation)을 용이하게 해주기 위해 이 게시된 또는 제공된 테이블들과 연관된 식별자들을 수신할 수 있다.
클라이언트측 서비스(128A)와 연관된 다른 클라이언트 시스템(예를 들어, 104A)에서, 블록(218)은 다른 클라이언트들에 의해 게시되었고 따라서 클라이언트 시스템(104A)에 의해 소비될 수 있는 테이블들, 워크북들, 또는 기타 구조화된 데이터 요소들을 노출시키는 UI를 제시하는 것을 나타낸다. 클라이언트 시스템(104A)과 연관된 사용자(220)는 UI를 살펴보고 UI에 제시된 이용가능한 구조화된 데이터 요소들 중 하나 이상을 선택할 수 있다. 도 2는 이 선택들을 222로 나타내고 있다.
차례로, 블록(224)은 클라이언트 서비스 모듈(128A)이 사용자로부터 구조화된 데이터 요소들(예를 들어, 테이블들, 워크시트들, 행들, 열들, 또는 이러한 구조화된 데이터 요소들의 기타 구성체들)의 선택들을 수신하는 것을 나타낸다. 예를 들어, 블록(224)은 하드웨어 및/또는 소프트웨어에 의해 전달되는 적절한 신호들 및/또는 이벤트들로 표현되는, 사용자로부터의 마우스 클릭들, 선택들, 또는 기타 응답들의 표시들을 수신하는 것을 포함할 수 있다[상기한 블록(208)과 마찬가지임].
블록(226)은 클라이언트 시스템이 사용자가 어느 테이블들을 선택했는지의 표시들을 전송하는 것을 나타낸다. 사용자가 이 이용가능한 테이블들 중 하나 이상을 선택한 후에, 블록(226)은, 228로 나타낸 바와 같이, 사용자가 어느 테이블들 또는 데이터 요소들을 선택했는지를 서버 시스템들에 통지할 수 있다. 이 통지들 또는 표시들(228)은, 도 2에 나타낸 바와 같이, 선택된 데이터 요소들의 식별자들을 포함할 수 있다.
마스터 테이블들(118)을 보유하는 서버 시스템들에서, 블록(230)은 클라이언트 시스템들로부터 선택들(228)을 수신하는 것을 나타낸다. 앞서 살펴본 바와 같이, 선택들(228)은 선택된 데이터 요소들에 대응하는 하나 이상의 식별자들을 참조할 수 있다. 차례로, 블록(232)은 마스터 테이블(예를 들어, 118)로부터 선택된 데이터 요소들을 검색하는 것을 나타낸다. 블록(232)은 선택들(228)에 포함된 입력 식별자들을 마스터 테이블에 대한 인덱스들로서 사용하는 것을 포함할 수 있다. 블록(234)은 선택된 데이터 요소들을 이 데이터 요소들을 요청한 클라이언트 시스템으로 전송하는 것을 나타내고 있다. 도 2는 이 전송된 데이터 요소들을 236으로 나타내고 있다.
클라이언트 시스템들에서, 블록(238)은 사용자가 이전에 선택했던 요청된 데이터 요소들[즉, 선택들(222)]을 수신하는 것을 나타낸다. 도 2는 클라이언트 테이블(130A)이 다른 클라이언트 테이블(130N)로부터 게시된 데이터 요소들을 수신하는 일례를 나타낸 것이다. 그렇지만, 유의할 점은, 이제부터 도 3에서 설명하는 바와 같이, 임의의 수의 클라이언트 테이블들이 이 클라이언트 테이블(130N)로부터 게시된 데이터 요소들을 요청하고 수신할 수 있다는 것이다. 그에 부가하여, 임의의 수의 클라이언트 테이블들이 다른 사용자들과 협업하기 위해 데이터 요소들을 게시할 수 있다.
제한이 아니라 설명의 명확함을 위해, 도 2에 나오는 페이지를 벗어난 참조로 나타낸 바와 같이, 이 프로세스 및 데이터 흐름들(200)에 대한 설명이 도 3으로 계속된다. 이제부터 도 3으로 진행하여 이 설명을 계속하기로 한다.
도 3은 클라이언트 시스템들이 서버로부터 수신되는 구조화된 마스터 데이터에 로컬 포맷팅(local formatting)을 적용할 수 있게 해주는 프로세스 및 데이터 흐름들(전체적으로 300으로 나타냄)을 나타내고 있다. 가능한 구현들을 제한하기 위한 것이 아니라 설명의 편의상, 도 3은 유사한 구성요소들을 가리키기 위해 이전의 도면들로부터의 참조 번호들을 그대로 사용할 수 있다.
도 3에 도시된 바와 같이, 클라이언트 테이블(130A)은 도 2로부터 넘어온 것이다. 도 3은 또한 다른 클라이언트 시스템에 의해 유지되는 다른 클라이언트 테이블(130M)을 제공하며, 이 다른 클라이언트 시스템이 또한 서버 시스템에 하나 이상의 데이터 요소들을 요청하여 수신한 것으로 가정한다. 도 3은 클라이언트 테이블(130M)을 유지하는 클라이언트측 협업 서비스들(128M)을 나타내고 있다. 클라이언트 테이블(130M)에 의해 수신되는 데이터 요소들은 클라이언트 테이블(130A)에 의해 요청되어 수신되는 데이터 요소들과 동일하거나 동일하지 않을 수 있다.
클라이언트 테이블(130A)을 참조하면, 도 2로부터의 처리가 블록(302)으로 진행할 수 있고, 이 블록(302)은 마스터 테이블로부터 수신된 데이터 요소들을 로컬 클라이언트 테이블(130A)에 병합시키는 것을 나타낸다. 예를 들어, 클라이언트 테이블(130A)은 클라이언트 테이블(130A)과 연관된 사용자에게 사적이거나 로컬인 어떤 데이터를 유지할 수 있고, 이 로컬 또는 사적 데이터를 보강하기 위해 게시된 데이터 요소들 중의 어떤 요소들을 요청할 수 있다. 블록(302)은 따라서 서버 시스템들로부터 수신되는 게시된 데이터 요소들(예를 들어, 도 2의 236)을 클라이언트 테이블(130A)에 저장된 임의의 로컬/사적 정보 내에 통합시키는 것을 포함할 수 있다. 블록(302)은 또한, 이 데이터 요소들이 클라이언트 테이블(130A) 내에 통합된 후에, 게시된 데이터 요소들과 함께 수신되는 임의의 식별자 또는 인덱스 정보를 유지하는 것을 포함할 수 있다. 이하에서 더 기술되는 바와 같이, 이 식별자 또는 인덱스 정보에 의해 클라이언트 테이블(130A) 내에서 로컬적으로 행해진 변경들의 추적이 가능하게 될 수 있고 또 이 변경들을 다시 서버 시스템들에 보고하고 그 변경들을 다수의 협업하는 클라이언트 시스템들에 걸쳐 전파하는 것이 가능하게 될 수 있다.
블록(304)은 로컬 사용자(예를 들어, 220)에 의해 요청된 임의의 로컬 포맷팅(local formatting), 정렬(sorting), 필터링, 또는 기타 로컬 커스텀화들(local customizations)을 적용하는 것을 나타낸다. 예를 들어, 로컬 사용자는 자신의 데이터가 어떤 컬러, 경계, 음영, 기타로 제시되도록 요청할 수 있다. 다른 일례에서, 로컬 사용자는 로컬 테이블을 어떤 방식으로 정렬하라는 명령들을 발행할 수 있다. 또 다른 일례에서, 로컬 사용자는 로컬 테이블 내의 어떤 데이터를 필터링하거나 숨기라는 명령들을 발행할 수 있다.
블록(306)은, 임의의 로컬적으로 지정된 포맷팅, 필터, 정렬 또는 기타 동작들을 로컬 테이블에 적용했고 서버 시스템들로부터 수신된 임의의 마스터 데이터 요소들을 통합시킨 로컬 테이블을 사용자(220)에 제시하는 것을 나타낸다. 블록(306)은, 로컬 사용자(220)가 어느 데이터가 로컬 데이터이고 어느 데이터가 외부 데이터인지(즉, 서버 시스템들 또는 다른 클라이언트 시스템들로부터 온 것인지)를 즉각 인지할 수 있도록, 마스터 데이터 요소들을 하이라이트하거나 다른 방식으로 표시하는 것을 포함할 수 있다. 도 3은 로컬 지정들(310)(예를 들어, 포맷팅, 정렬, 필터링, 또는 유사한 커스텀화들)에 응답하여 사용자(220)에게 제시되는 로컬 테이블을 308로 나타내고 있다.
다른 수신측 클라이언트 테이블(130M) 및 관련된 협업 서비스들(128M)을 살펴보면, 블록들(312, 314 및 316)은 다른 로컬 클라이언트 테이블(130M)에 대해 수행되는, 블록들(302, 304 및 306)에 기술된 처리에 대응한다. 상세하게는, 블록(314)은 사용자(320)에 의해 지정된 로컬 지정들 또는 명령들(318)에 응답하여 로컬 클라이언트 테이블(130M)을 포맷팅, 정렬, 필터링, 또는 다른 방식으로 로컬적으로 커스텀화하는 것을 포함할 수 있다. 도 3은 사용자(320)에게 제시되는 로컬 테이블을 322로 나타내고 있다. 그렇지만, 로컬 클라이언트 테이블(130A)에 대한 로컬 지정들(310)이 로컬 클라이언트 테이블(130M)에 대한 로컬 지정들(318)과 다를 수 있다. 이와 같이, 클라이언트 시스템들[보다 구체적으로는, 서비스들(128A 및 128M)]에 의해 서로 다른 사용자들(220 및 320)이 자신의 로컬 테이블들(130A 및 130M)을 그 자신의 지정들에 따라 서로 다르게 커스텀화할 수 있다. 예를 들어, 사용자들(220 및 230)은 자신의 로컬 테이블들(130A 및 130M)을 서로 다르게 정렬하거나 필터링할 수 있다.
점선(324 및 326)으로 나타낸 바와 같이, 로컬 테이블들(130A 및 130M)은 서버 시스템들로부터 수신된 적어도 어떤 마스터 데이터 요소들을 포함할 수 있으며, 이 마스터 데이터 요소들이 로컬 테이블들에 통합된다. 식별자들은 로컬 테이블들 내의 마스터 데이터 요소들을 식별하고 구성하는 역할을 할 수 있다. 가능한 구현들을 제한하기 위한 것이 아니라 설명의 편의상, 도 3에 도시된 페이지를 벗어난 참조로 나타낸 바와 같이, 이 프로세스 및 데이터 흐름들(300)에 대한 설명이 도 4로 계속된다.
도 4는 서로 다른 클라이언트 테이블들 내의 마스터 테이블 데이터에 행해지는 진행 중인 변경들 또는 수정들을 처리하는 것과 관련된 프로세스들 및 데이터 흐름들(400)을 나타낸 것이다. 도 4는 또한 그 변경들 또는 수정들을 마스터 테이블 내에 통합시키는 것과 그 변경들을 각종의 서로 다른 클라이언트 시스템들에 걸쳐 전파시키는 것도 나타내고 있다. 가능한 구현들을 제한하기 위한 것이 아니라 설명의 편의상, 도 4는 유사한 구성요소들을 가리키기 위해 이전의 도면들로부터의 참조 번호들을 그대로 사용할 수 있다.
도 3으로부터의 페이지를 벗어난 참조에서 시작하여, 블록(402)은 사용자[예를 들어, 사용자(220)]로부터 하나 이상의 명령들을 수신하는 것을 나타낸다. 이 명령들은, 일반적으로, 클라이언트 테이블(130A)(로컬 또는 사적 데이터에 관한 것이든 상관없음)에 대한 또는 서버 시스템들로부터 수신된 마스터 데이터에 대한 임의의 업데이트들을 나타낼 수 있다. 도 4는 이 명령들을 전체적으로 404로 나타내고 있다.
사용자가 마스터 테이블로부터 수신된 데이터 요소들을 업데이트시킨 경우들에, 블록(406)은 마스터 테이블 데이터에 대한 업데이트들을 서버 시스템[예를 들어, 서비스들(116)]으로 전송하는 것을 나타낸다. 도 4는 이 업데이트들을 408로 나타내고 있으며, 이 업데이트들은 클라이언트 레벨에서 변경된 데이터 요소들에 대응하는 식별자들을 참조할 수 있다. 업데이트들(408)은 식별자들, 관여된 열에 대한 참조, 및 새로운 값을 포함할 수 있는 각자의 변경 기록들을 포함할 수 있다. 변경들은 효율성을 위해 일괄 처리(batch)될 수 있다. 변경들은 또한 클라이언트가 네트워크로부터 분리될 때 또는 다르게 오프 라인 모드에 있을 때 일괄 처리될 수 있다.
서버 시스템에서, 블록(410)은 마스터 테이블에 대한 업데이트들(408)을 수신하는 것을 포함한다. 차례로, 블록(412)은 클라이언트 시스템으로부터 수신된 이 업데이트들을 마스터 테이블에 병합시키는 것을 나타낸다. 블록(412)은 업데이트들(408)로부터 식별자들을 추출하는 것, 표시된 식별자들에 대응하는 마스터 테이블(예를 들어, 118)의 부분에 액세스하는 것, 및 마스터 테이블의 적절한 부분들을 업데이트시키는 것을 포함할 수 있다.
협업 서비스 컴포넌트(128M)를 살펴보면, 이 서비스 컴포넌트에 의해 다른 사용자(예를 들어, 320)가 이 컴포넌트(128M)에 의해 관리되는 클라이언트 테이블(예를 들어, 도 3의 130M)을 업데이트시킬 수 있다. 보다 구체적으로는, 블록(414)은 사용자(320)로부터 업데이트 명령들을 수신하는 것을 나타내며, 도 4는 이 명령들을 416으로 나타내고 있다. 명령들(416)에 응답하여, 서비스 컴포넌트(128M)는 그에 따라 클라이언트 테이블을 업데이트시킬 수 있다. 블록(402)에서 전술한 바와 같이, 이 업데이트들은 로컬/사적 데이터에 대한 업데이트들은 물론 클라이언트 테이블에 들어 있는 마스터 데이터에 대한 업데이트들도 포함할 수 있다. 사용자 명령들로 인해 마스터 데이터 요소들에 대한 변경들이 발생하는 경우들에, 블록(418)은 임의의 이러한 업데이트들을, 마스터 데이터 요소들이 연계되어 있는 서버 시스템으로 전송하는 것을 나타낸다. 도 4는 이 업데이트들을 420으로 나타내고 있다.
서버측 협업 서비스들(116)로 돌아가서, 블록(410)(전술함)은 클라이언트 서비스 컴포넌트(128A)로부터 뿐만 아니라 클라이언트 서비스 컴포넌트(128M)로부터도 업데이트들을 수신하는 것을 포함할 수 있다. 달리 말하면, 블록(410)은 업데이트들(408) 및/또는 업데이트들(420)은 물론 도 4에 도시되지 않은 다른 클라이언트들로부터의 업데이트들도 수신하는 것을 포함할 수 있다. 그에 부가하여, 블록(412)은 이 업데이트들을 서버 시스템에 의해 유지되는 마스터 테이블에 통합 또는 병합시키는 것을 포함할 수 있다. 식별자들은 마스터 데이터의 어느 부분들이 클라이언트 시스템들에 의해 변경되었는지를 명시함으로써 이 통합 또는 병합을 용이하게 해줄 수 있다. 모든 클라이언트 시스템들에 걸쳐 집계되면, 이 식별자들은 마스터 데이터의 어느 부분들이 업데이트되어 클라이언트들에 재게시되어야 하는지를 나타낸다.
블록(422)은 마스터 테이블에 대한 업데이트들을 서로 다른 클라이언트들에 걸쳐 게시하는 것을 나타낸다. 보다 구체적으로는, 클라이언트 서비스 컴포넌트(128M)가 서버 시스템에 연계된 어떤 마스터 데이터를 변경한 것으로 가정하면, 블록(422)은 이 변경들 또는 업데이트들을 클라이언트 서비스 컴포넌트(128A)에 게시하는 것을 포함할 수 있다. 블록(422)은 또한 이 변경들을 이 마스터 데이터에 가입한 임의의 다른 클라이언트 시스템들에 게시하는 것도 포함할 수 있다. HTTP와 관련하여, 블록(422)은 서버측 서비스들이 클라이언트들로부터의 폴링에 응답하는 것을 포함할 수 있다.
이와 유사하게, 클라이언트 서비스 컴포넌트(128A)가 서버 시스템에 연계되어 있는 어떤 마스터 데이터를 변경한 경우, 블록(422)은 이 변경들을 클라이언트 서비스 컴포넌트(128M) 및 이 마스터 데이터에 가입한 임의의 다른 클라이언트 시스템들에 게시하는 것을 포함할 수 있다. 도 4는 클라이언트 서비스 컴포넌트(128A)에 게시되는 마스터 테이블 업데이트들을 424로 나타내고 있고, 클라이언트 서비스 컴포넌트(128M)에 게시되는 마스터 테이블 업데이트들을 426으로 나타내고 있다. 이 업데이트들은 특정의 변경들에 의해 영향을 받는 마스터 테이블들의 식별자들을 참조할 수 있다.
클라이언트 서비스 컴포넌트(128A)에서, 블록(428)은 다른 클라이언트 시스템들에 의해 마스터 테이블 데이터에 대해 행해진 변경들을 나타내는 테이블 업데이트들(424)을 수신하는 것을 나타낸다. 차례로, 블록(430)은 이 업데이트들을 로컬 클라이언트 테이블(예를 들어, 도 3의 130A)에 병합시키는 것을 나타낸다. 식별자 파라미터는, 클라이언트 서비스 컴포넌트(128A)가 마스터 테이블 데이터의 어느 부분들을 업데이트시켜야 하는지를 결정할 수 있게 해줌으로써, 블록(430)을 용이하게 해줄 수 있다. 블록(432)은 업데이트된 마스터 테이블 데이터를 사용자(220)에게 제시하는 것을 나타낸다. 블록(432)은, 클라이언트 시스템에 의해 유지되는 임의의 로컬 또는 사적 데이터와 함께, 업데이트된 마스터 테이블 데이터를 제시하는 것을 포함할 수 있다.
다른 클라이언트 서비스 컴포넌트(128M)를 살펴보면, 블록들(434, 436, 및 438)은 일반적으로 블록들(428, 430, 및 432)에 대응한다. 따라서, 블록(434)은 마스터 테이블 업데이트들(426)을 수신하는 것을 나타내고, 블록(436)은 클라이언트 시스템에서 이 업데이트들을 로컬 데이터 디스플레이(local data display)에 병합시키는 것을 나타내며, 블록(438)은 이 병합된 업데이트들을 클라이언트 시스템의 사용자에게 제시하는 것을 나타낸다.
클라이언트 시스템들 둘다에서, 클라이언트 서비스 컴포넌트들(128A 및 128M)은 도 4에 도시된 블록들을 무기한 반복할 수 있는데, 그 이유는 사용자들(220 및 320)이 자신에게 제시되는 데이터 요소들과 계속 상호작용하기 때문이다. 따라서, 클라이언트 서비스 컴포넌트(128A)는, 화살표(440)로 나타낸 바와 같이, 블록들(402, 406, 428, 430, 및 432)을 임의의 횟수 반복할 수 있다. 이와 유사하게, 클라이언트 서비스 컴포넌트(128M)는, 화살표(442)로 나타낸 바와 같이, 블록들(414, 418, 434, 436, 및 438)을 임의의 횟수 반복할 수 있다.
전술한 방식으로, 다수의 클라이언트 시스템들이 공유된 데이터 요소들(예를 들어, 스프레드시트에서의 테이블들)에 협업적으로 액세스할 수 있다. 어떤 경우들에, 다수의 클라이언트들이 이 공유된 데이터 요소들에 동시에 액세스할 수 있다. 다른 경우들에, 어떤 클라이언트들은 오프라인 모드에 있을 수 있고, 오프라인 동안에 행해진 임의의 변경들은 클라이언트가 그 다음에 온라인으로 될 때 조정된다. 업데이트들이 동시에, 서로 순차적으로, 또는 서로 비동기적으로 일어날 수 있다. 이 클라이언트들 중 임의의 클라이언트가 이 공유된 데이터 요소들을 업데이트시킬 수 있으며, 한 클라이언트에 의해 행해진 업데이트들이 동일한 데이터 요소들을 공유하는 임의의 다른 클라이언트들로 전파된다. 서버 시스템은, 공유된 데이터 요소들에 할당된 식별자들을 사용하여, 이 업데이트들 또는 변경들을 병합시키고 조정할 수 있다. 도 2 내지 도 4에서 프로세스 흐름들(200, 300 및 400)에 대해 기술하였으며, 이제 도 5 내지 도 7에 제시되어 있는, 구조화된 데이터 요소들에 액세스하여 업데이트하기 위한 멀티-클라이언트 협업을 가능하게 하는 전술한 기법들의 동작 일례들에 대해 이제부터 계속 설명하기로 한다.
도 5는 2개 이상의 클라이언트 테이블 구조들 사이에서 공유되는 마스터 테이블 구조의 일례들(전체적으로 500으로 나타냄)을 나타낸 것이다. 가능한 구현들을 제한하기 위한 것이 아니라 설명의 편의상, 도 5 내지 도 7은 유사한 구성요소들을 가리키기 위해 이전의 도면들로부터의 참조 번호들을 그대로 사용할 수 있다. 예를 들어, 클라이언트 서비스 컴포넌트(128A)는 클라이언트 테이블(130A)을 관리할 수 있고, 마스터 서비스 컴포넌트(116)는 마스터 테이블(118)을 관리할 수 있으며, 클라이언트 서비스 컴포넌트(128M)는 클라이언트 테이블(130M)을 관리할 수 있다. 참조 및 설명의 편의상, 도 5는 "Steve"라는 이름의 가상의 사용자가 협업 서비스 컴포넌트(128A)를 통해 클라이언트 테이블(130A)에 액세스하는 것과, "Miriam"이라는 이름의 가상의 사용자가 협업 서비스 컴포넌트(128M)를 통해 클라이언트 테이블(130M)에 액세스하는 것을 나타내고 있다. 가능한 구현들을 제한하기 위한 것이 아니라 도 5 내지 도 7에 도시된 일례들을 설명하기 위해, Steve 및 Miriam이 미국 워싱턴주 레드몬드 소재의 Microsoft Corporation로부터 입수가능한 EXCEL 계열의 애플리케이션들과 같은 스프레드시트-유형 애플리케이션을 사용하고 있는 것으로 가정한다. 이 일례들을 제공함에 있어서, 본 명세서에서의 설명이 이 특정의 제품들 또는 그의 버전들로 제한되지 않으며, 임의의 특정의 벤더들로부터 입수가능한 각종의 제품들 및/또는 버전들에서 구현될 수 있다.
도 5는 본 명세서에서 "LiveTable"이라고 하는 마스터 테이블(118)의 일례를 제공하며, 이 테이블은 서버(예를 들어, 도 1의 102) 상에서 실행되는 워크북 Master.xlsx(502)를 포함하고 있다. LiveTable(118)은 워크북의 나머지에 기초하여 어떤 계산들을 수행하는 계산된(즉, "Calc") 열(504)을 포함할 수 있다. 이하의 일례들에서 기술되는 바와 같이, calc 열은 서버 상에 존재하는 데이터 및/또는 Steve, Miriam, 및 다른 사람들과 같은 협업하는 사용자들에 의해 제공되는 데이터에 기초하여 값들을 계산하는 수식들을 포함할 수 있다. 워크북(502)이 재고 추적 및 관리를 위해 구성되어 있는 것으로 가정할 때, 이 워크북은 행(506)에 제1 항목에 관한 정보를 제공할 수 있고, 행(508)에 제2 항목에 관한 정보를 제공할 수 있다. 열(510)은 이러한 항목들의 수 또는 양을 제공할 수 있고, 열(512)은 이 항목들이 어디에 위치하는지를 나타낼 수 있으며, 열(514)은 이 항목들의 이름을 열거할 수 있다. 이 행들과 열들의 교차점에 의해 정의되는 셀들은 행들 및 열들에 의해 전달되는 특정의 정보 인스턴스들을 제공하고 기술한다.
클라이언트 테이블(130A)을 참조하여, 사용자 Steve가 관리자(admin)인 것으로 가정하면, Steve는 "Admin Inventory.xls"라고 하는 워크북(516)을 열었고, LiveTable로부터 소비되는 데이터를 수정하기 위한 명령어들과 함께, 클라이언트 테이블(130A) 내로 LiveTable의 적어도 일부를 가져오기(import)하였다. 예를 들어, Steve가 마스터 테이블로부터 행들(506 및 508) 내의 현재의 값 인스턴스들을 수신한 것으로 가정하자. 도 5는 클라이언트 테이블(130A) 내에서 소비되는, 이 가져오기된 행들을 506A 및 508A로 나타내고 있다. 또한, Steve가 504A로 나타낸, 마스터 테이블로부터의 calc 열(504)을 가져오기한 것으로 가정한다. 클라이언트 테이블(130A)은, 열(504A)에 나타낸 바와 같이, 자산 "Foo"에 대한 계산된 값 300 및 자산 "Bar"에 대한 계산된 값 2000을 포함하고 있다. 일반적으로, 워크북(516) 내의 열들은 워크북(502) 내의 열들에 따라 배열된다.
클라이언트 테이블(130M)을 살펴보면, 사용자 Miriam이 분석가(analyst)라고 가정할 때, Miriam은 "Inventory Analysis.xls"라고 하는 워크북(518)을 연다. 이 워크북(518)은 LiveTable의 적어도 일부분들을 포함할 수 있으며, 행들(506M 및 508M)은 마스터 테이블(118)로부터의 행들(506 및 508)에 대응하고 워크북(518)의 열들은 일반적으로 워크북(502)에서의 열들에 따라 배열된다. 워크북(518)은 "Total"이라는 행(520)을 포함하고 이 행(520)을 활성화(turn on)시켰다. 행(520)은 워크북(502)에서의 calc 열(504)에 대응하는 calc 열(504M)로부터의 계산된 값들을 합산한다. Miriam의 워크북(518)은 또한 Miriam, Steve, 및 마스터 테이블(118)로부터의 데이터를 소비하는 임의의 다른 사용자들에 의해 보고되는 "Bar" 항목들의 수를 합산하는 행(522)도 포함할 수 있다. 셀(524)은 "Bar" 항목들을 세는 데 사용되는 합산 수식을 정의할 수 있다. 워크북들(502, 516 및 518)의 초기 레이아웃들에 대해 기술하였으며, 이제 도 6 및 도 7에 제시되어 있는, 공유된 정보에서의 변경들이 어떻게 처리되는지에 대해 이제부터 계속 설명하기로 한다.
도 6은 협업하는 한 사용자가 마스터 테이블로부터 소비되는 데이터를 업데이트할 때 생길 수 있는 업데이트들(전체적으로 600으로 나타냄)을 나타낸 것이다. 이 일례들에서, 사용자 Steve는 새로운 행(602)을 자신의 워크북(516)(도 5로부터 그대로 가져옴)에 추가한다. 이 새로운 행(602)은, 20개의 이 항목들이 위치 "Redmond"에서 입수가능하다는 것을 나타내는, "Bar" 항목들에 대한 부가의 데이터를 제공한다. 워크북(516)에 대한 이 업데이트는, 클라이언트 시스템이 마스터 테이블로부터의 정보를 업데이트하는 데 사용되는, 도 4에 나타낸 데이터 흐름들(408)의 일례를 제공한다. 따라서, 도 6은 로컬 변경들, 이 경우에, 행들 및 셀들에 대한 변경들의 결과 얻어지는 마스터 테이블에 대한 업데이트들을 나타내기 위해 참조 번호(408)를 그대로 사용하였다.
마스터 테이블(118)에서, 협업 서비스 모듈(116)은 업데이트들(408)을 수신한다. 이에 응답하여, 워크북(502)은 새로운 행(602N)을 추가하고, 이 새로운 행을, 협업을 위해 서로 다른 클라이언트 시스템들 사이에서 공유되는 구조화된 데이터 요소들 내에서 이 새로운 행을 식별하기 위한 값(예를 들어, row_id)과 연관시킨다. 워크북(502)은 또한, 업데이트들(408)을 포함시키기 위해, 새로운 행(602N)에 대한 열들(510, 512, 514, 및 504)을 업데이트시킨다. 따라서, 마스터 테이블은 이제 자산(asset) "Bar"의 20개 인스턴스가 Redmond에서 입수가능하다는 것을 나타낸다. 그에 부가하여, 행(602N) 내의 셀(604)이 예시적인 calc 열(504) 내에 정의된 새로운 수식 인스턴스를 포함하고 있다. 마스터 테이블 및 관련 워크북(502)이 Steve의 클라이언트 워크북(516)으로부터의 변경들을 포함시키기 위해 어떻게 변할 수 있는지를 설명하였으며, 이 변경들이 Steve의 워크북 및 Miriam의 워크북으로 어떻게 전파될 수 있는지에 대해 이제부터 계속 설명하기로 한다.
도 7은 클라이언트 테이블들 중 하나로부터의 업데이트들로 인해 마스터 테이블로부터 전파되는 업데이트들(전체적으로 700으로 나타냄)을 나타낸 것이다. Steve의 로컬 테이블 및 Miriam의 로컬 테이블을 다루고 있는 상기 일례를 계속하면, 마스터 테이블(118) 및 마스터 워크시트(502)는 Steve의 워크시트(516)에 행해진 변경들로 인해 일어나는 행/셀 변경들을 Miriam의 워크시트(518)로 전달할 수 있다. 도 7은 Miriam의 워크시트에 대한 이 업데이트들을 행/셀 변경들(702)로 나타내고 있다. 따라서, 협업 서비스(128M)는 다른 워크시트들에 나오는 행들(602 및 602N)에 대응하는 새로운 행(602M)으로 Miriam의 워크시트(518)를 업데이트시킨다. 보다 상세하게는, 식별자(예를 들어, row_id 파라미터)가 Miriam의 새로운 행(602M)을 마스터 테이블 내의 대응하는 행(602N) 및 Steve의 워크시트 내의 대응하는 행(602)에 링크 또는 연계시킬 수 있다. 이와 같이, Miriam의 워크시트가 Redmond에 있는 20개 "Bar" 항목들을 반영하도록 업데이트된다.
새로운 행들/셀들로 Miriam을 업데이트시키는 것에 부가하여, 마스터 워크시트(502)는 또한 Steve의 변경들에 응답하여 calc 열(504)을 재계산하고 재계산된 값들로 Steve 및 Miriam의 테이블들 및 워크시트들을 업데이트시킨다. 도 7은 Steve의 워크시트(516)로 전달되는 calc 열에 대한 업데이트들을 704로 나타내고 Miriam의 워크시트(518)로 전달되는 calc 열에 대한 업데이트들을 706으로 나타내고 있다. 업데이트들(702, 704 및 706)은 도 4에 도시된 마스터 테이블 업데이트들(424 및 426)의 일례들을 제공한다. 그렇지만, 도 7은 다양한 클라이언트 테이블들에 대한 서로 다른 유형의 업데이트들을 개별적으로 설명하는 것을 용이하게 해주기 위해 새로운 숫자들을 갖는 이 업데이트들을 참조한다.
Steve의 워크시트(516)에서, 업데이트(704)에 응답하여, 협업 서비스(128A)는, 셀(708A)이 마스터 테이블 셀(604) 내의 수식에 의해 계산된 calc 값을 포함하도록, calc 열(504A)을 업데이트시킨다. 도시된 일례에서, 셀(708A)은 값 '8000'을 포함하고 있다. Miriam의 워크시트(518)에서, 업데이트들(702 및 704)에 응답하여, 협업 서비스(128M)는, 셀(708M)이 마스터 테이블 셀(604)에 의해 계산된 calc 값(예를 들어, '8000')을 포함하도록, calc 열(504M)을 업데이트시킨다. calc 열이 이제 새로운 값(즉, 708M에서의 값 '8000')을 포함하기 때문에, Miriam의 행(520)이, 셀(710) 내의 업데이트된 합산 '10300'으로 나타낸 바와 같이, 로컬적으로 업데이트된다.
도 5의 설명으로부터 Miriam의 테이블이 "Bar"라는 항목들에 귀속될 수 있는 계산된 값들을 합산하기 위해 행(522)을 포함한다는 것을 상기해보자. 새로운 셀(708M) 내의 값 '8000'에 응답하여, 셀(524)은 이 값과 셀(712) 내의 기존의 값 '2000'을 합산하여, 업데이트된 총계 '10000'를 얻는다. 행 및 셀 변경들이 다수의 협업하는 클라이언트들에 걸쳐 전파되는 것의 상기 일례들에 대해 설명하였으며, 이제부터 다양한 유형의 변경들의 보다 상세한 일례들에 대해 설명하기로 한다.
행들을 추가 및 삭제하는 동작들이 영향을 받는 행들에 대한 관련 row_id 정보를 전송하는 것을 포함할 수 있다. 클라이언트 테이블이 공유된 클라이언트 테이블로부터 행을 삭제할 때, 클라이언트는 그 row_ids 를 갖는 통지를 서버로 전송할 수 있다. 그에 응답하여, 공유된 클라이언트 테이블에 연계되어 있는 마스터 테이블 및 다른 클라이언트 테이블들이 그 row_id를 갖는 행에 대해 테이블 행 삭제 동작(table row delete operation)을 수행할 수 있다.
클라이언트 테이블이 그 테이블의 끝에 새로운 행을 삽입 또는 추가할 때, 클라이언트 테이블은 그 새로운 행에 대한 임시적인 row_id를 발생할 수 있다. 클라이언트 테이블은 이어서 임시적인 row_id를 참조하는 행 추가 통지(add row notification)를 서버로 전송할 수 있다. 서버는 클라이언트 테이블(및 다른 서버 또는 클라이언트 테이블들)이 새로운 행에 대해 나중에 사용하게 될 영구적인 row_ids를 발생하여 반환할 수 있다. 마스터 테이블 및 마스터 테이블에 연계되어 있는 다른 클라이언트 테이블들은 나중에 영구적인 row_ids를 갖는 새로운 행을 그들의 테이블들에 추가한다. 새로운 행의 테이블 내에서의 위치가 전송되거나 전송되지 않을 수 있다. 통상적으로, 새로운 행은 각각의 테이블의 하단에, 사용자가 새로운 행을 동시에 추가하고 있는 경우 아마도 상부에 나타날 수 있다. 어떤 구현들에서, 새로운 행 통지와 함께 서버로 전송하기 위한 어떤 데이터가 이용가능할 때까지, 새로운 행 통지가 클라이언트에서 보류될 수 있다.
적어도 어떤 구현들에서, 예를 들어, 사실상 특정의 클라이언트들에서의 로컬 지정들[예를 들어, 도 3에서의 지정들(310 및 318)]에 응답하여, 클라이언트 테이블의 로컬 인스턴스에만 정렬이 적용된다. 이와 같이, 서로 다른 사용자들이 그 자신의 정렬들을 그 자신의 클라이언트 테이블들에 적용할 수 있다. 새로운 행들이 나타날 때, 그 새로운 행들이 즉각 정렬되지 않을 수 있고, 데이터가 변할 때 정렬이 자동으로 적용되지도 않는다. 이 방식은 사용자가 데이터를 입력하는 동안 영향을 받는 테이블 내에서의 사용자의 위치가 사용자에 의해 변하는 것을 방지할 수 있다. 편집들 또는 삽입들이 완료되면, 사용자는 자신의 정렬을 재적용하기 위해 적극적으로 행동할 수 있다. 클라이언트측 서비스들은, 새로운 데이터가 도착시에 자동으로 정렬되도록, 항상-정렬 옵션(always-sort option)을 사용자에게 제공할 수 있다. 이 옵션은 데이터 입력을 수행하지 않고 분석을 수행하는 클라이언트들에게 매력적일 수 있다.
클라이언트측 서비스들은 정렬처럼 거동할 수 있는 필터링 기능을 제공할 수 있다. 필터링 기능은 특정의 클라이언트들에서의 로컬 지정들(예를 들어, 도 3에서의 310 및 318)에 응답하여 수행될 수 있다. 서로 다른 사용자들이, 다른 사용자들에 영향을 주지 않고, 그 자신의 필터들을 지정할 수 있다. 정렬과 마찬가지로, 필터들도 사용자가 데이터를 입력할 때 데이터의 위치가 항상 변하게 하지 않도록 구성될 수 있다. 항상-필터링(always filter) 옵션은 항상-정렬 옵션과 유사한 가치를 가질 수 있다.
클라이언트측 서비스들은 하나 이상의 열들에 나타나는 값들을 합산하는 총계-행 기능(total-row capability)을 제공할 수 있다. 이 총계-행 기능은 클라이언트 테이블에 로컬일 수 있고(예를 들어, 로컬 지정들에 응답함), 사용자들은 그것을 열람하거나 볼지 여부를 선택한다. 유사한 고려사항들이 소계 구하기(sub-totaling) 기능들에 적용될 수 있다.
서로 다른 사용자들이 어느 테이블 스타일(table style)이 자신의 클라이언트 테이블들에 적용되는지를 선택할 수 있다. 이 테이블 스타일들은 서로 다른 사용자들에게 디스플레이되는 클라이언트 테이블들에 로컬적으로 적용되는 특정의 경계들, 음영, 컬러들, 하이라이팅, 또는 기타 시각적 커스텀화들을 지정할 수 있다. 한 클라이언트에서 (예를 들어, 로컬 지정들에 응답하여) 적용되는 로컬 커스텀화들이 통상적으로 다른 클라이언트들에서 제시되는 디스플레이들에 영향을 미치지 않는다.
사용자들은, 마스터 테이블에 영향을 미치지 않고, 자신의 클라이언트 테이블의 열들을 재정렬(reorder)할 수 있다. 이 사용자들은 또한, 마스터 테이블에 영향을 미치지 않고, 원하는 바에 따라 열들을 삭제할 수 있다.
주어진 클라이언트 테이블이 하나 이상의 calc 열들을 포함하는 것으로 가정하면, 클라이언트측 서비스들은, 소비자 스키마 변경 프로토콜(consumer schema change protocol)을 통하는 것을 제외하고는, 클라이언트 테이블의 사용자가 그 클라이언트 테이블 내의 calc 열들을 편집하고 그 변경들을 다시 마스터 테이블로 푸시할 수 있게 해주지 않을 수 있다. 이러한 프로토콜 이외에는, 열들이 읽기전용(readonly)으로 취급될 수 있다.
calc 열들이 오로지 주어진 테이블에 내부적인 의존관계들만을 포함하는 경우(예를 들어, 테이블 내의 2개의 열을 곱하는 것), 오프라인 처리에서 더 빠른 피드백 및 더 나은 경험을 제공하기 위해, calc 열들에 대한 업데이트들이 마스터 테이블로부터 클라이언트 테이블들로 푸시다운(push down)될 수 있다. 마스터 테이블은, 외부적인 의존관계들을 갖는 calc 열들에 대해 이후에 기술되는 특징들과 유사하게, 이 calc 열들에 대한 수식들을 푸시다운하지 않는 옵션을 제공할 수 있다.
calc 열들이 주어진 테이블에 외부적인 적어도 하나의 의존관계들을 포함하는 경우, 소비측 클라이언트 테이블들은 통상적으로 그 의존관계들을 평가하지 않는다. 그 대신에, 서버가 이 calc 열들을 평가하고 그 결과 값들을 소비측 클라이언트 테이블들로 푸시다운할 수 있다. 예를 들어, 이 calc 열들이 독점적 수식들(proprietary formulas)을 포함할 수 있고, 이 메카니즘은, 그 독점적 수식들을 실제로 제공하거나 노출시키지 않고, 그 독점적 수식들을 사용하여 계산되는 클라이언트 테이블 값들을 전송하는 방법을 제공한다. 전체적인 워크북 recalc보다는 이 열들 내의 값들만이 클라이언트들로 전송되기 때문에, 네트워크 볼륨들(network volumes)이 감소되고 임의의 로컬 계산들이 클라이언트 테이블들을 소비하는 워크북들에서 행해질 수 있다. calc 열들이 예외들을 갖고 외부적인 의존관계들을 포함하는 경우, 소비측 클라이언트 테이블들은 그 예외들을 모르고 있을 수 있으며, 그 예외들에 대한 계산된 값들을 수신하게 된다. 예외들이 소비측 클라이언트 테이블로 전송되는 열에 있는 경우, 예외 수식들도 역시 전송될 수 있다.
클라이언트 테이블은 그 클라이언트 테이블에만 존재하는 calc 열을 추가할 수 있다. 클라이언트 테이블 로컬 calc 열은, 새로운 행들이 나타날 때, 로컬적으로 계산되고 유지되는 calc 열들로 이러한 calc 열들을 로컬적으로 채울 수 있다.
동일한 마스터 워크북으로부터의 다수의 마스터 테이블들이 동일한 클라이언트 워크북에서 소비되는 경우, 클라이언트 워크북 내의 참조들이, 다시 마스터 워크북을 참조하지 않고, 클라이언트에서 로컬적으로 해결(resolve)될 수 있다. 따라서, 이 참조들에 기초한 임의의 수식들이, 마스터 워크북과의 통신이라는 오버헤드를 야기함이 없이, 클라이언트에서 로컬적으로 계산될 수 있다.
일반적으로, 서로 다른 클라이언트 테이블들에 개별적으로 포맷팅이 적용된다. 따라서, 주어진 클라이언트 테이블 내의 셀을 포맷팅하는 것은 클라이언트 테이블의 그 인스턴스만을 포맷팅한다. 이하는 여러 실시예들에서 적용될 수 있는 몇몇 예외들이다:
- 마스터 테이블에서의 열에 적용되는 숫자 포맷팅이 그 열에 적용하기 위해 스키마의 일부로서 소비측 클라이언트 테이블들 전부에 이용가능하게 될 수 있다.
- 블록 레벨 포맷들 및 셀들에 대한 포맷들이 최하위 레벨 우선순위 포맷팅(lowest level priority formatting)으로서 소비측 클라이언트 테이블들로 전파될 수 있다.
- 마스터 테이블들에 대해 평가된 조건부 포맷들(conditional formats)이 정적 마스터 포맷팅(static master formatting)보다 높은 우선순위 레벨로서 소비측 클라이언트 테이블들로 전파될 수 있다.
- 마스터 테이블에 대한 옵션이 인에이블될 수 있으며, 따라서 그 옵션이 인에이블되어 있는 경우, 사용자들이 소비측 클라이언트 테이블들에서 포맷팅에 행하는 변경들이 다시 마스터 테이블로 전송되어 마스터 테이블에 적용될 수 있다.
- 마스터 테이블이 포맷팅을 클라이언트 테이블들로 전송할 수 있다. 어떤 경우들에, 이 포맷팅은 조건부 포맷팅(conditional formatting)일 수 있다. 어떤 경우들에, 특정의 클라이언트는 그 클라이언트에서의 포맷팅에 대한 로컬 지정들(예를 들어, 도 3에서의 310 및 318)을 정의할 수 있다. 이 경우들에서, 그 클라이언트에 있는 협업 서비스 모듈(예를 들어, 128)은 마스터 테이블로부터 전송된 포맷팅을 클라이언트에서의 로컬 지정들에 의해 정의된 포맷팅과 일치시킬 수 있다.
클라이언트 테이블 내에서 고유 식별자들(예를 들어, row_ids)에 기초한 추적이 사용자가 오프라인 모드에 있는 동안에 유지될 수 있다. 나중에, 사용자가 온라인일 때, 이 추적은 마스터 테이블에서 그 이후에 일어난 변경들로 조정될 수 있다.
사용자가 마스터 워크북을 열 특권을 갖는 경우, 사용자는 스키마 변경을 하기 위해 마스터 테이블을 편집할 수 있다. 이러한 스키마 변경의 일례들로는 다음과 같은 것들이 있을 수 있다:
- 열 삭제,
- 열 추가, 또는
- 계산된 열 계산의 변경, 기타.
사용자가 이 변경들을 커밋(commit)할 때, 그 변경들의 효과는, 그 변경들이 그 다음에 마스터 테이블과 동기화될 때, 모든 소비측 클라이언트 테이블들에 적용될 수 있다.
사용자가 자신이 소비하고 있는 마스터 테이블의 스키마를 변경하고자 한다는 의사 표시를 하는 경우, 협업 서비스는, 사용자의 퍼미션(permission) 및 이러한 동작들을 허용하기 위한 마스터 테이블에 대한 설정에 따라, 그렇게 하도록 허가할 수 있다. 클라이언트측 서비스들은 사용자의 로컬 변경들을 마스터 테이블로 전송할 수 있으며, 이 경우 사용자의 로컬 변경들이 마스터 테이블을 변경하는 것과 유사하게 적용된다.
본 명세서에 기술된 도구들 및 기법들이 Microsoft로부터 입수가능한 SHAREPOINT™ 플랫폼 또는 경쟁 플랫폼들 등의 포털-기반 협업(portal-based collaboration) 및 문서 관리 플랫폼들에서 동작할 수 있다. 예를 들어, SHAREPOINT™ 기술들에서의 리스트들은 데이터를 저장 및 편집하는 것을 가능하게 해주며 또 스프레드시트 애플리케이션들 이외에서 사용가능하다. 어떤 경우들에, 이 플랫폼들은 본 명세서에서의 도구들 및 기법들이 마스터 테이블 상에 데이터베이스 API들을 노출시켜 다른 기술들이 그 API들을 사용할 수 있게 해줄 수 있다. 어떤 경우들에, 리스트(List)는 마스터 테이블에 연계되어 있을 수 있으며, 이 리스트는 마스터 테이블이 변경될 때 업데이트된다. 이 특징에 의해, 마스터 테이블이 업데이트될 때 리스트가 업데이트들을 수신하거나, 리스트가 변할 때 마스터 테이블이 리스트로부터 업데이트들을 수신할 수 있다. 충돌이, 어떤 경우들에, UI에 의해 또는 행들의 특정의 마킹(marking)에 의해 처리될 수 있다.
본 명세서에 제공된 발명 대상이 컴퓨터의 구조적 특징들, 방법적 동작들 및 컴퓨터 판독가능 매체와 관련하여 기술되어 있지만, 첨부된 청구항들에 정의된 본 발명이 본 명세서에 기술된 특정의 특징들, 동작들 또는 매체들로 반드시 제한되는 것은 아니라는 것을 잘 알 것이다. 오히려, 특정의 특징들, 동작들 및 매체들은 청구항들을 구현하는 예시적인 형태로서 개시되어 있다.
상기한 발명 대상이 단지 예시로서 제공된 것이며 제한하는 것으로 해석되어서는 안된다. 도시되고 기술된 예시적인 실시예들 및 응용들을 따르지 않고 또 이하의 청구항들에 기술되어 있는 본 발명의 진정한 사상 및 범위를 벗어나지 않고, 본 명세서에 기술된 발명 대상에 다양한 수정 및 변경이 행해질 수 있다.
Claims (20)
- 적어도 부분적으로 제1 클라이언트 시스템(128N)이 액세스하도록 게시된 스프레드시트 내의 적어도 하나의 구조화된 데이터 요소(212)를 수신하는 단계(214),
상기 구조화된 데이터 요소에 대응하는 각자의 고유 식별자(216)를 정의하는 단계,
상기 구조화된 데이터 요소 및 상기 고유 식별자를 적어도 제2 클라이언트 시스템(128A)으로 전송하는 단계(234),
적어도 상기 제1 클라이언트 시스템 및 상기 제2 클라이언트 시스템이 상기 구조화된 데이터 요소에 협업적으로 액세스할 수 있게 해주는 단계(402 및 414),
상기 클라이언트 시스템들 중 하나의 클라이언트 시스템으로부터 상기 데이터 요소에 대한 적어도 하나의 업데이트(408 또는 420)를 수신하는 단계(410) - 상기 업데이트는 상기 고유 식별자를 참조함 -, 및
상기 고유 식별자에 적어도 부분적으로 기초하여, 적어도 상기 데이터 요소를 포함하는 마스터 테이블(118)에 상기 업데이트를 병합시키는 단계(412)를 포함하는 방법. - 제1항에 있어서, 데이터를 전송하는 것은 데이터를 적어도 하나의 네트워크를 통해 상기 제2 클라이언트 시스템으로 전송하는 것을 포함하는 것인 방법.
- 제1항에 있어서, 적어도 상기 구조화된 데이터 요소의 선택을 수신하는 단계를 더 포함하고,
상기 선택이 상기 구조화된 데이터 요소에 대응하는 상기 고유 식별자를 참조하는 것인 방법. - 제1항에 있어서, 구조화된 데이터 요소들의 마스터 컬렉션(master collection)으로부터 상기 구조화된 데이터 요소를 검색하는 단계를 더 포함하는 방법.
- 제1항에 있어서, 상기 구조화된 데이터 요소들을 포함하는 라이브러리의 표현들을 상기 제2 클라이언트 시스템으로 전송하는 단계를 더 포함하고,
상기 구조화된 데이터 요소들이 다른 클라이언트 시스템들과의 협업을 위해 게시되며,
복수의 구조화된 데이터 요소들이 각자의 고유 식별자들과 연관되어 있는 것인 방법. - 제1항에 있어서, 적어도 추가의 클라이언트 시스템으로부터 상기 데이터 요소에 대한 적어도 추가의 업데이트를 수신하는 단계를 더 포함하고,
상기 추가의 업데이트가 상기 데이터 요소에 대한 상기 고유 식별자를 참조하는 것인 방법. - 제6항에 있어서, 상기 고유 식별자에 적어도 부분적으로 기초하여, 상기 데이터 요소에 대한 적어도 상기 추가의 업데이트를 상기 마스터 테이블에 병합시키는 단계를 더 포함하는 방법.
- 제1항에 있어서, 상기 업데이트를 적어도 상기 클라이언트 시스템들 중 다른 클라이언트 시스템에 게시하는 단계를 더 포함하는 방법.
- 제1항에 있어서, 상기 구조화된 데이터 요소를 전송하는 단계가 상기 스프레드시트 내에 정의된 워크북의 적어도 일부분을 전송하는 단계를 포함하는 것인 방법.
- 제1항에 있어서, 적어도 하나의 클라이언트 테이블로부터 수신된 적어도 하나의 값을 참조함으로써 마스터 테이블 내의 적어도 하나의 열을 계산하는 단계를 더 포함하는 방법.
- 스프레드시트 내에 정의된 복수의 구조화된 데이터 요소들의 표현들을 제공하는 사용자 인터페이스(202)를 제시하는 단계,
게시를 위한 상기 구조화된 데이터 요소들 중 적어도 하나의 구조화된 데이터 요소의 선택(206)을 수신하는 단계(208),
게시를 위한 상기 선택된 구조화된 데이터 요소들(212)을 표현하는 데이터를 전송하는 단계(210), 및
상기 선택된 구조화된 데이터 요소들과 연관된 고유 식별자를 수신하는 단계를 포함하는 방법. - 제11항에 있어서, 상기 구조화된 데이터 요소들이 상기 스프레드시트의 적어도 일부를 포함하고,
상기 선택된 구조화된 데이터 요소들을 표현하는 데이터를 전송하는 단계가 상기 구조화된 데이터 요소들을 적어도 하나의 클라이언트 시스템에 게시하기 위해 상기 데이터를 네트워크를 통해 적어도 하나의 서버 시스템으로 전송하는 단계를 포함하는 것인 방법. - 제11항에 있어서, 상기 선택된 구조화된 데이터 요소들을 표현하는 데이터를 전송하는 단계가, 상기 클라이언트 시스템이 상기 구조화된 데이터 요소들에 액세스하여 업데이트시킬 수 있도록, 상기 데이터를 네트워크를 통해 적어도 하나의 클라이언트 시스템으로 전송하는 단계를 포함하는 것인 방법.
- 제11항에 있어서, 상기 구조화된 데이터 요소들에 대한 적어도 하나의 업데이트를 수신하는 단계 - 상기 업데이트가 상기 구조화된 데이터 요소들에 대한 적어도 하나의 클라이언트 시스템과의 협업으로부터 발생됨 -, 및
상기 고유 식별자를 사용하여 상기 업데이트를 상기 구조화된 데이터 요소에 병합시키는 단계를 더 포함하는 방법. - 클라이언트 시스템들(104)이 적어도 부분적으로 다른 클라이언트 시스템들과의 협업을 위해 게시한 스프레드시트들 내의 구조화된 데이터 요소들(216)의 라이브러리를 제공하는 사용자 인터페이스(218)를 제시하는 단계,
사용자로부터 상기 구조화된 데이터 요소들 중 적어도 하나의 구조화된 데이터 요소의 선택(222)을 수신하는 단계(224), 및
상기 선택된 구조화된 데이터 요소를 요청하는 단계(226)를 포함하며,
상기 선택이 상기 선택된 구조화된 데이터 요소와 연관된 고유 식별자(228)를 참조하는 것인 방법. - 제15항에 있어서, 상기 스프레드시트의 적어도 일부분으로부터의 상기 선택된 구조화된 데이터 요소를 수신하는 단계를 더 포함하고,
사실상 하나 이상의 클라이언트들에서의 로컬 지정들에 응답하여, 로컬 포맷팅(local formatting), 로컬 정렬(local sorting), 또는 로컬 필터링(local filtering)을 상기 구조화된 데이터 요소에 적용하는 단계를 더 포함하는 방법. - 제15항에 있어서, 상기 선택된 데이터 요소의 적어도 일부를 업데이트시키는 단계 - 상기 선택된 데이터 요소는 계산된 열을 포함함 - 를 더 포함하고,
상기 계산된 열의 업데이트를 수신하는 단계 - 상기 계산된 열은 상기 업데이트시키는 단계에 응답하여 재계산됨 - 를 더 포함하는 방법. - 제17항에 있어서, 상기 구조화된 데이터 요소의 적어도 일부를 업데이트시키는 단계가 클라이언트에 의해 로컬적으로 유지되는 데이터에 기초하여, 그리고 상기 클라이언트 외부에 있는 소스로부터 수신된 데이터에 기초하여 상기 구조화된 데이터 요소를 업데이트시키는 단계를 포함하는 것인 방법.
- 제17항에 있어서, 상기 라이브러리 내의 상기 구조화된 데이터 요소들과 연관된 각자의 고유 식별자들을 유지하는 단계를 더 포함하고,
상기 선택된 데이터 요소를 업데이트시키는 단계가 상기 업데이트된 데이터 요소와 연관된 고유 식별자를 참조하는 단계를 포함하는 것인 방법. - 제17항에 있어서, 상기 구조화된 데이터 요소의 적어도 일부를 업데이트시키는 단계가 마스터 테이블에 의해 정의되는 계산된 열의 로컬 값을 계산하는 단계를 포함하는 것인 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/014,727 | 2008-01-15 | ||
US12/014,727 US8862979B2 (en) | 2008-01-15 | 2008-01-15 | Multi-client collaboration to access and update structured data elements |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100113080A true KR20100113080A (ko) | 2010-10-20 |
KR101581970B1 KR101581970B1 (ko) | 2015-12-31 |
Family
ID=40851572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020107015130A KR101581970B1 (ko) | 2008-01-15 | 2008-12-24 | 구조화된 데이터 요소들에 대한 액세스 및 업데이트를 위한 멀티-클라이언트 협업 |
Country Status (12)
Country | Link |
---|---|
US (2) | US8862979B2 (ko) |
EP (1) | EP2248035B1 (ko) |
JP (1) | JP5369116B2 (ko) |
KR (1) | KR101581970B1 (ko) |
CN (1) | CN101911046B (ko) |
AU (1) | AU2008348060B2 (ko) |
BR (1) | BRPI0821497A2 (ko) |
CA (1) | CA2707972C (ko) |
IL (1) | IL206094A (ko) |
RU (1) | RU2504001C2 (ko) |
WO (1) | WO2009091488A2 (ko) |
ZA (1) | ZA201003842B (ko) |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7627810B2 (en) * | 2000-08-29 | 2009-12-01 | Open Text Corporation | Model for creating, inputting, storing and tracking multimedia objects |
US7707249B2 (en) * | 2004-09-03 | 2010-04-27 | Open Text Corporation | Systems and methods for collaboration |
US7702730B2 (en) * | 2004-09-03 | 2010-04-20 | Open Text Corporation | Systems and methods for collaboration |
US20090249446A1 (en) * | 2007-10-22 | 2009-10-01 | Paul Thomas Jenkins | Method and system for managing enterprise content |
US9461834B2 (en) | 2010-04-22 | 2016-10-04 | Sharp Laboratories Of America, Inc. | Electronic document provision to an online meeting |
WO2021144656A1 (en) | 2020-01-15 | 2021-07-22 | Monday.Com | Digital processing systems and methods for graphical dynamic table gauges in collaborative work systems |
WO2021099839A1 (en) | 2019-11-18 | 2021-05-27 | Roy Mann | Collaborative networking systems, methods, and devices |
WO2021161104A1 (en) | 2020-02-12 | 2021-08-19 | Monday.Com | Enhanced display features in collaborative network systems, methods, and devices |
US11410129B2 (en) | 2010-05-01 | 2022-08-09 | Monday.com Ltd. | Digital processing systems and methods for two-way syncing with third party applications in collaborative work systems |
US20120013539A1 (en) * | 2010-07-13 | 2012-01-19 | Hogan Edward P A | Systems with gesture-based editing of tables |
US9721030B2 (en) * | 2010-12-09 | 2017-08-01 | Microsoft Technology Licensing, Llc | Codeless sharing of spreadsheet objects |
US9053117B2 (en) | 2012-04-11 | 2015-06-09 | 4Clicks Solutions, LLC | Storing application data with a unique ID |
US20140082470A1 (en) * | 2012-09-19 | 2014-03-20 | 4Clicks Solutions, LLC | Spreadtree hierarchy system for spreadsheets and related methods |
US9460073B2 (en) | 2013-02-27 | 2016-10-04 | Google Inc. | Systems and methods for mutations and operational transforms in a collaborative spreadsheet environment |
US9785956B2 (en) * | 2013-09-26 | 2017-10-10 | Revimedia, Inc. | System and method of enhancing a lead exchange process |
US10225352B2 (en) * | 2013-12-20 | 2019-03-05 | Sony Corporation | Work sessions |
FR3017454B1 (fr) * | 2014-02-12 | 2017-08-25 | Schneider Electric Ind Sas | Dispositif electronique de mesure apte a afficher des donnees sous forme d'un code matriciel a deux dimensions, lecteur electronique, installation electronique et procede de transmission associes |
US10291664B2 (en) * | 2014-05-30 | 2019-05-14 | Brigham Young University | Collaborative project modification |
JP6004454B2 (ja) | 2014-09-25 | 2016-10-05 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | データベースへのアクセスを制御する装置及び方法 |
CN104991886B (zh) * | 2015-07-22 | 2018-05-22 | 网易(杭州)网络有限公司 | 一种数据表的编辑方法、装置与系统 |
US11929149B2 (en) | 2015-08-06 | 2024-03-12 | Arc Bio, Llc | Systems and methods for genomic analysis |
US10915584B2 (en) * | 2015-09-22 | 2021-02-09 | Dropbox, Inc. | Event-related document generation |
US11210459B1 (en) | 2016-09-23 | 2021-12-28 | Massachusetts Mutual Life Insurance Company | Systems, devices, and methods for software coding |
US10540152B1 (en) | 2016-09-23 | 2020-01-21 | Massachusetts Mutual Life Insurance Company | Systems, devices, and methods for software coding |
US11138370B1 (en) | 2016-09-23 | 2021-10-05 | Massachusetts Mututal Life Insurance Company | Modifying and using spreadsheets to create a GUI on another device |
US11170164B2 (en) * | 2016-12-11 | 2021-11-09 | DataRails LTD. | System and method for cell comparison between spreadsheets |
US10496737B1 (en) | 2017-01-05 | 2019-12-03 | Massachusetts Mutual Life Insurance Company | Systems, devices, and methods for software coding |
US10977242B2 (en) * | 2017-09-07 | 2021-04-13 | Atlassian Pty Ltd. | Systems and methods for managing designated content items |
US11436359B2 (en) | 2018-07-04 | 2022-09-06 | Monday.com Ltd. | System and method for managing permissions of users for a single data type column-oriented data structure |
US11698890B2 (en) | 2018-07-04 | 2023-07-11 | Monday.com Ltd. | System and method for generating a column-oriented data structure repository for columns of single data types |
US10592485B1 (en) * | 2018-12-31 | 2020-03-17 | Atlassian Pty Ltd | Property-based deletion of digital data |
US11755825B2 (en) * | 2019-09-12 | 2023-09-12 | Workiva Inc. | Method, system, and computing device for facilitating private drafting |
US11361156B2 (en) | 2019-11-18 | 2022-06-14 | Monday.Com | Digital processing systems and methods for real-time status aggregation in collaborative work systems |
GB202002163D0 (en) * | 2020-02-17 | 2020-04-01 | Microsoft Technology Licensing Llc | Spreadsheet with reuse functionality |
EP4143732A1 (en) | 2020-05-01 | 2023-03-08 | Monday.com Ltd. | Digital processing systems and methods for enhanced collaborative workflow and networking systems, methods, and devices |
US20240184989A1 (en) | 2020-05-01 | 2024-06-06 | Monday.com Ltd. | Digital processing systems and methods for virtualfile-based electronic white board in collaborative work systems systems |
US11277361B2 (en) | 2020-05-03 | 2022-03-15 | Monday.com Ltd. | Digital processing systems and methods for variable hang-time for social layer messages in collaborative work systems |
US11443108B2 (en) | 2020-08-17 | 2022-09-13 | Workiva Inc. | System and method for document management using branching |
US11100281B1 (en) | 2020-08-17 | 2021-08-24 | Workiva Inc. | System and method for maintaining links and revisions |
CN112416401B (zh) * | 2020-11-23 | 2023-10-27 | 北京奇艺世纪科技有限公司 | 一种数据更新方法、装置及设备 |
US11531452B2 (en) | 2021-01-14 | 2022-12-20 | Monday.com Ltd. | Digital processing systems and methods for group-based document edit tracking in collaborative work systems |
US11100277B1 (en) | 2021-02-15 | 2021-08-24 | Workiva Inc. | Systems, methods, and computer-readable media for flow-through formatting for links |
WO2022212024A1 (en) * | 2021-03-31 | 2022-10-06 | Microsoft Technology Licensing, Llc | Dynamically limiting the scope of spreadsheet recalculations |
US11354362B1 (en) | 2021-05-06 | 2022-06-07 | Workiva Inc. | System and method for copying linked documents |
US12056664B2 (en) | 2021-08-17 | 2024-08-06 | Monday.com Ltd. | Digital processing systems and methods for external events trigger automatic text-based document alterations in collaborative work systems |
US11640495B1 (en) | 2021-10-15 | 2023-05-02 | Workiva Inc. | Systems and methods for translation comments flowback |
US12105948B2 (en) | 2021-10-29 | 2024-10-01 | Monday.com Ltd. | Digital processing systems and methods for display navigation mini maps |
US11599718B1 (en) | 2022-03-23 | 2023-03-07 | Acuitive Solutions, Inc. | Database system for storing electronic spreadsheets |
US11741071B1 (en) | 2022-12-28 | 2023-08-29 | Monday.com Ltd. | Digital processing systems and methods for navigating and viewing displayed content |
US11886683B1 (en) | 2022-12-30 | 2024-01-30 | Monday.com Ltd | Digital processing systems and methods for presenting board graphics |
US11893381B1 (en) | 2023-02-21 | 2024-02-06 | Monday.com Ltd | Digital processing systems and methods for reducing file bundle sizes |
US12056255B1 (en) | 2023-11-28 | 2024-08-06 | Monday.com Ltd. | Digital processing systems and methods for facilitating the development and implementation of applications in conjunction with a serverless environment |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001093103A1 (en) * | 2000-05-30 | 2001-12-06 | Outlook Soft Corporation | Method and system for facilitating information exchange |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06250907A (ja) | 1993-02-26 | 1994-09-09 | Nec Corp | 分散協調作業支援装置 |
CA2160343C (en) | 1993-04-13 | 2002-07-16 | Peter J. Ahimovic | System for computer supported collaboration |
US5956715A (en) | 1994-12-13 | 1999-09-21 | Microsoft Corporation | Method and system for controlling user access to a resource in a networked computing environment |
US6009266A (en) * | 1995-03-22 | 1999-12-28 | Sun Microsystems, Inc. | Methods, apparatus and data structures for managing objects |
JP2701814B2 (ja) | 1995-11-28 | 1998-01-21 | 日本電気株式会社 | 分散ファイル管理方法 |
JPH09269912A (ja) | 1996-04-02 | 1997-10-14 | Canon Inc | 情報処理方法とその装置 |
US5926816A (en) | 1996-10-09 | 1999-07-20 | Oracle Corporation | Database Synchronizer |
US5884325A (en) * | 1996-10-09 | 1999-03-16 | Oracle Corporation | System for synchronizing shared data between computers |
JPH10287175A (ja) | 1997-04-14 | 1998-10-27 | Honda Lock Mfg Co Ltd | スライドスイッチ用操作ノブ |
JPH10289175A (ja) * | 1997-04-15 | 1998-10-27 | Canon Inc | データ通信端末装置、データ通信方法、データ表示方法および記憶媒体 |
US6640234B1 (en) * | 1998-12-31 | 2003-10-28 | Microsoft Corporation | Extension of formulas and formatting in an electronic spreadsheet |
WO2001059675A1 (en) * | 2000-02-11 | 2001-08-16 | Ryan Mark H | Method and system for distributing and collecting spreadsheet information |
US7082430B1 (en) | 2000-04-17 | 2006-07-25 | Accenture Llp | Collaboration planning in a collaborative work tool architecture |
US6681225B1 (en) * | 2000-05-31 | 2004-01-20 | International Business Machines Corporation | Method, system and program products for concurrent write access to a global data repository |
AU2001277868A1 (en) * | 2000-07-11 | 2002-01-21 | Juice Software, Inc. | A method and system for integrating network-based functionality into productivity applications and documents |
WO2002017115A2 (en) * | 2000-08-21 | 2002-02-28 | Thoughtslinger Corporation | Simultaneous multi-user document editing system |
US6988241B1 (en) * | 2000-10-16 | 2006-01-17 | International Business Machines Corporation | Client side, web-based spreadsheet |
US6636875B1 (en) * | 2000-10-25 | 2003-10-21 | International Business Machines Corporation | System and method for synchronizing related data elements in disparate storage systems |
US8275974B2 (en) * | 2001-01-16 | 2012-09-25 | Outlooksoft Corporation | Systems and methods providing dynamic spreadsheet functionality |
JP4129353B2 (ja) | 2001-03-29 | 2008-08-06 | 株式会社東芝 | 分散データ管理システム、分散データ管理方法及び分散データ管理プログラム |
JP4131780B2 (ja) * | 2001-03-30 | 2008-08-13 | 株式会社東芝 | 分散トランザクション処理システム、分散トランザクション処理方法及び分散トランザクション処理プログラム |
US7415664B2 (en) * | 2001-08-09 | 2008-08-19 | International Business Machines Corporation | System and method in a spreadsheet for exporting-importing the content of input cells from a scalable template instance to another |
US20030065527A1 (en) * | 2001-09-28 | 2003-04-03 | Zerotime Labs, L.L.C. | Financial transfer modeling editor system and method |
US20030179230A1 (en) | 2002-03-25 | 2003-09-25 | Gerry Seidman | Method and apparatus for providing remote peer-to-peer collaborative user interfaces |
CN1647058A (zh) * | 2002-04-25 | 2005-07-27 | 国际商业机器公司 | 协作服务器、协作系统和会话管理方法 |
US7233951B1 (en) * | 2004-02-18 | 2007-06-19 | Microsoft Corporation | Spreadsheet grid-like control for a web-based collaboration system |
US7225189B1 (en) * | 2004-02-19 | 2007-05-29 | Microsoft Corporation | Data source write back and offline data editing and storage in a spreadsheet |
US7640343B2 (en) * | 2004-05-27 | 2009-12-29 | Microsoft Corporation | Using resource item lists to consume resource items |
US7702730B2 (en) * | 2004-09-03 | 2010-04-20 | Open Text Corporation | Systems and methods for collaboration |
US20070100834A1 (en) * | 2004-09-15 | 2007-05-03 | John Landry | System and method for managing data in a distributed computer system |
US7533139B2 (en) | 2004-09-27 | 2009-05-12 | Microsoft Corporation | Method and system for multithread processing of spreadsheet chain calculations |
US7533420B2 (en) * | 2004-12-09 | 2009-05-12 | Microsoft Corporation | System and method for restricting user access to a network document |
US8370317B2 (en) * | 2005-09-22 | 2013-02-05 | Microsoft Corporation | Synchronizing shared resources in a collection |
JP2007094572A (ja) | 2005-09-27 | 2007-04-12 | Toshiba Corp | マスタデータ管理装置及びマスタデータ管理プログラム |
US7752230B2 (en) * | 2005-10-06 | 2010-07-06 | Avaya Inc. | Data extensibility using external database tables |
CA2524527A1 (en) * | 2005-10-26 | 2007-04-26 | Ibm Canada Limited - Ibm Canada Limitee | Systems, methods and tools for facilitating group collaborations |
US20070143674A1 (en) * | 2005-12-20 | 2007-06-21 | Kabushiki Kaisha Toshiba | LDAP based scan templates |
US20070198952A1 (en) * | 2006-02-21 | 2007-08-23 | Pittenger Robert A | Methods and systems for authoring of a compound document following a hierarchical structure |
US20070220415A1 (en) * | 2006-03-16 | 2007-09-20 | Morgan Mao Cheng | Excel spreadsheet parsing to share cells, formulas, tables or entire spreadsheets across an enterprise with other users |
US8307119B2 (en) * | 2006-03-31 | 2012-11-06 | Google Inc. | Collaborative online spreadsheet application |
US7512639B2 (en) * | 2006-06-15 | 2009-03-31 | International Business Machines Corporation | Management of time-variant data schemas in data warehouses |
US20080077628A1 (en) * | 2006-09-22 | 2008-03-27 | International Business Machines Corporation | Conflict resolution for distributed processing systems |
-
2008
- 2008-01-15 US US12/014,727 patent/US8862979B2/en active Active
- 2008-12-24 RU RU2010129240/08A patent/RU2504001C2/ru not_active IP Right Cessation
- 2008-12-24 CA CA2707972A patent/CA2707972C/en active Active
- 2008-12-24 KR KR1020107015130A patent/KR101581970B1/ko active IP Right Grant
- 2008-12-24 BR BRPI0821497-2A patent/BRPI0821497A2/pt not_active Application Discontinuation
- 2008-12-24 JP JP2010543112A patent/JP5369116B2/ja active Active
- 2008-12-24 EP EP08870885.4A patent/EP2248035B1/en active Active
- 2008-12-24 AU AU2008348060A patent/AU2008348060B2/en active Active
- 2008-12-24 WO PCT/US2008/088347 patent/WO2009091488A2/en active Application Filing
- 2008-12-24 CN CN2008801250276A patent/CN101911046B/zh active Active
-
2010
- 2010-05-28 ZA ZA2010/03842A patent/ZA201003842B/en unknown
- 2010-05-31 IL IL206094A patent/IL206094A/en active IP Right Grant
-
2014
- 2014-09-30 US US14/502,129 patent/US9880992B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001093103A1 (en) * | 2000-05-30 | 2001-12-06 | Outlook Soft Corporation | Method and system for facilitating information exchange |
Also Published As
Publication number | Publication date |
---|---|
ZA201003842B (en) | 2011-08-31 |
AU2008348060B2 (en) | 2013-05-16 |
JP2011510397A (ja) | 2011-03-31 |
AU2008348060A1 (en) | 2009-07-23 |
US9880992B2 (en) | 2018-01-30 |
US20150019947A1 (en) | 2015-01-15 |
WO2009091488A2 (en) | 2009-07-23 |
WO2009091488A3 (en) | 2009-10-01 |
CN101911046A (zh) | 2010-12-08 |
US20090182763A1 (en) | 2009-07-16 |
JP5369116B2 (ja) | 2013-12-18 |
RU2504001C2 (ru) | 2014-01-10 |
BRPI0821497A2 (pt) | 2015-06-16 |
RU2010129240A (ru) | 2012-02-27 |
KR101581970B1 (ko) | 2015-12-31 |
CA2707972A1 (en) | 2009-07-23 |
US8862979B2 (en) | 2014-10-14 |
CA2707972C (en) | 2017-01-03 |
EP2248035A4 (en) | 2018-03-07 |
EP2248035B1 (en) | 2022-09-07 |
EP2248035A2 (en) | 2010-11-10 |
CN101911046B (zh) | 2012-10-10 |
IL206094A (en) | 2017-02-28 |
IL206094A0 (en) | 2010-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101581970B1 (ko) | 구조화된 데이터 요소들에 대한 액세스 및 업데이트를 위한 멀티-클라이언트 협업 | |
US8010487B2 (en) | Synchronization and collaboration within peer-to-peer and client/server environments | |
AU2011202413B2 (en) | An automated publishing system that facilitates collaborative editing and accountability through virtual document architecture | |
US12056163B2 (en) | Collaboration activity summaries | |
CA2508933C (en) | Method, system, and apparatus for exposing workbook ranges as data sources | |
AU2017385025A1 (en) | Creating projects in a content management system | |
US20090024660A1 (en) | Automatically moving annotations associated with multidimensional data between live datacubes | |
US20060024653A1 (en) | Method, system, and apparatus for exposing workbooks as data sources | |
US20150058363A1 (en) | Cloud-based enterprise content management system | |
KR20230171986A (ko) | 동적 그래픽 컨테이너들 | |
Stefanovic et al. | Composite web information system for management of water resources | |
US11328263B2 (en) | User interfaces for filtering electronic calendar data sets | |
US10757208B2 (en) | Curating collaboration activity | |
Mariani et al. | The impact of CSCW on database technology | |
CN108984176B (zh) | 一种高自定义桌面开发系统 | |
Spence et al. | Microsoft SharePoint 2007 Unleashed | |
Prescott et al. | Using SharePoint to manage and disseminate fusion project information: An ITER case study | |
US11443108B2 (en) | System and method for document management using branching | |
US11861300B2 (en) | System and method for maintaining links and revisions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
N231 | Notification of change of applicant | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20181129 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20191127 Year of fee payment: 5 |