KR20050000330A - 철회 기반구조 - Google Patents

철회 기반구조 Download PDF

Info

Publication number
KR20050000330A
KR20050000330A KR1020040046474A KR20040046474A KR20050000330A KR 20050000330 A KR20050000330 A KR 20050000330A KR 1020040046474 A KR1020040046474 A KR 1020040046474A KR 20040046474 A KR20040046474 A KR 20040046474A KR 20050000330 A KR20050000330 A KR 20050000330A
Authority
KR
South Korea
Prior art keywords
user interface
interface object
revocation
changes
unit
Prior art date
Application number
KR1020040046474A
Other languages
English (en)
Other versions
KR101087364B1 (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 KR20050000330A publication Critical patent/KR20050000330A/ko
Application granted granted Critical
Publication of KR101087364B1 publication Critical patent/KR101087364B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)
  • Processing Or Creating Images (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 사용자 인터페이스 객체의 개발자가 철회 정보의 생성 및 추적에 대해 책임질 필요가 없도록 철회 정보를 자동으로 생성하여 추적하는 방법, 시스템 및 컴퓨터 프로그램 제품에 관한 것이다. 영상 사용자 인터페이스 디자이너 내의 객체에 대한 변경의 변경 통지가 프로세스된다. 변경 이전의 객체의 초기 상태를 나타내는 데이터 및 변경 이후의 객체의 후속 상태를 나타내는 데이터는 존속된다. 존속된 데이터로부터, 철회 유닛은 객체에 대한 변경을 철회하기 위해 준비된다. 철회 유닛은 객체에 행해진 다수의 변경의 트랜잭션을 포함할 수 있다. 각각의 철회 유닛은 철회 유닛 내에 포함된 액션들을 철회하고 재수행하기 위한 대응하는 루틴들을 식별할 수 있다. 철회 유닛은 철회/재수행 통지가 수신될 때까지 저장된 다음에, 철회 유닛에 의해 표시된 변경을 철회/재수행하기 위해 사용될 수 있다.

Description

철회 기반구조{UNDO INFRASTRUCTURE}
본 발명은 철회 기반구조에 관한 것이다. 더욱 구체적으로, 본 발명은 사용자 인터페이스 객체의 개발자가 철회 정보의 생성 및 추적에 대해 책임질 필요가 없도록 철회 정보를 자동으로 생성하여 추적하는 방법, 시스템 및 컴퓨터 프로그램 제품에 관한 것이다.
철회는 다수의 애플리케이션의 잘 알려져 있는 특징이다. 예를 들어, 스프레드시트 및 워드 프로세서는 전형적으로 새로운 데이터 추가, 기존의 데이터 삭제, 오퍼레이션 자르기와 붙이기, 및 데이터 포매팅과 같은 데이터 엔트리가 철회될 수 있게 한다. '재수행(redo)'은 철회의 상대적인 것으로서, 많은 상황에서 철회 오퍼레이션을 철회하는 것과 개념적으로 동등하다. 몇가지 구현에 있어서, 재수행은 최종 오퍼레이션이 반복될 수 있게 할 수 있다. 이러한 애플리케이션에서, '철회'는 철회 오퍼레이션 및 재수행 오퍼레이션을 둘다 포함하는 총칭 용어로사용될 수 있다.
영상(visual) 사용자 인터페이스 디자이너들은 개발자가 사용자 인터페이스를 시각적으로 표시할 수 있게 하고, 시각적 표시로부터 최소한 일부의 대응하는 소스 코드를 자동으로 생성할 수 있게 하는 소프트웨어이다. 영상 사용자 인터페이스 디자이너 내에서 철회를 구현하는 것은 몇가지 유일한 방해물들을 생기게 한다. 예를 들어, 다수의 상이한 유형의 객체들이 영상 사용자 인터페이스 디자이너에서 사용될 수 있기 때문에, 철회를 구현하는 것은 일반적으로 각 객체의 개발자 책임이다. 다수의 철회 구현은 단일 유닛의 철회가능한 작업을 표시하기 위해 "철회 유닛"을 사용하여 유사한 방식으로 동작한다. 일단 작성되면, 철회 유닛들은 스택(stack)에 추가되고, 사용자는 대응하는 철회 유닛들에 의해 표시된 액션들을 철회하기 위해 스택을 천천히 검토하는 것이 허용된다.
종종, 철회 유닛들은 토글(toggle)로서 설계된다. 즉, 철회를 두번 호출하면 첫번째 호출 이전의 처음의 상태로 다시 돌아간다. 철회의 복잡도로 인해, 애플리케이션들은 일반적으로 그라운드에서부터 지원 철회까지 기입될 필요가 있다. 예를 들어, 표 1에 표시된 유사 코드(pseudo code)에 의해 예시된 바와 같이 제어의 텍스트 특성을 설정하는 것이 고려된다.
[표 1]
이 액션을 철회가능하게 하기 위해, 액션은 표 2에 표시된 유사 코드에 의해예시된 것과 같이 객체 내에 캡슐화된다.
[표 2]
종래에, 개발자는 이때 표 3에 예시된 유사 코드에 의해 표시된 바와 같이 이 클래스를 사용한다.
[표 3]
표2 및 표 3에 예시된 구현이 행해지는 동안에, 개발자가 중지하는 것은 쉽다. TextPropUndoAction은 중지되기 쉽다-이 객체가 액션을 정확히 철회하려 한다면 제어의 상태는 일관되어야 한다-는 것을 알기바란다. 예를 들어, 직접, 제어 텍스트 특성을 변경한 어딘가에 (즉, 표 3에 표시된 것처럼이 아니라, 간단하게 표1에 표시된 것처럼) 한 부분의 코드가 있으면, TextPropUndoAction은 중지될 것이다. 이것은 아마 경험이 없는 프로그래머가 특정 변경이 어떻게 철회에 영향을 줄지 고려하지 않는 경우에 실제 너무나 자주 발생한다. 이 문제를 더욱 복잡하게 하는 것은, 철회 액션이 어떤 이유로 실패한다고 하면, 각 클래스에 대한 정확한 실패 시맨틱(semantic)을 구현하는 것은 엄청난(daunting) 작업이 될 수 있다는 점이다. 종래의 철회 구현은 또한, 예를 들어 표 2에 표시된 바와 같이, 철회를 구현하지 않는 제3자 객체에 철회 지원을 제공할 수 없다.
따라서, 사용자 인터페이스 객체의 개발자가 철회 정보의 생성 및 추적에 대해 책임질 필요가 없도록 철회 정보를 자동으로 생성하여 추적하는 방법, 시스템 및 컴퓨터 프로그램 제품이 요구된다.
본 발명은 사용자 인터페이스 객체의 개발자가 철회 정보의 생성 및 추적에 대해 책임질 필요가 없도록 철회 정보를 자동으로 생성하여 추적하는 방법, 시스템 및 컴퓨터 프로그램 제품에 관한 것이다. 본 발명의 예시적인 구현에 따르면, 영상 사용자 인터페이스 디자이너 내의 사용자 인터페이스 객체에 대한 하나 이상의 변경의 하나 이상의 변경 통지가 프로세스된다. 예를 들어, 변경 통지는 추가하는 또는 추가한 통지들, 제거하는 또는 제거한 통지들, 변경하는 또는 변경한 통지들, 리네임(rename) 통지 등을 포함할 수 있다. 하나 이상의 변경 이전의 사용자 인터페이스 객체의 초기 상태를 나타내는 데이터 및 하나 이상의 변경 이후의 사용자 인터페이스 객체의 후속 상태를 나타내는 데이터는 존속된다. 존속된 데이터로부터, 철회 유닛은 사용자 인터페이스 객체에 대한 하나 이상의 변경을 철회하기 위해 준비된다. 이와 대조적으로, 종래의 철회 구현의 경우에, 개발자들은 객체에 행해질 수 있는 모든 변경들에 대한 철회 유닛들을 작성하여 저장하기 위해 철회 유닛들을 수동으로 작성하여 기억해 두어야 한다.
철회 유닛은 사용자 인터페이스 객체에 행해진 다수의 변경들의 트랜잭션을 포함할 수 있다. 각각의 철회 유닛은 철회 유닛 내에 포함된 액션들을 철회하고 재수행하기 위한 대응하는 루틴들을 식별할 수 있다. 철회 유닛은 철회 또는 재수행 통지가 수신될 때까지 예를 들어 스택 상에 저장된 다음에, 철회 유닛에 의해 표시된 변경들을 철회 또는 재수행하기 위해 사용될 수 있다. 사용된 후에, 철회 유닛은, 예를 스택으로부터 철회 유닛을 제거함으로써, 삭제된다. 삭제된 철회 유닛들은 재수행 유닛들로서 저장될 수 있고, 삭제된 재수행 유닛은 철회 유닛들로서 저장될 수 있다.
본 발명의 추가적인 특징 및 장점은 후속되는 상세한 설명에서 설명될 것이고, 상세한 설명으로부터 부분적으로 명백해지거나, 또는 본 발명의 실시에 의해 알 수 있게 될 것이다. 본 발명의 특징 및 장점은 첨부된 청구범위에서 구체적으로 나타낸 수단 및 조합에 의해 실현되어 얻어질 수 있다. 본 발명의 이들 및 다른 특징은 다음의 상세한 설명 및 첨부된 청구범위로부터 더욱 완전하게 명백해지거나, 또는 이후 설명되는 본 발명의 실시에 의해 알 수 있게 될 것이다.
본 발명의 상술된 장점 및 특징과 그외 다른 장점 및 특징이 얻어질 수 있는 방식을 설명하기 위해, 앞에서 간략하게 설명된 본 발명의 더욱 구체적인 설명은첨부된 도면에 도시된 특정 실시예를 참조하여 제공될 것이다. 이들 도면은 단지 본 발명의 전형적인 실시예를 나타낸 것이지, 본 발명의 범위를 제한하고자 하는 것이 아니라는 것을 알기 바라며, 본 발명은 첨부된 도면을 사용하여 추가적인 특이성 및 상세가 기술되고 설명될 것이다.
도 1은 본 발명의 한 실시예를 도시한 도면.
도 2a-2b는 예시적인 사용자 인터페이스 객체 및 대응하는 철회 유닛(undo unit)에 대한 예시적인 변경의 트랜잭션(transaction)을 도시한 도면.
도 3a-3b는 다이얼로그(dialog) 사용자 인터페이스 객체 및 대응하는 철회 유닛에 대한 예시적인 트랜잭션을 도시한 도면.
도 4a-4c는 본 발명에 따라 철회 정보를 생성하여 트랙하는 방법의 예시적인 액트 및 단계를 도시한 도면.
도 5는 본 발명에 적합한 오퍼레이팅 환경을 제공하는 예시적인 시스템을 도시한 도면.
<도면의 주요 부분에 대한 부호의 설명>
110, 210, 310 : 설계면
122 : 트랜잭션 통지
124 : 변경 통지
130 : 직렬화 엔진
140 : 철회 엔진
150 : 철회 유닛
160 : 철회 스택
212, 312 : 객체
251, 351 : 객체 이름
252, 352 : 객체 유형
270, 370 : 변경전 부분
280, 380 : 변경후 부분
본 발명은 사용자 인터페이스 객체의 개발자가 철회 정보의 생성 및 추적에 대해 책임질 필요가 없도록 철회 정보를 자동으로 생성하여 추적하는 방법, 시스템 및 컴퓨터 프로그램 제품에 관한 것이다. 본 발명의 실시예는 더욱 상세하게 후술되는 바와 같이, 여러가지 컴퓨터 하드웨어를 포함하는 하나 이상의 전용 및/또는 하나 이상의 범용 컴퓨터를 포함할 수 있다.
도 1은 본 발명의 예시적인 실시예를 도시한 것이다. 개발자가 개발자의 객체들을 위한 철회 정보를 생성하여 추적할 필요가 있는 종래의 철회 구현과는 달리, 철회 엔진(140)은 영상 사용자 인터페이스 디자이너의 설계면(design surface; 110)에서 발생하는 상태 변경을 위한 철회 유닛들을 작성한다. 그러므로, 설계면(110)을 사용하는 개발자들은 철회 정보의 생성 및 추적에 대해 책임질 필요가 없다.
철회 엔진(140)은 설계면(100) 내에서 실행되는 객체들의 다음과 같은 특성을 사용한다. 첫째, 관심있는 객체들은 디자이너 직렬변환기(serializer)에 의해 소정의 포맷으로 존속될 수 있다. 즉, 설계면(110)의 디자이너 로더(loader)가 객체들을 판독하여 디스크에 기입하기 때문에, 디자이너 로더는 또한 객체들을 소정의 포맷으로 존속시킨다. 둘째, 설계면(110) 내의 객체들은 특성이 변경될 때 특성 변경 통지들을 발생시킨다(예를 들어, 후술되는 디자이너 호스트들에 관한 설명을 참조). 셋째, 트랜잭션은 다수의 더욱 작은 액션들 및 이들과 관련된 특성 변경 통지들을 스패닝(spanning)하는 철회 유닛을 작성하기 위해 사용될 수 있다. 이러한 특성들에 따라, 철회 엔진(140)은 자동으로 필요로 하는 소정의 철회 유닛들을 작성할 수 있다.
철회 엔진(140)은 철회 유닛들을 작성하기 위해 변경 통지들(124)에 귀를 기울인다. 도 1에 도시된 예시적인 구현의 경우, 변경 통지들은 변경들이 설계면(110) 내의 객체에 행해질 때 철회 엔진(140)에 통지하는 변경 통지 서비스에 의해 발생된다. 철회 유닛(150)과 같은 철회 유닛들 자체는 직렬화 엔진(130)에 의해 생성된 직렬화된 객체 상태를 포함한다. 직렬화 엔진(130)은 변경이 컴포넌트에 행해지기 전후에 특성 및 객체 값들을 저장하기 위해 사용되는 전체 직렬화 서비스의 일부이다. 디자이너 호스트(host)는 트랜잭션들을 추적하는데 사용된다. (예를 들어, 설계면(110) 내의 객체들은 이들이 전개되고 있는 동안에 반드시 라이브(live) 객체들은 아니기 때문에, 디자이너 호스트는 객체들에 향해진 사용자 입력을 수신하여 프로세스하기 위해 객체를 서라운딩(surrounding)한다.) 그 결과, 철회 엔진과 상호작용하기 위해 필요로 되는 코드는 없으므로, 제어의 텍스트 특성에 대한 철회가능 변경을 작성하기 위한 개발자 코드는 표 1에 표시된 유사 코드에 동일한 표 4에 표시된 바와 같은 유사 케이스로 예시될 수 있다.
[표 4]
철회 엔진(140)은 그 밖에 모든것을 처리한다.
더욱 복잡한 상호작용들도 또한 실행될 수 있다. 예를 들어, 제어를 센터링하는 알고리즘이 고려된다. 제어를 배치하기 위한 X 및 Y 위치를 계산한 후에, 레이아웃(layout) 알고리즘은 표 5에 표시된 유사 코드에 의해 예시된 바와 같이, 단일 철회 액션 하에서 2개의 특성 세트들을 결합할 수 있다.
[표 5]
전체 센터링 프로세스는 다음과 같이 진행된다. 제어를 센터링하는 옵션이 설계면(110) 내에서 선택될 때, 시작 트랜잭션 통지(122)는 트랜잭션을 시작하고, 변경 통지(124)는 수신되어, 객체의 상태가 변경에 관한 것이라는 것을 나타낸다. 트랜잭션(122)에 응답하여, 철회 엔진(140)은 철회 유닛(150)을 작성하고, 변경 통지(124)에 응답하여, 객체의 불변 상태를 직렬화 엔진(130)으로 직렬화(132)한다. 철회 엔진(140)은 철회 유닛(150) 내의 직렬화된 객체 상태(예를 들어, 철회 유닛(152 및 154) 내의 oldX 및 oldY)를 저장한다. 일단 알고리즘이 종료되면, 변경된 통지(124)는 객체의 상태가 변경되었다는 것을 나타내고, 종료 트랜잭션 통지(122)는 트랜잭션의 종료를 나타낸다. 변경된 통지(124)에 응답하여, 철회 엔진(140)은 객체의 변경된 상태를 직렬화 엔진(130)으로 직렬화(132)하고, 철회 유닛(150) 내의 직렬화된 객체 상태(예를 들어, 철회 유닛(152 및 154) 내의 X 및 Y)를 저장한다. 종료 트랜잭션 통지(122)에 응답하여, 철회 엔진(140)은 철회 스택(160) 상에 철회 유닛(150)을 저장한다.
철회 엔진(140)은 철회 유닛(150)을 철회와 재수행 상태 간의 토글로 취급한다. 철회의 선택은 센터 알고리즘을 선택하기 이전에 객체를 원래의 위치로 되돌리고, 철회 유닛을 철회 스택(160)으로부터 삭제한다. 철회 유닛(150)이 센터 오퍼레이션을 재수행하기 위한 충분한 정보를 포함하기 때문에, 철회 유닛(150)은 재수행 스택 상에 배치될 수 있다. 재수행의 선택은 센터링 오퍼레이션이 다시 실행되게 하고, 재수행 스택으로부터 철회 유닛(이것이 재수행 스택 상에 있었기 때문에 이제 재수행 유닛임)을 삭제한다.
직렬화 엔진(130)은 2가지 유형의 직렬화를 실행할 수 있다. 오퍼레이션의 추가 및 제거를 위해, 직렬화 엔진(130)은 예상대로 새로운 컴포넌트를 작성한다. 그러나, 특성 변경을 위해, 직렬화 엔진(130)은 변경을 표시하는데 필요한 변경들을 단순히 직렬화한다. 가능하면 새로운 컴포넌트의 작성을 피함으로써, 완전한 컴포넌트 작성의 오버헤드가 제거되어 철회 엔진의 성능을 향상시킨다.
철회 엔진(140)의 예시적인 구현을 위한 여러가지 클래스 및 방법의 유사 코드 설명은 표 6 및 7에 계속된다. 표 6에 예시된 UndoEngine 클래스는 철회 스택과 같은 철회 저장 구현, 직렬 엔진 구현, 및 영상 사용자 인터페이스 디자이너와 같은 사용자 인터페이스와 일치될 수 있도록 추상적이다.
[표 6]
UndoEngine 클래스의 예시적인 방법 및 특성은 표 7에 표시된 유사 코드로 예시된다.
[표 7]
UndoEngine 구성자public UndoEngine(IServiceProvider provider);동작 새로운 UndoEngine 작성파라미터 System.IServiceProvider provider부모화 서비스 제공자. UndoEngine은 이 제공자로부터 쓸모있게 될몇가지 서비스를 필요로 한다.AddUndoUnit 방법protected abstract void AddUndoUnit(UndoUnit unit);동작 주어진 유닛을 철회 스택에 추가하기 위해 호출됨.파라미터 System.ComponentModel.Design.UndoEngine.UndoUnit unit추가하기 위한 철회 유닛. 이 유닛은 CreatUndoUnit을 호출함으로써 미리 작성되어 있을 수 있다.CreateUndoUnit 방법protected virtual UndoUnit CreateUndoUnit(string name, bool primary);동작 새로운 철회 유닛 작성. 디폴트 구현은 UndoUnit의 새로운인스턴스를 바로 돌려보낸다.파라미터 System.String name작성하기 위한 유닛의 이름. 이것은 사용자에게 노출되는이름일 수 있다.System.Boolean primary1차 유닛은 일련의 내포된 유닛들 중의 제1 유닛이 작성될 때참일 수 있다. 그것은 소정의 내포된 유닛들에 대해서는 거짓일 수있다. UndoEngine은 디폴트에 의해 이 파라미터를 전혀 갖지않지만, (COM IOleParentUndoUnit 디자인 패턴을 수반하는 것과같은) 몇몇의 Undo 구현은 1차 유닛과 그 자식 간의 차이를판정하기 위해 필요로 할 수 있다.DiscardUndoUnit 방법protected virtual void DiscardUndoUnit(UndoUnit unit);동작 철회 유닛이 폐기될 때 호출됨. 이 방법이 호출되기 전에, 철회유닛은 닫혀진 다음에 철회된다.파라미터 System.ComponentModel.Design.UndoEngine.UndoUnit unit폐기하기 위한 유닛.Dispose 방법public void Dispose();protected virtual void Dispose(bool disposing);동작 이 객체를 배치파라미터 System.Boolean disposing객체가 배치되어 있으면 참, 종료되어 있으면 거짓.
GetRequiredService 방법protected object GetRequiredService(Type serviceType);동작 요청된 서비스를 돌려보냄. 이 서비스가 이용 불가능하면,이 방법은 손실 서비스를 기술하는 NotSupportedException을급히 실행한다.파라미터 System.Type serviceType검색하기 위한 서비스의 유형GetService 방법protected object GetService(Type serviceType);동작 요청된 서비스를 돌려보냄. 이 서비스가 이용 불가능하면,이 방법은 널을 돌려보냄.파라미터 System.Type serviceType검색하기 위한 서비스의 유형
표 8에 예시된 UndoUnit 클래스는 철회가능 액션을 캡슐화하는 UndoEngine 내에 함유된 클래스이다. 디폴트 UndoUnit 구현은 변경 통지들을 듣고, 각 변경에 대한 이벤트들의 리스트를 구성한다. 그것은 상술된 직렬화 엔진(130) 및 직렬화 서비스를 사용하여 이들 이벤트들을 저장한다. UndoUnit은 몇개의 공용 가상 방법들을 통해 UndoEngine으로부터 직접 변경에 대한 이벤트 통지들을 수신한다. 이러한 방법들을 노출시킴으로써, 개발자들은 그들이 필요로 하는 소정의 추가 로직을 UndoUnit으로부터 구하여 실행할 수 있다. 원한다면, 개발자들은 UndoUnit의 구현을 완전히 바이패스할 수 있다.
[표 8]
UndoUnit 클래스의 예시적인 방법들 및 특성들은 표 9에 표시된 유사 코드로 예시된다.
[표 9]
UndoUnit 구성자public UndoUnit(UndoEngine engine, string name);동작 새로운 UndoUnit 객체 작성.파라미터 System.ComponentModel.Design.UndoEngine engine이 철회 유닛을 소유하는 철회 엔진.System.String name이 유닛의 이름.Name 특성public string Name {get;}동작 이 철회 유닛의 이름.IsEmpty 특성public boolean IsEmpty {get;}동작 이 철회 유닛이 소정의 이벤트들을 포함하지 않으면 참을 돌려보냄.철회 엔진은 빈 유닛들을 폐기할 수 있다.UndoEngine 특성protected UndoEngine UndoEngine {get;}동작 구성자에게로 넘어간 철회 엔진을 돌려보냄.Close 방법public virtual void Close();동작 이 유닛을 닫기 위해 철회 엔진에 의해 호출됨. 유닛이 닫혀질 때,이 여러가지 이벤트 방법에 참가할 수 있는 더 이상의 이벤트는 없음.UndoUnit 자체는 현재 오픈되는 소정의 이벤트들이 닫혀질 수 있도록하기 위해 여기에서 액션을 취할 수 있다.ComponentAdded 방법public virtual Void ComponentAdded(ComponentEventArgs e);동작 이 방법은 연관된 이벤트가 IComponentChangeService로부터 생기게될 때 UndoEngine에 의해 호출된다.ComponentAdding 방법public virtual void ComponentAdding(ComponentEventArgs e);동작 이 방법은 연관된 이벤트가 IComponentChangeService로부터 생기게될 때 UndoEngine에 의해 호출된다.ComponentChanged 방법public virtual Void ComponentChanged(ComponentChangedEventArgs e);동작 이 방법은 연관된 이벤트가 IComponentChangeService로부터 생기게될 때 UndoEngine에 의해 호출된다.ComponentChanging 방법public virtual Void ComponentChanging(ComponentChangingEventArgs e);동작 이 방법은 연관된 이벤트가 IComponentChangeService로부터 생기게될 때 UndoEngine에 의해 호출된다.
ComponentRemoved 방법public virtual Void ComponentRemoved(ComponentEventArgs e);동작 이 방법은 연관된 이벤트가 IComponentChangeService로부터 생기게될 때 UndoEngine에 의해 호출된다.ComponentRemoving 방법public virtual Void ComponentRemoving(ComponentEventArgs e);동작 이 방법은 연관된 이벤트가 IComponentChangeService로부터 생기게될 때 UndoEngine에 의해 호출된다.ComponentRename 방법public virtual Void ComponentRename(ComponentRenameEventArgs e);동작 이 방법은 연관된 이벤트가 IComponentChangeService로부터 생기게될 때 UndoEngine에 의해 호출된다.GetService 방법protected object GetService(Type serviceType);동작 주어진 서비스의 인스턴스를 돌려보냄, 또는 서비스가해결될 수 없으면 널.Undo 방법public void Undo();동작 이 방법은 철회 액션을 실행하기 위한 공용 API이다.철회 액션은 철회와 재수행 상태간을 토글하므로, 철회를 2번호출하면 객체를 다시 원래의 상태로 설정할 수 있다.UndoCore 방법protected virtual void UndoCore();동작 이 방법은 철회 액션을 실행할 책임이 있다. 그것은 공용 Undo방법에 의해 호출된다. Undo 방법 자체는 UndoCore에 의해 실행된예외의 이벤트 내에서도 UndoUnit 객체 내의 일관된 상태를유지하도록 실시한다.
도 2a 및 2b는 설계면(210) 상의 예시적인 사용자 인터페이스 객체(212) 및 대응하는 철회 유닛(250)에 관한 리사이즈(resize) 오퍼레이션에 대한 예시적인 트랜잭션을 각각 도시한 도면이다. 사용자 인터페이스 객체(212)의 상부 좌측 코너 상의 마우스 다운 이벤트 상에서, 시작 트랜잭션 통지는 설계면(210)에서 철회 엔진으로 보내지고, 그 다음에 변경 통지가 후속된다. 시작 트랜잭션 통지는 일련의 변경들이 단일 철회 유닛 내에서 캡처되어야 된다는 것을 철회 엔진에게 통지한다. 변경 통지는 이것이 변경에 관한 것이기 때문에 철회 엔진에게 객체(212)의 현재특성을 존속하라고 통지한다.
초기에, 사용자 인터페이스 객체(212)는 철회 유닛(250)의 변경전 부분(270) 내에서 (30, 30)의 위치(272) 및 (40, 40)의 사이즈(274)로서 반영되는 위치(214)에 위치하게 된다. 설계면(210) 내에서, 사용자 인터페이스 객체(212)의 상부 좌측 코너는 위치(216)를 통해 위치(218)로 이동된다. 마우스 업 이벤트 상에서, 종료 트랜잭션 통지가 후속되는 변경 통지는 철회 엔진에 보내진다. 변경 통지는 철회 엔진에게 객체(212)의 변경된 특성을 존속하라고 통지하고, 종료 트랜잭션 통지는 트랜잭션을 종료한다. 객체(212)의 상부 좌측 코너의 이동은 객체의 위치 및 사이즈를 변경시킨다는 것을 알기바란다. 따라서, (10, 10)의 위치(282) 및 (60, 60)의 사이즈(284)는 변경 유닛(250)의 변경후 부분(280) 내에 저장된다. 위치(30, 30)에서 위치(10, 10)으로의 이동, 및 사이즈(40, 40)에서 사이즈(60, 60)으로의 리사이즈를 함께 그룹화함으로써, 철회 및 재수행은 두개의 액션을 동시에 실행하는데, 이것은, 개발자의 시각에서 하나의 오퍼레이션만이 실행되었기 때문에, 아마도 개발자가 가장 바라던 것일 수 있다.
철회 유닛(250)은 또한 객체 이름(251), 객체 유형(252) 및 기타 정보(253)를 포함하는 추가 정보를 포함한다. 이 추가 정보는 변경 유닛에 대응하는 객체를 식별한는데 도움이 된다. 예를 들어, 오퍼레이션이 실행되는 객체가 설계면으로부터 삭제된 다음에 철회를 통해 다시 추가될 때, 추가 정보는 철회 또는 재수행 액션을 적절한 객체로 향하게 한다. 객체가 추가되는 경우를 고려하면, 그것의 텍스트 특성은 수정되고 - 2개의 별개의 철회 액션을 발생시킴-, 그 다음에 2개의 액션은 철회된다. 객체가 첫번째 재수행에 의해 재작성된 후에 텍스트 특성 변경을 재수행하기 위해, 철회 유닛은 원래의 객체가 삭제 오퍼레이션을 통해 파기된 경우라도 적절한 객체를 위치시킬 수 있어야 된다.
도 3a 및 3b는 설계면(310) 상의 제3자 다이얼로그 사용자 인터페이스 객체(312) 및 대응하는 철회 유닛(350)에 대한 예시적인 트랜잭션을 각각 도시한 도면이다. 다이얼로그 사용자 인터페이스 객체(312)는 연령 필드(313), 성별 필드(315), OK 버튼(317) 및 CANCEL 버튼(319)을 포함한다. 성별 필드(315)의 선택시에, 시작 트랜잭션 통지는 설계면(310)에서 철회 엔진으로 보내지고, 그 다음에 변경 통지가 후속된다. 도 2a-2b에서와 같이, 시작 트랜잭션 통지는 일련의 통지들이 단일 철회 유닛 내에서 캡처되어야 된다는 것을 철회 엔진에게 통지한다. 변경 통지는 이것이 변경에 관한 것이기 때문에 철회 엔진에게 객체(312)의 현재 특성을 존속하라고 통지한다.
초기에, 성별 필드(315)는 철회 유닛(350)의 변경전 부분(370) 내에서 "M"을 포함하는 성별 필드(372)로서 반영되는 "M"을 포함한다. 포커스가 다이얼로그 사용자 인터페이스 객체(312)의 성별 필드(315)를 떠나면, 변경된 통지는 철회 유닛(350)의 변경후 부분(380) 내에서 "F"를 포함하는 성별 필드(382)로서 반영되는 객체(312)의 변경된 성별 특성을 존속하라고 철회 엔진에게 통지하기 위해 보내진다. 연령 필드(313)의 선택시에, 변경하는 통지는 이것이 변경에 관한 통지이기 때문에 철회 엔진에게 연령 특성을 존속하라고 통지하기 위해 설계면(310)에서 철회 엔진으로 보내진다. 초기에, 연령 필드(374)는 철회 유닛(350)의 변경전부분(370) 내에서 "30"을 포함하는 연령 필드(374)로서 반영되는 "30"을 포함한다. 포커스가 연령 필드(313)를 떠나면, 변경된 통지는 철회 유닛(350)의 변경후 부분 내에서 "-5"를 포함하는 연령 필드(384)로서 반영되는 객체(312)의 변경된 연령 특성을 존속하라고 철회 엔진에게 통지하기 위해 보내진다.
필드의 확인은 일반적으로 필드가 우선 새로운 값을 수신할 것을 요구하기 때문에, "-5"가 철회 유닛(350) 내에 저장된다. 그러나, 필드 확인은 OK 버튼이 선택되기 전에 및/또는 연령 필드가 포커스를 잃기 전에 연령 필드가 정정될 것을 요구할 수 있다. 따라서, 다른 변경 통지는 변경 유닛(350)의 변경전 부분(370) 내의 연령 필드(376) 내에 "30"을 기록하는 철회 엔진에 보내질 수 있다. (확인 코드는 확인 프로세스의 일부로서 값을 다시 "30"으로 변경했을 수도 있다.) 연령 필드(313)를 합법적인 값인 "5"로 변경하는 것은 철회 유닛(350)의 변경후 부분 내에서 "5"의 값을 갖는 연령 필드(386)로서 반영되는 새로운 값을 존속하라고 철회 엔진에게 통지하기 위해 변경된 통지를 생성한다. 도 2b와 마찬가지로, 철회 유닛(350)은 또한 객체 이름(351), 객체 유형(352) 및 기타 정보(353)를 포함하는 추가 정보를 포함한다는 것을 알기 바란다.
다이얼로그 사용자 인터페이스 객체(312)가 OK 버튼(317) 및 CANCEL 버튼(319)을 포함하기 때문에, 오픈(open) 트랜잭션은 완료될 수 없다. CANCEL 버튼(319)이 선택되면, 트랜잭션은 단순히 롤 백(roll back)되고, 철회 유닛(350)은 롤 백 후에 전혀 철회하지 않기 때문에 저장되지 않는다. OK 버튼(317)이 선택되면, 종료 트랜잭션이 트랜잭션을 종료하기 위해 철회 엔진에 보내지고, 철회유닛(350)은 저장되어, 철회될/재수행될 다이얼로그 사용자 인터페이스 객체(312) 내의 변경들을 고려한다. 다이얼로그가 닫혀지면, 모든 변경들은 대부분의 사용자들이 다이얼로그에 대한 변경을 단일 오퍼레이션으로서 생각하기 때문에 단일 트랜잭션으로서 보통 처리된다. 물론, 다이얼로그가 오픈되는 동안에, 개별 변경들은 한번에 하나의 변경이 철회 또는 재수행될 수 있도록 분리된 철회 유닛으로서 저장될 수 있다. 사용자 인터페이스 객체의 복잡도에 따라, 트랜잭션들은 적절하게 함유될 수 있다. 이러한 복잡한 철회 기능은 객체의 개발자가 철회 및 재수행 기능을 구현할 필요없이 제3자 다이얼로그 사용자 인터페이스 객체(312)에 이용가능하다는 것을 알기 바란다.
본 발명은 또한 기능적인 단계들 및/또는 비기능적인 액트들을 포함하는 방법들의 관점에서 설명될 수 있다. 다음은 본 발명을 실시할 때 실행될 수 있는 액트들 및 단계들에 관한 설명이다. 보통, 기능적인 단계들은 달성되는 결과들의 관점에서 본 발명을 설명하는 반면에, 비기능적인 액트들은 특별한 결과를 달성하기 위한 더욱 특정한 액션들을 설명한다. 기능적인 단계들 및 비기능적인 액트들이 특정 순서로 설명되거나 청구될 수 있을 지라도, 본 발명은 액트들 및/또는 단계들의 소정의 특정 순서화 또는 결합에 반드시 제한되는 것은 아니다.
도 4a-4c는 본 발명에 따라 철회 정보를 생성하여 추적하는 방법들의 예시적인 액트 및 단계를 도시한 도면이다. 영상 사용자 인터페이스 디자이너 내의 사용자 인터페이스 객체에 대한 하나 이상의 변경의 하나 이상의 변경 통지를 프로세스하는 단계(414)는 사용자 인터페이스 객체에 대한 하나 이상의 변경에 응답하여 생성되는 하나 이상의 변경 통지를 수신하는 액트(412)를 포함할 수 있다. 하나 이상의 변경 이전의 사용자 인터페이스 객체의 초기 상태를 나타내는 초기 데이터, 및 하나 이상의 변경 이후의 사용자 인터페이스 객체의 후속 상태를 나타내는 후속 데이터를 존속시키는 단계(418)는 하나 이상의 변경을 나타내기에 적절한 직렬화된 포맷으로 사용자 인터페이스 객체의 최소한 일부를 직렬화하기 위해 직렬화 엔진을 호출하는 액트(416)를 포함할 수 있다.
사용자 인터페이스 객체에 대한 하나 이상의 변경을 철회하기 위해 초기 데이터 및 후속 데이터로부터 철회 유닛을 준비하는 단계(424)는 사용자 인터페이스 객체에 대한 하나 이상의 변경의 직렬화된 형태로부터 철회 유닛을 작성하는 액트(422)를 포함할 수 있다. 액션이 다이얼로그 상에서 실행되게 하기 위해, 방법은 CANCEL 버튼이 선택되었다는 통지(판정 블록(432)의 CANCEL 브랜치(434))를 수신하는 액트(436), 및 트랜잭션을 취소하는 액트(438)를 포함할 수 있다. 이 방법은 또한 OK 버튼이 선택되었다는 통지(판정 블록(432)의 OK 브랜치(442))를 수신하는 액트(444)를 포함할 수 있다.
철회 유닛을 저장하는 단계(454)(다이얼로그 또는 다이얼로그 이외의 사용자 인터페이스 객체를 위해 OK 버튼이 선택됨)는 철회 유닛을 철회 스택에 추가하는 액트(452)를 포함할 수 있다. 철회 유닛 내의 하나 이상의 변경을 철회하라는 통지에 귀기울이는 단계(458)는 하나 이상의 변경을 철회하라는 통지를 수신하는 액트(456)를 포함할 수 있다. 철회 유닛을 삭제하는 단계(464)는 철회 스택으로부터 철회 유닛을 제거하는 액트(462)를 포함할 수 있다. 사용자 인터페이스 객체에 행해진 하나 이상의 변경을 철회하기 위해 철회 유닛 및 하나 이상의 철회 루틴을 사용하는 단계(468)는 하나 이상의 변경을 철회하기 위한 하나 이상의 루틴을 호출하는 액트(466)를 포함할 수 있다.
재수행 유닛으로서 철회 유닛을 저장하는 단계(474)는 철회 유닛을 재수행 유닛으로서 재수행 스택에 추가하는 액트(472)를 포함할 수 있다. 재수행 유닛 내의 하나 이상의 변경을 재수행하라는 통지에 귀기울이는 단계(478)는 재수행 유닛 내의 하나 이상의 변경을 재수행하라는 통지를 수신하는 액트(476)를 포함할 수 있다. 재수행 유닛을 삭제하는 단계(484)는 재수행 스택으로부터 재수행 유닛을 제거하는 액트(482)를 포함할 수 있다. 하나 이상의 변경을 재수행하기 위해 재수행 유닛 및 하나 이상의 재수행 루틴을 사용하는 단계(488)는 사용자 인터페이스 객체에 행해진 하나 이상의 변경을 재수행하기 위한 하나 이상의 루틴을 호출하는 액트(486)를 포함할 수 있다.
본 발명의 범위 내의 실시예들은 또한 컴퓨터 실행가능 명령어들을 갖고있거나 데이터 구조들이 저장되어 있는 컴퓨터 판독가능 매체를 포함한다. 이러한 컴퓨터 판독가능 매체는 범용 또는 전용 컴퓨터에 의해 억세스될 수 있는 임의의 이용가능한 매체일 수 있다. 예로서(제한되는 것은 아님), 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 기타 광학 디스크 저장장치, 자기 디스크 저장장치 또는 기타 자기 저장 장치, 또는 컴퓨터 실행가능 명령어들 또는 데이터 구조들의 형태로 원하는 프로그램 코드 수단을 갖거나 저장하기 위해 사용될 수 있고 범용 또는 전용 컴퓨터에 의해 억세스될 수 있는 임의의 기타 매체를 포함할 수있다. 정보가 네트워크 또는 다른 통신 접속(유선, 무선, 또는 유선 또는 무선의 조합)을 통해 컴퓨터에 전달되거나 제공될 때, 컴퓨터는 적절하게 이러한 접속을 컴퓨터 판독가능 매체로 본다. 그러므로, 임의의 이러한 접속은 적절하게 컴퓨터 판독가능 매체로 칭해진다. 상기의 조합은 또한 컴퓨터 판독가능 매체의 범위 내에 포함되어야 된다. 컴퓨터 실행가능 명령어들은, 예를 들어 범용 컴퓨터, 전용 컴퓨터 또는 전용 프로세싱 장치가 어떤 한 기능 또는 기능들의 그룹을 실행하게 하는 명령어들 및 데이터를 포함한다.
도 5 및 다음 설명은 본 발명이 실현될 수 있는 적절한 컴퓨팅 환경에 대한 간략한 일반적인 설명을 제공하고자 하는 것이다. 요구되지는 않았지만, 본 발명은 네트워크 환경 내에서 컴퓨터들에 의해 실행되는 프로그램 모듈들과 같은 컴퓨터 실행가능 명령어들의 일반적인 문맥으로 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 실행하거나 특정 추상 데이터형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 컴퓨터 실행가능 명령어들, 연관된 데이터 구조들 및 프로그램 모듈들은 여기에 개시된 방법들의 단계들을 실행하는 프로그램 코드 수단의 예를 나타낸다. 이러한 실행가능 명령어들 또는 연관된 데이터 데이터 구조들의 특정 시퀀스는 이러한 단계들에 설명된 기능들을 구현하기 위한 대응하는 액트들의 예를 나타낸다.
본 분야에 숙련된 기술자들은 본 발명이 퍼스널 컴퓨터, 핸드-헬드 장치, 멀티-프로세서 시스템, 마이크로프로세서-기반의 또는 프로그램가능한 소비자 전자제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 여러가지 유형의컴퓨터 시스템 구성을 갖는 네트워크 컴퓨팅 환경에서 실시될 수 있다는 것을 알 수 있을 것이다. 본 발명은 또한 통신 네트워크를 통해 (유선 링크, 무선 링크, 또는 유선 또는 무선 링크의 조합에 의해) 링크되는 근거리 및 원거리 프로세싱 장치에 의해 태스크가 실행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈들은 근거리 및 원거리 메모리 저장 장치 내에 위치될 수 있다.
도 5를 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 프로세싱 유닛(521), 시스템 메모리(522), 및 시스템 메모리(522)를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(521)에 연결시키는 시스템 버스(523)를 포함하는 종래의 컴퓨터(520) 형태의 범용 컴퓨팅 장치를 포함한다. 시스템 버스(523)는 다양한 버스 아키텍처 중의 임의의 것을 사용하는 로컬 버스, 주변 버스, 및 메모리 버스 또는 메모리 컨트롤러를 포함하는 몇가지 유형의 버스 구조 중의 임의의 것일 수 있다. 시스템 메모리는 ROM(524) 및 RAM(525)을 포함한다. 시동중과 같은 때에 컴퓨터(520) 내의 구성요소들간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(526; BIOS)은 ROM(524)에 저장될 수 있다.
컴퓨터(520)는 또한 자기 하드 디스크(539)로부터 판독하고 그 자기 디스크에 기록하는 자기 하드 디스크 드라이브(527), 분리형 자기 디스크(529)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(528), 및 CD-ROM 또는 기타 광학 매체 등의 분리형 비휘발성 광학 디스크(531)로부터 판독하거나 그 광학 디스크에 기록하는 광학 디스크 드라이브(530)를 포함한다. 자기 하드 디스크 드라이브(527), 자기 디스크 드라이브(528) 및 광학 디스크 드라이브(530)는 각각 하드 디스크 드라이브 인터페이스(532), 자기 디스크 드라이브 인터페이스(533) 및 광학 드라이브 인터페이스(534)에 의해 시스템 버스(523)에 접속된다. 드라이브들 및 이들과 연관된 컴퓨터 판독가능 매체는 컴퓨터 실행가능 명령어들, 데이터 구조들, 프로그램 모듈들 및 기타 컴퓨터(520)용 데이터의 비휘발성 저장을 제공한다. 여기에 설명된 예시적인 환경은 자기 하드 디스크(539), 분리형 자기 디스크(529) 및 분리형 광학 디스크(531)를 이용하지만, 자기 카세트, 플래시 메모리 카드, DVD, 베르누이 카트리지, RAM, ROM 등을 포함하는, 데이터를 저장하는 그외 다른 유형의 컴퓨터 판독가능 매체가 사용될 수 있다.
하나 이상의 프로그램 모듈을 포함하는 프로그램 코드 수단은 운영 체계(535), 하나 이상의 응용 프로그램(536), 기타 프로그램 모듈(537) 및 프로그램 데이터(538)를 포함하는 ROM(524) 또는 RAM(525), 하드 디스크(539), 자기 디스크(529), 광학 디스크(531) 상에 저장될 수 있다. 사용자는 키보드(540), 포인팅 장치(542), 또는 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너 등과 같은 기타 입력 장치(도시되지 않음)를 통해 컴퓨터(520) 내로 명령 및 정보를 입력할 수 있다. 이들 입력 장치 및 그외의 입력 장치는 시스템 버스(523)에 연결된 직렬 포트 인터페이스(546)를 통해 종종 프로세싱 유닛(521)에 접속된다. 대안적으로, 입력 장치들은 병렬 포트, 게임 포트 또는 유니버설 시리얼 포트(USB)와 같은 기타 인터페이스에 의해 접속될 수 있다. 모니터(547) 또는 다른 디스플레이 장치는 또한 비디오 어댑터(548)와 같은 인터페이스를 통해 시스템 버스(523)에 접속된다.모니터외에도, 퍼스널 컴퓨터는 전형적으로 스피커 및 프린터와 같은 기타 주변 출력 장치들(도시되지 않음)을 포함한다.
컴퓨터(520)는 원격 컴퓨터(549a 및 549b)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용한 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(549a 및 549b)는 각각, 다른 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치, 또는 기타 공통 네트워크 노드일 수 있으며, 비록 도 5에는 메모리 저장 치(550a 및 550b) 및 이들과 연관된 응용 프로그램(536a 및 536b)만이 도시되어 있지만, 컴퓨터(520)에 관하여 상술한 구성요소 중 다수 또는 모든 구성요소를 일반적으로 포함할 수 있다. 도 5에 도시된 논리적 접속은 예로서 여기에 표시되는 근거리 통신망(LAN; 551) 및 원거리 통신망(WAN; 552)을 포함하지만, 이것에 제한되는 것은 아니다. 이러한 네트워크 환경은 사무실 전반의 또는 기업 전반의 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적인 것이다.
LAN 네트워크 환경에서 사용되는 경우, 컴퓨터(520)는 네트워크 인터페이스 또는 어댑터(533)를 통해 LAN(551)에 접속된다. WAN 네트워크 환경에서 사용되는 경우, 컴퓨터(520)는 인터넷과 같은 WAN(552)을 통해 통신을 구축하기 위한 모뎀(554), 무선 링크 또는 기타 수단을 포함할 수 있다. 내장형 또는 외장형일 수 있는 모뎀(554)은 직렬 포트 인터페이스(546)를 통해 시스템 버스(523)에 접속된다. 네트워크 환경에서, 컴퓨터(520)에 관하여 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 도시된 네트워크 접속은 예시적인 것이며, WAN(552)을 통해 통신을 구축하는 그 외의 수단이 사용될 수 있다는것을 알 수 있을 것이다.
종래의 철회 구현시에, 개발자들은 객체에 행해질 수 있는 모든 변경들에 대한 철회 유닛들을 작성하여 저장하기 위해 철회 유닛들을 수동으로 작성하여 기억해 두어야 하는 반면에, 본 발명에 따르면, 사용자 인터페이스 객체의 개발자가 철회 정보의 생성 및 추적에 대해 책임질 필요가 없도록 철회 정보를 자동으로 생성하여 추적하게 된다.
본 발명은 본 발명의 정신 또는 본질적인 특성을 벗어나지 않고 기타 특정 형태로 구현될 수 있다. 상술된 실시예들은 모든 점에서 단지 예시적인 것으로 고려될 수 있으며, 제한하고자 하는 것은 아니다. 그러므로, 본 발명의 범위는 상기 설명보다는 첨부된 청구범위에 나타내진다. 청구범위와 동등한 의미 및 범위 내에 드는 모든 변경은 본 발명의 범위에 포함될 수 있다.

Claims (41)

  1. 영상(visual) 사용자 인터페이스 디자이너, 및 영상 사용자 인터페이스 디자이너 내에서 작성된 사용자 인터페이스 객체들에 대한 상태를 저장할 수 있는 직렬화 엔진을 지원하는 컴퓨터 시스템에서, 사용자 인터페이스 객체의 개발자가 철회(undo) 정보의 생성 및 추적에 대해 책임질 필요가 없도록 영상 사용자 인터페이스 디자이너 내에서 사용자 인터페이스 객체에 행해진 변경들에 대한 철회 정보를 자동으로 생성하여 추적하는 방법에 있어서,
    영상 사용자 인터페이스 디자이너 내에서의 사용자 인터페이스 객체에 대한 하나 이상의 변경에 응답하여 생성된 하나 이상의 변경 통지를 수신하는 단계;
    하나 이상의 변경을 나타내기에 적절한 직렬화된 포맷으로 사용자 인터페이스 객체의 최소한 일부를 직렬화하기 위해 직렬화 엔진을 호출하는 단계;
    사용자 인터페이스 객체에 대한 하나 이상의 변경의 직렬화된 포맷으로부터 철회 유닛을 작성하는 단계; 및
    철회 유닛을 철회 스택(stack)에 추가하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서, 사용자 인터페이스 객체는 영상 사용자 인터페이스 디자이너 내에서 사용하기 위한 제3자 사용자 인터페이스 객체를 포함하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서, 하나 이상의 변경 통지는 추가하는(adding) 통지 및 추가한(added) 통지 중의 최소한 하나를 포함하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서, 철회 유닛은 사용자 인터페이스 객체에 행해진 하나 이상의 변경을 철회하기 위한 하나 이상의 루틴을 식별하는 것을 특징으로 하는 방법.
  5. 제4항에 있어서,
    철회 유닛 내에서 하나 이상의 변경을 철회하라는 통지를 수신하는 액트(act);
    철히 유닛을 철회 스택으로부터 제거하는 액트; 및
    사용자 인터페이스 객체에 행해진 하나 이상의 변경을 철회하기 위한 하나 이상의 루틴을 호출하는 액트
    를 더 포함하는 것을 특징으로 하는 방법.
  6. 제5항에 있어서, 철회 유닛을 재수행(redo) 유닛으로서 재수행 스택에 추가하는 액트를 더 포함하는 것을 특징으로 하는 방법.
  7. 제6항에 있어서, 철회 유닛은 사용자 인터페이스 객체에 행해진 하나 이상의 변경을 재수행하기 위한 하나 이상의 루틴을 식별하고,
    상기 방법은,
    철회 유닛 내에서 하나 이상의 변경을 재수행하라는 통지를 수신하는 액트;
    재수행 유닛을 재수행 스택으로부터 제거하는 액트; 및
    사용자 인터페이스 객체에 행해진 하나 이상의 변경을 재수행하기 위한 하나 이상의 루틴을 호출하는 액트
    를 더 포함하는 것을 특징으로 하는 방법.
  8. 제1항에 있어서, 철회 유닛은 사용자 인터페이스 객체의 이름, 사용자 인터페이스 객체의 유형, 및 하나 이상의 변경 이전의 사용자 인터페이스 객체의 하나 이상의 이전 상태를 포함하는 것을 특징으로 하는 방법.
  9. 영상 사용자 인터페이스 디자이너, 및 영상 사용자 인터페이스 디자이너 내에서 작성된 사용자 인터페이스 객체들에 대한 상태를 저장할 수 있는 직렬화 엔진을 지원하는 컴퓨터 시스템에서, 사용자 인터페이스 객체의 개발자가 철회 정보의 생성 및 추적에 대해 책임질 필요가 없도록 영상 사용자 인터페이스 디자이너 내에서 사용자 인터페이스 객체에 행해진 변경들에 대한 철회 정보를 자동으로 생성하여 추적하는 방법을 구현하는 컴퓨터 실행가능 명령어들을 갖고있는 하나 이상의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품에 있어서,
    상기 방법은,
    철회 엔진이 영상 사용자 인터페이스 디자이너 내의 사용자 인터페이스 객체에 대한 하나 이상의 변경에 응답하여 생성된 하나 이상의 변경 통지를 수신하는 액트;
    철회 엔진이 하나 이상의 변경을 나타내기에 적절한 직렬화된 포맷으로 사용자 인터페이스 객체의 최소한 일부를 직렬화하기 위해 직렬화 엔진을 호출하는 액트; 및
    철회 엔진이 사용자 인터페이스 객체에 대한 하나 이상의 변경의 직렬화된 포맷으로부터 철회 유닛을 작성하는 액트
    를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  10. 제9항에 있어서, 하나 이상의 변경 통지 중의 최소한 하나는 사용자 인터페이스 객체에 행해질 다수의 변경을 위한 트랜잭션(transaction)을 시작하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  11. 제9항에 있어서, 하나 이상의 변경 통지는 변경하는 통지 및 변경한 통지 중의 최소한 하나를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  12. 제9항에 있어서, 사용자 인터페이스 객체는 다이얼로그(dialog) 내에서 행해진 소정의 변경들을 수락하기 위한 OK 버튼 및 다이얼로그 내에서 행해진 소정의 변경들을 거부하기 위한 CANCEL 버튼을 갖고있는 다이얼로그를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  13. 제12항에 있어서, 하나 이상의 변경 통지 중의 최소한 하나는 다이얼로그에 행해질 변경들을 위한 트랜잭션을 시작하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  14. 제13항에 있어서, 상기 방법은,
    CANCEL 버튼이 선택되었다는 통지를 수신하는 액트; 및
    트랜잭션을 취소하는 액트
    를 더 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  15. 제13항에 있어서, 상기 방법은,
    OK 버튼이 선택되었다는 통지를 수신하는 액트; 및
    철회 유닛을 철회 스택에 추가하는 액트
    를 더 포함하고, 철회 유닛은 트랜잭션을 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  16. 제9항에 있어서, 철회 유닛은 사용자 인터페이스 객체의 이름, 사용자 인터페이스 객체의 유형, 및 하나 이상의 변경 이후의 사용자 인터페이스 객체의 하나 이상의 후속 상태를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  17. 제9항에 있어서, 사용자 인터페이스 객체는 사용자 인터페이스 객체의 하나 이상의 특성에 대한 철회를 구현하지 않는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  18. 영상 사용자 인터페이스 디자이너, 및 영상 사용자 인터페이스 디자이너 내에서 작성된 사용자 인터페이스 객체들에 대한 상태를 저장할 수 있는 직렬화 엔진을 지원하는 컴퓨터 시스템에서, 사용자 인터페이스 객체의 개발자가 철회 정보의 생성 및 추적에 대해 책임질 필요가 없도록 영상 사용자 인터페이스 디자이너 내에서 사용자 인터페이스 객체에 행해진 변경들에 대한 철회 정보를 자동으로 생성하여 추적하는 방법에 있어서,
    철회 엔진이 영상 사용자 인터페이스 디자이너 내의 사용자 인터페이스 객체에 대한 하나 이상의 변경의 하나 이상의 변경 통지를 프로세스하는 단계;
    철회 엔진이 하나 이상의 변경 이전의 사용자 인터페이스 객체의 초기 상태를 나타내는 초기 데이터를 존속시키는 단계;
    철회 엔진이 하나 이상의 변경 이후의 사용자 인터페이스 객체의 후속 상태를 나타내는 후속 데이터를 존속시키는 단계; 및
    철회 엔진이 사용자 인터페이스 객체에 대한 하나 이상의 변경을 철회하기 위해 초기 데이터 및 후속 데이터로부터 철회 유닛을 준비하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  19. 제18항에 있어서, 하나 이상의 변경 통지는 제거하는 통지 및 제거한 통지 중의 최소한 하나를 포함하는 것을 특징으로 하는 방법.
  20. 제18항에 있어서, 철회 유닛은 사용자 인터페이스 객체에 행해진 하나 이상의 변경을 철회하기 위한 하나 이상의 루틴을 식별하는 것을 특징으로 하는 방법.
  21. 제20항에 있어서,
    철회 유닛을 저장하는 단계;
    철회 유닛 내에서 하나 이상의 변경을 철회하라는 통지에 귀를 기울이는 단계;
    사용자 인터페이스 객체에 행해진 하나 이상의 변경을 철회하기 위해 철회 유닛 및 하나 이상의 철회 루틴을 사용하는 단계; 및
    철회 유닛을 삭제하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  22. 제21항에 있어서, 철회 유닛을 재수행 유닛으로서 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  23. 제22항에 있어서, 재수행 유닛은 사용자 인터페이스 객체에 행해진 하나 이상의 변경을 재수행하기 위한 하나 이상의 루틴을 포함하고,
    상기 방법은,
    재수행 유닛 내에서 하나 이상의 변경을 재수행하라는 통지에 귀를 기울이는 단계;
    사용자 인터페이스 객체에 행해진 하나 이상의 변경을 재수행하기 위해 재수행 유닛 및 하나 이상의 재수행 루틴을 사용하는 단계; 및
    재수행 유닛을 삭제하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  24. 제23항에 있어서, 사용자 인터페이스 객체는 재수행을 구현하지 않는 것을 특징으로 하는 방법.
  25. 제23항에 있어서, 철회 엔진이 초기 데이터를 존속시키고 후속 데이터를 존속시키는 단계는 하나 이상의 변경을 나타내기에 적절한 직렬화된 포맷으로 사용자 인터페이스 객체의 최소한 일부를 직렬화하기 위해 직렬화 엔진을 호출하는 액트를 포함하는 것을 특징으로 하는 방법.
  26. 영상 사용자 인터페이스 디자이너, 및 영상 사용자 인터페이스 디자이너 내에서 작성된 사용자 인터페이스 객체들에 대한 상태를 저장할 수 있는 직렬화 엔진을 지원하는 컴퓨터 시스템에서, 사용자 인터페이스 객체의 개발자가 철회 정보의 생성 및 추적에 대해 책임질 필요가 없도록 영상 사용자 인터페이스 디자이너 내에서 사용자 인터페이스 객체에 행해진 변경들에 대한 철회 정보를 자동으로 생성하여 추적하는 방법을 구현하는 컴퓨터 실행가능 명령어들을 갖고있는 하나 이상의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품에 있어서,
    상기 방법은,
    영상 사용자 인터페이스 디자이너 내에서 사용자 인터페이스 객체에 대한 하나 이상의 변경의 하나 이상의 통지를 프로세스하는 단계;
    하나 이상의 변경 이전의 사용자 인터페이스 객체의 초기 상태를 나타내는 데이터를 초기 데이터를 존속시키는 단계;
    하나 이상의 변경 이후의 사용자 인터페이스 객체의 후속 상태를 나타내는 후속 데이터를 존속시키는 단계; 및
    사용자 인터페이스 객체에 대한 하나 이상의 변경을 철회하기 위해 초기 데이터 및 후속 데이터로부터 철회 유닛을 준비하는 단계
    를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  27. 제26항에 있어서, 철회 유닛은 사용자 인터페이스 객체에 행해진 다수의 변경을 위한 트랜잭션을 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  28. 제26항에 있어서, 하나 이상의 변경 통지는 리네임(rename) 통지를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  29. 제26항에 있어서, 사용자 인터페이스 객체는 다이얼로그 내에서 행해진 소정의 변경들을 수락하기 위한 OK 버튼 및 다이얼로그 내에서 행해진 소정의 변경들을 거부하기 위한 CANCEL 버튼을 갖고있는 다이얼로그를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  30. 제29항에 있어서, 하나 이상의 변경 통지 중의 최소한 하나는 다이얼로그에 행해질 변경들을 위한 트랜잭션을 시작하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  31. 제30항에 있어서, 상기 방법은,
    CANCEL 버튼이 선택되었다는 통지를 수신하는 액트; 및
    트랜잭션을 취소하는 액트
    를 더 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  32. 제30항에 있어서, 상기 방법은,
    OK 버튼이 선택되었다는 통지를 수신하는 액트; 및
    철회 유닛을 철회 스택에 추가하는 액트
    를 더 포함하고, 철회 유닛은 트랜잭션을 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  33. 제26항에 있어서, 사용자 인터페이스 객체는 영상 사용자 인터페이스 디자이너 내에서 사용하기 위한 제3자 사용자 인터페이스 객체인 것을 특징으로 하는 컴퓨터 프로그램 제품.
  34. 제26항에 있어서, 철회 유닛은 사용자 인터페이스 객체의 이름, 사용자 인터페이스 객체의 유형, 하나 이상의 변경 이전의 사용자 인터페이스 객체의 하나 이상의 이전 상태, 및 하나 이상의 변경 이후의 사용자 인터페이스 객체의 하나 이상의 후속 상태를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  35. 사용자 인터페이스 객체의 개발자가 철회 정보를 생성하여 추적할 필요가 없도록 영상 사용자 인터페이스 디자이너 내에서 사용자 인터페이스 객체에 행해진 변경들에 대한 철회 정보를 자동으로 생성하여 추적하는 철회 엔진을 구현하는 컴퓨터 실행가능 명령어들을 갖고있는 하나 이상의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품에 있어서,
    영상 사용자 인터페이스 디자이너 내에서 사용자 인터페이스 객체에 행해진 변경에 응답하여 자동으로 생성되는 변경 통지들을 캡처(capture)하는 하나 이상의 루틴;
    사용자 인터페이스 객체에 대한 하나 이상의 변경을 표시할 때 사용하기 위한 사용자 인터페이스 객체용 상태 데이터를 요청하는 하나 이상의 루틴;
    사용자 인터페이스 객체에 대응하는 상태 데이터로부터 철회 유닛을 준비하는 하나 이상의 루틴; 및
    철회 유닛의 저장을 요청하는 하나 이상의 루틴
    을 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  36. 제35항에 있어서, 사용자 인터페이스 객체에 행해진 하나 이상의 변경을 철회하기 위한 하나 이상의 루틴을 더 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  37. 제35항에 있어서, 사용자 인터페이스 객체에 행해진 하나 이상의 변경을 재수행하기 위한 하나 이상의 루틴을 더 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  38. 제35항에 있어서, 철회 유닛을 저장하기 위한 하나 이상의 루틴을 더 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  39. 제35항에 있어서, 사용자 인터페이스 객체용 상태 데이터를 생성하는 하나 이상의 루틴을 더 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  40. 제35항에 있어서, 사용자 인터페이스 객체용 상태 데이터를 요청하는 하나 이상의 루틴은 다수의 별개의 상태 데이터 구현과 상호작용할 수 있는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  41. 제35항에 있어서, 철회 유닛의 저장을 요청하는 하나 이상의 루틴은 다수의 별개의 저장 구현과 상호작용할 수 있는 것을 특징으로 하는 컴퓨터 프로그램 제품.
KR1020040046474A 2003-06-23 2004-06-22 철회 기반구조 KR101087364B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/602,435 2003-06-23
US10/602,435 US7207034B2 (en) 2003-06-23 2003-06-23 Undo infrastructure

Publications (2)

Publication Number Publication Date
KR20050000330A true KR20050000330A (ko) 2005-01-03
KR101087364B1 KR101087364B1 (ko) 2011-11-25

Family

ID=33418629

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040046474A KR101087364B1 (ko) 2003-06-23 2004-06-22 철회 기반구조

Country Status (5)

Country Link
US (1) US7207034B2 (ko)
EP (1) EP1491997A3 (ko)
JP (1) JP2005018774A (ko)
KR (1) KR101087364B1 (ko)
CN (1) CN1573691B (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7003695B2 (en) * 2002-10-03 2006-02-21 Seiko Epson Corporation Undo/redo algorithm for a computer program
US7818718B2 (en) * 2003-09-30 2010-10-19 Sap Ag Undoing user actions in a client program
US20070277095A1 (en) * 2004-11-12 2007-11-29 Kazunori Ukigawa Data Processing Device And Data Processing Method
CA2560179A1 (en) * 2006-09-20 2008-03-20 Ibm Canada Limited - Ibm Canada Limitee Temporal model exploring
US8127278B2 (en) * 2006-09-28 2012-02-28 Sap Ag System and method for extending legacy applications with undo/redo functionality
US7958490B2 (en) * 2006-12-29 2011-06-07 The Mathworks, Inc. System for automating the definition of application objects supporting undoing, redoing compressing and logging operations
US9229920B1 (en) * 2007-04-30 2016-01-05 Oracle America Inc. Compound undo/redo manager for mixed model edits
US8849872B2 (en) * 2007-08-31 2014-09-30 Red Hat, Inc. Providing a model-view-controller relationship
US8756204B2 (en) * 2008-01-08 2014-06-17 Microsoft Corporation Asynchronous multi-level undo support in javascript grid
JP5385545B2 (ja) * 2008-04-17 2014-01-08 インターナショナル・ビジネス・マシーンズ・コーポレーション トランザクションの実行を制御する装置及び方法
US8812796B2 (en) 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
US20110107246A1 (en) * 2009-11-03 2011-05-05 Schlumberger Technology Corporation Undo/redo operations for multi-object data
US20110106776A1 (en) * 2009-11-03 2011-05-05 Schlumberger Technology Corporation Incremental implementation of undo/redo support in legacy applications
US8402218B2 (en) * 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
CN102419703A (zh) * 2010-09-25 2012-04-18 上海无戒空间信息技术有限公司 堆栈数据可视化方法及系统
US8732575B2 (en) * 2011-03-22 2014-05-20 Mark E. Nusbaum Word processing system and method with automatic undo operation monitoring and analysis
US8533594B2 (en) * 2011-04-19 2013-09-10 Autodesk, Inc. Hierarchical display and navigation of document revision histories
US8533595B2 (en) * 2011-04-19 2013-09-10 Autodesk, Inc Hierarchical display and navigation of document revision histories
US8533593B2 (en) * 2011-04-19 2013-09-10 Autodesk, Inc Hierarchical display and navigation of document revision histories
US8874525B2 (en) 2011-04-19 2014-10-28 Autodesk, Inc. Hierarchical display and navigation of document revision histories
US10733151B2 (en) 2011-10-27 2020-08-04 Microsoft Technology Licensing, Llc Techniques to share media files
US9053079B2 (en) * 2011-12-12 2015-06-09 Microsoft Technology Licensing, Llc Techniques to manage collaborative documents
US9311623B2 (en) 2012-02-09 2016-04-12 International Business Machines Corporation System to view and manipulate artifacts at a temporal reference point
CN102819429B (zh) * 2012-06-29 2015-04-29 广东威创视讯科技股份有限公司 三维场景设计中撤销操作的实现方法及其装置
US9129416B2 (en) 2012-11-14 2015-09-08 Microsoft Technology Licensing, Llc Digital art undo and redo
CN104238865A (zh) * 2013-06-08 2014-12-24 深圳联友科技有限公司 一种在电子设备中撤消和重做界面操作的方法及系统
US10491695B2 (en) 2014-08-22 2019-11-26 Oracle International Corporation Autosave with across user session undo support
US9858312B2 (en) * 2014-10-14 2018-01-02 Red Hat, Inc. Transaction compensation for single phase resources
US10261756B2 (en) * 2015-06-01 2019-04-16 Brigham Young University Method for preventing reference invalidation when reversing operations in synchronous collaborative applications
US10423671B2 (en) * 2016-06-10 2019-09-24 Apple Inc. Selection behavior history and transformation
US10664557B2 (en) 2016-06-30 2020-05-26 Microsoft Technology Licensing, Llc Dial control for addition and reversal operations
US20210405999A1 (en) * 2020-06-24 2021-12-30 UiPath Inc. Context-aware undo-redo service of an application development platform
US11308272B1 (en) 2020-11-12 2022-04-19 Microsoft Technology Licensing, Llc Controlling a productivity application to integrate a revision stream and an undo stack to perform out of order undo operations

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5481710A (en) 1992-09-16 1996-01-02 International Business Machines Corporation Method of and system for providing application programs with an undo/redo function
EP0622729A3 (en) 1993-04-29 1995-02-01 Ibm User interface generator for a user interface server.
US6108668A (en) 1997-04-18 2000-08-22 International Business Machines Corporation Method and system for undoing edits within selected portion of electronic documents
US6118622A (en) * 1997-05-13 2000-09-12 International Business Machines Corporation Technique for robust resetting of spin valve head
US5990906A (en) * 1997-06-25 1999-11-23 National Instruments Corporation Undo feature for a graphical programming system
US6496202B1 (en) * 1997-06-30 2002-12-17 Sun Microsystems, Inc. Method and apparatus for generating a graphical user interface
US6185591B1 (en) * 1997-07-29 2001-02-06 International Business Machines Corp. Text edit system with enhanced undo user interface
US6225998B1 (en) * 1997-12-02 2001-05-01 Aspect Communications Visual design of workflows for transaction processing
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
JP3759676B2 (ja) 1998-06-24 2006-03-29 ドリームテクノロジーズ株式会社 作業のリドウ・アンドウ機能及び自動保存機能を備えたアプリケーション装置及び方法
US6141010A (en) * 1998-07-17 2000-10-31 B. E. Technology, Llc Computer interface method and apparatus with targeted advertising
US6523134B2 (en) * 1998-09-18 2003-02-18 International Business Machines Corporation Selective undo
US6111575A (en) * 1998-09-24 2000-08-29 International Business Machines Corporation Graphical undo/redo manager and method
US6490661B1 (en) * 1998-12-21 2002-12-03 Advanced Micro Devices, Inc. Maintaining cache coherency during a memory read operation in a multiprocessing computer system
US6167492A (en) * 1998-12-23 2000-12-26 Advanced Micro Devices, Inc. Circuit and method for maintaining order of memory access requests initiated by devices coupled to a multiprocessor system
US6671686B2 (en) * 2000-11-02 2003-12-30 Guy Pardon Decentralized, distributed internet data management
US20040225998A1 (en) * 2003-05-06 2004-11-11 Sun Microsystems, Inc. Undo/Redo technique with computed of line information in a token-oriented representation of program code
US7325226B2 (en) * 2003-06-19 2008-01-29 Microsoft Corporation Modular object serialization architecture

Also Published As

Publication number Publication date
JP2005018774A (ja) 2005-01-20
US7207034B2 (en) 2007-04-17
CN1573691A (zh) 2005-02-02
CN1573691B (zh) 2010-05-26
US20040268187A1 (en) 2004-12-30
EP1491997A3 (en) 2007-06-06
KR101087364B1 (ko) 2011-11-25
EP1491997A2 (en) 2004-12-29

Similar Documents

Publication Publication Date Title
KR101087364B1 (ko) 철회 기반구조
US9477727B2 (en) Abstracting data for use by a mobile device having occasional connectivity
US6888542B1 (en) Error recovery in a computer aided design environment
JP2022166013A (ja) クライアント同期における違反の解決のための方法、コンピュータ可読媒体、及びシステム
US8136123B2 (en) System and computer program product for performing bulk operations on transactional items
CN109325016B (zh) 数据迁移方法、装置、介质及电子设备
CN110555074B (zh) 定时抽取和加工数据的方法、终端及计算机可读存储介质
US20170004154A1 (en) Integrating copy data tokens with source code repositories
JP5665889B2 (ja) サブバージョンリポジトリをバックアップする方法及び装置
JP2011100447A (ja) メタモデルベースツールにおけるエンティティ変形
US9207966B2 (en) Method and system for providing a high-availability application
US20080115135A1 (en) Supporting ETL Processing in BPEL-Based Processes
US20190361793A1 (en) System for debugging a client synchronization service
US20080127034A1 (en) Distributed resource understanding tool management
US8166080B2 (en) Optimized computer diagramming method
US8700750B2 (en) Web deployment functions and interfaces
WO2014169331A1 (en) Checking undoability of an api-controlled computing system
US9767216B2 (en) Method and system for capturing and applying changes to a data structure
US11010408B2 (en) Hydration of a hierarchy of dehydrated files
Nguyen-Tuong et al. Using reflection for incorporating fault-tolerance techniques into distributed applications
US10146529B2 (en) Monitoring rules declaration and automatic configuration of the monitoring rules
US9058339B2 (en) Source control inheritance locking
US20010013040A1 (en) General purpose resource manager for hierarchical file systome
CN111651197B (zh) 一种自动搬库方法和装置
US20120084327A1 (en) Building Information Technology Services From a Library of Elements

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20141017

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151016

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 8