KR102587631B1 - 컴퓨터 애플리케이션 소프트웨어에서 동시 협업 실행취소 작업을 위한 방법 및 시스템 - Google Patents

컴퓨터 애플리케이션 소프트웨어에서 동시 협업 실행취소 작업을 위한 방법 및 시스템 Download PDF

Info

Publication number
KR102587631B1
KR102587631B1 KR1020177015707A KR20177015707A KR102587631B1 KR 102587631 B1 KR102587631 B1 KR 102587631B1 KR 1020177015707 A KR1020177015707 A KR 1020177015707A KR 20177015707 A KR20177015707 A KR 20177015707A KR 102587631 B1 KR102587631 B1 KR 102587631B1
Authority
KR
South Korea
Prior art keywords
undo
server
task
user
tasks
Prior art date
Application number
KR1020177015707A
Other languages
English (en)
Other versions
KR20170094194A (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 KR20170094194A publication Critical patent/KR20170094194A/ko
Application granted granted Critical
Publication of KR102587631B1 publication Critical patent/KR102587631B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/197Version control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • H04L65/403Arrangements for multi-party communication, e.g. for conferences
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Multimedia (AREA)
  • User Interface Of Digital Computer (AREA)
  • Document Processing Apparatus (AREA)

Abstract

다중 사용자 실시간 협업 소프트웨어 애플리케이션은 다수의 사용자 또는 다수의 장치 간에 데이터를 동기화할 수 있다. 현재의 양상은 모든 가능한 동작이 동작 변환 특성을 따르지 않는 협업 소프트웨어 애플리케이션에서 실행취소 작업을 가능하게 하는 방법 및 시스템을 설명한다. 본 발명에서의 소정의 양상은 소위 역 특성 2(IP2)가 없는 경우에 작동한다.

Description

컴퓨터 애플리케이션 소프트웨어에서 동시 협업 실행취소 작업을 위한 방법 및 시스템{METHOD AND SYSTEM FOR CONCURRENT COLLABORATIVE UNDO OPERATIONS IN COMPUTER APPLICATION SOFTWARE}
작업 변환(Operational Transformation: OT)은 공유된 문서 또는 시스템 상태에 대한 여러 사용자의 변경사항을 동기화할 수 있는 실시간 협업 애플리케이션의 생성을 가능하게 한다. 많은 컴퓨터 소프트웨어 애플리케이션은 협업 상호작용에 유용한 변환 특성들의 세트(a set of transformation properties)를 따르지 않는 기능 또는 특징을 가지며, 따라서 작업 변환 알고리즘에 지정된 실행취소(undo) 작업을 지원하지 않을 수 있다.
본 요약은 이하의 상세한 설명 부분에서 더 설명되는 선택된 개념을 단순화된 형태로 소개하기 위해 제공된다. 본 요약은 청구대상의 주요 특징 또는 필수 기능을 식별하기 위한 것이 아니며 청구대상의 범위를 결정하는 데 도움을 주기위한 것도 아니다.
다중 사용자 실시간 협업 소프트웨어 애플리케이션은 다수의 사용자 또는 다수의 장치 사이에서 데이터를 동기화할 수 있다. 현재의 양상은 모든 가능한 동작이 작업 변환 특성을 따르지 않는 협업 소프트웨어 애플리케이션에서 실행취소 작업을 가능하게 하는 방법 및 시스템을 기술한다. 본 명세서의 특정 양상은 소위 역 특성 2(Inverse Property 2)가 없는 경우에 작동한다.
하나 이상의 양상의 세부 사항은 첨부된 도면 및 이하의 설명에서 설명된다. 다른 특징들 및 이점들은 다음의 상세한 설명을 읽고 관련 도면들을 검토함으로써 명백해질 것이다.
본 개시물의 다른 특징, 양상 및 장점은 후속하는 도면을 참조하여 보다 잘 이해될 것이며, 이 도면에서는 상세한 설명을 보다 명확하게 나타내기 위해 구성요소가 비율대로 도시되어 있지 않으며 몇몇 도면에 걸쳐 동일한 참조번호는 동일한 구성요소를 나타낸다.
도 1은 협업 편집을 위한 시스템을 나타내는 블록도이다.
도 2는 협업 편집을 위한 동작 환경을 나타내는 블록도이다.
도 3은 다수의 작업을 적용하는 양상을 도시한다.
도 4는 변환 동안 수렴 특성(convergence property)의 적용을 도시한다.
도 5는 본 개시물의 양상에 따른 작업 변환의 구현을 나타낸다.
도 6은 본 개시물의 실시예에 따른 변경 작업 컨텍스트를 도시한다.
도 7은 본 개시물의 양상에 따른 제1 실행취소 경우를 도시한다.
도 8은 본 개시물의 양상에 따른 실행취소 작업의 도출을 나타낸다.
도 9는 본 개시물의 양상에 따라 실행취소 작업을 수행하기 위한 예시적인 방법에 관련된 일반적인 단계들을 도시한 흐름도이다.
도 10은 본 개시물의 양상에 따라 재실행 작업을 수행하기 위한 예시적인 방법에 관련된 일반적인 단계들을 도시한 흐름도이다.
도 11은 컴퓨팅 장치의 물리적 컴포넌트들의 일례를 나타낸 블록도이다.
도 12a 및 도 12b는 이동 컴퓨팅 장치의 간략화된 블록도이다.
다음의 상세한 설명은 첨부 도면을 참조한다. 가능하면, 동일한 참조번호가 도면 및 이하의 설명에서 동일하거나 유사한 요소를 나타내기 위해 사용된다. 본 개시의 양상들이 설명될 수 있지만, 수정, 개조 및 다른 구현이 가능하다. 예를 들어, 도면에 예시된 요소에 대한 대체, 추가 또는 수정이 이루어질 수 있으며, 본원에 기재된 방법은 개시된 방법에 대한 단계들을 대체, 재정렬 또는 추가함으로써 변경될 수 있다. 따라서, 다음의 상세한 설명은 비제한적이며, 대신에, 적절한 범위는 첨부된 청구범위에 의해 정의된다. 실시예는 하드웨어 구현, 완전히 소프트웨어적인 구현 또는 소프트웨어와 하드웨어 측면을 결합한 구현의 형태를 취할 수 있다. 따라서, 후속하는 상세한 설명은 제한적인 의미로 해석되어서는 안된다.
본 개시물의 양상들은 하나 이상의 시스템 상태의 표현과 연관된다. 시스템 상태는 시스템 상태를 변경하기 위해 수행될 수 있는 소위 작업들(operations)로 불리는 동작들(actions)의 세트로 구성될 수 있다. 변환들의 세트는 특정 특성을 따르는 작업들의 세트에 대해 실행될 수 있다. 양상들은 협업 환경에서 이러한 작업 및 메타데이터를 한 시스템에서 다른 시스템으로 전달하는 것을 더 설명할 수 있다. 양상들은 시스템 상태의 일관성을 유지하기 위한 제어 알고리즘과 실행취소 작업 및 재실행 작업을 처리하는 알고리즘을 사용할 수 있다. 실행취소 알고리즘에 의해 사용되는 메타데이터의 양과 함께 주어진 시스템에 적용된 작업들의 이력을 기록하기 위해 메모리가 사용될 수 있다. 상태 표현은 문서, 웹 페이지, 회로도 또는 외부 동작에 의해 수정될 수 있는 임의의 다른 시스템에 관한 것일 수 있다.
본 개시물의 양상에서, 알고리즘은 네트워크를 통해 중앙 서버에 접속된 협업 문서 편집 소프트웨어의 일부로서 동작할 수 있다. 여기서, 시스템 상태는 문서(예를 들어, 슬라이드쇼 프레젠테이션)를 나타낼 수 있고 작업은 문서에 대한 사용자 편집을 나타낼 수 있다. 실행취소 및 재실행은 콘텐츠 편집 프로그램의 기존 개념에 대응할 수 있다. 서술된 양상들은 협업 콘텐츠 편집 프로그램의 컨텍스트에 있을 수 있지만, 양상들은 일반적으로 다른 형식 및 다른 영역의 문서 및 시스템에 대한 작업에 적용된다는 것을 알아야 한다.
협업 편집 환경에서, "실행취소"의 개념은 불분명할 수 있다. 경우에 따라, 그것은 문서에서 마지막으로 수행한 작업을 실행취소하는 것을 의미할 수 있다. 다른 상황에서, 실행취소는 문서의 특정 부분에 대해 수행된 마지막 작업을 실행취소하는 것일 수 있다. 다른 경우에, 실행취소를 요청한 사용자 이외의 다른 사용자가 수행한 마지막 작업을 실행취소하는 것일 수 있다. 본 발명의 양상들은 실행취소를, 실행취소 작업을 요청하는 사용자에 의해 구현된 마지막 작업을 취소하는 것으로 취급한다. 사용자가 수행한 마지막 작업이 문서 전반에 대해 수행된 가장 최근의 작업인 경우, 응답으로서 수행할 작업을 생각하는 것은 간단하다. 그 작업은 역전될 수 있고, 그 역 작업이 문서에 적용될 수 있다. 예를 들어, 마지막 사용자 작업이 문자 T를 삽입한 작업인 경우, 실행취소 작업은 문서 이력에서 그 삽입을 제거하는 것이 아니라 문자 T를 삭제하는 두 번째 작업을 수행하는 것이다.
최종 사용자(클라이언트) 작업 이후로 다른 서버 작업이 개입했다면 다른 문제가 발생할 수 있다. 여기서, 실행취소를 선택해도 해당 작업을 역전하고 적용 할 수 없다. 변환이 필요한 것으로 결정되며, 따라서 사용자는 본래의 작업이 생성되었을 때의 문서 상태와는 대조적으로 현재의 문서 상태에 그것을 적용할 수 있다.
많은 협업 편집 애플리케이션은 역전가능한 수행된 작업들의 리스트 또는 적용할 역 작업들의 리스트일 수 있는 실행취소 스택을 유지한다. 일부 양상에서, 재실행 스택이 비슷한 방식으로 유지될 수 있다. 서버는 적절한 변환을 허용할 수 있는 서버 작업 및 클라이언트 작업을 포함하는 이력을 유지할 수 있다. 2개의 클라이언트 작업 사이에 여러 개의 서버 작업이 존재하는 경우, 서버 작업은 작업들의 시퀀스 및 그 시퀀스의 변환을 수행하는 알고리즘을 나타내는 단일 동작으로 압축될 수 있다.
몇몇 양상에서, 재실행 및 실행취소 스택 이력은 이들이 문서로부터 판독되고 그 문서에 적용됨에 따라 제어 알고리즘 변환에 의해 생성될 수 있다. 때로는 변환은 무-작업(no-op)을 야기할 수 있다. 예를 들어, 슬라이드의 위치 3에 글자가 삽입될 수 있지만 슬라이드가 삭제되었다면 변환은 무-작업을 야기할 것이고, 그러한 일이 실행취소 작업 동안 발생하면, 무엇을 해야 할지 선택해야 한다. 일 양상에 따르면, 발생한 동작이 더 이상이 논리적으로 타당하지 않기 때문에 아무런 일도 일어나지 않는다. 일부 양상에서, 실행취소 작업이 더 이상 논리적으로 타당하지 않음을 사용자에게 알려주는 통지가 더 제공될 수 있다. 다른 양상에서, 무-작업으로 변환하지 않는 실행취소 작업이 발견될 때까지 실행취소 작업은 계속 수행될 수 있다. 이러한 양상은 사용자가 실행취소 작업을 선택한 경우 일부 결과가 발생하는 것을 보장할 수 있다. 소정의 작업이 적용되면, 그 작업은 서버로 전송될 출력 큐에 놓이게 될 수 있다.
도 1은 본 개시물의 양상에 따라 협업 편집을 하기 위한 시스템을 나타내는 블록도이다. 도 1에 도시된 바와 같이, 시스템(100)은 제1 사용자(U1)에 의해 동작가능한 제1 사용자 컴퓨팅 장치(102) 및 서버 컴퓨팅 장치(104)를 포함한다. 사용자 컴퓨팅 장치(102) 및 서버 컴퓨팅 장치(104)는 네트워크를 통해 통신한다. 사용자 컴퓨팅 장치(102)는 콘텐츠 편집기(106)를 포함한다. 도 1에 도시된 바와 같이, 콘텐츠 파일(110a)은 서버 컴퓨팅 장치(104)로부터 제1 사용자 컴퓨팅 장치(102)로 전송될 수 있다.
시스템(100)은 서버 컴퓨팅 장치(104)에 연결된 제2 사용자(U2)에 의해 동작가능한 제2 사용자 컴퓨팅 장치(108)를 더 포함할 수 있다. 제2 사용자 컴퓨팅 장치(108) 및 서버 컴퓨팅 장치(104)는 네트워크를 통해 통신한다. 제2 사용자 컴퓨팅 장치(108)는 콘텐츠 편집기(110)를 포함한다. 도 1에 도시된 바와 같이, 콘텐츠 파일(110b)은 서버 컴퓨팅 장치(104)로부터 제2 사용자 컴퓨팅 장치(108)로 전송될 수 있다.
제1 사용자(U1) 및 제2 사용자(U2)는 모두 콘텐츠 편집기를 사용하여 동일한 문서의 개별 버전을 편집할 수 있음을 이해해야 한다. 이 경우, 제1 사용자(U1)는 문서 버전(110a)을 편집하고, 제2 사용자(U2)는 문서 버전(110b)을 편집한다. 문서 버전(110a 및 110b)은 동일한 문서의 버전이다. 사용자는 협업 환경에서 문서를 편집하며, 두 사용자에 의한 변경사항은 문서의 마스터 버전에 업데이트되어야 한다.
시스템(100)은 사용자가 콘텐츠 편집기와 같은 클라이언트 소프트웨어와 상호작용하기 위해 공유된 상태와의 협업 상호작용을 위한 일반적인 토폴로지를 나타내는데, 상태에 대한 변경사항은 서버(104)와 같은 중앙 서버를 통해 다른 클라이언트 소프트웨어를 갖는 다른 사용자(임의의 수의 추가 사용자일 수 있음)로 전파될 수 있지만, 그 밖의 다른 다수의 접근방식, 예를 들어 피어 투 피어 상호작용이 가능할 수 있다. 일부 양상에서, 콘텐츠 편집기(106 및 110)와 같은 콘텐츠 편집기는 콘텐츠 파일을 협업하여 편집하도록 동작가능한 사용자 컴퓨팅 장치상에서 실행되는 애플리케이션이다. 또한, 일부 양상에서, 콘텐츠 편집기는 서버 컴퓨팅 장치(104)와 상호작용한다. 일부 예에서, 콘텐츠 편집자는 서버 컴퓨팅 장치(104)와 같은 원격 컴퓨팅 장치 또는 다른 컴퓨팅 장치에 의해 서비스되는 콘텐츠에 기초하여 협업 편집을 생성하도록 동작가능한 브라우저 애플리케이션 일 수 있다. 일례에 따르면, 확장부(extension)가 사용자 컴퓨팅 장치상에서 브라우저 애플리케이션(즉, 콘텐츠 편집기(106))에 대한 플러그인 또는 애드온으로서 설치되거나 브라우저 애플리케이션에 내장된다.
일 예에서, 콘텐츠 편집기는 워싱턴 레드몬드 소재의 마이크로소프트사의 WORD 문서 편집기 또는 마찬가지로 마이크로소프트사의 EXCEL® 스프레드시트 편집기와 같은 스프레드시트 편집기와 같은 협업 문서 편집기이다. 유사한 비제한적인 예시적인 콘텐츠 편집기는 워싱턴 레드몬드 소재의 마이크로소프트사의 POWERPOINT® 프리젠테이션 그래픽 프로그램을 포함할 수 있다.
도 2는 하나의 문서로부터 다른 문서로 변경사항을 전달하기 위한 시스템(200)의 일례의 상세한 블록도이다. 시스템(200)은 이동 클라이언트(210), 제1 클라이언트(215) 및 제2 클라이언트(220)와 같은 다수의 클라이언트와 통신하는 서버(205)를 포함할 수 있다. 서버(205)는 예시적인 기본 파워포인트 파일(225)과 같은 기본 문서를 유지할 수 있다. 기본 파워포인트 파일(225)은 이동 클라이언트(210), 제1 클라이언트(215) 및 제2 클라이언트(220) 각각이 협업하여 편집을 서버(205)에 제공하는 파일일 수 있다. 서버(205)는 작업 이력(230)을 유지한다. 작업 이력(230)은 기본 파워포인트 파일(225) 및 서버(205)에 대해 전송된 각각의 작업 변경의 기록을 포함할 수 있다. 서버(205)는 기본 파워포인트 파일(225)에 대한 주석(annotations)(235)의 리스트를 또한 유지한다. 예시적인 동작에서, 시스템(200)에서, 이동 클라이언트(210)는 기본 파워포인트 파일(225)에 대한 텍스트 편집을 제공할 수 있다. 클라이언트(220)는 기본 파워인트 파일(225)에 대한 불투명한 작업 변경을 제공할 수 있다. 클라이언트(215)는 불투명 작업 및 이미지 변경 모두를 포함한 기본 파워포인트 파일(225)에 대한 변경을 제공할 수 있다.
사용자 컴퓨팅 장치(102), 서버 컴퓨팅 장치(104), 서버(205), 이동 클라이언트(210), 제1 클라이언트(215) 및 제2 클라이언트(220)는 데스크탑 컴퓨터 시스템, 유무선 컴퓨팅 시스템, 이동 컴퓨팅 시스템(예를 들어, 이동 전화, 넷북, 태블릿 또는 슬레이트 타입 컴퓨터, 노트북 컴퓨터 및 랩톱 컴퓨터), 핸드헬드 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그래밍가능 가전 제품, 미니 컴퓨터 및 메인 프레임 컴퓨터를 포함하나 이에 국한되지 않는 다수의 컴퓨팅 시스템을 예시한다.
또한, 본 명세서에 설명된 양상 및 기능은 애플리케이션 기능, 메모리, 데이터 저장 및 검색 및 다양한 프로세싱 기능이 인터넷 또는 인트라넷과 같은 분산형 컴퓨팅 네트워크를 통해 서로 원격으로 작동하는 분산형 시스템(예를 들어, 클라우드 기반 컴퓨팅 시스템)을 통해 동작할 수 있다. 일 양상에 따르면, 다양한 유형의 사용자 인터페이스 및 정보가 온보드 컴퓨팅 장치 디스플레이를 통해 또는 하나 이상의 컴퓨팅 장치와 연관된 원격 디스플레이 장치를 통해 디스플레이된다. 예를 들어, 다양한 유형의 사용자 인터페이스 및 정보는 이 다양한 유형의 사용자 인터페이스 및 정보가 투영되는 벽면 상에 표시되고 상호작용된다. 양상들이 실시되는 다수의 컴퓨팅 시스템과의 상호작용은 키 스트로크 엔트리, 터치 스크린 엔트리, 음성 또는 다른 오디오 엔트리, 연관된 컴퓨팅 장치가 그 컴퓨팅 장치의 기능을 제어하기 위해 사용자 제스처를 캡처하고 해석하기 위한 검출(예를 들어, 카메라) 기능을 갖추고 있는 경우 제스처 엔트리를 포함한다.
다음의 설명은 작업, 상태, 컨텍스트의 양상, 및 본 개시물의 양상과 관련된 작업 변환의 다른 양상을 설명하는 것을 돕는다. 작업은 문서를 한 상태에서 다른 상태로 변환하는 임의의 기능, 예를 들어 "형상을 파란색에서 빨간색으로 바꾸기" 또는 "특정 위치에 텍스트 '고양이'를 삽입하기" 기능일 수 있다. 단일 작업은 여러 작업을 결합한 것, 예를 들어, "형상을 파란색에서 빨간색으로 바꾸고, 텍스트 '고양이'를 특정 위치에 삽입하는 것"일 수 있다. 도 3 및 도 4에서, 대문자는 주어진 문서 상태를 나타내기 위해 사용될 수 있고 소문자는 작업을 나타내기 위해 사용될 수 있으며 '+'는 작업의 적용을 나타내기 위해 사용될 수 있다. 도 3을 참조하면, A + a + b = C이고, 이는 상태 "A"에 대해 작업 "a" 다음에 작업 "b"를 적용하면 상태 "C"가 된다는 것을 의미한다.
주어진 작업은 작업의 콘텍스트로 알려진 특정 상태에 적용될 때만 유효할 수 있는데, 예를 들어, 형상을 파란색에서 빨간색으로 바꾸는 것은 그 형상이 파란색인 상태에서만 타당하다. 위의 예에서 "a"의 컨텍스트는 "A"이고 "b"의 컨텍스트는 "B"이다. 본 개시물의 양상에서, 다수의 사용자는 동일한 문서에 대해 작업을 수행할 수 있고 작업 변환을 사용하여 문서의 상태가 사용자들 간에 일관되도록 보장할 수 있다. 동일한 컨텍스트를 공유하는 2개의 작업은 서로 간에 후속하여 변환될 수 있다. 예를 들어, 작업 "a"가 "형상을 파란색에서 빨간색으로 바꾸기"이고 작업 "b"가 "파란색 형상 삭제"이면, τ(b, a) 또는 b'로 쓰여진 "a" 이후 "b" 변환은 "빨간색 형상 삭제"를 초래하고, τ(a, b) 또는 a'로 쓰여진 "b" 이후 "a" 변환은 형상이 더 이상 존재하지 않음으로 빈 작업 또는 무-작업을 초래한다.
이러한 유형의 변환은 포함 변환(inclusion transformation; IT)으로 알려져 있다. 그것은 작업 "a"의 새로운 버전을 생성하는데 이 버전의 컨텍스트는 "b"의 영향을 포함한다. 도 4에 도시된 바와 같이, 변환은 A+a+τ(b, a)≡A+b+τ(a, b)임을 보장하며, ≡는 등가 문서 상태를 의미한다. 이는 수렴 특성으로 알려져 있다.
도 5는 본 발명의 양상에 따른 작업 변환(OT)의 구현을 나타낸다. 기본 문서(버전 1)는 텍스트 문구 "foo"를 포함할 수 있다. 사용자 A와 사용자 B는 모두 이 기본 문서의 편집에 협력하고 있을 수 있다. 사용자 A는 기본 문서의 인덱스 위치 3에 텍스트 "bar"를 삽입하려고 시도할 수 있다. 유사하게, 사용자 B는 텍스트 "quux"를 인덱스 위치 3에 삽입하려고 시도할 수 있다. 사용자 A에 의한 편집은 "foobar" 텍스트를 포함하는 문서 버전 2를 야기할 수 있다. 사용자 B에 의한 편집은 텍스트 "fooquux"를 포함하는 문서 버전 3을 야기할 수 있다. 따라서 OT 시스템은 텍스트 편집 모두를 올바르게 포함하는 문서 버전 4를 작성하기 위해 작업에 대해 포함 변환을 사용할 필요가 있다. 문서 버전 4는 "foobarquux"라는 최종 텍스트 결과를 포함해야 한다. 일부 양상에서, 결과는 또한 "fooquuxbar", "foo" 또는 간단히 빈 문자열일 수도 있다. 이들 결과 각각은 여전히 일관성 특성을 만족시킬 수 있다. 변환의 초안자(drafter)는 어떤 결과가 필요한지 결정할 수 있다.
적용된 포함 변환(IT)은 α'= IT(α,β)라고 기술한다. 이것은 제2 사용자 작업(β)과 함께 제1 사용자 작업(α)의 포함 변환이다. 즉, α'는 β가 이미 적용된 문서에 대해 α와 동일한 영향을 가지게 될 작업이다. 이것은 α'=IT(α, β)이고 β'=IT(β, α)이면, α+β'=β+α'라고 하는 일관성 특성을 따른다.
도 6은 본 개시물의 양상에 따른 변경 작업 컨텍스트를 도시한다. 각 변경 작업은 이 작업이 적용될 문서 상태와 암시적으로 연관될 수 있다. IT는 동일한 효과를 갖는 새로운 작업을 생성할 수 있지만 이 새로운 작업은 다른 문서 상태와 연관될 수 있다. 다시 말해, 새로운 컨텍스트가 α의 효과를 포함하고 IT 내에서 사용자 작업들의 컨텍스트가 동일하도록 β'2=β'1 =IT(β11)이다. 여기서 위첨자는 컨텍스트(작업이 적용되는 문서 상태)를 명시적으로 나타낸다. 문서 컨텍스트는 용이한 표기를 위해 다른 수식에서는 생략되고 또한 유추될 수 있다.
컨텍스트 A를 갖는 작업 "a"의 역은
Figure 112017054686652-pct00001
이도록 컨텍스트 A+a를 갖는 작업
Figure 112017054686652-pct00002
로서 정의된다. 이것은 역 특성(inverse property) 1(IP1)로 알려져 있다. 예를 들어, "형상을 파란색에서 빨간색으로 바꾸기"의 역은 "형상을 빨간색에서 파란색으로 바꾸기"이다. 본 개시의 양상들은 역 특성 2(IP2)로서 당업자에게 알려져 있는 역 특성,
Figure 112017054686652-pct00003
이 모든 동작에 대해 유지될 것을 요구할 수 있다. 여기서, 기호 ≡는 작업의 동등한 영향을 의미한다. 삭제된 형상의 색을 변경하여 빈 작업을 야기하는 변환 예는 IP2가 유지되지 않은 경우를 보여준다. 본 개시물의 양상들은
Figure 112017054686652-pct00004
이도록 역 특성 3(IP3)이 유효할 것을 요구한다.
전술한 정의를 사용하면, 역 특성 2(IP2)가 유효하지 않은 경우에 현재의 양상이 다수의 사용자에 걸쳐 실행취소를 구현하는 방법이 설명될 수 있다. 작업 "a"를 실행취소한다는 것은 문서를 "a"가 한 번도 적용되지 않은 상태로 만드는 작업을 적용하는 것으로 정의될 수 있다. 첫째, 사용자는 자신이 수행한 작업 또는 ai와 같이 아래 첨자로 표시된 사용자 작업만을 실행취소할 수 있다. 두 번째로, 다중 사용자 경우는 as와 같이 아래 첨자 "s"로 표시되는 서버 작업으로 지칭되는 모든 비-자기-작업(non-self-operation)을 단일 사용자로부터 제공되는 것으로 취급함으로써 두 명의 사용자 경우로 축소될 수 있다. 작업들이 복합 작업으로 연결될 수 있기 때문에, 서버 작업은 가능한 한 많이 연결될 수 있고 그에 따라 임의의 두 개의 연속적인 사용자 작업은 정확히 하나의 서버 작업(빈 작업일 수 있고 또는 아닐 수 있음)에 의해 분리된다.
사용자가 실행취소를 트리거하면, 모든 다른 사용자에게 적용 및 전송할 실행취소 작업이 생성될 수 있는데, 이 실행취소 작업은 실행취소 작업도 아니고 이미 실행취소된 실행 작업도 아닌 가장 최근의 사용자 작업의 실행취소이다. 실행취소 작업을 전송하는 경우, 그것이 실행취소 작업인 것으로 표시되지 않을 수 있고, 따라서, 실행취소 서버 작업은 작업 이력에서 일반적인 서버 작업과 구별될 필요는 없다. 그러나, 사용자 작업이 실행취소 작업인지 또는 실행취소 작업이 아닌 작업(때때로, "실행" 동작으로 지칭됨)인지 여부가 추적될 수 있다. 모든 실행취소 작업은 이력 내에서 자신이 실행취소한 해당 실행 작업을 가질 수 있다. 작업 변환을 이용하고 IP1 및 IP3을 알고 있다면, 실행취소 작업은 정확히 구현될 것이고 상태는 모든 사용자에 걸쳐 일관성 있게 유지될 것이라고 간주할 수 있다.
도 7의 좌측은 가장 최근의 사용자 작업이 중간 서버 작업(intervening server operation)이 없는 실행 작업(ai)인 경우의 실행취소 경우를 보여준다. 여기서, 역 작업(
Figure 112017054686652-pct00005
)이 간단히 적용될 수 있다. 이것은 IP1을 통해 본래의 상태로 돌아간다는 것을 알아야 한다. 이와 달리, 도 7의 우측은 가장 최근의 사용자 작업이 실행 작업(ai)이고, 중간 작업(intervening operation)(bs)(이 중간 작업은 본 명세서에서 단일 서버 작업으로 도시되어 있지만, 서버 작업만을 구성하는 임의의 중간 복합 작업일 수 있다)이 있는 경우를 나타내며, 서버 작업 다음 역 작업의 변환(
Figure 112017054686652-pct00006
)이 적용될 수 있다. 중간 서버 작업으로 인해, 이것은 새로운 상태를 생성할 수 있다. IP3을 이용하면, 이것은 bs를 상태 A에 적용하는 것과 등가인 것으로 증명될 수 있다. 다시 말해, D는 bs의 영향을 상태 A에 적용하는 것과 등가이다.
좀 더 일반적인 경우로, 사용자 작업은 서버 작업에 의해 분리될 수 있다. 또한, 여러 사용자 작업이 수행될 필요가 있을 수 있다. 작업은 (재실행 작업이 별개의 작업일 수 있지만) 한 번만 실행취소될 수 있고, 따라서 실행취소를 처리하려면 양상들은 아직 실행취소되지 않은 가장 최근의 작업을 찾아야 하며 임의의 중간 작업 이후에 그의 역을 변환해야 한다. 중간 작업은 서버 작업 또는 실행-실행취소 쌍일 수 있다. 즉, 중간 작업은 이미 실행취소된 작업 및 그들의 대응하는 실행취소 작업일 수 있다. 양상들은 항상 다음에 실행취소할 동작으로서 실행취소되지 않은 가장 최근의 작업을 선택할 수 있다. 실행-실행취소 작업 쌍은 항상 괄호처럼 깔끔하게 내포되는데, 즉,
Figure 112017054686652-pct00007
는 유효한 작업 이력이 아닌데 그 이유는 "a"는 보다 최근의 작업 "b"을 실행취소하기 전에는 실행취소 작업을 가지지 않을 수 있기 때문이다. 따라서, 임의의 실행-실행취소 쌍 사이에는 서버 작업 또는 잘 정렬된 실행-실행취소 작업 쌍만이 존재할 수 있다. 단일 (가능하면 복합의, 가능하면 빈) 서버 작업에 의해서만 구분되는 가장 안쪽의 실행-실행취소 작업 쌍이 항상 존재할 수 있다.
IP2가 반드시 유효할 필요는 없기 때문에, 실행-실행취소 작업 쌍 이후의 변환은 해결할 과제가 있는 것으로 판명될 수 있다. 도 8은 실행-실행취소 쌍들 사이에서 서버 작업을 변환하여 그들이 주변 서버 작업과 함께 안전하게 복합 작업으로 연결될 수 있음을 도시한다. 실행-실행취소 작업 쌍 사이에 중간 서버 작업이 없는 경우, 작업 쌍은 무-작업으로 처리될 수 있다. 그러나, 실행-실행취소 작업 쌍(ai
Figure 112017054686652-pct00008
) 사이에 중간 작업(bs)이 있는 경우, 3개의 작업의 세트는 임의의 다른 인접 서버 작업과 함께 복합 동작으로 연결될 수 있는 단일 서버 작업과 등가인
Figure 112017054686652-pct00009
와 등가인 단일 작업으로 축소될 수 있다.
도 1 내지 도 8을 참조하여 본 개시물의 예시적인 아키텍처 및 다른 측면을 설명하였으며, 도 9는 연속적인 실행취소 요청을 처리하기 위한 예시적인 방법(900)에 관련된 일반적인 단계들을 도시한 흐름도이다. 방법(900)은 단계(905)에서 시작될 수 있다. 다음으로, 단계(910)에서, 이전에 실행취소 되지 않았으며 그 자체가 실행취소 작업이 아닌 가장 최근의 사용자 작업(ai 1)이 선택될 수 있다. 단계(920)에서, 실행-실행취소 작업 쌍들 사이의 모든 중간 서버 작업은 가장 안쪽의 서버 작업을 시작으로 하여 재귀적으로 압축될 수 있다. 쌍은 등식
Figure 112017054686652-pct00010
을 사용하고 연속적인 서버 작업을 단일 복합 작업으로 연결함으로써 단일 작업으로 압축될 수 있다. 여기서, 기호 ≡는 동일한 효과를 의미하고 기호 +는 연결을 의미한다. 작업(920)의 결과는 단일 서버 작업(bs *)일 수 있다.
다음으로, 단계(930)에서, 작업(
Figure 112017054686652-pct00011
)은 대응하는 실행취소 작업으로서 ai 1에 적용될 수 있다. 이 대응하는 실행취소 작업은 협업 환경에서 적용되도록 모든 다른 사용자에게 전송될 수 있다. 마지막으로, 단계(940)에서, 작업은 작업 이력에서 실행취소 작업으로 표시될 수 있다. 이 표시는 실행-실행취소 작업 쌍을 생성하기 위해 어떤 동작이 실행취소되었는지를 나타낼 수 있다. 사용자/서버 및 실행취소/재실행의 개념은 주어진 사용자에 관련될 수 있으며, 따라서, 실행취소/재실행 이력이 서버에 저장된 경우, 어떤 사용자가 어떤 작업과 관련되어 있는지를 추적할 필요가 있다. 실행취소/재실행 이력이 클라이언트에 보관된 경우, 사용자가 누구인지 명확하게 알 수 있다.
도 10은 IP2가 반드시 유효할 필요가 없는 경우 재실행 요청을 처리하기 위한 예시적인 방법(1000)에 관련된 일반적인 단계들을 나타내는 흐름도이다. 이러한 방법은 실행취소 작업을 생성하는 방법과 유사할 수 있지만, 재실행은 실행취소 작업의 실행취소로 간주될 수 있다. 이러한 측면에서, 재실행 알고리즘은 실행-실행취소 작업 쌍을 추적하는 대신에 실행취소-재실행 작업 쌍을 추적할 수 있다.
방법(1000)은 단계(1005)에서 시작할 수 있고 단계(1010)로 진행할 수 있다. 단계(1010)에서, 이전에 재실행되지 않은 가장 최근의 실행취소 작업(ai 1)이 선택될 수 있다. 다음으로, 단계(1020)에서, 실행취소-재실행 작업 쌍 사이의 모든 중간 서버 작업은 가장 안쪽의 서버 작업을 시작으로 하여, 재귀적으로 압축될 수 있다. 압축은 등식
Figure 112017054686652-pct00012
을 사용하여 그리고 인접 서버 작업들을 단일 복합 동작으로 연결함으로써 단일 작업을 생성할 수 있다. 단계(1020)의 결과는 단일 서버 작업(bs *)일 수 있다.
다음으로, 단계(1030)에서, 동작(
Figure 112017054686652-pct00013
)은 대응하는 재실행 작업으로 ai 1에 적용될 수 있다. 이러한 대응하는 재실행 작업은 적용될 협업 환경 내의 모든 다른 사용자들에게 전송될 수 있다. 마지막으로, 단계(1040)에서, 작업은 작업 이력에서 재실행 작업으로서 표시될 수 있다. 이러한 표시는 실행취소-재실행 작업 쌍을 생성하기 위해 어떤 동작이 실행취소되었는지를 또한 나타낼 수 있다.
도 11, 도 12a 및 도 12b 및 관련 설명은 본 발명의 실시예가 실시되는 다양한 동작 환경에 대한 설명을 제공한다. 그러나, 도 11, 도 12a 및 12b와 관련하여 도시되고 논의된 장치 및 시스템은 예시 및 설명의 목적을 위한 것이며, 본 명세서에 설명된 양상들을 실행하기 위해 사용되는 방대한 컴퓨팅 장치 구성을 제한하지 않는다.
도 11은 본 발명의 실시예가 실시될 수 있는 컴퓨팅 장치(1100)의 물리적 컴포넌트(즉, 하드웨어)를 나타내는 블록도이다. 기본 구성으로서, 컴퓨팅 장치(1100)는 적어도 하나의 처리 장치(1102) 및 시스템 메모리(1104)를 포함한다. 일 양상에 따르면, 컴퓨팅 장치의 구성 및 유형에 따라, 시스템 메모리(1104)는 휘발성 저장소(예컨대, 랜덤 액세스 메모리), 비휘발성 저장소(예를 들어, 판독 전용 메모리), 플래시 메모리, 또는 그러한 메모리들의 임의의 조합을 포함할 수 있으나, 이에 국한되지 않는다. 일 양상에 따르면, 시스템 메모리(1104)는 콘텐츠 편집기(106)를 포함한 소프트웨어 애플리케이션(1150)을 실행하기에 적합한 하나 이상의 프로그램 모듈(1106) 및 운영 체제(1105)를 포함한다. 일 양상에 따르면, 시스템 메모리(1104)는 실행취소 및 재실행 작업을 구현하는 소프트웨어를 포함한다. 운영 체제(1105)는 예를 들어 컴퓨팅 장치(1100)의 동작을 제어하는데 적합하다. 또한, 양상들은 그래픽 라이브러리, 다른 운영 체제 또는 임의의 다른 애플리케이션 프로그램과 연계하여 실시되며, 임의의 특정 애플리케이션 또는 시스템에 국한되지 않는다. 이 기본 구성은 도 11에서 점선(1108) 내의 컴포넌트로 도시되어 있다. 일 양상에 따르면, 컴퓨팅 장치(1100)는 추가적인 특징 또는 기능을 갖는다. 예를 들어, 일 양상에 따르면, 컴퓨팅 장치(1100)는 예를 들어 자기 디스크, 광학 디스크 또는 테이프와 같은 추가 데이터 저장 장치(분리형 및/또는 비 분리형)를 포함한다. 이러한 추가 저장소는 도 11에서 분리형 저장 장치(1109) 및 비분리형 저장 장치(1110)로 도시된다.
전술한 바와 같이, 일 양상에 따르면, 다수의 프로그램 모듈 및 데이터 파일이 시스템 메모리(1104)에 저장된다. 처리 장치(1102) 상에서 실행되는 경우, 프로그램 모듈(1106), 애플리케이션(1150) 및 콘텐츠 편집기(106)(예를 들어, 실행취소 및 재실행 작업을 구현하는 소프트웨어)는 도 9 및 도 10에 도시된 방법(900 및 1000)의 하나 이상의 단계를 포함하나 이에 국한되지 않는 프로세스를 수행한다. 일 양상에 따르면, 다른 프로그램 모듈이 본 개시물의 예시들에 따라 사용될 수 있고 전자 메일 및 연락처 애플리케이션, 워드 프로세싱 애플리케이션, 스프레드시트 애플리케이션, 데이터베이스 애플리케이션, 슬라이드 프리젠테이션 애플리케이션, 드로잉 또는 컴퓨터 지원 애플리케이션 프로그램 등과 같은 애플리케이션을 포함한다.
본 발명의 양상들은 개별적인 전자 소자, 논리 게이트를 포함하는 패키지형 또는 집적된 전자 칩들을 포함하는 전기 회로, 마이크로프로세서를 이용하는 회로, 또는 전자 소자 또는 마이크로프로세서를 포함하는 단일 칩 상에 구현된다. 예를 들어, 양상들은 도 11에 도시된 컴포넌트들 각각 또는 다수는 단일 집적 회로 상에 통합되는 SOC(system-on-a-chip)를 통해 실행된다. 일 양상에 따르면, 이러한 SOC 장치는 하나 이상의 처리 장치, 그래픽 장치, 통신 장치, 시스템 가상화 장치 및 다양한 애플리케이션 기능을 포함하며, 이들 모두는 칩 기판 상에서 단일 집적 회로로서 집적(또는 "버닝")된다. SOC를 통해 동작할 때, 본원에서 기술된 기능은 단일 집적 회로(칩) 상의 컴퓨팅 장치(1100)의 다른 컴포넌트와 통합된 애플리케이션 특정 회로를 통해 동작한다. 일 양상에 따르면, 본 개시물의 양상들은 기계적, 광학적, 유체, 양자 기술을 포함하나 이에 국한되지 않는, AND, OR 및 NOT과 같은 논리적 연산을 수행할 수 있는 다른 기술을 사용하여 실시된다. 또한, 양상들은 범용 컴퓨터 내에서 또는 다른 회로 또는 시스템에서 실행된다.
양상에 따르면, 컴퓨팅 장치(1100)는 키보드, 마우스, 펜, 음성 입력 장치, 터치 입력 장치 등과 같은 하나 이상의 입력 장치(들)(1112)를 구비한다. 일 양상에 따라, 디스플레이, 스피커, 프린터 등과 같은 출력 장치(들)(1114)도 포함된다. 전술한 장치는 예시이며, 다른 장치들도 사용될 수 있다. 일 양상에 따르면, 컴퓨팅 장치(1100)는 다른 컴퓨팅 장치(1118)와의 통신을 가능하게 하는 하나 이상의 컴퓨팅 연결부(1116)를 포함한다. 적절한 통신 연결부(1116)의 예는 RF 송신기, 수신기, 및/또는 송수신기 회로, 유니버셜 직렬 버스(USB), 병렬 및/또는 직렬 포트를 포함하나 이에 국한되지 않는다.
본 명세서에서 사용되는 컴퓨터 판독가능 매체라는 용어는 컴퓨터 저장 매체를 포함한다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 또는 프로그램 모듈과 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함한다. 시스템 메모리(1104), 분리형 저장 장치(1109) 및 비분리형 저장 장치(1110)는 모두 컴퓨터 저장 매체 예(즉, 메모리 저장소)이다. 일 양상에 따르면, 컴퓨터 저장 매체는 RAM, ROM, 전기적 소거가능 프로그램가능 판독 전용 메모리(EEPROM), 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다기능 디스크(DVD) 또는 다른 광학 저장소, 자기 카세트, 자기 테이프, 자기 디스크 저장소 또는 기타 자기 저장 장치, 또는 정보를 저장하는데 사용될 수 있고 컴퓨팅 장치(1100)에 의해 액세스될 수 있는 임의의 다른 제조 물품을 포함한다. 일 양상에 따라, 임의의 이러한 컴퓨터 저장 매체는 컴퓨팅 장치(1100)의 일부이다. 컴퓨터 저장 매체는 반송파 또는 다른 전파형 데이터 신호를 포함하지 않는다.
일 양상에 따르면, 통신 매체는 반송파 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호 내의 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터에 의해 구현되며 임의의 정보 전달 매체 또는 전송 매체를 포함한다. 일 양상에 따르면, "변조된 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하는 방식으로 하나 이상의 특성이 설정되거나 변경된 신호를 말한다. 제한이 아닌 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 연결과 같은 유선 매체, 및 음향, 무선 주파수(RF), 적외선 및 기타 무선 매체와 같은 무선 매체를 포함한다.
도 12a 및 도 12b는 양상들이 실시될 수 있는 예를 들면, 휴대 전화, 스마트폰, 태블릿 개인용 컴퓨터, 랩탑 컴퓨터 등과 같은 이동 컴퓨팅 장치(1200)를 나타낸다. 도 12a를 참조하면, 양상들을 구현하는 이동 컴퓨팅 장치(1200)의 예가 도시되어 있다. 기본적인 구성에서, 이동 컴퓨팅 장치(1200)는 입력 요소 및 출력 요소를 모두 구비한 휴대용 컴퓨터이다. 이동 컴퓨팅 장치(1200)는 일반적으로 디스플레이(1205) 및 사용자가 이동 컴퓨팅 장치(1200)에 정보를 입력할 수 있게 해주는 하나 이상의 입력 버튼을 포함한다. 일 양상에 따르면, 이동 컴퓨팅 장치(1200)의 디스플레이(1205)는 입력 장치(예를 들어, 터치 스크린 디스플레이)로서 기능을 한다. 포함된다면, 선택사항인 측면 입력 요소(1215)가 추가적인 사용자 입력을 가능하게 한다. 일 양상에 따르면, 측면 입력 요소(1215)는 회전 스위치, 버튼, 또는 임의의 다른 유형의 수동 입력 요소이다. 다른 예에서, 이동 컴퓨팅 장치(1200)는 더 많거나 더 적은 입력 요소를 포함한다. 예를 들어, 디스플레이(1205)는 일부 실시 예에서 터치 스크린이 아닐 수 없다. 대안적인 실시 예에서, 이동 컴퓨팅 장치(1200)는 셀룰러 전화와 같은 휴대 전화 시스템이다. 일 양상에 따르면, 이동 컴퓨팅 장치(1200)는 선택적인 키패드(1235)를 포함한다. 일 양상에 따르면, 선택적인 키패드(1235)는 물리적인 키패드이다. 다른 측면에 따르면, 선택적인 키패드(1235)는 터치 스크린 디스플레이 상에 생성되는 "소프트" 키패드이다. 다양한 양상에서, 전술한 출력 요소는 그래픽 사용자 인터페이스(GUI)를 표시하기 위한 디스플레이(1205), 시각적 표시기(1220)(예를 들면, 발광 다이오드), 및/또는 오디오 트랜스듀서(1225)(예를 들면, 스피커)를 포함한다. 일부 실시예에서, 이동 컴퓨팅 장치(1200)는 촉각 피드백을 사용자에게 제공하기 위한 진동 트랜스듀서를 포함한다. 또 다른 예에서, 이동 컴퓨팅 장치(1200)는 예를 들어, 오디오 입력(예를 들어, 마이크 잭), 오디오 출력(예를 들면, 헤드폰 잭), 및 외부 장치로 신호를 보내거나 그로부터 신호를 수신하기 위한 비디오 출력(예를 들어, HDMI 포트)를 포함한다.
도 12b는 이동 컴퓨팅 장치의 일례의 아키텍처를 나타내는 블록도이다. 즉, 이동 컴퓨팅 장치(1200)는 일부 실시예를 구현하는 시스템(즉, 아키텍처)(1202)을 포함한다. 일례로, 시스템(1202)은 하나 이상의 애플리케이션(예를 들어, 브라우저, 전자 메일, 일정관리, 연락처 관리자, 메시징 클라이언트, 게임, 미디어 클라이언트/플레이어)를 실행할 수 있는 "스마트폰"으로 구현된다. 일부 실시예에서, 시스템(1202)은 집적 개인 휴대 정보 단말기(PDA), 무선 전화기와 같은 컴퓨팅 장치로 통합된다.
일 양상에 따르면, 하나 이상의 애플리케이션 프로그램(1250)이 메모리(1262)에 로딩되고 운영 체제(1264) 상에서 실행되거나 그와 연관되어 실행된다. 애플리케이션 프로그램(1264)의 예는 전화 다이얼러 프로그램, 전자 메일 프로그램, 개인 정보 관리(PIM) 프로그램, 워드 프로세싱 프로그램, 스프레드시트 프로그램, 인터넷 브라우저 프로그램, 메시징 프로그램, 등 콘텐츠 편집기(106) 등을 포함한다. 일 양상에 따라, 실행취소 및 재실행 작업을 포함하는 소프트웨어는 메모리(1262)에 로딩된다. 시스템(1202)은 또한 메모리(1262) 내의 비휘발성 저장 영역(1268)을 포함한다. 이 비휘발성 저장 영역(1268)은 시스템(1202)의 전원이 꺼지게 될 때 손실되지 말아야 할 영구적인 정보를 저장하는데 사용된다. 애플리케이션 프로그램(1250)은 전자 메일 또는 전자 메일 애플리케이션에 의해 사용되는 다른 메시지 등과 같은 정보를 비휘발성 저장 영역(1268)에 저장할 수 있다. 동기화 애플리케이션(도시되지 않음)이 또한 시스템(1202)에 존재하고, 호스트 컴퓨터에 저장된 대응하는 정보와 동기화된 비휘발성 저장 영역(1268)에 저장된 정보를 유지하기 위해 호스트 컴퓨터에 상주하는 동기화 애플리케이션과 상호작용하도록 프로그램된다. 알 수 있는 바와 같이, 다른 애플리케이션이 메모리(1262)에 로딩되어 이동 컴퓨팅 장치(1200)에서 실행될 수 있다.
일 양상에 따르면, 시스템(1202)은 하나 이상의 배터리로서 구현되는 전력 공급 장치(1270)를 갖는다. 일 양상에 따르면, 전력 공급 장치(1270)는 배터리를 보충하거나 충전하는 AC 어댑터 또는 전력 공급 도킹 크래들과 같은 외부 전원을 더 포함한다.
일 양상에 따르면, 시스템(1202)은 무선 주파수 통신을 송수신하는 기능을 수행하는 무선부(1272)를 포함한다. 무선부(1272)는 통신 캐리어 또는 서비스 제공자를 통해 시스템(1202)과 "외부 세계" 사이의 무선 접속을 용이하게 한다. 무선부(1272)로 또한 그로부터의 전송은 운영 체제(1264)의 제어 하에서 수행된다. 다시 말해, 무선부(1272)에 의해 수신된 통신은 운영 체제(1264)를 통해 애플리케이션 프로그램(1250)으로 전달되고, 또한 그 반대로 전달될 수 있다.
일 양상에 따르면, 시각적 표시기(1220)는 시각적 통지를 제공하는데 사용되고 및/또는 오디오 인터페이스(1274)는 오디오 트랜스듀서(1225)를 통해 가청 알림을 생성하는데 사용된다. 예시적인 예에서, 시각적 표시기(1220)는 발광 다이오드(LED)이고 오디오 트랜스듀서(1225)는 스피커이다. 이러한 장치는 전력 공급 장치(1270)에 직접 연결될 수 있고, 따라서 활성되는 경우, 이들 장치는 프로세서(1260) 및 다른 컴포넌트가 배터리 전력을 보존하기 위해 종료될지라도 통지 메카니즘에 의해 표시된 기간 동안 온 상태로 유지된다. LED는 사용자가 장치의 전원이 켜진 상태를 나타내기 위한 조치를 취할 때까지 무기한으로 작동하도록 프로그램될 수 있다. 오디오 인터페이스(1274)는 사용자에게 가청 신호를 제공하고 그 사용자로부터의 가청 신호를 수신하기 위해 사용된다. 예를 들어, 오디오 트랜스 듀서(1225)에 연결되는 것 외에, 오디오 인터페이스(1274)는 또한 예를 들어 전화 통화를 용이하게 하기 위해, 가청 입력을 수신하는 마이크로폰에 결합될 수 있다. 일 양상에 따르면, 시스템(1202)은 정지 영상, 비디오 스트림 등을 기록하기 위한 온보드 카메라(1230)의 동작을 가능하게 하는 비디오 인터페이스(1276)를 더 포함한다.
일 양상에 따르면, 시스템(1202)을 구현하는 이동 컴퓨팅 장치(1200)는 추가적인 특징 또는 기능을 갖는다. 예를 들어, 이동 컴퓨팅 장치(1200)는 (분리형 및/또는 비분리형의) 추가 데이터 저장 장치, 예를 들어, 자기 디스크, 광디스크 또는 테이프 등을 포함한다. 이러한 추가적인 저장 장치는 도 12b에서 비휘발성 저장 영역(1268)으로 도시되어 있다.
일 양상에 따르면, 이동 컴퓨팅 장치(1200)에 의해 생성되거나 캡처되었으며 시스템(1202)을 통해 저장된 데이터/정보는 전술한 바와 같이 이동 컴퓨팅 장치(1200) 상에 로컬로 저장된다. 다른 양상에 따르면, 데이터는 무선부(1272)를 통해 또는 이동 컴퓨팅 장치(1200)와 예를 들어 인터넷과 같은 분산형 네트워크 내의 서버 컴퓨터와 같은 이동 컴퓨팅 장치(1200)와 연관된 별개의 컴퓨팅 장치 간의 유선 연결을 통해 장치에 의해 액세스가능한 임의의 수의 저장 매체 상에 저장된다. 알 수 있는 바와 같이, 이러한 데이터/정보는 무선부(1272)를 통해 또는 분산형 컴퓨팅 네트워크를 통해 이동 컴퓨팅 장치(1200)를 통해 액세스가능하다. 유사하게, 일 양상에 따르면, 이러한 데이터/정보는 전자 메일 및 협업 데이터/정보 공유 시스템을 비롯하여, 잘 알려진 데이터/정보 전달 및 저장 수단에 따른 저장 및 사용을 위해 컴퓨팅 장치들 간에 용이하게 전달된다.
본 개시물의 양상들은 예를 들어 방법, 시스템, 및 컴퓨터 프로그램 제품의 블록도 및/또는 동작 예시를 참조하여 앞서 설명되었다. 블록 내에 기술된 기능/동작은 임의의 흐름도에 도시되어 있는 순서와는 다르게 수행될 수 있다. 예를 들어, 관련된 기능/동작에 따라, 연속적으로 도시되어 있는 두 개의 블록은 사실 거의 동시에 실행될 수 있고 또는 블록들은 때때로 반대 순서로 수행될 수 있다.
본 출원에서 제공되는 하나 이상의 예의 설명 및 예시는 청구한 본 발명의 범주를 어떤 식으로도 제한하거나 제약하려 하지 않는다. 본 출원에 제공된 양상, 예시 및 세부사항은 소유권을 전달할 수 있고 다른 사람들이 가장 최적의 청구대상을 구성 및 사용할 수 있기에 충분한 것으로 간주된다. 본 개시물은 본 출원에 제공된 임의의 양상, 예시 또는 세부사항에 국한되는 것으로 해석되어서는 안된다. 결합하여 도시되고 설명되든 또는 개별적으로 도시되고 설명되든 간에, 특정 세트의 기능을 갖는 예시를 제공하기 위해 (구조적 및 방법론적의) 다양한 특징이 선택적으로 포함되거나 배제되려 한다. 본 출원을 설명 및 예시하였으며, 당업자라면 본 개시물의 보다 넓은 범주를 벗어나지 않는 본 출원에서 구현된 일반적인 발명 개념의 보다 넓은 양상의 사상 내에 속하는 변형, 수정 및 대체 예시를 생각해볼 수 있다.

Claims (20)

  1. 컴퓨팅 장치에 의해 수행되는, 협업 편집 환경에서 실행취소 작업(undo operation)을 구현하기 위한 방법으로서,
    이전에 실행취소되지 않은 가장 최근의 사용자 작업 ai을 선택하는 단계 - 상기 선택된 사용자 작업은 상기 협업 편집 환경과 연관된 네트워크 장치에 접속된 복수의 클라이언트 중 하나에서 발생함 - 와,
    압축된 서버 작업(condensed server operation)을 생성하기 위해 모든 중간 작업(intervening operations)을 재귀적으로 압축하는 단계와,
    상기 가장 최근의 사용자 작업을 실행취소하기 위해 상기 선택된 사용자 작업의 역 버전(inverted version)을 적용하는 단계 - 상기 선택된 사용자 작업의 역 버전은 상기 압축된 서버 작업 이후에 변환되고, 사용자는 오직 상기 사용자가 수행했던 작업 ai를 실행취소 하는 것만 허용됨 - 와,
    두 개의 연속적인 사용자 작업들이 정확히 하나의 서버 작업에 의해 분리되도록 가능한 한 많이 상기 사용자에 의해 수행되지 않는 서버 작업들을 연결하는 것을 포함하는 압축된 서버 작업 bs를 생성하는 단계 - 상기 압축된 서버 작업은 일련의 작업들과 상기 일련의 작업들의 변환을 수행하는 알고리즘들을 나타내고, 상기 가장 최근의 사용자 작업 ai는 실행 작업이고 중간 작업 bs가 있음 - 와,
    상기 서버 작업 bs 이후에 역 작업 을 적용하는 단계를 포함하되,
    상기 변환은 관계식 을 이행하지만, 관계식 는 이행하지 않고,
    상기 관계식 (1)은 역 특성 3 (inverse property 3)이고, 상기 관계식 (2)는 역 특성 2 (inverse property 2)이며,
    실행취소 요청의 처리는,
    이전에 실행취소되지 않았고 그 자체가 실행취소 작업이 아닌 가장 최근의 사용자 작업 을 선택하는 것과,
    실행-실행취소 작업 쌍들 사이의 모든 중간 서버 작업들을 가장 안쪽의 서버 작업에서 시작하여 재귀적으로 압축하는 것과,
    상기 쌍들을 등식 을 사용하고 연속적인 서버 작업들을 단일 복합 작업으로 연결함으로써 단일 작업으로 압축하는 것 - 기호 ≡ 는 등가를 의미하고, 기호 + 는 연결을 의미하며, 상기 단일 작업으로 압축하는 것의 결과는 단일 서버 작업임 - 과,
    작업 에 대응하는 실행취소 작업으로서 적용하고 상기 대응하는 실행취소 작업을 상기 협업 편집 환경에서 적용되도록 모든 사용자들에게 전송하는 것과,
    상기 작업을 작업 이력에 실행취소 작업으로 표시하는 것 - 상기 표시하는 것은 실행-실행취소 작업 쌍을 생성하기 위해 어떤 작업이 실행취소 되었는지 더 표시함 - 을 포함하며,
    상기 이력은 서버에 저장되고 상기 이력은 어떤 사용자가 어떤 작업과 연관되는지를 추적하는,
    방법.
  2. 제1항에 있어서,
    상기 협업 편집 환경은 작업 변환 시스템인
    방법.
  3. 제1항에 있어서,
    역 특성 2(inverse property 2)는, 이후에 변환될 수 있는 상기 가장 최근의 사용자 작업 또는 후속 작업과 관련한 상기 실행취소 작업에 대해 유효하지 않은
    방법.
  4. 제1항에 있어서,
    역 특성 3은, 이후에 변환될 수 있는 상기 가장 최근의 사용자 작업 또는 후속 작업과 관련한 상기 실행취소 작업에 대해 유효하지 않은
    방법.
  5. 제1항에 있어서,
    상기 사용자는 상기 사용자에 의해 추가된 작업들에 대해서만 상기 실행취소 작업을 수행하는 것으로 제한되는
    방법.
  6. 컴퓨팅 장치에 의해 수행되는, 협업 편집 환경에서 재실행 작업을 구현하기 위한 방법으로서,
    이전에 재실행되지 않은 가장 최근의 사용자 실행취소 작업을 선택하는 단계 - 상기 선택된 사용자 실행취소 작업은 상기 협업 편집 환경과 연관된 네트워크 장치에 접속된 복수의 클라이언트 중 하나에서 수행됨 - 와,
    압축된 서버 작업을 생성하기 위해 모든 중간 작업을 재귀적으로 압축하는 단계와,
    상기 선택된 사용자 실행취소 작업의 역 버전을 적용하여 상기 선택된 사용자 실행취소 작업을 재실행하는 단계 - 상기 선택된 사용자 실행취소 작업의 역 버전은 상기 압축된 서버 작업 이후에 변환되고, 사용자는 오직 상기 사용자가 실행취소했던 작업 ai를 재실행 하는 것만 허용됨 - 와,
    두 개의 연속적인 사용자 작업들이 정확히 하나의 서버 작업에 의해 분리되도록 가능한 한 많이 상기 사용자에 의해 수행되지 않는 서버 작업들을 연결하는 것을 포함하는 압축된 서버 작업 bs를 생성하는 단계 - 상기 압축된 서버 작업은 일련의 작업들과 상기 일련의 작업들의 변환을 수행하는 알고리즘들을 나타내고, 가장 최근의 사용자 작업 ai는 실행취소 작업이고 중간 작업 bs가 있음 - 와,
    상기 서버 작업 bs 이후에 역 작업 을 적용하는 단계를 포함하되,
    상기 변환은 관계식 을 이행하지만, 관계식 는 이행하지 않고,
    상기 관계식 (1)은 역 특성 3이고, 상기 관계식 (2)는 역 특성 2이며,
    재실행 요청의 처리는,
    이전에 재실행되지 않았던 가장 최근의 실행취소 작업 의 선택을 수신하는 것과,
    실행취소-재실행 작업 쌍들 사이의 모든 중간 서버 작업들을 가장 안쪽의 서버 작업에서 시작하여 재귀적으로 압축하는 것과,
    상기 쌍들을 등식 을 사용하고 연속적인 서버 작업들을 단일 복합 작업으로 연결함으로써 단일 작업으로 압축하는 것 - 기호 ≡ 는 등가를 의미하고, 기호 + 는 연결을 의미하며, 상기 단일 작업으로 압축하는 것의 결과는 단일 서버 작업임 - 과,
    작업 에 대응하는 재실행 작업으로서 적용하고 상기 대응하는 재실행 작업을 상기 협업 편집 환경에서 적용되도록 모든 사용자들에게 전송하는 것과,
    상기 작업을 작업 이력에 재실행 작업으로 표시하는 것 - 상기 표시하는 것은 실행취소-재실행 작업 쌍을 생성하기 위해 어떤 작업이 실행취소 되었는지 더 표시함 - 을 포함하는,
    방법.
  7. 제6항에 있어서,
    역 특성 2는, 이후에 변환될 수 있는 상기 선택된 사용자 실행취소 작업 또는 후속 작업과 관련한 상기 재실행 작업 대해 유효하지 않은
    방법.
  8. 제6항에 있어서,
    역 특성 3은, 이후에 변환될 수 있는 상기 선택된 사용자 실행취소 작업 또는 후속 작업과 관련한 상기 재실행 작업에 대해 유효하지 않은
    방법.
  9. 제6항에 있어서,
    압축된 서버 작업을 생성하는 단계는 중간 작업들을 연결하는 단계를 포함하는
    방법.
  10. 제6항에 있어서,
    상기 작업 이력은 중앙 서버에 저장되는
    방법.
  11. 협업 편집 환경에서 실행취소 작업을 구현하기 위한 클라이언트 장치로서,
    메모리와,
    상기 메모리에 저장된 명령어를 실행하도록 구성된 하나 이상의 프로세서를 포함하되,
    상기 명령어는,
    이전에 실행취소되지 않은 가장 최근의 사용자 작업을 선택하는 것 - 상기 선택된 사용자 작업은 상기 협업 편집 환경과 연관된 서버에 접속된 복수의 클라이언트 중 하나에서 수행됨 - 과,
    압축된 서버 작업을 생성하기 위해 모든 중간 작업을 재귀적으로 압축하는 것과,
    상기 선택된 사용자 작업을 실행취소하기 위해 상기 선택된 사용자 작업의 역 버전을 적용하는 것 - 상기 선택된 사용자 작업의 역 버전은 상기 압축된 서버 작업 이후에 변환되고, 사용자는 오직 상기 사용자가 수행했던 작업 ai를 실행취소 하는 것만 허용됨 - 와,
    두 개의 연속적인 사용자 작업들이 정확히 하나의 서버 작업에 의해 분리되도록 가능한 한 많이 상기 사용자에 의해 수행되지 않는 서버 작업들을 연결하는 것을 포함하는 압축된 서버 작업 bs를 생성하는 것 - 상기 압축된 서버 작업은 일련의 작업들과 상기 일련의 작업들의 변환을 수행하는 알고리즘들을 나타내고, 상기 가장 최근의 사용자 작업 ai는 실행 작업이고 중간 작업 bs가 있음 - 과,
    상기 서버 작업 bs 이후에 역 작업 을 적용하는 것을 포함하되,
    상기 변환은 관계식 을 이행하지만, 관계식 는 이행하지 않고,
    상기 관계식 (1)은 역 특성 3이고, 상기 관계식 (2)는 역 특성 2이며,
    실행취소 요청의 처리는,
    이전에 실행취소되지 않았고 그 자체가 실행취소 작업이 아닌 가장 최근의 사용자 작업 을 선택하는 것과,
    실행-실행취소 작업 쌍들 사이의 모든 중간 서버 작업들을 가장 안쪽의 서버 작업에서 시작하여 재귀적으로 압축하는 것과,
    상기 쌍들을 등식 을 사용하고 연속적인 서버 작업들을 단일 복합 작업으로 연결함으로써 단일 작업으로 압축하는 것 - 기호 ≡ 는 등가를 의미하고, 기호 + 는 연결을 의미하며, 상기 단일 작업으로 압축하는 것의 결과는 단일 서버 작업임 - 과,
    작업 에 대응하는 실행취소 작업으로서 적용하고 상기 대응하는 실행취소 작업을 상기 협업 편집 환경에서 적용되도록 모든 사용자들에게 전송하는 것과,
    상기 작업을 작업 이력에 실행취소 작업으로 표시하는 것 - 상기 표시하는 것은 실행-실행취소 작업 쌍을 생성하기 위해 어떤 작업이 실행취소 되었는지 더 표시함 - 을 포함하며,
    상기 이력은 서버에 저장되고 상기 이력은 어떤 사용자가 어떤 작업과 연관되는지를 추적하는,
    클라이언트 장치.
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020177015707A 2014-12-11 2015-12-11 컴퓨터 애플리케이션 소프트웨어에서 동시 협업 실행취소 작업을 위한 방법 및 시스템 KR102587631B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462090372P 2014-12-11 2014-12-11
US62/090,372 2014-12-11
US14/966,676 2015-12-11
US14/966,676 US10063603B2 (en) 2014-12-11 2015-12-11 Method and system for concurrent collaborative undo operations in computer application software
PCT/US2015/065386 WO2016094868A1 (en) 2014-12-11 2015-12-11 Method and system for concurrent collaborative undo operations in computer application software

Publications (2)

Publication Number Publication Date
KR20170094194A KR20170094194A (ko) 2017-08-17
KR102587631B1 true KR102587631B1 (ko) 2023-10-10

Family

ID=55077626

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177015707A KR102587631B1 (ko) 2014-12-11 2015-12-11 컴퓨터 애플리케이션 소프트웨어에서 동시 협업 실행취소 작업을 위한 방법 및 시스템

Country Status (3)

Country Link
US (1) US10063603B2 (ko)
KR (1) KR102587631B1 (ko)
WO (1) WO2016094868A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10721084B2 (en) * 2017-09-25 2020-07-21 Microsoft Technology Licensing, Llc Providing a private mode in asynchronous collaboration for a synchronous collaboration environment
JP2019139332A (ja) * 2018-02-06 2019-08-22 富士通株式会社 情報処理装置、情報処理方法及び情報処理プログラム
CN109446502A (zh) * 2018-10-17 2019-03-08 南京垂宇网络科技有限公司 一种协同图形编辑撤销重做的方法
CN110968994B (zh) * 2019-10-20 2024-02-27 武汉烽火信息集成技术有限公司 一种文档在线编辑方法及服务器
US11947783B2 (en) * 2021-01-25 2024-04-02 Google Llc Undoing application operation(s) via user interaction(s) with an automated assistant

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7792788B2 (en) 2005-03-04 2010-09-07 Microsoft Corporation Method and system for resolving conflicts operations in a collaborative editing environment
US20090024915A1 (en) * 2007-04-27 2009-01-22 Bea Systems, Inc. Web based application constructor using objects as pages
US8209603B2 (en) * 2009-04-29 2012-06-26 Microsoft Corporation Maintaining undo and redo capability across metadata merges
US8738706B1 (en) 2011-11-16 2014-05-27 Google Inc. Systems and methods for collaborative document editing
JP5747883B2 (ja) * 2012-09-13 2015-07-15 コニカミノルタ株式会社 操作制御方法及び操作制御プログラム並びに操作制御装置
US9436659B2 (en) * 2013-06-21 2016-09-06 3Rb Llc Transferring annotations between documents displayed side by side
US20150058753A1 (en) * 2013-08-22 2015-02-26 Citrix Systems, Inc. Sharing electronic drawings in collaborative environments
US9684646B2 (en) * 2014-08-05 2017-06-20 Apple Inc. Reference representation and transformation in collaborative documents
US10216714B2 (en) * 2014-09-30 2019-02-26 Apple Inc. Text character and formatting changes in collaborative contexts
CN104462037B (zh) 2014-11-04 2017-09-26 华南理工大学 文档协同编辑中的一致性维护方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Ferrié et al. "Concurrent undo operations in collaborative environments using operational transformation." OTM 2004: On the Move to Meaningful Internet Systems. 155-173
Sun. "Undo as concurrent inverse in group editors." ACM Transactions on Computer-Human Interaction 9.4 (2002): 309-361.*

Also Published As

Publication number Publication date
WO2016094868A1 (en) 2016-06-16
KR20170094194A (ko) 2017-08-17
US20160173543A1 (en) 2016-06-16
US10063603B2 (en) 2018-08-28

Similar Documents

Publication Publication Date Title
CN109219824B (zh) 利用用户访问权限来自动共享文档
CN108431797B (zh) 电子文档的存储器节约的版本控制
US10528657B2 (en) Spreadsheet collaboration in a multi-device environment
AU2014275272B2 (en) Automated system for organizing presentation slides
KR102587631B1 (ko) 컴퓨터 애플리케이션 소프트웨어에서 동시 협업 실행취소 작업을 위한 방법 및 시스템
US20140365918A1 (en) Incorporating external dynamic content into a whiteboard
US10880372B2 (en) Blended operational transformation for multi-user collaborative applications
US10318618B2 (en) Consistent views of partitioned data in eventually consistent systems
US10409779B2 (en) Document sharing via logical tagging
EP3230893B1 (en) Method and system for concurrent collaborative undo operations in computer application software
US11216524B2 (en) Merged and actionable history feed
US20220164312A1 (en) Electronic communication and file reference association
US20180121293A1 (en) Code base synchronization between source control systems
CN109983488B (zh) 电子邮件项的自动化显示状态
TW201539218A (zh) 與外部內容項目之間的編碼的關聯性
US20180074867A1 (en) Provide copy of notebook document

Legal Events

Date Code Title Description
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant