KR101683322B1 - 메타데이터 병합에 걸친 실행 취소 및 재실행 능력의 유지 - Google Patents
메타데이터 병합에 걸친 실행 취소 및 재실행 능력의 유지 Download PDFInfo
- 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
Links
- 230000009471 action Effects 0.000 claims abstract description 61
- 238000012545 processing Methods 0.000 claims abstract description 35
- 238000000034 method Methods 0.000 claims abstract description 24
- 230000008859 change Effects 0.000 claims description 6
- 238000012986 modification Methods 0.000 claims description 3
- 230000004048 modification Effects 0.000 claims description 3
- 238000013500 data storage Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 8
- 230000000881 depressing effect Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 239000000835 fiber Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/40—Data acquisition and logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/107—License processing; Key processing
- G06F21/1078—Logging; Metering
-
- 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/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1237—Print job management
- G06F3/1273—Print job history, e.g. logging, accounting, tracking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1038—LFS, i.e. Log Structured File System used in RAID systems with parity
Abstract
클라이언트 컴퓨터에서 실행 취소 동작 중에 메타데이터를 보존하는 방법이 제공된다. 문서의 제 1 섹션은 문서의 제 1 섹션에서 하나 이상의 사용자 동작을 수행함으로써 클라이언트 컴퓨터상의 워드 프로세싱 애플리케이션에서 수정된다. 문서의 제 1 섹션을 수정할 동안, 메타데이터는 문서의 제 2 섹션을 위해 클라이언트 컴퓨터에서 수신된다. 메타데이터는 문서의 제 2 섹션 내에 삽입된다. 메타데이터가 문서의 제 2 섹션 내에 삽입된 후, 실행 취소 동작이 워드 프로세싱 애플리케이션에서 수행된다. 실행 취소 동작은 문서의 제 2 섹션에서 메타데이터를 제거하는 단계, 문서의 제 1 섹션에서 하나 이상의 사용자 동작 중 최종 사용자 동작을 실행 취소하는 단계 및 문서의 제 2 섹션을 위한 메타데이터를 복원하는 단계를 포함한다.
Description
온라인 문서 협업 시스템(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의 예시적인 클라이언트 컴퓨터를 도시한 것이다.
도 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)
- 클라이언트 컴퓨터에서 실행 취소 동작(undo operation) 동안 메타데이터를 보존하는 방법으로서,
상기 클라이언트 컴퓨터에서, 상기 클라이언트 컴퓨터상의 워드 프로세싱 애플리케이션에서 문서의 제1 섹션을 수정하는 단계- 상기 문서의 제1 섹션을 수정하는 단계는 상기 문서의 제1 섹션에서 하나 이상의 사용자 동작을 수행하는 단계를 포함함 -와,
상기 문서의 제1 섹션을 수정하는 동안, 상기 클라이언트 컴퓨터에서, 상기 문서의 제2 섹션에 대한 메타데이터를 수신하는 단계- 상기 문서의 제2 섹션은 상기 문서의 제1 섹션과 상이함 -와,
상기 문서의 제2 섹션에 대한 상기 메타데이터를 수신한 후, 상기 메타데이터를 상기 문서의 제2 섹션 내에 삽입하는 단계와,
상기 메타데이터가 상기 문서의 제2 섹션 내에 삽입된 후, 상기 워드 프로세싱 애플리케이션에서 실행 취소 동작을 수행하는 단계를 포함하되,
상기 실행 취소 동작은
상기 클라이언트 컴퓨터에서, 상기 문서의 제2 섹션에 대한 상기 메타데이터를 제거하는 단계,
상기 문서의 제1 섹션에서 상기 하나 이상의 사용자 동작 중 최종 사용자 동작을 실행 취소하는 단계, 및
상기 문서의 제2 섹션에 대한 상기 메타데이터를 복원하는 단계
를 포함하고,
상기 클라이언트 컴퓨터에서 상기 문서의 제2 섹션에 대한 상기 메타데이터를 제거하는 단계는 프로그램 스택으로부터 상기 메타데이터를 제거하고 상기 메타데이터를 상기 프로그램 스택과 다른 상기 클라이언트 컴퓨터상의 메모리의 영역에 저장하는 단계를 포함하는
메타데이터를 보존하는 방법. - 제1항에 있어서,
상기 클라이언트 컴퓨터에서 수신된 상기 문서의 제2 섹션에 대한 상기 메타데이터는 상기 문서의 제2 섹션에 대한 잠금(lock)인
메타데이터를 보존하는 방법. - 제1항에 있어서,
상기 문서의 제1 섹션은 상기 문서의 단락(paragraph)에 대응하는
메타데이터를 보존하는 방법. - 제1항에 있어서,
수신된 상기 문서의 제2 섹션에 대한 상기 메타데이터를 프로그램 스택에 저장하는 단계를 더 포함하는
메타데이터를 보존하는 방법. - 제4항에 있어서,
상기 프로그램 스택은 실행 취소/재실행 스택인
메타데이터를 보존하는 방법.
- 제4항에 있어서,
상기 하나 이상의 사용자 동작은 상기 프로그램 스택에 저장되는
메타데이터를 보존하는 방법. - 제4항에 있어서,
상기 최종 사용자 동작을 실행 취소하는 단계는 상기 프로그램 스택에서 상기 최종 사용자 동작을 제거하는 단계를 포함하는
메타데이터를 보존하는 방법.
- 제7항에 있어서,
상기 문서의 제2 섹션에 대한 상기 메타데이터를 복원하는 단계는 상기 프로그램 스택과 다른 상기 클라이언트 컴퓨터상의 상기 메모리의 영역으로부터 상기 메타데이터를 획득하고 상기 획득된 메타데이터를 상기 프로그램 스택에 저장하는 단계를 포함하는
메타데이터를 보존하는 방법. - 제1항에 있어서,
상기 하나 이상의 사용자 동작은 상기 문서의 제1 섹션에 타이핑하는 동작, 상기 문서의 제1 섹션에서 포맷 변경을 행하는 동작, 및 상기 문서의 제1 섹션에서 텍스트를 삭제하는 동작을 포함하는
메타데이터를 보존하는 방법. - 제1항에 있어서,
상기 문서의 제1 섹션은 제1 사용자가 편집중인 상기 문서의 제1 단락에 대응하며, 상기 문서의 제2 섹션은 제2 사용자가 편집중인 제2 단락에 대응하는
메타데이터를 보존하는 방법. - 제10항에 있어서,
상기 제2 사용자가 상기 제1 단락을 수정하지 못하게 하는 제1 잠금을 전송하는 단계를 더 포함하는 메타데이터를 보존하는 방법. - 제11항에 있어서,
상기 제1 사용자가 상기 제2 단락을 수정하지 못하게 하는 제2 잠금을 수신하는 단계를 더 포함하는 메타데이터를 보존하는 방법. - 컴퓨팅 장치로서,
처리 유닛과,
상기 처리 유닛에 연결된 시스템 메모리를 포함하되,
상기 시스템 메모리는 명령어들을 포함하고, 상기 명령어들은 상기 처리 유닛에 의해 실행되는 경우 상기 처리 유닛으로 하여금,
사용자가 상기 컴퓨팅 장치상에서 문서를 작성하고 편집할 수 있도록 하는 문서 처리 모듈,
서버 컴퓨터로부터 메타데이터를 수신하고, 상기 문서 처리 모듈에 의해 열려지는 문서의 하나 이상의 섹션 내에 상기 메타데이터를 삽입하는 메타데이터 병합 모듈,
하나 이상의 사용자 동작을 저장하고, 상기 서버 컴퓨터로부터 수신된 메타데이터를 저장하는 실행 취소/재실행 모듈- 상기 실행 취소/재실행 모듈은 실행 취소/재실행 스택을 포함하고, 상기 메타데이터 및 사용자 동작은 상기 실행 취소/재실행 스택에 저장되고, 상기 실행 취소/재실행 모듈은 사용자 동작을 실행 취소하기 전에 상기 문서의 하나 이상의 섹션으로부터 메타데이터를 제거하고, 상기 사용자 동작을 실행 취소한 후에 상기 문서의 상기 하나 이상의 섹션 내에 제거된 상기 메타데이터를 재삽입함으로써 사용자가 상기 하나 이상의 사용자 동작을 실행 취소하도록 함 -, 및
서버 컴퓨터로부터 수신된 메타데이터를 문서상에 디스플레이하는 사용자 인터페이스 모듈
을 생성하게 하되,
상기 실행 취소/재실행 모듈은 상기 실행 취소/재실행 스택으로부터 상기 메타데이터를 제거하고 상기 메타데이터를 상기 실행 취소/재실행 스택과 다른 상기 컴퓨팅 장치상의 메모리의 영역에 저장하는
컴퓨팅 장치. - 제13항에 있어서,
상기 문서의 하나 이상의 섹션은 단락인
컴퓨팅 장치. - 제14항에 있어서,
상기 메타데이터는 잠금(lock)이며, 상기 잠금은 사용자가 상기 잠금이 삽입되는 상기 문서의 상기 하나 이상의 섹션에 기록하지 못하게 하는
컴퓨팅 장치. - 제13항에 있어서,
상기 메타데이터는 잠금이며, 상기 잠금은 사용자가 상기 잠금이 삽입되는 상기 문서의 상기 하나 이상의 섹션에 기록하지 못하게 하는
컴퓨팅 장치. - 제13항에 있어서,
상기 실행 취소/재실행 모듈은 재실행 프로그램 스택을 더 포함하고, 상기 재실행 프로그램 스택은 하나 이상의 사용자 동작 및 메타데이터를 저장하며, 상기 재실행 프로그램 스택은 상기 문서의 상기 메타데이터의 무결성을 유지하면서 사용자 동작에 대한 실행 취소 동작이 취소되게 하는
컴퓨팅 장치. - 명령어들을 포함하는 컴퓨터 판독 가능한 저장 매체로서,
상기 명령어들은 클라이언트 컴퓨터의 처리 유닛에 의해 실행될 때, 상기 클라이언트 컴퓨터의 처리 유닛으로 하여금,
상기 클라이언트 컴퓨터상의 문서의 제1 단락을 편집하게 하고- 상기 제1 단락은 상기 클라이언트 컴퓨터상에서 사용자에 의해 편집되고, 상기 문서의 제1 단락의 편집은 상기 문서의 제1 단락 내의 하나 이상의 사용자 동작을 포함하고, 상기 하나 이상의 사용자 동작은 상기 제1 단락에 타이핑하는 것, 상기 제1 단락에서 텍스트를 삭제하는 것, 상기 제1 단락에서 스타일 변경을 행하는 것, 상기 제1 단락을 포맷팅하는 것을 포함하며, 상기 문서의 제1 단락에서의 상기 하나 이상의 사용자 동작은 상기 클라이언트 컴퓨터상의 실행 취소/재실행 스택에 저장됨 -,
상기 문서의 제1 단락을 편집하는 동안, 상기 클라이언트 컴퓨터에서 상기 문서의 제2 단락에 대한 잠금을 수신하게 하고- 상기 잠금은 서버 컴퓨터로부터 수신되고, 상기 잠금은 제2 클라이언트 컴퓨터의 또 다른 사용자가 현재 상기 문서의 제2 단락을 편집하고 있음을 나타내며, 상기 잠금은 상기 사용자가 상기 제2 단락을 편집하지 못하게 함 -,
상기 문서의 제2 단락에 대한 잠금을 수신한 후에, 상기 클라이언트 컴퓨터의 처리 유닛으로 하여금,
상기 잠금을 상기 문서의 제2 단락 내에 삽입하게 하고- 상기 잠금은 상기 클라이언트 컴퓨터상의 상기 사용자가 상기 클라이언트 컴퓨터상의 상기 제2 단락을 편집하지 못하게 함 -,
상기 클라이언트 컴퓨터의 상기 실행 취소/재실행 스택에 상기 잠금을 저장하게 하며,
상기 클라이언트 컴퓨터의 상기 실행 취소/재실행 스택에 상기 잠금을 저장한 후에, 상기 클라이언트 컴퓨터에서 실행 취소 동작을 수행하게 하되,
상기 실행 취소 동작은 상기 클라이언트 컴퓨터의 상기 처리 유닛으로 하여금,
상기 클라이언트 컴퓨터에서의 상기 실행 취소/재실행 스택으로부터 상기 문서의 제2 단락에 대한 상기 잠금을 제거하게 하고,
상기 잠금이 상기 클라이언트 컴퓨터에서의 상기 실행 취소/재실행 스택으로부터 제거될 때, 상기 잠금을 상기 클라이언트 컴퓨터상의 메모리 내에 일시 저장하게 하며- 상기 잠금은 상기 실행 취소/재실행 스택을 포함하지 않는 메모리의 영역 내에 저장됨 -,
상기 잠금이 상기 클라이언트 컴퓨터에서의 상기 실행 취소/재실행 스택으로부터 제거될 때, 상기 클라이언트 컴퓨터에서 상기 하나 이상의 사용자 동작 중 최종 동작을 실행 취소하게 하며- 상기 하나 이상의 사용자 동작 중 상기 최종 동작은 상기 실행 취소/재실행 스택으로부터 제거됨 -,
상기 하나 이상의 사용자 동작 중 상기 최종 동작이 상기 클라이언트 컴퓨터에서 실행 취소된 후에, 상기 잠금이 일시 저장되는 상기 클라이언트 컴퓨터상의 상기 메모리의 영역으로부터 상기 잠금을 제거하고 상기 잠금을 상기 실행 취소/재실행 스택 상에 복원시키게 하는
컴퓨터 판독 가능한 저장 매체.
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)
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)
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)
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 |
-
2009
- 2009-04-29 US US12/431,883 patent/US8209603B2/en active Active
-
2010
- 2010-03-29 TW TW099109446A patent/TWI412942B/zh not_active IP Right Cessation
- 2010-04-21 WO PCT/US2010/031951 patent/WO2010126763A2/en active Application Filing
- 2010-04-21 EP EP10770140.1A patent/EP2425357B1/en active Active
- 2010-04-21 MX MX2011011350A patent/MX2011011350A/es active IP Right Grant
- 2010-04-21 JP JP2012508536A patent/JP5684236B2/ja active Active
- 2010-04-21 KR KR1020117025468A patent/KR101683322B1/ko active IP Right Grant
- 2010-04-21 BR BRPI1012014A patent/BRPI1012014A8/pt not_active Application Discontinuation
- 2010-04-21 AU AU2010241861A patent/AU2010241861B2/en active Active
- 2010-04-21 CA CA2756687A patent/CA2756687C/en active Active
- 2010-04-21 RU RU2011143848/08A patent/RU2554785C2/ru not_active IP Right Cessation
- 2010-04-21 CN CN2010800200101A patent/CN102414679B/zh active Active
-
2011
- 2011-09-21 IL IL215273A patent/IL215273A0/en unknown
- 2011-09-22 ZA ZA2011/06939A patent/ZA201106939B/en unknown
Patent Citations (2)
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 |