KR970011218B1 - 복수의 사용자에 의한 동시 조작으로부터 공유 데이타 객체의 일시적인 부동 블럭을 보호하기 위한 공동 컴퓨터 기반 시스템 및 방법 - Google Patents

복수의 사용자에 의한 동시 조작으로부터 공유 데이타 객체의 일시적인 부동 블럭을 보호하기 위한 공동 컴퓨터 기반 시스템 및 방법 Download PDF

Info

Publication number
KR970011218B1
KR970011218B1 KR1019920023654A KR920023654A KR970011218B1 KR 970011218 B1 KR970011218 B1 KR 970011218B1 KR 1019920023654 A KR1019920023654 A KR 1019920023654A KR 920023654 A KR920023654 A KR 920023654A KR 970011218 B1 KR970011218 B1 KR 970011218B1
Authority
KR
South Korea
Prior art keywords
cursor
lock
user
block
area
Prior art date
Application number
KR1019920023654A
Other languages
English (en)
Other versions
KR930014098A (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 KR930014098A publication Critical patent/KR930014098A/ko
Application granted granted Critical
Publication of KR970011218B1 publication Critical patent/KR970011218B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04812Interaction techniques based on cursor appearance or behaviour, e.g. being affected by the presence of displayed objects
    • 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
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Software Systems (AREA)
  • Strategic Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Economics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Between Computers (AREA)
  • Document Processing Apparatus (AREA)
  • Digital Computer Display Output (AREA)
  • Computer And Data Communications (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

요약 없음

Description

복수의 사용자에 의한 동시 조작으로부터 공유 데이타 객체의 일시적인 부동 블럭을 보호하기 위한 공동 컴퓨터 기반 시스템 및 방법
제1도는 본 발명이 유리하게 이용된 근거리 통신망을 도시한 도면.
제2도는 본 발명의 사용자 인터페이스를 지원하기 위해 컴퓨터 그래픽 시스템에 의해 발생된 윈도우를 도시한 도면.
제3도는 편집을 위해 목표 문서 객체에 대해 오픈된 윈도우를 도시한 도면.
제4 내지 7도는 윈도우가 편집될 때 목표 그래픽 객체에 대해 오픈된 윈도우를 도시한 도면.
제8A 내지 8C도는 본 발명의 시스템 및 방법에서 이용하기 위한 로크 모드 및 사용자 선택가능한 영역을 선택하기 위해 오픈된 윈도우를 도시한 도면.
제9도는 본 발명의 제어 특징에 관련하는 사용자 인터페이스용 윈도우를 도시한 도면.
제10도는 본 발명의 제어 특징에 관련하는 사용자 인터페이스용 윈도우를 도시한 도면.
제11A 및 11B는 본 발명의 시스템 및 방법을 지원하는 데이타 객체의 분포를 도시하는 근거리 통신망의 블럭도.
제12A 및 12B도는 본 발명의 제1 및 제2실시예를 실시하는데 제각기 사용된 데이타 레코드를 도시한 도면.
제13도는 공동 데이타 프로세싱 시스템에 대한 클라이언트의 액세스를 설명하기 위한 고급 흐름도.
제14도는 본 발명의 방법 및 시스템을 구비한 클라이언트 터미날에서 공동 에디터의 동작을 도시하는 고급 흐름도.
제15도는 본 발명의 방법 및 시스템을 구비하는 서버에서 공동 에디터의 동작을 도시하는 고급 흐름도.
제16도는 시스템 사용자로부터 수신된 커맨드에 대한 응답에 관련하는 제14 및 15도의 공동 에디터의 동작을 도시하는 흐름도.
제17A 및 17B도는 본 발명에 의해 제공된 그룹 편집 시스템에서 클라이언트 디스플레이의 갱신에 관련하는 흐름도.
제18A 및 18B도는 본 발명의 제1 및 제2실시예에서 커서를 통한 편집이 이루어지지 않도록 커서 위치가 로크되었는지의 결정에 관련하는 흐름도.
제19A 및 19B도는 제각기 공유 데이타 객체내의 커서 연관 로크 영역의 갱신을 위한 본 발명의 제1 및 제2실시예에 관련하는 흐름도.
제20A 및 20B도는 제각기 공유 데이타 객체내 영역의 사용자 선택을 위한 본 발명의 제1 및 제2실시예에 관련하는 흐름도.
제21도는 선택된 영역으로부터 사용자가 로크 영역을 확립하는 것과 관련하는 흐름도.
제22도는 사용자 선택 영역을 연관된 영역으로서 지정하는 것과 관련하는 흐름도.
제23도는 영역으로부터 로크 또는 연관 지정을 해제하는 것과 관련하는 흐름도.
제24A 및 24B도는 영역을 선택하려는 시도시에 행해진 로크 충돌 결정의 검출을 위한 본 발명의 제1 및 제2실시예에 관련하는 흐름도.
본 발명은 공동 컴퓨터 기반 시스템(collaborative computer based system)에 관한 것으로, 특히, 공동 에디터(collaborative editor)용의 수정된 '당신이 보는 것이 내가 보는 것' 멀티유저 인터페이스(amodified "What You See Is What I See' multiuser interface)에 관한 것이다. 보다 상세히 설명하면, 본 발명은 공동 컴퓨터 기반 시스템에서 편집 커서(editing cursor)와 연관된 공유 데이타 객체(a shared date object)의 부동 텍스트 블럭(floating blocks of text) 또는 다른 부분을 2인 이상의 사용자에 의해 발생하는 동시 조작(simulaneous manipulation)으로부터 보호하는 방법에 관한 것이다.
공동 시스템은 소정의 태스크를 완성하고자 하는 개개의 노력을 조정하는 실시간 컴퓨터 기반 환경(a real-time computer based environment)으로서 정의 된다. 이와 같이 임의 그룹의 관심대상이 되는 태스크 또는 주제는 문서, 생산 스케줄, 컴퓨터 프로그램, 생산 계획, 또는 임의의 다른 태스크일 수도 있으며, 이들은 정보의 조직화된 표현으로 나타내어진다. 이러한 표현의 구성은 2인 이상의 작업에 의해 구체적으로는 2인 이상의 동시 작업에 의해 촉진될 것으로 예상된다.
컴퓨터 네트워크는 전형적으로 작업을 조정하는 장치이다. 작업의 주제는 통상 네트워크를 통해 액세스 가능한 메모리내에 저장된 하나 이상의 데이타 객체로 구성된다. 이러한 데이타 객체를 구성하는 머신은 텍스트 에디터 또는 데이타베이스 관리 설비와 같은 소프트웨어이다. 사용자는 네트워크에 의해 지원되는 멀티유저 인터페이스 설비를 통해 공유 데이타 객체를 액세스한다.
공유 데이타 객체는 네트워크를 통해 복수의 사용자에 의해 동시에 액세스가능하다. 이러한 데이타 객체로는, 예를 들면, 워드 프로세싱 문서(word processing documents) 및 스프레드 쉬트(spread sheets) 등을 포함할 수 있다. 공유 데이타 객체는 한번에 2인 이상의 사용자에게 몇가지 형태의 액세스를 허용하는 데이타 객체이다.
따라서, 공동 시스템의 설계자가 직면하게 되는 공통의 문제점은 각각의 복수의 사용자에게 허용되는 동시 액세스의 형태이다. 이러한 핵심적인 문제는 다수의 부차적인 문제를 수반한다. 사용자 액세스는 객체를 판독하는 능력에 제한될 수 있지만, 더욱 일반적으로는 객체를 조작 또는 변화시킬 어떤 권리를 포함하느냐에 제한될 수 있다. 예를 들면, 사용자 중에서 누구에게 데이타 객체를 변화시키는 권리가 허용되었는가?, 각각의 사용자가 데이타 객체의 동일한 표시를 나타내어야 하는가?, 공유 데이타 객체에 대한 그들의 관점을 변화시키는데 있어서 사용자는 얼마나 자유로운가? 등이 있다.
사용자는 멀티유저 인터페이스를 통해 공유 데이타 객체를 액세스한다. 이 인터페이스는 전형적으로 사용자의 로컬 워크스테이션 제어하의 비디오 모니터를 포함하며, 이를 통해 공유 데이타 객체의 화면(views)이 디스플레이된다. 이 인터페이스는 임의 객체의 내용을 조작할 수 있는 권리에 의해 객체에 대한 복수의 동시 액세를 허용하는 소프트웨어에 의해 지원된다. 통상의 멀티유터 인터페이스의 한 범주의 일반적인 특성은 '당신이 보는 것이 내가 보는 것(What You See Is What I See' ; WYSIWIS)' 개념으로서 언급된다. 엄격한 형식으로, 각각의 사용자는 동일한 관점으로부터 정확히 동일한 것을 보며, 각각의 사용자에게는 공유 객체를 조작할 수 있는 명백한 직접 권리가 제공된다. 모든 사용자 커서는 동시에 디스플레이된다. 갱신 데이타는 각각의 참여자에게 전송되므로 참여자는 행해지는대로 행해지는 것을 볼 수 있게 된다. 사실상 WYSIWIS 개념은 부분적으로 완화된다. 예를 들면, 사용자는 전형적으로 그들의 관점을 선택할 수 있다. 사용자가 선택한 관점은 공유 객체의 사적 관점으로서 공지된다. 워드 프로세싱 문서에서 사용자는 문서중 자신이 관심있는 부분을 사적 관점으로서 선택한다.
WYSIWIS 개념은 편의를 위해 완화되었으며, 기술의 한계에 대한 용인(a concession to limits)으로서도 완화된다. 예를 들면, 워드 프로세싱 문서의 텍스트에 대한 공동 작업을 고려해보자. 현재 문서를 액세스하는 각 사용자는 자신의 로컬 워크스테이션의 비디오 모니터상의 발생된 윈도우(a window)를 가지며, 문서로부터 획득된 텍스트가 윈도우내에 재생된다. 각 사용자는 자신이 변화시킬 수도 있는 문서내의 지점을 표시하는 하나의 텍스트 커서를 갖게 된다. 엄격한 WYSIWIS에서는, 모든 텍스트 커서가 디스플레이되어야 한다. 실제로, 보이는 모든 커서의 소유자를 구별할 수 없음은 혼란을 야기하며, 때때로 사용자의 비디오 모니터로부터 사용자의 것을 제외하고 사적 커서의 억제를 요구한다.
워드 프로세싱 문서에 동일한 워드를 동시에 변화시키고자 하는 것과 같은 사용자 활동에 있어서의 충돌이 또한 문제를 일으킬 수 있다. 엄격한 WYSIWIS에서 충돌이 발생될 수 있다. 각 사용자에게 즉시 액세스가능한 인상(an impression of immediate accessibility)이 제공된다. 모든 워크스테이션이 하나의 룸(room)에 존재하거나 또는 어떤 형의 원격회의가 행해지고 있는 경우에는 참가자가 대화에 의해 분쟁을 해결할 수 있으므로, 이러한 충돌을 허용하여도 괜챦다. 그러나 사용자간이 통상의 통신이 공유 문서내의 변화에 의해 암시되는 경우에는 이러한 충돌이 상당한 문제가 된다.
본 발명의 목적은 공동 컴퓨터 시스템에서 공동 작업을 향상시키기 위한 방법을 제공하는 것이다.
본 발명의 다른 목적은 공유 데이타 객체에 대한 공동 편집 시스템(collaborative editing system)을 제공하는 것이다.
본 발명의 또다른 목적은 공동 편집 시스템에서 커서간의 충돌을 해결하는 방법을 제공하는 것이다.
본 발명의 또다른 목적은 공유 데이타 객체내의 커서와 연관된 부동 블럭(floating blocks)을 2인 이상의 사용자에 의해 발생되는 동시 조작으로부터 보호하는 방법을 제공하는 것이다.
이상의 목적이 이제부터 설명된다. 본 발명의 방법은 공유 데이타 객체의 텍스트, 그래픽 또는 픽쳐내의 부동 블럭을 2인 이상의 사용자에 의한 동시 조작으로부터 보호하는데 보호하는데 이용될 수 있다. 이러한 공동 컴퓨터 기반 시스템은 통신을 위해 복수의 터미날을 접속하는 네트워크를 포함한다. 각 터미날은 출력 디스클레이 장치 및 사용자 입력 장치를 포함한다. 공동 컴퓨터 기반 시스템은 복수의 시스템 사용자에 의해 동시에 액세스가능한 공유 데이타 객체를 포함한다. 공유 데이타 객체에 대한 사용자의 액세스에 응답하여, 모든 현재 사용자의 시각 디스플레이 장치상에 디스플레이하는데 이용가능한 커서가 사용자에게 할당된다. 사용자가 자신의 커서를 이동시키는 것에 응답하여, 공유 데이타 객체내에 사용자의 커서와 연관된 로크 영역(a lock region)을 확립하는 시도가 행해진다. 이 로크에 대한 위치가 어떤 이전에 확립된 로크 영역내에 위치하지 않으면, 사용자의 커서에 관련된 로크 영역이 확립될 수도 있다. 새로운 로크 영역이 확립되거나 이전의 로크 영역으로부터 밖으로 커서가 이동하면, 커서와 연관된 어떤 이전의 로크 영역은 해제된다. 이와 같이하여 복수의 일시적인 부동 로크 영역이 확립된다. 이들 일시적인 부동 로크 영역은 제각기 한 커서의 위치를 추적하며, 현재 로크 영역을 갖지 않고 사용자가 요구하는 어떤 다른 선택적 제한 기준을 만족시키는 영역에 도달할 때마다 발생한다.
이상 설명한 본 발명의 목적은 물론, 추가의 목적, 특징 및 장점이 이후 첨부된 도면을 참조하여 더욱 상세히 설명된다.
제1도를 참조하면, 본 발명의 방법에 따라 이용될 수 있는 근거리 통신망이 도시된다. 근거리 통신망(8)은 서버(server)에 저장된 데이타 객체에 관련하는 공동 컴퓨터 기반 편집 시스템(a collaborative computer based eding system)을 지원한다. 근거리 통신망(8)은 복수의 개인용 컴퓨터(12)간에 전송 채널(10)을 통한 데이타 통신을 제공한다. 도시된 시스템내에서 컴퓨터(12)는 IBM 퍼스널 컴퓨터, IBM 퍼스널 시스템/2 또는 다른 그와 유사한 시스템을 이용하므로써 제공되는 것이 바람직하다. 당분야에 숙련된 자라면 알게 되는 바와 같이, 통상 컴퓨터(12)는 비디오 디스플레이 장치내의 사용자 입력을 수신하여 근거리 통신망 사용자에게 메시지를 송신하기 위한 키보드를 포함한다. 이들 컴퓨터(12)중 하나는 네트워크(8)에 대해 서버로서 동작한다. 예를 들면, 서버는 IBM 애플리케이션 시스템/400과 같은 대형 컴퓨터일 수도 있다.
제2도는 본 발명에 의해 지원되는 멀티유저 인터페이스의 특징들의 예를 포함하는 윈도우를 도시한 도면이다. 윈도우(18)는 컴퓨터(12)의 디스플레이 스크린상에 나타나는 바와 같이 통상의 윈도우이다. 국부적으로 발생된 마우스 포인터(22)가 윈도우의 제어 기능을 동작시키는데 이용가능하다. 윈도우(18)는 사용자에 의해 액세스된 공유 데이타 객체를 나타내는 타이틀 바(a title bar)(24)를 포한한다. 디스플레이 영역(display field)(27)은 공유 데이타 객체의 개인 화면(a priavate view)(28)을 나타낸다. 커서(20, 26)는 또한 디스플레이 영역(27)내에 나타난다. 커서(20)는 개인 화면(28)의 사용자에게 할당된 커서이다. 커서(26)는 동일한 공유 데이타 객체를 액세스하며 개인 화면(28)내로 연장되는 공유 데이타 객체의 일부를 적어도 부분적으로 액세스하고 있는 다른 사용자에게 할당된 커서이다. 커서(20)는 사용자에 의해 발생된 이동 커맨드에 대해 위치를 변화시키므로써 응답한다. 커서(26)는 스크린상을 여기저기 이동하며 원격지(a remote site)로부터의 커맨드에 따라 디스플레이 영역(27) 밖으로 이동할 수도 있다. 공유 데이타 객체는 디스플레이 영역(27)에 재생된 복수의 텍스트 라인에 의해 부분적으로 나타내어진 워드 프로세싱 문서이거나 그래팩 이미지 또는 다른 형태의 문서일 수도 있다.
커서(20, 26)는 시각적으로 상이한 형상으로 나타나는 디스플레이 속성(display attributes)을 가지며, 커서(20)의 경우 짙은 섀이딩(solid shading)으로, 커서(26)의 경우 크로스-해칭(cross-hatching)으로 표시된다. 바람직한 실시예에서 커서는 상이한 컬러로 표시된다.
제3도는 사용자 디스플레이 장치상에 발생된 윈도우(102)를 도시한 도면이다. 텍스트 에디터 기능이 윈도우(102)와 연관된다. 디스플레이 영역(104)내에 목표 텍스트 객체의 개인 화면(a private view of a target textual object)이 존재한다. 사용자는 변화시키거나 자료를 첨가하고자 하는 위치에 자신의 커서(108)를 위치지정하므로써 목표 텍스트 객체를 편집할 수 있다. 커서(108)는 일시적인 부동 로크 영역(106)에 매립된 형태로 나타나며, 현재 커서가 위치하는 워드 또는 위드와 등가의 객체로 연장된다. 커서(108) 및 로크 영역(106)은 컬러 모니터상에 컬러화된 영역으로서 나타나며, 커서 및 로크 영역의 특정 커서와 로크 영역의 배경현상은 로크 영역의 형태는 물론 커서 및 로크 영역의 소유자를 표시한다.
영역(110)은 특정의 사용자에게 고유한 컬러로 표시되므로써 특정 사용자와의어떤 연관을 표시한다. 이 영역(110)은 소유자를 식별할 수도 있고 다른 사용자에 의해 편집되지 못하게 로크될 수도 있다. 제2의 사용자 커서는 디스플레이 영역(104)의 화면에서 부동 로크 영역(112)에 매립된 형태로 나타난다. 또한 커서(114) 및 로크 영역(112)은 고유의 컬러로 표시되며 커서의 소유자를 표시한다. 이 영역(110)은 커서(108, 114)의 소유자나 또는 공동 에디터의 어떤 제3의 현재 또는 과거의 클라이언트와 연관될 수도 있다.
제4도는 공동 그래픽 에디터를 사용하여 편집하기 위한 공유 그래픽 객체에 대해 오픈된 윈도우(116)를 도시하는 도면이다. 커서(130, 138, 140)를 통해 표시되는 세명의 사용자가 디스플레이 영역(117)내에 나타나는 공유 그래픽 객체의 화면에 도시된다. 텍스트 시그먼트(text segment)(118), 열차의 선도면(a line drawing of a train)(120), 제2시그먼트(122), 우주 항공기 객체 주위의 선도면(123), 달 객체(125), 우주 항공사 객체(126) 및 혹성 객체(127)는 물론 제3텍스트 시그먼트(128)를 포함하는 복수의 부객체(a plurality of subobject)가 화면에 나타난다. 각 영역의 시각 속성 또는 그의 경계는 영역과 사용자간에 얼마간의 연관성 있는 상태를 표시한다. 영역(142, 134, 123)은 사용자가 선택한 영역이며, 임의의 때에 그들을 제각기 확립한 사용자에 의해 제거될 수도 있다. 사용자가 선택한 영역은 다른 사용자에 의해 조작되지 않도록 로크될 수도 있고, 또는 단순히 소유자를 표시하는데 사용될 수도 있다.
각각의 사용자 커서(130, 138, 140)는 자신을 식별하는 컬러를 갖는다. 각 커서는 제각기의 커서 로크 영역(132, 136, 144)에 나타나며, 이것은 또한 식별하는 시각 속성, 바람직하기로는, 고유의 컬러를 갖는다. 또한, 커서 로크 영역은 부동이고 일시적이며, 커서가 사용자가 선택한 영역 또는 다른 사용자의 커서 로크 영역으로부터 벗어날 때 발생한다. 예를 들면, 커서(138)의 소유자는 원형의 커서 로크 영역(136)을 선택하였으며, 커서(140)의 소유자는 직사각형 커서 로크 영역(144)을 선택하였다. 커서(130)의 소유자는 객체 로크 영역(132)을 선택하였으며, 이것은 하부 객체(125)의 형상을 갖는다.
제5도는 디스플레이 영역(117)의 화면에 대한 제4의 사용자 입력을 도시하는 도면으로서 이 사용자의 입력은 커서(146)로 나타내어진다. 커서(146)의 사용자는 디스플레이 영역(117)내에 디스플레이된 "X"로 표시된 선택 포인트(145)를 발생하므로써 새로운 영역의 선택을 개시하였다. 다른 커서와 마찬가지로 커서(146)는 복수의 사용자에 대해 컬러로 식별된다. 이 커서는 직사각형의 커서 로크 영역(148)으로 둘러싸이며, 소유자에 관해 또한 컬러로 식별된다.
제6도는 커서(146) 사용자에 의한 영역 선택의 완료를 도시하는 도면이다. 제2선택 포인트(147)를 선택하고 직사각형 구성을 요구하므로써 디스플레이 영역(117)에 대해 선택 영역(150)이 페인트(paint)된다. 선택 영역(150)은 도면중에 조밀한 해칭(hatching)에 의해 표시되며, 다른 사용자 연관 영역과 마찬가지로 소유자 및 형태에 관해 다른 사용자와 식별하기 위한 몇몇 시각적 식별 속성을 갖는다. 이러한 표시를 행하는 디스플레이 스타일이 바람직하다.
제7도는 사용자 커서(146)에 의해 선택 영역(150)의 연관 형태를 선택하는 것을 도시하는 도면이다. 이러한 형태은 또한 단순히 "소유자(ownership)"이거나 사용자 선택 로크 영역이 생성일 수도 있다. 연관의 변화는 영역, 여기서는 사용자 선택 로크 영역(151)의 시각적 속성 또는 디스플레이 스타일의 변화에 의해 표시된다. 여러가지 형태의 연관성에는 또한 상이한 형식의 교차-관련(cross-relating) 또는 컬러 섀이딩(color shading)과 같은 다양한 시각적 속성이 제공될 수도 있다.
제8A 내지 8C도는 커서 로크 모드 파라메타를 선택하기 위한 특징들을 제어하기 위해 오픈된 두개의 윈도우(152)와 선택 모드 윈도우(154)의 화면을 도시한 도면이다. 제8A도를 참조하면, 디스플레이 영역(153)과 마우스 포인터(22)를 이용하여 사용자는 온 또는 오프 버튼을 선택하므로써 텍스트 애플리케이션내에서 자신의 할당된 커서에 자동으로 로크 영역이 부속되도록 선택할 수 있다. 자동 연관 선택시, 사용자는 로크 모드를 선택한다. 문자, 워드 및 라인 모드는 일반적으로 테스트 편집에 적합하다.당분야에 숙련된 자라면, 문장, 문단 및 페이지와 같은 다른 모드가 이용될 수도 있음을 이해할 것이다. 제8B도는 이미지 또는 그래픽 애플리케이션에 대한 로크 영역의 선택을 도시한다. 예를 들면, "다각형(POLYGON)" 버튼을 선택하면 전형적으로 픽쳐 또는 그래픽 편집에 더욱 접합한 모드가 된다. "사용자 정의(user defined)" 모드는 사용자가 다양한 정점(vertices)을 지정하므로써 비정규의 로크 영역을 정의할 수 있게 한다. 대안적으로, 그래픽 또는 텍스트 정보를 포함하는 객체는 "객체(OBJECT)" 버튼을 선택하므로써 로크 영역으로서 선택될 수도 있다. 마찬가지로, 사용자는 소정 형상의 로크 영역을 채택하기 위해 "직사각형(SQUARE)" 또는 "원형(CIRCLE)" 버튼을 선택할 수도 있다.
제8C도는 사용자가 선택 영역에 대한 다양한 형상을 정의하는 방법을 도시한다. 윈도우(154)의 디스플레이 영역(155)은 마우스에 의해 선택가능한 세개의 버튼, 즉, "직사각형" 버튼, "원형" 버튼 및 "다각형" 버튼을 포함한다. 이들 세개의 버튼중 어느 것을 선택하려면 원형의 경우 반경과 같은 특정의 파라메타를 식별해야 한다. 다각형을 선택하기 위해서는 복수의 경계 점들의 지정이 필요하게 된다. 사용자가 이와 같은 방식으로 선택 모드를 지정한 후, 선정된 선택 모드에 의해 지정된 형상으로 사용자는 이후의 선택 동작을 계속하게 된다.
네트워크 서버는 시스템으로서의 사용 개시시에 각 사용자에게 할당된 커서에 대해 디폴트 컬러(default colors)를 발생한다. 그러나 시스템은 사용자에게 다수의 방법에 의해 국부적으로 인터페이스를 수정할 수 있는 권리를 제공한다. 이러한 수정은 제9도의 윈도우(34) 및 제10도의 윈도우(40)를 통해 지원된다. 제9도에 도시된 바와 같이, 윈도우(34)는 "로컬 디스플레이 옵션(LOCAL DISPLAY OPTIONS)"이라고 하는 명칭 바(namc bar)(36)로 명명된다. 컬러 모드(38)에 관련하는 4개의 선택사항이 제공된다. 이들 선택사항은, 각각의 사용자가 별개의 컬러를 수신하는 "풀(FULL)", 사용자 자신의 커서에 대한 컬러와 다른 모든 사용자 커서에 대한 다른 컬로를 제공하는 "2 컬러(TWO COLORS)", 단색 스크린상에서 각 커서의 강도를 변화시키는 "그레이 스케일(GREY SCALE)", 하나의 커서를 다른 커서로부터 구별하기 위해 해칭, 평행선 또는 플래슁(flashing)과 같은 배경을 이용하는 "채움 패턴(FILL PATTERN)"을 포함한다. 선택된 컬러 모드는 공유 데이타 객체내에서 발생하는 로크 영역이 사용자가 선택하여 정의한 연관 및 사용자에게 할당된 커서까지 연장된다.
팔레트(PALETTE) 선택사양(39)은 풀 컬러 모드에서의 컬러 선택에 관련된다. 디폴트 버튼을 누르면 시스템에 의해 확립된 컬러가 호출된다. 클라이언트 팔레트(CUSTOM PALETTE) 버튼을 누르면 제10도에 도시된 바와 같은 윈도우(40)가 생성된다. 윈도우(40)에서 사용자는 각 사용자에 대해 새로운 컬러를 선택할 수 있다. 이러한 컬러 선택 기능에 의해 색약(partially color blind)인 사용자는 구별가능한 컬러 팔레트를 선택할 수 있다. 윈도우(40)의 디스플레이 영역내에 사용자 컬러 테이블(44)이 나타난다. 특정 사용자의 선택에 따라 특정 컬러가 컬러 휠(wheel)(46)로부터 선택될 수도 있다. 이 컬러의 강도는 스크롤 바(a scroll bar)(50)를 조작하므로써 변화될 수 있다. 복수의 수정 버튼(48)에 의해 선택이 행해진다. 이들 버튼(48)은 또한 삭제 버튼 및 특정의 사용자에게 원래 할당된 컬러를 복구하는 디폴트 선택 버튼을 포함한다.
제11A도는 바람직한 실시예에서 공동 컴퓨터 기반 편집 시스템(6)을 지원하기 위한 근거리 통신망의 블럭도를 도시한다. 서버(12)는 통신 채널(10)을 통해 컴퓨터(12a∼12n)와 통신한다. 본 실시예의 경우 근거리 통신망(8)이 토큰 링 구조(a token ring geometry)로 도시되었지만 다른 구조도 가능하다. 서버(12)는 본 발명을 실시하도록 프로그램된 IBM 퍼스날 시스템/2 또는 AS/400 시스템과 같은 통상의 컴퓨터이며, 중앙 처리 유닛(60)과, 메모리(64)와, 외부로의 전송 데이타를 포매팅(formatting)하고 내부로의 전송 데이타를 디포매팅(deformatting)하는 네트워크 어댑터(62)를 포함한다. 서버(12)는 하나 이상의 사용자에 의한 액세스 요구가 있을 때까지 복수의 공유 데이타 객체를 저장하는 하드 드라이브 유닛(a hard drive unit)(56)을 포함한다. 요구 발생기 데이타 객체가 데이타 버스(58)를 통해 컴퓨터 메모리(64)로 전송된다. 메모리(64)내에는 다수의 데이타 객체가 존재한다. 오퍼레이팅 시스템 및 근거리 통신망 서버(66)는 하나의 객체로서 표시된다. 에디터 프로그램(68), 연관/로크 리스트(70) 및 커서 리스트(72)는 특정의 편집 객체, 본 실시예의 경우 제1편집 객체(74)와 연관되어 공유 데이타 객체의 발생 및 수정을 위한 공동 머신을 제공한다. 추가의 편집 객체가 동시에 존재할 수도 있다.
사용자는 컴퓨터(12a∼12n)를 통해 공유 데이타 객체를 액세스한다. 컴퓨터(12b)는 대표적인 예이다. 컴퓨터(12b)는 컴퓨터(12)와 통신하는 개인용 워크스테이션으로서 동작한다. 개략적으로, 이 개인용 워크스테이션(12b)은 컴퓨터(12)와 실질적으로 유사하며, 네트워크 어댑터(78), 디스플레이 어댑터(84), 하드 드라이브 유닛(90), 중앙 처리 유닛(CPU)(82) 및 데이타 버스(83)를 통해 데이타를 전송하는 개인용 워크스테이션(12b)의 어드레스가능한 메모리 구성요소(an addressable memory components)를 포함한다. CPU(82)는 키보드 및 마우스를 포함할 수도 있는 입력 주변장치(80)를 직접 제어한다. 디스플레이 어댑터(84)는 윈도우가 생성되는 디스플레이 장치를 구동한다. 메모리(88)는 개인용 워크스테이션(12b)의 사용자에 의해 액세스된 문서(71)의 복제(92)를 포함한다. 개인 화면을 지원하기 위해 데이타를 전송하여야 하는 부담을 네트워크(10)에 부과할 필요없이, 이 복제(92)를 액세스하므로써 공유 데이타 객체의 사용자 개인 화면을 변화시킬 수 있다. 또한 네트워크(8)상의 통신 세션(a communications session)을 확립하는데 이용하기 위한 커맨드 구조(command structure)(94)가 제공된다.
제1편집 객체(74)를 변화시키는 머신은 그의 연관 에디터(68), 연관/로크 리스트(70) 및 커서 리스트(72)이다. 문서(71)는 연관/로크 리스트(70), 커서 리스트(72) 및 목표 편집 객체(74)로 구성된다. 커서 리스트(72)는 현재 제1편집 객체(74)를 액세스하고 있는 각 사용자의 레코드(a record)이다. 연관/로크 리스트(70)는 커서를 편집 객체(74)의 로크해제된 영역 및 사용자에 의해 확립된 로크 영역내로 이동시키므로써 발생된 로크 영역은 물론 사용자와 연관된 다른 영역을 포함한다. 커서 리스트(72)는 새로운 사용자가 편집 객체(74)를 액세스하거나 사용자가 편집 객체를 로그 오프(log off)할 때 갱신된다. 연관/로크 리스트(70)내에 엔트리레코드는 커서의 이동에 의해 그리고 사용자에 의한 선택 및 선택해제 동작 시행에 의해 변화될 수 있다. 연관/로크 레코드는 시작 지점(a start point), 종료 지점(an end point), 연관 형태(an association type) 및 사용자 식별(a user identification)을 포함한다.
제11B도는 공동 컴퓨터 기반 시스템(6)을 지원하는 다른 실시예의 블럭도를 도시한다. 클라이언트(12A∼12C)용 문서(71)의 복제(92)가 메모리(64)내에 포함되며 복수의 프로그램 불가능한 워크스테이션(non-programmable workstations ; NWS) (85)과 통신하는 서버 입/출력 프로세서(61)내에서 실행된다는 것을 제외하고, 제11B도는 제11A도와 유사하다. 본 실시예에서, 서버(12)는 복수의 프로세스를 실행하는, IBM 애플리케이션 시스템/400과 같은 단일의 컴퓨터 시스템이 되며 복수의 프로그램 불가능한 워크스테이션에 부착된다. 각각의 프로그램 불가능한 워크스테이션(85)은 메모리(64)내에 대응하는 복제(92)를 갖는다.
제12A 및 제12B도는 본 발명의 제1 및 제2실시예를 실시하는데 제각기 사용된 데이타 레코드(160, 162, 164, 166)를 도시한다. 이 실시예들은 공동 텍스트 편집 및 공동 그래픽 또는 픽쳐 편집에 관련된다.
공동 텍스트 에디터의 현재 사용자 리스트에는 커서 레코드(160)에 대한 포인터 리스트가 포함되며, 이들 커서 레코드중 하나가 도면중에 상세히 도시되어 있다. 각각의 현재 사용자에 대해 하나의 코서 레코드가 존재한다. 레코드(16)는 커서에 대한 고유 식별자(a unique identifier)를 포함한다. 커서에 대한 텍스트 라인(LINE) 및 라인내의 오프셋(OFFSET)을 표시하는 현재 위치 레코드(POSITION)가 유지되며, 각 커맨드에 의해 갱신되어 위치가 변화된다. 레코드(160)는 새로운 영역의 선택시에 로킹 및 다른 목적을 위해 이동되는 두개의 관련 필드(related field)를 포함한다. 선택 온(SELECT_ON) 필드는 선택 영역이 액티브임을 표시하는 플래그(a flag)이다. 선택 영역은 연관 형태에 대해서는 식별되지 않은 새로이 식별된 영역이다. 선택 로크(SELECT_LOCK) 필드는 선택 영역용 레코드에 대한 포인터(a pointer)이다.
사용자 로크 리스트(USER_LOCK_LIST)는 다른 사용자에 대해 로크된 영역의 로크 레코드를 지시하는 포인터 리스트이다. 커서 로크(CURSOR_LOCK_PT) 필드는 커서와 연관된 부동 로크용 로크 레코드를 지시하는 포인터를 포함한다. 포인터는 존재할 수도 있고 존재하지 않을 수도 있다. 마지막으로, 연관 영역 리스트(ASSOCIATION_REGION_LIST)는 다른 사용자에 의해 조작되지 못하게 로크되므로써 연관된 것 이외의, 어떻게든 사용자와 연관된 "연관/로크" 레코드를 지시하는 포인터를 포함하는 필드의 모음(a collection of fileds)이다.
레코드(162)는 이러한 연관/로크 레코드의 특징을 나타낸다. 이 레코드는 소유하고 있는 레코드의 식별 번호를 포함한다. 연관 형태, 예를 들면, 선택 로크, 사용자 로크, 커서 로크, 사용자 등이 식별된다. 라인 및 오프셋으로 영역의 시작과 끝을 식별하기 위한 필드가 제공된다.
제12B도는 공동 그래픽 에디터용으로 이용되는 데이타 구조 레코드를 도시한다. 공동 그래픽 에디터용 현재 사용자 리스트는 커서 레코드(164)를 지시하는 포인터를 포함하며, 이들 레코드중 하나가 도면중에 상세히 도시된다. 각각의 현재 사용자에 대해 하나의 커서 레코드가 존재한다. 레코드(164)는 커서의 고유 식별자를 포함한다. 그래픽 또는 픽쳐내의 커서에 대한 X축 및 Y축 좌표를 표시하는 현재 위치 레코드가 유지되며, 각 커맨드에 따라 갱신되어 위치가 변경된다. 레코드(164)는 새로운 영역의 선택시에 로킹 및 다른 목적을 위해 이용되는 두개의 관련 필드를 포함한다. 선택 온(SECECT_ON) 필드는 선택 영역이 액티브임을 표시하는 플래그이다. 선택 영역은 연관 형태에 대해 식별되지 않은 새로이 식별된 영역이다. 선택 로크(SELECT_LOCK) 필드는 선택 영역용 레코드를 지시하는 포인터이다.
사용자 로크 리스트(USER_LOCK_LIST)는 다른 사용자가 사용하지 못하게 로크된 영역의 로크 레코드를 지시하는 포인터 리스트이다. 커서 로크(CURSOR_LOCK_PT) 필드는 커서와 연관된 부동 로크용 로크 레코드를 지시하는 포인터를 포함한다. 포인터는 존재할 수도 있고 존재하지 않을 수도 있다. 마지막으로, 연관 영역 리스트(ASSOCIATION_REGION_LIST) 필드는 다른 사용자에 의해 조작되지 못하게 로크되므로써 연관된 것 이외의, 어떻게든 사용자와 연관된 "연관/로크" 레코드를 지시하는 포인터를 포함한다.
레코드(166)는 공동 그래픽 레코드용 연관/로크 레코드의 특징을 나타낸다. 이 레코드는 소유하고 있는 커서의 식별 번호를 포함한다. 연관 형태, 예를 들면, 선택 로크, 사용자 로크,커서 로크, 소유자 등이 식별된다. 형상 타입(SHAPE TYPE) 필드는 직사각형, 원형, 사용자에 의해 정의된 다각형을 포함하는 영역의 형상을 식별한다. 이 영역에 대한 정의점(defining points), 즉, 정점(vertoces)의 순서화된 리스트가 유지된다. 리스트 순서화는 다각형의 경계 라인에 의해 연결되는 점들의 순차를 식별하기 위해 제공된다.
제13도는 텍스트 형태 또는 그래픽/픽쳐 형태중 어느 하나의 공동 편집 시스템에 대한 클라이언트의 엑세스를 설명하기 위한 공급 흐름도이다. 시스템의 초기 상태에서 서보는 클라이언트의 접속 요구를 기다린다. (블럭 200) 서버는 통상 블럭되며 계산시 호스트 머신의 자원을 거의 요구하지 않는다. 사용자 요구시 접속이 이루어진다. 판단 블럭(202)은 사용자가 의사 사용자(a pseudo user)일 수도 있음을 반영하며, 종결 플래그(a terminate flag)를 세트하므로써 서보로 종결 커맨드를 전송한다. 블럭(202)으로부터의 판단 결과가 예스(YES)이면 종결된다. 그러나 더욱 전형적으로, 실제 사용자가 접속되어 있으므로, 블럭(204)이 실행되어 요구 클라이언트용 비동기 클라이언트 관리(Asynchronous Clinent Manager)가 확립된다. 클라이언트 관리는 이후 제15도에 도시된다.
제14도를 참조하면, 클라이언트의 텍스트 또는 그래픽 애플리케이션용 곧옹 에디터의 동작을 설명하기 위한 고급 흐름도가 도시된다. 이 프로세스는 블럭(206)에서 편집하고자 하는 공유 문서를 식별하므로써 시작한다. 다음으로, 블럭(208)에서 클라이언트는 서버와 접속하고 블럭(206)에서 식별된 문서를 요구한다. 요구의 발송은 문자 "A"로 표시된다. 서버에 의한 발송 내용의 수신(이것 역시 문자 "A"로 표시됨)은 앞서 설명된 제13도의 블럭(200)에 표시되었다. 블럭(210)에서 클라이언트는 서버로부터 문서의 카피를 수신하며, 이것이 도면중에 문자 "B"로 표시된다. 이 문서는 편집용 목표 객체, 커서 리스트, 커서 레코드 및 연관/로크 레코드를 포함한다. 문서는 클라이언트 메모리에 저장된다. 마지막으로, 블럭(212)에서 로컬 에디터가 초기화되며, 이와 같이하여 편집이 시작될 수 있다.
다음으로, 판단 블럭(214)에서 사용자로부터 입력이 수신되었는지가 판단된다. 그렇다면, 판단 블럭(216)에서 커맨드가 유효한지의 여부가 판단된다. 커맨드가 유효하지 않으면, 프로세스는 블럭(218)에서 사용자에게 경고하고 블럭(214)로 복귀하여 다음 사용자 엔트리를 분석한다. 커맨드가 유효하면, 블럭(220)에서 편집 커맨드를 서버로 전송한다. 로컬 에디터 프로그램과 서버 에디터 프로그램간의 변환점은 문자 "C"로 표시된다.
다음으로, 유효 커맨드에 대한 로컬 에디터의 응답이 설명된다. 먼저, 블럭(215)에서 서버로부터 새로운 커서가 수신되었는지의 판단이 행해지며, 변환점은 문자 "F"로 표시된다. 새로운 커서가 수신되었으면, 블럭(217)에 도시된 바와 같이 커서가 로컬 문서에 부가된다. 서버로부터 새로운 커서가 수신되지 않았으면, 프로세스는 서버로부터 편집 커맨드가 수신되었는지에 대한 판단이 행해지는 블럭(222)으로 진행한다. 편집 커맨드는 국부적으로 또는 다른 사용자로부터 발생할 수 있다. 그러나 어떤 편집 커맨드도 클라이언트에 의해 서버로부터 수신될 때까지는 작용하지 않는다. 따라서, 블럭(214) 및 블럭(222)은 서버로의 송신용 커맨드를 식별하고 서버로부터의 커맨드를 수신하기 위해 반복적으로 실행된다.
서버 에디터로부터 편집 커맨드 리턴(도면중에 변환점 "D"로 표시됨)시 블럭(224)에서 로컬 문서에 대한 커맨드가 실행된다. 이러한 커맨드가 다른 사용자에 대한 클라이언트 관리자로부터 발생할 수 있음은 이후의 설명으로부터 명백하게 된다. 블럭(224)에서 행해지는 동작은 제16도 내지 제24도를 참조하여 이후 상세히 설명된다. 이러한 동작들로는 편집 동작, 영역 연관 동작, 커서 이동 및 다른 단계가 포함된다. 판단 블럭(226)에서, 커맨드가 종료(a quit) 커맨드 또는 탈출(an exit) 커맨드인지의 판단이 행해진다. 종료 커맨드인 경우, 프로세스는 소유자의 커서를 제거하는 블럭(227)으로 진행하고, 블럭(229)에서 이와 같이 제거된 커서가 이 클라이언트의 커서인지의 여부가 판단된다. 아닌 경우, 프로세스는 블럭(214)으로 리턴하여 다음 커맨드를 기다린다. 제거된 커서가 이 클라이언트의 커서인 경우, 블럭(228)에서 로컬 문서를 클로즈하고 어떤 다른 로컬 클린업 기능을 수행하며, 그후 로컬 프로세스가 정지된다. 판단 블럭(226)에서 종료 커맨드가 아닌 경우, 블럭(214)으로 리턴하여 프로세스는 다음 커맨드를 기다린다.
제15도는 서버에서 프로세스되는 클라이언트 관리자 및 공동 에디터의 동작을 설명하기 위한 고급 흐름도이다. 프로세서는 블럭(230)에서 시작하여, 요구된 목표 개체 또는 문서가 다른 사용자에 의해 현재 편집되고 있는지가 판단된다. 그렇지 않은 경우, 블럭(232)에서 문서를 오픈하고 공동 편집을 지원하기 위한 적절한 데이타 구조를 초기화한다. 일단 오픈된 문서가 획득되거나 또는 오픈된 문서가 이미 존재하는 경우, 블럭(234)에서 새로운 사용자용 커서 레코드를 생성한다. 존재하는 경우는 갱신된 커서 레코드 및 로크 레코드를 포함하는 문서의 카피가 클라이언트 터미날로 다운로드되며, 변환점 "B"로 표시된다. 새로운 커서는 팬-아웃(fan-out)점에 의해 표시된 바와 같이 모든 다른 클라이언트 리스트에 새로운 사용자를 부가한다.
블럭(238)에서 문서내의 목표 객체에 대한 클라이언트 액세스 관리가 시작된다. 클라이언트로부터의 편집 커맨드 수신(교환점 "C"로 표시됨)시 프로세스는 블럭(240)에서 문서의 서버 버전에 대한 세마포어(semaphore)를 획득한다. 이러한 세마포어의 획득시, 클라이언트 관리자는 문서 화일을 독점적으로 액세스한다. 따라서 문서에 대한 클라이언트의 액세스는 일관성을 유지하기 위해 직렬화된다. 블럭(242)에서, 문서의 서버 버전에 대한 편집 동작이 수행된다. 이들 동작이 제16도 내지 제24도를 참조하여 이후 상세히 설명된다. 다음으로, 블럭(246)에서 팬-아웃점 "D"로 표시된 바와 같이 문서의 로컬 버전에 대한 동일한 동작을 위해 현재 문서에 부속하는 모든 클라이언트에게 편집 커맨드를 분배한다. 이제 분명하게 되는 바와 같이, 제14도에 도시된 클라이언트 에디터는 복수의 클라이언트 관리자로부터 편집 커맨드를 수신할 수도 있다. 다음으로, 블럭(248)에서, 마지막 편집 커맨드가 이 클라이언트 관리자의 클라이언트에 의한 종료 커맨드였는지의 판단이 수행된다. 그렇지 않은 경우, 프로세스는 블럭(250)으로 진행하여 이 문서에 대한 세마포어가 해제된다.
클라이언트의 종료 인스트럭션에 의해 블럭(252)에서 문서를 부속된 클라이언트의 리스트로부터 이 클라이언트를 삭제하고, 이 클라이언트의 커서 레코드를 제거한다. 블럭(254)에서, 문서에 부속된 클라이언트 리스트에 클라이언트가 남아있는지가 판단된다. 남아 있으면, 블럭(254)에서 문서를 클로즈하고 요구되는 클린업 단계를 수행한다. 다음으로, 블럭(257)에서 이 문서에 대한 세마포어를 해제한다. 철회 클라이언트(withdrawing client)에 대한 클라이언트 관리자만이 클로즈된다.
제16도는 로컬 터미날상에서 실행되는 클라이언트 에디터와 서버상에서 실행되는 클라이언트 관리자 각각에 대한 블럭(224) 및 (242)에서 수행되는 동작을 도시하는 흐름도이다. 이들 동작은 대체로 유사하지만 존재하는 차이점이 지적된다. 제16도를 참조하면, 공동 에디터의 동작을 설명하기 위한 흐름도가 도시된다. 이 프로세스는 블럭(258)에서 커맨드 및 이 커맨드를 실행하기 위한 커서를 수신하므로써 개시된다. 블럭(260)에서 수신된 커맨드가 문서의 목표 객체를 어떻게든 수정하는 커맨드인지가 판단된다.
커맨드가 목표 객체를 수정하는 것인 경우, 블럭(262)에서 커서가 이 목표 객체내의 이 커서에 대해 로크된 위치에 위치되어 있는지가 판단된다. 그렇지 않은 경우, 블럭(264)에서 목표 객체를 수정하는 애플리케이션 커맨드가 수행된다. 이 애플리케이션 커맨드는 미국 온타리오주 오타와 카알링 애비뉴 1600에 거주한 코렐시스템즈 코포레이션으로부터 입수가능한 코렐 드로우(Corel Draw)와 같은 그래픽 에디터 또는 다수의 텍스트 에디터중 어느 하나에 의해 이용되는 커맨드와 유사한 커맨드를 포함할 수도 있으며, 세이브 커맨드 및 편집 커맨드를 포함한다. 동작이 클라이언트 에디터 화면내에서 행해진 경우 디스플레이의 적절한 수정이 이루어진다. 목표 객체가 고정되면, 변경은 입력되지 않고, 프로세스는 클라이언트 에디터 또는 클라이언트 관리자로 적절히 리턴된다. 목표 객체 로크 상태의 판단에 관하여는 이후 제18A도 및 제18B를 참조하여 설명된다.
문서의 목표 객체를 수정하지 않는 커맨드는 커서 이동을 제어하는 커맨드 및 로크 또는 다른 연관 상태에 대한 목표 객체 영역의 선택 및 선택해제를 수반하는 커맨드를 포함한다. 또한 이들 커맨드중에는 목표 객체의 세이브 커맨드 및 종료 커맨드가 포함된다. 그러나 여기서는 제1커맨드 그룹이 주로 관계된다. 판단 블럭(260)으로부터 '아니오'로 판단되면, 블럭(266)에서 커맨드가 커서를 이동시키는 커맨드인지가 판단된다. 커서 이동 커맨드이면, 블럭(268)에서 커서 이동을 수행, 즉, 해당 커서에 대한 커서 레코드(160) 또는 (164)를 갱신한다. 다음으로, 프로세스가 클라이언트 에디터상에서 동작하고 있는 경우, 디스플레이가 새로운 커서 위치를 반영하도록 갱신(제17A도 및 제17B도 참조)된다. 다음으로, 단계(171)에서 커서 로크가 갱신(제19A도 및 제19B도 참조)된다. 이후 설명되는 바와 같이, 커서 로크는 커서의 새로운 위치에 따라 리턴될 수도 있고 리턴되지 않을 수도 있다. 그리고 나서, 프로세스는 클라이언트 에디터 또는 클라이언트 관리자로 적절히 리턴된다.
커맨드가 커서 이동 커맨드가 아닌 경우, 프로세스는 블럭(266)으로부터 블럭(274)으로 진행한다. 블럭(274)에서 커맨드가 선택 커맨드인지가 판단된다. 이것은 사용자와 연관된 몇몇 형식에 대해 공유 데이타 객체의 일부분을 식별하기 위해 이용된다. 선택 커맨드이면, 블럭(276)에서 선택 동작을 수행(제20A도 및 제20B도 참조)한다.
커맨드가 선택 커맨드가 아닌 경우, 프로세스는 블럭(274)으로부터 블럭(278)으로 진행한다. 블럭(278)에서 커맨드가 로크 커맨드인지가 판단되며, 이것은 공유 데이타 객체내에서 선택 영역을 사용자 선택 로크 영역으로 변환한다. 로크 커맨드이면, 블럭(280)에서 로크 동작을 수행(제21도 참조)한다.
커맨드가 로크 커맨드가 아닌 경우, 프로세스는 블럭(278)으로부터 블럭(282)으로 진행한다. 블럭(282)에서 커맨드가 로크해제 커맨드인지가 판단되며, 이 커맨드는 공유 데이타 객체내에서 사용자 선택 로크 영역을 삭제하는데 이용된다. 로크해제 커맨드이면, 블럭(284)에서 로크해제 동작을 수행(제23도 참조)한다.
커맨드가 로크해제 커맨드가 아닌 경우, 프로세스는 블럭(282)으로부터 블럭(286)으로 진행한다. 블럭(286)에서 커맨드가 연관 커맨드인지가 판단되며, 이 커맨드는 공유 데이타 객체내에서 선택 영역을 사용자 연관 영역으로 변환하는데 이용된다. 연관 커맨드이면, 블럭(290)에서 세이브 커맨드 및 편집 커맨드를 포함하는, 블럭(264)에 대해 앞서 설명된 것과 유사한 기능을 실행(제22도 참조)한다.
블럭(288)에서 로크 영역과 충돌하지 않는 나머지 가능한 커맨드가 실행된다. 프로세스의 모든 동작은 클라이언트 에디터 또는 클라이언트 관리자로 적절히 리턴하므로써 종료된다.
제17A도 및 17B도는 로컬 터미날상의 디스플레이를 갱신하는 것과 관련되는 흐름도이다. 일반적으로 서버에는 어떤 디스플레이도 제공되지 않는다. 디스플레이 갱신은 문서에 대한 수정이 이루어진 후, 커서 이동 커맨드가 발생한 후 및 사용자 연관 영역에 관련하는 동작 후에 행해진다. 제17A도 및 17B도의 흐름도는 후자의 두 경우에 관련하며, 블럭(276, 280, 284, 290)에 의해 의도된 동작 후에 실행될 것임을 예상할 수 있다.
디스플레이 갱신 프로세스는 판단 블럭(292)에서, 수신된 편집 커맨드의 성질을 식별하는 프로세스를 개시하므로써 시작한다. 판단 블럭(292)에서, 커맨드가 커서 이동 커맨드였는지가 판단된다. 커서 이동 커맨드이면, 일련의 블럭(298, 296, 298, 300)에서 커서의 소유자를 식별하고, 소유자의 컬러를 결정하고, 커서의 새로운 위치를 결정하고, 이전의 커서를 제거하며 새로운 커서를 새로운 위치에 지정된 컬러로 디스플레이한다.
디스플레이 갱신 프로세스는 판단 블럭(304)으로 계속된다. 판단 블럭(304)에서 커맨드가 영역 선택 커맨드인지가 판단된다. 영역 선택 커맨드이면, 일련의 블럭(306, 308, 310, 312, 314)에서 영역이 선택된 것으로 식별되도록 수정하고, 선택 사용자를 식별한다. 또한 이들 블럭에서, 선택 영역의 소유자를 식별하고, 소유자의 컬러를 결정하고, "선택" 표시 스타일을 결정하고, 형상의 수정이 요구되는 디스플레이내의 영역을 결정한 후 마지막으로 사용자의 컬러 및 선택 표시 스타일을 사용하여 영역을 페인팅한다.
디스플레이 갱신 프로세스는 판단 블럭(326)으로 계속된다. 판단 블럭(326)에서 커맨드가 영역을 로크하는 커맨드인지가 판단된다. 로커 커맨드이면, 일련의 블럭(328, 330, 332, 334, 336, 338)에서 영역을 로크된 영역으로 식별되도록 수정하고, 소유자를 식별한다. 또한 이들 블럭에서 로크 영역의 소유자를 식별하고, 소유자의 컬러를 결정하고, "로크" 표시 스타일을 결정하고, 형상의 수정이 요구되는 디스플레이내의 영역을 식별하며, 마지막으로 소유자의 컬러 및 로크 표시 스타일을 사용하여 영역을 페인팅한다.
디스플레이 갱신 프로세스는 판단 블럭(340)으로 계속된다. 판단 블럭(340)에서, 커맨드가 영역을 선택해제하는 또는 로크해제하는 커맨드인지가 판단된다. 선택해제 또는 로크해제 커맨드이면, 일련의 블럭(342, 344, 346, 348)에서 영역을 "정상의(normal)" 형상으로 복구한다. 보다 상세히는 정상 디스플레이 컬러를 회복하고, 정상의 디스플레이 스타일을 회복하고, 형상의 수정이 요구되는 디스플레이내의 영역을 결정하며, 마지막으로 정상 컬러 및 디스플레이 스타일을 사용하여 영역을 페인팅한다.
제17B도를 참조하면,디스플레이 갱신 프로세스는 판단 블럭(350)으로 계속된다. 판단 블럭(350)에서, 화면내에 "온"된 다른 연관이 존재하는지가 판단된다. 존재하면, 일련의 블럭(352, 354, 356, 358)에서 영역을 그의 연관을 식별하도록 수정하며 그의 소유자를 식별한다. 보다 구체적으로, 이들 블럭에서 소유자의 컬러를 회복하고, 적절한 디스플레이 스타일을 회복하고, 형상의 수정이 요구되는 디스플레이내의 영역을 결정하며, 마지막으로, 소유자의 컬러 및 적절한 연관 디스플레이 스타일을 사용하여 영역을 페인팅한다.
디스플레이 갱신 프로세스는 판단 블럭(360)으로 계속된다. 판단 블럭(360)에서, 화면내의 영역에 대해 연관이 오프인지가 판단된다. 연관이 오프이면, 일련의 블럭(362, 364, 366, 368)에서 영역이 "정상" 형상으로 디스플레이된다. 보다 구체적으로, 정상 디스플레이 컬러를 회복하고, 정상 디스플레이 스타일을 회복하고, 디스플레이내의 영역을 결정한 후 정상 컬러 및 디스플레이 스타일을 이용하여 영역을 페인팅한다. 디스플레이 갱신 종료 후, 프로세스는 로컬 에디터내의 적절한 위치로 리턴한다.
제18A도 및 18B도는 커서가 그의 현재 위치에서 로크되었는지를 판단하는 것과 관련된 흐름도이다. 이들 도면은 제각기 본 발명의 제1 및 제2실시예, 즉, 텍스트 에디터 환경 및 그래픽 또는 픽쳐 에디터 환경에 관련된다. 제18A도는 텍스트 에디터에 관한 것으로, 프로세스는 블럭(370)에서 커서 로크 레코드를 포함하는 조사되지 않은 연관/로크 레코드가 존재하는지가 판단된다. 존재하지 않는 경우는 어떠한 로크도 이러한 판단을 요구하는 동작을 저지하지 않으므로 프로세스는 리턴된다. 그러나 레코드가 존재하는 경우는, 남아 있는 레코드가 조사되어야 한다. 다음으로, 블럭(372)에서 다음 레코드가 입수된다. 판단 블럭(374)에서 이 레코드가 사용자 로크, 선택 로크 또는 커서 로크를 포함하는 임의의 로크 형태인지의 여부가 판단된다. 로크 형태가 아니면, 이 레코드는 관련이 없으므로 프로세스는 블럭(370)으로 리턴한다. 로크 형태이면 판단 블럭(375)에서 사용자가 이 레코드의 소유자인지의 여부가 결정된다. 그렇다면, 이 레코드는 관련이 없으므로, 프로세스는 블럭(370)으로 리턴한다. 마지막으로 판단 블럭(376)에서 커서의 위치와 로크 레코드의 시점 및 종점을 비교한다. 커서가 시점과 종점 사이에 위치하면, 문서를 수정하거나 선택점을 확립하기 위해 커서를 사용하는 것이 로크에 의해 금지된다. 로크되었음의 표시는 호스트 프로세스로 리턴된다. 커서가 엄밀하게 레코드의 시점 및 종점의 밖에 위치하면, 이 커서 위치에서 로크는 무효이다. 프로세스는 다음 레코드의 수행을 위해 블럭(370)으로 리턴하며, 모든 레코드가 조사된 경우는 로크되지 않음 표시가 리턴된다.
제18B도는 그래픽 에디터에 관련하며, 프로세스는 판단 블럭(378)에서 커서 로크 레코드를 포함하는 조사되지 않은 연관/로크 레코드가 존재하는지의 여부가 판단된다. 존재하지 않는 경우, 어떤 로크도 이러한 판단을 요구하는 동작을 금지하고 있지 않으므로, 프로세스는 리턴된다. 그러나 레코드가 존재하는 경우는, 남아있는 레코드가 조사되어야 한다. 다음으로, 블럭(380)에서 다음 레코드가 입수된다. 판단 블럭(382)에서 이 레코드가 사용자 로크, 선택 로크 또는 커서 로크를 포함하는 임의의 로크 형태인지의 여부가 판단된다. 로크 형태가 아니면, 이 레코드는 관련이 없으므로 프로세스는 블럭(378)으로 리턴된다. 레코드가 로크 형태이면, 판단 블럭(383)에서 사용자가 이 레코드 소유자인지의 여부가 판단된다. 그렇다면, 이 레코드는 관련이 없으므로 프로세스는 블럭(378)으로 리턴한다. 마지막으로, 판단 블럭(384)에서 커서의 위치를 로크 레코드의 경계점들에 의해 형성된 다각형의 경계와 비교한다. 커서가 다각형내에 위치하면, 문서를 수정하거나 선택 지점을 확립하기 위해 이 커서를 사용하는 것이 로크에 의해 금지된다. 로크 표시가 리턴된다. 커서가 엄밀하게 다각형의 밖에 위치하는 경우 이 커서 위치에서 로크는 무효이다. 프로세스는 블럭(378)으로 리턴하여 다음 레코드에 대해 수행한다. 모든 레코드가 클리어된 때는 로크되지 않음 표시가 리턴된다.
제19A도 및 19B도는 커서의 이동시 공유 데이타 객체내의 커서 로크 영역의 갱신에 관련하는 흐름도이다. 제19A도를 참조하면, 텍스트형 목표 객체내의 로크에 대한 갱신 프로세스가 판단 블럭(386)에서 현재 커서 로크 레코드가 널(null)인지의 여부를 결정하므로써 개시된다. 널인 경우, 동작 블럭(388, 390)에서 새로운 커서 로크 레코드를 생성하고 커서 레코드내의 포인터를 새로운 커서 로크 레코드로 세트한다. 일단 커서 로크 레코드가 이용가능하면, 판단 블럭(392)에서 이 커서 로크에 대한 로크 모드가 '문자'인지의 여부가 판단된다. 로크 모드가 문자이면, 블럭(394)에서 커서 로크 레코드내의 시작 영역 및 종료 영역을 커서의 현재 위치와 동일하게 되도록 변경한다. 로크 모드가 문자가 아니면, 프로세스는 블럭(392)으로부터 블럭(396)으로 진행하여 로크 모드가 워드인지의 여부를 판단한다. 로크 모드가 워드이면, 프로세스를 블럭(396)으로부터 블럭(398)으로 진행하며, 블럭(398)에서 목표 객체로부터 현재 라인을 검색한다. 다음으로, 블럭(400)에서 현재 워드의 시작 및 종료 오프셋을 결정한다. 다음으로, 블럭(402)에서 커서 로크 레코드내의 시작 및 종료 영역을 현재 워드의 시작 및 종료와 동일하게 세트한다. 판단 블럭(396)에서 로크 모드가 워드가 아니면, 로크 모드는 라인인 것으로 가정된다. 따라서 블럭(396)으로부터 블럭(404)으로 진행하여 블럭(404)에서 목표 객체로부터 현재 라인을 검색한다. 다음으로, 블럭(406)에서 커서 로크 레코드의 시작 및 종료 영역은 현재 라인의 시작 및 종료와 동일하게 세트된다.
어느 모드이건 로크 레코드의 시작 및 종료 영역을 세트한 후, 판단 블럭(408)에서 새로운 커서 로크 레코드가 임의의 다른 로크와 충돌하는지의 여부가 판단(세부 사항은 제24A도 참조)된다. 충돌하면, 새로운 커서 로크 레코드는 문서 데이타 구조로부터 삭제(블럭 410)되고 이 포인터에 대한 커서 레코드는 널로 세트(블럭 412)된다. 그리고 나서, 블럭(413)에서 디스플레이가 갱신된다. 그리고 나서, 프로세스는 편집 프로세스내의 적절한 지점으로 리턴한다. 판단 블럭(408)에서 충돌이 검출되지 않은 경우 프로세스는 에디터내의 적절한 지점으로 곧장 리턴한다.
그래픽 편집 환경에서 커서 로크 갱신은 다소 더 복잡하다. 제19B도를 참조하면, 동작 블럭(414)에서 초기에 새로운 임시의 커서 로크 레코드를 생성한다. 이때 커서 레코드내의 포인터 필드는 변경되지 않는다. 다음으로, 판단 블럭(416)에서 로크 모드가 직사각형인지의 여부가 판단된다. 직사각형이면, 블럭(424)에서 화면의 평면내에서 현재 커서 위치에 중심화된 직사각형이 네개의 절대값 좌표를 생성한다. 커서 로크 영역의 형상이 직사각형이 아니면, 판단 블럭(418)에서 형상 모드가 원형인지의 여부가 판단된다. 원형이면, 블럭(426)에서 원형에 근사하는 다각형의 좌표 세트, 즉, 화면의 평면내에서 커서로부터 등거리의 점들의 세트를 생성한다. N개의 점들이 선택되며, 이것은 사용된 특정 머신의 해상도가 제공되면 사용자에게 원형으로 보이게 된다.
블럭(418)에서 형상 모드가 원형이 아닌 것으로 판단되면, 판단 블럭(420)에서 모드가 사용자 정의 다각형 모드인지의 여부가 판단된다. 사용자 정의 다각형 모드이면, 블럭(428)에서 커서 위치에 관련되는 사용자 정의 점들을 로크 레코드에 대한 절대 점들로 변환한다.
그래픽 편집 환경은 또한 커서 로크 모드를 커서가 위치된 현재 객체와 동일하게 한다. 블럭(420)에서 모드가 다각형 모드가 아닌 것으로 판단되면, 블럭(422)에서 객체 모드가 사용중인지의 여부가 판단된다. 그렇다면, 블럭(430)에서 커서가 임의의 객체 위에 위치하는지의 여부를 판단하기 위해 디스플레이 이미지를 질의한다. 객체 위에 위치하는 경우 블럭(432)에서 다각형 커서 로크 레코드에 대한 정의점들로서 사용된 절대 경계점들에 대해 객체에 질의한다.
블럭(424, 426, 428, 432)으로부터, 즉, 커서 로크에 대한 어떤 경계점들의 정의 후, 판단 블럭(434)에서 충돌 가능성에 대하여 새로운 로크 레코드를 다른 로크 레코드에 비교(제24B도 참조)한다. 충돌 가능성이 발견되지 않으면, 이전의 로크 레코드가 삭제(블럭(444) 참조)되고 커서 레코드내의 포인터 영역이 리셋되어 새로운 로크 레코드로 갱신된다. 그리고 나서, 블럭(447)에서 디스플레이를 갱신한다. 그리고 프로세스는 편집 프로세스내의 적절한 지점으로 리턴한다. 그러나 판단 블럭(434)에서 충돌가능성이 발견되거나, 커서 아래에 객체가 발견되지 않거나(블럭(430)), 로크 모드가 객체 모드가 아니면(블럭(422)에 대응하며, 커서에 대한 로크의 자동 연관이 오프되었음을 의미함), 이때 블럭(438)에서 현재 커서 위치가 자신의 이전 로크 레코드내에 위치하는지의 여부가 판단된다. 이전 로크 레코드에 위치하면, 시각적으로 커서는 그의 로크 영역내에 더 이상 중심화되지 않지만 이전 로크 레코드는 유지된다. 커서가 자신의 이전 커서 로크 영역 밖에 위치하면, 커서 레코드내의 커서 로크 포인터에 의해 표시된 로크 레코드를 제거하고 이 포인터를 널로 리셋하므로써 이전 커서 로크는 제거(블럭(440))된다. 그리고 나서, 블럭(447)에서 디스플레이를 갱신한다.
사용자 선택 영역의 확립은 사용자에 의한 연관 형태 또는 사용자 선택 로크 형태 영역을 확립하는 예비단계이다. 제20A도를 참조하면, 텍스트 문서내에 선택 영역을 확립하는 것과 관련하는 흐름도가 도시된다. 선택 수행 프로세스는 편집 프로세스중에 선택점을 선택하므로써 시작된다. 판단 블럭(448)에서, 제2선택점이 입력되었는지의여부가 판단되며, 이것은 프로세스를 계속하는데 요구된다. 제2선택점이 수신되지 않으면, 프로세스는 편집 프로세스내의 적절한 지점으로 리턴한다. 사용자는 제2선택점으로서 제1선택점으로 식별된 것과 동일한 지점을 선택할 수도 있으며, 이 경우 단일 문자의 선택 영역이 생성된다.
블럭(450)에서 제2선택점 수신 후, 블럭(452)에서 시점과 종점으로서 적절한 순서로 제1 및 제2선택점을 갖는 연관/로크 레코드를 생성한다. 레코드 형태는 "레코드 로크"로 세트한다. 다음으로, 블럭(454)에서, 새로운 선택 영역이 임의의 다른 로크 영역과 충돌하는지의 여부가 판단(다시한번 제24A도의 프로세스 이용)된다. 충돌하면, 블럭(456)에서 선택이 실패했음을 사용자에게 알리고 새로운 레코드를 제거한다. 그리고 나서, 프로세스는 에디터내의 적절한 지점으로 리턴한다. 블럭(454)에서 충돌이 발견되지 않으면, 블럭(458)에서 커서 레코드내의 선택 영역을 "온"으로 세트하고, 블럭(460)에서 이 선택 로크 영역에 레코드를 부가하며, 디스플레이를 갱신한 후 에디터내의 적절한 지점으로 프로세스를 리턴시킨다.
제20B도를 참조하면, 그래픽 문서에서 선택 영역을 확립하는 것과 관련하는 흐름도가 도시된다. 이 선택 수행 프로세스는 편집하는 동안 선택점을 선택하므로서 개시된다. 이 프로세스는 블럭(464)에서 선택 형태의 연관/로크 레코드를 생성하므로써 시작된다. 연관/로크 레코드는 다각형으로 표시된 형상을 갖고 그의 제1점은 초기 선택점이다. 다음으로, 판단 블럭(466)에서 사용자가 선택 영역 형상으로 직사각형을 선택하였는지의 여부가 판단된다. 직사각형을 선택하였으면, 블럭(468)에서 사용자에게 영역을 정의하기 위한 제2점을 제공할 것을 촉구한다. 사용자는 제2점으로서 제1점으로 식별된 것과 동일한 점을 선택할 수도 있으며, 이 경우 단일 화소의 선택 영역이 생성된다.
직사각형이 선택되지 않은 경우, 블럭(470)에서 사용자가 원형을 선택하였는지의 여부가 판단된다. 원형을 선택하였으면, 블럭(472)에서 사용자에게 반경을 공급할 것을 촉구하며, 그로부터 실질적으로 원형으로 나타나는 다각형을 완성하기 위해 다음 N개의 선택점이 발생될 수 있다.
블럭(470)에서 원형이 선택되지 않은 경우, 판단 블럭(474)에서 사용자에 의해 일반적인 다각형이 선택되었는지의 여부가 판단된다. 다각형이 선택된 경우, 블럭(476)에서 사용자에게 일련의 점들을 공급할 것을 촉구한다. 사용자는, 부가의 점을 선택하는 대신에, 모든 점들이 공급되었음을 머신에게 통지할 수 있으며, 이것은 판단 블럭(478)에서 검출된다. 사용자가 모든 점들을 공급한 것으로 판단되면, 이 다각형은 완결되며 프로세스는 블럭(478)으로부터 '예' 브랜치를 따라 루프를 빠져나온다. 사용자가 완결을 통지하지 않는 한, 또는 사용자가 최대 수의 허용가능한 점들을 선택완료할 때까지 프로세스는 블럭(478)으로부터 블럭(480)으로 '아니오' 브랜치를 따라 진행하여 가장 최근의 선택점들은 연관/로크 레코드내의 점 리스트에 부가된 후, 블럭(476)으로 리턴한다.
판단 블럭(474)으로부터의 '아니오' 블랜치는 사용자가 사용자 선택 영역에 대한 형상을 선택하는데 실패했음을 표시하며, 블럭(482)에서 프로세스는 사용자에게 에러를 표시하고 블럭(464)에서 생성된 레코드를 제거한 후 편집 프로세스내의 적절한 지점으로 리턴한다.
사용자 선택 영역의 경계점 완료후, 블럭(484)에서 새로운 레코드가 다른 로크 레코드와 충돌하는지의 여부를 판단(제24B도 참조)한다. 충돌하면, 블럭(492)에서 사용자에게 경고한다. 다음으로, 블럭(494)에서 블럭(464)에서 생성된 레코드를 제거한다. 그리고 나서, 프로세스는 에디터내의 적절한 지점으로 리턴한다.
판단 블럭(484)에서 충돌이 없는 것으로 판단되면, 프로세스는 '아니오' 브랜치를 따라 동작 블럭(486)으로 진행하며, 여기서 커서 레코드내의 선택 영역을 "온"으로 세트한다. 다음으로, 블럭(488)에서 커서 레코드의 연관 레코드 리스트내의 포인터 영역에 기입된다. 그리고 나서, 동작이 클라이언트측에서 행해진 경우, 블럭(490)에서 영역 선택을 표시하도록 디스플레이가 갱신된다. 다음으로 프로세스는 에디터내의 적절한 지점으로 리턴한다.
선택 영역을 사용자 선택 로크 영역으로 변환하는 로크 세트 동작은 어느 실시예에서도 동일하다. 제21도를 참조하면, 사용자가 선택 영역으로부터 로크 영역을 확립하는 것과 관련하는 흐름도가 도시된다. 로크세트 요구시, 프로세스는 블럭(496)에서 이 사용자에 대한 커서 레코드내의 선택 온 영역이 온되었는지의 여부를 판단하므로써 개시된다. 온되어 있지 않으면, 요구가 무효이므로 프로세스는 실질적인 동작을 수행하지 않고 에디터내 적절한 지점으로 리턴한다. 선택 온 영역이 온이고 클라이언트측인 경우, 블럭(498)에서 커서 레코드내에 지시된 영역으로부터 선택 표시를 제거하도록 디스플레이가 갱신된다. 블럭(500)에서 선택 로크 영역으로부터 이 레코드를 제거하여 사용자 로크 리스트내에 위치시킨다(이와 같은 구별이 커서 레코드내에 유지된 경우). 다음으로, 블럭(502)에서 로크 레코드내의 형태 영역을 "사용자 로크"로 세트한다. 그리고 나서, 블럭(504)에서 커서 레코드내 및 로크 레코드내의 선택 온 영역을 오프로 리셋한다. 마지막으로, 에디터로 리턴하기 전에 블럭(506)에서 새로운 로크 영역을 반영하도록 디스플레이를 갱신한다.
제22도는 사용자가 연관 영역으로서 선택 영역을 지정하는 것에 관련하는 흐름도를 도시한다. 연관 동작 수행 요구시, 프로세스는 블럭(508)에서 이 사용자용 커서 레코드내의 선택 온 영역이 온되었는지의 여부가 판단된다. 온되어 있지 않으면, 요구는 무효이므로 프로세스는 실질적인 동작을 수행하지 않고 에디터내의 적절한 지점으로 리턴한다. 선택 온 영역이 온이고 프로세스가 클라이언트측에서 행해진 경우, 블럭(510)에서 커서 레코드내에 지시된 영역으로부터 선택 표시를 제거하도록 디스플레이가 갱신된다. 블럭(512)에서 선택 로크 영역으로부터 이 영역을 제거하여 연관 리스트내에 위치시킨다(이러한 구별이 커서 레코드내에 유지된 경우). 다음으로, 블럭(514)에서 로크 레코드내의 형태 필드를 "사용자 연관"으로 세트한다. 그리고 나서, 블럭(516)에서 커서 레코드 및 연관/로크 레코드내의 선택 온 영역을 오프로 리셋한다. 마지막으로, 에디터로 리턴하기 전에 블럭(518)에서 새로운 연관 영역을 표시하도록 디스플레이가 갱신된다.
다음으로 사용자에 의한 로크 및 연관 영역의 해제 동작이 설명된다. 제23도를 참조하면, 영역의 로크해제 또는 연관해제와 관련하는 흐름도가 도시된다. 프로세스는 블럭(520)에서 로크해제 또는 연관 해제 동작이 수행중인지의 여부를 표시하는 플래그를 세트하므로서 개시된다. 프로세스는 커서가 위치된 레코드가 발견될 때까지 커서 로크 및 연관 리스트내의 각 레코드를 조사한다. 다음으로, 블럭(522)에서 제거가 가능한 레코드가 사용자 선택 로크 리스트 또는 연관 리스트내에 존재하는지의 여부가 판단된다. 이러한 레코드가 존재하는 경우 이들 레코드는 리스트 순서대로 검색(블럭(524))되며, 판단 블럭(526)에서 커서가 레코드 경계내에 위치하는지의 여부가 판단된다. 위치하지 않는 경우 프로세스는 블럭(522)으로 리턴한다. 커서가 위치하는 레코드가 발견된 경우, 블럭(527)에서 현재 사용자가 이 레코드의 소유자인지의 여부가 판단된다. 소유자가 아닌 경우 프로세스는 블럭(522)으로 리턴한다. 소유자인 경우, 이 레코드로의 포인터가 커서 레코드내의 적절한 리스트로부터 제거된다. 다음으로, 블럭(530)에서 이 레코드가 해제된다. 마지막으로, 블럭(532)에서 디스플레이가 갱신(이 경우도 클라이언트 터미날에서만)된다. 그리고 나서, 프로세스는 에디터내의 적절한 지점으로 리턴한다.
제24A도 및 제24B도는 로크 충돌을 검출하는 본 발명의 제1 및 제2실시예에 관련하는 흐름도를 도시하며, 사용자의 영역 선택 시도 또는 커서 로크 이동 시도시에 수행된다. 제24A도를 참조하면, 텍스트 편집 환경에 대한 로크 충돌 비교와 관련하는 흐름도가 도시된다. 프로세스는 사용자 선택 로크 또는 커서 로크 레코드의 존재에 관해 질의하므로써 개시된다. 존재하거나 남아 있는게 없는 경우, 이러한 질의는 종료하며 블럭(534)으로부터 '아니오' 브랜치를 따라 요구 루틴으로 리턴하여 요구 루틴에게 충돌이 존재하지 않음을 알린다. 레코드가 남아 있는 경우, 블럭(536)에서 다음 레코드가 수신된다. 판단 블럭(538)에서 현재 커서가 레코드의 소유자인지의 여부가 판단된다. 소유자이면, 이 레코드는 버려지고 프로세스는 블럭(538)으로부터 '예' 브랜치를 따라 블럭(534)으로 리턴한다. 소유자가 아닌 경우는 블럭(540)에서 이 레코드가 어느 형태든 로크인지의 여부가 판단된다. 로크가 아니면, 이 레코드는 버려지고 프로세스는 블럭(534)으로 리턴한다. 로크이면, 요구된 선택 또는 로크 영역이 로크 레코드와 공통의 점들을 갖는지의 여부에 대한 판단이 행히진다. 판단 블럭(542)에서 로크(선택) 영역 입력 개시가 회복된 로크 레코드 개시와 동시이거나 그보다 앞서는지의 여부가 판단된다. 동시이거나 그보다 앞서면, 블럭(546)에서 입력 레코드 개시가 회복된 로크 레코드 종료보다 전에 또는 그와 동시에 발생하는지의 여부가 판단된다. 종료보다 전에 또는 그와 동시이면, 충돌이 존재하므로 이러한 충돌 존재 표시가 요구 프로세스로 리턴된다. 그렇지 않으면, 프로세스는 블럭(534)으로 리턴하여 다음 레코드를 조사한다. 판단 블럭(542)에서 로크 영역 입력 개시가 회복된 로크 레코드 개시보다 이후에 발생하는 경우, 프로세스는 판단 블럭(544)에서 입력 레코드 종료가 로크 레코드 개시 이후 또는 그와 동시에 발생하는지의 여부가 판단된다. 그렇지 않은 경우, 충돌은 존재하지 않으므로 프로세스는 블럭(534)으로 리턴한다. 이 경우는 충돌이 존재하므로 충돌 표시와 함께 요구 프로세스로 리턴된다.
제24B도를 참조하면, 그래픽 편집 환경에 대한 비교와 관련하는 흐름도가 도시된다. 프로세스는 사용자 선택 로크 또는 커서 로크 레코드의 존재에 관해 질의하므로써 개시된다. 레코드가 존재하거나 남아 있지 않은 경우, 질의는 종료하며 블럭(548)으로부터의 '아니오' 브랜치를 따라 요구 루틴으로 리턴하여 충돌하지 않음을 요구 루틴에게 알린다. 레코드가 남아있는 경우, 블럭(550)에서 다음 레코드가 수신된다. 다음으로, 판단 블럭(552)에서 현재 커서가 레코드의 소유자인지의 여부가 판단된다. 소유자이면, 레코드는 버려지고 프로세스는 블럭(552)으로부터의 '예' 브랜치를 따라 블럭(548)으로 리턴한다. 소유자가 아니면, 판단 블럭(554)에서 레코드가 어느 형태이든 로크인지의 여부가 판단된다. 로크가 아니면, 레코드는 버려지고 프로세스는 블럭(548)으로 리턴한다. 로크이면, 레코드와 입력 영역이 오버랩 가능성에 대해 비교되어야 한다. 판단 블럭(556)에서 이러한 오버랩의 여부가 판단된다. 이것은 입력 영역의 다각형이 블럭(550)에서 회복된 로크 레코드로부터 리턴된 다각형과 오버랩하는가를 판단하므로써 이루어진다. 오버랩하면, 충돌 표시가 요구 프로세스로 리턴된다. 오버랩하지 않으면, 프로세스는 다음 레코드를 조사하기 위해 블럭(548)으로 리턴한다.
이상 본 발명은 특정 실시예를 참조하여 설명되었지만, 이러한 설명은 제한적인 것으로 해석되어서는 안되며, 본 발명의 이러한 설명을 참조하여 본 발명에 개시된 실시예는 물론 다른 실시예의 다양한 변형이 가능함을 당 분야에 숙련된 자라면 이해할 것이다. 그러므로, 첨부된 청구범위는 본 발명의 진정한 범주내에서 이러한 변형 또는 실시를 포함하는 것으로 이해되어야 한다.

Claims (14)

  1. 다수의 통신 터미날을 접속하는 네트워크(a network), 각 터미날용 출력 디스플레이 장치(an output display device), 각 터미날용 사용자 입력 장치(a user input device), 다수의 시스템 사용자에 의해 동시에 액세스가능한 공유 데이타 객체(a shared data object)를 포함하는 멀티-미디어 공동 컴퓨터 기반 시스템(a multi-media collaborative computer based system)에서, 복수의 사용자에 의한 동시 조작으로부터 공유 데이타 객체의 일시적인 부동 블럭(transitory, floating blocks of the shared data object)을 보호하기 위한 방법에 있어서, ① 상기 공유 데이타 객체에 대한 사용자의 액세스에 응답하여, 상기 출력 디스플레이 장치상에 디스플레이하기 위해 이용가능한 사용자 커서를 할당하는 단계와, ② 이전에 확립된 커서 연관 로크 영역 밖으로 커서가 이동할 경우 상기 이전에 확립된 커서 연관 로크 영역을 해제하는 단계와, ③ 상기 커서의 이동에 응답하여, 공유 데이타 객체내에 커서의 위치에 관련되는 커서 연관 로크 영역에 대한 위치를 결정하는 단계와, ④ 상기 커서 연관 로크 영역에 대한 위치가 확입된 로크 영역의 일부를 포함하지 않는 경우 상기 커서에 대한 커서 연관 로크 영역을 확립하는 단계를 포함하는 복수의 사용자에 의한 동시 조작으로부터 공유 데이타 객체의 일시적인 부동 블럭을 보호하기 위한 방법.
  2. 제1항에 있어서, 상기 커서 연관 로커 영역을 확립하는 단계는 ㉮ 커서 로크 영영역을 확립하기 위해 사용자에 의해 선택된 조건이 존재하는지의 여부를 판단하는 단계와, ㉯ 상기 조건이 존재하는 경우 이들 조건이 만족하는지의 여부를 판단하는 단계와, ㉰ 이들 조건이 만족하는 경우 커서 연관 로크 영역을 확립하는 단계를 포함하는 복수의 사용자에 의한 동시 조작으로부터 공유 데이타 객체의 일시적인 부동 블럭을 보호하기 위한 방법.
  3. 제2항에 있어서, 상기 디스플레이 매체는 그래픽 및 픽쳐이며, 상기 방법은 상기 사용자 선택에 응답하여, 커서 연관 로크 영역에 대해 객체 모드(an object mode)를 확립하는 단계-상기 커서 연관 로크 영역을 확립하기 위한 조건은 상기 커서 아래에 객체가 존재한다는 것임를 더 포함하는 복수의 사용자에 의한 동시 조작으로부터 공유 데이타 객체의 일시적인 부동 블럭을 보호하기 위한 방법.
  4. 제1항에 있어서, 현재 사용자가 개시한 동작이 상기 공유 데이타 객체의 수정을 지시하는 것인지의 여부를 판단하는 단계와, 상기 현재 사용자가 개시한 동작이 수정을 지시한 것이면, 상기 수정이 로크 영역 내에서 발생하게 되는지의 여부를 판단하는 단계와, 상기 수정이 로크 영역내에서 발생하게 되는 경우 및 상기 수정이 상기 로크 영역과 연관된 커서 이외의 커서에 의해 시도된 경우, 수정을 금지하는 단계를 더 포함하는 복수의 사용자에 의한 동시 조작으로부터 공유 데이타 객체의 일시적인 부동 블럭을 보호하기 위한 방법.
  5. 제1항에 있어서, 상기 공유 데이타 객체는 텍스트인 복수의 사용자에 의한 동시 조작으로부터 공유 데이타 객체의 일시적인 부동 블럭을 보호하기 위한 방법.
  6. 제1항에 있어서, 커서 연관 로크 영역의 형상 및 사이즈를 제어하는 다수의 모드가 각각의 사용자에게 허용되는 복수의 사용자에 의한 동시 조작으로부터 공유 데이타 객체의 일시적인 부동 블럭을 보호하기 위한 방법.
  7. 복수의 사용자에 의한 동시 조작으로부터 공유 데이타 객체의 일시적인 부동 블럭을 보호하기 위한 공동 멀티-미디어 컴퓨터 기반 시스템-상기 공유 데이타 객체는 다수의 사용자에 의해 다수의 개인 화면을 통해 동시에 액세스됨에 있어서, ① 출력 디스플레이 장치와 사용자 입력 장치를 제각기 갖는 다수의 터미날과, ② 컴퓨터와, ③ 통신을 위해 상기 터미날과 상기 컴퓨터를 접속하는 네트워크와, ④ 상기 공유 데이타 객체에 대한 사용자 액세스에 응답하여 상기 출력 디스플레이 장치상에 디스플레이하는데 이용가능한 커서를 사용자에게 할당하는 수단과, ⑤ 사용자 선택에 응답하여, 상기 공유 데이타 객체내에서 상기 사용자에게 할당된 커서를 이동시키는 수단과, ⑥ 상기 커서의 이동에 응답하여, 상기 공유 데이타 객체내의 상기 커서와 연관된 로크 영역에 대한 위치를 결정하는 수단과, ⑦ 상기 커서가 이전에 확립된 로크 영역의 밖으로 이동하는 경우, 상기 이전에 확립된 로크 영역을 해제하는 수단과, ⑧ 상기 결정된 위치가 이전에 확립된 로크 영역을 전혀 포함하는 않은 경우 새로운 로크 영역을 확립하는 수단을 포함하는 공동 컴퓨터 기반 시스템.
  8. 제7항에 있어서, 상기 새로운 로크 영역을 확립하는 수단은 ㉮ 임의의 커서 연관 로크 영역이 범위를 지정하는 커서 로크 모드를 확립하는 수단과, ㉯ 사용자의 특정의 로크 모드 선택에 응답하여, 커서 연관 로크가 생성될 조건을 지정하는 수단을 더 포함하는 공동 컴퓨터 기반 시스템.
  9. 제8항에 있어서, 하나의 커서 로크 모드는 객체 모드이고, 커서 연관 로크 영역은 상기 공유 데이타 객체내에 정의된 부객체로 연장-단, 커서는 상기 부객체의 위에 위치함-하는 공동 컴퓨터 기반 시스템.
  10. 제7항에 있어서, 상기 공유 데이타 객체는 텍스트 에디터에 의해 조작되는 공동 컴퓨터 기반 시스템.
  11. 제8항에 있어서, 사용자 커맨드를 직렬화(serializing)하는 수단을 더 포함하는 공동 컴퓨터 기반 시스템.
  12. 제11항에 있어서, 상기 현재 사용자로부터의 컨맨드가 상기 공유 데이타 객체의 수정을 지시하는 것인지의 여부를 체크하는 수단과, 상기 커맨드에 응답하여, 상기 지시된 수정이 상기 현재 사용자에게 할당된 커서 이외의 커서와 연관된 로크 영역내에서 발생하였는지의 여부를 판단하는 수단과, 상기 지시된 수정이 상기 현재 사용자에게 할당된 커서 이외의 커서와 연관된 로크 영역내에서 발생한 경우, 수정을 금지하는 수단과, 그렇지 않은 경우 상기 수정을 수행하는 수단을 포함하는 공동 컴퓨터 기반 시스템.
  13. 제1항에 있어서, 상기 할당된 커서는 소유자에 관해 구별하기 위한 시각적 속성을 포함하는 복수의 사용자에 의한 동시 조작으로부터 공유 데이타 객체의 일시적인 부동 블럭을 보호하기 위한 방법.
  14. 제7항에 있어서, 상기 할당된 커서는 소유자에 관해 구별하기 위한 시각적 속성을 포함하는 공동 컴퓨터 기반 시스템.
KR1019920023654A 1991-12-31 1992-12-09 복수의 사용자에 의한 동시 조작으로부터 공유 데이타 객체의 일시적인 부동 블럭을 보호하기 위한 공동 컴퓨터 기반 시스템 및 방법 KR970011218B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US816,451 1991-12-31
US07/816,451 US5339388A (en) 1991-12-31 1991-12-31 Cursor lock region

Publications (2)

Publication Number Publication Date
KR930014098A KR930014098A (ko) 1993-07-22
KR970011218B1 true KR970011218B1 (ko) 1997-07-08

Family

ID=25220664

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019920023654A KR970011218B1 (ko) 1991-12-31 1992-12-09 복수의 사용자에 의한 동시 조작으로부터 공유 데이타 객체의 일시적인 부동 블럭을 보호하기 위한 공동 컴퓨터 기반 시스템 및 방법

Country Status (8)

Country Link
US (1) US5339388A (ko)
EP (1) EP0550370A3 (ko)
JP (1) JPH0816873B2 (ko)
KR (1) KR970011218B1 (ko)
CN (1) CN1041567C (ko)
CA (1) CA2076604C (ko)
SG (1) SG43686A1 (ko)
TW (1) TW227607B (ko)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2690260B1 (fr) * 1992-04-17 1997-01-03 Bull Sa Utilisation d'un protocole bidirectionnel de tres haut niveau pour la communication entre un systeme hypermedia et une pluralite d'editeurs.
US20020091850A1 (en) 1992-10-23 2002-07-11 Cybex Corporation System and method for remote monitoring and operation of personal computers
EP0622930A3 (en) * 1993-03-19 1996-06-05 At & T Global Inf Solution Division of applications for computer arrangement with collaboration.
US6049334A (en) * 1993-12-20 2000-04-11 International Business Machines Corporation Method and system for graphically indicating the activity of a plurality of users within a shared data collection
US5835601A (en) * 1994-03-15 1998-11-10 Kabushiki Kaisha Toshiba File editing system and shared file editing system with file content secrecy, file version management, and asynchronous editing
US6760840B1 (en) 1994-03-15 2004-07-06 Kabushiki Kaisha Toshiba File editing system and shared file editing system with file content secrecy, file version management, and asynchronous editing
JPH0855156A (ja) * 1994-07-12 1996-02-27 Internatl Business Mach Corp <Ibm> 工程安全管理のためのコンピュータ・システムおよび方法
US5913920A (en) * 1994-12-13 1999-06-22 International Business Machines Corporation Indicating updates from a remote display
US6219044B1 (en) * 1995-02-13 2001-04-17 International Business Machines Corporation Method for managing top-level windows within a conferencing network system
GB2301204A (en) * 1995-05-23 1996-11-27 Ibm Collaborative data processing
GB2303946A (en) * 1995-07-29 1997-03-05 Ibm Data conferencing system
US5721842A (en) * 1995-08-25 1998-02-24 Apex Pc Solutions, Inc. Interconnection system for viewing and controlling remotely connected computers with on-screen video overlay for controlling of the interconnection switch
AU7119696A (en) * 1995-10-04 1997-04-28 Numetrix Limited Method and system for dynamically modelling and visualizing data
US5835904A (en) * 1995-10-31 1998-11-10 Microsoft Corporation System and method for implementing database cursors in a client/server environment
US5867156A (en) * 1995-11-08 1999-02-02 Intel Corporation Automatic viewport display synchronization during application sharing
DE19548397C1 (de) * 1995-12-22 1997-01-23 Siemens Ag Verfahren zur Zugriffskontrolle auf rechnerkontrollierte Programme, die von mehreren Benutzereinheiten gleichzeitig genutzt werden können
US5844555A (en) * 1996-06-20 1998-12-01 Mathsoft, Inc. Locking mechanism for live mathematical documents
KR100288976B1 (ko) * 1997-01-08 2001-05-02 윤종용 텔레비전수상기의화면명령구성및인식방법
US6662210B1 (en) 1997-03-31 2003-12-09 Ncr Corporation Method of remote collaboration system
US5966512A (en) * 1997-06-05 1999-10-12 International Business Machines Corporation Groupware save operation
JP3277875B2 (ja) * 1998-01-29 2002-04-22 ヤマハ株式会社 演奏装置、サーバ装置、演奏方法および演奏制御方法
US6115027A (en) * 1998-02-23 2000-09-05 Hewlett-Packard Company Synchronized cursor shared among a number of networked computer systems
US6388680B1 (en) * 1998-06-29 2002-05-14 Sony Corporation Multi-user extension mechanisms for client-server system
WO2001004804A2 (en) * 1999-07-11 2001-01-18 Expression, Inc. Internet collaboration system and method
US6826595B1 (en) 2000-07-05 2004-11-30 Sap Portals Israel, Ltd. Internet collaboration system and method
GB2358777A (en) * 1999-12-22 2001-08-01 Nokia Mobile Phones Ltd Hand held communication device with display having touch sensitive region
US7124362B2 (en) * 2001-08-31 2006-10-17 Robert Tischer Method and system for producing an ordered compilation of information with more than one author contributing information contemporaneously
US7587695B2 (en) * 2001-12-10 2009-09-08 Mentor Graphics Corporation Protection boundaries in a parallel printed circuit board design environment
US6711718B2 (en) * 2001-12-10 2004-03-23 Charles Pfeil Parallel electronic design automation: distributed simultaneous editing
US7516435B2 (en) * 2001-12-10 2009-04-07 Mentor Graphics Corporation Reservation of design elements in a parallel printed circuit board design environment
WO2003050726A1 (en) * 2001-12-10 2003-06-19 Mentor Graphics Corporation Parallel electronic design automation: shared simultaneous editing
US20040215743A1 (en) * 2003-03-04 2004-10-28 Soronti, Inc. Mouse synchronization for virtual presence architecture (VPA)
US20040215742A1 (en) * 2003-03-04 2004-10-28 Soronti, Inc. Image perfection for virtual presence architecture (VPA)
JP4590172B2 (ja) * 2003-09-08 2010-12-01 株式会社日本総合研究所 開発支援システム及び開発支援プログラム
US7305648B2 (en) * 2003-11-21 2007-12-04 Mentor Graphics Corporation Distributed autorouting of conductive paths in printed circuit boards
ATE430544T1 (de) * 2003-12-03 2009-05-15 Tenebraex Corp System und verfahren zur identifizierung mindestens einer farbe für einen anwender
US7856469B2 (en) * 2004-04-15 2010-12-21 International Business Machines Corporation Searchable instant messaging chat repositories using topic and identifier metadata
US7516132B1 (en) * 2004-11-12 2009-04-07 Sun Microsystems, Inc. Mechanism for enabling distributed file sharing among a plurality of nodes in a network
US20060167994A1 (en) * 2005-01-11 2006-07-27 Yen-Fu Chen System and method for automatically segmenting content from an instant messaging transcript and applying commands contained within the content segments
US8275832B2 (en) * 2005-01-20 2012-09-25 International Business Machines Corporation Method to enable user selection of segments in an instant messaging application for integration in other applications
US8326926B2 (en) * 2005-09-13 2012-12-04 Mentor Graphics Corporation Distributed electronic design automation architecture
US20070100952A1 (en) * 2005-10-27 2007-05-03 Yen-Fu Chen Systems, methods, and media for playback of instant messaging session histrory
US20070101190A1 (en) * 2005-10-27 2007-05-03 International Business Machines Corporation Systems, methods, and media for sharing input device movement information in an instant messaging system
US20070124370A1 (en) * 2005-11-29 2007-05-31 Microsoft Corporation Interactive table based platform to facilitate collaborative activities
US7752367B2 (en) * 2005-12-22 2010-07-06 International Business Machines Corporation File-based access control for shared hardware devices
KR100748700B1 (ko) * 2006-01-18 2007-08-13 삼성전자주식회사 화이트보드를 이용한 원격회의 시스템 및 그 방법
US8307119B2 (en) * 2006-03-31 2012-11-06 Google Inc. Collaborative online spreadsheet application
US8108464B1 (en) * 2006-03-31 2012-01-31 Google Inc. Collaborative workflow through messaging conversations
US20070273695A1 (en) * 2006-05-26 2007-11-29 Stevens Matthew J Mechanism for collaboratively exchanging navigation information in distributed document review
US7913178B2 (en) 2007-01-31 2011-03-22 Ebay Inc. Method and system for collaborative and private sessions
US8436815B2 (en) 2007-05-25 2013-05-07 Microsoft Corporation Selective enabling of multi-input controls
US7937663B2 (en) * 2007-06-29 2011-05-03 Microsoft Corporation Integrated collaborative user interface for a document editor program
US20090089682A1 (en) * 2007-09-27 2009-04-02 Rockwell Automation Technologies, Inc. Collaborative environment for sharing visualizations of industrial automation data
US9122751B2 (en) * 2007-12-07 2015-09-01 International Business Machines Corporation Method of tagging instant messaging (IM) conversations for easy information sharing
US8331685B2 (en) * 2008-05-28 2012-12-11 Apple Inc. Defining a border for an image
US9152644B2 (en) * 2008-12-30 2015-10-06 Novell, Inc. Systems and methods for providing collaborative editing
US20110145725A1 (en) * 2009-12-11 2011-06-16 Richard John Campbell Methods and Systems for Attaching Semantics to a Collaborative Writing Surface
JP5843514B2 (ja) * 2011-06-22 2016-01-13 キヤノン株式会社 情報処理装置および制御方法およびプログラム
JP2013239137A (ja) * 2012-04-20 2013-11-28 Sharp Corp 情報処理装置、情報処理装置の制御方法、および情報処理装置の制御プログラム
US9158746B2 (en) * 2012-06-13 2015-10-13 International Business Machines Corporation Managing concurrent editing in a collaborative editing environment using cursor proximity and a delay
KR20140034612A (ko) * 2012-09-12 2014-03-20 삼성전자주식회사 멀티 유저를 위한 디스플레이 장치 및 그 제어 방법
CN103853319A (zh) * 2012-11-30 2014-06-11 英业达科技有限公司 依据输入操作控制相异装置的系统、服务器及其方法
CN103345482A (zh) * 2013-06-20 2013-10-09 上海爱数软件有限公司 一种网络存储系统及其文件访问冲突处理方法
US10042830B2 (en) * 2014-05-07 2018-08-07 Scripto Enterprises Llc. Writing and production methods, software, and systems
US10404700B1 (en) * 2015-08-27 2019-09-03 Cadence Design Systems, Inc. Concurrent design process
US9667676B1 (en) * 2016-01-29 2017-05-30 Dropbox, Inc. Real time collaboration and document editing by multiple participants in a content management system

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4698752A (en) * 1982-11-15 1987-10-06 American Telephone And Telegraph Company At&T Bell Laboratories Data base locking
US4651299A (en) * 1983-04-27 1987-03-17 Canon Kabushiki Kaisha Data processing apparatus
EP0130018B1 (en) * 1983-06-28 1990-08-22 Fujitsu Limited Electronic conference system
JPS6073746A (ja) * 1983-09-30 1985-04-25 Hitachi Ltd 情報処理システムおよびプロセス実行制御方式
US4558413A (en) * 1983-11-21 1985-12-10 Xerox Corporation Software version management system
US4635189A (en) * 1984-03-01 1987-01-06 Measurex Corporation Real-time distributed data-base management system
JPS61109093A (ja) * 1984-11-02 1986-05-27 日本電信電話株式会社 画像表示装置
JPS61275795A (ja) * 1985-05-31 1986-12-05 キヤノン株式会社 文書処理装置
GB2191917A (en) * 1986-06-16 1987-12-23 Ibm A multiple window display system
JPH079639B2 (ja) * 1986-12-08 1995-02-01 株式会社日立製作所 デ−タ処理装置
US5001628A (en) * 1987-02-13 1991-03-19 International Business Machines Corporation Single system image uniquely defining an environment for each user in a data processing system
US4890098A (en) * 1987-10-20 1989-12-26 International Business Machines Corporation Flexible window management on a computer display
US4974173A (en) * 1987-12-02 1990-11-27 Xerox Corporation Small-scale workspace representations indicating activities by other users
US5008853A (en) * 1987-12-02 1991-04-16 Xerox Corporation Representation of collaborative multi-user activities relative to shared structured data objects in a networked workstation environment
US4853843A (en) * 1987-12-18 1989-08-01 Tektronix, Inc. System for merging virtual partitions of a distributed database
JPH01248187A (ja) * 1988-03-30 1989-10-03 Toshiba Corp ディスプレイシステム
JPH02257252A (ja) * 1989-02-07 1990-10-18 Fujitsu Ltd 文書作成方式
JPH0769842B2 (ja) * 1989-02-13 1995-07-31 インターナショナル・ビジネス・マシーンズ・コーポレーション 資源の相互排他制御方法及びシステム

Also Published As

Publication number Publication date
JPH05324360A (ja) 1993-12-07
CA2076604A1 (en) 1993-07-01
KR930014098A (ko) 1993-07-22
US5339388A (en) 1994-08-16
JPH0816873B2 (ja) 1996-02-21
CN1074300A (zh) 1993-07-14
SG43686A1 (en) 1997-11-14
EP0550370A3 (en) 1993-08-18
EP0550370A2 (en) 1993-07-07
CA2076604C (en) 1996-10-01
TW227607B (ko) 1994-08-01
CN1041567C (zh) 1999-01-06

Similar Documents

Publication Publication Date Title
KR970011218B1 (ko) 복수의 사용자에 의한 동시 조작으로부터 공유 데이타 객체의 일시적인 부동 블럭을 보호하기 위한 공동 컴퓨터 기반 시스템 및 방법
US5339389A (en) User selectable lock regions
US5337407A (en) Method and system for identifying users in a collaborative computer-based system
US5515491A (en) Method and system for managing communications within a collaborative data processing system
US6052514A (en) Distributed publication system with simultaneous separate access to publication data and publication status information
US6226652B1 (en) Method and system for automatically detecting collision and selecting updated versions of a set of files
US6353452B1 (en) Data item display method and device, and recording medium storing a program for controlling display of data item
US5019961A (en) Computer apparatus and method for logical modelling
EP0562822B1 (en) Method of managing data structure containing both persistent data and transient data
JPH0786819B2 (ja) 木構造表示方式
JPH0581358A (ja) 複数の表示方法が保存できる図面情報処理方法および図面情報処理システム
US7490301B2 (en) Computer readable recording medium storing program for managing CAD data
US5781905A (en) Program generating method combining data item part with database manipulation part
JP3942877B2 (ja) Cadデータを管理するためのプログラムを記録したコンピュータ読み取り可能な記録媒体およびcadデータを管理するためのプログラム
US6392662B1 (en) Draw order preservation in a computer-implemented graphics system
US20030115255A1 (en) A server device that manages a state of a shared device, and method of controlling same
CN109725973A (zh) 一种数据处理方法和数据处理装置
US20060184550A1 (en) Information processing apparatus and method, and computer readable memory
JP3370064B2 (ja) 図面情報処理方法およびシステム
CA2145765C (en) Publication system management and coordination
JPH09245063A (ja) Cad編集装置
JP2875034B2 (ja) オブジェクト排他制御装置
JPH0436792A (ja) 画面選択表示方法及びその装置
JP2004062541A (ja) データベース情報の遠隔制御システムのサーバ、及びデータベース情報の遠隔制御方法
JPH0490026A (ja) 処理フロー図編集装置

Legal Events

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

Payment date: 20020809

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee