KR101566566B1 - 리치 클라이언트와 브라우저 클라이언트 간의 스프레드시트 협업 - Google Patents

리치 클라이언트와 브라우저 클라이언트 간의 스프레드시트 협업 Download PDF

Info

Publication number
KR101566566B1
KR101566566B1 KR1020107008515A KR20107008515A KR101566566B1 KR 101566566 B1 KR101566566 B1 KR 101566566B1 KR 1020107008515 A KR1020107008515 A KR 1020107008515A KR 20107008515 A KR20107008515 A KR 20107008515A KR 101566566 B1 KR101566566 B1 KR 101566566B1
Authority
KR
South Korea
Prior art keywords
spreadsheet
client
changes
updates
file
Prior art date
Application number
KR1020107008515A
Other languages
English (en)
Other versions
KR20100070359A (ko
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 KR20100070359A publication Critical patent/KR20100070359A/ko
Application granted granted Critical
Publication of KR101566566B1 publication Critical patent/KR101566566B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/177Editing, e.g. inserting or deleting of tables; using ruled lines
    • G06F40/18Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/93Document management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99954Version management

Abstract

클라이언트 컴퓨터들이 실시간으로 스프레드시트 파일에 관해 협업하는 기법들이 본 명세서에 개시되어 있다. 상세하게는, 수정 관리자 모듈(revision manager module)은 양호하게는 클라이언트 컴퓨터로부터 업데이트를 수신하고, 이러한 업데이트를 처리하며, 이어서 이 업데이트를 스프레드시트 파일에 적용하는 호스트 기계(host machine)를 구비하고 있다. 그에 부가하여, 클라이언트들에 의해 동시에 또는 거의 동시에 수정 관리자로 전송되는 업데이트들을 처리하는 기법이 기술되어 있다. 이 경우에, 수정 관리자는 스프레드시트 파일에 대한 업데이트들이 변환가능인지, 즉 병합될 수 있는지 여부를 판정한다. 변환가능인 경우, 업데이트들이 스프레드시트 파일 내에 결합되어 스프레드시트 파일에 적용된다. 업데이트들이 변환가능이지 않은 경우, 수정 관리자는, 변환불가능 업데이트(non-transformable update)를 스프레드시트 파일에 적용하기 전에, 모든 클라이언트들이 이전의 업데이트들 전부를 수신하였음을 확인한다.

Description

리치 클라이언트와 브라우저 클라이언트 간의 스프레드시트 협업{SPREADSHEET COLLABORATION BETWEEN RICH AND BROWSER CLIENTS}
스프레드시트 애플리케이션은 데이터를 입력, 정리, 관리, 열람, 저장 및 검색하는 편리하고 간단하며 직관적인 방식을 제공하는 흔히 사용되는 프로그램이다. 종래의 스프레드시트 애플리케이션들의 한가지 단점은 통상적으로 다수의 사용자들이 동시에 하나의 스프레드시트 파일에 관해 협업할 수 있게 해주지 못한다는 것이다. 오히려, 종래의 스프레드시트들에서는, 한명의 사용자가 파일을 열 때, 그 파일이 "잠기게(locked)" 됨으로써 파일을 열려고 시도하는 어떤 다른 사용자가 읽기-전용으로만 파일을 열 수 있으며, 이는 어떤 편집도 원본 파일에 저장되지 않는다는 것을 의미한다.
사용자들이 동시에 파일을 편집할 필요가 있을 수 있는 많은 이유들이 있다. 스프레드시트는 종종 데이터-입력 애플리케이션으로서 사용되고, 누군가가, 예를 들어, 회사 내의 모든 서로 다른 부서들로부터 모든 재무 결과를 수집하도록 스프레드시트 파일을 설정할 수 있다. 파일들은 종종 다수의 저작자를 가지며, 이들 저작자는 다른 저작자가 잠금을 해제하기를 기다릴 필요없이 스프레드시트를 마음대로 편집하고 싶어한다.
다수의 사용자들이 하나의 스프레드시트 파일에 관해 협업할 수 있게 해주는 것이 요망되는 것에 부가하여, 다수의 서로 다른 유형의 클라이언트들이 협업할 수 있게 해주는 것도 요망되고 있다. 이러한 클라이언트들은 "리치" 클라이언트(rich client) 및 "브라우저" 클라이언트(browser client) 둘 다를 포함할 수 있다. 리치 클라이언트[씨크 클라이언트(thick client) 또는 팻 클라이언트(fat client)라고도 할 수 있음]란 통상적으로 더 큰 선택폭의 특징들을 제공하고 또 통상적으로 그 자체로 더 많은 데이터 처리 동작들을 수행할 수 있고 서버에 꼭 의존해야만 하는 것은 아닌 클라이언트를 말한다. 그렇지만, 리치 클라이언트가 서버로 하여금 다양한 동작들을 수행할 수 있게 해줄 수 있는 많은 상황들이 있다. 씬 클라이언트(thin client)란 통상적으로 감소된 선택폭의 특징들을 제공하고 또 통상적으로 호스트 또는 서버 컴퓨터의 자원들에 의존하는 클라이언트를 말한다. 리치 클라이언트와 씬 클라이언트 간의 특징들의 상위 및 기타 차이점은 종종 이러한 서로 다른 클라이언트에 있는 사용자들이 협업하는 것을 어렵게 만든다.
클라이언트 컴퓨터들이 실시간으로 스프레드시트 파일에 관해 협업하는 기법들이 본 명세서에 개시되어 있다. 상세하게는, 수정 관리자 모듈(revision manager module)은 양호하게는, 클라이언트 컴퓨터로부터 업데이트를 수신하고, 이러한 업데이트를 처리하며, 이어서 이 업데이트를 스프레드시트 파일에 적용하는 호스트 기계(host machine)를 구비하고 있다. 그 후에, 수정 관리자를 폴링함으로써 최신 버전의 스프레드시트 파일이 모든 클라이언트들에게 이용될 수 있다. 수정 관리자는 모든 클라이언트들이 협업 동안에 최신 상태로 디스플레이되는 스프레드시트 파일을 가질 수 있도록 이전에 수신되지 않은 업데이트들을 각각의 클라이언트로 전송한다.
그에 부가하여, 클라이언트들에 의해 동시에 또는 거의 동시에 수정 관리자로 전송되는 업데이트들을 처리하는 기법이 기술되어 있다. 이 경우에, 수정 관리자는 스프레드시트 파일에 대한 업데이트들이 변환가능인지, 즉 병합될 수 있는지 여부를 판정한다. 변환가능인 경우, 업데이트들이 스프레드시트 파일 내에 결합되어 스프레드시트 파일에 적용된다. 업데이트들이 변환가능이지 않은 경우, 수정 관리자는, 변환불가능 업데이트(non-transformable update)를 스프레드시트 파일에 적용하기 전에, 모든 클라이언트들이 모든 이전의 업데이트들을 수신하였음을 확인한다. 이것은, 모든 기능을 변환가능이도록 만드는 것이 아주 시간이 많이 걸리는 프로세스일 수 있기 때문에, 나중의 릴리스(release)에서의 협업적 환경에서 더 많은 기능을 포함할 수 있게 해준다.
이 요약은 이하에서 상세한 설명에 더 기술되는 일련의 개념들을 간략화된 형태로 소개하기 위해 제공된 것이다. 이 요약은 청구된 발명 대상의 중요한 특징들 또는 본질적인 특징들을 확인하기 위한 것이 아니며, 청구된 발명 대상의 범위를 정하는 데 보조 수단으로 사용되기 위한 것도 아니다.
첨부된 도면들을 참조하여 이하의 상세한 설명을 읽어본 후에 예시적인 실시예들이 더 잘 이해될 것이다.
도 1은 예시적인 컴퓨팅 장치의 블록도.
도 2는 복수의 클라이언트 컴퓨터들이 스프레드시트 파일에 관해 협업하는 것을 나타낸 시스템도이며, 여기서 호스트 기계는 스프레드시트 파일에 대한 동시적인 업데이트들을 관리하는 수정 관리자 모듈을 포함함.
도 3은 수정 관리자 모듈과 함께 도 2에 도시된 클라이언트 컴퓨터들 중 2개의 클라이언트 컴퓨터로부터의 한 쌍의 스프레드시트 파일 부분도의 개략도.
도 4는 동시적인 업데이트들이 행해진 경우의, 도 3에 도시된 클라이언트 컴퓨터들에 대한 한 쌍의 스프레드시트 파일 부분도 및 수정 관리자 모듈의 개략도.
도 5는 수정 관리자 모듈이 도 4의 동시적인 업데이트들을 스프레드시트 파일에 병합한 경우의, 도 3 및 도 4에 도시된 클라이언트 컴퓨터들에 대한 한 쌍의 스프레드시트 파일 부분도 및 수정 관리자 모듈의 개략도.
도 6은 복수의 클라이언트 컴퓨터들에 의해 실시간 협업 동안에 스프레드시트 파일에 행해진 동시적인 업데이트들을 병합시키는 프로세스의 흐름도.
본 발명의 발명 대상이 법적 요건을 만족시키도록 구체적으로 기술되어 있다. 그렇지만, 이 설명 자체가 이 특허의 범위를 제한하기 위한 것은 아니다. 오히려, 현재 또는 장래의 다른 기술들과 함께 이 문서에 기술된 것과 다른 단계들 또는 기술된 것과 유사한 단계들의 조합을 포함하기 위해, 청구된 발명 대상이 다른 방식들로도 구현될 수 있음을 고려한다.
도 1은 상기한 발명 대상이 구현될 수 있는 적합한 컴퓨팅 시스템 환경(100)의 일례를 나타낸 것이다. 컴퓨팅 시스템 환경(100)은 적당한 컴퓨팅 환경의 일례에 불과하며, 상기한 발명 대상의 용도 또는 기능의 범위에 관한 어떤 제한을 암시하기 위한 것이 아니다. 컴퓨팅 환경(100)이 예시적인 운영 환경(100)에 예시된 컴포넌트들 중 어느 하나 또는 이들 컴포넌트의 임의의 조합에 관한 어떤 의존성 또는 요구조건을 갖는 것으로 해석되어서도 안된다.
도 1을 참조하면, 컴퓨팅 시스템 환경(100)은 컴퓨터(110) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트들로는 처리 장치(120), 시스템 메모리(130), 및 시스템 메모리를 비롯한 다양한 시스템 컴포넌트들을 처리 장치(120)에 결합시키는 시스템 버스(121)가 있을 수 있지만, 이들로 제한되지 않는다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스, 및 각종의 버스 아키텍처 중 어느 것이라도 사용하는 로컬 버스를 비롯한 몇가지 유형의 버스 구조 중 어느 것이라도 될 수 있다. 제한이 아닌 예로서, 이러한 아키텍처로는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 PCI(Peripheral Component Interconnect) 버스[메자닌(Mezzanine) 버스라고도 함]가 있다.
컴퓨터(110)는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함하고 있다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 이용가능한 매체라면 어느 것이라도 될 수 있고, 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체 둘다를 포함한다. 제한이 아닌 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등의 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체 둘다를 포함한다. 컴퓨터 저장 매체로는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 원하는 정보를 저장하는 데 사용될 수 있고 또 컴퓨터(110)에 의해 액세스될 수 있는 임의의 다른 매체가 있지만, 이들로 제한되지 않는다. 통신 매체는 일반적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터를 반송파 또는 기타 전송 메카니즘 등의 피변조 데이터 신호에 구현하고 모든 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는 신호의 특성들 중 하나 이상이 정보를 그 신호에 인코딩하는 방식으로 설정 또는 변경된 신호를 의미한다. 제한이 아닌 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 연결(direct-wired connection) 등의 유선 매체와, 음향, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함한다. 상기한 것들의 임의의 것의 조합도 역시 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(130)는 판독 전용 메모리(ROM)(131) 및 랜덤 액세스 메모리(RAM)(132) 등의 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동 중과 같은 때에 컴퓨터(110) 내의 구성요소들 간의 정보 전송을 돕는 기본 루틴들이 들어 있는 기본 입/출력 시스템(133)(BIOS)은 통상적으로 ROM(131)에 저장되어 있다. RAM(132)에는 통상적으로 처리 장치(120)에 의해 즉각 액세스될 수 있고 및/또는 현재 처리되고 있는 데이터 및/또는 프로그램 모듈이 들어 있다. 제한이 아닌 예로서, 도 1은 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)를 나타내고 있다.
컴퓨터(110)는 또한 다른 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체도 포함할 수 있다. 단지 예로서, 도 1는 비이동식·비휘발성 자기 매체로부터 판독을 하거나 그에 기록을 하는 하드 디스크 드라이브(141), 이동식·비휘발성 자기 디스크(152)로부터 판독을 하거나 그에 기록을 하는 자기 디스크 드라이브(151), 및 CD-RW, DVD-RW 또는 기타 광 매체 등의 이동식·비휘발성 광 디스크(156)로부터 판독을 하거나 그에 기록을 하는 광 디스크 드라이브(155)를 나타내고 있다. 예시적인 운영 환경에서 사용될 수 있는 기타의 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체로는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD(digital versatile disk), 디지털 비디오 테이프, 고상 RAM, 고상 ROM, 기타 등등이 있지만, 이들로 제한되지 않는다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140) 등의 비이동식 메모리 인터페이스를 통해 시스템 버스(121)에 연결되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 통상적으로 인터페이스(150) 등의 이동식 메모리 인터페이스에 의해 시스템 버스(121)에 연결된다.
이상에서 설명되고 도 1에 도시되어 있는 드라이브들 및 이들과 연관된 컴퓨터 저장 매체는 컴퓨터(110)의 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장을 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 도시되어 있다. 유의할 점은 이들 컴포넌트가 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일하거나 다를 수 있다는 것이다. 여기에서 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)에 다른 참조 번호가 부여되어 있는 것은 적어도 이들이 다른 사본임을 나타내기 위한 것이다. 사용자는 키보드(162) 및 포인팅 장치(161)(마우스, 트랙볼 또는 터치 패드 등) 등의 입력 장치를 통해 컴퓨터(110)에 명령 및 정보를 입력할 수 있다. 다른 입력 장치(도시 생략)로는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너, 기타 등등이 있을 수 있다. 이들 및 기타 입력 장치는 종종 시스템 버스(121)에 결합된 사용자 입력 인터페이스(160)를 통해 처리 장치(120)에 연결되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus) 등의 다른 인터페이스 및 버스 구조에 의해 연결될 수도 있다. 그래픽 인터페이스(182)도 역시 시스템 버스(121)에 연결될 수 있다. 하나 이상의 그래픽 처리 장치(GPU)(184)가 그래픽 인터페이스(182)와 통신할 수 있다. 모니터(191) 또는 기타 유형의 디스플레이 장치도 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 연결되어 있고, 비디오 인터페이스(190) 등의 인터페이스는 차례로 비디오 메모리(186)와 통신할 수 있다. 모니터(191) 이외에, 컴퓨터는 또한 출력 주변장치 인터페이스(195)를 통해 연결될 수 있는 스피커(197) 및 프린터(196) 등의 다른 주변 출력 장치도 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180) 등의 하나 이상의 원격 컴퓨터와의 논리적 연결을 사용하여 네트워크화된 환경 또는 분산 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있고, 통상적으로 컴퓨터(110)와 관련하여 상기한 구성요소들 중 다수 또는 그 전부를 포함하지만, 도 1에는 메모리 저장 장치(181)만이 도시되어 있다. 도 1에 도시된 논리적 연결은 근거리 통신망(LAN)(171) 및 원거리 통신망(WAN)(173)을 포함하지만, 다른 네트워크들/버스들도 포함할 수 있다. 이러한 네트워킹 환경은 가정, 사무실, 전사적 컴퓨터 네트워크, 인트라넷 및 인터넷에서 흔한 것이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 연결된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 통상적으로 인터넷 등의 WAN(173)을 통해 통신을 설정하는 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 다른 적절한 메카니즘을 통해 시스템 버스(121)에 연결될 수 있다. 네트워크화된 환경에서, 컴퓨터(110) 또는 그의 일부와 관련하여 도시된 프로그램 모듈들은 원격 메모리 저장 장치에 저장될 수 있다. 제한이 아닌 예로서, 도 1은 원격 애플리케이션 프로그램(185)이 메모리 장치(181)에 존재하는 것으로 도시하고 있다. 도시된 네트워크 연결이 예시적인 것이고 컴퓨터들 간에 통신 링크를 설정하는 기타 수단이 사용될 수 있다는 것을 잘 알 것이다.
도 2로부터, 상기한 것과 같은 복수의 컴퓨팅 시스템들(200, 210, 및 220)(클라이언트, 클라이언트 컴퓨터 또는 사용자라고도 함)이 스프레드시트 파일(230)과 같은 공통의 파일에 관해 실시간으로 협업하고자 할 수 있다는 것을 잘 알 것이다. 이러한 클라이언트들은, 예를 들어, "씨크" 클라이언트 스프레드시트 애플리케이션 또는 씬 클라이언트 스프레드시트 애플리케이션을 포함한다. 컴퓨팅 시스템들(200, 210, 및 220) 상의 스프레드시트 애플리케이션은 "협업적" 편집 모드(collaborative mode of editing)를 이용할 수 있으며, 이 경우 각각의 사용자 또는 클라이언트는 그 때에 파일(230)을 편집하고 있는 임의의 다른 사용자들 또는 클라이언트들에 의해 행해진 변경을 알 수 있다. 도시된 바와 같이, 이것은 저장될 버전의 스프레드시트 파일(230)을 포함하는 서버와 같은 별도의 호스트 기계(240)를 통해 달성될 수 있다. 그렇지만, 클라이언트 컴퓨터들 중 어떤 클라이언트 컴퓨터라도, 역량을 가지고 있고 또 다른 클라이언트 컴퓨터들과 적절히 네트워크로 연결되어 있는 한, 협업을 위한 호스트 기계로서 이용될 수 있다는 것을 잘 알 것이다. 따라서, 이러한 협업적 모드는 클라이언트가 배타적 액세스 권한으로 스프레드시트 파일을 열고 모든 변경들이 파일 내로 직접 넣어지는 통상의 스프레드시트 동작(이것이 일어나는 동안 다른 클라이언트는 파일을 편집하지 않음)과 다르다.
통상적인 협업적 구성에서, 각각의 클라이언트 컴퓨터는 컴퓨터-실행가능 명령어들을 통해 호스트 기계(240)로 메시지들 또는 데이터 업데이트들을 전달하게 된다[화살표(250)로 나타냄]. 클라이언트에 의해 행해진 각각의 편집 또는 변경이, 변경이 무엇이었는지, 변경이 어디에서 행해졌는지, 누가 변경을 했는지 등을 나타내는 상세와 함께, 클라이언트에 의해 수정 레코드(revision record)로서 패키징된다는 것을 잘 알 것이다. 호스트 기계(240)는 양호하게는 본 명세서에서 수정 관리자라고 하는 모듈(310)을 포함하고 있고, 이 수정 관리자는 클라이언트들로부터 업데이트들을 수신하고 이러한 변경들 또는 들어오는 데이터를 처리한다. 클라이언트로부터의 수정 레코드가 수정 관리자 모듈(310)로 전송되고, 이 수정 관리자 모듈(310)에서 수정 레코드가 수신되어 처리된다. 스프레드시트 파일(230)의 이러한 처리 및 업데이트의 완료 시에, 개별 클라이언트 컴퓨터들이 요청을 하거나 호스트 기계(240)를 폴링하는 것에 의해[화살표(265)로 나타냄], 수정 관리자 모듈(310)은 컴퓨터-실행가능 명령어들을 통해 업데이트들을 클라이언트 컴퓨터로 전송한다[화살표(270)로 나타냄]. 이와 같이, 클라이언트 컴퓨터가 요청을 하는 스프레드시트 파일(230)의 상태가, 협업 동안에 수신된 모든 클라이언트 컴퓨터들로부터의 업데이트들을 포함하는 최신 버전의 스프레드시트 파일(230)로 업데이트된다. 호스트 기계(240)에 의해 스프레드시트 파일(230)에 행해진 변경들이 양호하게는 수 밀리초 내에 클라이언트 컴퓨터들에게 이용될 수 있다는 것을 잘 알 것이다. 또한, 호스트 기계(240)가 업데이트들을 자동으로 클라이언트 컴퓨터들로 푸시할 수도 있다. 수정 관리자 모듈(310)은 협업 중의 어느 클라이언트가 업데이트 요청을 하는지를 인식하고, 클라이언트가 알게 된 마지막 업데이트에 주석을 달며, 그 때 이후로의 모든 업데이트들에 대한 수정 레코드를 전송한다. 이어서, 클라이언트는 그 수정 레코드를 적용하고, 모든 클라이언트들에 의해 행해진 모든 업데이트들로 이제 최신의 것으로 되어 있다.
일반적으로, 수정 레코드들은 수신되는 순서로 수정 관리자 모듈(310)에 의해 처리될 수 있다. 그렇지만, 2개의 클라이언트가 스프레드시트 파일 내의 동일한 셀들 또는 객체들을 포함하는 수정 레코드들을 동시에 또는 거의 동시에 전송하거나 레코드들이 처리 동안에 중복되는 경우, 변경들 간에 충돌이 있을 가능성이 있다. 제2 클라이언트가 레코드 생성 동안에 최신의 것으로 되어 있지 않은 경우 또는 수정 관리자 모듈(310)이 제2 클라이언트의 레코드를 수신하기 전에 어떤 다른 업데이트를 수신한 경우, 수정 레코드도 역시 오래되어 쓸모없는 것으로 되며, 그에 따라 제2 클라이언트가 레코드를 전송하는 때(꼭 즉각적일 필요는 없음), 전달 시간(transit time), 및 오버헤드의 전송/수신을 참작해야만 한다. 어떤 수정들이 분해 및 병합될 수 있는 반면(본 명세서에서, "변환가능" 변경이라고 함), 다른 수정들이 병합될 수 없다(본 명세서에서, "변환불가능" 변경이라고 함)는 것을 잘 알 것이다.
2개의 충돌하는 변경이 어떻게 병합될 수 있는지의 일례가 도 3 내지 도 5에 나타내어져 있다. 도 3에서 알 수 있는 바와 같이, 제1 클라이언트에 대한 스프레드시트(300)의 부분도 및 제2 클라이언트에 대한 스프레드시트(305)의 부분도가 수정 관리자 모듈(310)과 함께 제공되어 있다. 유의할 점은, 협업의 이 시점에서 스프레드시트(300 및 305)의 부분도가 동일하고, 값 5 및 값 6이 각각 셀 A1 및 셀 A2에 위치해 있다는 것이다. 도 4에서, 제1 클라이언트가 셀 A2 내의 값을 포함하는 수식(즉, A2 + 2)을 스프레드시트(300)의 셀 B1에 추가했다는 것을 알게 될 것이다. 이와 동시에 또는 거의 동시에, 제2 클라이언트가 스프레드시트(305)에서 셀 A2 위에 행을 삽입하였다. 이들 변경 각각이, 화살표(315 및 320)로 나타낸 바와 같이, 수정 관리자 모듈(310)로 전송되고, 수정 관리자 모듈(310)은 이 충돌을 중재해야만 한다. 그렇게 하기 위해, 수정 관리자 모듈(310)은 양쪽 업데이트를 처리하고 도 5에서의 적절한 변환들을 행한다. 그에 따라, 수정 관리자 모듈(310)은 스프레드시트(300)에서 행 1과 행 2 사이에 행을 삽입할 필요가 있다는 메시지(325)를 제1 클라이언트(사용자 A)로 전송하고, 제1 클라이언트는 셀 B1에서의 수식 업데이트(즉, A3 + 2)를 처리한다. 이와 동시에, 수정 관리자 모듈(310)은 스프레드시트(305)에서 셀 B1에 새로운 수식을 추가할 필요가 있다는 메시지(330)를 제2 클라이언트(사용자 B)로 전송하고, 이 경우 추가된 수식은 삽입된 행을 고려하여 조정되었다. 따라서, 업데이트들(315 및 320)에 대응하는 적절한 변환들을 행함으로써, 스프레드시트들(300 및 305)은 각각의 클라이언트로부터의 의도된 변경들을 반영하고 또 똑같다.
수정 관리자 모듈(310)이 클라이언트 컴퓨터들에 의해 수정 관리자 모듈(310)로 전송되는 모든 충돌하는 업데이트를 병합시킬 수는 없다는 것을 잘 알 것이다. 이것은 적어도 부분적으로 하나의 클라이언트에 의해 제공되는 업데이트가 다른 클라이언트에 의해 제공되는 다른 업데이트에 대해 가질 수 있는 기하급수적인 수의 영향들로 인한 것이다. 게다가, 스프레드시트의 한 특징 또는 스프레드시트에서의 연산의 변경을 다른 특징 또는 연산의 변경과 어떻게 병합시켜야 하는지에 대한 상세한 정보가 필요하다. 이 정보는 런타임 시에 이용가능하지 않을 수 있다.
따라서, 한가지 방법은 변환가능 수정(transformable revision)과 변환불가능 수정(non-transformable revision)을 구분한 다음에 스프레드시트 애플리케이션에 대한 모든 가능한 편집들을 이들 2가지 유형 중 하나인 것으로 분류하는 것이다. 본 명세서에서 언급한 바와 같이, 변환가능 레코드(transformable record)란 수정 관리자 모듈(310)이 서로 어떻게 병합시켜야 하는지를 알고 있는 수정 레코드(revision record)들을 말한다. 모든 다른 수정 레코드들은 변환불가능인 것으로 간주되고, 수정 관리자 모듈(310)은 이 변환불가능 레코드를, 이러한 수정 레코드와 적용되기를 기다리고 있는 다른 레코드들을 병합시킬 가능한 방법을 갖지 않는 것으로 인식한다. 이 경우에, 수정 관리자 모듈(310)은, 모든 클라이언트들이 현재 동일한 상태에 있도록, 모든 클라이언트들이 모든 다른 이전의 업데이트들을 수신하였음을 먼저 확인한다. 이것은 각각의 클라이언트로 하여금 통상적으로 하는 대로 업데이트들을 위해 수정 관리자를 폴링하게 함으로써 행해질 수 있고, 클라이언트는 수정 관리자가 변환불가능 동작을 수행할 것이고 또 사용자들이 어떤 추가의 편집도 하지 못하게 할 것이라는 것을 나타내는 메시지를 수신한다. 환언하면, 모든 클라이언트들이 모든 다른 이전의 업데이트들을 수신하였음을 확인하기 위해, 수정 관리자가 계속하여 변환불가능 동작을 적용할 수 있도록 각각의 클라이언트가 새로운 업데이트들을 하지 못하게 될 수 있다. 협업의 모든 클라이언트들이 동기(sync)된 후에, 수정 관리자 모듈(310)은 변환불가능 레코드를 적용하고 그에 따라 모든 클라이언트들을 업데이트시킨다.
행해지는 프로세스를 더 잘 이해하기 위해, 취해지는 단계들이 도 6의 흐름도에 나타내어져 있다. 도 6에서 알 수 있는 바와 같이, 수정 관리자 모듈(310)은 본질적으로 스프레드시트 파일(230)에 대한 잠금을 제어하고, 따라서 클라이언트들과 호스트 기계(240) 간의 연결을 설정하는 동작을 한다(박스 600으로 나타냄). 스프레드시트 파일(230)에 대한 변경들 또는 업데이트들이 임의의 수의 클라이언트들에 의해 호스트 기계(240)로 전달될 수 있는 동안에, 제1 및 제2 클라이언트가 업데이트들을 수정 관리자 모듈(310)로 전송한다(각각 박스 605 및 610으로 나타냄)는 것을 잘 알 것이다. 수정 관리자 모듈(310)은, 제1 및 제2 클라이언트로부터 업데이트들을 수신할 때, 스프레드시트 파일(230)에 대한 양쪽 업데이트가 변환가능인지 여부를 판정한다(결정 박스 615).
양쪽 업데이트가 변환가능인 것으로 간주되는 경우(즉, 양쪽 업데이트의 수정 레코드들이 병합될 수 있는 것으로 인식되는 경우), 수정 관리자 모듈(310)은 업데이트들을 스프레드시트 파일에 결합시키고(박스 620) 이어서 이러한 업데이트들을 스프레드시트 파일(230)에 적용한다(박스 625). 양쪽 업데이트가 변환가능인 것으로 간주되지 않는 경우, 수정 관리자 모듈(310)은 모든 클라이언트들이 스프레드시트 파일(230)에 대한 모든 이전의 업데이트들을 수신하였음을 먼저 확인하고(박스 630), 이어서 변환불가능 업데이트를 스프레드시트 파일(230)에 적용한다(박스 635).
어느 경우든지, 각각의 클라이언트가 양호하게는 스프레드시트 파일(230)에 대한 업데이트들을 위해 수정 관리자 모듈(310)을 폴링해야만 하고(박스 640), 그 결과 수정 관리자 모듈(310)이 폴링측 클라이언트 컴퓨터에 의해 이전에 수신되지 않은 스프레드시트 파일(230)에 대한 모든 업데이트들을 제공한다(박스 645)는 것을 잘 알 것이다. 클라이언트는 이어서 최신 버전의 스프레드시트 파일(230)이 디스플레이되도록 수정 관리자 모듈(310)에 의해 공급되는 수정 레코드를 적용한다(박스 650).
인식하고 있는 바와 같이, 클라이언트들은 수정 관리자/서버로부터 수신된 레코드들을 적용하는 부가의 클라이언트측 병합 로직을 포함할 수 있다. 이 부가의 클라이언트측 병합 로직이 없는 경우, 리치 클라이언트는 최신 업데이트들이 적용될 때까지 사용자가 어떤 변경도 개시하지 않도록 방지하기 위해 전체적인 폴링 및 업데이트 프로세스 동안에 블로킹할 필요가 있을 수 있다. 리치 클라이언트는 반응적인 버전의 수정 관리자 병합 엔진(revision manager merge engine)을 포함할 수 있다. 또한, 실시간 동기화가 완전-변환가능 솔루션(fully-transformable solution)에 대한 필요조건이 아닐 수 있다는 것을 잘 알 것이다. 연속적인 동기화가 더 나은 사용자 경험을 제공할 수 있는 반면, 완전-변환가능 솔루션의 가치의 일부는 더 나은 원격 사용성(remote usability)을 제공하고 네트워크 문제들에 대한 안정성을 제공하기 위해 일시적으로 오프라인으로 될 수 있다는 것이다. 게다가, 충돌의 경우에, 클라이언트가 아직 알지 못하는 수정 레코드들에 부가하여, 수정 관리자가, 바로 그 동일한 수정 레코드와 클라이언트가 현재 전송하고 있는 새로운 수정 레코드들 간의 충돌을 고려하기 위해, 변환된 수정 레코드들을 클라이언트들로 다시 전송할 수 있다는 것을 잘 알 것이다.
발명 대상이 구조적 특징들 및/또는 방법적 동작들과 관련하여 기술되어 있지만, 첨부된 청구항들에 정의된 발명 대상이 상기한 특정의 특징들 또는 동작들로 꼭 제한되는 것은 아니라는 것을 잘 알 것이다. 오히려, 상기한 특정의 특징들 또는 동작들은 청구항들을 구현하는 예시적인 형태로서 개시되어 있다.

