KR101213923B1 - 프로젝트 데이타를 캐시 및 동기화하기 위한 방법 및시스템 - Google Patents

프로젝트 데이타를 캐시 및 동기화하기 위한 방법 및시스템 Download PDF

Info

Publication number
KR101213923B1
KR101213923B1 KR1020050057143A KR20050057143A KR101213923B1 KR 101213923 B1 KR101213923 B1 KR 101213923B1 KR 1020050057143 A KR1020050057143 A KR 1020050057143A KR 20050057143 A KR20050057143 A KR 20050057143A KR 101213923 B1 KR101213923 B1 KR 101213923B1
Authority
KR
South Korea
Prior art keywords
project
change
server
memory
schedule
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR1020050057143A
Other languages
English (en)
Other versions
KR20060048712A (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 KR20060048712A publication Critical patent/KR20060048712A/ko
Application granted granted Critical
Publication of KR101213923B1 publication Critical patent/KR101213923B1/ko
Assigned to 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 reassignment 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 권리의 전부이전등록 Assignors: 마이크로소프트 코포레이션
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06Q—INFORMATION 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/00—Administration; Management
    • G06Q10/10—Office automation; Time management
    • G06Q10/103—Workflow collaboration or project management
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00—Digital computers in general; Data processing equipment in general
    • G06F15/16—Combinations 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
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21—Design, administration or maintenance of databases
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06Q—INFORMATION 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/00—Administration; Management
    • G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063—Operations research, analysis or management

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Theoretical Computer Science (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Quality & Reliability (AREA)
  • Operations Research (AREA)
  • Marketing (AREA)
  • Data Mining & Analysis (AREA)
  • Tourism & Hospitality (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Game Theory and Decision Science (AREA)
  • Educational Administration (AREA)
  • Development Economics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

프로젝트 관리 애플리케이션에서 프로젝트 데이타를 지능적으로 관리하기 위한 방법 및 시스템이 제공된다. 본 발명의 다양한 측면들에 따르면, 프로젝트 관리 데이타가 하드 디스크 캐시와 같은 클라이언트 컴퓨터의 로컬 캐시에 로드 및 저장될 수 있다. 본 발명은 또한 로드 및 저장 시간 동안 프로젝트 서버로부터 다운로드된 그리고 그로 송신된 데이타의 크기를 줄이기 위한 메카니즘을 제공한다.
프로젝트 관리, 프로젝트 관리 애플리케이션, 데이타 관리, 캐시, 동기화

Description

프로젝트 데이타를 캐시 및 동기화하기 위한 방법 및 시스템{METHODS AND SYSTEMS FOR CACHING AND SYNCHRONIZING PROJECT DATA}
도 1은 본 발명의 실시예들을 위한 예시적인 컴퓨팅 시스템.
도 2는 본 발명의 실시예들에 따라 프로젝트 서버/데이타베이스와 통신하는 부모 프로젝트와 하나 이상의 자식 서브-프로젝트들의 소유자들/관리자들 사이의 상호관계를 도시하는 분산 컴퓨팅 환경의 간략화된 블럭도.
도 3은 본 발명의 일실시예에 따른 흐름도.
도 4는 본 발명의 일실시예에 따른 다른 흐름도.
도 5는 본 발명의 일실시예에 따른 또 다른 흐름도.
<도면의 주요부분에 대한 부호의 설명>
102: CPU
104: 시스템 메모리
106: RAM
108: ROM
112: 대용량 저장 장치
113: 캐시
114: 운영 체계
115: 캐시 관리자
116: 애플리케이션 프로그램
118: TCP/IP 네트워크
120: 네트워크 인터페이스 유닛
122: 입력/출력 콘트롤러
124: 전자 우편 애플리케이션
125: 워드 프로세싱 애플리케이션
126: 프로젝트 관리 애플리케이션
210: 프로젝트 서버/데이타베이스
215: 웹 서비스 인터페이스
250: 인터넷/인트라넷
본 발명은 일반적으로 프로젝트 관리 방법 및 시스템에 관한 것이다. 보다 구체적으로, 본 발명은 프로젝트 관리 애플리케이션을 사용할 때 프로젝트 데이타를 지능적으로 관리하기 위한 방법 및 시스템에 관한 것이다.
컴퓨터 시대의 도래로, 컴퓨터와 소프트웨어 사용자들은 기록, 계산, 정리, 프리젠테이션 준비, 전자 우편 송수신, 음악 작곡 등을 돕는 사용자에게 편리한 소 프트웨어 애플리케이션에 점점 익숙하게 되었다. 예를 들어, 현대의 워드 프로세싱 애플리케이션은 사용자들이 다양한 유용한 문서들을 작성 및 편집할 수 있도록 한다. 다른 예로서, 현대의 프로젝트 관리 애플리케이션은 사용자들이 다양한 프로젝트와 관련된 작업, 자원 및 노동을 조직화하고 관리하기 위한 프로젝트 관리 스케줄을 생성하도록 한다.
수동 및 컴퓨터화된 프로젝트 관리 시스템은 관리자들과 기획자들이 주어진 프로젝트를 완수하기 위하여 필요한 작업, 자원 및 스케줄을 조직화하고 기획하도록 한다. 대부분의 프로젝트에서, 많은 의존성과 제약이 전체 프로젝트와 전체 프로젝트를 구성하는 서브-프로젝트들의 타이밍과 완수를 지시한다. 예를 들어, 가옥 건축 프로젝트에서, 건식벽에 관한 서브-프로젝트는 전형적으로 전기적 작업이 완성될 때까지는 시작하지 않는다. 그리고, 많은 서브-프로젝트들은 노동과 자원의 가용성에 의한 제약을 받을 수 있다. 프로젝트 관리 소프트웨어 애플리케이션은 프로젝트 관리 스케줄을 생성 및 자동화하도록 개발되어 왔다. 이러한 많은 시스템으로, 전체 프로젝트를 구성하는 작업이나 서브-프로젝트들이 간트 차트(Gantt Charts)와 같은 스케줄링 차트에 제시되어, 전체 프로젝트를 구성하는 주어진 시점 및 관련 작업에 대한 개시일과 종료일을 보여주고 프로젝트를 구성하는 시점과 작업에 관련하여 이용된 자원 및 제약에 관한 정보를 제공한다.
현재, 일부 프로젝트 관리 소프트웨어 애플리케이션들은 프로젝트를 관리하기 위해 클라이언트/서버 아키텍쳐를 이용한다. 이러한 많은 애플리케이션들에서, 서버는 프로젝트 관련 데이타의 대부분을 저장하는데 사용한다. 즉, 대부분의 프 로젝트 데이타는 서버에 보유되어, 다수의 사용자들이 액세스할 수 있도록 한다. 어떤 경우, 서버 상의 데이타의 크기가 매우 클 수 있다. 전형적으로, 모든 데이타는 사용자가 프로젝트를 저장하거나 로드할 때 서버에 보내지거나 서버로부터 불러들여진다. 이러한 문제들은 대량의 데이타를 서버로 그리고 서버로부터 저장 또는 검색하려고 할 때 주요한 문제점이 되는 경향이 있다. 다수의 클라이언트들이 서버에 접속하여 저장 및 로드 동작을 할 때 부하 및 레이턴시 문제가 악화될 수 있다. 또한, 서버로부터 대량의 데이타를 로드/저장하려고 할 때, 효율이 감소하고 비용이 증가하므로, 이는 매우 부담이 될 수 있다. 이러한 성능 문제점들은 클라이언트가 저대역폭 WAN 접속을 통해 서버에 접속되어 있을 때 특히 심각한 것이 될 수 있다.
<발명의 개요>
본 발명의 실시예들은 프로젝트 관리 애플리케이션을 사용하여 데이타를 지능적으로 캐시 및 동기화하여 프로젝트 데이타를 관리하기 위한 방법 및 시스템을 제공함으로써 이상의 문제점과 기타의 문제점들을 해결한다. 본 발명의 일실시예는, 프로젝트 데이타를 포함하는 프로젝트 스케줄을 생성하고, 프로젝트 스케줄에 대한 변경을 모니터링하고, 모니터링된 변경에 따라 임계값이 만족되는지를 판정함으로써 프로젝트 관리 애플리케이션의 데이타를 관리하기 위한 방법을 제공한다. 본 발명의 다른 실시예는, 프로젝트와 관련된 프로젝트 데이타를 수신하고, 수신된 프로젝트 데이타와 저장된 프로젝트 데이타를 비교함으로써 데이타의 차이를 결정하고, 판정된 차이에 기초하여 프로젝트 내의 프로젝트 데이타를 갱신함으로써 프 로젝트 관리 애플리케이션의 프로젝트 데이타를 관리하기 위한 방법을 제공한다. 본 발명의 또 다른 실시예는 프로젝트 데이타를 포함하는 프로젝트를 요청하고, 프로젝트와 관련된 제1 버전 스탬프를 송신하고, 제1 버전 스탬프 및 제2 버전 스탬프와 관련된 데이타의 비교에 기초하여 프로젝트 데이타를 수신함으로써 프로젝트 관리 애플리케이션의 프로젝트 데이타를 관리하기 위한 방법을 제공한다.
본 발명을 특징짓는 이상과 기타의 특징들과 장점들은 이하의 상세한 설명을 탐독하고 관련 도면들을 검토함으로써 명백해질 것이다. 이상의 일반적인 설명과 이하의 상세한 설명은 모두 예시적이고 설명에 도움을 주는 것일 뿐이며 청구된 본 발명을 제한하는 것이 아니라는 것을 이해해야 한다.
이상 간략히 기술한 바와 같이, 본 발명의 실시예들은 프로젝트 관리 애플리케이션을 사용할 때 프로젝트 데이타를 캐시하기 위한 방법 및 시스템에 관한 것이다. 이 방법 및 시스템은 프로그램 관리 애플리케이션을 사용하여 프로젝트 데이타를 저장하는데 클라이언트 컴퓨터의 로컬 캐시를 이용한다. 사용자가 프로젝트 서버/데이타베이스로부터 데이타를 저장 또는 로드하기를 원할 때, 본 발명은 위에서 기술한 부하 및 레이턴시 문제를 회피하는데 도움이 된다. 또한, 본 발명은 사용자가 프로젝트 서버/데이타베이스에 접속될 필요 없이 프로젝트 데이타를 생성 및/또는 편집할 수 있도록 한다.
이하의 상세한 설명에서는, 본 명세서의 부분을 형성하는 첨부 도면들을 참조하며, 여기서는 특정 실시예들이나 예들이 예시적인 방식으로 도시된다. 이러한 실시예들은 결합될 수 있으며, 다른 실시예들이 이용될 수도 있고, 본 발명의 사상이나 범위를 벗어나지 않는 한도에서 구조적 변경이 가해질 수 있다. 이하의 상세한 설명은 따라서 제한적인 의미로 취급되어서는 안되며 본 발명의 범위는 첨부된 청구항들과 그 균등물들에 의해 정의된다.
동작 환경
이제 도면들을 참조하여, 본 발명의 측면들과 예시적인 동작 환경이 기술될 것인데, 여러 도면들을 통해 유사한 참조번호는 유사한 구성요소를 나타낸다. 도 1과 이하의 논의는 본 발명이 구현될 수 있는 적절한 컴퓨팅 환경의 간략하고, 일반적인 기술을 제공하려는 것이다. 본 발명은 개인용 컴퓨터의 운영 체계 상에서 구동하는 애플리케이션 프로그램과 함께 실행되는 프로그램 모듈의 일반적인 콘텍스트로 기술될 것이지만, 본 기술분야의 숙련자라면 본 발명이 다른 프로그램 모듈과 조합하여 구현될 수도 있다는 것을 인식할 것이다.
일반적으로, 프로그램 모듈에는 루틴, 프로그램, 콤포넌트, 데이타 구조, 및 특정 작업을 수행하거나 특정 추상 데이타 타입을 구현하는 기타 형태의 구조들이 포함된다. 또한, 본 기술분야의 숙련자라면 본 발명이 휴대용 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그램가능한 소비자 전자장치, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 기타의 컴퓨터 시스템 구성으로 실시될 수 있다는 것을 알 것이다. 본 발명은 또한 통신 네트워크를 통해 링크된 원격 프로세싱 장치에 의해 작업이 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 컴퓨터 저장 장치 모두에 위치할 수 있다.
이제 도 1을 참조하여, 본 발명의 다양한 실시예들을 실시하기 위한 개인용 컴퓨터(100)에 대한 예시적인 컴퓨터 아키텍쳐가 설명될 것이다. 도 1에 도시된 컴퓨터 아키텍쳐는 중앙 처리 장치(102)("CPU"), 랜덤 액세스 메모리(106)("RAM")와 판독 전용 메모리(108)("ROM")를 포함하는 시스템 메모리(104), 및 메모리를 CPU(102)에 결합시키는 시스템 버스(110)를 포함하는 기존의 개인용 컴퓨터를 도시한다. 시동 동안 등에 컴퓨터 내의 구성요소들 간에 정보를 전달하는 것을 돕는 기본적인 루틴들을 포함하는 BIOS(basic input/output system)은 ROM(108)에 저장된다. 개인용 컴퓨터(100)는 또한 운영 체계(114), 애플리케이션 프로그램(116)과 같은 애플리케이션 프로그램들, 및 데이타를 저장하기 위한 대용량 저장 장치(112)를 포함한다.
대용량 저장 장치(112)는 버스(110)에 접속된 대용량 저장 콘트롤러(도시되지 않음)를 통해 CPU(102)에 접속된다. 대용량 저장 장치(112)와 관련 컴퓨터 판독가능한 매체는 개인용 컴퓨터(100)에 대해 비휘발성 저장을 제공한다. 본 발명의 실시예들에 따르면, 대용량 저장 장치(112)는 로컬 또는 클라이언트 캐시(113)를 갖는 하드 디스크를 포함한다. 이하에 기술되는 바와 같이, 컴퓨터(100)는 또한 캐시(113)로 그리고 캐시(113)로부터 동작들을 저장 및/또는 로드하는 것을 관리하기 위한 캐시 관리자 애플리케이션(115)을 포함한다. 여기 포함된 컴퓨터 판독가능한 매체에 관한 기술이 하드 디스크나 CD-ROM 드라이브와 같은 대용량 저장 장치를 지칭하고 있지만, 본 기술분야의 숙련자라면 컴퓨터 판독가능한 매체는 개 인용 컴퓨터(100)에 의해 액세스될 수 있는 임의의 이용가능한 매체가 될 수 있다는 것을 알아야 한다.
이에 한정되는 것은 아니지만, 예를 들어, 컴퓨터 판독가능한 매체는 컴퓨터 저장 매체와 컴퓨터 통신 매체를 포함한다. 컴퓨터 저장 매체는 컴퓨터 판독가능한 명령어, 데이타 구조, 프로그램 모듈 또는 기타 데이타와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EPROM, EEPROM, 플래시 메모리 또는 기타 고상 메모리 기술, CD-ROM, DVD, 또는 기타 광 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 기타 자기 저장 장치, 또는 원하는 정보를 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함하나, 이에 한정되는 것은 아니다.
본 발명의 다양한 실시예들에 따르면, 개인용 컴퓨터(100)는 인터넷 등, TCP/IP 네트워크(118)나 기타의 네트워크를 통해 원격 컴퓨터에 대해 논리적 접속을 사용하는 네트워크 환경에서 동작할 수 있다. 개인용 컴퓨터(100)는 버스(110)에 접속된 네트워크 인터페이스 유닛(120)을 통해 TCP/IP 네트워크(118)에 접속할 수 있다. 네트워크 인터페이스 유닛(120)은 또한 LAN, WAN, 및 기타의 네트워크와 같은, 다른 타입의 네트워크 및 원격 컴퓨터 시스템에 접속하는데 이용될 수도 있다. 개인용 컴퓨터(100)는 또한 키보드나 마우스(도시되지 않음)를 포함하는 다수의 장치들로부터 입력을 받고 처리하기 위한 입력/출력 콘트롤러(122)를 포함할 수 있다. 유사하게, 입력/출력 콘트롤러(122)는 디스플레이 스크린, 프린터, 또는 기 타 형태의 출력 장치를 제공할 수 있다.
위에서 간략히 언급한 바와 같이, 마이크로소프트사(워싱톤, 레드몬드)의 윈도우즈(WINDOWS) 운영 체계와 같은 네트워크화된 개인용 컴퓨터의 동작을 제어하기에 적합한 운영 체계(114)를 포함하여, 다수의 프로그램 모듈과 데이타 파일들이 개인용 컴퓨터(100)의 대용량 저장 장치(112) 및 RAM(106)에 저장될 수 있다. 대용량 저장 장치(112) 및 RAM(106)은 또한 하나 이상의 프로그램들을 저장할 수 있다. 특히, 대용량 저장 장치(112) 및 RAM(106)은 다양한 기능을 사용자에게 제공하기 위한 애플리케이션 프로그램(116)을 저장할 수 있다. 예를 들어, 애플리케이션 프로그램(116)은 스프레드시트 애플리케이션 프로그램, 전자 우편 애플리케이션 프로그램(124), 워드 프로세싱 애플리케이션 프로그램(125), 데이타베이스 애플리케이션 프로그램 등과 같은 많은 형태의 프로그램들을 포함할 수 있다. 본 발명의 일실시예에 따르면, 여기 기술된 바와 같이 프로젝트 관리 스케줄을 준비하기 위하여 프로젝트 관리 애플리케이션 프로그램(126)이 포함된다. 본 발명에 따라 사용을 하기 위한 프로젝트 관리 애플리케이션의 일례는 마이크로소프트사의 Project Professional 및 Project Server이다.
이제 도 2를 참조하면, 분산 컴퓨팅 환경(200)의 간략화된 블럭도가 도시된다. 분산 컴퓨팅 환경(200)은 본 발명의 실시예들에 따라 프로젝트 스케줄을 생성 및 관리하기 위하여 웹 서비스 인터페이스(215)를 사용하여 프로젝트 서버/데이타베이스(210)과 부모 프로젝트 및 하나 이상의 자식 서브-프로젝트들의 소유자들/관리자들이 통신할 수 있도록 한다. 도 2에 도시된 분산 컴퓨팅 환경(200)은 본 발 명의 실시예들을 위한 예시적인 동작 환경으로서 기능한다. 본 명세서에 기술된 바와 같이, 전체 프로젝트 스케줄은 부모 프로젝트 스케줄과 하나 이상의 계층적으로 관련된 자식 서브-프로젝트들로 구성될 수 있다.
프로젝트 서버/데이타베이스(210)는, 도 1을 참조하여 설명되고 기술된 컴퓨터(100)에 대해 이상 기술된 바와 같이, 운영 체계, 프로세서 및 메모리 공간을 포함하는 콤포넌트들을 갖는 범용 컴퓨팅 시스템이다. 프로젝트 서버/데이타베이스(210)는 또한 본 명세서에 기술된 전체/부모 프로젝트 스케줄 및 개별 자식 서브-프로젝트 스케줄들의 구성, 디스플레이 및 관리를 허용하기 위하여 충분한 컴퓨터 실행가능한 명령어들을 갖는 프로젝트 관리 애플리케이션(126)을 포함한다.
프로젝트 서버/데이타베이스(210)는 또한 부모 프로젝트 스케줄에 관련된 데이타 및 각 개별 자식 서브-프로젝트 스케줄들에 대한 데이타를 보유하기 위한 백엔드(backend) 혹은 관계형(relational) 데이타베이스를 포함한다. 본 기술분야의 숙련자가 이해하는 바와 같이, 관계형 데이타베이스는 본 명세서에 기술된 전체 혹은 부모 프로젝트 스케줄을 구성하는 별도의 프로젝트 스케줄들 간에 저장된 데이타를 교환하도록 하나의 프로젝트 스케줄에 관련하여 저장된 정보가 하나 이상의 다른 프로젝트 스케줄들에 관련되도록 한다.
도 2에 도시된 바와 같이, 부모/마스터 컴퓨터 시스템(220)은 인터넷 또는 인트라넷(250)과 같은 분산 컴퓨팅 시스템을 통해 프로젝트 서버/데이타베이스(210)와 통신하는 것으로 도시되어 있다. 하나 이상의 자식/서브-프로젝트 컴퓨팅 시스템(230, 240, ..., n)이 인터넷 또는 인트라넷(250)을 통해 프로젝트 서버/데 이타베이스(210)와 통신하는 것으로 도시되어 있다. 부모 프로젝트 스케줄 및 부모 프로젝트 스케줄을 구성하는 하나 이상의 자식 서브-프로젝트 스케줄들의 소유자들/관리자들에 의해 운영되는 컴퓨팅 시스템(220, 230, 240, ..., n)은 도 1에 도시된 컴퓨터(100)를 참조로 이상 기술된 프로세싱 및 메모리 기능을 포함할 수 있다. 각 컴퓨터, 부모 및 자식은 시스템의 "피어(peer)"로 기술될 수 있다.
개별 컴퓨팅 시스템(220, 230, 240, ..., n) 각각은 또한 도 1을 참조로 이상 기술되고, 프로젝트 서버/데이타베이스(210)에서 작동되는 해당 프로젝트 관리 애플리케이션(126)에 대한 클라이언트측 프로젝트 관리 애플리케이션들로서 기능하는, 프로젝트 관리 애플리케이션(126)을 포함할 수 있다. 본 발명의 실시예들에 따르면, 프로젝트 서버/데이타베이스(210)는 부모 프로젝트 스케줄 및 자식 서브-프로젝트 스케줄들의 소유자들/관리자들에게 그리고 그들로부터 자동 프로젝트 스케줄 변경을 송신하기 위한 전자 우편 애플리케이션(124)을 포함하거나 그에 액세스하도록 동작할 수 있다.
부모 프로젝트 스케줄의 소유자/관리자는 컴퓨팅 시스템(220)으로부터 프로젝트 스케줄을 생성하여 인터넷 또는 인트라넷(250)을 통해 프로젝트 서버/데이타베이스(210)에 보내질 수 있다. 개별 자식 서브-프로젝트 스케줄들의 생성 및 관리는 유사하게 컴퓨팅 시스템(230, 240, ..., n)으로부터 자식 서브-프로젝트 스케줄들의 소유자들/관리자들에 의해 생성되어 인터넷/인트라넷(250)을 통해 프로젝트 서버/데이타베이스(210)에 보내질 수 있다. 부모 프로젝트 스케줄 및 하나 이상의 자식 서브-프로젝트 스케줄들의 소유자들/관리자들 사이의 통지는 프로젝트 관리 애플리케이션(126)에 의한 커맨드에 따라 전자 우편 애플리케이션(124)과 같은 통신 애플리케이션에 의해 자동으로 영향을 받을 수 있다. 즉, 변경 또는 제안된 변경을 영향을 받는 프로젝트 스케줄 또는 관련 서브-프로젝트 스케줄의 소유자/관리자에게 통지할 필요가 있을 때, 프로젝트 서버/데이타베이스(210)에서 프로젝트 관리 애플리케이션(126)은 전자 우편 애플리케이션(124)과 같은 통신 애플리케이션을 호출하고 적절한 통지 메세지가 영향을 받는 측에 송신되도록 한다. 본 기술분야의 숙련자가 이해하는 바와 같이, 인스턴트 메세징 시스템, 전화 시스템 등을 포함해서 영향을 받는 측들에게 통지를 하기 위해 다른 통신 형태들도 이용될 수 있다.
프로젝트 관리 방법 및 시스템 분야의 숙련자가 알고 있는 바와 같이, 주어진 프로젝트는 완수되어야 하는 다수의 작업들을 포함하고 각 작업은 작업 완수를 위해 가용 자원 및 필요한 기간에 의해 제약을 받을 수 있다. 또한, 일부 작업들은 관련 작업이 완수되기 전까지는 개시되지 않을 수도 있다. 많은 프로젝트의 경우, 주어진 프로젝트를 구성하는 개별 작업들은 별도의 관련 작업 스케줄 하에서 관리되고 처리된다. 예를 들어, 가옥 구축을 위해 마스터 프로젝트 스케줄이 준비될 수 있다. 이 마스터 프로젝트 스케줄은 일반 골조, 전기, 배관과 같은 세 개의 단계들 또는 작업들을 포함할 수 있다. 마스터 프로젝트의 각 단계들 또는 작업들은 주어진 단계 또는 작업에 대해 그 자신의 프로젝트 스케줄을 구성하고 관리하는 도급자에 의해 완수될 수 있다. 예를 들어, 일반 골조 공사에 대해 제1 서브-프로젝트 스케줄이 구성되고, 전기 작업에 대해 제2 서브-프로젝트 스케줄이 구성되고, 배관 작업에 대해 제3 서브-프로젝트 스케줄이 구성될 수 있다. 각 서브-프로젝트 스케줄은 하나 이상의 단계들 또는 작업들로 분리될 수 있고, 이들은 다시 주어진 서브-프로젝트 내에서 하나 이상의 작업들을 완수하기 위한 부가의 서브-프로젝트들과 연관될 수 있다는 것을 알아야 한다.
프로젝트 관리 데이타 저장/로드
본 발명의 다양한 측면들에 따르면, 프로젝트 관리 데이타는 클라이언트 컴퓨팅 시스템(100)의 대용량 저장 장치(112)의 하드 디스크 캐시와 같은 로컬 캐시(113)에 로드 및 저장될 수 있다. 위에서 논의한 많은 부하 및 레이턴시 문제들은 프로젝트 관리 데이타를 클라이언트 캐시(113)에 지능적으로 저장 및 로드할 때 회피될 수 있다. 본 발명은 로드 및 저장 시간 동안 프로젝트 서버/데이타베이스(210)로부터 다운로드된 그리고 그로 송신된 데이타의 크기를 줄이기 위한 메카니즘을 제공한다.
본 발명의 일측면에 따르면, 트리거되면, 캐시 관리자(115)가 프로젝트 서버/데이타베이스(210)의 백엔드 데이타베이스로 그리고 그로부터 데이타를 지능적으로 저장 및 로드하는 웹 서비스 인터페이스(215)와 통신한다. 이하에 기술되는 바와 같이, 캐시 관리자(115)는, 프로젝트 서버/데이타베이스(210)와 상호작용하면서도, 프로젝트 데이타를 저장, 조작, 관리할 책임이 있다. 캐시 관리자(115)는 또한 시스템 관리자가 캐시(113)를 조작할 수 있도록 하는 인터페이스를 제공한다.
프로젝트 서버/데이타베이스(210)는 프로젝트 관리자들, 팀 구성원들, 및 프로젝트에 적극적으로 관여하거나 이해관계가 프로젝트에 의해 영향을 받을 수 있는 다양한 개인들과 조직들 사이에서 온라인 협력이 가능하게 한다. 프로젝트 서버 (210)는 또한 조직이 프로젝트들에 걸쳐 표준을 공유하고, 체크인 및 체크아웃 기능으로 프로젝트의 보안을 돕고, 자원 가용성 및 프로젝트들에 걸친 기타의 자원 정보를 검토하고, 프로젝트들의 포트폴리오에 대한 관리 및 보고를 하게 한다.
부모/마스터 컴퓨터(220)에 대해서, 프로젝트 관리자는 프로젝트 서버/데이타베이스(210)를 이용하여 다수의 일들을 하게 할 수 있다: 1) 팀 구성원들에게 작업을 할당하고 완성된 작업을 따라가 팀 구성원들로부터 자동 또는 수동으로 작업 갱신을 수락하고 갱신된 정보를 프로젝트에 결합시킨다; 2) 특정 상태 보고를 요청 및 수신하고 개별 상태 보고들을 하나의 프로젝트 상태 보고로 통합하여 다른 곳으로 보낸다; 3) 프로젝트의 상이한 버전들을 생성한 뒤 비용, 스케줄, 및 자원 할당을 비교하기 위한 가정에 근거한 상황 분석(what-if analysis)을 수행한다; 4) 자원 가용성, 자원 할당, 및 비용에 대한 스케줄 변경의 효과를 평가한다; 및/또는 5) 조직에 걸쳐 자원 가용성을 검토하고 포괄적인 자원을 작업에 할당하도록 팀을 구성하고, 스킬 세트에 기초하여 자원을 발견 및 대체하고, 통상적인 전사적 자원 리스트로부터 팀을 구성하다.
컴퓨터(230)과 같은 자식/서브 컴퓨터로부터, 다양한 팀 구성원들이 마이크로소프트사의 Project Web Access와 같은 웹 서비스 인터페이스(215)를 사용하여 프로젝트 서버/데이타베이스(210)에 대한 정보에 액세스하여, 1) 작업 임무를 검토 및 갱신하고 일정한 임무에 대하여 프로젝트 관리자에게 응답하고, 규칙적인 간격으로 완성된 작업에 대한 갱신을 송신한다; 2) 신규한 작업을 생성하여 이를 승인받고 작업 계획에 포함시키기 위하여 프로젝트 관리자에게 보낸다; 3) 작업을 다른 팀 구성원에게 위임한다; 4) 작업 기간과 다른 작업들과의 관계를 그래픽적으로 표현하기 위한 간트 차트 형식으로 작업을 검토한다; 5) 그룹화되고, 정렬되고, 필터링된 작업을 검토한다; 6) 할당된 작업이 아니라 전체 프로젝트에 대한 최신 정보를 검토한다. 다른 프로젝트 관리자들이나 임원들은, 또한 웹 서비스 인터페이스(215)를 사용하여 프로젝트 서버/데이타베이스(210)에 대한 정보에 액세스하여 프로젝트, 작업, 및 자원 정보를 검토하여, 프로젝트가 개별적으로 또는 조직에 걸쳐 어떻게 처리되는지를 볼 수 있다.
이제 도 3을 참조하면, 본 발명의 일실시예에 따른 흐름도가 도시되어 있다. 위에서 기술한 바와 같이, 프로젝트 관리자는 프로젝트 관리 애플리케이션(126)을 이용하여 예컨대, 빌딩 신축 공사 프로젝트와 같은 프로젝트를 생성 또는 수정한다(블럭 302). 프로젝트 관리 애플리케이션(126)은 사용자 입력을 수신하고 프로젝트 관련 데이타를 그에 따라 조절하도록 동작할 수 있다. 프로젝트 관리 애플리케이션(126)은 자동 저장 기능을 통해 프로젝트 관련 데이타를 자동으로 저장하는 기능을 포함하거나(블럭 304), 사용자가 지정된 기능 키를 사용하거나 프로젝트 메뉴와 인터페이스하여(즉, 표준 "파일" 및 "저장 "버튼을 사용하여) 수동으로(블럭 306) 프로젝트 관련 데이타를 저장할 수 있다.
본 발명에 따르면, 프로젝트 관련 데이타는 비동기적인 방식으로 프로젝트 서버/데이타베이스(210)에 저장된다. 즉, 프로젝트 관련 데이타는 사용자가 저장 버튼을 누를 때보다는 임계값(이하 설명)을 만족할 때 프로젝트 서버/데이타베이스(210)에 저장된다. 프로젝트 관련 데이타는: 1) 프로젝트; 2) 작업; 3) 자원; 4) 작업들 사이의 제약; 5) 자원에 대한 작업의 할당; 6) 프로젝트 및 자원 검토; 7) 일정표 - 작업 및 비작업 시간 및 일수를 정의; 및/또는 8) 룩업 테이블: 사용자 정의가능한 컬럼들에 대한 수용가능한 값들을 특정하는 사용자 정의 테이블을 포함할 수 있다.
프로젝트 관리자와 같은 사용자가 컴퓨팅 시스템(100)과 같은 클라이언트 컴퓨터에 처음 프로젝트를 생성하면, 프로젝트 관련 데이타가 캐시(113)에 저장된다. 프로젝트가 생성된 뒤에도 사용자가 프로젝트 데이타를 추가, 갱신, 또는 삭제하는 등 프로젝트를 수정할 때, 프로젝트 관련 데이타가 캐시(113)에 저장된다. 그러나, 본 발명의 실시예들에 따르면, 프로젝트를 수정하기 전에 특정 프로젝트가 사용자에 의해 "체크아웃"되어야 한다. 이 특정 프로젝트는 다른 사용자가 프로젝트를 수정하기 전에 다시 체크인되어야 한다. 이 체크인/체크아웃 프로세스는 프로젝트의 허가되지 않은 수정을 방지한다.
이상 기술된 바와 같이, 이 동작 환경은 인터넷을 통해 프로젝트 서버/데이타베이스(210)를 사용하여 다수의 사용자들이 프로젝트에 액세스할 수 있도록 한다. 이하에 기술되는 바와 같이, 프로젝트 정보는 주기적으로 프로젝트 서버/데이타베이스(210)에 송신된다. 보다 구체적으로는, 일정한 임계값이 만족될 때 "신규" 정보만이 프로젝트 서버/데이타베이스(210)에 송신된다. 이 "신규" 정보는 데이타의 "차이(difference)" 또는 "델타(delta)"라고 한다. 또한, 클라이언트가 프로젝트 서버/데이타베이스(210)로부터의 프로젝트에 액세스하려고 할 때, "신규" 정보만이 클라이언트에 전달되어 프로젝트를 갱신한다. 부하/레이턴시 문제는 프 로젝트 서버/데이타베이스(210)로부터 프로젝트의 일부를 로드하기만 함으로써 피할 수 있게 된다.
본 발명의 일실시예에 따르면, 캐시(113)는 클라이언트 컴퓨터(100)에 의해 로드되거나 저장된 모든 파일들에 관한 메타데이타 정보를 보유한다. 이 메타데이타 정보는 로컬 파일 경로, 프로젝트 서버/데이타베이스(210)와의 최종 동기화 시간, 다양한 버전 스탬프들(version stamps), 및/또는 각 프로젝트에 대한 기타 정보를 포함하나, 이에 한정되지 않는다. 동기화 시간은 클라이언트 컴퓨터와 프로젝트 서버/데이타베이스(210)가 상호작용하여 특정 프로젝트 파일을 갱신할 때의 시간을 말한다. 버전 스탬프는 바람직하게는 클라이언트 컴퓨터(100)가 프로젝트 서버/데이타베이스(210)와 통신할 때마다 클라이언트 캐시(113)에 저장된다.
본 발명의 일실시예에 따르면, 버전 스탬프는 8 바이트 수로서, 서버 상의 현재의 시간을 나타내거나, 8 바이트 수씩 자동 증분될 수 있다. 버전 스탬프는 항상 프로젝트 서버/데이타베이스(210)에 의해 할당되는 것이 바람직하다. 프로젝트 서버/데이타베이스(210)가 클라이언트로부터 신규 데이타나 갱신된 데이타를 수신하면, 버전 스탬프(프로젝트 서버/데이타베이스(210)에서의 현재 시간 또는 갱신되는 프로젝트와 관련된 이전 버전 스탬프에 기초하여 자동 증분된 수)를 생성하고 이 버전 스탬프를 프로젝트와 관련시킨다. 프로젝트 서버/데이타베이스(210)는 또한 신규한 버전 스탬프를 클라이언트에게 반환한다. 다음에 클라이언트가 갱신된 데이타를 수신하기를 원하면, 버전 스탬프를 프로젝트 서버/데이타베이스(210)에 보내고, 프로젝트 서버/데이타베이스(210)는 클라이언트의 버전 스탬프보다 신규한 데이타를 반환한다. 클라이언트는 버전 스탬프를 오페이크(opaque) 8 바이트 수로 취급한다. 버전 스탬프에는 더 많거나 적은 바이트가 사용될 수 있다는 것을 알 것이다. 자동이든 수동이든, 모든 증분식 저장에 있어서, 메타데이타와 기타 정보를 사용하는 클라이언트 컴퓨터는 특정 프로젝트에 관련된 임의의 변경된 데이타 속성들을 따른다. 캐시 관리자(115)는 저장들 간에 수정된 모든 속성들을 모아 이들을 캐시 파일(113)에 저장한다.
본 발명의 일실시예에 따르면, 캐시 관리자(115)는 수정된 속성들을, 본 발명의 일실시예에 따라, 세 개의 별도의 카테고리: 신규 데이타, 갱신된 데이타, 삭제된 데이타로 조직화한다. 그 다음 캐시 관리자(115)는 각 카테고리에 따라 수정된 속성들을 캐시(113)에 저장한다.
블럭 308에서, 일단 일정한 임계값에 도달하면, 캐시 관리자(115)는 프로젝트 서버/데이타베이스(210)에 저장된 특정 프로젝트 파일을 갱신하기 위하여 프로젝트 서버/데이타베이스(210)에 송신될 데이타의 차이를 준비한다. 사용자가 프로젝트 데이타를 편집하면, 프로젝트 관리 애플리케이션(126)은 추가, 수정, 또는 갱신된 데이타 조각들을 따른다. 본 발명의 일실시예에 따르면, 캐시(113)가 전체 프로젝트 크기의 적어도 약 10%에 해당하는 임계값을 만족하는 데이타 갱신을 포함하면, 캐시 관리자(115)는 프로젝트 서버/데이타베이스(210)에 저장된 특정 프로젝트 파일을 갱신하기 위하여 프로젝트 서버/데이타베이스(210)에 송신될 데이타의 차이 또는 델타를 준비한다. 본 발명의 다른 실시예에 따르면, 프로젝트 작업의 일정 퍼센트, 예컨대, 30%가 수정되면, 캐시 관리자(115)는 프로젝트 서버/데이타 베이스(210)에 저장된 특정 프로젝트 파일을 갱신하기 위하여 프로젝트 서버/데이타베이스(210)에 송신될 데이타의 델타를 준비한다.
임계값에 도달하면, 블럭 310에서, 클라이언트 컴퓨터(100)가 프로젝트 서버/데이타베이스(210)에 접속되는지가 판정된다. 임계값에 도달하지 않으면, 블럭 314에서, 흐름은 블럭 302로 돌아가고 사용자는 프로젝트를 계속 수정 및/또는 검토하거나 다른 프로젝트를 연다. 클라이언트 컴퓨터(100)가 프로젝트 서버/데이타베이스(210)에 접속되면, 블럭 312에서, 데이타가 프로젝트 서버/데이타베이스(210)로 송신된다. 클라이언트 컴퓨터(100)가 프로젝트 서버/데이타베이스(210)에 접속되지 않으면, 블럭 314에서, 흐름은 블럭 302로 돌아간다. 클라이언트가 임계값을 확인하기 전에 프로젝트 서버/데이타베이스로 접속될 수 있다는 것을 알 것이다.
프로젝트 서버/데이타베이스(210)의 백엔드 데이타베이스는 각 프로젝트 엔티티: 프로젝트, 자원, 작업, 일정표 등에 대응하는 다수의 주 테이블을 포함한다. 테이블의 각 로우는 생성 시간에 대응하는 버전 스탬프, 및/또는 최종 수정 시간에 대응하는 버전 스탬프를 포함할 수 있다. 데이타베이스는 또한 각 주 테이블에 대한 "쉐도우(shadow)" 테이블을 포함한다. 예를 들어, 프로젝트, 작업, 자원, 일정표 등에 대응하는 테이블들에 대한 쉐도우 테이블들이 있다. 로우가 주 테이블로부터 삭제될 때, 그의 키가 삭제 시간과 함께 대응하는 쉐도우 테이블에 기록된다. "키"는 테이블 내의 기록을 고유하게 식별하는 테이블 내의 컬럼을 나타낸다. 본 발명의 일실시예에 따르면, GUID(Globally Unique Identifier)들의 조합이 키에 사 용될 수 있다. 예를 들어, 프로젝트는 GUID에 의해 고유하게 식별될 수 있다. 프로젝트의 작업은 유사하게 그 자신의 GUID, 및 그 작업이 속한 프로젝트의 GUID 등에 의해 고유하게 식별될 수 있다.
본 명세서에 기술된 바와 같이, 클라이언트 컴퓨터에서 프로젝트 서버/데이타베이스(210)로 송신된 데이타는 신규 데이타, 수신된 데이타, 삭제된 데이타를 포함하다. 서버는 먼저 서버에서의 현재 시간에 기초하거나, 현재의 버전 스탬프를 증분시킴으로써, 프로젝트에 대한 신규한 버전 스탬프를 결정한다. 신규 데이타에 대하여, 생성 버전 및/또는 최종 수정 버전으로서 신규한 버전 스탬프(즉, 관련 버전 스탬프)를 갖는 프로젝트 서버/데이타베이스(210) 테이블들에 신규한 로우들이 생성된다. 갱신된 데이타에 대하여, 대응하는 프로젝트 서버/데이타베이스(210) 테이블들 내의 데이타는 대응하는 신규한 버전 스탬프로 갱신된다. 갱신된 로우들은 데이타가 최종 수정되었을 때의 버전으로서 신규한 버전 스탬프를 포함한다. 삭제된 데이타에 대해서, 대응하는 서버/데이타베이스(210) 테이블들로부터 로우들이 삭제된다. 삭제된 각 로우에 대해서, 신규한 버전 스탬프 및 대응하는 주 로우의 키를 가리키는 대응하는 쉐도우 테이블에 로우가 추가된다.
프로젝트 서버/데이타베이스(210) 및 클라이언트에서 어떻게 델타 계산이 행해지는지의 예에 대해서, 이하의 시나리오를 생각한다. 이 예에서, 컬럼들 "프로젝트 ID", "프로젝트명", "버전 스탬프"를 포함하는 테이블 "프로젝트"를 갖는다고 가정한다. "프로젝트 ID" 컬럼은 "프로젝트" 테이블에 대한 키이다. 다른 테이블 "작업"은 컬럼들 "프로젝트 ID", "작업 ID", "작업명", "기간", "버전 스탬프"를 포함한다. 컬럼들 "프로젝트 ID"와 "작업 ID"는 테이블 "작업"에 대한 키이다. 다른 테이블 "작업 쉐도우"는 삭제된 작업들을 추적하는데 사용된다. 이는 컬럼들 "프로젝트 ID", "작업 ID", "버전 스탬프"를 갖는다. 이 테이블들은 처음에는 비어있다고 가정한다.
계속해서 이 예에서, 사용자 "사용자1"이 세 개의 작업들, 2일 동안의 작업 T1, 3일 동안의 작업 T2, 5일 동안의 갖는 작업 T3를 갖는 신규 프로젝트 P1을 생성한다. 사용자는 마이크로소프트사의 Project Professional과 같은 프로젝트 관리 애플리케이션(126)을 사용하여 프로젝트를 생성한다. 사용자1이 프로젝트를 저장하기로 선택하면, 캐시 관리자(115)는 프로젝트 서버/데이타베이스(210)에 송신할 충분한 데이타를 갖는다고 판정한다. 이는 신규한 프로젝트이므로, 모든 데이타는 "신규 데이타" 버킷에 들어가고, 프로젝트 서버/데이타베이스(210)로 보내어 진다. 프로젝트 서버/데이타베이스(210)는 신규 데이타를 프로젝트 서버/데이타베이스(210) 데이타베이스 테이블들로 삽입하는데, 이 테이블들은 프로젝트 서버/데이타베이스(210)가 백엔드 데이타베이스의 갱신을 완료했을 때 이하의 데이타를 가질 수 있다.
프로젝트
프로젝트 ID 프로젝트명 버전 스탬프
1 P1 1
작업
프로젝트 ID 작업 ID 작업명 기간 버전 스탬프
1 1 T1 2 1
1 2 T2 3 1
1 3 T3 5 1
작업 쉐도우
프로젝트 ID 작업 ID 버전 스탬프
프로젝트 서버/데이타베이스(210)는 현재의 버전 스탬프 값 "1"을 클라이언 트에게 반환한다. 캐시 관리자(115)는 사용자1에 대해서 그의 캐시(113)에 프로젝트 P1의 버전 "1"을 갖는다고 기록한다. 사용자1은 그 다음 프로젝트 P1에서 확인을 한다.
이제 다른 사용자인 사용자2가 프로젝트 P1을 열려고 한다고 가정한다. 캐시 관리자(115)가 사용자2에 대해서는 그의 캐시(113)에 프로젝트 P1을 갖지 않는다고 판정하기 때문에, 프로젝트 서버/데이타베이스(210)에 버전 스탬프 0을 갖는 프로젝트 P1 데이타에 대한 요청을 보낸다. 이 때, 프로젝트 서버/데이타베이스(210)는 0보다 큰 버전 스탬프를 갖는 위의 두 테이블들로부터 모든 기록들을 검색한다. 모든 로우들이 0보다 큰 버전 스탬프를 갖기 때문에, 모든 로우들이 검색된다. 프로젝트 서버/데이타베이스(210)는 그러면 프로젝트 P1에 대한 로우, 및 작업 T1, T2, T3에 대한 로우들을 신규한 로우들로서 클라이언트에게 반환하는데, 현재 버전 스탬프 값은 "1"이고, 삭제된 데이타에 대한 로우는 없다. 클라이언트가 이 데이타를 수신하면, 캐시 관리자(115)는 이를 캐시(113)에 추가하고, 사용자2에 대한 그의 캐시에 버전 스탬프 1을 갖는 프로젝트 P1을 갖는다고 기록한다.
이제 사용자2가 작업 T2를 삭제하고, 작업 T3의 기간을 4일로 변경하고, 3일 동안의 신규 작업 T4를 추가하기로 결정한다고 가정한다. 프로젝트 관리 애플리케이션(126)은 사용자 활동을 추적하여 어떤 작업은 삭제되었고, 다른 작업은 수정되었고, 신규 작업이 생성되었다고 판정한다. 사용자2가 프로젝트에서 저장을 하고 확인을 하기로 결정하면, 캐시 관리자(115)는 삭제 데이타 버킷에 작업 T2를 넣고, 갱신 데이타 버킷에 작업 T3를 넣고, 신규 데이타 버킷에 작업 T4를 넣는다. 그 다음 이 버킷들을 프로젝트 서버/데이타베이스(210)에 보낸다. 프로젝트 서버/데이타베이스(210)가 이 데이타를 수신하면, 삭제 데이타 버킷을 적용하여 "작업" 테이블로부터 작업 T2를 삭제하고, 이를 "작업 쉐도우" 테이블로 추가한다. 이는 또한 작업 T2를 갱신하고 신규 작업 T4를 테이블 "작업"으로 삽입한다. 이러한 모든 변경들은 다음 버전 스탬프 값인 "2"를 취한다. 따라서, 변경이 행해진 뒤, 테이블들은 다음과 같은 데이타를 갖는다:
프로젝트
프로젝트 ID 프로젝트명 버전 스탬프
1 P1 1
작업
프로젝트 ID 작업 ID 작업명 기간 버전 스탬프
1 1 T1 2 1
1 3 T3 4 2
1 4 T4 3 2
작업 쉐도우
프로젝트 ID 작업 ID 버전 스탬프
1 2 2
프로젝트 서버/데이타베이스(210)는 그 다음 최종 버전 스탬프 값 "2"를 클라이언트에 반환한다. 캐시 관리자(115)는 사용자2에 대한 그의 캐시(113)에 프로젝트 P1의 버전 "2"를 갖는다고 기록한다.
계속해서 이 예에서, 이제 사용자1이 프로젝트 P1을 다시 열려고 한다고 가정한다. 이 때 캐시 관리자(115)는 사용자 "사용자1"에 대한 그의 캐시(113)에 프로젝트 P1의 버전 "1"을 갖는다고 판정하고, 버전 "1" 이래 프로젝트 "P1"으로의 갱신을 요구하는 프로젝트 서버/데이타베이스(210)에 요청을 보낸다. 프로젝트 서버/데이타베이스(210)는 하나의 삭제된 작업 기록들(작업 ID 값 2를 갖는 작업 T2), 및 "1"보다 큰 버전 값을 갖는 두 개의 신규한 또는 갱신된 작업 기록(작업 T3 및 T4)을 갖는다고 판정한다. 프로젝트 서버/데이타베이스(210)는 작업 T2(작업 ID 2)를 삭제 데이타 버킷에 넣고, 작업 T3 및 T4를 신규 데이타 버킷에 넣고 이들을 현재의 버전 스탬프 값 "2"와 함께 클라이언트에게 보낸다. 캐시 관리자(115)는 프로젝트의 캐시된 복제본으로부터 작업 T2를 삭제하고, 이미 작업 T3의 이전 버전을 갖고 있다고 판정하고, 이를 프로젝트 서버/데이타베이스(210)로부터의 데이타로 갱신하고, 프로젝트 서버/데이타베이스(210)로부터의 데이타에 기초하여 신규한 작업 T4를 생성한다. 그 다음 사용자1에 대한 그의 캐시(113)에 프로젝트 P1의 버전 "2"를 갖는다고 기록한다. 이 때, 사용자1에 대한 캐시(113)는 프로젝트 P1의 서버 버전과 완전히 동기화된다.
이상 기술한 바와 같이, 클라이언트 컴퓨터가 데이타를 프로젝트 서버/데이타베이스(210)에 보낸 뒤, 프로젝트 서버/데이타베이스(210)는 프로젝트 서버/데이타베이스(210) 상의 특정 프로젝트의 수정 시간으로서 현재의 버전 스탬프를 클라이언트 컴퓨터에 보낸다. 클라이언트 컴퓨터(113)의 캐시 관리자(115)는 캐시(113) 내의 버전 스탬프를 그 프로젝트의 최종 동기화 시간으로서 기록한다.
따라서, 캐시(113)가 프로젝트 데이타 속성들에 대한 임의의 변경들을 보유하는 동안, 임계값에 도달하고 프로젝트 서버/데이타베이스(210)에 대한 접속이 가능해질 때까지 수정된 데이타가 프로젝트 서버/데이타베이스(210) 측에서 갱신되지 않는다. 또한, 접속이 가능하면, 수정된 데이타를 프로젝트 서버/데이타베이스(210)로부터 클라이언트 컴퓨터 상의 프로젝트 애플리케이션으로 전달함으로써 특정 프로젝트의 데이타가 갱신되는데, 이를 "동기화(synchronizing)"라고 한다. 이 는, 예컨대, 프로젝트 관리자가 그의 컴퓨터에서 프로젝트 파일을 열고 프로젝트 관리자가 모르게, 이전 프로젝트 관리자가 프로젝트를 수정했을 때 특히 중요하다. 이 동기화 단계는 프로젝트 관리자가 최종 프로젝트 버전을 가진다는 것을 보장한다.
일단 임계값에 도달함으로써 트리거되면, 이상 기술한 바와 같이, 클라이언트 컴퓨터(100)로부터 프로젝트 서버/데이타베이스(210)로 송신된 임의의 데이타는 프로젝트 서버/데이타베이스(210)에 존재하는 최종 복제본과 캐시(113)에 존재하는 복제본과의 차이이다. 유사하게, 프로젝트 서버/데이타베이스(210)에서 컴퓨팅 시스템(100)으로 로드된 임의의 데이타는 캐시(113)의 최종 복제본과 프로젝트 서버/데이타베이스(210)에 존재하는 복제본과의 차이이다. 데이타의 차이 또는 델타를 보내거나 다운로드하기만 함으로써, 본 발명은 컴퓨팅 시스템(100)과 프로젝트 서버/데이타베이스(210) 사이에서 처리되는 데이타의 양을 줄여 효율과 성능을 향상시키는데 도움이 된다.
이상 기술한 바와 같이, 클라이언트 컴퓨터로부터 프로젝트 서버/데이타베이스(210)로 데이타를 저장할 때, 웹 서비스 인터페이스(215)는 데이타를 큐로 저장되도록 둠으로써 데이타베이스에 비동기적으로 저장을 한다. 캐시 관리자(115)는 데이타를 프로젝트 서버/데이타베이스(210)의 백엔드 데이타베이스(210)에 저장하는 웹 서비스 인터페이스(215)와 통신한다. 낮은 우선순위의 스레드가 이 큐를 처리하고 데이타베이스에서 데이타를 갱신한다. 다음 저장을 할 때, 클라이언트는 저장 상태를 위해 프로젝트 서버/데이타베이스(210)를 폴링한다. 어떤 이유로 저 장에 실패하면, 모든 데이타를 프로젝트 서버/데이타베이스(210)에 저장하기 위해 재송신한다. 사용자가 애플리케이션을 닫고 저장될 데이타가 더 있으면, 저장이 대기중이라고 인식하고 저장을 재시도하고, 다음 사용자가 온라인으로 접속된다.
사용자가 프로젝트 서버/데이타베이스(210)로부터 프로젝트를 로드하기를 원할 때, 캐시 관리자(115)는 프로젝트 ID와 프로젝트가 프로젝트 서버/데이타베이스(210)에 동기화된 최종 시간을 나타내는 버전 스탬프를 가지고 프로젝트 서버/데이타베이스(210)에 요청을 보낸다. 클라이언트 컴퓨터는 데이타가 프로젝트에 대해서 결코 동기화되지 않았으면 "0"을 보낸다. 로드 동작 동안, 데이타는 두 개의 카테고리 또는 빈(bin): 1) 사용자에게 제공할 프로젝트 관리 애플리케이션에 절대적으로 필요한 데이타; 및 2) 사용자가 다른 것을 할 때 별도의 스레드에 다운로드될 수 있는 데이타로 나누어질 수 있다.
다운로드 동안, 웹 서비스 인터페이스(215)는 프로젝트 데이타에 대하여 프로젝트 서버/데이타베이스(210)의 데이타베이스를 쿼리하고 데이타의 델타를 클라이언트 컴퓨터로 스트리밍한다. 캐시 관리자(115)는 캐시(113)의 프로젝트 복제본에 프로젝트 서버/데이타베이스(210)에 의해 수신된 델타를 적용하여, 전체 파일을 다운로드할 필요 없이 최종 델타를 사용자에게 제공한다. 데이타를 두 개의 카테고리로 나눔으로써 사용자는 프로젝트 서버/데이타베이스(210)로부터 대량의 데이터가 다운로드되기를 기다릴 필요 없이 보다 나은 경험을 하게 된다.
사용자에게 가능한 빠른 제어를 주기 위하여, 가능하면 조금 다운로드한 다음 남은 데이타를 배경 스레드(background thread)에 다운로드하는 것이 바람직하 다. 각 엔티티(작업, 자원 등)는 많은 속성들(attributes)을 갖는다. 이 속성들(속성들(properties)) 중 일부는 프로젝트 관리 애플리케이션(126)에 의해 프로젝트의 콘텍스트로 데이타가 이해되도록 요구된다. 예를 들어, ID, 개시일, 기간과 같은 속성들을 갖는 작업은 전체 프로젝트의 콘텍스트로 이 작업이 이해되도록 프로젝트 관리 애플리케이션(126)에 대해 요구될 수 있다. 작업명, 그의 부모, 그가 속하는 그룹 등과 같은 기타의 속성들은 배경 스레드에 또는 사용자가 이 속성에 액세스하려고 할 때 다운로드될 수 있다. 바람직하게는, 프로젝트 관리 애플리케이션(126)은 디스플레이하는 로우들에 대한 코어 데이타를 다운로드한 다음, 남은 속성들을 배경 스레드에 다운로드한다.
요청을 수신한 뒤, 프로젝트 서버/데이타베이스(210)는 클라이언트에 의해 송신된 버전 스탬프보다 큰 버전 스탬프를 갖는 로우들에 대해 백엔드 데이타베이스 내의 모든 주 테이블들을 쿼리한다. 이러한 로우들에 대응하는 데이타는 프로젝트에 대해 신규한 데이타이거나 갱신된 데이타로서 클라이언트 컴퓨터에 반환된다. 프로젝트 서버/데이타베이스(210)는 또한 클라이언트가 버전 스탬프를 제공한 것보다 뒤에 삭제된 로우들에 대해 주 테이블들과 관련된 모든 쉐도우 테이블들을 쿼리한다. 이러한 로우들에 대응하는 데이타는 삭제된 로우들로서 클라이언트 컴퓨터에 반환된다. 프로젝트 서버/데이타베이스(210)는 최종 프로젝트 버전 스탬프를 클라이언트 컴퓨터에 반환한다. 이 버전 스탬프를 사용하는 캐시 관리자(115)는 캐시(113)에 프로젝트에 대한 최종 데이타 동기화 시간을 기록한다.
따라서, 송신된 버전 스탬프에 기초하여, 프로젝트 서버/데이타베이스(210) 는 클라이언트 컴퓨터에 적용될 필요가 있는 델타("신규" 데이타)를 계산하고 데이타의 제1 빈을 보낸다. 데이타의 제1 빈을 수신한 뒤, 클라이언트는 속성들을 거쳐 캐시(113)에 저장된 값들을 갱신하고 프로젝트를 로드하여 사용자가 파일에 대한 변경을 할 수 있도록 한다. 동시에, 프로젝트 서버/데이타베이스(210)는 데이타의 제2 빈을 다른 스레드에 보내고 사용자가 프로젝트로 작업을 하는 동안 데이타를 계속 갱신한다. 사용자가 다운로드되지 않은 데이타에 액세스하면, 프로그램 관리 애플리케이션(126)은 요청된 데이타를 다운로드하면서 메세지 박스로 사용자에게 경고를 한다.
이제 도 4를 참조하면, 본 발명의 일실시예에 따른, 접속된 프로젝트 세션에 대한 흐름도가 도시된다. 블럭 402에서, 프로젝트 관리 애플리케이션(126)을 사용하는 사용자는 프로젝트 파일을 열려고 시도한다. 블럭 404에서, 캐시 관리자(115)는 특정 프로젝트 파일이 캐시(113)에 있는지 보려고 확인을 한다. 예컨대 사용자가 이전에 파일을 열었으면 캐시(113)에 파일이 있을 것이다. 프로젝트 파일이 캐시(113)에 없으면, 블럭 406에서, 클라이언트 컴퓨터(100)가 현재 프로젝트 서버/데이타베이스(210)에 접속되어 있는지가 판정된다. 프로젝트 서버/데이타베이스(210)에 대한 접속이 없고 파일이 캐시에 없으면, 블럭 408에서, 프로젝트 관리 애플리케이션(126)은 사용자에게 파일을 열 수 없다고 경고한다.
프로젝트 서버/데이타베이스(210)에 대한 접속이 있으면, 블럭 410에서, 캐시 관리자(115)는 웹 서비스 인터페이스(215)를 통해 프로젝트 서버/데이타베이스(210)에 특정 프로젝트 파일을 요구하는 요청을 보낸다. 프로젝트 서버/데이타베 이스(210)로부터 캐시 관리자(115)가 캐시(113)에 파일을 저장하는 클라이언트 컴퓨터로 파일이 송신된다(블럭 412). 블럭 414에서, 파일이 캐시(113)로부터 로드된다. 블럭 416에서, 파일이 캐시(113)에 있으면, 캐시 관리자(115)는 파일이 현재 로그아웃되었거나 체크아웃되었는지를 판정한다. 파일이 체크아웃되었으면, 블럭 418에서, 캐시 관리자(115)는, 웹 서비스 인터페이스(215)를 통해, 프로젝트 서버/데이타베이스(210)에, 사용자가 파일 편집 등을 할 권한을 여전히 갖고 있는지와 같은, 보안 인증을 확인하라는 요청 및 관리자가 사용자의 파일의 체크아웃을 강제 종료했는지와 같은 임의의 다른 갱신을 요구하는 요청을 보낸다. 단계 414에서, 파일이 캐시(113)로부터 로드된다. 파일이 블럭 416에서 체크아웃되지 않으면, 흐름은 블럭 410-414로 진행하는데, 이상 기술한 바와 같이, 데이타의 차이가 캐시(113)로 송신되고 캐시(113)로부터 로드된다.
이제 도 5를 참조하면, 본 발명의 일실시예에 따른, 비접속된 프로젝트 세션에 대한 흐름도가 도시되어 있다. 여기서 사용된 "비접속"이란 클라이언트 컴퓨터와 프로젝트 서버/데이타베이스(210) 간에 접속이 가능하지 않음을 말하는 것이다. 유사하게 "접속"은 클라이언트 컴퓨터와 프로젝트 서버/데이타베이스(210) 간에 접속이 가능한 것을 말한다. 블럭 502에서, 프로젝트 관리 애플리케이션을 사용하는 사용자가 프로젝트 파일을 열려고 시도한다. 블럭 504에서, 캐시 관리자(115)는 특정 프로젝트 파일이 캐시(113)에 있는지 보려고 확인을 한다. 파일이 캐시(113)에 없으면, 블럭 506에서, 프로젝트 관리 애플리케이션(126)은 사용자에게 파일을 열 수 없다고 경고한다.
파일이 캐시(113)에 있으면, 블럭 508에서, 캐시 관리자(115)는 파일이 체크아웃되었는지 판정한다. 블럭 510에서, 파일이 체크아웃되었으면, 파일이 캐시(113)로부터 로드된다. 파일이 체크아웃되지 않았으면, 블럭 512에서, 사용자는 판독 전용 모드로 파일을 열 수 있게 된다. 사용자가 판독 전용 모드로 파일을 열기를 원하면, 파일이 캐시로부터 판독 전용 모드로 열린다. 사용자가 파일을 편집하기를 원하면, 파일은 열리지 않는다.
이상 기술한 바와 같이, 클라이언트 컴퓨터는 로컬 캐시(113)와 인터페이스할 수 있으므로, 사용자는 오프라인일 때에도 클라이언트에 대해서 작업을 할 수 있다. 오프라인인 동안, 사용자는 신규 프로젝트를 생성하거나, 체크아웃되면 기존의 프로젝트를 편집할 수 있다. 오프라인으로 작업을 할 때, 캐시 관리자(115)는 모든 데이타를 캐시(113)에 저장한다. 다음에 사용자가 프로젝트 서버/데이타베이스(210)에 접속할 때, 그리고 임계값에 도달하면, 일정한 검증 확인이 수행되고 캐시(113)와 프로젝트 서버/데이타베이스(210) 사이의 동기화가 일어난다.
대부분의 사용자들은 클라이언트와 프로젝트 서버/데이타베이스(210) 간의 안전한 통신을 위해 HTTPS를 사용할 것으로 기대된다. 본 발명의 실시예들에 따르면, 클라이언트와 프로젝트 서버/데이타베이스(210)는 특정 바이너리(proprietary binary) 형식으로 데이타를 교환한다. 데이타는 또한 보다 나은 대역폭 사용을 위해 압축될 수 있다. 바람직하게는 압축해제된 데이타에 대해 체크섬(checksum)이 계산되고 데이타와 함께 프로젝트 서버/데이타베이스(210)에 송신된다. 클라이언트와 프로젝트 서버/데이타베이스(210) 모두가 데이타를 압축해제한 후 데이타의 체크섬을 계산하고, 보안 검증의 일부로서 수신된 체크섬에 대해 계산된 체크섬을 검증한다.
이상 기술한 바와 같이, Project Professional은 마이크로소프트사에서 제조된 프로젝트 관리 애플리케이션이다. Project Server는 이상 기술한 바와 같이, 복수의 사용자들이 신규한 프로젝트를 생성하고 프로젝트 서버/데이타베이스(210)와 같은 프로젝트 서버로부터 진행중인 프로젝트에 액세스하도록 하는 마이크로소프트에 의해 제공되는 다른 애플리케이션이다. 예를 들어, 한 조직은 Project Server를 전용 서버에 설치한 다음 다수의 프로젝트 관리자들이 Project를 각 시스템이 프로젝트 서버와 통신하는 개별 컴퓨팅 시스템에 설치할 수 있다.
이상 기술된 바와 같이, 프로젝트 관리 애플리케이션과 관련 자원들을 사용하여 프로젝트를 캐시 및 동기화하기 위한 방법 및 시스템이 제공되었다. 본 기술분야의 숙련자에게는 본 발명의 범위와 사상으로부터 벗어나지 않는 한도 내에서 본 발명에 다양한 수정과 변경이 가해질 수 있다는 것이 명백할 것이다. 본 발명의 다른 실시예들은 본 명세서에 개시된 발명의 세부사항과 실시예를 고려하면 본 기술분야의 숙련자에게 명백할 것이다.

