KR101683322B1 - 메타데이터 병합에 걸친 실행 취소 및 재실행 능력의 유지 - Google Patents

메타데이터 병합에 걸친 실행 취소 및 재실행 능력의 유지 Download PDF

Info

Publication number
KR101683322B1
KR101683322B1 KR1020117025468A KR20117025468A KR101683322B1 KR 101683322 B1 KR101683322 B1 KR 101683322B1 KR 1020117025468 A KR1020117025468 A KR 1020117025468A KR 20117025468 A KR20117025468 A KR 20117025468A KR 101683322 B1 KR101683322 B1 KR 101683322B1
Authority
KR
South Korea
Prior art keywords
document
metadata
undo
lock
user
Prior art date
Application number
KR1020117025468A
Other languages
English (en)
Other versions
KR20120011332A (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 KR20120011332A publication Critical patent/KR20120011332A/ko
Application granted granted Critical
Publication of KR101683322B1 publication Critical patent/KR101683322B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/107License processing; Key processing
    • G06F21/1078Logging; Metering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1273Print job history, e.g. logging, accounting, tracking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1038LFS, i.e. Log Structured File System used in RAID systems with parity

Abstract

클라이언트 컴퓨터에서 실행 취소 동작 중에 메타데이터를 보존하는 방법이 제공된다. 문서의 제 1 섹션은 문서의 제 1 섹션에서 하나 이상의 사용자 동작을 수행함으로써 클라이언트 컴퓨터상의 워드 프로세싱 애플리케이션에서 수정된다. 문서의 제 1 섹션을 수정할 동안, 메타데이터는 문서의 제 2 섹션을 위해 클라이언트 컴퓨터에서 수신된다. 메타데이터는 문서의 제 2 섹션 내에 삽입된다. 메타데이터가 문서의 제 2 섹션 내에 삽입된 후, 실행 취소 동작이 워드 프로세싱 애플리케이션에서 수행된다. 실행 취소 동작은 문서의 제 2 섹션에서 메타데이터를 제거하는 단계, 문서의 제 1 섹션에서 하나 이상의 사용자 동작 중 최종 사용자 동작을 실행 취소하는 단계 및 문서의 제 2 섹션을 위한 메타데이터를 복원하는 단계를 포함한다.

Description

메타데이터 병합에 걸친 실행 취소 및 재실행 능력의 유지{MAINTAINING UNDO AND REDO CAPABILITY ACROSS METADATA MERGES}
온라인 문서 협업 시스템(online document collaboration system)은 문서의 공동 저작을 지원할 수 있다. 공동 저작은 문서 협업 시스템에서 복수의 사용자가 동일한 문서에 접근하고, 문서의 변경을 행하며, 변경을 병합하도록 허용한다. 서로 다른 사용자가 문서의 동일한 부분을 편집할 때에 곤란이 생길 수 있다.
예컨대, 두 사용자가 문서의 동일한 부분에 대한 변경을 행할 수 있으며, 시스템은 단일 문서로의 수정을 병합할 때에 이들 변경을 조정해야 한다. 더욱이, 한 사용자는 다른 사용자가 중간에 문서를 수정하였을 때 문서의 이전의 상태로 되돌리고자 시도를 할 때에 충돌이 발생할 수 있다. 이것은 예컨대 사용자가 공동 저작된 문서에 행한 변경을 실행 취소(undo)하고자 시도할 때에 예상되지 않은 동작을 초래할 수 있다.
본 개시 내용의 실시예는 클라이언트 컴퓨터에서 실행 취소 동작 중에 메타데이터의 보존에 관한 것이다. 문서의 제 1 섹션은 클라이언트 컴퓨터상의 워드 프로세싱 애플리케이션에서 수정된다. 문서의 제 1 섹션을 수정하는 단계는 문서의 제 1 섹션에서 하나 이상의 사용자 동작을 수행하는 단계를 포함한다. 문서의 제 1 섹션을 수정할 동안, 메타데이터는 문서의 제 2 섹션을 위해 클라이언트 컴퓨터에서 수신된다. 문서의 제 2 섹션은 문서의 제 1 섹션과 상이하다. 문서의 제 2 섹션을 위한 메타데이터를 수신한 후, 메타데이터는 문서의 제 2 섹션 내에 삽입된다.
메타데이터가 문서의 제 2 섹션 내에 삽입된 후, 실행 취소 동작이 워드 프로세싱 애플리케이션에서 수행된다. 실행 취소 동작은 문서의 제 2 섹션에서 메타데이터를 제거하는 단계, 문서의 제 1 섹션에서 하나 이상의 사용자 동작 중 최종 사용자 동작을 실행 취소하는 단계 및 문서의 제 2 섹션을 위한 메타데이터를 복원하는 단계를 포함한다.
하나 이상의 기술의 상세 사항은 아래의 첨부한 도면 및 설명에서 진술된다. 이들 기술의 다른 특징, 목적 및 이점은 설명, 도면 및 청구범위에서 자명해질 것이다.
도 1은 메타데이터 병합에 걸친 문서에서 실행 취소/재실행 능력을 유지하기 위한 예시적인 시스템을 도시한 것이다.
도 2는 메타데이터 병합에 걸친 문서에서 실행 취소/재실행 능력을 유지하기 위한 능력을 구현하는 도 1의 예시적인 클라이언트 컴퓨터의 예시적인 모듈을 도시한 것이다.
도 3은 예시적인 실행 취소/재실행 스택(stack)의 예시적인 시간 스냅샷(time snapshots)을 도시한 것이다.
도 4는 예시적인 클라이언트 컴퓨터에서 수행되는 예시적인 실행 취소 동작의 흐름도를 도시한 것이다.
도 5는 메타데이터 병합에 걸친 문서에서 실행 취소/재실행 능력의 유지를 구현하는 도 2의 예시적인 클라이언트 컴퓨터를 도시한 것이다.
본 개시 내용은 공동 저작되는 문서에서 메타데이터 병합에 걸친 실행 취소/재실행 능력을 유지하기 위한 시스템 및 방법에 관한 것이다. 공동 저작된 문서는 복수의 사용자가 동시에 접근하여 수정할 수 있는 문서이다.
여기에 기술되는 일부 예들에서, 실행 취소/재실행 능력은 메타데이터 병합에 걸쳐 유지된다. 메타데이터 병합은 메타데이터, 전형적으로 다른 공동 저작 사용자로부터의 단락 잠금(paragraph lock)이 문서 내에 삽입될 때에 일어난다. 시스템 및 방법은 사용자 동작을 저장하며, 메타데이터를 저장하는 상태 기반의 실행 취소/재실행 스택의 이용을 개시한다. 시스템 및 방법은 스택 상에 저장된 메타데이터가 효율적으로 스킵(skip)되도록 하여, 실행 취소/재실행 능력이 메타데이터 병합에 의해 영향을 받지 않도록 한다.
도 1은 메타데이터 병합에 걸친 문서에서 실행 취소/재실행 능력을 유지하기 위한 예시적인 시스템(100)을 도시한 것이다. 예시적인 시스템(100)은 클라이언트(102 및 104), 네트워크(106), 및 서버(108)를 포함한다. 다소의 클라이언트, 서버, 및 네트워크가 이용될 수 있다. 이러한 개시 내용에서, 용어 클라이언트 및 클라이언트 컴퓨터는 상호 교환 가능하게 이용되며, 용어 서버 및 서버 컴퓨터는 상호 교환 가능하게 이용된다.
예시적인 실시예에서, 클라이언트(102 및 104)는 아래에 더 기술되는 바와 같이 컴퓨팅 장치이다.
클라이언트(102, 104)에 의해 저장되는 복수의 정보 중에는 클라이언트 운영 체제("OS") 및 클라이언트 애플리케이션이 있다. 클라이언트 OS는 클라이언트 시스템의 하드웨어 및 소프트웨어 자원을 관리하는 프로그램이다. 클라이언트 애플리케이션은 클라이언트(102, 104)의 자원을 이용하여 사용자에 의해 특정되는 태스크를 직접 수행한다. 예컨대, 클라이언트(102, 104)는 문서 파일을 작성 및 편집하는데 이용되는 워드 프로세싱 프로그램과 같은 하나 이상의 소프트웨어 애플리케이션을 포함한다. 이와 같은 애플리케이션의 일례로서, 워싱턴 레드몬드의 마이크로소프트사로부터의 Microsoft Word의 워드 프로세싱 애플리케이션이 있다.
예시적인 실시예에서, 네트워크(106)는 LAN(Local Area Network), WAN(Wide Area Network) 또는 인터넷(Internet)이다. 클라이언트(102 및 104)는 서버(108) 및 서버(108)에 원격적으로 접속되는 자원에 접근할 수 있다.
예시적인 서버(108)는 전형적으로 워싱턴 레드몬드의 마이크로소프트사로부터의 WINDOWS® 운영 체제와 같이 네트워크 컴퓨터의 동작을 제어하는데 적절한 운영 체제, 또는 워싱턴 레드몬드의 마이크로소프트사로부터의 Windows Server 2008과 같은 서버를 포함한다.
예시적인 실시예에서, 예시적인 시스템(100)은 온라인, 브라우저 기반 문서 협업 시스템이다. 온라인, 브라우저 기반 문서 협업 시스템의 일례로서, 워싱턴 레드몬드의 마이크로소프트사로부터의 SHAREPOINT® 팀 서비스 소프트웨어가 있다. 예시적인 시스템(100)에서, 서버(108)는 Microsoft SharePoint 서버, 예컨대, 워싱턴 레드몬드의 마이크로소프트사로부터의 Microsoft Office SharePoint Server 2007이다.
예시적인 실시예에서, 클라이언트(102 및 104)는 서버(108) 상에 저장되는 문서를 공동 저작할 수 있다. 예시적인 문서는 하나 이상의 섹션을 포함한다. 문서의 각 섹션은 전형적으로 단락이다. 그러나, 섹션은 문서의 어떤 서브파트, 예컨대, 문장, 단락, 제목, 도면, 표 등일 수 있다. 문서는 하나만의 섹션, 예컨대, 단일 표, 문장 또는 복수의 표, 문장, 또는 단락과 같은 복수의 섹션을 포함할 수 있다. 여기에 개시된 예시적인 실시예의 경우, 문서 섹션은 문서의 단락이다.
클라이언트(102)에서의 공동 저작 사용자가 문서의 단락을 타이핑할 때, 예시적인 클라이언트(102)는 단락에 관한 메타데이터를 서버(108)로 송신한다. 메타데이터는 전형적으로 클라이언트(102)가 편집되는 단락을 잠갔음을 나타내는 단락 잠금의 형식으로 있다. 일례에서, 단락은 사용자가 단락에 대해 수정을 행할 때에 편집되는 것으로 식별된다. 다른 예에서, 단락은 사용자가 단락에 커서를 위치시킬 때에 편집되는 것으로 식별된다. 예시적인 클라이언트는 하나의 공동 저작 사용자만이 동시에 문서의 특정 단락을 편집하도록 허용되기 때문에 편집되는 단락을 잠근다.
서버(108)가 클라이언트(102)로부터 메타데이터를 수신할 때, 서버(108)는 문서를 열게 할 수 있는 모든 다른 공동 저작 사용자를 식별한다. 서버(108)는 메타데이터를 식별된 공동 저작 사용자로 송신한다. 예컨대, 예시적인 클라이언트(104) 상의 공동 저작 사용자가 문서를 열었을 경우, 서버(108)는 메타데이터를 클라이언트(104) 상의 공동 저작 사용자에 의해 열려진 문서 내에 삽입한다.
예시적인 실시예에서, 서버(108)는 클라이언트(102) 상의 공동 저작 사용자에 의해 편집되는 단락에 대응하는 클라이언트(104) 상의 공동 저작 사용자에 의해 열려진 문서의 단락 내로 단락 잠금을 삽입한다. 이러한 잠금은 클라이언트(104) 상의 공동 저작 사용자가 잠금을 삽입한 단락을 편집하지 못하게 한다. 그러나, 클라이언트(104) 상의 공동 저작 사용자는 잠겨지지 않은 문서 내의 어떤 다른 단락을 편집할 수 있다. 클라이언트(104) 상의 공동 저작 사용자는 또한 클라이언트(104)에 열려진 문서 내의 하나 이상의 새로운 단락을 작성하여 이들 단락을 편집할 수 있다.
클라이언트(104)에서 편집 중에, 공동 저작 사용자는 사용자 동작을 실행 취소하기를 원할 수 있다. 예컨대, 공동 저작 사용자는 부정확한 키를 타이핑할 수 있거나, 공동 저작 사용자가 실행 취소하기를 원할 수 있는 포맷 변경을 행할 수 있으며, 또는 공동 저작 사용자는 공동 저작 사용자가 실행 취소하기를 원할 수 있는 잘라내기 및 붙여넣기 동작을 수행할 수 있다. 공동 저작 사용자가 실행 취소하기를 원할 수 있는 다른 사용자 동작이 가능하다.
실행 취소 동작의 부가적인 예들은 2005년 3월 30일자로 출원된 미국 특허 제7,499,955호 및 2007년 1월 15일자로 출원된 미국 특허 출원 제11/623,234호에 기술되어 있으며, 이들 모두는 여기서 참조로서 통합된다.
예시적인 클라이언트(104) 상의 공동 저작 사용자가 사용자 동작을 실행 취소하기 위한 하나의 방법은, 예컨대, 클라이언트(104) 상의 예시적인 실행 취소 키를 누름으로써 실행 취소 동작을 수행하기 위한 것이다. 전형적으로, 실행 취소 동작은 최종 동작을 실행 취소하고, 문서를 이전의 동작으로 복귀시킨다. 예컨대, 공동 저작 사용자가 문서에 문자 "t" "h" 및 "e"를 타이핑하면, 예시적인 클라이언트(104) 상의 예시적인 실행 취소 키를 누름으로써, 문서가 실행 취소 동작 후에 문자 "t" 및 "h"를 포함하도록 최종 동작(예컨대, 문자 "e"의 타이핑)이 삭제된다.
사용자 동작은 전형적으로 사용자 동작이 실행 취소되도록 하기 위해 프로그램 스택, 예컨대, 실행 취소/재실행 스택에 저장된다. 예컨대, 사용자가 문자 "t"를 타이핑하면, 문자 "t"는 실행 취소/재실행 스택에 저장된다. 그 다음, 문자 "h"가 타이핑될 때, 문자 "h"는 실행 취소/재실행 스택에 저장되고, 문자 "e"가 타이핑될 때, 문자 "e"는 실행 취소/재실행 스택에 저장된다. 예시적인 실시예에서, 실제 문자는 스택에 저장될 수 없다. 대신에, 메모리 내의 영역으로의 포인터가 저장될 수 있다. 메모리 내의 영역은 실제 문자를 포함할 수 있다.
프로그램 스택, 예컨대, 실행 취소/재실행 스택은 후입/선출 기초(last in/first out basis)로 동작한다. 상기 예의 경우, 문자 "e"가 스택에 저장된 3개의 문자 중 최종 문자이기 때문에 문자 "e"는 먼저 스택에서 떨어진다. 예시적인 실행 취소 동작 중에, 문자 "e"는 스택에서 떨어지고, 문자 "h"를 스택의 최상부에 남긴다.
메타데이터 잠금은 또한 예시적인 실행 취소/재실행 스택에 저장된다. 사용자가 단락에 타이핑하면, 사용자가 타이핑한 각 문자는 순차적으로 실행 취소/재실행 스택에 저장된다. 그러나, 메타데이터 잠금이 사용자가 타이핑 중일 동안에 수신되면, 잠금은 또한 실행 취소/재실행 스택에 저장된다. 잠금이 실행 취소/재실행 스택에 저장되는 이유는 마이크로소프트 워드(Microsoft Word)와 같은 워드 프로세싱 애플리케이션에서, 실행 취소/재실행 스택이 전형적으로 잠금을 포함하는 모든 동작을 저장하기 때문이다. 그래서, 사용자가 실행 취소 동작을 수행할 때, 잠금은 전형적으로 잠금이 실행 취소/재실행 스택의 최상부에 위치된 이래 폐기되는 대신에 보존되는 것이 바람직하다. 이것은 사용자가 기대하는 실행 취소/재실행 동작을 생성한다. 즉, 사용자는 전형적으로 최종 사용자 동작을 실행 취소하고 문서 내의 어떤 잠금을 제거하지 않는 실행 취소 동작을 기대한다.
실행 취소 동작 중에 단락 잠금을 보존하기 위해, 예시적인 실시예에서, 실행 취소 동작이 일어날 때, 단락 잠금은 실행 취소/재실행 스택에서 제거되고, 일시적으로 클라이언트 컴퓨터 상의 메모리 내에 저장된다. 그 후, 실행 취소/재실행 스택의 최상부에 저장된 사용자 동작이 실행 취소된다. 실행 취소/재실행 스택의 최상부에 저장된 사용자 동작이 실행 취소된 후, 단락 잠금은 메모리로부터 획득되어 스택 상으로 다시 저장된다. 이러한 방식으로, 사용자 관점에서, 실행 취소 동작은 기대한 바와 같이 진행하고, 잠금은 문서에 유지된다.
도 2는 예시적인 클라이언트(102) 상의 예시적인 모듈을 도시한 것이다. 예시적인 클라이언트(102)는 예시적인 데이터 처리 모듈(202), 예시적인 메타데이터 병합 모듈(204), 예시적인 사용자 인터페이스 모듈(206), 및 예시적인 실행 취소/재실행 모듈(208)을 포함한다. 예시적인 데이터 처리 모듈(202)은 워싱턴 레드몬드의 마이크로소프트사로부터의 마이크로소프트 워드(Microsoft Word)의 워드 프로세싱 애플리케이션과 같은 워드 프로세싱 프로그램을 포함한다.
예시적인 메타데이터 병합 모듈(204)은 예시적인 서버(108)로부터 수신되는 메타데이터를 처리하여, 메타데이터를 클라이언트 컴퓨터(102) 상에 열린 문서의 적절한 섹션내로 삽입한다. 전형적으로, 메타데이터는 다른 공동 저작 사용자에 의해 편집되는 문서의 섹션 잠금을 나타낸다. 예시적인 메타데이터 병합 모듈(204)이 문서의 특정 섹션을 위한 서버(108)로부터 잠금을 수신할 때, 예시적인 메타데이터 병합 모듈(204)은 클라이언트 컴퓨터(102) 상에 열린 문서의 대응하는 섹션내로 잠금을 삽입한다. 이러한 잠금은 클라이언트(102) 상의 공동 저작 사용자가 잠금이 지향되는 문서의 섹션을 편집하지 못하게 한다. 예시적인 실시예에서, 문서의 섹션은 문서의 단락에 대응한다. 다른 예시적인 실시예에서, 문서 섹션의 단위(granularity)는 상술한 바와 같이 변할 수 있다.
예시적인 사용자 인터페이스 모듈(206)은 예시적인 메타데이터 병합 모듈(204)로부터 잠금을 수신하여, 이 잠금을 문서의 적절한 섹션 내에 표시한다. 예컨대, 예시적인 사용자 인터페이스 모듈(206)은 단락이 잠겨있음을 나타내도록 단락 주변에 브래킷(bracket)을 넣을 수 있다. 다른 예로서, 예시적인 사용자 인터페이스 모듈은 잠겨질 단락 다음의 잠금을 나타내는 아이콘을 삽입할 수 있다. 부가적으로, 예시적인 사용자 인터페이스 모듈은 단락을 공동 저작하는 사용자의 이름을 표시할 수 있다. 다른 예들이 가능하다. 사용자가 단락이 잠겨지는 그래픽 표시를 볼 때, 사용자는 그 단락의 편집이 잠금이 제거되는 그런 시간까지 불가능하게 됨을 통지를 받는다.
이와 같은 잠금에 관한 부가적인 상세 사항은 2008년 6월 25일자로 출원된 미국 특허 출원 제12/145,536호에서 찾을 수 있으며, 이 전체는 참조로서 통합된다. 다른 구성이 가능하다.
예시적인 실행 취소/재실행 모듈(208)은 문서 내의 어떤 메타데이터 잠금의 무결성(integrity)을 유지하면서 실행 취소 및 재실행 요청을 처리하여, 문서에서의 실행 취소 및 재실행 동작을 수행한다. 예시적인 실행 취소/재실행 모듈(208)은 예시적인 실행 취소/재실행 스택을 포함한다. 예시적인 실행 취소/재실행 스택은 실행 취소 섹션 및 재실행 섹션을 포함한다. 통상의 프로그램 스택은 엔트리를 스택 상으로 밀어넣고, 스택에서 엔트리를 나가게 하는 반면에, 예시적인 실행 취소/재실행 스택은 실행 취소/재실행 스택의 특정 부분에 마커를 제공한다. 사용자 동작 및 메타데이터 잠금은 마커가 실행 취소/재실행 스택에서 가리키는 곳에 관하여 저장되거나 실행 취소/재실행 스택에서 제거된다. 논의된 바와 같이, 예시적인 실시예에서, 예시적인 실행 취소/스택은 사용자 동작으로의 포인터 및 메타데이터 잠금으로의 포인터를 저장할 수 있다.
실행 취소 요청이 수신될 때, 예시적인 실행 취소/재실행 모듈(208)은 클라이언트 컴퓨터(102) 상의 실행 취소/재실행 스택을 검사하여, 실행 취소/재실행 스택의 실행 취소 부분에서 어떤 메타데이터 잠금을 제거한다. 그 후, 실행 취소/재실행 스택의 실행 취소 부분에서 제거된 모든 메타데이터 잠금은 일시적으로 클라이언트 컴퓨터(102) 상의 메모리 내에 저장된다. 그리고 나서, 최종 사용자 동작은 실행 취소/재실행 스택에서 제거되고, 최종 사용자 동작은 복귀된다. 예컨대, 최종 사용자 동작이 문자를 굵게 하였을 경우, 실행 취소 동작은 문자에서 굵은 글꼴(bolding)을 제거한다.
실행 취소 동작이 완료된 후, 예시적인 실행 취소/재실행 모듈(208)은 일시적으로 메모리 내에 저장된 잠금을 검색하여, 잠금을 실행 취소/재실행 스택으로 복원시킨다. 예시적인 실행 취소/재실행 모듈은 잠금이 실행 취소/재실행 스택에서 제거된 역순으로 잠금을 복원시킨다. 예컨대, 2개의 잠금이 실행 취소/재실행 스택에서 제거된 경우, 제거된 제 2 잠금은 첫번째 스택으로 복원되고, 제거된 제 1 잠금은 다음 스택으로 복원된다. 그 후, 스택의 잠금은 최종 사용자 동작이 실행 취소/재실행 스택에서 제거되기 전과 동일한 순서로 이루어진다. 따라서, 잠금은 불응답 또는 산만한 사용자 인터페이스 행동과 같은 사용자 경험에 대한 어떤 부정적인 영향을 최소화하면서 복원된다.
실행 취소/재실행 스택은 또한 실행 취소 동작이 재실행되도록 한다. 예컨대, 사용자 동작이 실행 취소 동작의 결과로서 실행 취소/재실행 스택의 실행 취소 섹션에서 제거되면, 사용자 동작은 실행 취소/재실행 스택의 재실행 부분 내에 저장된다. 실행 취소 동작이, 예컨대, 예시적인 클라이언트 컴퓨터(102) 상의 예시적인 재실행 버튼을 누름으로써 취소될 수 있는 것으로 결정되면, 사용자 동작은 실행 취소/재실행 스택의 재실행 부분에서 제거되어, 문서 및 실행 취소/재실행 스택의 실행 취소 부분으로 복원된다. 예컨대, 실행 취소 동작이 문서에서 문자 "e"를 제거하면, 재실행 동작은 문자 "e"를 복원시킨다. 게다가, 재실행 동작은 문자 "e"를 실행 취소/재실행 스택의 실행 취소 부분으로 복원시킨다.
도 3은 사용자 편집 세션의 시간 스냅샷에서 예시적인 실행 취소/재실행 스택 및 예시적인 문서를 도시한 것이다. 예시적인 설명에서, 각 문자는 특정 단락, 예컨대 단락 A, B, C 및 D의 내용을 나타낸다.
시간 스냅샷(302)에서, 사용자는 단락 A의 내용을 포함하는 문서를 연다. 편집이 행해지지 않아 예시적인 실행 취소/재실행 스택은 비어 있다.
시간 스냅샷(304)에서, 사용자는 단락 B에 대한 내용을 작성한다. 예시적인 실행 취소/재실행 스택은 실행 취소/재실행 스택의 재실행 부분과 실행 취소/재실행 스택의 실행 취소 부분 사이의 경계를 나타내는 수평선(314)을 보여준다. 예시적인 실행 취소/재실행 스택의 실행 취소 부분은 최하부 부분(316)이다. 시간 스냅샷(304)에서, 예시적인 실행 취소/재실행 스택의 최하부 부분(316)은 "-B"를 보여준다. "-B"는 단락 B에 대한 실행 취소 동작을 나타낸다. 예시적인 단락 B에서 행해진 각 사용자 동작은 심벌 "-B"로 나타낸다. 예컨대, 사용자가 단락 B에서 타이핑한 문자 "T" "h" 및 "e"만을 타이핑하면, 각 문자는 타이핑한 순서, 먼저 "T" 그 다음 "h" 및 그 다음 "e"로 실행 취소/재실행 스택 내에 삽입된다. 단순함을 위해 이들 모든 동작은 심벌 "-B"로 나타낸다.
시간 스냅샷(306)에서, 사용자는 단락 C에 대한 내용을 작성한다. 따라서, 스냅샷(306)의 문서 섹션은 문서가 이제 단락 A, B 및 C의 내용을 가짐을 보여준다. 게다가, 심벌 "-C"는 실행 취소/재실행 스택(318)의 최하부 부분에 부가된다.
시간 스냅샷(308)에서, 잠금은 메타데이터 병합의 결과로서 단락 A을 위한 예시적인 클라이언트 컴퓨터(102)에서 수신된다. 잠금은 단락 A 주변의 잠금 심벌(320)로 나타낸다. 잠금은 클라이언트 시스템, 예컨대 클라이언트 컴퓨터(104)의 공동 저작 사용자가 단락 A를 편집함을 나타내는 메타데이터이다. 잠금이 클라이언트 컴퓨터(102)에서 수신될 때, 잠금은 또한 실행 취소/재실행 스택의 실행 취소 섹션에 부가된다. 이것은 예시적인 잠금 심벌(322)로 나타낸다. 잠금(322)은 또한 실행 취소/재실행 스택의 실행 취소 부분 내의 이전의 엔트리 "-C" 주변에서 브래킷(324)을 통해 묶여지는 것으로 보여진다. 잠금이 이전의 엔트리 "-C" 주변에서 묶여지는 것으로 보여지는 이유는 메타데이터 병합 전에 문서의 상태를 강조하기 위한 것이다.
시간 스냅샷(310)에서, 예시적인 클라이언트 컴퓨터(102)에서의 사용자는 단락 C에서 행해진 최종 엔트리를 실행 취소하는 실행 취소 동작을 수행하도록 결정한다. 실행 취소 동작이 수행될 때, 예시적인 실행 취소/재실행 모듈(208)은 일시적으로 예시적인 문서(330) 내의 잠금을 제거하고, 단락 C에서 행해진 최종 엔트리를 위한 실행 취소 동작을 수행하여, 예시적인 문서(330) 내에 잠금을 재삽입한다. 이들 동작은 예시적인 실행 취소/재실행 스택의 재실행 부분(326)에 부가된다. 이들 동작은 필요하다면 재실행 동작에 의해 동작이 복귀될 수 있도록 예시적인 실행 취소/재실행 스택의 재실행 부분(326)에 부가된다.
예시적인 실행 취소/재실행 스택의 예시적인 재실행 부분(326)은 단락 C에서 행해지고, 예시적인 실행 취소/재실행 스택의 예시적인 재실행 부분(326)의 최하부에서 최상부로 진행하는 최종 엔트리를 위한 실행 취소 동작을 재실행하기 위해, 먼저 현재 잠금은 제거되며(심벌 "-L"로 나타냄), 그 후 단락 C에 대한 최종 엔트리가 단락 C 내에 재삽입되고 나서, 잠금이 문서 내에 재삽입된다(심벌 "L"로 나타냄).
시간 스냅샷(310)은 또한, 단락 C에 대한 실행 취소 동작 후에, 예시적인 문서(330)가 단락 A 및 B을 포함함을 보여준다. 이것은, 단순함을 위해, 단락 C에 대한 실행 취소 동작이 단락 C 내의 모든 텍스트를 제거하는 것으로 추정한다. 시간 스냅샷(310)은 또한, 단락 C에서의 최종 사용자 동작이 실행 취소된 후에, 예시적인 실행 취소/재실행 스택(328)의 재실행 부분이 단락 B의 최종 사용자 동작 및 잠금을 보여줌을 나타낸다. 이것은 다음 실행 취소 동작이 잠금을 일시 제거하여, 단락 B의 최종 사용자 동작을 실행 취소하기 위해 설정됨을 나타낸다.
시간 스냅샷(312)에서, 예시적인 클라이언트 컴퓨터(102)에서의 사용자는 새로운 단락 D의 타이핑을 개시한다. 사용자가 새로운 동작을 개시할 때마다, 실행 취소/재실행 스택의 재실행 부분은 소거된다. 이것은, 일단 새로운 동작이 시작되면, 이전의 실행 취소 동작이 더 이상 복귀될 수 없기 때문이다. 예컨대, 사용자가 "t" "h" 및 "s"를 타이핑하면, "s"에 대한 실행 취소 동작을 행하고, "e"를 타이핑하며, 재실행 스택이 "e"가 타이핑될 때에 소거되지 않으면, 재실행 동작은 "s"를 복원시켜, "t" "h" "e" "s"를 생성시키며, 이는 명백히 의도된 것이 아니다.
시간 스냅샷(312)의 예시적인 문서 부분(330)은 단락 D이 문서에 부가되었음을 보여준다. 시간 스냅샷(312)에 대한 예시적인 실행 취소/재실행 스택의 예시적인 실행 취소 부분(332)은 부가된 심벌 "-D"을 보여준다. 단락 D이 단락 A의 잠금이 수신된 후에 작성되기 때문에, 단락 D에 대한 최종 사용자 동작은 먼저 잠금을 제거하지 않고 실행 취소될 수 있다. 그러나, 단락 D에 대한 최종 사용자 동작은 단락 A에 대한 최종 사용자 동작이 실행 취소되는 순서로 재실행되면, 예시적인 문서(330)의 잠금은 논의된 바와 같이 일시적으로 제거되어야 한다.
도 4는 예시적인 클라이언트 컴퓨터(102)에 의해 수행되는 예시적인 동작(400)을 설명한 흐름도를 도시한 것이다. 동작(402)에서, 공유 문서는 예시적인 클라이언트 컴퓨터(102)에서 열린다. 공유 문서는 온라인 브라우저 기반 문서 협업 서버, 예컨대, Microsoft SharePoint Server 2007 상에 저장되는 문서이다. 공유 문서는 또한 다른 사용자, 예컨대, 예시적인 클라이언트 컴퓨터(104)의 사용자에 의해 공동 저작하기 위해 이용 가능하다. 공유 문서는 예시적인 문서 처리 모듈(202)을 이용하여 열리고 처리된다.
동작(404)에서, 클라이언트 컴퓨터(102)의 공동 저작 사용자는 문서의 제 1 단락을 수정한다. 사용자는 제 1 단락을 타이핑하고, 제 1 단락의 부분을 삭제하거나 제 1 단락의 포맷 변경을 행하여 제 1 단락을 수정할 수 있다. 제 1 단락을 타이핑하는 것은 제 1 단락을 작성하고, 제 1 단락의 텍스트를 편집하는 것을 포함한다.
동작(406)에서, 클라이언트 컴퓨터(102)의 예시적인 메타데이터 병합 모듈(204)은 문서의 제 2 단락에 대한 메타데이터 잠금을 수신한다. 동작(408)에서, 예시적인 메타데이터 병합 모듈(204)은 문서의 제 2 단락 내에 메타데이터 잠금을 삽입한다. 메타데이터 잠금은 클라이언트 컴퓨터(104)에 대한 다른 클라이언트 시스템의 공동 저작 사용자가 문서의 제 2 단락을 수정함을 나타낸다. 메타데이터 잠금은 클라이언트 컴퓨터(102)의 사용자가 문서의 제 2 단락을 수정하지 못하게 한다.
동작(410)에서, 예시적인 사용자 인터페이스 모듈(206)은 메타데이터 잠금을 문서에 그래픽 형식으로 표시하여, 클라이언트(102)의 공동 저작 사용자가 문서의 어떤 단락이 잠겨있는 지를 신속히 찾을 수 있다. 동작(412)에서, 예시적인 메타데이터 병합 모듈(204)은 클라이언트 컴퓨터(102) 상의 실행 취소/재실행 스택에 메타데이터 잠금을 저장한다.
동작(414)에서, 클라이언트 컴퓨터(102)의 공동 저작 사용자는 실행 취소 동작을 개시한다. 예컨대, 클라이언트 컴퓨터(102)의 공동 저작 사용자는 문서의 제 1 단락에서 최종 사용자 동작을 실행 취소하기를 원할 수 있다. 실행 취소 동작은 예시적인 실행 취소/재실행 모듈(208)에 의해 처리된다. 최종 사용자 동작은 문자를 타이핑하고, 제 1 단락의 부분을 삭제하며, 제 1 단락의 포맷 변경을 행하는 것을 포함할 수 있는 편집 동작이다. 사용자는 전형적으로 실행 취소 동작과 관련된 클라이언트 컴퓨터(102)의 키를 누름으로써, 예컨대, 실행 취소 키를 누름으로써 실행 취소 동작을 개시한다.
동작(416)에서, 예시적인 클라이언트 컴퓨터(102)의 실행 취소/재실행 스택과 다른 영역에서, 예시적인 메타데이터 병합 모듈(204)은 실행 취소/재실행 스택의 메타데이터 잠금을 제거하여, 일시적으로 메모리 내에 메타데이터 잠금을 저장한다. 동작(418)에서, 최종 사용자 동작이 실행 취소되고, 동작(420)에서, 예시적인 메타데이터 병합 모듈(204)은 실행 취소/재실행 스택 상에 메타데이터 잠금을 복원시킨다.
도 5는 클라이언트(102) 상의 예시적인 물리적 구성 요소를 도시한 블록도이다. 클라이언트 컴퓨터(104) 및 서버 컴퓨터(108) 및/또는 클라이언트 컴퓨터(102 및 104) 및/또는 서버 컴퓨터(108) 내의 전자 컴퓨팅 장치는 클라이언트(102)의 것과 유사한 방식으로 구현될 수 있다.
도 5의 예에서 예시된 바와 같이, 클라이언트(102)는 데스크탑 컴퓨터, 랩탑 컴퓨터, 단말 컴퓨터, 휴대용 개인 정보 단말기 또는 셀룰러 전화 장치와 같은 전자 컴퓨팅 장치이다.
클라이언트는 메모리 유닛(501)을 포함한다. 메모리 유닛(501)은 데이터 및 명령어를 저장할 수 있는 컴퓨터 판독 가능한 데이터 저장 매체이다. 메모리 유닛(501)은 동적 랜덤 액세스 메모리(DRAM), 더블 데이터 레이트 동기식 동적 랜덤 액세스 메모리(DDR SDRAM), 지연 시간 감소(reduced latency) DRAM, DDR SDRAM, DDR3 SDRAM, Rambus RAM 또는 다른 타입의 컴퓨터 판독 가능한 데이터 저장 매체이다.
클라이언트(102)는 또한 통신 매체를 포함할 수 있다. 통신 매체는 전형적으로 반송파 또는 다른 전송 메카니즘과 같이 변조된 데이터 신호로 컴퓨터 판독 가능한 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터에 의해 실시될 수 있고, 어떤 정보 전달 매체를 포함한다. 용어 "변조된 데이터 신호"는 하나 이상의 특성을 가지거나, 신호의 정보를 인코딩하는 방식으로 변화시키는 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체, 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다.
게다가, 클라이언트(102)는 처리 유닛(502)을 포함한다. 제 1 예에서, 처리 유닛(502)은 처리 유닛(502)이 특정 기능을 제공하도록 하는 소프트웨어 명령어를 실행할 수 있다. 이러한 제 1 예에서, 처리 유닛(502)은 하나 이상의 처리 코어 및/또는 하나 이상의 분리 마이크로프로세서로서 구현될 수 있다. 예컨대, 이러한 제 1 예에서, 처리 유닛(502)은 하나 이상의 Intel Core2 마이크로프로세서로서 구현될 수 있다. 처리 유닛(502)은 ×86 명령어 세트, POWER 명령어 세트, RISC 명령어 세트, SPARC 명령어 세트, IA-64 명령어 세트, MIPS 명령어 세트 또는 다른 명령어 세트와 같은 명령어 세트에서의 명령어를 실행할 수 있다. 제 2 예에서, 처리 유닛(502)은 특정 기능을 제공하는 주문형 반도체(ASIC)로서 구현될 수 있다. 제 3 예에서, 처리 유닛(502)은 ASIC를 이용하고, 소프트웨어 명령어를 실행하여 특정 기능을 제공할 수 있다.
클라이언트(102)는 또한 클라이언트 컴퓨터(102 및 104) 또는 서버 컴퓨터(108)가 비디오 정보를 표시 장치(506)로 출력시킬 수 있도록 하는 비디오 인터페이스(504)를 포함한다. 표시 장치(506)는 다양한 서로 다른 타입의 표시 장치일 수 있다. 예컨대, 표시 장치(506)는 음극선관 표시부, LCD 표시 패널, 플라즈마 스크린 표시 패널, 터치 감지 표시 패널, LED 어레이 또는 다른 타입의 표시 장치일 수 있다.
게다가, 클라이언트(102)는 비휘발성 저장 장치(508)를 포함한다. 비휘발성 저장 장치(508)는 데이터 및/또는 명령어를 저장할 수 있는 컴퓨터 판독 가능한 데이터 저장 매체이다. 비휘발성 저장 장치(508)는 다양한 서로 다른 타입의 서로 다른 비휘발성 저장 장치일 수 있다. 예컨대, 비휘발성 저장 장치(508)는 하나 이상의 하드 디스크 드라이브, 자기 테이프 드라이브, CD-ROM 드라이브, DVD-ROM 드라이브, Blu-Ray 디스크 드라이브 또는 다른 타입의 비휘발성 저장 장치일 수 있다.
클라이언트(102)는 또한 클라이언트 컴퓨터(102 및 104) 및 서버 컴퓨터(108)가 외부 구성 요소와 통신하게 할 수 있는 외부 구성 요소 인터페이스(510)를 포함한다. 도 5의 예에 예시된 바와 같이, 외부 구성 요소 인터페이스(510)는 입력 장치(512) 및 외부 저장 장치(514)와 통신한다. 클라이언트(102)의 일 구현에서, 외부 구성 요소 인터페이스(510)는 USB(Universal Serial Bus) 인터페이스이다. 클라이언트(102)의 다른 구현에서, 클라이언트(102)는 클라이언트(102)가 입력 장치 및/또는 출력 장치와 통신하게 할 수 있는 다른 타입의 인터페이스를 포함할 수 있다. 예컨대, 클라이언트(102)는 PS/2 인터페이스를 포함할 수 있다. 입력 장치(512)는 키보드, 마우스, 트랙볼, 스타일러스 입력 장치, 터치 패드, 터치 감지 표시 장치, 터치 감지 표시 스크린 또는 다른 타입의 입력 장치를 포함하지만, 이에 제한되지 않는 다양한 서로 다른 타입의 장치일 수 있다. 외부 저장 장치(514)는 자기 테이프, 플래시 메모리 모듈, 자기 디스크 드라이브, 광 디스크 드라이브 및 다른 컴퓨터 판독 가능한 데이터 저장 매체를 포함하는 다양한 서로 다른 타입의 컴퓨터 판독 가능한 데이터 저장 매체일 수 있다.
게다가, 클라이언트(102)는 클라이언트(102)가 데이터를 네트워크(106)로 송신하고, 네트워크(106)로부터 데이터를 수신하도록 할 수 있는 네트워크 인터페이스(516)를 포함한다. 네트워크 인터페이스(516)는 다양한 서로 다른 타입의 네트워크 인터페이스일 수 있다. 예컨대, 네트워크 인터페이스(516)는 Ethernet 인터페이스, 토큰 링 인터페이스, 광섬유 인터페이스, 무선 네트워크 인터페이스(예컨대, WiFi, WiMax 등) 또는 다른 타입의 네트워크 인터페이스일 수 있다.
클라이언트(102)는 또한 클라이언트(102)의 여러 구성 요소 중 통신을 용이하게 하는 통신 매체(518)를 포함한다. 통신 매체(518)는 PCI 버스, PCI Express 버스, 가속 그래픽 포트(AGP) 버스, 인피니밴드(Infiniband) 상호 접속, 직렬 ATA(Advanced Attachment) 상호 접속, 병렬 ATA 상호 접속, 광섬유 채널 상호 접속, USB 버스, SCSI(Small Computer System Interface) 인터페이스 또는 다른 타입의 통신 매체를 포함하지만, 이에 제한되지 않는 하나 이상의 서로 다른 타입의 통신 매체를 포함한다.
수개의 컴퓨터 판독 가능한 데이터 저장 매체는 도 5의 예(즉, 메모리 유닛(501), 비휘발성 저장 장치(508) 및 외부 저장 장치(514))에서 예시된다. 동시에, 이들 컴퓨터 판독 가능한 데이터 저장 매체는 단일의 논리적 컴퓨터 판독 가능한 데이터 저장 매체를 구성할 수 있다. 이러한 단일의 논리적 컴퓨터 판독 가능한 데이터 저장 매체는 처리 유닛(502)에 의해 실행 가능한 명령어를 저장할 수 있다. 상기 설명에서 기술된 동작은 이러한 단일의 논리적 컴퓨터 판독 가능한 데이터 저장 매체 상에 저장된 명령어의 실행으로부터 생성될 수 있다. 따라서, 이러한 설명은 특정 논리적 모듈이 특정 동작을 수행한다는 것을 말할 때, 이와 같은 진술은, 소프트웨어 모듈의 명령어에 의해, 처리 유닛(502)과 같은 처리 유닛이 동작을 수행하게 됨을 의미하는 것으로 해석될 수 있다.
상술한 여러 실시예는 단지 예시로서 제공되고, 제한하는 것으로 해석되지 않아야 한다. 본 개시 내용의 참된 사상 및 범주 내에서 상술한 실시예에 대한 여러 수정 및 변경이 행해질 수 있다.

Claims (18)

  1. 클라이언트 컴퓨터에서 실행 취소 동작(undo operation) 동안 메타데이터를 보존하는 방법으로서,
    상기 클라이언트 컴퓨터에서, 상기 클라이언트 컴퓨터상의 워드 프로세싱 애플리케이션에서 문서의 제1 섹션을 수정하는 단계- 상기 문서의 제1 섹션을 수정하는 단계는 상기 문서의 제1 섹션에서 하나 이상의 사용자 동작을 수행하는 단계를 포함함 -와,
    상기 문서의 제1 섹션을 수정하는 동안, 상기 클라이언트 컴퓨터에서, 상기 문서의 제2 섹션에 대한 메타데이터를 수신하는 단계- 상기 문서의 제2 섹션은 상기 문서의 제1 섹션과 상이함 -와,
    상기 문서의 제2 섹션에 대한 상기 메타데이터를 수신한 후, 상기 메타데이터를 상기 문서의 제2 섹션 내에 삽입하는 단계와,
    상기 메타데이터가 상기 문서의 제2 섹션 내에 삽입된 후, 상기 워드 프로세싱 애플리케이션에서 실행 취소 동작을 수행하는 단계를 포함하되,
    상기 실행 취소 동작은
    상기 클라이언트 컴퓨터에서, 상기 문서의 제2 섹션에 대한 상기 메타데이터를 제거하는 단계,
    상기 문서의 제1 섹션에서 상기 하나 이상의 사용자 동작 중 최종 사용자 동작을 실행 취소하는 단계, 및
    상기 문서의 제2 섹션에 대한 상기 메타데이터를 복원하는 단계
    를 포함하고,
    상기 클라이언트 컴퓨터에서 상기 문서의 제2 섹션에 대한 상기 메타데이터를 제거하는 단계는 프로그램 스택으로부터 상기 메타데이터를 제거하고 상기 메타데이터를 상기 프로그램 스택과 다른 상기 클라이언트 컴퓨터상의 메모리의 영역에 저장하는 단계를 포함하는
    메타데이터를 보존하는 방법.
  2. 제1항에 있어서,
    상기 클라이언트 컴퓨터에서 수신된 상기 문서의 제2 섹션에 대한 상기 메타데이터는 상기 문서의 제2 섹션에 대한 잠금(lock)인
    메타데이터를 보존하는 방법.
  3. 제1항에 있어서,
    상기 문서의 제1 섹션은 상기 문서의 단락(paragraph)에 대응하는
    메타데이터를 보존하는 방법.
  4. 제1항에 있어서,
    수신된 상기 문서의 제2 섹션에 대한 상기 메타데이터를 프로그램 스택에 저장하는 단계를 더 포함하는
    메타데이터를 보존하는 방법.
  5. 제4항에 있어서,
    상기 프로그램 스택은 실행 취소/재실행 스택인
    메타데이터를 보존하는 방법.
  6. 제4항에 있어서,
    상기 하나 이상의 사용자 동작은 상기 프로그램 스택에 저장되는
    메타데이터를 보존하는 방법.
  7. 제4항에 있어서,
    상기 최종 사용자 동작을 실행 취소하는 단계는 상기 프로그램 스택에서 상기 최종 사용자 동작을 제거하는 단계를 포함하는
    메타데이터를 보존하는 방법.

  8. 제7항에 있어서,
    상기 문서의 제2 섹션에 대한 상기 메타데이터를 복원하는 단계는 상기 프로그램 스택과 다른 상기 클라이언트 컴퓨터상의 상기 메모리의 영역으로부터 상기 메타데이터를 획득하고 상기 획득된 메타데이터를 상기 프로그램 스택에 저장하는 단계를 포함하는
    메타데이터를 보존하는 방법.
  9. 제1항에 있어서,
    상기 하나 이상의 사용자 동작은 상기 문서의 제1 섹션에 타이핑하는 동작, 상기 문서의 제1 섹션에서 포맷 변경을 행하는 동작, 및 상기 문서의 제1 섹션에서 텍스트를 삭제하는 동작을 포함하는
    메타데이터를 보존하는 방법.
  10. 제1항에 있어서,
    상기 문서의 제1 섹션은 제1 사용자가 편집중인 상기 문서의 제1 단락에 대응하며, 상기 문서의 제2 섹션은 제2 사용자가 편집중인 제2 단락에 대응하는
    메타데이터를 보존하는 방법.
  11. 제10항에 있어서,
    상기 제2 사용자가 상기 제1 단락을 수정하지 못하게 하는 제1 잠금을 전송하는 단계를 더 포함하는 메타데이터를 보존하는 방법.
  12. 제11항에 있어서,
    상기 제1 사용자가 상기 제2 단락을 수정하지 못하게 하는 제2 잠금을 수신하는 단계를 더 포함하는 메타데이터를 보존하는 방법.
  13. 컴퓨팅 장치로서,
    처리 유닛과,
    상기 처리 유닛에 연결된 시스템 메모리를 포함하되,
    상기 시스템 메모리는 명령어들을 포함하고, 상기 명령어들은 상기 처리 유닛에 의해 실행되는 경우 상기 처리 유닛으로 하여금,
    사용자가 상기 컴퓨팅 장치상에서 문서를 작성하고 편집할 수 있도록 하는 문서 처리 모듈,
    서버 컴퓨터로부터 메타데이터를 수신하고, 상기 문서 처리 모듈에 의해 열려지는 문서의 하나 이상의 섹션 내에 상기 메타데이터를 삽입하는 메타데이터 병합 모듈,
    하나 이상의 사용자 동작을 저장하고, 상기 서버 컴퓨터로부터 수신된 메타데이터를 저장하는 실행 취소/재실행 모듈- 상기 실행 취소/재실행 모듈은 실행 취소/재실행 스택을 포함하고, 상기 메타데이터 및 사용자 동작은 상기 실행 취소/재실행 스택에 저장되고, 상기 실행 취소/재실행 모듈은 사용자 동작을 실행 취소하기 전에 상기 문서의 하나 이상의 섹션으로부터 메타데이터를 제거하고, 상기 사용자 동작을 실행 취소한 후에 상기 문서의 상기 하나 이상의 섹션 내에 제거된 상기 메타데이터를 재삽입함으로써 사용자가 상기 하나 이상의 사용자 동작을 실행 취소하도록 함 -, 및
    서버 컴퓨터로부터 수신된 메타데이터를 문서상에 디스플레이하는 사용자 인터페이스 모듈
    을 생성하게 하되,
    상기 실행 취소/재실행 모듈은 상기 실행 취소/재실행 스택으로부터 상기 메타데이터를 제거하고 상기 메타데이터를 상기 실행 취소/재실행 스택과 다른 상기 컴퓨팅 장치상의 메모리의 영역에 저장하는
    컴퓨팅 장치.
  14. 제13항에 있어서,
    상기 문서의 하나 이상의 섹션은 단락인
    컴퓨팅 장치.
  15. 제14항에 있어서,
    상기 메타데이터는 잠금(lock)이며, 상기 잠금은 사용자가 상기 잠금이 삽입되는 상기 문서의 상기 하나 이상의 섹션에 기록하지 못하게 하는
    컴퓨팅 장치.
  16. 제13항에 있어서,
    상기 메타데이터는 잠금이며, 상기 잠금은 사용자가 상기 잠금이 삽입되는 상기 문서의 상기 하나 이상의 섹션에 기록하지 못하게 하는
    컴퓨팅 장치.
  17. 제13항에 있어서,
    상기 실행 취소/재실행 모듈은 재실행 프로그램 스택을 더 포함하고, 상기 재실행 프로그램 스택은 하나 이상의 사용자 동작 및 메타데이터를 저장하며, 상기 재실행 프로그램 스택은 상기 문서의 상기 메타데이터의 무결성을 유지하면서 사용자 동작에 대한 실행 취소 동작이 취소되게 하는
    컴퓨팅 장치.
  18. 명령어들을 포함하는 컴퓨터 판독 가능한 저장 매체로서,
    상기 명령어들은 클라이언트 컴퓨터의 처리 유닛에 의해 실행될 때, 상기 클라이언트 컴퓨터의 처리 유닛으로 하여금,
    상기 클라이언트 컴퓨터상의 문서의 제1 단락을 편집하게 하고- 상기 제1 단락은 상기 클라이언트 컴퓨터상에서 사용자에 의해 편집되고, 상기 문서의 제1 단락의 편집은 상기 문서의 제1 단락 내의 하나 이상의 사용자 동작을 포함하고, 상기 하나 이상의 사용자 동작은 상기 제1 단락에 타이핑하는 것, 상기 제1 단락에서 텍스트를 삭제하는 것, 상기 제1 단락에서 스타일 변경을 행하는 것, 상기 제1 단락을 포맷팅하는 것을 포함하며, 상기 문서의 제1 단락에서의 상기 하나 이상의 사용자 동작은 상기 클라이언트 컴퓨터상의 실행 취소/재실행 스택에 저장됨 -,
    상기 문서의 제1 단락을 편집하는 동안, 상기 클라이언트 컴퓨터에서 상기 문서의 제2 단락에 대한 잠금을 수신하게 하고- 상기 잠금은 서버 컴퓨터로부터 수신되고, 상기 잠금은 제2 클라이언트 컴퓨터의 또 다른 사용자가 현재 상기 문서의 제2 단락을 편집하고 있음을 나타내며, 상기 잠금은 상기 사용자가 상기 제2 단락을 편집하지 못하게 함 -,
    상기 문서의 제2 단락에 대한 잠금을 수신한 후에, 상기 클라이언트 컴퓨터의 처리 유닛으로 하여금,
    상기 잠금을 상기 문서의 제2 단락 내에 삽입하게 하고- 상기 잠금은 상기 클라이언트 컴퓨터상의 상기 사용자가 상기 클라이언트 컴퓨터상의 상기 제2 단락을 편집하지 못하게 함 -,
    상기 클라이언트 컴퓨터의 상기 실행 취소/재실행 스택에 상기 잠금을 저장하게 하며,
    상기 클라이언트 컴퓨터의 상기 실행 취소/재실행 스택에 상기 잠금을 저장한 후에, 상기 클라이언트 컴퓨터에서 실행 취소 동작을 수행하게 하되,
    상기 실행 취소 동작은 상기 클라이언트 컴퓨터의 상기 처리 유닛으로 하여금,
    상기 클라이언트 컴퓨터에서의 상기 실행 취소/재실행 스택으로부터 상기 문서의 제2 단락에 대한 상기 잠금을 제거하게 하고,
    상기 잠금이 상기 클라이언트 컴퓨터에서의 상기 실행 취소/재실행 스택으로부터 제거될 때, 상기 잠금을 상기 클라이언트 컴퓨터상의 메모리 내에 일시 저장하게 하며- 상기 잠금은 상기 실행 취소/재실행 스택을 포함하지 않는 메모리의 영역 내에 저장됨 -,
    상기 잠금이 상기 클라이언트 컴퓨터에서의 상기 실행 취소/재실행 스택으로부터 제거될 때, 상기 클라이언트 컴퓨터에서 상기 하나 이상의 사용자 동작 중 최종 동작을 실행 취소하게 하며- 상기 하나 이상의 사용자 동작 중 상기 최종 동작은 상기 실행 취소/재실행 스택으로부터 제거됨 -,
    상기 하나 이상의 사용자 동작 중 상기 최종 동작이 상기 클라이언트 컴퓨터에서 실행 취소된 후에, 상기 잠금이 일시 저장되는 상기 클라이언트 컴퓨터상의 상기 메모리의 영역으로부터 상기 잠금을 제거하고 상기 잠금을 상기 실행 취소/재실행 스택 상에 복원시키게 하는
    컴퓨터 판독 가능한 저장 매체.
KR1020117025468A 2009-04-29 2010-04-21 메타데이터 병합에 걸친 실행 취소 및 재실행 능력의 유지 KR101683322B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/431,883 2009-04-29
US12/431,883 US8209603B2 (en) 2009-04-29 2009-04-29 Maintaining undo and redo capability across metadata merges
PCT/US2010/031951 WO2010126763A2 (en) 2009-04-29 2010-04-21 Maintaining undo and redo capability across metadata merges

Publications (2)

Publication Number Publication Date
KR20120011332A KR20120011332A (ko) 2012-02-07
KR101683322B1 true KR101683322B1 (ko) 2016-12-06

Family

ID=43031324

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117025468A KR101683322B1 (ko) 2009-04-29 2010-04-21 메타데이터 병합에 걸친 실행 취소 및 재실행 능력의 유지

Country Status (14)

Country Link
US (1) US8209603B2 (ko)
EP (1) EP2425357B1 (ko)
JP (1) JP5684236B2 (ko)
KR (1) KR101683322B1 (ko)
CN (1) CN102414679B (ko)
AU (1) AU2010241861B2 (ko)
BR (1) BRPI1012014A8 (ko)
CA (1) CA2756687C (ko)
IL (1) IL215273A0 (ko)
MX (1) MX2011011350A (ko)
RU (1) RU2554785C2 (ko)
TW (1) TWI412942B (ko)
WO (1) WO2010126763A2 (ko)
ZA (1) ZA201106939B (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10069924B2 (en) * 2007-07-25 2018-09-04 Oath Inc. Application programming interfaces for communication systems
US20110010638A1 (en) * 2009-07-10 2011-01-13 Novell, Inc. Presence-enabled inbox
US9208137B2 (en) * 2010-08-19 2015-12-08 Cadence Design Systems, Inc. Method to preview an undo/redo list
US20120101980A1 (en) * 2010-10-26 2012-04-26 Microsoft Corporation Synchronizing online document edits
CN102262620B (zh) * 2011-08-04 2014-11-26 无锡永中软件有限公司 一种文档协作方法
US9948988B2 (en) * 2011-10-04 2018-04-17 Ricoh Company, Ltd. Meeting system that interconnects group and personal devices across a network
US10733151B2 (en) 2011-10-27 2020-08-04 Microsoft Technology Licensing, Llc Techniques to share media files
US8949352B2 (en) 2011-10-28 2015-02-03 Microsoft Corporation Document sharing through browser
US8484166B2 (en) * 2011-11-03 2013-07-09 Oracle International Corporation Oracle rewind: metadata-driven undo
US9053079B2 (en) 2011-12-12 2015-06-09 Microsoft Technology Licensing, Llc Techniques to manage collaborative documents
US11392601B2 (en) 2012-01-18 2022-07-19 Google Llc Search-based document user interfaces
US11514230B2 (en) * 2012-01-18 2022-11-29 Google Llc Methods and systems for searching document operation labels
US9262180B2 (en) * 2012-04-26 2016-02-16 Adobe Systems Incorporated Method and apparatus for recommending product features in a software application in real time
US20150199307A1 (en) * 2012-08-08 2015-07-16 Google Inc. Pluggable Architecture For Optimizing Versioned Rendering of Collaborative Documents
US9336234B2 (en) 2013-02-22 2016-05-10 Adobe Systems Incorporated Online content management system with undo and redo operations
CN104238865A (zh) * 2013-06-08 2014-12-24 深圳联友科技有限公司 一种在电子设备中撤消和重做界面操作的方法及系统
CN103501339B (zh) * 2013-09-30 2017-06-20 华为技术有限公司 元数据处理方法及元数据服务器
US9530233B2 (en) * 2013-10-10 2016-12-27 Adobe Systems Incorporated Action records associated with editable content objects
US9817805B1 (en) 2014-06-24 2017-11-14 Google Inc. Systems and methods for providing a collaborative document environment
JP6512763B2 (ja) * 2014-07-16 2019-05-15 キヤノン株式会社 情報処理装置、情報処理方法、プログラム
CN104156344B (zh) * 2014-07-21 2016-09-28 小米科技有限责任公司 文本编辑方法和装置
US10491695B2 (en) * 2014-08-22 2019-11-26 Oracle International Corporation Autosave with across user session undo support
KR101683448B1 (ko) * 2014-12-02 2016-12-07 주식회사 인프라웨어 복합 명령에 대한 실행 취소 방법
WO2016094868A1 (en) * 2014-12-11 2016-06-16 LiveLoop, Inc. Method and system for concurrent collaborative undo operations in computer application software
US20160321226A1 (en) * 2015-05-01 2016-11-03 Microsoft Technology Licensing, Llc Insertion of unsaved content via content channel
US9972109B2 (en) * 2015-07-30 2018-05-15 Adobe Systems Incorporated Implementing out of order access to reversal operations in images
CN106250221B (zh) * 2016-07-28 2019-06-11 福建天泉教育科技有限公司 基于PowerPoint应用对象的插入方法及其系统
CA3110732C (en) 2020-05-07 2022-03-15 Citrix Systems, Inc. Dynamic region based application operations
CN113836875B (zh) * 2021-09-16 2023-08-22 网易(杭州)网络有限公司 文本处理方法、系统、装置、存储介质
CN114816593A (zh) * 2022-06-27 2022-07-29 天津联想协同科技有限公司 一种命令的执行方法、装置及可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020065848A1 (en) * 2000-08-21 2002-05-30 Richard Walker Simultaneous multi-user document editing system
US20080189646A1 (en) * 2006-09-28 2008-08-07 Sap Ag System and method for extending legacy applications with undo/redo functionality

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2920393B2 (ja) * 1989-12-14 1999-07-19 株式会社日立製作所 文書編集方法
DE69126066T2 (de) * 1990-06-29 1997-09-25 Oracle Corp Verfahren und Gerät zur Optimierung des Logbuchaufhebungsgebrauchs
CA2147380C (en) * 1992-12-23 2000-07-18 Object Technology Licensing Corporation Atomic command system
US5890181A (en) * 1996-11-14 1999-03-30 Kurzwell Applied Intelligence, Inc. System and method for remotely grouping contents of an action history stack
US5966512A (en) 1997-06-05 1999-10-12 International Business Machines Corporation Groupware save operation
US6067551A (en) * 1997-11-14 2000-05-23 Microsoft Corporation Computer implemented method for simultaneous multi-user editing of a document
US6192378B1 (en) * 1998-05-13 2001-02-20 International Business Machines Corporation Method and apparatus for combining undo and redo contexts in a distributed access environment
US7096465B1 (en) * 1999-05-17 2006-08-22 Invensys Systems, Inc. Process control configuration system with parameterized objects
EP1204048A1 (en) * 2000-11-03 2002-05-08 Sun Microsystems, Inc. Method and apparatus for handling scenarios in spreadsheet documents
US7823060B2 (en) * 2002-06-07 2010-10-26 Microsoft Corporation Undo/redo architecture across multiple files
US6981004B2 (en) * 2002-09-16 2005-12-27 Oracle International Corporation Method and mechanism for implementing in-memory transaction logging records
US6976022B2 (en) * 2002-09-16 2005-12-13 Oracle International Corporation Method and mechanism for batch processing transaction logging records
US20080177994A1 (en) * 2003-01-12 2008-07-24 Yaron Mayer System and method for improving the efficiency, comfort, and/or reliability in Operating Systems, such as for example Windows
US8719325B2 (en) * 2003-02-28 2014-05-06 Microsoft Corporation Method to initiate server based collaboration on e-mail attachments
CA2422176C (en) * 2003-03-14 2009-07-21 Ibm Canada Limited - Ibm Canada Limitee Method and apparatus for interrupting updates to a database to provide read-only access
US7818679B2 (en) * 2004-04-20 2010-10-19 Microsoft Corporation Method, system, and apparatus for enabling near real time collaboration on an electronic document through a plurality of computer systems
JP4069905B2 (ja) * 2004-06-28 2008-04-02 コニカミノルタビジネステクノロジーズ株式会社 共有ファイル管理システムおよびサーバー
US7499955B2 (en) * 2005-03-30 2009-03-03 Microsoft Corporation System and method for undoing application actions using inverse actions with atomic rollback
US7865872B2 (en) * 2006-12-01 2011-01-04 Murex S.A.S. Producer graph oriented programming framework with undo, redo, and abort execution support
US7900142B2 (en) * 2007-01-15 2011-03-01 Microsoft Corporation Selective undo of editing operations performed on data objects
KR100819005B1 (ko) * 2007-02-16 2008-04-03 삼성전자주식회사 저항체를 이용한 비휘발성 메모리 장치
US8239760B2 (en) * 2007-06-26 2012-08-07 Sap Ag Multi-user document editing system and method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020065848A1 (en) * 2000-08-21 2002-05-30 Richard Walker Simultaneous multi-user document editing system
US20080189646A1 (en) * 2006-09-28 2008-08-07 Sap Ag System and method for extending legacy applications with undo/redo functionality

Also Published As

Publication number Publication date
WO2010126763A3 (en) 2011-01-13
US8209603B2 (en) 2012-06-26
BRPI1012014A2 (pt) 2016-05-10
KR20120011332A (ko) 2012-02-07
CN102414679A (zh) 2012-04-11
ZA201106939B (en) 2012-11-29
IL215273A0 (en) 2011-11-30
MX2011011350A (es) 2011-11-18
CA2756687A1 (en) 2010-11-04
RU2554785C2 (ru) 2015-06-27
EP2425357A2 (en) 2012-03-07
CN102414679B (zh) 2013-07-17
WO2010126763A2 (en) 2010-11-04
US20100281362A1 (en) 2010-11-04
JP5684236B2 (ja) 2015-03-11
TWI412942B (zh) 2013-10-21
CA2756687C (en) 2016-06-21
BRPI1012014A8 (pt) 2017-10-03
RU2011143848A (ru) 2013-05-10
EP2425357B1 (en) 2020-10-14
AU2010241861B2 (en) 2014-07-10
JP2012525635A (ja) 2012-10-22
AU2010241861A1 (en) 2011-10-20
EP2425357A4 (en) 2018-01-10
TW201039148A (en) 2010-11-01

Similar Documents

Publication Publication Date Title
KR101683322B1 (ko) 메타데이터 병합에 걸친 실행 취소 및 재실행 능력의 유지
JP2012525635A5 (ko)
EP3686748B1 (en) Synchronizing content blocks between multiple electronic documents
CN106471487B (zh) 用于使用应用引擎来编辑非本原应用中的文件的系统和方法
US20180024977A1 (en) Simultaneous collaborative review of a document
US6585777B1 (en) Method for managing embedded files for a document saved in HTML format
US9652440B2 (en) Concurrent utilization of a document by multiple threads
US20070061704A1 (en) Dynamic anchoring of annotations to editable content
JP2006178946A (ja) ワークブックを表現するためのファイルフォーマット、方法およびコンピュータプログラム製品
US10565301B2 (en) Stateful editing of rich content using a basic text box
RU2586872C2 (ru) Удаление поврежденных стилей из документов расширяемого языка разметки
US20070038928A1 (en) Delaying optimal paragraph layout during editing
US9063949B2 (en) Inferring a sequence of editing operations to facilitate merging versions of a shared document
US9268755B2 (en) Performing persistent undo and redo operation within computer software
CN102855283A (zh) 一种办公自动化系统文件归档保存方法
US10706012B2 (en) File creation

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right