Claims (20)

  1. 프로세스를 수행하는 컴퓨터-실행가능 명령어들을 저장하고 있는 컴퓨터-판독가능 매체로서,
    상기 프로세스는
    제1 스프레드시트 클라이언트로부터 스프레드시트 파일의 제1 특징 및 동작 중 하나에 대한 제1 업데이트를 수신하는 단계,
    제2 스프레드시트 클라이언트로부터 상기 스프레드시트 파일의 제2 특징 및 동작 중 하나에 대한 제2 업데이트를 수신하는 단계,
    상기 제1 및 제2 업데이트들 양자가 결합가능하고 상기 스프레드시트 파일에 적용가능하도록 모듈이 상기 제1 및 제2 업데이트들을 병합(merging)할 수 있는지 여부를 판정하는 단계,
    상기 모듈이 상기 제1 및 제2 업데이트들을 병합할 수 있는 경우, 상기 제1 및 제2 업데이트들을 결합시키고 이들을 상기 스프레드시트 파일에 적용하며 상기 제1 스프레드시트 클라이언트 및 상기 제2 스프레드시트 클라이언트로 다시 전송할 상호 업데이트(reciprocal update)들을 계산하는 단계, 및
    상기 모듈이 상기 제1 및 제2 업데이트들을 병합할 수 없는 경우, 변환불가능 변경들에 대한 정책에 따라 상기 제1 및 제2 업데이트들을 처리하는 단계를 포함하되,
    상기 정책은
    모든 스프레드시트 클라이언트가 모든 이전의 변경들을 수신하였음을 확인하는 것, 및
    상기 변환불가능 변경들을 상기 스프레드시트 파일에 적용하는 것을 포함하는
    컴퓨터-판독가능 매체.
  2. 제1항에 있어서,
    상기 제1 스프레드시트 클라이언트 및 상기 제2 스프레드시트 클라이언트는 모두 리치 클라이언트(rich client)인
    컴퓨터-판독가능 매체.
  3. 제1항에 있어서,
    상기 제1 스프레드시트 클라이언트는 리치 클라이언트이고, 상기 제2 스프레드시트 클라이언트는 브라우저 클라이언트(browser client)인
    컴퓨터-판독가능 매체.
  4. 제1항에 있어서,
    상기 프로세스는 실시간 협업 환경(real-time collaborative environment)에서 수행되는
    컴퓨터-판독가능 매체.
  5. 제1항에 있어서,
    상기 제1 및 제2 업데이트들은 동시에 수신되는
    컴퓨터-판독가능 매체.
  6. 제1항에 있어서,
    상기 프로세스는
    스프레드시트 클라이언트로부터 상기 스프레드시트 파일에 대한 업데이트 요청을 수신하는 단계, 및
    상기 스프레드시트 클라이언트에 의해 상기 스프레드시트 파일에 대해 이전에 수신되지 않은 모든 업데이트들을 포함하는 수정 레코드(revision record)를 전송하는 단계
    를 더 포함하는
    컴퓨터-판독가능 매체.
  7. 스프레드시트 협업 방법으로서,
    제1 스프레드시트 클라이언트로부터 스프레드시트 파일의 제1 특징 및 동작 중 하나에 대한 제1 변경을 수신하는 단계,
    제2 스프레드시트 클라이언트로부터 상기 스프레드시트 파일의 제2 특징 및 동작 중 하나에 대한 제2 변경을 수신하는 단계,
    하나 이상의 컴퓨터 프로세서에 의해, 상기 제1 및 제2 변경들 양자가 결합가능하고 상기 스프레드시트 파일에 적용가능하도록 모듈이 상기 제1 및 제2 변경들을 병합할 수 있는지 여부를 판정하는 단계,
    상기 모듈이 상기 제1 및 제2 변경들을 병합할 수 있는 경우, 상기 하나 이상의 컴퓨터 프로세서에 의해 상기 제1 및 제2 변경들을 결합시키고 이들을 상기 스프레드시트 파일에 적용하며 상기 제1 스프레드시트 클라이언트 및 상기 제2 스프레드시트 클라이언트로 다시 전송할 상호 업데이트들을 계산하는 단계, 및
    상기 모듈이 상기 제1 및 제2 변경들을 병합할 수 없는 경우, 상기 하나 이상의 컴퓨터 프로세서에 의해, 변환불가능 변경들에 대한 정책에 따라 상기 제1 및 제2 변경들을 처리하는 단계를 포함하되,
    상기 정책은
    모든 스프레드시트 클라이언트가 모든 이전의 변경들을 수신하였음을 확인하는 것, 및
    상기 변환불가능 변경들을 상기 스프레드시트 파일에 적용하는 것을 포함하는
    스프레드시트 협업 방법.
  8. 제7항에 있어서,
    상기 제1 스프레드시트 클라이언트 및 상기 제2 스프레드시트 클라이언트는 모두 리치 클라이언트인
    스프레드시트 협업 방법.
  9. 제7항에 있어서,
    상기 제1 스프레드시트 클라이언트는 리치 클라이언트이고, 상기 제2 스프레드시트 클라이언트는 브라우저 클라이언트인
    스프레드시트 협업 방법.
  10. 제7항에 있어서,
    상기 방법은 실시간 협업 환경에서 수행되는
    스프레드시트 협업 방법.
  11. 제7항에 있어서,
    상기 제1 및 제2 변경들은 동시에 수신되는
    스프레드시트 협업 방법.
  12. 제7항에 있어서,
    스프레드시트 클라이언트로부터 상기 스프레드시트 파일에 대한 업데이트 요청을 수신하는 단계, 및
    상기 스프레드시트 클라이언트에 의해 상기 스프레드시트 파일에 대해 이전에 수신되지 않은 모든 업데이트들을 포함하는 수정 레코드를 전송하는 단계
    를 더 포함하는 스프레드시트 협업 방법.
  13. 스프레드시트 협업 시스템으로서,
    컴퓨터-실행가능 명령어들을 실행하도록 동작하는 프로세서, 및
    프로세스를 수행하는 컴퓨터-실행가능 명령어들을 저장하고 있는 메모리를 포함하며,
    상기 프로세스는
    제1 스프레드시트 클라이언트로부터 스프레드시트 파일의 제1 특징 및 동작 중 하나에 대한 제1 변경을 수신하는 단계,
    제2 스프레드시트 클라이언트로부터 상기 스프레드시트 파일의 제2 특징 및 동작 중 하나에 대한 제2 변경을 수신하는 단계,
    상기 제1 및 제2 변경들 양자가 결합가능하고 상기 스프레드시트 파일에 적용가능하도록 모듈이 상기 제1 및 제2 변경들을 병합할 수 있는지 여부를 판정하는 단계,
    상기 모듈이 상기 제1 및 제2 변경들을 병합할 수 있는 경우, 상기 제1 및 제2 변경들을 결합시키고 이들을 상기 스프레드시트 파일에 적용하는 단계, 및
    상기 모듈이 상기 제1 및 제2 변경들을 병합할 수 없는 경우, 변환불가능 변경들에 대한 정책에 따라 상기 제1 및 제2 변경들을 처리하는 단계를 포함하되,
    상기 정책은
    모든 스프레드시트 클라이언트가 모든 이전의 변경들을 수신하였음을 확인하는 것, 및
    상기 변환불가능 변경들을 상기 스프레드시트 파일에 적용하는 것을 포함하는
    스프레드시트 협업 시스템.
  14. 제13항에 있어서,
    상기 프로세스는 수정 관리자에 의해 수행되는
    스프레드시트 협업 시스템.
  15. 제13항에 있어서,
    상기 제1 클라이언트는 리치 클라이언트이고, 상기 제2 클라이언트는 브라우저 클라이언트인
    스프레드시트 협업 시스템.
  16. 제13항에 있어서,
    상기 프로세스는 실시간 협업 환경에서 수행되는
    스프레드시트 협업 시스템.
  17. 제13항에 있어서,
    상기 제1 및 제2 변경들은 동시에 수신되는
    스프레드시트 협업 시스템.
  18. 삭제
  19. 삭제
  20. 삭제
KR1020107008515A 2007-10-26 2008-10-23 리치 클라이언트와 브라우저 클라이언트 간의 스프레드시트 협업 KR101566566B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/925,019 2007-10-26
US11/925,019 US7756824B2 (en) 2007-10-26 2007-10-26 Spreadsheet collaboration between rich and browser clients

Publications (2)

Publication Number Publication Date
KR20100070359A KR20100070359A (ko) 2010-06-25
KR101566566B1 true KR101566566B1 (ko) 2015-11-05

Family

ID=40580375

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107008515A KR101566566B1 (ko) 2007-10-26 2008-10-23 리치 클라이언트와 브라우저 클라이언트 간의 스프레드시트 협업

Country Status (6)

Country Link
US (1) US7756824B2 (ko)
EP (1) EP2220609B1 (ko)
JP (1) JP5426561B2 (ko)
KR (1) KR101566566B1 (ko)
CN (1) CN101842802A (ko)
WO (1) WO2009055531A2 (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
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
US8140958B2 (en) * 2007-01-30 2012-03-20 International Business Machines Corporation Cyclical and synchronized multi-source spreadsheet imports and exports
US8464206B2 (en) * 2007-10-22 2013-06-11 Open Text S.A. Method and system for managing enterprise content
US20090300474A1 (en) * 2008-05-29 2009-12-03 Centralytics, Inc. Computer-based architecture using remotely-controlled electronic grid-based calculators
US8639762B2 (en) * 2009-03-23 2014-01-28 Google Inc. Providing access to a conversation in a hosted conversation system
US8527602B1 (en) 2009-05-28 2013-09-03 Google Inc. Content upload system with preview and user demand based upload prioritization
US9602444B2 (en) 2009-05-28 2017-03-21 Google Inc. Participant suggestion system
US9021386B1 (en) 2009-05-28 2015-04-28 Google Inc. Enhanced user interface scrolling system
US8510399B1 (en) 2010-05-18 2013-08-13 Google Inc. Automated participants for hosted conversations
US9652440B2 (en) * 2010-05-27 2017-05-16 Microsoft Technology Licensing, Llc Concurrent utilization of a document by multiple threads
US9026935B1 (en) 2010-05-28 2015-05-05 Google Inc. Application user interface with an interactive overlay
US9380011B2 (en) 2010-05-28 2016-06-28 Google Inc. Participant-specific markup
US9031957B2 (en) * 2010-10-08 2015-05-12 Salesforce.Com, Inc. Structured data in a business networking feed
US9721030B2 (en) * 2010-12-09 2017-08-01 Microsoft Technology Licensing, Llc Codeless sharing of spreadsheet objects
US9811516B2 (en) 2010-12-14 2017-11-07 Microsoft Technology Licensing, Llc Location aware spreadsheet actions
US9898454B2 (en) * 2010-12-14 2018-02-20 Microsoft Technology Licensing, Llc Using text messages to interact with spreadsheets
US8700986B1 (en) 2011-03-18 2014-04-15 Google Inc. System and method for displaying a document containing footnotes
US9129234B2 (en) 2011-01-24 2015-09-08 Microsoft Technology Licensing, Llc Representation of people in a spreadsheet
US8510266B1 (en) * 2011-03-03 2013-08-13 Google Inc. System and method for providing online data management services
US8583614B1 (en) * 2012-01-30 2013-11-12 Lucid Software, Inc. Automatic offline synchronization of browser documents
US9099031B2 (en) * 2012-06-15 2015-08-04 Apple Inc. Layout synchronization
WO2014027998A1 (en) 2012-08-14 2014-02-20 Empire Technology Development Llc Updating a currently utilized device
US8983901B1 (en) * 2013-02-05 2015-03-17 Google Inc. System and method for rectangular region covering
US9460073B2 (en) 2013-02-27 2016-10-04 Google Inc. Systems and methods for mutations and operational transforms in a collaborative spreadsheet environment
US8856234B2 (en) 2013-02-28 2014-10-07 Workiva Llc System and method for performing distributed asynchronous calculations in a networked environment
US10067927B2 (en) * 2013-06-14 2018-09-04 Microsoft Technology Licensing, Llc Updates to shared electronic documents in collaborative environments
US10133720B2 (en) 2013-06-15 2018-11-20 Microsoft Technology Licensing, Llc Showing presence of multiple authors in a spreadsheet
US9569418B2 (en) 2014-06-27 2017-02-14 International Busines Machines Corporation Stream-enabled spreadsheet as a circuit
US11244105B2 (en) * 2014-12-04 2022-02-08 Google Llc Efficient copy paste in a collaborative spreadsheet
US11783120B2 (en) * 2015-08-26 2023-10-10 Roar Software Pty Ltd. System and process for generating an internet application
US10884571B2 (en) 2018-01-11 2021-01-05 Microsoft Technology Licensing, Llc Dependency-based presence for co-authored documents
KR102076550B1 (ko) * 2018-06-22 2020-02-12 주식회사 한글과컴퓨터 스프레드시트 편집 장치 및 방법
CN112784558A (zh) * 2020-02-21 2021-05-11 珠海金山办公软件有限公司 电子表格应用方法、装置、服务器、客户端及通信系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020091730A1 (en) 2001-01-05 2002-07-11 Microsoft Corporation Reporting status of external references in a spreadsheet without updating
US20060041832A1 (en) 2000-05-30 2006-02-23 Outlooksoft Corporation Method and system for facilitating information exchange
US7213199B2 (en) 2004-07-16 2007-05-01 Cognos Incorporated Spreadsheet user-interface for an enterprise planning system having multi-dimensional data store
US7233951B1 (en) 2004-02-18 2007-06-19 Microsoft Corporation Spreadsheet grid-like control for a web-based collaboration system

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5671428A (en) * 1991-08-28 1997-09-23 Kabushiki Kaisha Toshiba Collaborative document processing system with version and comment management
US6067551A (en) * 1997-11-14 2000-05-23 Microsoft Corporation Computer implemented method for simultaneous multi-user editing of a document
US6558431B1 (en) * 1998-09-11 2003-05-06 Macromedia, Inc. Storing valid and invalid markup language in strict and relaxed tables respectively
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
US7818678B2 (en) 2002-10-31 2010-10-19 Litera Technology Llc Collaborative document development and review system
US8719325B2 (en) * 2003-02-28 2014-05-06 Microsoft Corporation Method to initiate server based collaboration on e-mail attachments
US20050216522A1 (en) * 2004-03-23 2005-09-29 Integrated Data Corporation Multi-tier document management system
US20060026502A1 (en) * 2004-07-28 2006-02-02 Koushik Dutta Document collaboration system
DE102005048693B4 (de) * 2005-10-11 2009-07-09 Assa Abloy Sicherheitstechnik Gmbh Türöffneranordnung sowie Adapterstück zur Verwendung in einer Türöffneranordnung
CN1979466A (zh) 2005-11-29 2007-06-13 国际商业机器公司 允许多个用户同时编辑一个共享的电子文档的方法及装置
US8307119B2 (en) * 2006-03-31 2012-11-06 Google Inc. Collaborative online spreadsheet application

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060041832A1 (en) 2000-05-30 2006-02-23 Outlooksoft Corporation Method and system for facilitating information exchange
US20020091730A1 (en) 2001-01-05 2002-07-11 Microsoft Corporation Reporting status of external references in a spreadsheet without updating
US7233951B1 (en) 2004-02-18 2007-06-19 Microsoft Corporation Spreadsheet grid-like control for a web-based collaboration system
US7213199B2 (en) 2004-07-16 2007-05-01 Cognos Incorporated Spreadsheet user-interface for an enterprise planning system having multi-dimensional data store

Also Published As

Publication number Publication date
US20090112937A1 (en) 2009-04-30
JP5426561B2 (ja) 2014-02-26
KR20100070359A (ko) 2010-06-25
CN101842802A (zh) 2010-09-22
JP2011501324A (ja) 2011-01-06
US7756824B2 (en) 2010-07-13
WO2009055531A2 (en) 2009-04-30
WO2009055531A3 (en) 2009-07-02
EP2220609B1 (en) 2018-07-11
EP2220609A2 (en) 2010-08-25
EP2220609A4 (en) 2017-12-13

Similar Documents

Publication Publication Date Title
KR101566566B1 (ko) 리치 클라이언트와 브라우저 클라이언트 간의 스프레드시트 협업
US10897441B2 (en) Unified messaging platform for displaying attached content in-line with e-mail messages
US9275032B2 (en) Private views of data and local calculations during real time collaboration
US10936548B2 (en) File synchronization pausing for individual files
US7818679B2 (en) Method, system, and apparatus for enabling near real time collaboration on an electronic document through a plurality of computer systems
US8825758B2 (en) Collaborative authoring modes
EP2831763B1 (en) Tracking co-authoring conflicts using document comments
CN102227720B (zh) 在多个设备的范围内支持媒体内容回复功能
TWI556168B (zh) 外部服務應用程式探索方法
KR101647535B1 (ko) 교차 채널 공동 저작 일관성 제공 기법
US20090327358A1 (en) Resolving conflicts in content management systems
KR101740207B1 (ko) 서버 저장 모델을 이용하는 파일 파티션들의 동기화 기법
WO2011109416A2 (en) Automatic synchronization conflict resolution
US7818293B2 (en) Method and system to synchronize updated versions of a document edited on a collaborative site that are under document management control
US10171581B2 (en) Blended operational transformation for multi-user collaborative applications
JP2005316993A (ja) ネットワーク上においてコンピュータ間でオブジェクトを共有するためのシステムおよび方法
US7788328B2 (en) Cross-forest sharing
EP3230894B1 (en) Blended operational transformation for multi-user collaborative applications

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