Claims (26)

  1. 클라이언트 장치의 프로젝트 관리 애플리케이션과 프로젝트 서버 사이의 프로젝트 데이타 동기화(synchronization)를 관리하기 위한 컴퓨터로 구현된 방법으로서,
    상기 클라이언트 장치에서, 상기 프로젝트 서버에 저장된 프로젝트 스케줄의 카피를 획득하는 단계 - 상기 프로젝트 스케줄의 상기 카피는 복수의 프로젝트 작업을 포함하고, 상기 프로젝트 스케줄의 상기 카피는 상기 클라이언트 장치의 캐시 메모리에 저장되고, 상기 캐시 메모리는 또한 상기 프로젝트 작업 각각에 대하여 버전을 표시하는 버전 스탬프를 포함함 - ;
    상기 클라이언트 장치에서, 상기 프로젝트 스케줄의 카피의 상기 복수의 프로젝트 작업 중 적어도 하나의 프로젝트 작업에 대한 변경을 수신하는 단계 - 상기 변경은 상기 클라이언트 장치의 상기 캐시 메모리 내에 유지됨 - ;
    상기 클라이언트 장치의 캐시 관리자에 의하여, 상기 변경이 상기 캐시 관리자에 저장된 변경 임계값을 만족하는 크기의 데이타 갱신을 포함하는지 여부를 판단하는 단계 - 상기 변경 임계값은 상기 캐시 메모리에 저장된 상기 프로젝트 스케줄의 상기 카피의 전체 크기에 대한, 상기 캐시 메모리에 유지되는 데이타 갱신의 허용된 용량의 퍼센티지 임계값임 - ; 및
    상기 변경 임계치가 만족되는 것으로 판단된 경우, 상기 클라이언트 장치의 상기 캐시 관리자로 하여금 동작을 수행하도록 하는 단계 - 상기 동작은
    상기 캐시 메모리에 유지되는 상기 데이타 갱신에 대한 상기 변경의 속성(properties)을 식별하는 동작,
    상기 프로젝트 서버에 저장된 상기 프로젝트 스케줄이 상기 변경의 속성에 따라 갱신되도록, 상기 프로젝트 스케줄의 변경되지 않은 부분의 속성을 송신하지 않고 상기 프로젝트 서버에 상기 변경의 속성을 송신하는 동작,
    상기 프로젝트 서버로부터 상기 변경에 대한 갱신된 버전 스탬프를 수신하는 동작, 및
    상기 갱신된 버전 스탬프를 상기 캐시 메모리에 상기 변경과 관련된 작업과 연관하여 저장하는 동작을 포함함 - ;
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 캐시 관리자로 하여금 갱신 작업 버킷, 신규 작업 버킷 및 삭제 작업 버킷을 생성하도록 하는 단계를 더 포함하는, 방법.
  3. 제2항에 있어서,
    상기 캐시 관리자에 의하여, 상기 변경의 속성이 상기 복수의 프로젝트 작업 중 하나의 갱신과 관련됨을 식별하는 단계;
    상기 갱신 작업 버킷에 상기 변경을 저장하는 단계;
    상기 프로젝트 서버에 상기 갱신 작업 버킷을 송신하는 단계;
    상기 프로젝트 서버로부터 상기 변경에 대한 갱신된 버전 스탬프를 수신하는 단계; 및
    상기 갱신된 버전 스탬프를 상기 캐시 메모리에 상기 갱신과 관련된 작업과 연관하여 저장하는 단계를 더 포함하는, 방법.
  4. 제2항에 있어서,
    상기 캐시 관리자에 의하여, 상기 변경의 속성이 신규 작업과 관련됨을 식별하는 단계;
    상기 신규 작업 버킷에 상기 변경을 저장하는 단계;
    상기 프로젝트 서버에 상기 신규 작업 버킷을 송신하는 단계;
    상기 프로젝트 서버로부터 상기 변경에 대한 갱신된 버전 스탬프를 수신하는 단계;
    상기 갱신된 버전 스탬프를 상기 캐시 메모리에 상기 신규 작업과 연관하여 저장하는 단계를 더 포함하는, 방법.
  5. 제2항에 있어서,
    상기 캐시 관리자에 의하여, 상기 변경의 속성이 삭제 작업과 관련됨을 식별하는 단계;
    상기 삭제 작업 버킷에 상기 변경을 저장하는 단계;
    상기 프로젝트 서버에 상기 삭제 작업 버킷을 송신하는 단계;
    상기 프로젝트 서버로부터 상기 변경에 대한 갱신된 버전 스탬프를 수신하는 단계;
    상기 갱신된 버전 스탬프를 상기 캐시 메모리에 상기 삭제 작업과 연관하여 저장하는 단계를 더 포함하는, 방법.
  6. 제1항에 있어서, 상기 복수의 프로젝트 테스크를 포함하는 상기 프로젝트 스케줄을 획득하는 단계는
    상기 프로젝트 서버로부터 상기 프로젝트 스케줄의 변경된 부분을 획득하는 단계; 및
    상기 캐시 메모리 내의 상기 프로젝트 스케줄의 현재 버전을 획득하기 위하여 상기 캐시 메모리에 저장된 상기 프로젝트 스케줄의 버전을 갱신하는 단계를 포함하는, 방법.
  7. 제6항에 있어서, 상기 프로젝트 서버로부터 상기 프로젝트 스케줄의 상기 변경된 부분을 획득하는 단계는
    분리된 두 스레드로 상기 프로젝트 스케줄의 상기 변경된 부분을 수신하는 단계 - 상기 분리된 두 스레드 중 제1 스레드는 상기 캐시 관리자로부터 첫번째로 수신되는 제1 우선순위 스레드이고, 상기 분리된 두 스레드 중 제2 스레드는 상기 캐시 관리자로부터 두번째로 수신되는 제2 우선순위 스레드이고, 상기 제1 우선순위 스레드는 상기 제2 우선순위 스레드보다 높은 우선순위를 가짐 - 를 포함하는, 방법.
  8. 실행될 때 클라이언트 장치의 프로젝트 관리 애플리케이션과 프로젝트 서버 사이의 프로젝트 데이타 동기화를 관리하는 방법을 수행하는 컴퓨터 실행가능한 명령어를 가지는 컴퓨터 판독가능한 저장 매체로서, 상기 방법은
    상기 프로젝트 서버에 저장된 프로젝트 스케줄의 카피를 획득하는 단계 - 상기 프로젝트 스케줄의 상기 카피는 복수의 프로젝트 작업을 포함하고, 상기 프로젝트 스케줄의 상기 카피는 상기 클라이언트 장치의 메모리에 저장되고, 상기 메모리는 또한 상기 프로젝트 작업 각각에 대하여 버전을 표시하는 버전 스탬프를 포함함 - ;
    상기 프로젝트 스케줄의 카피의 상기 복수의 프로젝트 작업 중 적어도 하나의 프로젝트 작업에 대한 변경을 수신하는 단계 - 상기 변경은 상기 프로젝트 서버에 송신되지 않은 다른 프로젝트 작업에 대한 변경을 포함하는 다른 데이타 갱신과 함께 상기 클라이언트 장치의 상기 메모리 내에 저장됨 - ;
    메모리 관리자에 의하여, 상기 변경 및 이전에 이루어진 다른 변경이 상기 메모리 관리자의 변경 임계값을 만족하는지 여부를 판단하는 단계 - 상기 변경 임계값은 상기 프로젝트 작업의 전체 수에 관련하여 수정된 작업의 수임 - ; 및
    상기 변경 임계치가 만족되는 것으로 판단된 경우, 상기 클라이언트 장치의 상기 메모리 관리자로 하여금 동작을 수행하도록 하는 단계 - 상기 동작은,
    상기 변경의 속성을 식별하는 동작,
    상기 프로젝트 서버에 저장된 상기 프로젝트 스케줄이 상기 변경의 속성에 따라 갱신되도록, 상기 프로젝트 스케줄의 변경되지 않은 부분의 속성을 송신하지 않고 상기 프로젝트 서버에 상기 변경의 속성을 송신하는 동작,
    상기 프로젝트 서버로부터 상기 변경에 대한 갱신된 버전 스탬프를 수신하는 동작, 및
    상기 갱신된 버전 스탬프를 상기 메모리에 상기 변경과 관련된 작업과 연관하여 저장하는 동작을 포함함 - ;
    를 포함하는, 컴퓨터 판독가능한 저장 매체.
  9. 제8항에 있어서,
    상기 변경 임계값은 상기 메모리에 저장된 상기 프로젝트 스케줄의 상기 카피의 전체 크기에 대한, 변경된 데이타의 허용된 용량의 퍼센티지 임계값인, 컴퓨터 판독가능한 저장 매체.
  10. 제8항에 있어서, 상기 방법은
    상기 메모리 관리자로 하여금 갱신 작업 버킷, 신규 작업 버킷 및 삭제 작업 버킷을 생성하도록 하는 단계를 더 포함하는, 컴퓨터 판독가능한 저장 매체.
  11. 제10항에 있어서, 상기 방법은
    상기 메모리 관리자에 의하여, 상기 변경의 속성이 상기 복수의 프로젝트 작업 중 하나의 갱신과 관련됨을 식별하는 단계;
    상기 갱신 작업 버킷에 상기 변경을 저장하는 단계;
    상기 프로젝트 서버에 상기 갱신 작업 버킷을 송신하는 단계;
    상기 프로젝트 서버로부터 상기 변경에 대한 갱신된 버전 스탬프를 수신하는 단계; 및
    상기 갱신된 버전 스탬프를 상기 메모리 내에 상기 갱신과 관련된 작업과 연관하여 저장하는 단계를 더 포함하는, 컴퓨터 판독가능한 저장 매체.
  12. 제10항에 있어서, 상기 방법은
    상기 메모리 관리자에 의하여, 상기 변경의 속성이 신규 작업과 관련됨을 식별하는 단계;
    상기 신규 작업 버킷에 상기 변경을 저장하는 단계;
    상기 프로젝트 서버에 상기 신규 작업 버킷을 송신하는 단계;
    상기 프로젝트 서버로부터 상기 변경에 대한 갱신된 버전 스탬프를 수신하는 단계;
    상기 갱신된 버전 스탬프를 상기 메모리 내에 상기 신규 작업과 연관하여 저장하는 단계를 더 포함하는, 컴퓨터 판독가능한 저장 매체.
  13. 제10항에 있어서, 상기 방법은
    상기 메모리 관리자에 의하여, 상기 변경의 속성이 삭제 작업과 관련됨을 식별하는 단계;
    상기 삭제 작업 버킷에 상기 변경을 저장하는 단계;
    상기 프로젝트 서버에 상기 삭제 작업 버킷을 송신하는 단계;
    상기 프로젝트 서버로부터 상기 변경에 대한 갱신된 버전 스탬프를 수신하는 단계;
    상기 갱신된 버전 스탬프를 상기 메모리 내에 상기 삭제 작업과 연관하여 저장하는 단계를 더 포함하는, 컴퓨터 판독가능한 저장 매체.
  14. 제8항에 있어서, 상기 복수의 프로젝트 테스크를 포함하는 상기 프로젝트 스케줄을 획득하는 단계는
    상기 프로젝트 서버로부터 상기 프로젝트 스케줄의 변경된 부분을 획득하는 단계; 및
    상기 메모리 내의 상기 프로젝트 스케줄의 현재 버전을 획득하기 위하여 상기 메모리에 저장된 상기 프로젝트 스케줄의 버전을 갱신하는 단계를 포함하는, 컴퓨터 판독가능한 저장 매체.
  15. 제14항에 있어서, 상기 프로젝트 서버로부터 상기 프로젝트 스케줄의 상기 변경된 부분을 획득하는 단계는
    분리된 두 스레드로 상기 프로젝트 스케줄의 상기 변경된 부분을 수신하는 단계 - 상기 분리된 두 스레드 중 제1 스레드는 상기 메모리 관리자로부터 첫번째로 수신되는 제1 우선순위 스레드이고, 상기 분리된 두 스레드 중 제2 스레드는 상기 메모리 관리자로부터 두번째로 수신되는 제2 우선순위 스레드이고, 상기 제1 우선순위 스레드는 상기 제2 우선순위 스레드보다 높은 우선순위를 가짐 - 를 포함하는, 컴퓨터 판독가능한 저장 매체.
  16. 클라이언트 장치의 프로젝트 관리 애플리케이션과 프로젝트 서버 사이의 프로젝트 데이타 동기화를 관리하는 시스템에 있어서, 상기 시스템은
    프로세서; 및
    컴퓨터 실행가능 명령어를 포함하는 메모리 - 상기 컴퓨터 실행가능 명령어는 실행될 때 방법을 수행함 - 를 포함하고,
    상기 방법은
    상기 프로젝트 서버에 저장된 프로젝트 스케줄의 카피를 획득하는 단계 - 상기 프로젝트 스케줄의 상기 카피는 복수의 프로젝트 작업을 포함하고, 상기 프로젝트 스케줄의 상기 카피는 상기 클라이언트 장치의 메모리에 저장되고, 상기 메모리는 또한 상기 프로젝트 작업 각각에 대하여 버전을 표시하는 버전 스탬프를 포함함 - ;
    상기 프로젝트 스케줄의 카피의 상기 복수의 프로젝트 작업 중 적어도 하나의 프로젝트 작업에 대한 변경을 수신하는 단계 - 상기 변경은 상기 프로젝트 서버에 송신되지 않은 다른 프로젝트 작업에 대한 변경을 포함하는 다른 데이타 갱신과 함께 상기 클라이언트 장치의 상기 메모리 내에 저장됨 - ;
    메모리 관리자에 의하여, 상기 변경 및 이전에 이루어진 다른 변경이 상기 메모리 관리자의 변경 임계값을 만족하는지 여부를 판단하는 단계; 및
    상기 변경 임계치가 만족되는 것으로 판단된 경우, 상기 클라이언트 장치의 상기 메모리 관리자로 하여금 동작을 수행하도록 하는 단계 - 상기 동작은,
    상기 변경의 속성을 식별하는 동작,
    상기 프로젝트 서버에 저장된 상기 프로젝트 스케줄이 상기 변경의 속성에 따라 갱신되도록, 상기 프로젝트 스케줄의 변경되지 않은 부분의 속성을 송신하지 않고 상기 프로젝트 서버에 상기 변경의 속성을 송신하는 동작,
    상기 프로젝트 서버로부터 상기 변경에 대한 갱신된 버전 스탬프를 수신하는 동작, 및
    상기 갱신된 버전 스탬프를 상기 메모리에 상기 변경과 관련된 작업과 연관하여 저장하는 동작을 포함함 - ;
    를 포함하는, 시스템.
  17. 제16항에 있어서,
    상기 변경 임계값은 상기 메모리에 저장된 상기 프로젝트 스케줄의 상기 카피의 전체 크기에 대한, 변경된 데이타의 허용된 용량의 퍼센티지 임계값인, 시스템.
  18. 제16항에 있어서,
    상기 변경 임계값은 상기 프로젝트 스케줄의 상기 복수의 프로젝트 작업에 대비한 프로젝트 작업 변경의 퍼센티지인, 시스템.
  19. 제16항에 있어서, 상기 방법은
    상기 메모리 관리자로 하여금 갱신 작업 버킷, 신규 작업 버킷 및 삭제 작업 버킷을 생성하도록 하는 단계를 더 포함하는, 시스템.
  20. 제19항에 있어서, 상기 방법은
    상기 메모리 관리자에 의하여, 상기 변경의 속성이 상기 복수의 프로젝트 작업 중 하나의 갱신과 관련됨을 식별하는 단계;
    상기 갱신 작업 버킷에 상기 변경을 저장하는 단계;
    상기 프로젝트 서버에 상기 갱신 작업 버킷을 송신하는 단계;
    상기 프로젝트 서버로부터 상기 변경에 대한 갱신된 버전 스탬프를 수신하는 단계; 및
    상기 갱신된 버전 스탬프를 상기 메모리에 상기 갱신과 관련된 작업과 연관하여 저장하는 단계를 더 포함하는, 시스템.
  21. 제19항에 있어서, 상기 방법은
    상기 메모리 관리자에 의하여, 상기 변경의 속성이 신규 작업과 관련됨을 식별하는 단계;
    상기 신규 작업 버킷에 상기 변경을 저장하는 단계;
    상기 프로젝트 서버에 상기 신규 작업 버킷을 송신하는 단계;
    상기 프로젝트 서버로부터 상기 변경에 대한 갱신된 버전 스탬프를 수신하는 단계;
    상기 갱신된 버전 스탬프를 상기 메모리에 상기 신규 작업과 연관하여 저장하는 단계를 더 포함하는, 시스템.
  22. 제19항에 있어서, 상기 방법은
    상기 메모리 관리자에 의하여, 상기 변경의 속성이 삭제 작업과 관련됨을 식별하는 단계;
    상기 삭제 작업 버킷에 상기 변경을 저장하는 단계;
    상기 프로젝트 서버에 상기 삭제 작업 버킷을 송신하는 단계;
    상기 프로젝트 서버로부터 상기 변경에 대한 갱신된 버전 스탬프를 수신하는 단계;
    상기 갱신된 버전 스탬프를 상기 메모리에 상기 삭제 작업과 연관하여 저장하는 단계를 더 포함하는, 시스템.
  23. 제16항에 있어서, 상기 복수의 프로젝트 테스크를 포함하는 상기 프로젝트 스케줄을 획득하는 단계는
    상기 프로젝트 서버로부터 상기 프로젝트 스케줄의 변경된 부분을 획득하는 단계; 및
    상기 메모리 내의 상기 프로젝트 스케줄의 현재 버전을 획득하기 위하여 상기 메모리에 저장된 상기 프로젝트 스케줄의 버전을 갱신하는 단계를 포함하는, 시스템.
  24. 제23항에 있어서, 상기 프로젝트 서버로부터 상기 프로젝트 스케줄의 상기 변경된 부분을 획득하는 단계는
    분리된 두 스레드로 상기 프로젝트 스케줄의 상기 변경된 부분을 수신하는 단계 - 상기 분리된 두 스레드 중 제1 스레드는 상기 메모리 관리자로부터 첫번째로 수신되는 제1 우선순위 스레드이고, 상기 분리된 두 스레드 중 제2 스레드는 상기 메모리 관리자로부터 두번째로 수신되는 제2 우선순위 스레드이고, 상기 제1 우선순위 스레드는 상기 제2 우선순위 스레드보다 높은 우선순위를 가짐 - 를 포함하는, 시스템.
  25. 삭제
  26. 삭제
