KR20120022911A - 양방향 동기 중에 자기 참조 필드의 동기 - Google Patents

양방향 동기 중에 자기 참조 필드의 동기 Download PDF

Info

Publication number
KR20120022911A
KR20120022911A KR1020117026811A KR20117026811A KR20120022911A KR 20120022911 A KR20120022911 A KR 20120022911A KR 1020117026811 A KR1020117026811 A KR 1020117026811A KR 20117026811 A KR20117026811 A KR 20117026811A KR 20120022911 A KR20120022911 A KR 20120022911A
Authority
KR
South Korea
Prior art keywords
project
task
predecessor
collaboration
list
Prior art date
Application number
KR1020117026811A
Other languages
English (en)
Other versions
KR101661789B1 (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 KR20120022911A publication Critical patent/KR20120022911A/ko
Application granted granted Critical
Publication of KR101661789B1 publication Critical patent/KR101661789B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • 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
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • 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/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • 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)
  • Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Human Resources & Organizations (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Economics (AREA)
  • General Physics & Mathematics (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • Quality & Reliability (AREA)
  • Operations Research (AREA)
  • Software Systems (AREA)
  • Development Economics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Game Theory and Decision Science (AREA)
  • Educational Administration (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

클라이언트 컴퓨터와 서버 컴퓨터 사이에 양방향 동기의 동기 통과 중에 자기 참조 필드가 동기된다. 동기 동작이 수행될 때, 서버에 연관된 서버 태스크의 리스트 및 클라이언트에 연관된 프로젝트 태스크의 리스트가 로딩된다. 동기되는 각각의 태스크에 대해, 두 개의 리스트가 유지된다. 동기 중에, 프로젝트 태스크 데이터 또는 공동작업 태스크 데이터를 사용하는지를 판단하기 위해 비교가 수행된다. 프로젝트 태스크 데이터가 사용될 때, 프로젝트 선행자 리스트 내에 저장된 선행자 ID가 사용된다. 서버 태스크 데이터가 사용될 때, 서버 선행자 리스트 내에 저장된 선행자 ID가 사용된다.

Description

양방향 동기 중에 자기 참조 필드의 동기{SYNCHRONIZING SELF-REFERENCING FIELDS DURING TWO-WAY SYNCHRONIZATION}
태스크(task) 관리 애플리케이션 소프트웨어는 사용자에게 효율적이고 효과적인 방식으로 프로젝트(project)를 관리하는 능력을 제공한다. 프로젝트 관리자는 프로젝트를 태스크로 조직할 수 있고, 태스크를 특정 사용자에게 부여할 수 있으며, 태스크에 대해 자원을 할당할 수 있다. 태스크 관리 소프트웨어는 작업의 흐름을 제어할 수 있고, 상호관련 태스크를 연결시킬 수 있으며, 프로젝트 마감일이 만족되는 것을 보장하도록 도울 수 있다.
태스크 관리 정보는 상호관련 데이터를 공유하는 두 개 이상의 컴퓨터 시스템 상에 저장될 수 있다. 이들 시스템이 동일한 데이터로의 갱신을 허가할 때, 특히 상호관련 데이터가 순차적으로 관련된 태스크를 포함할 때, 충돌이 발생할 수 있다. 예를 들어, 하나의 시스템 상의 사용자가 태스크에 대한 시작일을 변경하면, 상호관련 태스크에 대한 시작일 및 종료일이 또한 변경될 수 있다.
이 요약은 발명을 실시하기 위한 구체적인 내용에서 추가로 후술되는 개념의 단순화된 형태로의 선택을 도입하기 위해 제공된다. 이 요약은 청구된 본 발명의 중요한 특성 또는 필수적인 특성을 식별하도록 의도되지 않으며 청구된 본 발명의 범위를 판단하는데 도움을 주기 위해 사용되도록 의도되지 않는다.
자기 참조 필드(self-referencing field)는 클라이언트 컴퓨터와 서버 컴퓨터 사이의 양방향 동기(two-way synchronization)의 동기 진행 중에 동기된다. 동기 동작이 수행될 때, 서버 상의 프로젝트에 연관된 공동작업 태스크의 리스트 및 클라이언트 상의 프로젝트에 연관된 프로젝트 태스크의 리스트가 로딩(load)된다. 동기되는 각각의 태스크에 대해, 프로젝트 선행자 리스트(project predecessor list) 및 공동작업 선행자 리스트(collaboration predecessor list)를 포함하는 두 개의 리스트가 유지된다. 동기 중에, 프로젝트 태스크 데이터 또는 공동작업 태스크 데이터를 사용하는지를 판단하기 위해 각각의 태스크에 대해 비교가 수행된다. 프로젝트 태스크 데이터가 사용될 때, 공동작업 선행자 리스트는 삭제되고 프로젝트 선행자 리스트는 상응하는 프로젝트 선행자 ID로 채워진다. 공동작업 태스크 데이터가 사용될 때, 프로젝트 선행자 리스트는 삭제되고 공동작업 선행자 리스트는 상응하는 공동작업 선행자 ID로 채워진다. 동기의 기록 시기 중에, 어떤 선행자 ID를 기록할지를 판단하기 위해 프로젝트 선행자 리스트 및 공동작업 선행자 리스트가 사용된다. 프로젝트 태스크가 기록되고 프로젝트 선행자 리스트가 비어 있지 않을 때, 프로젝트 선행자 리스트가 사용된다. 프로젝트 선행자 리스트가 비어 있고 공동작업 선행자 리스트가 비어 있지 않을 때, 공동작업 선행자 ID가 사용된다.
도 1은 컴퓨터에 대한 컴퓨터 아키텍처를 예시한다.
도 2는 자기 참조 필드를 동기시키기 위한 예시적인 동기 시스템을 도시한다.
도 3은 프로젝트 관리 시스템에서 태스크 관리 애플리케이션 소프트웨어를 작동시키는 예시적인 클라이언트 컴퓨터를 도시한다.
도 4는 자기 참조 필드를 동기시키기 위한 동기의 판독 시기 중의 프로세스를 도시한다.
도 5는 동기 동작의 비교 시기에 기초하여 선행자 리스트를 조정하기 위한 프로세스를 예시한다.
도 6은 동기 동작의 기록 시기 중에 자기 참조 필드를 동기시키기 위한 프로세스를 예시한다.
도 7은 클라이언트 컴퓨터 및 서버 컴퓨터 상의 상호관련 데이터들 사이에 충돌을 해결하기 위한 프로세스(700)를 도시한다.
도 8은 충돌 해결을 포함한 예시적인 동기 동작의 흐름도이다.
이제, 동일한 부호가 동일한 요소를 나타내는 도면을 참조하여, 다양한 실시예가 설명될 것이다. 특히, 도 1 및 상응하는 논의는 실시예가 구현될 수 있는 적절한 컴퓨팅 환경의 간단하고 일반적인 설명을 제공하도록 의도된다.
일반적으로, 프로그램 모듈은 루틴, 프로그램, 컴포넌트, 데이터 구조, 및 특정 태스크를 수행하거나 특정 추상 데이터 유형(abstract data type)을 구현하는 다른 유형의 구조를 포함한다. 휴대용 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그램 가능한 가전 제품, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함한 다른 컴퓨터 시스템 구성이 또한 사용될 수 있다. 통신 네트워크를 통해 연결된 원격 처리 장치에 의해 태스크가 수행되는 분산 컴퓨팅 환경(distributed computing environment)이 또한 사용될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 국소 및 원격 메모리 저장 장치 내에 위치될 수 있다.
이제 도 1을 참조하여, 다양한 실시예에 이용된 컴퓨터(100)에 대한 예시적인 컴퓨터 아키텍처가 설명될 것이다. 도 1에 도시된 컴퓨터 아키텍처는 데스트탑, 서버, 또는 이동 컴퓨터로서 구성될 수 있으며, 중앙 처리 장치(CPU)(5), 랜덤 액세스 메모리(RAM)(9)와 판독 전용 메모리(ROM)(10)를 포함하는 시스템 메모리(7), 및 메모리를 CPU(5)로 연결하는 시스템 버스(12)를 포함한다. 기동 중에서와 같이 컴퓨터 내의 요소들 사이에 정보를 전달하도록 돕는 기본적인 루틴을 포함하는 기본적인 입력/출력 시스템은 ROM(10) 내에 저장된다. 컴퓨터(100)는 운영 체제(16), 애플리케이션 프로그램(24) 및 다른 프로그램 모듈을 저장하기 위한 대용량 저장 장치(14)를 또한 포함하며, 이는 이하에서 보다 상세하게 설명될 것이다.
대용량 저장 장치(14)는 버스(12)에 접속된 대용량 저장 제어기(도시되지 않음)를 통해 CPU(5)에 접속된다. 대용량 저장 장치(14) 및 그에 연관된 컴퓨터 판독 가능한 매체는 컴퓨터(100)에 대한 비휘발성 저장소를 제공한다. 비록 여기에 포함된 컴퓨터 판독 가능한 매체의 설명이 하드 디스크 또는 CD-ROM 드라이브와 같은 대용량 저장 장치를 지칭하더라도, 컴퓨터 판독 가능한 매체는 컴퓨터(100)에 의해 접근될 수 있는 임의의 이용 가능한 매체일 수 있다.
예를 들어, 컴퓨터 판독 가능한 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 그에 제한되지 않는다. 컴퓨터 저장 매체는 컴퓨터 판독 가능한 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성인 제거 가능한 그리고 제거 가능하지 않은 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EPROM, EEPROM, 플래시 메모리 또는 다른 솔리드 스테이트(solid state) 메모리 기술, CD-ROM, DVD(digital versatile disk), 또는 다른 광학 저장소, 자기 카세트, 자기 테이프, 자기 디스크 저장소 또는 다른 자기 저장 장치, 또는 요구된 정보를 저장하기 위해 사용될 수 있으며 컴퓨터(100)에 의해 접근될 수 있는 임의의 다른 매체를 포함하지만, 그에 제한되지 않는다.
다양한 실시예에 따라, 컴퓨터(100)는 인터넷과 같은 네트워크(18)를 통해 원격 컴퓨터로의 논리적 접속을 사용한 네트워크 환경(networked environment)에서 동작한다. 컴퓨터(100)는 버스(12)에 접속된 네트워크 인터페이스 유닛(20)을 통해 네트워크(18)에 접속할 수 있다. 네트워크 접속은 무선 및/또는 유선일 수 있다. 다른 유형의 네트워크 및 원격 컴퓨터 시스템에 접속하기 위해 네트워크 인터페이스 유닛(20)이 또한 이용될 수 있다. 컴퓨터(100)는 키보드, 마우스 또는 전자 스타일러스(electronic stylus)(도 1에 도시되지 않음)를 포함한 복수의 다른 장치로부터 입력을 수신하고 처리하기 위한 입력/출력 제어기(22)를 또한 포함할 수 있다. 마찬가지로, 입력/출력 제어기(22)는 사용자 인터페이스(28)를 포함한 디스플레이 스크린, 프린터, 또는 다른 유형의 출력 장치로의 출력을 제공할 수 있다.
간단하게 전술된 바와 같이, 복수의 프로그램 모듈 및 데이터 파일은 워싱턴 레드몬드 소재의 마이크로소프트 코퍼레이션으로부터의 윈도우즈 비스타? 운영 체제와 같은 네트워크 퍼스널 컴퓨터의 동작을 제어하기에 적절한 운영 체제(16)를 포함한 컴퓨터(100)의 대용량 저장 장치(14) 및 RAM(9) 내에 저장될 수 있다. 대용량 저장 장치(14) 및 RAM(9)은 하나 이상의 프로그램 모듈을 또한 저장할 수 있다. 특히, 대용량 저장 장치(14) 및 RAM(9)은 하나 이상의 애플리케이션 프로그램(24)을 또한 저장할 수 있다. 애플리케이션 프로그램 중 하나는 마이크로소프트 프로젝트?와 같은 프로젝트 관리 애플리케이션(27)일 수 있다. 서버로서 구성될 때, 애플리케이션 프로그램 중 하나는 윈도우즈 쉐어포인트 서비스(Windows Sharepoint Services(WSS))와 같은 공동작업 프로그램일 수 있다.
사용자 인터페이스(User Interface(UI))(28)는 다른 애플리케이션 프로그램은 물론 서버 상에 유지된 프로젝트 관리 애플리케이션(27) 및 공동작업 애플리케이션에 상호 작용하는 시각적 방식을 사용자에게 제공하도록 설계된다. 예를 들어, UI(28)는 사용자가 편집하는 것을 선택할 수 있는 태스크의 리스트를 디스플레이하기 위해 사용될 수 있다. 또한, UI(28)는 태스크의 우선순위를 추가하거나 변경하기 위해 사용될 수 있다.
동기 애플리케이션(26)은 프로젝트 관리 애플리케이션을 작동시키는 클라이언트 컴퓨팅 장치와 공동작업 애플리케이션을 작동시키는 서버 컴퓨팅 장치 사이에 자기 참조 필드를 동기시키는 것을 포함한 동기 작동을 수행하도록 구성된다.
도 2는 자기 참조 필드를 동기시키기 위한 예시적인 동기 시스템(200)을 도시한다. 예시된 바와 같이, 시스템(200)은 클라이언트(201), 서버(204) 및 네트워크(206)를 포함한다. 오직 하나의 클라이언트 및 서버가 예시되지만, 시스템(200)은 더 많은 클라이언트 및/또는 서버를 포함할 수 있다.
대체로, 하나의 클라이언트 컴퓨터, 예를 들어 클라이언트 컴퓨터(201)는 프로젝트가 상호관련 태스크로 조직된 프로젝트 관리 애플리케이션 소프트웨어 프로그램(220)을 작동시킨다. 태스크 관리 애플리케이션 소프트웨어를 작동시키는 예시적인 프로젝트 관리 시스템은 워싱턴 레드몬드 소재의 마이크로소프트 코퍼레이션으로부터의 마이크로소프트 프로젝트 2007이다. 대체로, 서버 컴퓨터(204)는 역시 마이크로소프트 코퍼레이션으로부터의 윈도우즈 쉐어포인트 서비스(WSS)와 같은 공동작업 및 문서 관리 소프트웨어 프로그램(210)을 작동시킨다. 예시적인 클라이언트(201)는 서버(204) 상에 공동작업 애플리케이션을 통해 저장된 프로젝트 관리 태스크 리스트에 접근하기 위해 네트워크(206)를 가로질러 웹 서비스 및/또는 웹 브라우저를 사용할 수 있다.
예시적인 태스크 관리 애플리케이션은 많은 상호관련 태스크를 포함할 수 있다. 하나 이상의 태스크는 선행자 태스크에 대한 의존성을 포함할 수 있다. 예를 들어, 태스크 B는 태스크 A가 종료될 때까지 시작하는 것이 허가되지 않을 수 있다. 따라서, 태스크 A는 태스크 B에 대한 선행자이다. 마찬가지로, 태스크 E는 태스크 B, C 및 D가 완료될 때까지 시작하는 것이 허가되지 않을 수 있다. 따라서, 태스크 B, C 및 D는 태스크 E에 대한 선행자 태스크이다.
마이크로소프트 프로젝트 2007과 같은 태스크 관리 애플리케이션은 대체로 하나의 사람, 예를 들어 프로젝트 관리자에 의해 제어된다. 그러나, 팀 구성원들이 그들에게 부여된 태스크에 접근할 수 있으며 그들 태스크에 대한 프로젝트된 완료 날짜 및 퍼센트 완료 상태를 갱신하는 것이 바람직하다. WSS와 같은 온라인 공동작업 프로그램은 태스크 리스트가 서버 컴퓨터 상, 예를 들어 서버(204) 상에 저장되는 것을 허가하며, 따라서 사용자는, 예를 들어 클라이언트(201) 상의 사용자는 태스크 리스트에 접근할 수 있으며 적절할 때 그들에 대한 변경을 수행할 수 있다. 프로젝트 관리자 또는 팀 구성원에 의해 수행된 임의의 변경은 클라이언트와 서버 사이에 동기되어야 하며, 실제 충돌은 해결되어야 한다. 클라이언트와 서버 사이의 동기 중에, 각각의 태스크에 대한 자기 참조 선행자 ID(즉, 데이터가 다른 아이템을 가리키는 필드)는 또한 동기된다. 그러나, 대체로, 클라이언트에 연관된 선행자 ID는 서버 상의 공동작업 소프트웨어에 대한 선행자 ID와 부합하지 않는다. 이러한 예에서, 선행자 ID는 클라이언트(201)와 서버(204) 사이에 상이하다. 예를 들어, 서버 상의 공동작업 애플리케이션에 연관된 태스크에 대한 ID는 클라이언트 상의 프로젝트 관리 애플리케이션에 연관된 태스크에 대한 상응하는 ID와 상이하다.
동기 애플리케이션은 두 개의 선행자 리스트를 생성한다. 하나의 선행자 리스트는 프로젝트 선행자의 ID를 위한 것이며, 나머지 리스트는 공동작업 선행자를 위한 것이다. 동기의 비교 및 수정 단계 중에, 이들 리스트는 아이템 대 아이템 기반으로 삭제되고 오버라이팅(overwriting)될 수 있다. 동기의 기록 단계 중에, 이들 리스트는 어떤 데이터(즉, 프로젝트 태스크 데이터 또는 공동작업 태스크 데이터)를 기록할지를 판단하기 위해 조사된다. 동기 애플리케이션이 프로젝트 데이터를 지금 기록할 때, 프로젝트 선행자 리스트가 삭제되지 않는 한 프로젝트 선행자 리스트가 기록되며, 이 경우에 공동작업 선행자 리스트는 프로젝트 ID로 매핑된 다음에 기록된다. 동기 애플리케이션이 공동작업 데이트를 지금 기록할 때, 공동작업 선행자 리스트가 삭제되지 않는 한 공동작업 선행자 리스트가 기록되며, 이 경우에 프로젝트 선행자 리스트는 프로젝트 ID로 매핑된 다음에 기록된다. 두 개의 리스트를 유지하는 것은 클라이언트(201)와 서버(204) 사이에 단일 통과 동기(single-pass synchronization)를 수행하는데 도움이 된다.
일 실시예에 따라, 전술된 바와 같이, 클라이언트(201) 상의 프로젝트 관리 애플리케이션(220)과 서버(204) 상의 공동작업 애플리케이션(210)은 프로젝트 내의 태스크에 대한 선행자를 한정하기 위해 ID를 사용한다. 예를 들어, 프로젝트 관리 애플리케이션(220)에 대한 프로젝트는 ID 4 및 5를 갖는 두 개의 태스크를 가질 수 있으며, 태스크 5는 태스크 4의 선행자일 수 있다. 마찬가지로, 공동작업 애플리케이션(210)을 이용하여 저장된 상응하는 프로젝트는 태스크 4 및 5를 태스크 14 및 15로 저장할 수 있다. 프로젝트 관리 애플리케이션(220)과 공동작업 애플리케이션(210) 사이에 관련 태스크를 연관시키기 위해, 프로젝트 태스크 ID와 공동작업 태스크 ID 사이에 매핑이 유지된다. 예를 들어, 클라이언트(201) 상에서, 프로젝트 관리 애플리케이션(220)에 연관된 태스크 5는 그것이 공동작업 애플리케이션의 태스크 14에 동기된다는 것을 표시하는 필드로 매핑한다. 유사한 매핑이 서버(204) 상에 존재한다.
클라이언트(201)와 서버(204) 사이의 동기 동작 중에, 프로젝트 태스크 및 공동작업 태스크는 동기 애플리케이션(212)이 근본적인 데이터에 영향을 주지 않으면서 데이터를 비교하고 수정할 수 있도록 별개인 데이터 구조로 판독된다. 이들 데이터 구조는 전술된 두 개의 선행자 리스트(프로젝트 ID를 포함한 프로젝트 선행자 리스트 및 공동작업 ID를 포함한 공동작업 선행자 리스트)를 포함한다. 동기 동작의 "판독 시기" 중에, 프로젝트 관리 애플리케이션(220) 및 공동작업 애플리케이션(210)에 연관된 선행자는 그들 각각의 리스트로 판독된다. 예를 들어, 프로젝트 태스크는 프로젝트 선행자 리스트가 초기에 기재되게 하며, 공동작업 태스크는 공동작업 선행자 리스트가 초기에 기재되게 한다.
동기의 비교 시기 중에, 어떤 태스크가 병합되고 잠재적으로 오버라이팅되는지에 대한 판단이 수행된다. 예시적인 비교 시기에 대해, 도 7 및 도 8과 관련 논의를 참조한다. 다른 비교 알고리즘이 또한 이용될 수 있다. 선행자를 수용하기 위해, 비교 시기 중에 프로젝트 태스크가 "승리할" 때마다(즉, 공동작업 태스크 내의 데이터를 오버라이팅할 때마다), 공동작업 태스크의 공동작업 선행자 리스트는 삭제되며, 프로젝트 선행자 리스트는 상응하는 프로젝트 ID로 채워진다. 비교 시기 중에 공동작업 태스크가 "승리할" 때(즉, 프로젝트 태스크 내의 데이터를 오버라이팅할 때), 프로젝트 태스크의 프로젝트 선행자 리스트는 삭제되며, 공동작업 선행자 리스트는 상응하는 공동작업 ID로 채워진다.
기록 시기 중에, 이들 두 개의 선행자 리스트는 선행자 정보를 어떻게 기록할지를 판단하기 위해 사용될 수 있다. 프로젝트 태스크가 기록되고 프로젝트 선행자 리스트가 비어 있지 않으면, 그 선행자 리스트가 사용되는데, 왜냐하면 동기의 비교 시기 중에 프로젝트 아이템이 "승리했기" 때문이다. 그러나, 프로젝트 선행자 리스트가 비어 있고 공동작업 선행자 리스트가 비어 있지 않으면, 공동작업 선행자 리스트 ID가 사용되는데, 왜냐하면 비교 시기 중에 프로젝트 태스크가 "패했기" 때문이다. 전술된 바와 같이, 프로젝트 태스크 ID와 공동작업 태스크 ID 사이의 매핑은 클라이언트(201)로부터 서버(204)로의 ID를 서버(204)로부터 클라이언트(201)로의 ID로 매핑하기 위해 사용된다. 예를 들어, 공동작업 ID로부터 프로젝트 ID가 판단될 수 있는데, 왜냐하면 아이템이 이미 동기되었거나(따라서, 상응하는 프로젝트 ID를 이미 가지고 있거나) 또는 태스크가 프로젝트 관리 애플리케이션(220)에 대해 프로젝트 내에서 방금 생성되어서, 정확한 프로젝트 ID가 공동작업 ID에 기초하기 때문이다. 동기 중에 태스크가 삭제될 때, "기록" 시기 중에 이러한 삭제가 검출되며, 아이템이 삭제된 아이템에 대한 선행자를 갖고 있으면, 그 선행자는 기록되지 않는다. 또 다른 실시예에 따라, 비교 시기 중에 "패한" 리스트를 삭제하는 대신에, 선행자 리스트가 병합될 수 있으며, 이 경우에 두 개의 리스트가 사용된다.
도 3은 마이크로소프트 프로젝트 2007과 같은 프로젝트 관리 시스템 내에 태스크 관리 애플리케이션 소프트웨어를 작동시키는 예시적인 클라이언트 컴퓨터(300)를 도시한다. 예시적인 클라이언트 컴퓨터(300)는 예시적인 사용자 인터페이스 모듈(304) 및 예시적인 프로젝트 엔진 모듈(310)을 포함한다. 동기 모듈(312)은 예시적인 프로젝트 엔진 모듈(310) 내에 포함된다.
예시적인 사용자 인터페이스 모듈(304)은 사용자가 프로젝트 관리 시스템으로의 태스크, 자원 및 부여와 같은 프로젝트 실체를 입력하는 것을 허가한다. 그 실체는 대체로 테이블 내에 저장되며, 따라서 태스크에 대한 테이블, 자원에 대한 테이블 및 부여에 대한 테이블이 대체로 존재할 것이다. 태스크에 관련된 하나 이상의 속성이 프로젝트 태스크에 연관된다. 속성은 태스크 테이블 내의 컬럼에 상응한다. 일부 예시적인 속성은 명칭, 소유자, 시작일, 완료일, 프로젝트 지속기간 및 태스크 상태이다. 또한, 각각의 태스크는 그 태스크를 식별하기 위한 고유한 프로젝트 식별자를 갖는다.
사용자는 예시적인 프로젝트 관리 시스템 내에 이용 가능한 복수의 속성으로부터 속성을 선택할 수 있다. 예시적인 사용자 인터페이스 모듈(304)은 사용자가 이들 또는 이용 가능한 속성 중 하나 이상의 속성을 선택하게 하며 사용자가 그 속성을 태스크에 연관시키게 한다. 또한, 예시적인 사용자 인터페이스 모듈(304)은 사용자가 각각의 태스크에 대해 서버 컴퓨터 상에 이용 가능한 하나 이상의 속성을 선택하게 한다. 서버 속성은 대체로 명칭, 소유자, 시작일, 종료일, 프로젝트 지속기간 및 태스크 상태를 포함한다. 결과는 태스크 관리 시스템에 의해 모니터되는 각각의 태스크에 연관된 클라이언트 및 서버 속성 세트이다.
예시적인 프로젝트 엔진 모듈(310)은 프로젝트 관리 시스템을 작동시키는 소프트웨어 엔진을 제공한다. 하나 이상의 태스크가 주종 관계(parent/child relationship)로 다른 태스크에 연결될 수 있다. 하나 이상의 태스크는 다른 태스크와 선행자 또는 후행자 관계를 가질 수 있다. 태스크에 대해 시작일 또는 태스크 지속기간이 변경될 때, 예시적인 프로젝트 엔진 모듈(310)은 모든 연결된 태스크의 결과로서 생성된 시작일 및 종료일을 계산하며, 프로젝트 관리 시스템 내에서 그들 태스크에 대한 날짜를 갱신한다.
예시적인 동기 모듈(312)은 도 2에 예시된 클라이언트 컴퓨터, 예를 들어 클라이언트(201)와 서버 컴퓨터(204) 사이에 태스크의 동기를 제어한다. 또한, 동기 모듈(312)은 각각의 태스크에 대해 변경리스트 및 비트마스크를 포함할 수 있다. 변경리스트는 클라이언트 컴퓨터(201)와 서버 컴퓨터(204) 사이에 동기될 수 있는 각각의 태스크에 대한 속성의 리스트이다. 변경리스트는 사용자 인터페이스 모듈(304)을 통해 사용자에 의해 선택된 태스크에 대한 클라이언트(201) 및 서버(204) 속성에 상응한다. 비트마스크는 변경리스트 내의 각각의 속성에 대한 비트를 포함하는 데이터 구조이다. 예를 들어, 상응하는 속성이 클라이언트 컴퓨터(201) 상에서 변경될 때 비트마스크 내에 비트가 설정될 수 있다. 동기 모듈(312)은 어느 속성이 클라이언트 컴퓨터(201) 상에서 변경되어서 이들 속성이 서버 컴퓨터(204) 상의 상응하는 속성에 동기될 수 있는지를 판단하기 위해 비트마스크를 사용할 수 있다.
이제 도 4 내지 도 7을 참조하여, 프로젝트 애플리케이션과 공동작업 애플리케이션 사이에 자기 참조 필드를 동기시키기 위한 예시적인 프로세스가 설명된다.
여기에 제시된 루틴에 대한 논의를 읽을 때, 다양한 실시예의 논리 동작이 (1) 컴퓨팅 시스템 상에 작동하는 컴퓨터 구현된 작용 또는 프로그램 모듈의 시퀀스로서 그리고/또는 (2) 컴퓨팅 시스템 내의 상호접속된 기계 논리 회로 또는 회로 모듈로서 구현된다는 것이 이해되어야 한다. 구현은 본 발명을 구현하는 컴퓨팅 시스템의 성능 요건에 따라 달라지는 선택의 문제이다. 따라서, 여기에 설명된 실시예를 구성하는 예시된 논리 동작(logical operation)들은 동작, 구조 장치, 작용 또는 모듈로서 다양하게 지칭된다. 이들 동작, 구조 장치, 작용 및 모듈은 소프트웨어로, 펌웨어로, 특정 목적의 디지털 논리로 그리고 이들의 임의의 조합으로 구현될 수 있다.
도 4는 자기 참조 필드를 동기시키기 위한 동기의 판독 시기 중의 프로세스를 도시한다.
시작 동작 후에, 프로세스는 프로젝트 태스크 및 공동작업 태스크가 로딩되는 동작(410)으로 진행한다. 예를 들어, 프로젝트 관리 애플리케이션으로부터의 프로젝트 태스크는 클라이언트로부터 로딩되며, 공동작업 애플리케이션으로부터의 공동작업 태스크는 서버로부터 로딩된다.
동작(420)으로 이동하여, 태스크에 대해 두 개의 선행자 리스트가 생성된다. 일 실시예에 따라, 각각의 프로젝트 태스크에 대해, 프로젝트 선행자 리스트는 태스크의 선행자에 대한 프로젝트 ID를 포함하며, 초기에 비어 있는 공동작업 선행자 리스트는 태스크의 선행자에 대한 공동작업 ID를 포함한다.
동작(430)으로 이동하여, 공동작업 태스크에 대해 두 개의 선행자 리스트가 생성된다. 일 실시예에 따라, 서버는 태스크의 선행자에 대한 공동작업 ID를 포함하는 공동작업 선행자 리스트 및 태스크의 선행자에 대한 프로젝트 ID를 포함하는 초기에 비어 있는 프로젝트 선행자 리스트를 생성한다.
동작(440)으로 진행하여, 동기는 동기의 비교 시기로 이동하여, 그 지점에서 어떤 데이터(예를 들어, 프로젝트 태스크 데이터 또는 서버 태스크 데이터)를 기록할지에 대한 판단이 수행된다.
그런 다음, 프로세스는 끝 동작으로 진행하며, 다른 작용을 처리하는 단계로 되돌아간다.
도 5는 동기 동작의 비교 시기에 기초하여 선행자 리스트를 조정하기 위한 프로세스(500)를 예시한다.
시작 동작 후에, 프로세스는 충돌 해결(도 7 및 도 8과 예시적인 프로세스를 위한 관련 설명 참조)을 수행함으로써 어떤 태스크 데이터가 동기되어야 하는지에 대한 (즉, 어떤 태스크가 "승리하는지"에 대한) 판단이 수행되는 동작(510)으로 진행한다.
판단 동작(520)으로 진행하여, 태스크에 대해 프로젝트 데이터를 사용할 것인지 또는 태스크에 대해 공동작업 태스크를 사용할 것인지에 대한 판단이 수행된다.
프로젝트 태스크 데이터가 사용되어야 할 때, 프로세스는 공동작업 선행자 리스트가 삭제되는 동작(525)으로 이동한다. 동작(530)으로 이동하여, 프로젝트 선행자 ID가 프로젝트 선행자 리스트로 복사된다.
공동작업 태스크 데이터가 사용되어야 할 때, 프로세스는 프로젝트 선행자 리스트가 삭제되는 동작(540)으로 이동된다. 동작(545)으로 이동하여, 공동작업 선행자 ID가 프로젝트 선행자 리스트로 복사된다.
동작(550)으로 이동하여, 프로세스는 동기의 기록 시기(도 6 및 관련 논의 참조)로 이동한다.
그런 다음, 프로세스는 끝 동작으로 진행하며, 다른 작용을 처리하는 단계로 되돌아간다.
도 6은 동기 동작의 기록 시기 중에 자기 참조 필드를 동기시키기 위한 프로세스(600)를 예시한다.
시작 동작 후에, 프로세스는 클라이언트 상의 프로젝트 태스크가 동기되는지에 대한 판단이 수행되는 판단 동작(610)으로 진행한다.
프로젝트 태스크가 클라이언트 상에서 동기될 때, 동작은 프로젝트 선행자 리스트가 비어 있는지에 대한 판단이 수행되는 판단 동작(620)으로 이동한다.
프로젝트 태스크 리스트가 비어 있을 때, 프로세스는 공동작업 선행자 ID가 프로젝트 선행자 ID로 매핑되는 동작(625)으로 진행한다. 그런 다음, 프로세스는 프로젝트 선행자 ID가 기록되는 동작(630)으로 이동한다.
선행자 리스트가 비어 있지 않을 때, 프로세스는 프로젝트 선행자 ID가 기록되는 동작(630)으로 이동한다.
마찬가지로, 공동작업 태스크가 서버 상에서 동기될 때, 동작은 공동작업 선행자 리스트가 비어 있는지에 대한 판단이 수행되는 판단 동작(640)으로 이동한다.
공동작업 선행자 리스트가 비어 있을 때, 프로세스는 프로젝트 선행자 ID가 공동작업 선행자 ID로 매핑되는 동작(645)으로 진행한다. 그런 다음, 프로세스는 공동작업 선행자 ID가 기록되는 동작(650)으로 이동한다.
공동작업 선행자 리스트가 비어 있지 않을 때, 프로세스는 공동작업 선행자 ID가 기록되는 동작(650)으로 이동한다.
그런 다음, 프로세스는 끝 동작으로 진행하며, 다른 작용을 처리하는 단계로 되돌아간다.
도 7은 클라이언트 컴퓨터 및 서버 컴퓨터 상의 상호관련 데이터들 사이에 충돌을 해결하기 위한 프로세스(700)를 도시한다.
시작 동작 후에, 프로세스는 태스크 정보가 클라이언트 컴퓨터 상에 저장되는 동작(710)으로 이동한다. 태스크 정보는 클라이언트 컴퓨터 애플리케이션 프로그램을 통해, 대체로 프로젝트 관리 애플리케이션 프로그램을 통해 입력될 수 있으며, 하나 이상의 태스크 및 각각의 태스크에 연관된 하나 이상의 속성을 포함한다. 속성은 태스크의 명칭, 태스크의 시작일과 종료일, 태스크의 지속기간, 태스크의 우선순위 등과 같은 정보를 포함한다. 각각의 태스크는 그것을 고유한 클라이언트 컴퓨터 태스크 관리 애플리케이션 식별자에 연관시킨다. 고유한 클라이언트 컴퓨터 태스크 관리 애플리케이션 식별자는 동작(720)에서 클라이언트 상에 저장된다.
동작(730)으로 진행하여, 태스크 정보는 대체로 그것을 서버 컴퓨터 상에서 작동하는 문서 공유 및 공동작업 프로그램(document sharing and collaboration program)으로 공개함으로써 서버 컴퓨터로 발송된다. 태스크 정보가 서버 컴퓨터 상에 저장될 때, 서버 컴퓨터는 각각의 태스크에 대해 고유한 서버 컴퓨터 애플리케이션 식별자를 부여한다.
동작(740)으로 이동하여, 고유한 서버 컴퓨터 애플리케이션 식별자는 각각의 태스크에 대해 획득되며, 클라이언트 컴퓨터 상에 저장된다.
태스크가 서버 컴퓨터 상에 저장될 때, 태스크가 서버 컴퓨터 상에서 마지막으로 수정되었던 날짜 및 시간을 표시하는 타임스탬프(timestamp)가 또한 저장된다. 동작(750)에서, 태스크에 대한 타임스탬프가 서버 컴퓨터로부터 획득되며, 클라이언트 컴퓨터 상에 저장된다.
동작(760)으로 진행하여, 각각의 태스크에 대한 고유한 서버 컴퓨터 애플리케이션 식별자는 태스크에 대한 고유한 클라이언트 컴퓨터 태스크 관리 애플리케이션 식별자로 매핑되며, 그 매핑은 클라이언트 컴퓨터 상에 저장된다.
각각의 태스크가 클라이언트 컴퓨터 상에서 생성될 때, 변경리스트가 또한 생성된다. 변경리스트는 서버에 동기되어야 하는 태스크에 대한 속성을 식별한다. 비트마스크가 각각의 변경리스트에 대해 생성되며, 비트마스크 내의 각각의 비트는 동기되어야 하는 속성에 상응한다. 동작(770)에서, 각각의 태스크에 대한 비트마스크는 클라이언트 컴퓨터 상에 저장된다. 태스크가 클라이언트 컴퓨터 태스크 관리 애플리케이션을 통해 편집될 때, 하나 이상의 속성이 변경된다. 동작(780)에서, 비트는 변경된 각각의 속성에 대한 태스크에 대해 비트마스크 내에서 설정된다.
주기적으로, 특히 태스크가 클라이언트 컴퓨터 상에서 편집될 때, 클라이언트 컴퓨터는 이들 변경을 서버에 동기시키기 위해 동기 동작을 개시한다. 동기 동작은 동작(790)에서 개시된다.
도 8은 충돌 해결을 포함한 예시적인 동기 동작의 흐름도이다.
시작 동작 후에, 프로세스는 태스크 및 속성의 리스트가 서버 컴퓨터로부터 획득되는 동작(810)으로 진행한다. 판단 동작(815)에서, 서버 컴퓨터로부터 획득된 태스크 각각에 대해, 태스크에 대한 고유한 서버 컴퓨터 애플리케이션 식별자(공동작업 ID)가 태스크에 대한 고유한 클라이언트 컴퓨터 태스크 관리 애플리케이션 식별자(프로젝트 ID)로 매핑되는지에 대한 판단이 수행된다. 예를 들어, 태스크에 대한 프로젝트 ID가 태스크에 대한 공동작업 ID로 매핑되는지에 대한 판단이 수행된다. 태스크가 매핑하지 않으면, 동작(850)에서, 새로운 태스크가 클라이언트 컴퓨터 상에서 생성되며, 태스크에 대한 고유한 서버 컴퓨터 애플리케이션 식별자로 매핑된다.
태스크가 매핑하면, 동작(820)에서, 태스크가 클라이언트 컴퓨터 상에 존재하는지에 대한 판단이 수행된다. 태스크가 매핑하지만 클라이언트 컴퓨터 상에 존재하지 않으면, 그것은 태스크가 클라이언트 컴퓨터로부터 삭제되었다는 표시이다. 그러므로, 동작(855)에서, 태스크는 서버 컴퓨터가 클라이언트 컴퓨터와 일치하도록 서버 컴퓨터로부터 삭제된다.
태스크가 매핑하며 클라이언트 컴퓨터 상에 존재하면, 판단 동작(825)에서 태스크에 대해 비트마스크 내의 임의의 비트가 설정되는지에 대한 판단이 수행된다. 태스크에 대해 적어도 하나의 속성이 변경되었다는 것을 표시하는 태스크에 대해 비트마스크 내의 비트 중 임의의 비트가 설정되면, 판단 동작(830)에서 서버 컴퓨터가 마지막 클라이언트 컴퓨터 동기 전에 갱신되었는지에 대한 판단이 수행된다. 이러한 판단은 태스크가 서버 컴퓨터 상에서 마지막으로 수정되었던 날짜 및 시간과 클라이언트 컴퓨터가 동기 동작을 마지막으로 개시했었던 날짜 및 시간을 검사함으로써 수행된다. 태스크가 클라이언트 컴퓨터 상에서 갱신되었지만 서버 컴퓨터가 이러한 갱신된 정보를 아직 갖지 않는다는 것을 표시하면서, 태스크가 서버 컴퓨터 상에서 마지막으로 수정되었던 날짜 및 시간이 태스크가 클라이언트 컴퓨터 상에서 마지막으로 수정되었던 날짜 및 시간보다 이르면, 동작(860)에서, 갱신된 태스크 정보가 클라이언트 컴퓨터로 발송된다.
비트마스크 비트가 태스크에 대해 설정되고 서버 컴퓨터가 마지막 클라이언트 동기 후에 갱신되었으면, 클라이언트 컴퓨터는 비트마스크 비트가 설정된 모든 필드를 충돌로서 표시하며, 동작(835)에서, 충돌을 도시하는 대화 상자를 사용자에게 디스플레이한다. 동작(840)에서, 사용자는 충돌 속성 중 하나를 선택함으로써 충돌 해결을 수동으로 수행한다. 일 실시예에 따라, 이는 충돌을 디스플레이하는 대화 상자를 통해 수행된다.
충돌 해결이 태스크에 대해 컴퓨팅될 때 또는 충돌이 없는 경우에 동작(850, 855 또는 860)이 완료되었을 때, 제어는 동작(845)로 진행하여 다음 태스크를 점검하고, 논의된 바와 같이 동작(815)으로 다시 진행한다. 해결을 위해 사용자에게 제시된 충돌을 최소화하면서, 임의의 이행성 변경(transitive change)이 태스크 관리 애플리케이션에 의해 자동적으로 갱신된다.
전술된 상세한 설명, 예 및 데이터는 본 발명의 구성의 제조 및 사용의 완전한 설명을 제공한다. 본 발명의 많은 실시예가 본 발명의 사상 및 범위를 벗어나지 않으면서 생성될 수 있으므로, 본 발명은 이하에 첨부된 특허청구범위에 속한다.

Claims (15)

  1. 컴퓨터의 프로세서 상에서 실행되는, 프로젝트 관리 애플리케이션과 공동작업 애플리케이션 사이의 자기 참조 필드(self-referencing fields) 동기화 방법에 있어서,
    프로젝트에 대한 프로젝트 태스크를 클라이언트 컴퓨팅 장치 상에 로딩하는 단계(410),
    상기 프로젝트에 대한 공동작업 태스크를 서버 컴퓨팅 장치 상에 로딩하는 단계(410),
    각각의 프로젝트 태스크에 대한 프로젝트 선행자 리스트(project predecessor list)를 생성하는 단계(420),
    각각의 공동작업 태스크에 대한 공동작업 선행자 리스트를 생성하는 단계(430),
    각각의 프로젝트 태스크 및 상응하는 공동작업 태스크에 대해, 충돌 해결(conflict resolution)을 수행함으로써 프로젝트 태스크 데이터를 사용할 때와 공동작업 태스크 데이터를 사용할 때를 판단하는 단계(510), 및
    기록을 위해 상기 프로젝트 선행자 리스트를 선택할 때와 상기 공동작업 선행자 리스트를 선택할 때를 판단하기 위해 상기 프로젝트 선행자 리스트에 액세스(620)하고 상기 공동작업 선행자 리스트에 액세스하는 단계(640)를 포함하는
    방법.
  2. 제 1 항에 있어서,
    상기 프로젝트 태스크 데이터가 사용되어야 할 때 상기 공동작업 선행자 리스트를 삭제하는 단계(525)를 더 포함하는
    방법.
  3. 제 2 항에 있어서,
    상기 공동작업 태스크 데이터가 사용되어야 할 때 상기 프로젝트 선행자 리스트를 삭제하는 단계(540)를 더 포함하는
    방법.
  4. 제 3 항에 있어서,
    상기 공동작업 선행자 리스트가 삭제될 때 상기 프로젝트 선행자 리스트를 기록하며(630), 상기 프로젝트 선행자 리스트가 삭제될 때 상기 공동작업 선행자 리스트를 기록하는 단계(650)를 더 포함하는
    방법.
  5. 제 2 항에 있어서,
    상기 공동작업 선행자 리스트가 삭제될 때 상기 프로젝트 선행자 식별자를 복사하며(530), 상기 프로젝트 선행자 리스트가 삭제될 때 상기 공동작업 선행자 식별자를 복사하는 단계(545)를 더 포함하는
    방법.
  6. 제 3 항에 있어서,
    상기 공동작업 선행자 식별자와 상기 프로젝트 선행자 식별자 사이에 매핑을 수행하는 단계(625, 645)를 더 포함하는
    방법.
  7. 제 6 항에 있어서,
    어떤 리스트가 삭제되는지에 기초하여 상기 매핑을 판단하는 단계(625, 645)를 더 포함하는
    방법.
  8. 클라이언트 컴퓨팅 장치 상의 태스크 관리 애플리케이션과 서버 컴퓨팅 장치 상의 공동작업 애플리케이션의 태스크에 연관된 자기 참조 식별자를 동기시키기 위한 컴퓨터 실행 가능한 명령어를 갖는 컴퓨터 판독 가능한 저장 매체에 있어서,
    클라이언트와 서버 사이에 태스크를 포함하는 프로젝트에 대한 프로젝트 데이터를 동기시키기 위해 동기 세션을 개시하는 단계(308),
    프로젝트에 대한 태스크를 로딩하며(410), 각각의 태스크에 대해, 프로젝트 선행자 리스트 및 공동작업 선행자 리스트를 생성하는 단계(420, 430)?, 상기 프로젝트 선행자 리스트는 상기 프로젝트 태스크가 선행자를 가질 때 적어도 하나의 프로젝트 선행자 식별자를 포함하며, 상기 공동작업 선행자 리스트는 상기 공동작업 태스크가 선행자를 가질 때 적어도 하나의 공동작업 선행자 식별자를 포함함?,
    각각의 태스크를 동기시킬 때, 프로젝트 태스크 데이터를 사용할 때 및 공동작업 태스크 데이터를 사용할 때를 판단하는 단계(520), 및
    상기 동기의 기록 시기(write phase) 중에, 프로젝트 태스크 데이터가 사용될 때 상기 프로젝트 선행자 리스트를 기록하며, 공동작업 태스크 데이터가 사용될 때 상기 공동작업 선행자 리스트를 기록하는 단계(550)를 포함하는
    컴퓨터 판독 가능한 저장 매체.
  9. 제 8 항에 있어서,
    상기 프로젝트에 대한 태스크를 로딩하는 단계는 상기 서버로부터 공동작업 태스크를 로딩하는 단계와 상기 클라이언트로부터 프로젝트 태스크를 로딩하는 단계(410)를 포함하는
    컴퓨터 판독 가능한 저장 매체.
  10. 제 9 항에 있어서,
    프로젝트 데이터가 사용될 때 상기 공동작업 선행자 리스트를 삭제하는 단계(525) 및 상기 프로젝트 데이터가 사용될 때 상기 프로젝트 선행자 리스트를 삭제하는 단계(540)를 더 포함하는
    컴퓨터 판독 가능한 저장 매체.
  11. 제 10 항에 있어서,
    상기 삭제되지 않은 선행자 리스트 내의 임의의 식별자를 상기 삭제된 리스트 내의 상응하는 식별자로 매핑하는 단계, 및 어떤 선행자 리스트가 삭제되는지에 기초하여 어떤 선행자 리스트를 기록할지를 판단하는 단계를 더 포함하는
    컴퓨터 판독 가능한 저장 매체.
  12. 클라이언트와 서버 사이의 동기의 단일 진행 중에 자기 참조 필드를 동기시키기 위한 시스템에 있어서,
    프로세서(5) 및 컴퓨터 판독 가능한 매체(14);
    상기 컴퓨터 판독 가능한 매체 상에 저장되며 상기 프로세서 상에서 실행하는 운영 환경(16);
    클라이언트 상에서 동작하는 프로젝트 관리 애플리케이션(27);
    서버 상에서 동작하는 동기 애플리케이션(26);
    동기 모듈을 포함하되,
    상기 동기 모듈은
    상기 클라이언트와 상기 서버 사이에 태스크를 포함하는 프로젝트에 대한 프로젝트 데이터를 동기시키기 위해 동기 세션을 개시하는 단계(308),
    프로젝트에 대한 태스크를 로딩하며(410), 각각의 태스크에 대해, 프로젝트 선행자 리스트 및 공동작업 선행자 리스트를 생성하는 단계(420, 430)?, 상기 프로젝트 선행자 리스트는 상기 프로젝트 태스크가 선행자를 가질 때 적어도 하나의 프로젝트 선행자 식별자를 포함하고, 상기 공동작업 선행자 리스트는 상기 공동작업 태스크가 선행자를 가질 때 적어도 하나의 공동작업 선행자 식별자를 포함하며, 상기 프로젝트에 대한 태스크를 로딩하는 것은 상기 서버로부터 공동작업 태스크를 로딩하는 것과 상기 클라이언트로부터 프로젝트 태스크를 로딩하는 것을 포함함?,
    각각의 태스크를 동기시킬 때, 프로젝트 태스크 데이터를 사용할 때 및 공동작업 태스크 데이터를 사용할 때를 판단하는 단계(520), 및
    프로젝트 태스크 데이터가 사용될 때 상기 프로젝트 선행자 리스트를 기록하며(630), 공동작업 태스크 데이터가 사용되어야 할 때 상기 공동작업 선행자 리스트를 기록하는 단계(650)를 수행하도록 구성되는
    시스템.
  13. 제 12 항에 있어서,
    상기 동기 모듈은 프로젝트 태스크 데이터가 사용되어야 할 때 상기 공동작업 선행자 리스트를 삭제하는 단계(525), 및 상기 프로젝트 태스크 데이터가 사용되어야 할 때 상기 프로젝트 선행자 리스트를 삭제하는 단계(540)를 더 수행하는
    시스템.
  14. 제 13 항에 있어서,
    상기 동기 모듈은 상기 삭제되지 않은 선행자 리스트 내의 임의의 식별자를 상기 삭제된 리스트 내의 상응하는 식별자로 매핑하는 단계(625, 645)를 더 수행하는
    시스템.
  15. 제 12 항에 있어서,
    상기 동기 모듈은 어떤 선행자 리스트가 삭제되는지에 기초하여 어떤 선행자 리스트를 기록할지를 판단하는 단계, 및 태스크에 대한 상기 선행자 식별자를 상기 클라이언트 상에 기록하며 상기 선행자 식별자를 상기 서버에 기록하는 단계(630, 650)를 더 수행하는
    시스템.
KR1020117026811A 2009-05-12 2010-05-10 양방향 동기 중에 자기 참조 필드의 동기 KR101661789B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/464,257 2009-05-12
US12/464,257 US8019813B2 (en) 2009-05-12 2009-05-12 Synchronizing self-referencing fields during two-way synchronization
PCT/US2010/034279 WO2010132378A2 (en) 2009-05-12 2010-05-10 Synchronizing self-referencing fields during two-way synchronization

Publications (2)

Publication Number Publication Date
KR20120022911A true KR20120022911A (ko) 2012-03-12
KR101661789B1 KR101661789B1 (ko) 2016-09-30

Family

ID=43069378

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117026811A KR101661789B1 (ko) 2009-05-12 2010-05-10 양방향 동기 중에 자기 참조 필드의 동기

Country Status (6)

Country Link
US (1) US8019813B2 (ko)
EP (1) EP2430561A2 (ko)
JP (1) JP2012527048A (ko)
KR (1) KR101661789B1 (ko)
CN (1) CN102422276B (ko)
WO (1) WO2010132378A2 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8316371B2 (en) * 2009-04-09 2012-11-20 Mindjet Llc Task hierarchy in an event-driven communication system
US9641564B2 (en) * 2009-05-14 2017-05-02 Qualcomm Incorporated Maintaining controllee information in collaborative sessions
US9641567B2 (en) 2009-05-14 2017-05-02 Qualcomm Incorporated Controlling media and informing controller status in collaborative sessions
US8667033B1 (en) 2011-05-14 2014-03-04 Gopivotal, Inc. Persistent file system objects for management of databases
GB2520931A (en) * 2013-11-29 2015-06-10 Togeva Ltd A system for managing communications with a plurality of mobile devices
US20170230466A1 (en) * 2016-02-05 2017-08-10 Prysm, Inc. Cross Platform Annotation Syncing

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7496886B2 (en) * 2004-09-30 2009-02-24 Microsoft Corporation Method and system for providing cross project commitments

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7007003B1 (en) 1998-12-04 2006-02-28 Intellisync Corporation Notification protocol for establishing synchronization mode for use in synchronizing databases
US6792085B1 (en) 1999-09-10 2004-09-14 Comdial Corporation System and method for unified messaging with message replication and synchronization
AU2001296866A1 (en) * 2000-09-05 2002-03-22 Zaplet, Inc. Methods and apparatus providing electronic messages that are linked and aggregated
US8463744B2 (en) 2001-01-03 2013-06-11 International Business Machines Corporation Method and system for synchronizing data
US7076567B1 (en) 2002-04-25 2006-07-11 Oracle International Corporation Simplified application object data synchronization for optimized data storage
US7730014B2 (en) * 2003-03-25 2010-06-01 Hartenstein Mark A Systems and methods for managing affiliations
US8005710B2 (en) * 2004-09-28 2011-08-23 Microsoft Corporation Methods and systems for caching and synchronizing project data
US20060242204A1 (en) 2005-04-22 2006-10-26 Microsoft Corporation Sync manager conflict resolution
US7383393B2 (en) * 2005-10-28 2008-06-03 Freescale Semiconductor, Inc. System and method for cooperative prefetching
CN101005428A (zh) 2006-01-19 2007-07-25 华为技术有限公司 一种检测与解决数据同步冲突的实现方法
US7983249B2 (en) 2007-01-23 2011-07-19 Oracle America, Inc. Enterprise web service data to mobile device synchronization
US8135635B2 (en) * 2008-10-16 2012-03-13 Intuit Inc. System and method for time tracking on a mobile computing device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7496886B2 (en) * 2004-09-30 2009-02-24 Microsoft Corporation Method and system for providing cross project commitments

Also Published As

Publication number Publication date
WO2010132378A3 (en) 2011-02-17
CN102422276A (zh) 2012-04-18
US8019813B2 (en) 2011-09-13
CN102422276B (zh) 2014-03-19
JP2012527048A (ja) 2012-11-01
WO2010132378A2 (en) 2010-11-18
KR101661789B1 (ko) 2016-09-30
EP2430561A2 (en) 2012-03-21
US20100293222A1 (en) 2010-11-18

Similar Documents

Publication Publication Date Title
US11803516B2 (en) System and method for selective synchronization
EP3707615B1 (en) Violation resolution in client synchronization
KR101076851B1 (ko) 복제된 파일들을 위한 복수의 파일 상태 관리 방법
US7933871B2 (en) Discovering and updating templates
US7966426B2 (en) Offline synchronization capability for client application
JP5813499B2 (ja) ドキュメントの同時共同レビュー
US20070239725A1 (en) Active cache offline access and management of project files
JP2008305094A (ja) 文書管理方法及びその装置
US20090327405A1 (en) Enhanced Client And Server Systems for Operating Collaboratively Within Shared Workspaces
US8515729B2 (en) User translated sites after provisioning
US7698280B2 (en) Active cache offline sharing of project files
US7818293B2 (en) Method and system to synchronize updated versions of a document edited on a collaborative site that are under document management control
KR101661789B1 (ko) 양방향 동기 중에 자기 참조 필드의 동기
JP2006099730A (ja) プロジェクトデータのキャッシュおよび同期をとる方法およびシステム
US20100131587A1 (en) Minimizing Conflicts When Synchronizing Interrelated Data Between Two Systems
US8346869B2 (en) Granular data synchronization for editing multiple data objects
AU2011224001B2 (en) Content asset manager
US20070130183A1 (en) Methods, systems, and computer program products for associating computer-system-accessible resources using behaviors
JP2011192078A (ja) タスク管理装置及びタスク管理プログラム
US9460179B1 (en) Systems and methods for providing adaptive visualization of synchronization of multiple files
RU2534810C2 (ru) Технологии для управления постоянными массивами документов
JP2006127126A (ja) 知識共有システム及び情報公開制御方法
JP2005092544A (ja) ワークフロー世代管理処理方法,ワークフロー処理システムおよびワークフロー制御プログラム
JP2004157883A (ja) Webサイトコンテンツ管理システム及びプログラム
JP2009087174A (ja) リソース操作履歴管理システム

Legal Events

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

Payment date: 20190829

Year of fee payment: 4