KR1020050057143A 2004-09-28 2005-06-29 프로젝트 데이타를 캐시 및 동기화하기 위한 방법 및시스템 Expired - Fee Related KR101213923B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/952,284 2004-09-28
US10/952,284 US8005710B2 (en) 2004-09-28 2004-09-28 Methods and systems for caching and synchronizing project data

Publications (2)

Publication Number Publication Date
KR20060048712A KR20060048712A (ko) 2006-05-18
KR101213923B1 true KR101213923B1 (ko) 2012-12-18

Family

ID=34940197

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050057143A Expired - Fee Related KR101213923B1 (ko) 2004-09-28 2005-06-29 프로젝트 데이타를 캐시 및 동기화하기 위한 방법 및시스템

Country Status (5)

Country Link
US (1) US8005710B2 (ko)
EP (1) EP1640881A3 (ko)
JP (1) JP4986418B2 (ko)
KR (1) KR101213923B1 (ko)
CN (1) CN1755720A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230306029A1 (en) * 2022-03-25 2023-09-28 Atlassian Pty Ltd. Systems and methods for loading content
US12407752B2 (en) 2012-02-24 2025-09-02 Samsung Electronics Co., Ltd. Data sharing apparatus and method of mobile terminal

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7774742B2 (en) * 2003-11-04 2010-08-10 Realization Technologies, Inc. Facilitation of multi-project management using task hierarchy
JP4490192B2 (ja) * 2004-07-02 2010-06-23 株式会社エヌ・ティ・ティ・ドコモ マルチタスク実行システム
US9292276B1 (en) 2004-07-19 2016-03-22 Micro Focus (IP) Development Limited Method and system for utilizing change packages
US8341590B1 (en) 2007-12-12 2012-12-25 Accurev, Inc. System for relating workflow status to code component status in a software project
US8548967B1 (en) 2007-12-12 2013-10-01 Accurev, Inc. System for visual query and manipulation of configuration management records
US8667465B2 (en) * 2008-03-31 2014-03-04 Accurev, Inc. System for estimating a software product release time from version information
US8473893B2 (en) * 2008-09-30 2013-06-25 Accurev, Inc. Integration of external software analysis processes with software configuration management applications
US8429297B1 (en) * 2005-09-28 2013-04-23 Oracle America, Inc. Web service invocation framework with integrated directory-based distributor
US9201939B2 (en) * 2006-06-02 2015-12-01 Salesforce.Com, Inc. Method and system for pushing data to a plurality of devices in an on-demand service environment
JP4842690B2 (ja) * 2006-04-14 2011-12-21 富士通株式会社 アプリケーション管理プログラム、アプリケーション管理方法およびアプリケーション管理装置
US20070255763A1 (en) * 2006-04-27 2007-11-01 International Business Machines Corporation Database replication method and system
US8799043B2 (en) * 2006-06-07 2014-08-05 Ricoh Company, Ltd. Consolidation of member schedules with a project schedule in a network-based management system
JP4144890B2 (ja) * 2006-06-08 2008-09-03 インターナショナル・ビジネス・マシーンズ・コーポレーション 開発プロジェクトの日程表作成を支援するシステムおよびその方法
CN101136087A (zh) * 2006-08-31 2008-03-05 国际商业机器公司 用于在项目管理中进行活动管理的系统和方法
US20080163191A1 (en) * 2006-12-27 2008-07-03 International Business Machines Corporation System and method for file transfer management
US8935372B2 (en) * 2007-02-02 2015-01-13 Sony Corporation Mediation server, terminals and distributed processing method
US20080263103A1 (en) * 2007-03-02 2008-10-23 Mcgregor Lucas Digital asset management system (DAMS)
US8826282B2 (en) * 2007-03-15 2014-09-02 Ricoh Company, Ltd. Project task management system for managing project schedules over a network
US9152433B2 (en) * 2007-03-15 2015-10-06 Ricoh Company Ltd. Class object wrappers for document object model (DOM) elements for project task management system for managing project schedules over a network
US8666794B1 (en) * 2007-03-26 2014-03-04 Sprint Communications Company L.P. Project management tool
EP2012261A1 (en) * 2007-06-13 2009-01-07 Sap Ag Processing and exchanging data of collaborative tasks
US8082274B2 (en) * 2007-06-28 2011-12-20 Microsoft Corporation Scheduling application allowing freeform data entry
US8549520B2 (en) * 2007-07-31 2013-10-01 Sap Ag Distributed task handling
CN101377746A (zh) * 2007-08-31 2009-03-04 鸿富锦精密工业(深圳)有限公司 排程任务更新系统及方法
US9697171B2 (en) * 2007-10-09 2017-07-04 Internaitonal Business Machines Corporation Multi-writer revision synchronization in a dispersed storage network
US8650154B2 (en) * 2008-02-19 2014-02-11 International Business Machines Corporation Document synchronization solution
US20090217241A1 (en) * 2008-02-22 2009-08-27 Tetsuro Motoyama Graceful termination of a web enabled client
US20090217240A1 (en) * 2008-02-22 2009-08-27 Tetsuro Motoyama Script generation for graceful termination of a web enabled client by a web server
US8725679B2 (en) * 2008-04-07 2014-05-13 International Business Machines Corporation Client side caching of synchronized data
US20090287522A1 (en) * 2008-05-16 2009-11-19 Tetsuro Motoyama To-Do List Representation In The Database Of A Project Management System
US8706768B2 (en) * 2008-05-16 2014-04-22 Ricoh Company, Ltd. Managing to-do lists in task schedules in a project management system
US8352498B2 (en) * 2008-05-16 2013-01-08 Ricoh Company, Ltd. Managing to-do lists in a schedule editor in a project management system
US8321257B2 (en) * 2008-05-16 2012-11-27 Ricoh Company, Ltd. Managing project schedule data using separate current and historical task schedule data
US8676919B2 (en) * 2008-06-26 2014-03-18 Microsoft Corporation Asynchronously editing a synchronous data store, such as a project management data store
US8862489B2 (en) * 2008-09-16 2014-10-14 Ricoh Company, Ltd. Project management system with inspection functionality
US20100070328A1 (en) * 2008-09-16 2010-03-18 Tetsuro Motoyama Managing Project Schedule Data Using Project Task State Data
US8019813B2 (en) * 2009-05-12 2011-09-13 Microsoft Corporation Synchronizing self-referencing fields during two-way synchronization
US8028070B2 (en) * 2009-05-18 2011-09-27 Microsoft Corporation Synchronizing tasks between servers
US8160911B2 (en) * 2009-05-19 2012-04-17 Microsoft Corporation Project management applications utilizing summary tasks for top-down project planning
EP2275951A1 (en) * 2009-07-17 2011-01-19 Accenture Global Services GmbH A data processing method, system, and computer program product
US20110029440A1 (en) * 2009-08-03 2011-02-03 Tetsuro Motoyama Approach for Managing Project Schedule Data in a Project Management System
US8694985B2 (en) * 2009-10-30 2014-04-08 Apple Inc. Managing digital content in hierarchies
JP2014510330A (ja) * 2011-01-25 2014-04-24 ティファニー・ホージー・ブラウン 建設業の建築情報管理、ソフトウェア、及び方法
WO2012140701A1 (en) * 2011-04-15 2012-10-18 Hitachi, Ltd. File sharing system and file sharing method
US8949275B1 (en) * 2011-04-29 2015-02-03 Google Inc. Inter-application to do list management
JP2013054561A (ja) * 2011-09-05 2013-03-21 Fuji Xerox Co Ltd 作業情報管理装置及びプログラム
US9009318B2 (en) * 2011-11-03 2015-04-14 Microsoft Corporation Offline resource allocation algorithms
US20130145247A1 (en) * 2011-12-06 2013-06-06 Google Inc. Synchronization Service Tree
US10885060B2 (en) 2012-02-28 2021-01-05 International Business Machines Corporation On-demand file synchronization
US9015115B2 (en) * 2012-04-30 2015-04-21 Oracle International Corporation Project management system with asynchronous updating
US20140096009A1 (en) * 2012-09-28 2014-04-03 Interactive Memories, Inc. Methods for Searching for Best Digital Color Options for Reproduction of Image-Based Layouts Created through an Electronic Interface
US10771548B2 (en) 2012-12-07 2020-09-08 Mx Technologies, Inc. Data sync engine, method and software
US11429651B2 (en) * 2013-03-14 2022-08-30 International Business Machines Corporation Document provenance scoring based on changes between document versions
EP2965157B1 (de) * 2013-05-16 2018-09-05 Siemens Aktiengesellschaft Verfahren und vorrichtung zum betreiben einer prozess- und/oder fertigungsanlage
US9632878B1 (en) * 2013-09-20 2017-04-25 Amazon Technologies, Inc. Verification of database table partitions during backup
US9633051B1 (en) 2013-09-20 2017-04-25 Amazon Technologies, Inc. Backup of partitioned database tables
CN103533029B (zh) * 2013-09-26 2017-05-24 广州中国科学院软件应用技术研究所 甘特图数据加载方法及系统
JP5520413B1 (ja) * 2013-11-06 2014-06-11 株式会社アイ・ピー・エス プロジェクトデータ管理サーバ、およびプロジェクトデータ管理プログラム
US10200496B2 (en) * 2014-12-09 2019-02-05 Successfactors, Inc. User interface configuration tool
US9824401B2 (en) * 2015-01-01 2017-11-21 Bank Of America Corporation Data excavator
US10621388B2 (en) * 2016-07-20 2020-04-14 Sap Se Automatic delta query support for backend databases
GB2557892A (en) * 2016-09-12 2018-07-04 Disguise Tech Limited A node and method for stage production management
US11227282B2 (en) 2018-08-20 2022-01-18 Probloch LLC Time-bounded activity chains with multiple authenticated agent participation bound by distributed single-source-of-truth networks that can enforce automated value transfer
WO2020181152A1 (en) * 2019-03-05 2020-09-10 Farrokh Shokooh Utility network project modeling & management
JP2020149330A (ja) * 2019-03-13 2020-09-17 富士ゼロックス株式会社 情報処理装置及びプログラム
US11892985B2 (en) * 2019-09-16 2024-02-06 Aveva Software, Llc Computerized systems and methods for bi-directional file sharing and synchronization on and over a network
CN112675538B (zh) * 2020-12-28 2023-08-01 腾讯科技(深圳)有限公司 数据同步方法、装置、设备及介质
US11816081B1 (en) 2021-03-18 2023-11-14 Amazon Technologies, Inc. Efficient query optimization on distributed data sets
US12314240B1 (en) 2021-03-18 2025-05-27 Amazon Technologies, Inc. Incremental partition index update using bloom filters
US11720548B1 (en) * 2021-03-18 2023-08-08 Amazon Technologies, Inc. Shadow data lakes
EP4080848B1 (en) * 2021-04-22 2024-01-17 ABB Schweiz AG Method and system for synchronizing configuration data in a plant
CN116670599A (zh) * 2021-05-12 2023-08-29 三菱电机株式会社 数据传送程序、服务器装置、终端装置、数据传送方法以及数据传送系统
US20240296461A1 (en) * 2023-03-03 2024-09-05 Mastercard International Incorporated Automatically maintaining content data on a compliance platform

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002170057A (ja) 2000-09-20 2002-06-14 Atlantis:Kk インターネットを利用した消費者からのアイデア募集及び知的財産運用代理システム
WO2004068469A2 (en) 2003-01-17 2004-08-12 Tacit Networks, Inc. Method and system for use of storage caching with a distributed file system

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06324928A (ja) * 1993-05-14 1994-11-25 Mitsubishi Electric Corp ログ生成装置とファイルの異なるバージョンの調停のための装置及び異なる場所にあるコンピュータファイルの異なるバージョンを調停するための装置
US6345259B1 (en) * 1993-09-28 2002-02-05 The Dow Chemical Company System and method for integrating business and manufacturing environments
US6029175A (en) * 1995-10-26 2000-02-22 Teknowledge Corporation Automatic retrieval of changed files by a network software agent
JP3279201B2 (ja) * 1996-05-17 2002-04-30 富士ゼロックス株式会社 情報処理装置
US5826239A (en) * 1996-12-17 1998-10-20 Hewlett-Packard Company Distributed workflow resource management system and method
US5923552A (en) * 1996-12-31 1999-07-13 Buildnet, Inc. Systems and methods for facilitating the exchange of information between separate business entities
US6026410A (en) * 1997-02-10 2000-02-15 Actioneer, Inc. Information organization and collaboration tool for processing notes and action requests in computer systems
US5999947A (en) * 1997-05-27 1999-12-07 Arkona, Llc Distributing database differences corresponding to database change events made to a database table located on a server computer
US5924096A (en) 1997-10-15 1999-07-13 Novell, Inc. Distributed database using indexed into tags to tracks events according to type, update cache, create virtual update log on demand
US6519763B1 (en) * 1998-03-30 2003-02-11 Compuware Corporation Time management and task completion and prediction software
US20010056362A1 (en) * 1998-07-29 2001-12-27 Mike Hanagan Modular, convergent customer care and billing system
US6449622B1 (en) * 1999-03-08 2002-09-10 Starfish Software, Inc. System and methods for synchronizing datasets when dataset changes may be received out of order
US6487469B1 (en) * 1998-11-13 2002-11-26 Texas Instruments Incorporated System and method for integrating schedule and design environments
US6415259B1 (en) * 1999-07-15 2002-07-02 American Management Systems, Inc. Automatic work progress tracking and optimizing engine for a telecommunications customer care and billing system
US6622152B1 (en) * 2000-05-09 2003-09-16 International Business Machines Corporation Remote log based replication solution
US7162499B2 (en) * 2000-06-21 2007-01-09 Microsoft Corporation Linked value replication
US7150015B2 (en) * 2000-09-01 2006-12-12 Pace Charles P Method and system for deploying an asset over a multi-tiered network
JP2002169881A (ja) * 2000-09-20 2002-06-14 Atlantis:Kk ビジネスモデル原案の事業化システム
US6985915B2 (en) 2001-02-28 2006-01-10 Kiran Somalwar Application independent write monitoring method for fast backup and synchronization of files
US7092972B2 (en) * 2002-05-09 2006-08-15 Sun Microsystems, Inc. Delta transfers in distributed file systems

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002170057A (ja) 2000-09-20 2002-06-14 Atlantis:Kk インターネットを利用した消費者からのアイデア募集及び知的財産運用代理システム
WO2004068469A2 (en) 2003-01-17 2004-08-12 Tacit Networks, Inc. Method and system for use of storage caching with a distributed file system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12407752B2 (en) 2012-02-24 2025-09-02 Samsung Electronics Co., Ltd. Data sharing apparatus and method of mobile terminal
US20230306029A1 (en) * 2022-03-25 2023-09-28 Atlassian Pty Ltd. Systems and methods for loading content

Also Published As

Publication number Publication date
EP1640881A2 (en) 2006-03-29
CN1755720A (zh) 2006-04-05
KR20060048712A (ko) 2006-05-18
US8005710B2 (en) 2011-08-23
JP4986418B2 (ja) 2012-07-25
JP2006099730A (ja) 2006-04-13
EP1640881A3 (en) 2006-12-27
US20060070019A1 (en) 2006-03-30

Similar Documents

Publication Publication Date Title
US8005710B2 (en) Methods and systems for caching and synchronizing project data
KR101213918B1 (ko) 문서에서 변화를 추적하기 위한 방법 및 시스템
US9020887B2 (en) Managing the status of documents in a distributed storage system
US8826281B2 (en) Managing document publication using time-driven job scheduling
US20070239725A1 (en) Active cache offline access and management of project files
US10313285B1 (en) System and method for analyzing and filtering journaled electronic mail
JP2003520363A (ja) 部分的に複製されるデータベースシステムのネットワークにおけるデータメンテナンス方法
US10346365B2 (en) Storing temporary state data in separate containers
EP1480130B1 (en) Method and apparatus for moving data between storage devices
US20190073424A1 (en) Cloud-native documents integrated with legacy tools
CN101310265B (zh) 生产性套件到业务线的同步机制
US12430324B2 (en) Issue tracking systems and methods for a configurable project hierarchy
KR101661789B1 (ko) 양방향 동기 중에 자기 참조 필드의 동기
JP5006324B2 (ja) サーバ側のプロジェクトマネージャ
US20060004597A1 (en) Method and system for grouping events
US7698280B2 (en) Active cache offline sharing of project files
US7584219B2 (en) Incremental non-chronological synchronization of namespaces
CN101167091A (zh) 用于企业软件系统的导出队列
CN100485640C (zh) 用于企业软件系统的高速缓存
US8775382B2 (en) View maintenance on multiple tables located in different software components with the same primary keys
CN120335889A (zh) 一种多集群Kubernetes配置管理方法及其系统
CN113051219A (zh) 一种数据库管理方法、装置、设备及存储介质
JP2008210138A (ja) 業務スケジュール連動型ファイル・リロケーション・システム

Legal Events

Date Code Title Description
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

P22-X000 Classification modified

St.27 status event code: A-2-2-P10-P22-nap-X000

A201 Request for examination
P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

R17-X000 Change to representative recorded

St.27 status event code: A-3-3-R10-R17-oth-X000

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

E13-X000 Pre-grant limitation requested

St.27 status event code: A-2-3-E10-E13-lim-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

E90F Notification of reason for final refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

E701 Decision to grant or registration of patent right
P22-X000 Classification modified

St.27 status event code: A-2-2-P10-P22-nap-X000

PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U11-oth-PR1002

Fee payment year number: 1

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R13-asn-PN2301

St.27 status event code: A-5-5-R10-R11-asn-PN2301

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R11-asn-PN2301

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R14-asn-PN2301

FPAY Annual fee payment

Payment date: 20151118

Year of fee payment: 4

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 4

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

FPAY Annual fee payment

Payment date: 20161123

Year of fee payment: 5

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 5

FPAY Annual fee payment

Payment date: 20171117

Year of fee payment: 6

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 6

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

FPAY Annual fee payment

Payment date: 20181115

Year of fee payment: 7

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 7

R17-X000 Change to representative recorded

St.27 status event code: A-5-5-R10-R17-oth-X000

PC1903 Unpaid annual fee

St.27 status event code: A-4-4-U10-U13-oth-PC1903

Not in force date: 20191213

Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

PC1903 Unpaid annual fee

St.27 status event code: N-4-6-H10-H13-oth-PC1903

Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

Not in force date: 20191213