KR20060118315A - 정적 및 동적 리스트의 사용을 포함하는 가상 폴더 및 항목분배 시스템 및 방법 - Google Patents

정적 및 동적 리스트의 사용을 포함하는 가상 폴더 및 항목분배 시스템 및 방법 Download PDF

Info

Publication number
KR20060118315A
KR20060118315A KR1020057009159A KR20057009159A KR20060118315A KR 20060118315 A KR20060118315 A KR 20060118315A KR 1020057009159 A KR1020057009159 A KR 1020057009159A KR 20057009159 A KR20057009159 A KR 20057009159A KR 20060118315 A KR20060118315 A KR 20060118315A
Authority
KR
South Korea
Prior art keywords
item
distributor
items
list
access
Prior art date
Application number
KR1020057009159A
Other languages
English (en)
Other versions
KR101120755B1 (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
Priority claimed from US10/691,841 external-priority patent/US7526483B2/en
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060118315A publication Critical patent/KR20060118315A/ko
Application granted granted Critical
Publication of KR101120755B1 publication Critical patent/KR101120755B1/ko

Links

Images

Classifications

    • 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
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/168Details of user interfaces specifically adapted to file systems, e.g. browsing and visualisation, 2d or 3d GUIs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • G06F16/1787Details of non-transparently synchronising file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems
    • G06F16/192Implementing virtual folder structures
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99939Privileged access
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Business, Economics & Management (AREA)
  • Economics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

정적 및 동적 리스트의 사용을 포함하는 가상 폴더 및 항목 분배를 위한 시스템 및 방법이 개시된다. 정적 및 동적 리스트는 가상 폴더의 타입으로서 생성될 수 있다. 가상 폴더들은 디스크 상의 실제의 물리적 기초 파일 시스템 구조 대신에 그들의 메타데이타에 기초하여 상이한 뷰로 사용자에게 정규 파일 및 폴더를 표시한다. 정적 리스트는 특정 순서를 갖는 항목들의 폴더로 구성되며, 동적 리스트는 하나의 범위 및 한 세트의 기준들에 기초하여 한 세트의 항목들을 수집한다. 리스트가 분배될 때, 실제 리스트는 분배자의 머신 또는 서버 상에 그대로 남겨지며, 리스트 및 참조 항목들에 원격 액세스할 수 있는 사용 권한이 피분배자에게 제공된다. 항목들을 추가 또는 삭제함으로써 리스트가 변경되는 경우, 피분배자가 이 항목들에 액세스하는 것을 허용하거나 허용하지 않기 위해 항목들이 자동으로 재허가된다. 분배자는 또한 문서, 콘택, 및 이메일 등과 같은 개별 항목들을 분배하도록 선택할 수 있다. 분배 프로세스를 시작하기 위하여, 사용자는 분배될 항목들을 선택한다. 이어서, 사용자는 항목들을 분배할 피분배자, 및 상기 피분배자에게 할당되는 사용 권한을 선택한다. 항목들이 분배될 때, 이들은 분배자의 머신 상에 그대로 남겨지며, 시스템은 사용 권한이 설정되고, 임의의 보안 문제가 처리되어 피분배자가 항목들에 액세스할 수 있는 것을 보장한다. 또한, 분배 트랜잭션의 상세는 후속 리뷰를 위해 추적 및 기록될 수 있다. 분배자는 또한 시스템이 분배자의 머신으로부터 분배 항목들에 직접 액세스하기 위한 링크를 피분배자에게 전 송하게 할 수 있따. 피분배자는 또한 분배자가 피분배자와 분배하고 있는 것을 보기 위해 분배자의 머신에 질의할 수 있다.
가상 폴더, 정적 리스트, 동적 리스트, 분배자, 피분배자

Description

정적 및 동적 리스트의 사용을 포함하는 가상 폴더 및 항목 분배 시스템 및 방법{SYSTEM AND METHOD FOR VIRTUAL FOLDER AND ITEM SHARING INCLUDING UTILIZATION OF STATIC AND DYNAMIC LISTS}
본 발명의 실시예는 컴퓨터 파일 시스템에 관한 것으로, 보다 상세하게는 가상 폴더 및 항목을 분배하기 위한 시스템 및 방법에 관한 것이다.
파일 및 폴더의 분배는 항상 어려운 작업이었다. 공지 시스템에서, 사용자는 종종, 단지 전체 폴더를 분배하도록 제한된다. 사용자는 일반적으로 개별 파일을 분배할 수 있는 능력을 갖지 못한다. 파일을 분배하기 위하여, 사용자는 일반적으로 폴더를 생성하고, 이 폴더 내에 원하는 파일을 구성한 후 이 폴더를 분배해야 했다.
파일들의 분배는 사용자들이 또한 상이한 장치들, 다른 PC들 또는 온라인과 같은 상이한 위치에 있는 파일들을 처리해야 한다는 사실에 의해 더 복잡했었다. 상이한 위치에 있는 파일들은 종종 다르게 구성되며, 동일 방식으로 또는 동일 장소에 유지되지 않는다. 또 하나의 예로서, 기업 네트워크 상에 저장된 파일들은 사용자가 현재의 머신 상에 갖고 있는 파일들로부터 고유하게 분리될 수 있다. 사용자들은 또한 어떤 파일 데이타가 저장되는지 뿐만 아니라 어디에 저장되는지에 대해서도 계속 추적해야 한다. 예를 들어, 음악 파일에 대해, 사용자는 다양한 시스템 상에 사본들을 유지하고 어느 음악 파일이 어디에 위치하는지를 추적하려고 노력해야 한다. 이것은 파일들이 구내에 저장된 경우에도 파일들을 찾기 어렵게 할 수 있다.
파일들의 분배는 또한 사용자가 가진 파일들을 발견하여 리턴하는 것도 종종 어렵다는 사실로 인해 복잡해진다. 사용자는 소정의 파일들을 어디에, 어떻게 저장했는지를 상기하는 것이 어렵다는 것을 발견할 수 있다. 한 세트의 폴더, 심지어 한 그룹의 유사한 파일들이 주어질 때, 사용자들은 종종 이들이 찾고 있는 것을 빨리 찾는 것이 어렵다는 것을 알게 된다. 발견하기 어려운 장소에 저장된 파일들에 대해, 이 파일들을 찾는 것은 훨씬 더 복잡하다. 종종, 사용자들이 네트워크 상에서 파일들을 발견하거나 리턴하는 것도 어렵다. 사용자들은 일반적으로 이들이 네트워크 상에서 파일들을 발견하고 분배하기 위해 필요로 하는 다양한 사이트 및 명칭을 기억하거나 맵핑해야 한다.
파일의 구성 및 분배는 또한, 명칭 공간들이 변경될 수 있으며, 이것은 무엇이 올바른 것인지에 대해 사용자에게 혼란을 야기할 수 있다는 사실로 인해 복잡해진다. 이것은 특히 상이한 명칭 규정, 제한 등이 존재하는 네트워크 상에서 진실이다. 예를 들어, 소정의 오퍼레이팅 시스템은 명칭이 보일 수 있도록 공간을 갖지 않는 짧은 명칭을 요구할 수 있다. 또한, 프로그램들은 종종 그들 자신의 디렉토리 또는 다른 명칭 공간에 파일을 저장하는데, 이것은 사용자들이 그들의 파일로 돌아가는 방법을 찾는 것을 어렵게 할 수 있다. 프로그램들은 종종 이들이 문서를 저장하는 디폴트 디렉토리 및 장소를 갖는다. 사용자는 종종 그들의 하드 디스크를 검색하여 파일이 어디에 저장되어 있는지를 추정해야 한다. 또한, 관련 항목들은 종종 분리된 장소들에 저장된다. 사용자가 갖고 있는 관련 파일들은 하드 디스크 등의 상이한 부분들에 저장될 수 있다. 이러한 프로그램은 다양한 컨텐츠 타입(예를 들어, 그림, 음악, 비디오)을 가진 디지탈 매체 서비스의 개발과 함께 보다 일반화되고 있다.
본 발명의 실시예는 전술한 단점 및 기타 단점을 극복하는 시스템 및 방법을 제공하는 것과 관련된다. 구체적으로, 본 발명의 실시예는 항목을 분배하기 위한 시스템 및 방법과 관련된다.
정적 및 동적 리스트의 사용을 포함하는 가상 폴더 및 항목 분배를 위한 시스템 및 방법이 제공된다. 정적 및 동적 리스트는 가상 폴더의 타입으로 생성될 수 있다. 본 발명의 일 양태에 따르면, 사용자는 질의를 구축하고, 항목들을 발견한 후, 이 항목들을 다른 사용자들에게 분배할 수 있다. 사용자는 질의를 통해 찾은 항목들(정적 리스트)만을 분배하거나, 그밖에 이 찾은 항목들 플러스 미래의 기준들을 만족시키는 다른 항목들(동적 리스트)을 분배할 수 있는 옵션을 갖는다. 이러한 타입의 리스트들은 디스크 상의 실제의 물리적 기초 파일 시스템 구조 대신에 그들의 메타데이타에 기초하여 상이한 뷰로 사용자에게 항목들을 표시하는 가상 폴더의 특성을 이용한다.
본 발명의 다른 양태에 따르면, 정적 리스트는 특정 순서를 갖고 각각의 항목 상에 배치된 주석을 선택적으로 가질 수 있는 항목들의 폴더를 포함한다. 이들 주석은 항목의 일부가 아니라 실제 리스트에 속한다. 정적 리스트의 몇 가지 예는 쇼핑 리스트, 음악 재생 리스트, 및 그림들의 슬라이드 쇼이다. 본 발명에 따르면, 사용자는 다른 사용자들과 정적 리스트를 분배할 수 있다. 정적 리스트가 분배될 때, 실제의 정적 리스트는 분배자의 머신 또는 서버 상에 그대로 남고, 리스트 및 참조 항목들에 액세스할 수 있는 사용 권한이 피분배자들에게 제공된다. 허가된 사용 권한은 분배 시기에 분배자가 지정하는 것에 의해 판정된다. 예를 들어, 분배자는 판독 전용 액세스 또는 판독-기입 액세스 등으로 피분배자와 리스트를 분배하는 것으로 결정할 수 있다. 분배자가 항목들에 대한 사용 권한을 제공할 수 없는 경우에(분배자가 이러한 동작을 행하기 위한 사용 권한을 갖고 있지 않기 때문에), 분배자는 피분배자가 그 항목에 액세스할 수 없다는 것을 분배 시간에 통지받는다. 이 프로세스의 마지막에, 피분배자는 분배자의 컴퓨터로부터 리스트 및 그의 참조 항목들에 원격 액세스할 수 있다. 분배자가 나중에 항목들을 추가 또는 삭제함으로써 리스트를 변경하는 경우, 이들 항목은 또한 피분배자의 이 항목들에 대한 액세스를 허용하거나 허용하지 않기 위해 자동으로 재허가된다. 일 실시예에서는, 항목들이 정적 리스트로부터 나오고 들어갈 때 항목들을 동적으로 재허가하는 것도 가능한데, 이는 정적 리스트의 실제 정의가 정적 리스트가 변경될 때 모니터될 수 있는 데이타베이스 내에 상주하기 때문이다.
본 발명의 또 다른 양태에 따르면, 동적 리스트는 하나의 범위 플러스 한 세트의 기준들에 기초하는 한 세트의 항목들을 포함한다. 예를 들어, 사용자는 로컬 머신 상의 모든 데이타 스토리지로서 정의되는 범위 및 저자=X의 기준을 가진 질의를 생성할 수 있다. 사용자가 동적 리스트를 갖는 경우, 이것은 분배될 수 있다. 사용자가 동적 리스트를 분배할 때, 다음의 동작들이 수행된다. 사용자가 그 시각에 현재 동적 리스트에 있는 항목들만을 분배하기를 원하는지, 또는 그밖에 미래에 동적 리스트로부터 들어가고 나오는 임의의 항목들을 분배하기를 원하는지에 대한 초기 판정이 이루어진다. 사용자가 현재 동적 리스트에 존재하는 항목들만을 분배하기를 원하는 경우, 무엇이 동적 리스트에 있는지를 나타내는 정적 리스트가 생성되고, 이 정적 리스트가 분배된다. 대신에 사용자가 진정한 동적 리스트를 분배하기를 원하는 경우, 동적 리스트의 기준들을 만족시키는 모든 항목들이 분배된다. 이것은 항목들이 분배가 발생하고 있는 머신 상에 그대로 남고, 피분배자가 항목들에 액세스하는 것을 허용하기 위해 항목들이 허가된다는 것을 의미한다. 분배자가 항목들에 대한 사용 권한을 허가할 수 없는 경우에(예를 들어 분배자가 이러한 동작을 행하기 위한 사용 권한을 갖고 있지 않을 때), 분배자는 피분배자가 항목들에 액세스할 수 없다는 것을 분배 시간에 통지받는다. 이 프로세스의 마지막에, 피분배자는 분배자의 컴퓨터로부터 리스트 및 그의 참조 항목들에 원격 액세스할 수 있다. 동적 리스트 내의 임의의 항목들이 그들의 특성을 변경하여 이들이 동적 리스트의 기준들을 더 이상 만족시키지 못할 경우, 이들 항목들은 적절히 재허가된다. 같은 방식으로, 동적 리스트에 속하지 않는 임의의 항목들이 변경되어 이들이 동적 리스트의 범위 내에 들고, 동적 리스트의 기준들을 만족시키는 경우, 이들도 동적 리스트를 분배하는 사용자들에게 액세스를 제공하도록 재허가된다.
본 발명의 또 다른 양태에 따르면, 사용자는 또한 개별 항목들을 분배하도록 선택할 수 있다. 분배 프로세스는 사용자(분배자라고도 함)가 분배될 항목들을 선택하는 것으로 시작된다. 사용자는 또한 항목들을 함께 분배할 피분배자, 및 피분배자에게 할당될 사용 권한을 선택한다. 한 사용 권한 타입의 예는 항목에 대한 판독 액세스만을 제공하는 것이다.
본 발명의 또 다른 양태에 따르면, 분배될 항목들은 분배자의 머신 상에 그대로 남는다. 즉, 분배될 항목들은 이동하지 않으며, 대신 피분배자는 분배자의 머신 상에서 항목들에 대한 액세스를 제공받는다. 이 프로세스의 일부로서, 시스템은 피분배자가 분배될 항목들에 액세스할 수 있는지를 확인한다.
본 발명의 또 다른 양태에 따르면, 시스템은 분배될 항목들이 피분배자에 의해 원격 액세스되는 것을 허용한다. 예를 들어, 파일 쉐어들이 사용되는 일 실시예에서, 시스템은 분배될 항목들이 액세스될 수 있는 파일 쉐어가 존재하는지를 확인한다. 시스템은 먼저 분배되는 항목에 대한 파일 쉐어가 이미 존재하는지를 알기 위해 검사한다. 파일 쉐어가 이미 존재하는 경우, 시스템은 이 파일 쉐어를 사용하여 항목을 원격 이용할 수 있게 만들며, 피분배자가 항목들에 액세스하는 것을 허용하도록 파일 쉐어에 대한 사용 권한이 정당하다는 것을 보장한다.
본 발명의 또 다른 양태에 따르면, 시스템은 액세스 제어 리스트(ACL) 및 임의의 다른 사용 권한이 설정되는지를 확인한다. 이 프로세스의 일부로서, 사용자가 항목들을 분배할 때, 사용자는 이들이 누구와 항목들을 분배하기를 원하는지에 대해 문의된다. 이때, 사용자는 또한 이들이 피분배자에게 어떤 사용 권한을 허가하기를 원하는지에 대해 문의된다. 예를 들어, 피분배자는 항목을 판독만 할 수 있는 사용 권한을 허가받거나, 대안으로 항목을 변경할 수 있는 사용 권한을 허가받을 수 있다. 사용자가 피분배자에 대해 요구하는 사용 권한에 기초하여, 항목들 상의 보안 ACL이 적절히 설정되며, 사용자에 의해 요구되는 사용 권한들이 제공된다.
본 발명의 또 다른 양태에 따르면, 시스템은 암호화 파일 시스템(EFS) 및 디지탈 판권 관리(DRM)와 같은 보호 시스템으로 임의의 문제를 해결한다. 즉, 소정의 예에서, 사용자는 EFS와 같은 것에 의해 보호되는 항목들을 분배할 수 있다. 이 경우, 시스템은 머신 상의 정책 또는 항목 상의 DRM에 의해 허용되는 경우 항목들이 분배될 수 있도록 보장하려고 시도한다.
본 발명의 또 다른 양태에 따르면, 시스템은 피분배자가 시스템에 원격적으로 접속하고, 존재하는 임의의 보안 계층들을 통해 분배 자원에 안전하게 액세스할 수 있게 해준다. 예를 들어, 보안 계층들 중 하나가 방화벽인 일 실시예에서, 시스템은 방화벽을 구성한다. 즉, 디폴트에 의해, 방화벽은 대부분의 컴퓨터 상에 인에이블된다. 방화벽 또는 기타 보안 계층들이 인에이블되는 동안 사용자들이 여전히 안전하게 항목들을 분배할 수 있도록 보장하는 것이 바람직하다.
본 발명의 또 다른 양태에 따르면, 분배 트랜잭션의 상세가 기록된다. 즉, 분배 동작이 완료되면, 시스템은 트랜잭션에 대한 정보를 기록한다. 추적되는 정보는 무엇이 분배되었는지, 누구에게 분배되었는지, 그리고 언제 분배되었는지 등을 포함한다. 이러한 정보를 추적하고 기록함으로써, 분배자는 그들의 머신으로부터 분배된 모든 항목들이 무엇인지, 그들이 이 항목들을 누구에게 분배하였는지, 그리고 피분배자들이 어떤 액세스를 가졌는지를 나중에 결정할 수 있다.
본 발명의 또 다른 양태에 따르면, 항목들을 쉽게 발견할 수 있도록 하기 위하여, 분배자는 또한 시스템이 피분배자에게 분배자의 머신으로부터 직접 분배 항목들에 액세스할 수 있는 링크를 전송하도록 할 수 있다. 피분배자는 또한 분배자가 피분배자와 무엇을 분배하고 있는지를 알기 위해 분배자의 머신에 질의할 수 있다.
전술한 본 발명의 실시예들은 사용자가 문서, 콘택 및 이메일과 같은 개별 항목들을 분배하는 것을 허용한다는 것을 알 것이다. 이것은 사용자가 폴더를 분배하는 것만을 허용하고 개별 파일, 항목 또는 리스트 분배에 대한 개념을 갖지 않는 공지 시스템과 대조적이다. 본 발명을 이용함으로써 사용자는 그들의 데이타를 분배하기 위해 그들의 데이타를 폴더 내에 구성할 필요가 더 이상 없다. 사용자들은 간단히 항목들을 선택하여 이들을 분배할 것을 결정할 수 있다. 이것은 또한 보안 관점에서 사용자에게 추가적인 레벨의 입도를 제공한다. 이전에, 사용자들은 폴더들만을 분배할 수 있었다. 이들이 이것을 행할 때, 이들은 폴더 레벨에서 이들이 함께 분배하고 있는 사용자들에 대한 사용 권한을 설정했다. 사용자들은 폴더 레벨에서 사용 권한을 허가받았으며, 폴더 내의 모든 항목들은 동일한 사용 권한을 가졌을 것이다. 개별 항목 분배에 의해, 사용자는 다양한 피분배자와 함께 폴더 내의 개별 항목들을 쉽게 분배할 수 있으며, 피분배자 각각에게 상이한 사용 권한을 허가할 수 있다. 또한, 피분배자는 분배 항목들이 분배자 머신 상의 어디에 있는지에 대해 걱정할 필요가 없다. 분배자는 그들의 머신 상의 10개의 상이한 위치에서 10개의 항목을 분배할 수 있지만, 피분배자는 이로부터 제외된다. 또한, 피분배자는 분배자의 머신에 접속하여, 그들에게 이용 가능한 모든 항목들의 리스트를 리턴받을 수 있다.
본 발명의 전술한 특징들 및 많은 부수적인 이점들은 첨부된 도면과 함께 아래의 상세한 설명을 참조함으로써 본 발명이 잘 이해될 때 보다 쉽게 이해될 것이다.
도 1은 본 발명의 실시예를 구현하는 데 적합한 범용 컴퓨터 시스템의 블록도이다.
도 2는 가상 폴더 시스템의 블록도이다.
도 3은 사용자가 선택된 파일들 및 폴더들을 철회(draw back)하는 질의를 제공하는 루틴의 흐름도이다.
도 4는 가상 폴더들이 디폴트 질의 또는 사용자로부터의 질의에 따라 구축되고 스크린 상에 표시되는 루틴의 흐름도이다.
도 5는 하드 드라이브 상의 물리적 폴더 배열에 따른 폴더 구조의 트리도.
도 6은 가상 폴더 구조의 트리도이다.
도 7은 클라이언트 스택이 약정들(contracts) 및 연도(year)에 의해 더 필터링되는 도 6의 가상 폴더 구조의 트리도이다.
도 8은 클라이언트 스택의 약정들이 연도에 의해 더 필터링되는 도 7의 가상 폴더 구조의 트리도이다.
도 9는 약정 스택이 클라이언트 및 연도에 의해 더 필터링되는 도 6의 가상 폴더 구조의 트리도로서, 클라이언트는 여전히 연도에 의해 더 필터링됨.
도 10은 문서 라이브러리의 스택들을 나타내는 스크린 표시의 도면이다.
도 11은 도 10의 ABC Corp. 스택 내의 문서를 나타내는 스크린 표시의 도면이다.
도 12는 스택킹 기능이 도 11의 문서들에 대해 선택되는 스크린 표시의 도면이다.
도 13은 "저자에 의한 스택(stack by author)" 파라미터가 도 12의 스택킹 기능에 대해 선택되는 스크린 표시의 도면이다.
도 14는 도 13의 파일들이 저자에 의해 스택된 스크린 표시의 도면이다.
도 15는 스택킹 기능이 선택되고, "카테고리에 의한 스택" 옵션이 도 14의 파일들을 리스택킹하기 위해 더 선택되는 스크린 표시의 도면이다.
도 16은 도 14의 파일들이 카테고리에 의해 리스택된 스크린 표시의 도면이다.
도 17은 물리적 폴더들을 나타내기 위한 고속 링크가 선택되는 스크린 표시의 도면이다.
도 18은 도 17의 가상 폴더 스택들의 파일들을 포함하는 물리적 폴더들이 도시되는 스크린 표시의 도면이다.
도 19는 사용자가 가상 폴더들을 직접 조작할 수 있는 루틴의 흐름도이다.
도 20은 새로운 "웨스트 코스트(WEST COAST)" 스택이 도 10의 스택들에 추가된 스크린 표시의 도면이다.
도 21은 "ABC Corp." 스택에서 도 20의 "웨스트 코스트" 스택으로 파일들을 복사하기 위해 직접 조작이 이용되는 스크린 표시의 도면이다.
도 22는 시스템이 새로운 필터 용어들을 동적으로 발생시키는 루틴의 흐름도이다.
도 23은 시스템이 필터 용어의 선택에 기초하여 항목들을 필터링하는 루틴의 흐름도이다.
도 24는 도 10의 스택들이 용어 "AB"에 의해 필터링된 스크린 표시의 도면이다.
도 25는 도 10의 스택들이 용어 "ABC"에 의해 필터링된 스크린 표시의 도면이다.
도 26은 필터 용어 "year 2002"이 도 10의 스택들에 대해 선택되는 스크린 표시의 도면이다.
도 27은 도 10의 스택들이 "year 2002" 및 필터 용어 "month"의 추가 선택에 의해 필터링된 스크린 표시의 도면이다.
도 28은 필터링을 위한 달을 선택하기 위해 리스트가 제공되는 스크린 표시의 도면이다.
도 29는 도 10의 스택들이 1월 달에 의해 더 필터링된 스크린 표시를 나타내고, "day"의 필터 용어를 더 나타내는 도면이다.
도 30은 새로운 고속 링크를 생성하기 위한 루틴의 흐름도이다.
도 31은 도 29의 필터링에 기초하여 "January Work"라고 하는 새로운 고속 링크를 생성하기 위한 스크린 표시의 도면이다.
도 32는 "All Authors"의 고속 링크가 선택되는 스크린 표시의 도면이다.
도 33은 도 32의 모든 저자들의 리스트가 제공되는 스크린 표시의 도면이다.
도 34는 "Author 1"이 도 33의 리스트로부터 선택되고 Author 1의 문서들 모두가 도시되는 스크린 표시의 도면이다.
도 35는 새로운 라이브러리를 생성하기 위한 루틴의 흐름도이다.
도 36은 다양한 이용가능 라이브러리의 집합이 도시되는 스크린 표시의 도면이다.
도 37은 가상 폴더 집합의 범위를 정의하기 위한 루틴의 흐름도이다.
도 38은 가상 폴더 집합의 범위를 형성할 수 있는 다양한 소스들의 블록도이다.
도 39는 가상 폴더 집합에 논-파일 항목들을 포함시키기 위한 루틴의 흐름도이다.
도 40은 가상 폴더에 포함된 다양한 논-파일 항목들을 나타내는 스크린 표시의 도면이다.
도 41은 정적 리스트 및 한 세트의 참조 항목들을 포함하는 메모리 시스템의 블록도이다.
도 42는 정적 리스트를 분배하기 위한 루틴의 흐름도이다.
도 43은 정적 리스트로부터 삭제/추가되는 항목들을 재허가하기 위한 루틴의 흐름도이다.
도 44는 동적 리스트를 생성하기 위한 루틴의 흐름도이다.
도 45는 동적 리스트 및 한 세트의 참조 항목들을 포함하는 메모리 시스템의 블록도이다.
도 46은 동적 리스트를 분배하기 위한 루틴의 흐름도이다.
도 47은 동적 리스트로부터 삭제/추가되는 항목들을 재허가하기 위한 루틴의 흐름도이다.
도 48은 항목이 제거된 동적 리스트를 포함하는 메모리 시스템의 블록도이다.
도 49는 항목이 추가된 동적 리스트를 포함하는 메모리 시스템의 블록도이다.
도 50은 분배 API를 호출하기 위한 루틴의 흐름도이다.
도 51a-51l은 파일 분배 시스템에서 사용될 수 있는 프로그래밍 인터페이스의 다양한 구현을 나타내는 블록도이다.
도 52는 항목들을 분배하기 위한 루틴의 흐름도이다.
도 53은 선택된 피분배자가 분배되도록 선택된 항목들에 액세스할 수 있는 것을 보장하기 위한 루틴의 흐름도이다.
도 54는 항목들이 액세스될 수 있는 파일 쉐어가 존재하는지를 확인하기 위한 루틴의 흐름도이다.
도 55는 ACL 및 임의의 다른 사용 권한이 설정되는지를 확인하기 위한 루틴의 흐름도이다.
도 56은 EFS 및 DRM으로 임의의 문제를 해결하기 위한 루틴의 흐름도이다.
도 57은 방화벽을 구성하기 위한 루틴의 흐름도이다.
도 58은 트랜잭션 데이타를 기록하기 위한 루틴의 흐름도이다.
도 59는 분배 헬퍼 루틴(sharing helper routine)의 페이지들 사이의 네비게이션의 블록도이다.
항목들을 분배하기 위한 시스템 및 방법이 제공된다. 항목들은 개별적으로 분배되거나 리스트의 일부로서 포함될 수 있다. 정적 및 동적 리스트는 가상 폴더의 타입으로 생성될 수 있다. 가상 폴더들은 현재 파일 시스템에 사용되는 동일 또는 유사한 사용자 인터페이스를 사용한다. 가상 폴더들은 디스크 상의 실제의 물리적 기초 파일 시스템 구조 대신에 그들의 메타데이타에 기초하여 상이한 뷰로 사용자에게 정규 파일 및 폴더(디렉토리라고도 함)를 표시한다. 현재 파일 시스템을 관리하는 데 사용되는 것과 유사한 제어들을 이용하여 사용자들이 그들의 파일 및 폴더를 조작하는 것을 허용하는 위치 독립적인 뷰들이 생성된다. 일반적으로, 이것은 사용자들이 시스템의 개별 부분으로서 행해지는 관리 및 구성 대신에 파일들 자체 내의 고유 특성들에 기초하여 그들의 파일들을 구성하고 재배열할 수 있다는 것을 의미한다. 가상 폴더들은 동일 컴퓨터 내의 다수의 디스크 드라이브로부터, 다수의 컴퓨터들 사이에서, 또는 상이한 네트워크 위치들에서와 같은 상이한 물리적 위치들로부터의 파일 또는 항목을 표현할 수 있으며, 따라서 파일들 또는 항목들의 하나의 뷰가 상이한 물리적 위치들에 있는 파일 또는 항목을 표시할 수 있다. 일 실시예에서, 상이한 항목들 또는 파일들은 포함되기 위해 IP 네트워크를 접속되는 것만이 필요하다.
가상 폴더 모델링은 또한 통상적인 논-파일 엔티티들에 대해서도 사용될 수 있다. 이에 대한 응용은 통상적인 논-파일 엔티티를 표시하기 위해 파일 및 폴더(즉, 객체 및 컨테이너)와 유사한 한 세트의 사용자 인터페이스를 구비하는 것이다. 이러한 논-파일 엔티티의 일례는 이메일이며, 또 하나의 예는 콘택 데이타베이스로부터의 콘택 정보일 것이다. 이러한 방식으로, 가상 폴더들은 표시되는 데이타가 파일들로부터인지 논-파일 엔티티로부터인지에 관계없이 동작하는 위치 독립식 메타데이타 기반 뷰 시스템을 제공한다. 일반적으로, 이러한 양태들은 사용자들이 다양한 데이타 타입의 풍부한 통합을 도입하는 것은 물론 일반 사용자 인터페이스 기법들(드래그 앤드 드롭, 더블 클릭 등)을 이용하여 그들의 파일 및 데이타를 조작할 수 있다는 면에서 보다 많은 유연성을 허용한다.
도 1 및 아래의 설명은 본 발명의 실시예가 구현될 수 있는 적절한 컴퓨팅 환경의 간단하고 일반적인 설명을 제공한다. 요구되는 것은 아니지만, 본 발명은 개인용 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행 가능 명령과 일반적으로 관련하여 설명된다. 일반적으로, 프로그램 모듈들은 특정 작업을 수행하거나 특정 추상 데이타 타입들을 구현하는 루틴, 프로그램, 문자, 컴포넌트, 데이타 구조 등을 포함한다. 본 발명은 핸드헬드 장치, 멀티프로세서 시스템, 마이크 로프로세서 기반 또는 프로그래머블 소비자 전자 장치, 네트워크 PC, 미니컴퓨터, 메인 프레임 컴퓨터 등을 포함하는 다른 컴퓨터 시스템 구성들에 의해 실시될 수 있다는 것을 당업자는 이해할 것이다. 본 발명은 또한 작업들이 통신 네트워크를 통해 링크된 원격 프로세싱 장치들에 의해 수행되는 분산 컴퓨팅 환경에서도 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈들은 로컬 및 원격 메모리 스토리지 장치들에 위치할 수 있다.
도 1을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 프로세싱 유닛(21), 시스템 메모리(22), 및 시스템 메모리(22)를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(21)에 결합시키는 시스템 버스(23)를 포함하는 통상의 개인용 컴퓨터(20)의 형태의 범용 컴퓨팅 장치를 포함한다. 시스템 버스(23)는 메모리 버스 또는 메모리 제어기, 주변 버스 및 다양한 버스 아키텍쳐 중 임의의 것을 이용하는 로컬 버스를 포함하는 여러 타입의 버스 구조 중 어느 하나일 수 있다. 시스템 메모리는 ROM(24) 및 RAM(25)을 포함한다. 예를 들어 시동시에 개인용 컴퓨터(20) 내의 요소들 사이에 정보를 전송하는 것을 돕는 기본 루틴들을 포함하는 기본 입출력 시스템(BIOS; 26)은 ROM(24)에 저장된다. 개인용 컴퓨터(20)는 또한 하드 디스크(39)에 대한 판독 및 기입을 위한 하드 디스크 드라이브(27), 분리식 자기 디스크(29)에 대한 판독 및 기입을 위한 자기 디스크 드라이브(28), CD-ROM 또는 기타 광학 매체와 같은 분리식 광 디스크(31)에 대한 판독 및 기입을 위한 광 디스크 드라이브(30)를 포함한다. 하드 디스크 드라이브(27), 자기 디스크 드라이브(28) 및 광 디스크 드라이브(30)는 하드 디스크 드라이브 인터페이스(32), 자기 디스크 드라이브 인터페이스(33) 및 광 디스크 드라이브 인터페이스(34) 각각에 의해 시스템 버스(23)에 접속된다. 드라이브들 및 관련 컴퓨터 판독 가능 매체는 컴퓨터 판독 가능 명령, 데이타 구조, 프로그램 모듈 및 개인용 컴퓨터(20)를 위한 기타 데이타의 불휘발성 스토리지를 제공한다. 여기에 설명되는 예시적인 환경이 하드 디스크(39), 분리식 자기 디스크(29) 및 분리식 광 디스크(31)를 사용하지만, 자기 카세트, 플래시 메모리 카드, 디지탈 비디오 디스크, 베르누이 카트리지, RAM, ROM 등과 같이 컴퓨터에 의해 액세스될 수 있는 데이타를 저장할 수 있는 다른 타입의 컴퓨터 판독 가능 매체들도 예시적인 컴퓨팅 환경에서 사용될 수 있다는 것을 당업자는 이해할 것이다.
오퍼레이팅 시스템(35), 하나 이상의 애플리케이션 프로그램(36), 다른 프로그램 모듈(37) 및 프로그램 데이타(38)를 포함하는 다수의 프로그램 모듈이 하드 디스크(39), 자기 디스크(29), 광 디스크(31), ROM(24) 또는 RAM(25)에 저장될 수 있다. 사용자는 키보드(40) 및 포인팅 장치(42)와 같은 입력 장치를 통해 개인용 컴퓨터(20)에 명령 또는 정보를 입력할 수 있다. 다른 입력 장치(도시되지 않음)로는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등이 있다. 이들 및 다른 입력 장치들은 종종 시스템 버스(23)에 접속된 직렬 포트 인터페이스(46)를 통해 프로세싱 유닛(21)에 접속되지만, 병렬 포트, 게임 포트 도는 유니버셜 직렬 버스(USB)와 같은 다른 인터페이스를 통해 접속될 수도 있다. 모니터(47) 형태의 표시장치도 비디오 카드 또는 어댑터(48)와 같은 인터페이스를 통해 시스템 버스(23)에 접속된다. 하나 이상의 스피커(57)도 오디오 어댑터(56)와 같은 인터페이 스를 통해 시스템 버스(23)에 접속될 수 있다. 표시장치 및 스피커 외에, 개인용 컴퓨터는 일반적으로 프린터와 같은 다른 주변 출력 장치(도시되지 않음)를 포함한다.
개인용 컴퓨터(20)는 원격 컴퓨터(49)와 같은 하나 이상의 개인용 컴퓨터에 대한 로컬 접속을 이용하여 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(49)는 또 하나의 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 일반 네트워크 노드일 수 있으며, 일반적으로 개인용 컴퓨터(20)와 관련하여 전술한 요소들의 대부분 또는 전부를 포함한다. 도 1에 도시된 논리 접속들은 근거리 네트워크(LAN; 51) 및 원거리 네트워크(WAN; 52)를 포함한다. LAN(51) 및 WAN(52)은 유선, 무선 또는 이들의 조합일 수 있다. 이러한 네트워킹 환경은 사무실, 기업 컴퓨터 네트워크, 인트라넷 및 인터넷에 일반적이다.
LAN 네트워킹 환경에서 사용될 때, 개인용 컴퓨터(20)는 네트워크 인터페이스 또는 어댑터(53)를 통해 LAN(51)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 개인용 컴퓨터(20)는 일반적으로 인터넷과 같은 WAN(52)을 통해 통신을 설정하기 위한 모뎀(54) 또는 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(54)은 직렬 포트 인터페이스(46)를 통해 시스템 버스(23)에 접속된다. 네트워크 환경에서, 개인용 컴퓨터(20) 또는 그의 일부에 대해 도시된 프로그램 모듈들은 원격 메모리 스토리지 장치에 저장될 수 있다. 도시된 네트워크 접속들은 예시적인 것이며, 컴퓨터들 사이에 통신 링크를 설정하기 위한 다른 수단이 사용될 수 있다는 것을 이해할 것이다.
아래에 보다 상세히 설명되는 바와 같이, 가상 폴더는 사용자들이 파일들을 분배하고, 파일 조작 및 폴더 네비게이션(브라우징) 주변의 기본 작업들을 수행하고, 새로운 기능들에 도입할 수 있는 보다 높은 레벨의 스토리지 능력을 제공하는 것을 보다 쉽게 해준다. 가상 폴더들은 디스크 상의 실제의 물리적 기초 파일 시스템 구조 대신에 그들의 메타데이타에 기초하여 상이한 뷰로 사용자에게 파일 및 항목을 표시한다.
도 2는 가상 폴더 시스템(200)의 블록도이다. 아래에 보다 상세히 설명되는 바와 같이, 가상 폴더들은 사용자가 데이타가 보여지는 방법을 제어하는 "피벗"을 변경하는 것을 허용한다. 예를 들어, 사용자는 그들의 음악을, 앨범에 의해 그룹화될 수 있는 모든 노래들의 평면 리스트로서 볼 수 있다. 대안으로, 사용자는 쟝르 또는 아티스트 또는 년도 등만을 표시하도록 뷰를 스위치할 수 있다. 사용자는 작업에 적합한 객체들만을 곧 볼 수 있도록 뷰를 조절할 수 있다. 이것은 폴더들을 통한 추가 네비게이션(다운 및 백업)에 대한 필요를 제거하는 향상된 브라우징 경험을 허용한다. 동일한 레슨 및 능력이 파일로서 저장되지 않은 다른 데이타 타입의 모델링에 적용된다. 예를 들어 콘택들은 이러한 방식으로 사용자에게 표시되어, 이들에게 친숙한 인터페이스 능력은 물론, 이들을 조작하는 데 있어서 평면 어드레스 북에 의해 제공되는 것보다 풍부한 기반구조를 제공할 수 있다.
도 2에 도시된 바와 같이, 가상 폴더 시스템(200)은 폴더 프로세서(210), 관계형 데이타베이스(230), 가상 폴더 설명 데이타베이스(232), 다른 쉘 폴더 컴포넌트(234), 폴더 핸들러의 컴포넌트(236) 및 쉘 브라우저 및 뷰 컴포넌트(240)를 포 함한다. 폴더 프로세서(210)는 네이티브 핸들링 코드 컴포넌트(212), 핸들러 팩토리 컴포넌트(214), 특성 작성자 컴포넌트(216), 행세트 파서 컴포넌트(218), 질의 구축자 컴포넌트(220), 목록기 컴포넌트(222) 및 특성 팩토리 컴포넌트(224)를 포함한다.
관계형 데이타베이스(230)는 시스템 내의 모든 파일에 대한 특성들을 저장한다. 이것은 또한 콘택들(즉, 논-파일 항목들)과 같은 소정의 항목들을 완전히 저장한다. 일반적으로, 이것은 이것이 포함하는 파일들 및 항목들의 타입들에 대한 메타데이타를 저장한다. 관계형 데이타베이스(230)는 질의 구축자(220)로부터 SQL 질의들을 수신한다. 관계형 데이타베이스(230)는 또한 SQL 행세트를 행세트 파서 컴포넌트(218)로 전송하는데, 항목 열당 하나의 행이 있으며, 열들은 항목 특성들이다.
가상 폴더 설명 데이타베이스(232)는 가상 폴더 설명들을 포함한다. 가상 폴더 설명 데이타베이스(232)는 폴더 내에 표시할 타입들의 리스트, 초기 필터, 및 결과를 표시할 물리적 위치들(범위들)을 포함하는 데이타를 질의 구축자 컴포넌트(220)로 전송한다.
다른 쉘 폴더 컴포넌트(234)와 관련하여, 폴더 프로세서(210)는 핸들러들 또는 특성들에 대해 모든 파일을 포함하는 많은 타입의 항목들에서 기존 쉘 폴더들로 위탁한다. 다른 쉘 폴더 컴포넌트(234)는 특성들을 다른 폴더들에서 특성 팩토리(224)로 전송한다. 다른 쉘 폴더 컴포넌트는 또한 핸들러들을 핸들러 팩토리(214)로 전송한다.
폴더 핸들러 컴포넌트(236)는 콘택들과 같이 데이타베이스 내에만 존재하는 항목들에 대한 코드 거동을 제공한다. 이것은 논-파일 항목들이 파일들과 유사하게 거동하는 것을 허용하는 것이다. 폴더 핸들러 컴포넌트(236)는 핸들러들을 핸들러 팩토리(214)로 전송한다.
네이티브 핸들링 코드 컴포넌트(212)에 대해, 폴더 프로세서(210)는 항목들의 특성에 기초하여 소정의 핸들러들을 직접 구현한다. 네이티브 핸들링 코드 컴포넌트(212)는 핸들러들을 핸들러 팩토리(214)로 전송한다. 네이티브 핸들링 코드 컴포넌트(212) 및 폴더 핸들러 컴포넌트(236)에 대해, 모든 명칭 공간과 같이, 가상 폴더들은 그들의 항목들에 대한 한 세트의 핸들러들(컨텍스트 메뉴, 아이콘, 썸네일, 정보팁,...)을 제공해야 한다. 이들(정보팁, 데이타 객체, 드래그-드롭 핸들러, 배경 컨텍스트 메뉴...) 중 대부분에 대해, 가상 폴더는 그가 유지하는 모든 타입들에 대한 일반(네이티브) 핸들러를 제공한다. 그러나, 타입의 저자가 제공해야 하는 다른 것들(항목 자체 상의 컨텍스트 메뉴...)이 존재한다. 디폴트 핸들러는 또한 무시될 수 있다. 가상 폴더들은 파일들에 대해 이것을 재사용하며, 논-파일 항목들이 같은 것을 행하는 것을 허용한다.
핸들러 팩토리(214)는 ID 리스트를 취하여, 컨텍스트 메뉴, 아이콘 등을 제공하는 코드 거동을 생성한다. 일반적으로, 폴더 프로세서(210)는 네이티브 핸들러, 외부 핸들러를 사용하거나, 네이티브 핸들링 코드 컴포넌트(212), 다른 쉘 폴더 컴포넌트(234) 및 폴더 핸들러 컴포넌트(236)와 관련하여 전술한 바와 같이 핸들러를 취득하기 위하여 다른 쉘 폴더들에게 위탁할 수 있다. 핸들러 팩토리 컴포 넌트(214)는 뷰에 의해 요구되는 바와 같이 핸들러들을 뷰(240) 내의 쉘 브라우저로 전송한다. 핸들러 팩토리 컴포넌트(214)는 특성 핸들러를 특성 작성자(216)로 전송한다.
특성 작성자(216)는 절단, 복사 및 붙이기 등과 같은 사용자 의도를 파일 또는 항목에 대한 특성 판권으로 변환한다. 쉘 브라우저 및 뷰 컴포넌트(240)는 직접 조작(절단/복사/붙이기) 또는 메타데이타의 편집을 포함하는 데이타를 특성 작성자(216)로 전송한다. 일반적으로, 가상 폴더들은 항목의 특성들에 기초한 체계를 제공하므로, 이동 및 복사(드래그-드롭)와 같은 동작들은 이들 특성에 대한 편집이 된다. 예를 들어, 저자에 의해 스택킹된 뷰에서 Author 1에서 Author 2로의 문서 이동은 저자의 변경을 의미한다. 특성 작성자 컴포넌트(216)는 이러한 기능을 구현한다.
행세트 파서(218)는 데이타베이스 행세트를 취하고, 모든 항목 특성들을 쉘 ID 리스트 구조에 저장한다. 행세트는 가상 폴더의 부분 정의를 취하고, 후에 데이타베이스로 발행될 수 있는 SQL 스트링을 구축한다. 행세트 파서 컴포넌트(218)는 ID 리스트를 목록기 컴포넌트(222)로 전송한다. 전술한 바와 같이, 행세트 파서 컴포넌트(218)는 또한 항목당 하나의 행을 가진 SQL 행세트를 포함하는 데이타를 관계형 데이타베이스(230)로부터 수신하는데, 열들은 항목 특성들이다.
질의 구축자 컴포넌트(220)는 SQL 질의들을 구축한다. 질의 구축자 컴포넌트(220)는 네비게이션으로부터의 새로운 필터들을 포함하는 데이타를 목록기 컴포넌트(222)로부터 수신한다. 질의 구축자 컴포넌트(220)는 또한 폴더 내에 표시할 타입들의 리스트, 초기 필터, 및 결과를 표시할 물리적 위치(범위들)를 포함하는 데이타를 가상 폴더 설명 데이타베이스(232)로부터 수신한다. 질의 구축자 컴포넌트(220)는 SQL 질의들을 관계형 데이타베이스(230)로 전송한다.
일반적으로, 질의 구축자 컴포넌트(220)는 한 세트의 행들(즉 테이블)을 포함한다. 이것은 질의 실행이 산출하는 것이다. 행세트 파서 컴포넌트(218)는 각각의 행을 취하고, 열 명칭들을 사용하여 행을 ID 리스트로 변환한다. ID 리스트는 명칭 공간에서 항목들을 참조하는 데 사용되는 공지된 쉘 구조이다. 이것의 이행은 가상 폴더들을 쉘의 나머지에 대해 임의의 다른 명칭 공간과 꼭 같도록 한다. 또한, 이 데이타의 캐싱은 비용이 많이 들 수 있는 데이타베이스 액세스를 최소로 유지하는 것을 돕는다.
목록기 컴포넌트(222)는 가상 폴더에 대한 네비게이션에 응답하여 동작한다. 전술한 바와 같이, 목록기 컴포넌트(222)는 행세트 파서 컴포넌트(218)로부터 ID 리스트를 수신하고, 네비게이션으로부터의 새로운 필터를 질의 구축자 컴포넌트(220)로 전송한다. 목록기(222)는 또한 네비게이션 후에 뷰에 삽입되도록 리턴되는 ID 리스트를 포함하는 데이타를 쉘 브라우저 및 뷰 컴포넌트(240)로 전송한다.
특성 팩토리 컴포넌트(224)는 ID 리스트 및 특성 식별자를 취하여, 이들 특성에 대한 값들을 리턴한다. 특성 팩토리 컴포넌트(224)는 특성 핸들러를 포함하는 데이타를 핸들러 팩토리 컴포넌트(214)로부터 수신한다. 전술한 바와 같이, 특성 팩토리 컴포넌트(224)는 또한 다른 폴더들로부터의 특성을 포함하는 데이타를 다른 쉘 폴더 컴포넌트(234)로부터 수신한다. 특성 팩토리 컴포넌트(224)는 또한 뷰에 의해 요구되는 바와 같이 항목 특성들을 포함하는 데이타를 쉘 브라우저 및 뷰 컴포넌트(240)로 전송한다.
쉘 브라우저 및 뷰 컴포넌트(240)는 윈도우 내에 폴더의 컨텐츠를 표시하고, 클릭킹, 드래깅 및 네비게이팅과 같은, 표시된 파일들 또는 항목들과의 모든 사용자 상호작용을 처리한다. 따라서, 쉘 브라우저 및 뷰 컴포넌트(240)는 사용자 액션을 수신한다. 쉘 브라우저 및 뷰 컴포넌트(240)는 또한 이것이 필요로 하는 코드 거동에 관한 데이타를 폴더로부터, 이 경우에는 폴더 프로세서(210)로 부터 취득한다.
전술한 바와 같이, 가상 폴더들은 디스크 상의 실제의 물리적 기초 파일 시스템 구조 대신에 그들의 메타데이타에 기초하여 상이한 뷰로 사용자들에게 정규 파일들 및 폴더들(디렉토리)을 표시한다. 따라서, 시스템은 데이타베이스 내에 저장된 특성을 취하여, 이것을 폴더와 같은 컨테이너로서 표현할 수 있다. 사용자들은 이미 폴더와 작업하는 것에 친숙하므로, 유사한 방식으로 가상 폴더를 제공함으로써 사용자들은 새로운 시스템에 보다 빠르게 적응할 수 있게 된다.
도 3은 사용자가 선택된 항목들을 철회하는 질의를 제공하는 루틴(300)을 나타내는 흐름도이다. 블록 302에서, 폴더 프로세서는 사용자로부터 질의를 취득한다. 블록 304에서, 폴더 프로세서는 질의를 관계형 데이타베이스로 전달한다. 블록 306에서, 관계형 데이타베이스는 결과를 폴더 프로세서로 제공한다. 블록 308에서, 폴더 프로세서는 결과를 가상 폴더 및 항목의 형태로 사용자에게 제공한다.
도 4는 가상 폴더들이 디폴트 질의 또는 사용자로부터의 질의에 따라 구축되 고 스크린 상에 표시되는 루틴(320)을 나타내는 흐름도이다. 블록 322에서, 사용자가 처음 가상 폴더를 개방할 때, 디폴트 질의가 사용된다. 이 디폴트 질의는 레지스트리로부터 취해진다. 예를 들어, 음악 라이브러리에 대한 디폴트 질의는 앨범에 의해 그룹화된 모든 노래들을 나타내는 것일 수 있다. 블록 324에서, 폴더 프로세서는 이 질의에 대한 질의 객체를 구축한 후, 이 질의를 관계형 데이타베이스에 전달한다. 블록 326에서, 관계형 데이타베이스는 질의의 결과를 생성하고, 이것을 데이타베이스 행들 및 열들로서 폴더 프로세서에 전달한다.
블록 328에서, 폴더 프로세서는 이들 결과를 취하고, 이들을 데이타의 행렬에서 목록기 구조로 변환하는데, 이 구조는 사용자가 상호작용할 결과적인 가상 폴더들 및 항목들로 스크린을 채우기 위해 폴더 뷰에 의해 사용된다. 판정 블록 330에서, 사용자는 (다른 질의 또는 피벗을 발행함으로써) 뷰를 변경할 것인지를 결정한다. 예를 들어, 사용자는 "모든 아티스트 표시(show all artists)" 피벗을 발행할 수 있다. 사용자가 뷰를 변경하고자 하는 경우, 루틴은 블록 324로 리턴하여, 폴더 프로세서는 이 새로운 질의를 관계형 데이타베이스로 전달하고, 새로운 결과의 행 및 열을 수신하여, 새로운 목록기 구조를 구축한다. 이어서, 프로세스는 전술한 바와 같이 폴더 뷰가 소거되고 갱신됨에 따라 계속해서 목록기를 사용하여 스크린에 "아티스트" 객체들을 드로잉한다.
일 예에서, 사용자들이 네비게이트할 수 있는 컨테이너들을 표현하는 앨범 객체들이 제공된다. 예를 들어, "Beatles" 앨범의 더블 클릭은 비틀스의 노래들 모두를 볼 수 있도록 뷰를 네비게이트한다. 폴더 프로세서는 관계형 데이타베이스 에 "show all Beatles' songs"를 발행하며, 관계형 데이타베이스는 이 노래들에 대한 데이타의 행 및 열을 반환한다. 폴더 프로세서는 이들 노래 모두에 대한 목록기를 생성하며, 이 노래들은 스크린에 드로잉된다.
사용자는 또한 가상 폴더들을 브라우징하면서 임의의 시점에 뷰를 선택할 수 있다. 위의 예에서, 비틀즈의 노래들만을 표시하도록 범위를 줄인 후, 사용자는 단지 이 노래들을 앨범으로서 표시하기 위하여 뷰를 변경할 수 있다. 항목들의 뷰를 또 하나의 표현으로 변경하는 프로세스는 "스택킹"이라고 한다. 이것은 항목들이 그러한 표현에 기초하여 개념적으로 스택들로 배열되기 때문이다. 이 경우, 노래들은 다양한 앨범들 각각에 대해 스택들로 재배열된다. 그러면, 사용자들은 이들 스택들 중 하나 내로 네비게이션하여, 그 특정 앨범의 노래들만을 볼 수 있다. 또한, 사용자는 나머지 노래들의 뷰를 특성(예를 들어, 등급)에 기초하여 스택들로 재배열할 수 있다. 등급 특성이 선택된 경우, 비틀즈 앨범의 노래들은 별 하나, 별 둘 또는 별 셋 등급의 스택들에 표시된다.
각각의 질의의 결과들은 범위 내에 어느 물리적 위치들이 포함되어 있는지에 의존한다. 예를 들어, 범위는 사용자의 "my documents" 폴더 내의 폴더들만을 포함하도록 만들어질 수 있다. 대안으로, 범위는 컴퓨터 상의 모든 폴더를, 또는 심지어 다수의 네트워크 접속 컴퓨터 상의 모든 폴더를 포함할 수 있다. 사용자는 범위 특성 시트를 통해 범위를 보고 변경할 수 있다. 일 예에서, 범위 특성 시트는 가상 폴더 상에서 우측 버튼을 클릭하고 "properties"를 선택함으로써 표시될 수 있다. 사용자는 범위에 새로운 폴더를 추가하거나, 이전에 추가된 폴더를 삭제 할 수 있다.
가상 폴더들이 특정 유틸리티를 제공하는 한 그룹의 사용자들은 지식 작업자들이다. 가상 폴더들은 지식 작업자들이 파일 타입, 프로젝트, 사건 번호, 저자 등에 의해 뷰잉 문서들 사이에서 쉽게 스위치하는 것을 허용한다. 지식 작업자들 각각은 문서들을 구성하기 위한 상이한 방법을 가지려는 경향이 있으므로, 가상 폴더들은 이러한 상이한 선호를 수용하는 데 사용될 수 있다.
도 5는 하드 드라이브 상의 물리적 폴더 배열에 따른 폴더 구조의 트리도이다. 이 물리적 폴더 배열은 통상적인 폴더들의 구현에 기초하는데, 이는 NTFS 또는 다른 기존 파일 시스템에 기초할 수 있다. 이러한 폴더들은 물리적 폴더로서 지칭되는데, 이는 이들의 구조가 디스크 상의 실제의 물리적 기초 파일 시스템 구조에 기초하기 때문이다. 아래에 상세히 설명되는 바와 같이, 이것은 사용자들이 물리적 폴더들을 조작하기 위해 현재 사용되는 것들과 유사한 방식으로 파일들 및 폴더들을 조작하는 것을 허용하는 위치 독립적인 뷰들을 생성하는 가상 폴더들과 대조적이다.
도 5에 도시된 바와 같이, 폴더(400)는 "my documents" 폴더이다. 제1 레벨에서, 폴더(400)는 Clients 1, 2 및 3에 각각 대응하는 폴더들 410, 420 및 430을 포함한다. 제2 레벨에서, 폴더들(410, 420, 430) 각각은 선택된 클라이언트에 대한 약정들에 각각 대응하는 폴더(411, 421, 431)를 포함한다. 제3 레벨에서, 폴더들(411, 421, 431) 각각은 연도 2001에 각각 대응하는 폴더(412, 422, 432)를 각각 포함한다. 제3 레벨에서, 폴더들(411, 421, 431) 각각은 또한 연도 2002에 각각 대응하는 폴더(413, 423, 433)를 각각 포함한다.
도 5에 도시된 것과 같은 물리적 폴더 파일 구조를 네비게이트하기를 원하는 사용자에게 다수의 장애물이 제공된다는 것을 이해할 것이다. 예를 들어, 사용자가 자신이 생성한 약정들 모두와 함께 작업하기를 원하는 경우, 사용자는 Client 1에 대한 약정들과 함께 작업하기 위하여 먼저 폴더(411)를 네비게이트해야 하며, 이어서 Client 2에 대한 약정들에 도달하기 위해 폴더(421)를 네비게이트해야 하며, Client 3에 대한 약정들을 위해 폴더(431)를 다시 네비게이트해야 한다. 이러한 배열은 사용자가 모든 약정들에 액세스하는 것을 어렵게 하며, 일반적으로 모든 약정에 대한 동시 뷰잉 및 조작을 방해한다. 마찬가지로, 사용자가 연도 2001에 생성된 모든 약정들을 보기를 원하는 경우, 사용자는 폴더들(412, 422, 432) 각각을 네비게이트하고, 리네비게이트해야 한다. 아래에 상세히 설명되는 바와 같이, 본 발명의 실시예의 가상 폴더들은 향상된 파일 시스템 구조를 제공한다.
도 6은 가상 폴더 구조의 트리도이다. 아래에 상세히 설명되는 바와 같이, 가상 폴더들은 사용자가 편리한 방법으로 그들의 파일 및 폴더를 조작하는 것을 허용하는 위치 독립적인 뷰들을 생성한다. 도 6에 도시된 바와 같이, 가상 폴더들은 스택들로서 표현된다. 가상 폴더(500)는 "all items" 폴더이다. 제1 레벨에서, 가상 폴더(500)는 클라이언트, 약정 및 연도에 각각 대응하는 폴더들(510, 520, 530)을 포함한다. 아래에 상세히 설명되는 바와 같이, 이 구조는 사용자가 원하는 파라미터에 따라 파일들에 액세스하는 것을 허용한다.
도 7은 도 6의 가상 폴더 구조의 트리도인데, 제2 레벨에서 가상 폴더(510) 는 약정들 및 연도에 각각 대응하는 가상 폴더들(511, 512)을 포함한다. 즉, 가상 폴더(510)의 클라이언트 스택은 약정들 및 연도에 의해 더 필터링된다. 가상 폴더들 각각에 어느 파일 및 항목이 포함되어 있는지를 결정하기 위한 프로세스는 후에 상세히 설명된다.
도 8은 도 7의 가상 폴더 구조의 트리도인데, 제3 레벨에서 가상 폴더(511)는 연도에 대응하는 가상 폴더(513)를 포함한다. 즉, 가상 폴더(511)의 약정 스택은 연도에 의해 더 필터링된다. 가상 폴더들(510, 511, 513)에 대한 가상 폴더 구조는 클라이언트, 약정 및 연도에 따라 구축되었지만, 가상 폴더들은 도 9를 참조하여 후술되는 바와 같이 다른 구축 시퀀스가 발생하는 것을 허용한다는 것을 이해할 것이다.
도 9는 도 6의 가상 폴더 구조의 트리도인데, 제2 레벨에서 가상 폴더(520)는 클라이언트 및 연도에 대응하는 가상 폴더들(521, 522)로 더 필터링되었다. 제3 레벨에서, 가상 폴더(521)는 연도에 대응하는 가상 폴더(523)로 더 필터링되었다. 도 8 및 9의 체계적인 구조들 사이의 대비는 가상 폴더 시스템의 유연성을 설명하는 데 도움을 준다. 즉, 가상 폴더 시스템에서, 사용자는 도 5에 설명된 것과 같이 물리적 파일 구조의 위치 종속적 뷰에 종속하는 것과 반대로 원하는 파라미터에 따라 가상 폴더들을 네비게이트할 수 있다.
도 10은 문서 라이브러리의 스택들을 나타내는 스크린 표시(600)의 도면이다. 전술한 바와 같이, 스택들은 한 타입의 가상 폴더를 표현하는 데 사용될 수 있다. 후술되는 바와 같이, 스크린 표시(600)는 고속 링크 요소들(610-613), 필터 요소들(620-626), 액티비티 요소들(630-633), 정보 및 제어 요소들(640-645) 및 가상 폴더 스택들(651-655)을 포함한다.
고속 링크 요소들은 "all categories" 고속 링크(610), "all author" 고속 링크(611), "January work" 고속 링크(612) 및 추가 고속 링크(613)를 표시하기 위한 선택을 포함한다. 후술되는 바와 같이, 고속 링크들은 가상 폴더들의 원하는 네비게이션을 수행하기 위해 사용자에 의해 선택될 수 있다. 고속 링크들은 시스템에 의해 제공될 수 있으며, 몇몇 고속 링크들은 사용자에 의해 생성되어 저장될 수 있다.
필터 요소들은 "filter by" 표시자(620), 엔트리 블랭크(621), "by date" 표시자(622), "year" 선택자(623), "pick an author" 선택자(624), "pick a category" 선택자(625), 및 "more filters" 선택자(626)를 포함한다. "filter by" 표시자(620)는 아래의 항목들이 가상 폴더들 또는 항목들을 필터링하는 데 사용될 수 있다는 사실을 사용자에게 지시한다. 엔트리 블랭크(621)는 사용자가 원하는 새로운 필터 용어를 타이핑할 수 있는 영역을 제공한다. "by date" 표시자(622)는 "year" 표시자(623)로부터 날짜를 선택함으로써 가상 폴더들 또는 항목들이 선택된 연도에 의해 필터링될 수 있다는 사실을 사용자에게 지시한다. "pick an author" 선택자(624)는 사용자가 특정 저자에 따라 필터링하는 것을 허용한다. "pick a category" 선택자(625)는 사용자가 선택된 카테고리에 따라 필터링하는 것을 허용한다. "more filters" 선택자(626)는 사용자가 표시상에 추가적인 필터들을 풀업하는 것을 허용한다.
액티비티 선택자들은 "create a new category" 선택자(630), "activity" 선택자들(631, 632), 및 "more activities" 선택자(633)를 포함한다. 후술되는 바와 같이, 제공되는 액티비티들은 일반적으로 바람직한 기능들에 대한 것이거나, 구체적으로는 현재 표시되고 있는 가상 폴더들의 타입에 유용한 액티비티들에 관련될 수 있다. 예를 들어, "create a new category" 선택자(630)는 새로운 스택에 의해 표현되는 새로운 카테고리를 생성하기 위해 사용자에 의해 선택될 수 있다.
전술한 바와 같이, 액티비티 선택자들(631, 632)은 표시되고 있는 폴더들 또는 항목들의 타입에 보다 구체적으로 관련될 수 있다. 예를 들어, 현재의 표시는 문서 라이브러리이고, 이에 대해 액티비티 선택자들(631, 632)은 첨부물의 편집 또는 생성과 같이 문서들에 대해 구체적으로 맞춰진 액티비티들에 관련될 수 있다. 현재의 라이브러리가 포토 라이브러리인 경우, 액티비티 선택자(631, 632)는 포토 앨범들의 형성 또는 다른 사용자들과의 포토들의 분배와 같이 포토들에 특히 관련된 액티비티들에 대한 것일 수 있다.
정보 및 제어 요소들은 정보 라인들(640, 641), 제어 라인(642), 백스페이스 제어(643), 및 정보 라인들(644, 645)을 포함한다. 정보 라인들(640, 641)은 가상 폴더 또는 항목의 현재 네비게이션에 관한 정보를 제공한다. 본 예에서, 정보 라인(640)은 현재의 네비게이션이 문서 라이브러리에 대한 것임을 표시하고, 정보 라인(641)은 보다 완전한 네비게이션을 지시하며, 문서 라이브러리가 스토리지 영역 내에 있음을 나타낸다. 제어 라인(642)은 다수의 표준 제어를 제공하며, 백스페이스 버튼(643)은 사용자가 네비게이션을 통해 백업하는 것을 허용한다. 정보 라인 (644)은 현재의 네비게이션의 컨텐츠에 대한 수치 정보를 제공한다. 본 예에서, 정보 라인(644)은 문서 라이브러리의 스택들에서 100MB를 취하는 41개의 항목이 있다는 것을 표시한다. 정보 라인(645)은 선택되는 파일에 대한 추가 정보와 같은 추가 정보를 제공하는 데 이용될 수 있다.
문서 라이브러리의 스택들은 "ABC Corp." 스택(651), "backups stack"(652), "business plans" 스택(653), "XYZ Corp." 스택(654), 및 "marketing reports" 스택(655)을 포함한다. 스택들 각각의 상부 상의 숫자들은 각각의 스택 내에 얼마나 많은 항목이 있는지를 표시한다. 예를 들어, "ABC Corp." 스택(651)은 8개 항목을 포함하는 것으로 표시되어 있다. 스택들의 항목들의 총 수는 정보 라인(644) 내에 표시된 항목들의 수까지 추가되는데, 이는 전술한 바와 같이 본 예에서는 41개이다. 사용자에 의해 원하는 항목을 선택하는 데 이용될 수 있는 선택 박스(SB)가 제공된다. "ABC Corp." 스택(651)의 선택은 도 11과 관련하여 후술되는 바와 같이 그 스택의 항목들의 뷰를 생성한다.
도 11은 도 10의 "ABC Corp." 스택(651) 내의 항목들을 나타내는 스크린 표시의 도면이다. 정보 라인들(640, 641)은 이제 현재의 네비게이션이 "ABC Corp." 스택을 나타내고 있음을 표시한다는 것을 이해해야 한다. "ABC Corp." 스택(651)은 문서들(1-8)에 각각 대응하는 8개의 문서들(751-758)을 포함하는 것으로 도시되어 있다. 정보 라인(644)은 이에 대응하여 메모리의 20MB를 취하는 8개의 항목이 있음을 표시한다. 도 11의 문서들은 ABC Corp. 스택 내의 스택들로 더 배열될 수 있다. 즉, 도 12-16을 참조하여 후술되는 바와 같이, ABC Corp. 스택(651)에 의해 표현되는 가상 폴더 내에 추가적인 가상 폴더들이 문서를 유지하도록 형성될 수 있다.
도 12는 스택킹 기능이 도 11의 문서들에 대해 선택되는 스크린 표시의 도면이다. 도 12에 도시된 바와 같이, 사용자는 기능 박스(760)를 풀업할 수 있다. 기능 박스(760)는 "view" 선택(761), "arrange icons by" 선택(762), "stacks" 선택(763), "refresh" 선택(764), "open containing folders" 선택(765), "cut" 선택(766), "copy" 선택(767), "undo" 선택(768), "new" 선택(769) 및 "properties" 선택(770)을 포함한다. 선택 박스(SB)는 "stacks" 선택(763) 주위에 있는 것으로 표시되어 있다.
도 13은 "stack by author" 파라미터가 도 12의 스택킹 기능에 대해 선택되는 스크린 표시의 도면이다. 도 13에 도시된 바와 같이, 다양한 스택킹 옵션들을 제공하는 박스(780)가 표시된다. 스택킹 옵션들은 "unstack" 옵션(781), "stack by category" 옵션(782), "stack by author" 옵션(783), 및 "stack by a user" 옵션(784)을 포함한다. 선택 박스(SB)는 "stack by author" 옵션(783) 주위에 있는 것으로 도시되어 있다.
도 14는 도 13의 파일들이 저자에 의해 스택킹된 스크린 표시의 도면이다. 도 14에 도시된 바와 같이, 스택들(791, 792)은 저자들 Bob 및 Lisa에 각각 대응한다. 스택들 각각의 상부의 숫자들에 의해 표시된 바와 같이, Bob 스택(791)은 2개의 항목을 포함하며, Lisa 스택(792)은 5개의 항목을 포함한다. 항목(758)(문서 8에 대응)은 저자를 갖지 않으며, 따라서 "author" 스택에 포함되지 않는다. 스택 들(791, 792)은 스택들이 "ABC Corp." 스택(651) 내에서와 같이 다수의 레벨로 구성될 수 있음을 나타낸다. 따라서, 가상 폴더들은 문서 라이브러리 내에 있는 "ABC Corp." 스택(651) 내에 있는 "Lisa" 스택(792)과 같이 다수의 레벨로 구성될 수 있다.
도 15는 "stack by category" 옵션이 도 14의 파일들을 리스택킹하기 위해 더 선택되는 스크린 표시의 도면이다. 도 15에 도시된 바와 같이, 선택 박스(SB)는 "stack by category" 옵션(782) 주위에 있다. 항목들의 일부는 이미 스택들(791, 792) 내에 스택킹되어 있으므로, "stack by category" 옵션(782)의 선택은 도 16을 참조하여 후술되는 바와 같이 항목들을 리스택킹할 것이다.
도 16은 도 14의 파일들이 카테고리에 의해 리스택킹되는 스크린 표시의 도면이다. 도 16에 도시된 바와 같이, 스택들(793, 794)은 "XYZ Corp." 및 "marketing reports" 카테고리에 각각 대응한다. 문서들(1, 2)에 대응하는 항목들(751, 752)은 임의의 추가 카테고리에 대해 지정되지 않았으며, 따라서 다른 카테고리 스택들 중 어디에도 들어가지 않았다.
도 17은 물리적 폴더들에 대한 고속 링크가 선택되는 스크린 표시의 도면이다. 선택 박스(SB)는 "all folders" 고속 링크(616) 주위에 있는 것으로 도시되어 있다. 도 18과 관련하여 후술되는 바와 같이, "all folders" 고속 링크(616)는 물리적 폴더들의 뷰에 대한 스위칭을 제공한다.
도 18은 물리적 폴더들을 나타내는 스크린 표시의 도면이다. 도시된 물리적 폴더들은 도 17의 가상 폴더 스택들의 파일을 포함한다. 즉, 도 17의 스택들(651- 655) 내에 포함된 항목들은 시스템 내의 소정의 물리적 폴더들 내에도 포함된다. 이들은 현재의 컴퓨터 상에 위치하는 "My Documents" 폴더(851), 현재의 컴퓨터 상에 위치하는 "Desktop" 폴더(852), 하드 드라이브 C 상에 위치하는 "Foo" 폴더, 서버 상에 위치하는 "My Files" 폴더(854), 외부 드라이브 상에 위치하는 "External Drive" 폴더(855), 다른 컴퓨터 상에 위치하는 "My Documents" 폴더(856), 및 다른 컴퓨터 상에 위치하는 "Desktop" 폴더(857)로서 도 18에 도시되어 있다.
도 18에 도시된 바와 같이, 사용자는 도 17의 가상 파일 표현에서 도 18의 물리적 파일 표현으로 스위치할 수 있다. 이것은 사용자가 현재 작업을 위해 어느 것이 요구되는지에 따라 가상 파일 표현과 물리 파일 표현 사이에서 토글링하는 것을 허용한다. 물리 폴더들(851-857)의 상이한 위치들은 또한 가상 파일 시스템의 범위가 후술되는 바와 같이 비교적 넓을 수 있다는 것을 나타낸다.
도 19는 사용자가 가상 폴더들을 직접 조작할 수 있는 루틴(880)의 흐름도이다. 후술되는 바와 같이, 가상 폴더의 조작을 위해 제공되는 메카니즘들은 정규 폴더들의 조작에 현재 사용되는 것들(예를 들어, 클릭킹 및 드래깅, 복사, 붙이기 등)과 유사하다. 도 19에 도시된 바와 같이, 블록 882에서, 시스템은 표시 객체들로서 표현되는 가상 폴더들의 직접 조작을 위해 사용자가 행할 수 있는 정의된 액션들을 제공한다. 블록 884에서, 사용자는 정의된 액션을 수행한다. 전술한 바와 같이, 이것의 일례는 사용자가 그의 컨텐츠를 다른 가상 폴더에 복사하기 위해 가상 폴더를 클릭킹 및 드래깅하는 것일 수 있다. 블록 886에서, 가상 폴더 및/또는 컨텐츠는 사용자에 의해 수행되는 액션에 의해 지시되는 바와 같이 조작된다.
도 20은 새로운 West Coast 스택(656)이 도 10의 스택들에 추가된 스크린 표시의 도면이다. West Coast 스택(656)은 "West Coast"의 새로운 카테고리를 생성하는 사용자에 의해 형성되었다. 그의 초기 생성시, 새로운 West Coast 스택(656)은 비어 있고 0개의 항목을 갖는다. 도 20의 실시예에서, West Coast 스택(656)에 2개의 항목이 추가되었다. 스택에 항목을 추가하기 위한 하나의 방법은 도 20의 실시예에서 행해진 바와 같이 특정 항목을 선택하고, 추가 카테고리를 변경하거나, 2개의 항목에 "West Coast" 카테고리를 추가하는 것과 같이 항목에 대한 카테고리 메타데이타에 추가하는 것이다. 이 프로세스는 카테고리 데이타가 임시 특성의 타입인 항목에 대한 메타데이타 특성임을 나타낸다. 즉, 이 타입의 특성은 어떠한 암시적인 의미도 갖지 않으며, 사용자에 의해 임의의 값이 할당될 수 있다. 예를 들어, 카테고리 "property"는 임의의 값을 가질 수 있는 반면, "author" 특성은 개인의 이름이어야 한다. 도 21을 참조하여 후술되는 바와 같이, 항목들은 또한 다른 스택에서 West Coast 스택(656)으로 복사되도록 클릭킹 및 드래깅될 수 있다(이 경우, 항목들의 카테고리는 "West Coast"를 포함하도록 자동 갱신된다). 이와 관련하여, 도 20은 선택 박스(SB)가 그의 컨텐츠의 복사를 위한 준비로서 ABC Corp. 스택(651) 주위에 있음을 나타낸다.
도 21은 ABC Corp. 스택(651)에서 West Coast 스택(656)으로 파일들을 복사하기 위해 직접 조작이 이용되는 스크린 표시의 도면이다. 즉, 도 20에 도시된 바와 같이, 사용자는 ABC Corp. 스택(651)를 선택한 후, 도 21에 도시된 바와 같이 스택을 클릭킹 및 드래깅하여 West Coast 스택(656)에 복사하였다. 따라서, 도 20 에서 2개의 항목을 가진 West Coast 스택(656)은 이제 ABC Corp. 스택(651)으로부터의 추가적인 8개의 항목을 포함하여 총 10개의 항목을 포함하는 것으로 표시된다. ABC Corp. 스택(651)으로부터의 항목들이 West Coast 스택(656)으로 복사된 때, 이것은 오리지날 "ABC Corp." 카테고리를 포함하는 것에 더해 "West Coast" 카테고리도 포함하도록 8개 항목의 카테고리 설명을 수정함으로써 달성되었다. 이것은 수행될 수 있는 한 타입의 직접 조작을 나타낸다.
직접 조작의 또 하나의 예는 항목을 우측 버튼 클릭킹하고 삭제를 선택하는 것이다. 일 실시예에서, 사용자에 의해 삭제 기능이 선택된 때, 사용자는 항목이 완전히 삭제되어야 하는지, 또는 단순히 현재의 가상 폴더로부터 삭제되어야 하는지에 대해 문의된다. 전술한 바와 같이, 항목이 단지 현재의 가상 폴더 카테고리 스택으로부터 제거되는 경우, 이것은 항목에 대한 메타데이타로부터 원하는 카테고리를 삭제함으로써 달성될 수 있다. 즉, ABC Corp. 스택(651)에서 West Coast 스택(656)으로 복사된 항목들 중 하나가 West Coast 스택(656)으로부터 제거되는 경우, 이것은 특정 파일에 대한 카테고리 데이타가 "West Coast" 카테고리를 더 이상 포함하지 않도록 수정함으로써 달성될 수 있다.
도 22는 시스템이 새로운 필터 용어들을 동적으로 생성하기 위한 루틴(900)의 흐름도이다. 필터 용어들은 가상 폴더들을 조작하는 데 사용된다. 필터링 용어들은 본질적으로 한 세트의 항목들을 좁히기 위한 한 세트의 도구로서 사용된다. 일 실시예에서, 필터들은 메타데이타 카테고리들 및 이들의 값들(클릭 가능한 링크들 또는 드롭-다운 메뉴들로서 사용자 인터페이스에서 사용자에게 제공됨)로 구성 된다. 사용자는 표시 상에서 항목들의 현재의 결과 세트를 필터 다운하기 위해 필터 용어 상에 클릭한다.
도 22는 필터들이 어떻게 동적으로 생성될 수 있는지를 나타낸다. 도 22에 도시된 바와 같이, 블록 902에서, 현재의 표시 상의 집합 내의 항목들의 (메타데이타로부터의) 특성들이 리뷰된다. 블록 904에서, 제안된 필터 용어들이 항목들의 공통 특성들에 기초하여 동적으로 생성된다. 블록 906에서, 제안된 필터 용어들은 항목들을 필터링하기 위한 가능한 선택을 위해 사용자에게 제공된다. 이 프로세스의 일례로서, 시스템은 한 세트의 항목들의 특성을 리뷰하고, 항목들이 일반적으로 "Authors"를 특성으로서 갖는 경우, 필터는 필터링할 저자들의 리스트를 제공할 수 있다. 이어서, 특정 저자 상에 클릭함으로써, 그 저자를 갖지 않은 항목들이 표시 상의 설정으로부터 삭제된다. 이러한 필터링 프로세스는 사용자에게 표시 상의 항목 세트를 좁히기 위한 메카니즘을 제공한다.
도 23은 시스템이 필터 용어의 선택에 기초하여 항목들을 필터링하기 위한 루틴(920)의 흐름도이다. 블록 922에서, 사용자는 새로운 필터 용어를 입력하거나, 시스템에 의해 제공된 필터 용어들 중 하나를 선택한다. 전술한 바와 같이, 필터 용어들은 시스템에 의해 동적으로 생성되거나, 미리 설정될 수 있다. 블록 924에서, 표시 상의 집합으로부터의 항목들은 이들의 선택된 특성들이 필터 용어와 매칭되는지에 대하여 평가된다. 예를 들어, 필터 용어가 "Bob"에 의해 작성된 항목들에 대한 것인 경우, 이 항목들은 이들의 저자 특성이 "Bob"을 포함하는지에 따라 평가된다. 블록 926에서, 선택된 특성들이 필터 용어와 매칭되지 않는 항목들 은 표시 상의 집합으로부터 삭제된다.
도 24는 도 10의 스택들이 용어 "AB"에 의해 필터링된 스크린 표시의 도면이다. 도시된 바와 같이, 필터 영역(621)에서, 용어 "AB"는 사용자에 의해 타이핑되었다. 정보 라인들(640, 641)은 표시 내의 항목들이 이제 용어 "AB"에 의해 필터링된 것들이라는 것을 표시한다. 도시된 바와 같이, ABC Corp. 스택(651)은 여전히 8개의 항목을 포함하지만, Backups 스택(652)은 이제 3개의 항목을 포함하고, XYZ Corp. 스택(654)도 3개의 항목을 포함한다. 따라서, 정보 라인(644)은 총 35MB의 메모리를 취하는 총 14개의 항목이 있음을 표시한다.
도 25는 도 10의 스택들이 용어 "ABC"에 의해 필터링된 스크린 표시의 도면이다. 도 24의 필터 용어 "AB"와 관련하여, 사용자는 전체 필터 용어 "ABC"를 만들기 위해 단순히 추가 문자 "C"를 타이핑했다. 도 25에 도시된 바와 같이, 정보 라인들(640, 641)은 이제 표시 상의 항목들이 용어 "ABC"를 포함하는 것들이라는 것을 표시한다. ABC Corp. 스택(651)은 여전히 8개의 항목을 포함하는 것으로 표시되지만, Backups 스택(652)은 이제 2개의 항목만을 포함한다. 정보 라인(644)는 이제 총 25MB의 메모리를 취하는 10개의 항목이 표시 상의 스택들 내에 존재함을 표시한다. 따라서, 도 24 및 25는 사용자가 어떻게 새로운 필터 용어들을 입력할 수 있는지, 그후 이 필터 용어들이 어떻게 표시 상에 나타난 항목들을 필터링하는 데 사용되는지에 대한 예를 제공한다.
도 26은 시스템에 제공한 필터 용어 "year2002"가 선택되는 스크린 표시의 도면이다. 전술한 바와 같이, by date 표시자(622) 아래에서, year 선택(623)은 years2000, 2001 또는 2002를 포함한다. 선택 박스(SB)는 year2002 주위에 있는 것으로 도시되는데, 이는 사용자가 그것을 원하는 필터 용어로서 선택하고 있음을 나타낸다.
도 27은 필터 용어 "2002"가 적용된 스크린 표시의 도면이다. 또한, "pick a month" 선택자(623A)의 추가 선택이 도시되어 있다. 도 27에 도시된 바와 같이, 필터 용어 "2002"를 적용한 후, 스택내의 항목들의 수는 감소되었다. 구체적으로, ABC Corp. 스택(651)은 이제 6개의 항목을 포함하고, Backups 스택(652)은 이제 8개의 항목을 포함하며, Business Plans 스택(653)은 이제 3개의 항목을 포함하고, XYZ Corp. 스택(654)은 이제 5개의 항목을 포함한다. 정보 라인(644)은 이제 총 50MB의 메모리를 취하는 총 22개의 항목을 표시한다. 정보 라인들(640, 641)은 이제 표시 상에 나타난 항목들이 필터 용어 "2002"를 포함하도록 필터링된 것들임을 표시한다.
도 28은 필터링을 위한 월을 선택하기 위한 리스트가 제공되는 스크린 표시의 도면이다. 월들의 리스트를 포함하는 박스(950)가 제공된다. 박스(950)는 사용자가 "pick a month" 선택자(623A)를 선택함으로 인해 표시 상에 제공되었다. 선택 박스(SB)는 1월 달 주위에 있는 것으로 도시되어 있다.
도 29는 도 28의 스택들이 1월 달에 의해 더 필터링된 스크린 표시를 나타내고, "day"의 필터 용어를 더 나타내는 도면이다. 도 29에 도시된 바와 같이, 정보 라인들(640, 641)은 이제 표시 상의 항목들이 용어 "January"에 의해 필터링된 것들이라는 것을 표시한다. Backups 스택(652)은 이제 2개의 항목을 포함하는 것으 로 도시되며, Business Plans 스택(653)도 2개의 항목을 포함하는 것으로 도시된다. 정보 라인(644)은 총 10MB의 메모리를 취하는 총 4개의 항목이 표시 상에 존재한다는 것을 표시한다. 사용자가 결과들을 특정 날짜로 더 필터링하기를 원하는 경우, "pick by day" 선택자(623B)가 제공된다.
도 30은 새로운 고속 링크를 생성하기 위한 루틴(940)의 흐름도이다. 후술되는 바와 같이, 고속 링크들은 항목 세트들의 사용자 선택 뷰들을 생성하기 위해 사용자에 의해 클릭될 수 있는 소정의 링크들이다. 일 실시예에서, 고속 링크는 한 타입의 피벗으로 간주될 수 있다. 고속 링크들은 가상 폴더를 검색하기 위한 메카니즘을 제공한다. 고속 링크의 클릭은 사용자를 원하는 폴더로 안내할 수 있다("favorites"의 클릭이 사용자를 웹 사이트로 안내할 수 있는 것과 같은 방식). 고속 링크들은 시스템에 의해 미리 정의되거나, 사용자에 의해 설정될 수 있다. 예를 들어, "all authors" 상의 클릭은 저자들에 의해 스택킹된 뷰를 리턴할 수 있다. "all documents" 상의 클릭은 스토리지 영역들 모두의 문서들 모두에 대한 평면 뷰를 리턴할 수 있다. 사용자들은 또한 그들 자신의 고속 링크들을 생성할 수 있다.
도 30에 도시된 바와 같이, 블록 942에서, 사용자는 새로운 고속 링크가 현재의 필터 용어 또는 네비게이션으로부터 형성되어야 한다는 것을 표시하기 위해 표시 상에서 선택을 행한다. 블록 944에서, 사용자는 새로운 고속 링크에 대한 새로운 명칭을 제공한다. 블록 946에서, 새로운 고속 링크가 저장되고, 새로운 고속 링크가 표시 상의 고속 링크 섹션 내에 제공된다.
도 31은 도 29의 필터링에 기초하여 "January Work" 라고 하는 새로운 고속 링크를 생성하기 위한 스크린 표시의 도면이다. 도 29에서 전술한 바와 같이, 스택들은 1월 달에 의해 필터링되었다. 도 31에서, 사용자는 도 29의 필터링이 새로운 고속 링크로서 저장되어야 하고, 새로운 고속 링크 "January Work"로 명명되었음을 지시했다. 따라서, 새로운 January Work 고속 링크(612)는 표시의 고속 링크 섹션에 나타난다. 새로운 고속 링크의 형성과 관련하여, 사용자는 일반적으로 "save this collection as a quick link"와 같은 옵션을 갖는다.
도 32는 "All Authors"의 고속 링크가 선택되는 스크린 표시의 도면이다. 도 32에 도시된 바와 같이, 선택 박스(SB)는 All Authors 선택(611)의 주위에 있는 것으로 도시된다. 고속 링크들에 의해 액세스 가능할 수 있는 집합들의 다른 예는 "all authors", "recent documents", "all documents I've shared", "all documents I've authored", "all documents not authored by me", "desktop", 및 "all types"를 포함한다.
도 33은 도 32의 항목들의 모든 저자들의 리스트가 제공되는 스크린 표시의 도면이다. 도 33에 도시된 바와 같이, 항목의 명칭, 저자, 수정 일자, 타입, 크기 및 항목의 위치를 나타내기 위한 열들을 표시하는 정보 라인(950)이 제공된다. Authors(104)에 각각 대응하는 Authors(951-954)의 리스트가 표시된다.
도 34는 "Author 1"이 도 33의 리스트로부터 선택된 스크린 표시의 도면이다. Author 1의 문서들은 문서들(1, 2)에 각각 대응하는 문서들(951A, 951B)을 포함한다. 문서(951A)는 Author 1에 의해 작성되었고, 2001년 7월 11일에 수정되었 으며, 마이크로소프트 액셀 파일이며, 282Kb의 메모리를 취하며, 위치 //server/folder2로부터 얻어진 것으로 표시된다. 문서(951B)는 Author 1에 의해 작성되었고, 2002년 12월 22일자로 수정되었으며, 마이크로소프트 워드 파일이고, 206Kb의 메모리를 취하고, 위치 My Documents/folder1에 물리적으로 저장된 것으로 표시된다. 문서들(951A, 951B)의 위치는 또한 본 발명의 실시예의 가상 폴더들이 후술되는 바와 같이 상이한 물리적 위치들로부터의 항목들을 포함할 수 있다는 것을 나타낸다.
도 35는 새로운 라이브러리를 생성하기 위한 루틴(960)의 흐름도이다. 라이브러리의 일례는 도 10을 참조하여 전술한 문서 라이브러리이다. 일반적으로, 라이브러리는 함께 연관될 수 있는 큰 그룹의 사용가능한 파일 타입들로 구성된다. 예를 들어, 포토는 하나의 라이브러리일 수 있으며, 음악은 다른 라이브러리일 수 있으며, 문서는 또 다른 라이브러리일 수 있다. 라이브러리는 특정 타입의 항목들에 관한 도구 및 액티비티를 제공할 수 있다. 예를 들어, 포토 라이브러리에는, 슬라이드 쇼를 생성하거나 그림들을 분배하는 것과 같은 포토들의 조작과 관련된 도구 및 필터가 존재할 수 있다. 도 35에 도시된 바와 같이, 블록 962에서, 선택된 특징을 가진 항목들을 포함하는 새로운 라이브러리가 생성된다. 블록 964에서, 선택된 항목들은 라이브러리 내에 그룹화된다. 블록 966에서, 항목들의 선택된 특징 또는 다른 원하는 기능들과 관련된 도구 및/또는 액티비티가 제공된다.
도 36은 이용 가능한 라이브러리들의 집합이 도시되는 스크린 표시의 도면이다. 도 36에 도시된 바와 같이, 라이브러리는 문서 라이브러리(971), 포토 및 비 디오 라이브러리(972), 음악 라이브러리(973), 메시지 라이브러리(974), 콘택 라이브러리(975) 및 TV 및 영화 라이브러리(976)는 물론 모든 항목 라이브러리(977)를 포함한다. 모든 항목 라이브러리(977)는 조합된 모든 다른 라이브러리로부터의 항목들의 총 수인 275개의 항목을 포함하는 것으로 도시된다. 정보 라인(644)은 총 700MB의 메모리를 취하는 총 275개의 항목을 표시한다. 문서 라이브러리(971)는 도 10과 관련하여 전술한 라이브러리라는 점에 유의한다.
도 37은 가상 폴더 집합의 범위를 정의하기 위한 루틴(990)의 흐름도이다. 후술되는 바와 같이, 가상 폴더 시스템은 사용자에게 모든 항목이 쉽게 액세스 가능하도록 다수의 물리적 위치들(예를 들어, 상이한 하드 드라이브, 상이한 컴퓨터, 상이한 네트워크 위치 등)로부터의 항목들을 표현할 수 있다. 예를 들어, 사용자는 단일 표시 상의 다수의 물리적 위치로부터 음악 파일을 제공받아 이 파일들을 한번에 조작할 수 있다.
도 37에 도시된 바와 같이, 블록 992에서, 항목들이 드로잉되는 물리적 위치들에 대한 범위가 정의된다. 블록 994에서, 질의에 응답하여, 항목들은 범위에서 정의된 물리적 위치들로부터 드로잉된다. 블록 966에서, 질의에 의해 드로잉된 모든 항목들은 단일 표시 상에 제공된다.
도 38은 가상 폴더 집합의 범위를 형성할 수 있는 다양한 소스의 블록도이다. 도 38에 도시된 바와 같이, 시스템(1000)은 현재의 컴퓨터(1010), 추가 컴퓨터(1020), 외부 및 분리식 스토리지(1030) 및 네트워크 상의 위치들(1040)을 포함할 수 있다. 전체 범위(1001)는 집합을 생성하기 위해 사용자의 항목들이 드로잉 되는 모든 물리적 위치들을 포함하는 것으로 설명된다. 범위는 사용자에 의해 설정되고 변경될 수 있다. 전술한 바와 같이, 다른 도면들은, 도 34가 서버로부터의 상이한 문서들 및 현재의 컴퓨터 상의 My Documents 폴더를 나타내고, 도 18이 다수의 위치에 물리적으로 저장된 물리적 폴더들을 나타내는 것과 같이 항목들이 상이한 물리적 위치로부터 올 수 있다는 것을 보여 주었다.
도 39는 가상 폴더 집합 내에 논-파일 항목들을 포함시키기 위한 루틴(1080)의 흐름도이다. 논-파일 항목들은 일반적으로 물리적 파일 스토리지에 위치하는 파일 항목들과 대조적이다. 논-파일 항목들의 예는 이메일 또는 콘택과 같은 것이다. 도 39에 도시된 바와 같이, 블록 1082에서, 질의에 의해 검색될 수 있는 파일 항목들과 함께 논-파일 항목들을 포함하기 위해 데이타베이스가 사용된다. 블록 1084에서, 질의에 응답하여, 논-파일 항목들 및 파일 항목들이 질의에 매칭되도록 드로잉된다. 블록 1086에서, 질의에 매칭되는 논-파일 항목들 및 파일 항목들이 표시 상에 제공된다.
도 40은 다양한 논-파일 항목들을 나타내는 스크린 표시의 도면이다. 도 40에 도시된 바와 같이, 항목들은 "John"을 포함하는 것들로 필터링되었다. 항목들은 콘텍 항목(1101), 이메일 항목(1102), 및 문서 항목들(1103, 1104)를 포함하는 것으로 도시된다. 콘택 항목(1101) 및 이메일 항목(1102)은 논-파일 항목이다. 본 시스템은 이러한 논-파일 항목들이 정규 파일 항목들과 함께 포함되는 것을 허용하여, 이들이 사용자가 원하는 대로 구성되고 조작될 수 있게 한다. 도 2와 관련하여 전술한 바와 같이, 이러한 논-파일 항목들은 관계형 데이타베이스(230) 내 에 완전히 포함될 수 있는데, 그렇지 않은 경우 이 데이타베이스는 파일들의 특성에 대한 정보를 포함한다.
후술되는 바와 같이, 정적 또는 동적일 수 있는 가상 폴더들은 분배될 수 있다. 정적 및 동적 리스트의 분배는 사용자가 선택된 항목들을 분배하는 것을 허용한다. 피분배자는 리스트 내의 항목들에 대한 사용 권한을 허가받으며, 리스트가 변경될 때, 사용 권한이 갱신되어, 피분배자는 리스트의 현재 항목들에 계속 액세스할 수 있다.
도 41은 정적 리스트 및 한 세트의 참조 항목들을 포함하는 메모리 시스템(4100)의 블록도이다. 메모리 시스템(4100)은 정적 리스트를 유지하는 메모리 위치(4110), 항목 A를 유지하는 메모리 위치(4120), 및 항목 B를 유지하는 메모리 위치(4130)를 포함한다. 메모리 위치(4110)의 정적 리스트는 항목 A에 대한 참조는 물론 항목 A에 대한 주석과, 항목 B에 대한 참조는 물론 항목 B에 대한 주석을 포함한다. 이 주석들은 실제 항목들의 일부는 아니지만, 리스트에 속한다. 정적 리스트 타입의 몇몇 예는 쇼핑 리스트, 음악 재생 리스트, 및 그림들의 슬라이드 쇼이다.
도 42는 정적 리스트를 분배하기 위한 루틴(4200)의 흐름도이다. 블록 4210에서, 분배자는 정적 리스트가 분배되어야 함을 표시한다. 판정 블록 4220에서, 분배자가 각 항목을 분배할 수 있는 사용 권한을 갖고 있는지에 대한 판정이 이루어진다. 항목들의 일부가 분배될 수 없는 경우, 루틴은 블록 4230으로 계속되어, 분배자는 피분배자가 지적된 항목들에 액세스할 수 없다는 것을 분배 시간에 통지 받는다. 항목들 각각이 분배될 수 있는 경우, 루틴은 판정 블록(4250)으로 계속된다.
분배자가 각각의 항목을 분배할 수 있는 사용 권한을 갖는지를 판정하는 프로세스에서, 일 실시예에서는, 리스트 자체가 사용 권한이 판정되는 제1 항목이다. 즉, 제1 단계는 분배자가 리스트 자체를 분배할 수 있는 사용 권한을 갖는지를 판정하는 것이다. 분배자가 리스트를 분배할 수 있는 사용 권한을 갖지 않은 경우, 분배자는 리스트를 분배할 수 있는 사용 권한을 갖지 않았음을 통지받고, 루틴은 종료된다. 분배자가 리스트를 분배할 수 있는 사용 권한을 가진 경우, 분배자가 항목들 각각을 분배할 수 있는 사용 권한을 갖는지에 관해, 리스트에 의해 참조되는 항목들 각각에 대한 판정이 이루어진다. 분배자가 특정 항목을 분배할 수 있는 사용 권한을 갖지 않은 경우, 분배자는 그 항목이 분배될 수 없다는 것을 통지받는다. 프로세스의 끝에, 분배자가 분배할 수 있는 사용 권한을 가진 항목들의 세트에 대해 루틴은 블록 4250으로 계속된다.
판정 블록 4250에서, 피분배자가 판독 전용 액세스에 반대되는 판독 및 기입 액세스를 제공받아야 한다는 것을 분배자가 표시했는지에 대한 판정이 이루어진다. 분배자가 판독 및 기입 액세스가 제공되지 말아야 한다고 표시한 경우, 루틴은 블록 4260으로 계속되어, 피분배자는 판독 전용 사용 권한을 허가받는다. 분배자가 피분배자가 판독 및 기입 액세스를 가져야 한다고 표시한 경우, 루틴은 블록 4270으로 계속되어, 피분배자는 판독 및 기입 사용 권한을 허가받는다. 블록 4280에서, 정적 리스트 자체는 물론 정적 리스트에서 참조되는 임의의 항목들에 대한 지 정된 액세스가 피분배자에게 제공된다. 그러면, 피분배자는 분배자의 컴퓨터로부터 정적 리스트 및 그의 참조 항목들을 원격 액세스할 수 있다.
도 43은 정적 리스트로부터 추가/삭제된 항목들을 재허가하기 위한 루틴(4300)의 흐름도이다. 블록 4310에서, 분배자는 정적 리스트에 대해 항목들을 추가하거나 삭제한다. 블록 4320에서, 항목들은 정적 리스트의 피분배자들에 대해 액세스를 제공하거나 삭제하기 위해 재허가된다. 예를 들어, 분배자가 리스트로부터 그림을 삭제한 경우, 피분배자도 이 그림에 대한 사용 권한을 잃는다. 이와 달리, 분배자가 재생 리스트에 노래를 추가한 경우, 피분배자는 이 노래에 대한 액세스가 허가된다. 대체 실시예에서, 항목들은 이들이 정적 리스트로부터 나오고 들어갈 때 동적으로 허가될 수도 있는데, 이는 정적 리스트의 실제 정의가 데이타베이스 내에 상주하고, 정적 리스트가 변경될 때 모니터링될 수 있기 때문이다.
도 44는 동적 리스트를 생성하기 위한 루틴(4400)의 흐름도이다. 블록 4410에서, 사용자는 동적 리스트를 생성하기 위한 범위 및 기준 세트를 제공한다. 블록 4420에서, 프로세서는 범위 및 기준 세트를 관계형 데이타베이스에 전달한다. 블록 4430에서, 관계형 데이타베이스는 결과를 프로세서로 제공한다. 블록 4440에서, 프로세서는 결과를 동적 리스트 내에 항목들로서 제공한다.
도 10과 관련하여 전술한 바와 같이, 라이브러리와 같은 소정의 가상 폴더들은 이들의 생성에 대해 동적 리스트에 의존한다. 예를 들어, 사용자는 일반적으로 이들의 문서를 찾기 위해 이들의 문서 라이브러리로 간다. 문서 라이브러리는 동적 리스트 타입이다. 리스트의 범위는 로컬 머신 상에서 이용 가능한 데이타 스토 리지로 설정되거나, 일례로서 네트워크 상의 모든 머신 상에 저장된 데이타를 포함할 수 있다.
도 45는 동적 리스트 및 한 세트의 참조 항목들을 포함하는 메모리 시스템(4500)의 블록도이다. 메모리 시스템(4500)은 동적 리스트를 유지하는 메모리 위치(4510), 항목 A를 유지하는 메모리 위치(4520), 항목 B를 유지하는 메모리 위치(4530), 및 항목 C를 유지하는 메모리 위치(4540)를 포함한다. 메모리 위치(4510)에 저장된 동적 리스트는 메모리 시스템(4500) 모두를 포함하는 범위를 가지며, case=X 및 client=100을 포함하는 기준을 갖는다. 이 기준을 만족시키는 참조 항목들은 항목 A에 대한 참조 및 항목 B에 대한 참조를 포함한다. 메모리 위치(4520)에 저장된 항목 A는 case=X 및 client=100의 특성을 가지며, 메모리 위치(4530)에 저장된 항목 B는 case=X 및 client=100의 특성을 가진다. 메모리 위치(4540)에 저장된 항목 C는 case=X 및 client=99의 특성을 가진다. 항목 C의 client=99의 특성은 메모리 위치(4510)에 저장된 동적 리스트의 기준에 매칭되지 않으므로, 항목 C는 리스트에서 참조되지 않는다.
도 46은 동적 리스트를 분배하기 위한 루틴(4600)의 흐름도이다. 블록 4610에서, 분배자는 동적 리스트가 분배되어야 한다는 것을 표시한다. 판정 블록 4620에서, 분배자가 리스트 상의 항목들 각각을 분배할 수 있는 사용 권한을 갖는지에 대한 판정이 이루어진다. 항목들 중 일부가 분배될 수 없는 경우, 루틴은 블록 4630으로 계속되어, 분배자는 피분배자가 지목된 항목들에 액세스할 수 없다는 것을 분배 시간에 통지받는다. 항목들 각각이 분배될 수 있는 경우, 루틴은 판정 블 록 4640으로 계속된다.
분배자가 각각의 항목을 분배할 수 있는 사용 권한을 갖는지를 판정하는 프로세스에서, 일 실시예에서는, 리스트 자체가 사용 권한이 판정되는 제1 항목이다. 즉, 제1 단계는 분배자가 리스트 자체를 분배할 수 있는 사용 권한을 갖는지를 판정하는 것이다. 분배자가 리스트를 분배할 수 있는 사용 권한을 갖지 않은 경우, 분배자는 리스트를 분배할 수 있는 사용 권한을 갖고 있지 않다는 것을 통지받는다. 분배자가 리스트를 분배할 수 있는 사용 권한을 가진 경우, 분배자가 항목들 각각을 분배할 수 있는 사용 권한을 갖는지에 관해, 리스트에 의해 참조되는 항목들 각각에 대한 판정이 이루어진다. 분배자가 특정 항목을 분배할 수 있는 사용 권한을 갖지 않은 경우, 분배자는 그 항목이 분배될 수 없다는 것을 통지받는다. 프로세스의 끝에, 분배자가 분배할 수 있는 사용 권한을 가진 항목들의 세트에 대해, 루틴은 판정 블록 4640으로 계속된다.
판정 블록 4640에서, 분배자가 정적 리스트 포맷의 항목들만을 분배하기를 원하는지에 대한 판정이 이루어진다. 즉, 분배자가 동적 리스트가 아니라 정적 리스트 형태의 현재 항목들을 분배하기를 원하는지에 대한 판정이 이루어진다. 정적 리스트가 분배되어야 하는 경우, 루틴은 블록 4650으로 계속되어, 동적 리스트 내에 현재 무엇이 존재하는지를 나타내는 정적 리스트가 생성되고, 이 정적 리스트는 도 42와 관련하여 전술한 바와 같이 분배된다. 분배자가 정적 리스트 형태만을 분배하기를 원하지 않는 경우, 루틴은 블록 4660으로 계속된다.
블록 4660에서, 동적 리스트의 기준을 만족시키는 모든 항목들이 분배된다. 이것은 항목들이 분배가 발생하고 있는 머신 상의 그들 각각의 스토리지 장소들에 남으며, 피분배자가 이 항목들에 액세스하는 것을 허용하기 위해 허가된다는 것을 의미한다. 이 프로세스의 종료시에, 피분배자는 분배자의 컴퓨터로부터 리스트 및 그의 참조 항목들에 원격 액세스할 수 있다.
도 47은 정적 리스트에 대해 삭제 또는 추가되는 항목들을 재허가하기 위한 루틴(4700)의 흐름도이다. 블록 4710에서, 항목은 동적 리스트 기준을 만족시키거나 더 이상 만족시키지 않도록 특성이 변경된다. 블록 4720에서, 항목은 동적 리스트의 피분배자에 대해 액세스를 적절히 제공하거나 삭제하기 위해 재허가된다. 즉, 현재 동적 리스트 내에 있는 항목이 동적 리스트의 기준을 더 이상 만족시키지 않도록 특성이 변경되는 경우, 이 항목은 동적 리스트의 피분배자에 대해 액세스를 삭제하도록 재허가된다. 같은 방식으로, 동적 리스트 상에 이전에 존재하지 않는 임의의 항목들이 이제 동적 리스트의 범위 내에 있고 기준을 만족시키도록 특성이 변경되는 경우, 이들은 동적 리스트의 피분배자에게 액세스를 제공하도록 재허가된다.
도 48은 항목이 제거된 동적 리스트를 포함하는 메모리 시스템(4800)의 블록도이다. 메모리 시스템(4800)은 동적 리스트를 유지하는 메모리 위치(4810), 항목 A를 유지하는 메모리 위치(4820), 항목 B를 유지하는 메모리 위치(4830) 및 항목 C를 유지하는 메모리 위치(4840)를 포함한다. 메모리 시스템(4800)은 도 45의 메모리 시스템(4500)과 유사하다. 도 48의 예에서, 스토리지 위치(4830)의 항목 B는 client=99가 되도록 그의 클라이언트 특성이 변경되었다. 이러한 변경으로 인해, 항목 B는 client=100을 요구하는 동적 리스트의 기준을 더 이상 만족시키지 못한다. 따라서, 항목 B는 메모리 위치(4810)에 저장되는 동적 리스트로부터 삭제되었다. 따라서, 동적 리스트의 피분배자는 더 이상 항목 B에 대한 사용 권한을 갖지 못한다.
도 49는 항목들이 추가된 동적 리스트를 포함하는 메모리 시스템(4900)의 블록도이다. 메모리 시스템(4900)은 동적 리스트를 유지하는 메모리 위치(4910), 항목 A를 유지하는 메모리 위치(4920), 항목 B를 유지하는 메모리 위치(4930), 항목 C를 유지하는 메모리 위치(4940), 및 새로운 항목 D를 유지하는 메모리 위치(4950)를 포함한다. 도 48의 메모리 위치(4810)의 동적 리스트에 비해, 도 49의 메모리 위치(4910)의 동적 리스트는 항목 C 및 D에 대한 참조를 추가한 것으로 도시된다. 이것은 메모리 위치(4940)의 항목 C 및 메모리 위치(4950)의 새로운 항목 D가 그들의 클라이언트 특성이 변경되거나 client=100으로 설정되었기 때문에 발생했다. 이러한 변경은 항목 C 및 D가 이제 메모리 위치(4910)에 저장된 동적 리스트의 기준을 만족시키게 하며, 따라서 동적 리스트는 이제 이들 항목들에 대한 참조를 포함한다. 이것은 동적 리스트의 피분배자가 이제 항목 C 및 D에 대한 액세스를 허가받게 한다.
도 50은 분배 API를 호출하기 위한 루틴(5000)의 흐름도이다. 후술되는 바와 같이, 리스트들 외에, 개별 항목들도 분배될 수 있다. 블록 5010에서, 분배 API는 리스트 또는 개별 항목의 분배에 관련하여 호출된다. 블록 5020에서, 호출에 응답하여, 개별 항목에 대해, 또는 리스트 및 그 리스트의 참조 항목들에 대해 사용 권한이 허가된다.
전술한 것과 같은 프로그래밍 인터페이스가 리스트 또는 개별 항목에 대한 분배 프로세스의 일부로서 사용될 수 있다. 도 51a-51l과 관련하여 후술되는 바와 같이, 분배 프로세스에서 사용되는 것과 같은 프로그래밍 인터페이스(또는 보다 간단하게 인터페이스)는 하나 이상의 코드 세그먼트가 하나 이상의 다른 코드 세그먼트와 통신하거나, 그에 의해 제공되는 기능에 액세스할 수 있게 하는 임의의 메카니즘, 프로세스, 프로토콜로서 보일 수 있다. 대안으로, 프로그래밍 인터페이스는 시스템의 다른 컴포넌트의 하나 이상의 메카니즘, 메소드, 기능 호출, 모듈 등에 통신 결합할 수 있는 하나의 컴포넌트의 하나 이상의 메카니즘, 메소드, 기능 호출, 모듈, 객체 등으로서 보일 수 있다. 이전 문장에서의 "코드 세그먼트"라는 용어는 하나 이상의 명령 또는 코드 라인을 포함하는 것으로 의도되며, 예를 들어 적용되는 기술 또는 코드 세그먼트들이 개별적으로 컴파일되거나 코드 세그먼트들이 소스, 중간물 또는 객체 코드로서 제공되거나, 코드 세그먼트들이 실행 시간 시스템 또는 프로세스에서 사용되거나, 이들이 동일 또는 다른 머신 상에 위치하거나 다수의 머신들에 분산되거나, 코드 세그먼트들에 의해 표현되는 기능이 전적으로 소프트웨어로, 전적으로 하드웨어로, 또는 하드웨어 및 소프트웨어의 조합으로 구현되는지에 관계 없이, 코드 모듈, 객체, 서브루틴, 함수 등을 포함한다.
개념적으로, 프로그래밍 인터페이스는 도 51a 또는 도 51b에 도시된 바와 같이 일반적으로 보일 수 있다. 도 51a는 제1 및 제2 코드 세그먼트들이 통신하는 도관으로서 인터페이스 Interface1을 나타낸다. 도 51b는 인터페이스를, 매체 M을 통해 시스템의 제1 및 제2 코드 세그먼트가 통신할 수 있게 하는 인터페이스 객체 I1 및 I2(제1 및 제2 코드 세그먼트의 일부이거나 아닐 수 있다)를 포함하는 것으로 나타낸다. 도 51b의 뷰에서, 인터페이스 객체 I1 및 I2를 동일 시스템의 개별 인터페이스들로 간주할 수 있으며, 또한 객체 I1 및 I2 플러스 매체 M이 인터페이스를 포함하는 것으로 간주할 수 있다. 도 51a 및 51b가 양방향 흐름 및 흐름의 각 측 상의 인터페이스를 도시하고 있지만, 소정의 구현은 한 방향의 정보 흐름만을 갖거나(또는 후술하는 바와 같이 어떠한 정보 흐름도 없음), 일측 상의 인터페이스 객체만을 가질 수 있다. 예를 들어, 애플리케이션 프로그래밍 인터페이스(API), 입력점, 메소드, 함수, 서브루틴, 원격 프로시져 호출 및 컴포넌트 객체 모델(COM) 인터페이스와 같은 용어들은 프로그래밍 인터페이스의 정의 내에 포함되지만 이에 한하지 않는다.
이러한 프로그래밍 인터페이스의 양태들은 제1 코드 세그먼트가 제2 코드 세그먼트로 정보(여기서 "정보"는 가장 넓은 의미로 사용되며, 데이타, 명령, 요구 등을 포함한다)를 전송하는 메소드; 제2 코드 세그먼트가 정보를 수신하는 메소드; 및 정보의 구조, 시퀀스, 신택스, 구성, 스키마, 타이밍 및 컨텐츠를 포함할 수 있다. 이와 관련하여, 기반 전송 매체 자체는, 정보가 인터페이스에 의해 정의되는 방식으로 전송되는 한, 이 매체가 유선이거나 무선이거나, 또는 이들의 조합이거나에 관계없이 인터페이스의 동작에 중요하지 않을 수 있다. 소정의 상황에서, 정보 전송이 또 하나의 메카니즘을 통하거나(예를 들어, 코드 세그먼트들 사이의 정보 흐름으로부터 분리된 버퍼, 파일 등에 있는 정보), 존재하지 않을 수 있을 때, 하 나의 코드 세그먼트가 제2 코드 세그먼트에 의해 수행되는 기능에 단순히 액세스할 때, 정보는 통상의 의미에서 한 방향 또는 양 방향으로 전달되지 않을 수 있다. 이들 양태들의 어느 하나 또는 모두는 주어진 상황에서, 예를 들어 코드 세그먼트들이 느슨하게 결합되거나 단단하게 결합된 구성의 시스템의 일부인지에 따라서 중요할 수 있으며, 따라서 이 리스트는 설명적인 것이지 제한적인 것으로 간주되지 않아야 한다.
이러한 프로그래밍 인터페이스의 개념은 당업자들에게 공지되어 있으며, 본 발명의 전술한 설명으로부터 명백하다. 그러나, 프로그래밍 인터페이스를 구현하는 다른 방법들이 있으며, 명백히 배제되지 않는 한, 이들도 이 명세서의 끝에 설명되는 청구범위에 포함되는 것으로 의도된다. 이러한 다른 방법들은 도 51a 및 51b의 간단한 뷰보다 더 복잡한 것으로 보일 수 있으나, 그럼에도 이들은 동일한 전체 결과를 달성하는 유사한 기능을 수행한다. 이제, 몇몇 예시적인 대안적인 프로그래밍 인터페이스의 구현에 대해 설명한다.
도 51c 및 51d는 분산 구현(factoring implementation)을 나타낸다. 분산 구현에 따르면, 하나의 코드 세그먼트에서 다른 코드 세그먼트로의 통신은 통신을 다수의 개별 통신으로 분할함으로써 간접적으로 달성될 수 있다. 이것은 도 51c 및 51d에 개략적으로 도시되어 있다. 도시된 바와 같이, 몇몇 인터페이스는 분할 가능한 기능 세트에 의해 설명될 수 있다. 따라서, 도 51a 및 51b의 인터페이스 기능은, 수학적으로 24를, 또는 2X2X3X2를 제공할 수 있는 것처럼, 동일 결과를 달성하도록 인수 분해될 수 있다. 따라서, 도 51c에 도시된 바와 같이, 인터페이스 Interface1에 의해 제공되는 기능은 동일 결과를 달성하면서 인터페이스의 통신을 다수의 인터페이스 Interface1A, Interface1B, Interface1C 등으로 변환하도록 세분될 수 있다. 도 51d에 도시된 바와 같이, 인터페이스 I1에 의해 제공되는 기능은 동일 결과를 달성하면서 다수의 인터페이스 I1a, I1b, I1c 등으로 세분될 수 있다. 마찬가지로, 제1 코드 세그먼트로부터 정보를 수신하는 제2 코드 세그먼트의 인터페이스 I2는 다수의 인터페이스 I2a, I2b, I2c 등으로 인수 분해될 수 있다. 인수 분해시, 제1 코드 세그먼트에 포함된 인터페이스의 수는 제2 코드 세그먼트에 포함된 인터페이스의 수와 일치할 필요가 없다. 도 51c 및 51d의 경우들 중 어느 하나에서, 인터페이스들 Interface1 및 I1의 기능적 사상은 도 51a 및 51b 각각과 동일하게 유지된다. 인터페이스들의 인수 분해는 결합, 교환 및 기타 수학적 특성을 따를 수도 있으며, 따라서 인수 분해는 인식하기 어려울 수 있다. 예를 들어, 연산들의 순서화는 중요하지 않을 수 있으며, 따라서 하나의 인터페이스에 의해 수행되는 기능은 그 인터페이스에 도달하기 전에 다른 코드 또는 인터페이스에 의해 잘 수행되거나, 시스템의 개별 컴포넌트에 의해 수행될 수 있다. 더욱이, 프로그래밍 기술 분야의 전문가는 동일 결과를 달성하는 상이한 기능 호출을 만드는 다양한 방법이 있다는 것을 알 수 있다.
도 51e 및 51f는 재정의 구현을 나타낸다. 재정의 구현에 따르면, 몇몇 경우에, 여전히 의도한 결과를 달성하면서 프로그래밍 인터페이스의 소정의 양태들(예를 들어 파라미터들)을 무시, 추가 또는 재정의하는 것이 가능할 수 있다. 이것은 도 51e 및 51f에 도시되어 있다. 예를 들어, 도 51a의 인터페이스 Interface1 이 3개의 파라미터 input, precision 및 output을 포함하고, 제1 코드 세그먼트에서 제2 코드 세그먼트로 발행되는 호출인 함수 호출 Square(input, precision, output)를 포함하는 것으로 가정한다. 중간 파라미터 precision이 주어진 시나리오에서 중요하지 않은 경우, 도 51e에 도시된 바와 같이, 이것은 무시되거나 심지어 무의미한(이 상황에서) 파라미터로 대체될 수 있다. 중요하지 않은 추가 파라미터를 추가할 수도 있다. 어느 경우에나, 입력이 제2 코드 세그먼트에 의해 제곱된 후 출력이 리턴되는 한 스퀘어의 기능은 달성될 수 있다. precision은 컴퓨팅 시스템의 소정의 다운스트림 또는 다른 부분에 대해 당연히 의미있는 파라미터일 수 있지만, precision이 제곱을 스퀘어를 계산하는 좁은 목적을 위해 필요하지 않은 것으로 인식되는 경우, 이것은 대체되거나 무시될 수 있다. 예를 들어, 유효한 precision 값을 전달하는 대신에, 생일 등과 같은 의미 없는 값이 결과에 악영향을 미치는 일 없이 전달될 수 있다. 마찬가지로, 도 51f에 도시된 바와 같이, 인터페이스 I1은 인터페이스에 파라미터를 추가하거나 무시하도록 재정의된 인터페이스 I1'로 대체된다. 인터페이스 I2는 마찬가지로 불필요한 파라미터, 또는 다른 곳에서 처리될 수 있는 파라미터를 무시하도록 재정의된 인터페이스 I2'로서 재정의될 수 있다. 여기서 요점은 몇몇 경우에 프로그래밍 인터페이스는 소정의 목적을 위해 필요하지 않은 파라미터들과 같은 양태들을 포함할 수 있으며, 따라서 이들은 무시되거나 재정의되거나, 또는 다른 목적을 위해 다른 곳에서 처리될 수 있다는 것이다.
도 51g 및 51h는 인라인 코딩 구현을 나타낸다. 인라인 코딩 구현에 따르 면, 2개의 개별 코드 모듈의 기능의 일부 또는 모두를 병합하여, 이들 사이의 인터페이스가 형태를 변경하는 것도 가능할 수 있다. 예를 들어, 도 51a 및 51b의 기능은 각각 도 51g 및 51h의 기능으로 변환될 수 있다. 도 51g에서, 이전의 제1 및 제2 코드 세그먼트는 이들 양자를 포함하는 모듈로 병합된다. 이 경우, 코드 세그먼트들은 여전히 서로 통신하지만, 인터페이스는 단일 모듈에 보다 적합한 형태로 적응될 수 있다. 따라서, 예를 들어, 형식적인 호출 및 리턴 명령문들은 더 이상 필요 없을 수 있지만, 인터페이스 Interface1에 따른 유사한 처리 또는 응답이 여전히 유효할 수 있다. 마찬가지로, 도 51h에 도시된 바와 같이, 도 51b로부터의 인터페이스 I2의 일부(또는 전부)는 인터페이스 I1에 인라인으로 기입되어 인터페이스 I1''를 형성할 수 있다. 도시된 바와 같이, 인터페이스 I2는 I2a 및 I2b로 분할되며, 인터페이스 부분 I2a는 인터페이스 I1에 인라인으로 코딩되어 인터페이스 I1''를 형성한다. 구체적인 예에서, 도 51b의 인터페이스 I1이, 입력과 함께 전달된 값(제곱을 하기 위해)을 제2 코드 세그먼트로 처리한 후 제곱된 결과를 출력으로 전달하는 인터페이스 I2에 의해 수신되는 함수 호출 square(input,output)를 수행하는 것으로 고려하자. 이 경우, 제2 코드 세그먼트에 의해 수행되는 처리는 인터페이스에 대한 호출 없이 제1 코드 세그먼트에 의해 수행될 수 있다.
도 51i 및 51j는 분리 구현을 나타낸다. 분리 구현에 따르면, 하나의 코드 세그먼트에서 다른 코드 세그먼트로의 통신은 통신을 다수의 개별 통신들로 분리함으로써 간접적으로 구현될 수 있다. 이것은 도 51i 및 51j에 개략적으로 도시되어 있다. 도 51i에 도시된 바와 같이, 하나 이상의 미들웨어(이들은 오리지날 인터페 이스로부터의 기능 및/또는 인터페이스 기능들을 분리하므로 분리 인터페이스라고 한다)는 제1 인터페이스 Interface1 상의 통신들을 이들이 다른 인터페이스, 이 경우에는 인터페이스 Interface2A, Interface2B 및 Interface2C에 따르도록 변환하기 위해 제공된다. 이것은 예를 들어 Interface1 프로토콜에 따라 예를 들어 오퍼레이팅 시스템과 통신하도록 설계된 애플리케이션들의 설치 기반이 존재하지만, 그후 오퍼레이팅 시스템이 다른 인터페이스, 이 경우에는 인터페이스 Interface2A, Interface2B 및 Interface2C를 사용하도록 변경된 경우에 행해질 수 있다. 요점은 제2 코드 세그먼트에 의해 사용된 오리지날 인터페이스가 변경되어 제1 코드 세그먼트에 의해 사용된 인터페이스와 더 이상 호환이 가능하지 않아서 구식 인터페이스와 새로운 인터페이스를 호환 가능하게 만들기 위해 매개물이 사용된다는 점이다. 마찬가지로, 도 51j에 도시된 바와 같이, 제3 코드 세그먼트가 인터페이스 I1으로부터의 통신을 수신하기 위해 분리 인터페이스 DI1에 도입되고, 인터페이스 기능을 예를 들어 DI2와 함께 동작하도록 재정의된 인터페이스 I2a 및 I2b로 전송하지만 동일한 기능적인 결과를 제공하기 위해 분리 인터페이스 DI2에 도입될 수 있다. 마찬가지로, DI1 및 DI2는 동일 또는 유사한 기능적인 결과를 제공하면서 도 51b의 인터페이스 I1 및 I2의 기능을 새로운 오퍼레이팅 시스템으로 변환하도록 함께 동작할 수 있다.
도 51k 및 51l은 재기입 구현을 나타낸다. 재기입 구현에 따르면, 또 하나의 가능한 변형은 인터페이스 기능을 동일한 전체적인 결과를 달성하는 그밖에 다른 것으로 교체하기 위하여 코드를 동적으로 재기입하는 것이다. 예를 들어, 중간 언어(예를 들어, 마이크로소프트 IL, 자바 바이트코드 등)에서 제공되는 코드 세그먼트가 실행 환경에서(.Net 프레임워크, 자바 실행시간 환경 또는 다른 유사한 실행시간 타입 환경에 의해 제공되는 것 등) Just-in-Time(JIT) 컴파일러 또는 인터프리터로 제공되는 시스템이 있을 수 있다. JIT 컴파일러는 제1 코드 세그먼트에서 제2 코드 세그먼트로 통신들을 동적으로 변환하도록, 즉 이들이 제2 코드 세그먼트(오리지날 또는 다른 제2 코드 세그먼트)에 의해 요구될 수 있는 바와 같이 다른 인터페이스를 따르도록 재기입될 수 있다. 이것은 도 51k 및 51l에 도시되어 있다. 도 51k에서 알 수 있는 바와 같이, 이러한 접근법은 전술한 분리 구성과 유사하다. 이것은 예를 들어, 애플리케이션의 설치 기반이 Interface1 프로토콜에 따라 오퍼레이팅 시스템과 통신하도록 설계되지만, 그 후 오퍼레이팅 시스템이 상이한 인터페이스를 사용하도록 변경되는 경우에 행해질 수 있다. JIT 컴파일러는 설치 기반 애플리케이션으로부터의 온더플라이(on the fly) 통신이 오퍼레이팅 시스템의 새로운 인터페이스를 따르도록 하는 데 사용될 수 있다. 도 51l에 도시된 바와 같이, 인터페이스를 동적으로 재기입하는 이러한 접근법은 인터페이스를 동적으로 인수 분해하거나 변경하는 데에도 이용될 수 있다.
대체 실시예를 통해 인터페이스로서 동일 또는 유사한 결과를 달성하기 위한 전술한 시나리오들은 또한 다양한 방법으로, 직렬 및/또는 병렬로, 또는 다른 중개 코드에 의해 조합될 수 있다는 점에도 유의한다. 따라서, 위에서 설명된 대체 실시예들은 서로 배타적이 아니며, 혼합되고, 매칭되고, 조합되어, 도 51a 및 51b에 설명된 일반 시나리오들과 동일 또는 동등한 시나리오들을 생성할 수 있다. 대부 분의 프로그래밍 구축에 있어서, 여기서는 설명될 수 없지만 그럼에도 본 발명의 사상 및 범위에 의해 표현되는 인터페이스의 동일 또는 유사한 기능을 달성하는 다른 유사한 방법들이 존재한다는 점에도 유의해야 하는데, 즉 이것은 적어도 부분적으로는, 인터페이스의 값의 기초가 되는 인터페이스에 의해 표현되는 기능 및 인터페이스에 의해 가능하게 되는 이로운 결과들이라는 점에 유의한다.
도 52-59를 참조하여 후술되는 바와 같이, 정적 및 동적 리스트의 분배 외에, 개별 항목들도 분배될 수 있다. 사용자가 단일 파일, 예를 들어 사용자가 피드백을 취하기를 원하는 대규모 프리젠테이션을 분배하기를 원할 수 있는 많은 시나리오들이 존재한다. 이 경우, 사용자들은 그들의 작업 전체에서 폴더를 분배하기를 원하지 않고, 프리젠테이션을 포함하는 파일만을 분배하기를 원할 수 있다. 다른 예로는 사용자가 노래, 콘텍 또는 이메일을 분배하기를 원하는 것이다.
도 52는 항목을 분배하기 위한 루틴(5200)의 흐름도이다. 블록 5210에서, 사용자는 분배될 항목을 선택한다. 블록 5220에서, 사용자는 항목을 함께 분배할 피분배자를 선택한다. 블록 5230에서, 사용자는 피분배자에게 할당할 사용 권한을 선택한다. 사용 권한의 예로서, 사용자는 특정 피분배자에게 항목에 대한 판독 액세스만을 제공하기를 원할 수 있다.
도 53은 항목을 분배하기 위해 선택된 피분배자가 항목들에 액세스할 수 있는 것을 보장하기 위한 루틴(5300)의 흐름도이다. 블록 5310에서, 항목들은 분배자의 머신 상에 그대로 남으며, 시스템은 피분배자가 항목에 액세스할 수 있도록 보장하기 위한 프로세스를 개시한다. 즉, 항목들이 분배될 때, 이들은 분배자의 머신으로부터 이동하지 않으며, 대신 피분배자가 분배자의 머신을 통해 항목들에 대한 액세스를 제공받는다.
블록 5320에서, 시스템은 도 54를 참조하여 후술되는 바와 같이 피분배자에 의해 항목들이 액세스될 수 있는 파일 쉐어가 존재하는지를 확인한다. 블록 5330에서, 시스템은 도 55를 참조하여 후술되는 바와 같이 액세스 제어 리스트(ACL) 및 임의의 다른 사용 권한들이 설정되는지를 확인한다. 블록 5340에서, 시스템은 도 56을 참조하여 후술되는 바와 같이 암호화 파일 시스템(EFS) 및 디지탈 판권 관리(DRM)과 같은 임의의 보호 시스템으로 임의의 문제를 처리하는 작업을 행한다. 블록 5350에서, 도 57을 참조하여 후술되는 바와 같이, 방화벽이 구축된다. 블록 5360에서, 도 58을 참조하여 후술되는 바와 같이 분배 트랜잭션 상세가 기록된다.
도 54는 분배될 항목들이 액세스될 수 있는 파일 쉐어가 존재하는 것을 보장하기 위한 루틴(5400)의 흐름도이다. 블록 5410에서, 시스템은 항목이 분배되는 파일 쉐어가 존재하는지를 확인한다. 블록 5420에서, 파일 쉐어가 이미 존재할 때, 이 파일 쉐어는 파일을 원격적으로 이용 가능하게 하는 데 사용된다. 블록 5430에서, 시스템은 피분배자가 분배 항목들에 액세스하는 것을 허용하도록 파일 쉐어에 대한 사용 권한이 정당한지를 확인한다.
도 55는 ACL 및 임의의 다른 사용 권한들이 설정되는지를 확인하기 위한 루틴(5500)의 흐름도이다. 블록 5510에서, 항목들이 분배될 때, 사용자는 누구와 항목들을 분배하기를 원하는지에 대해 문의된다. 블록 5520에서, 사용자는 또한 피분배자에게 어떤 사용 권한을 허가하기를 원하는지에 대해 문의된다. 사용 권한의 예로서, 사용자는 특정 피분배자에게 판독 전용 사용 권한을 허가하기를 원하거나, 대안으로 분배되고 있는 항목을 변경할 수 있는 사용 권한을 허가할 수 있다. 블록 5330에서, 피분배자에 대해 요구되는 사용 권한에 기초하여, 시스템은 이것을 반영하여 분배자에 의해 요구되는 사용 권한을 허가하기 위해 보안 ACL을 설정한다.
도 56은 EFS 및 DRM을 이용하여 임의의 문제를 처리하는 작업을 행하기 위한 루틴(5600)의 흐름도이다. 판정 블록 5610에서, 분배될 항목이 EFS 또는 다른 보호 시스템에 의해 보호되는지에 대한 판정이 이루어진다. 항목에 대한 보호가 없는 경우, 루틴은 종료한다. 항목에 대한 보호가 존재하는 경우, 루틴은 판정 블록 5620으로 계속된다.
판정 블록 5620에서, 분배될 항목에 관해, 머신 상의 정책 또는 항목 상의 DRM에 의해 분배가 허용되는지에 대한 판정이 이루어진다. 분배가 허용되지 않는 경우, 루틴은 블록 5630으로 진행하여, 항목이 보호되어 분배될 수 없다는 통지가 제공된다. 판정 블록 5620에서 분배가 허용되는 것으로 판정되는 경우, 루틴은 블록 5640으로 진행하여, 항목이 분배되는 것을 허용하기 위하여 EFS 또는 다른 보호 시스템으로 임의의 문제를 해결한다.
도 57은 방화벽을 구축하기 위한 루틴(5700)의 흐름도이다. 판정 블록 5710에서, 방화벽이 인에이블되어 있는지에 대한 판정이 이루어진다. 디폴트로, 방화벽은 대부분의 컴퓨터 상에 인에이블되어 있으며, 사용자들은 계속 이 환경 하에서 안전하게 분배할 수 있는 것이 바람직하다. 판정 블록 5710에서, 방화벽이 인에이 블되어 있지 않은 것으로 판정되는 경우, 루틴은 종료한다. 방화벽이 인에이블되어 있는 경우, 루틴은 블록 5720으로 진행한다. 블록 5720에서, 시스템은 방화벽이 피분배자가 분배될 항목들에 액세스하는 것을 허용하는 것을 보장하도록 문제를 해결한다.
도 58은 분배 트랜잭션 상세를 기록하기 위한 루틴(5800)의 흐름도이다. 블록 5810에서, 무엇이 분배되었는지, 누구에게 분배되었는지, 언제 분배되었는지와 같은 것들을 포함하는 분배 트랜잭션 상세가 추적된다. 블록 5820에서, 분배자에 의한 후속 액세스를 위해 분배 트랜잭션 상세가 기록된다. 즉, 이러한 정보의 기록은 분배자가 그들의 머신으로부터 분배된 모든 항목들이 무엇인지, 누구와 이들 항목을 분배하였는지, 피분배자들이 어떤 액세스를 가졌는지를 나중에 검사하여 알 수 있게 해준다.
도 53-58의 루틴들은 분배될 항목들을 피분배자들이 이용할 수 있도록 하기 위해 필요한 작업들을 수행한다는 것을 이해할 것이다. 일 실시예에서, 분배될 항목들이 쉽게 발견될 수 있도록 하기 위해, 분배자는 또한 시스템이 피분배자에게 분배자의 머신으로부터 분배 항목들에 직접 액세스할 수 있는 링크를 전송하도록 할 수 있다. 시스템은 또한 피분배자들에게, 분배자가 피분배자들과 무엇을 분배하고 있는지를 알기 위해 분배자의 머신에 질의할 수 있는 능력을 제공할 수 있다.
도 59는 항목들을 분배하기 위한 헬퍼 루틴(5900)의 다양한 페이지들 사이의 네비게이션을 나타내는 블록도이다. 블록 5910에서, "리스트 마커 통합(list marker integration)에 대한 헬퍼 페이지 1이 제공된다. 일반적으로, 이 페이지는 사용자가 둘 이상의 분배할 항목을 선택한 후 헬퍼 루틴에 들어가는 경우에만 표시된다. 이 페이지의 목적은 사용자가 분배하기 위해 선택한 항목들을 보고 리스트를 수정하는 것을 허용하기 위한 것이다. 즉, 사용자가 둘 이상의 항목을 선택한 후 분배 작업을 선택하는 경우, 분배 헬퍼 루틴이 론칭되고, 사용자는 리스트 마커 통합 분배 페이지를 제공받는다. 페이지는 사용자에게 선택된 항목들의 리스트를 표시하여, 사용자가 리스트에 대해 추가 항목을 추가 및 삭제하는 것을 허용한다. 일 실시예에서, 리스트 뷰의 열들은 항목 명칭, 순서, 크기 및 캡션을 표시할 수 있다. 블록 5910의 헬퍼 페이지 1로부터, 사용자는 블록 5920의 헬퍼 페이지 2로 이동하기 위해 다음 버튼(5911)을 선택할 수 있다.
블록 5920에서, "EFS/DRM 검사"에 대한 헬퍼 페이지 2가 제공된다. 일 실시예에서, 이 페이지는 사용자에 선택된 항목들 중 하나 이상이 EFS 또는 DRM에 의해 보호되는 경우에만 표시된다. 이 페이지의 목적은 사용자들이 분배하고 있는 컨텐츠가 EFS 또는 DRM에 의해 보호된다는 것을 사용자들에게 통지하고, 사용자들이 컨텐츠를 분배하기를 계속 원하는지를 사용자들에게 문의하고, 사용자들이 컨텐츠를 어떻게 분배하기를 원하는지에 대한 옵션을 제공하기 위한 것이다. 이 페이지에서, 파일이 EFS로 암호화된 경우, 사용자는, 파일을 EFS로 암호화된 상태로 유지하고, 헬퍼 루틴이 피분배자에게 암호화된 파일에 대한 액세스를 제공하게 하거나, 헬퍼 루틴이 항목들로부터 암호화를 제거하게 할 것인지에 대한 선택권을 갖는다. 블록 5920의 헬퍼 페이지 2로부터 사용자는 블록 5910의 헬퍼 페이지 1로 복귀하도록 백 버튼(5921)을 선택하거나, 블록 5930의 헬퍼 페이지 3으로 진행하도록 다음 버튼(5922)을 선택할 수 있다.
블록 5930에서, "피플 피커/사용 권한(people picker/permissions"에 대한 헬퍼 페이지 3이 제공된다. 일 실시예에서, 이 페이지는 항상 표시되며, 헬퍼 루틴의 메인 페이지이다. 이 페이지로부터, 사용자는 누구와 컨텐츠를 분배하기를 원하는지, 및 분배하고 있는 사용자들에게 제공하기를 원하는 사용 권한들을 선택할 수 있다. 일 실시예에서, 하나의 항목만이 분배되고 있는 경우, 그 항목에 대한 아이콘이 표시되며, 다수의 항목들이 분배되고 있는 경우에는 스택이 표시된다. 일 실시예에서, 사용자는 "type a name and click add to list"로 표시된 아이콘을 클릭함으로써 헬퍼 페이지 3에 들어갈 수 있다. 사용자가 라인 내의 타입에 이름을 입력하면, 사용자는 "add to list" 아이콘 상에 클릭하여, 항목을 함께 분배하기를 원하는 피분배자를 사용자 리스트에 추가한다. 일 실시예에서, "auto-suggest" 드롭 다운 메뉴는 SID들이 존재하는 최근에 사용된 모든 콘택들의 캐시는 물론 사용자에 대한 개인 콘텍 스토어로부터의 사람들을 포함할 수 있다. 일 실시예에서, 사용자들이 이들의 머신 상의 다른 사람들은 물론 이들의 도메인 또는 캐슬 상의 다른 사람들을 선택하는 것을 허용하는 버튼으로부터 액세스될 수 있는 양식 어드레스 북이 존재한다. 사용자는 하나 이상의 개인 또는 그룹을 선택할 수 있다. 일 실시예에서, 피분배자 테이블의 우측 열은 분배자가 피분배자들 각각에 대한 사용 권한을 설정하는 것을 허용한다. 또한, 다양한 사용 권한 옵션은 판독기, 편집기, 소유자 및 액세스 제거와 같은 레벨들을 포함할 수 있다. 디폴트 사용 권한은 판독기 레벨일 수 있다. 피분배자를 삭제하기 위해, 일 실시예에서, 사 용자는 리스트로부터 선택된 피분배자를 간단히 삭제할 수 있다. 블록 5930의 헬퍼 페이지 3으로부터, 사용자는 블록 5920의 헬퍼 페이지 2로 복귀하기 위해 백 버튼(5931)을 선택하거나, 블록 5940의 헬퍼 페이지 4로 계속하기 위해 진행 버튼(5932)를 선택하거나, 블록 5950의 헬퍼 페이지 5로 계속하기 위해 쉐어 버튼(5933)을 선택할 수 있다.
블록 5940에서, "advanced sharing" 에 대한 헬퍼 페이지 4가 제공된다. 일 실시예에서, 이 페이지는 사용자가 진행 옵션 버튼(5932)을 선택한 경우에만 표시된다. 일 실시예에서, 진행 쉐어 버튼은 사용되는 파일 쉐어의 명칭 변경, 분배할 접속의 수에 대한 제한 설정, 쉐어에 대한 캐싱 거동의 설정, 및 단지 미리 정해진 역할이 아니라 사용자에 대한 고객 ACL의 설정 등과 같은 것들을 포함할 수 있다. 헬퍼 페이지 4로부터, 사용자는 블록 5930의 헬퍼 페이지 3으로 복귀하기 위해 백 버튼(5941) 또는 다음 버튼(5942)를 선택할 수 있다.
블록 5950에서, "sharing progress"에 대한 헬퍼 페이지 5가 제공된다. 일 실시예에서, 이 페이지는 항상 진행 페이지로서 표시된다. 이 페이지의 목적은 사용자의 컴퓨터가 요구된 항목들의 분배 작업을 행하고 있는 동안에 진행을 나타내는 것이다. 일 실시예에서, 페이지는 항목 분배 동작이 지정 기간(예를 들어 2초)보다 오래 걸릴 경우에만 표시된다. 즉, 사용자가 그들의 선택을 확인하고, 블록 5930의 헬퍼 페이지 3으로부터 쉐어 버튼(5933)을 선택할 때, 보안 서브 시스템은 항목들 상에 보안을 설정하고, 필요한 쉐어들을 생성한다. 대부분의 간단한 계층 구조에 대해, 이것은 고속 프로세스이지만, 더 긴 시간이 걸리는 프로세스에 대해, 블록 5950의 "sharing progress"에 대한 헬퍼 페이지 5가 표시될 수 있다. 일반적으로, 이 페이지는 시스템이 동작하고 있다는 것을 나타내는 비주얼 큐(예를 들어 애니메이션)를 제공하기 위한 것이며, 특히 시스템에 무슨 일이 일어나고 있는지를 표시할 수 있다. 블록 5950의 헬퍼 페이지 5로부터, 사용자는 블록 5960의 헬퍼 페이지 5로 진행하기 위해 취소 버튼(5951)을 선택하거나, 블록 5970의 헬퍼 페이지 7로 진행하기 위해 다음 버튼(5952)를 선택할 수 있다.
블록 5960에서, "cancel sharing"에 대한 헬퍼 페이지 6이 제공된다. 이 페이지는 사용자가 블록 5950의 헬퍼 페이지 5 상에 있는 동안 분배 동작을 취소하기 위하여 취소 버튼(5951)을 클릭하는 경우에 표시된다. 취소 버튼의 클릭은 요구된 항목의 분배 동작을 중지한다. 일 실시예에서, 사용자가 분배 프로세스를 취소하는 경우, 분배를 위한 설정이 적용을 끝내지 못했다는 것을 사용자에게 알리기 위한 확인 다이얼로그가 제공된다.
블록 5970에서, "confirmation/notifications"에 대한 헬퍼 페이지 7이 제공된다. 일 실시예에서, 이 페이지는 확인 및 통지 페이지로서 항상 표시된다. 이 페이지의 목적은 항목들이 성공적으로 분배되었다는 것을, 그리고 임의의 에러가 있었는지를 사용자에게 알리기 위한 것이며, 또한 사용자가 적절한 통지를 피분배자에게 전송하는 것을 허용하기 위한 것이다. 일 실시예에서, 사용자는 링크 상에 클릭함으로써 피분배자에게 초대를 전송하도록 선택할 수 있다. 일 실시예에서, 초대가 선택되는 경우, 디폴트 메일 클라이언트를 이용하여 통지가 전송된다. 일 실시예에서, 쉐어가 변경된 때, 쉐어에 추가된 새로운 사람들만이 이메일 통지 내 에 미리 포함되며, 쉐어가 제거된 때에는 메시지가 전송되지 않는다. 이메일 통지가 전송될 때, 이것은 분배 항목 또는 폴더에 대한 경로는 물론 "I have shared an item with you so you can access it over the network. To get to the shared item, click X or type X in your browser"와 같이 초대/통지를 수신자가 이해하는 것을 돕는 텍스트를 포함한다. 헬퍼 페이지 7은 또한 시스템이 요구 항목들을 분배할 수 없을 때 발생할 수 있는 에러들을 표시하는 데 사용된다.
본 발명의 바람직한 실시예가 도시되고 설명되었지만, 본 발명의 사상 및 범위로부터 벗어나지 않고 다양한 변화가 이루어질 수 있다는 것을 이해할 것이다.

Claims (90)

  1. 컴퓨터 시스템에서 분배자와 피분배자 사이에 항목들을 분배하는 방법으로서,
    상기 분배자의 컴퓨터 상에서 다수의 참조 항목을 가진 리스트를 생성하는 단계; 및
    상기 리스트를 피분배자에게 분배하여 상기 피분배자에게 상기 분배자의 컴퓨터로부터 상기 참조 항목들에 대한 원격 액세스를 제공하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 리스트는 정적 리스트인 방법.
  3. 제2항에 있어서, 상기 분배자가 상기 리스트로부터 항목들을 제거하면, 상기 피분배자는 상기 항목들에 대한 원격 액세스를 더 이상 제공받지 못하는 방법.
  4. 제2항에 있어서, 상기 리스트에 항목들이 추가되면, 상기 피분배자는 상기 추가된 항목들에 대한 원격 액세스를 제공받는 방법.
  5. 제1항에 있어서, 상기 리스트는 상기 참조 항목들에 대한 하나의 범위 및 한 세트의 기준들을 가진 동적 리스트인 방법.
  6. 제5항에 있어서, 상기 동적 리스트 상에 있는 항목이 상기 동적 리스트의 기준들을 더 이상 만족시키지 않을 정도로 특성 변경을 가질 때, 상기 피분배자는 상기 항목에 대한 원격 액세스를 더 이상 제공받지 못하는 방법.
  7. 제5항에 있어서, 상기 동적 리스트 상에 이전에는 없었던 항목이 상기 동적 리스트의 기준들을 만족시킬 정도로 특성 변경을 가질 때, 상기 피분배자는 상기 항목에 대한 원격 액세스를 제공받는 방법.
  8. 제1항에 있어서, 상기 분배자가 상기 피분배자에게 항목에 대한 액세스를 제공할 수 없을 때, 상기 분배자에게 통지가 제공되는 방법.
  9. 제1항에 있어서, 상기 분배자는 상기 피분배자가 상기 항목들에 대해 갖는 액세스의 타입을 제한할 수 있는 방법.
  10. 컴퓨터 시스템에서 항목들을 분배하는 방법으로서,
    참조 항목들을 가진 리스트에 액세스할 수 있는 사용 권한을 수신하는 단계; 및
    상기 리스트에 액세스할 수 있는 사용 권한을 수신하는 것에 응답하여, 상기 리스트 및 상기 참조 항목들에 원격 액세스하는 단계
    를 포함하는 방법.
  11. 제10항에 있어서, 상기 리스트는 가상 폴더로서 형성되는 정적 리스트인 방법.
  12. 제11항에 있어서, 상기 리스트에 대해 항목이 추가 또는 삭제되면, 그 항목에 액세스할 수 있는 사용 권한이 대응하여 추가 또는 삭제되는 방법.
  13. 제10항에 있어서, 상기 리스트는 상기 참조 항목들에 대한 기준들의 세트를 가진 가상 폴더로서 형성되는 동적 리스트인 방법.
  14. 제13항에 있어서, 항목들이 상기 동적 리스트의 기준들을 만족시키거나 더 이상 만족시키지 못할 정도로 그들의 특성들에 대한 변경을 가지면, 상기 항목에 액세스할 수 있는 사용 권한이 대응하여 추가 또는 삭제되는 방법.
  15. 제10항에 있어서, 항목에 대한 액세스가 가능하지 않을 때, 통지가 제공되는 방법.
  16. 제10항에 있어서, 상기 리스트에 액세스할 수 있는 사용 권한은 상기 항목들에 대해 이용할 수 있는 액세스의 타입을 지정하는 방법.
  17. 컴퓨터 프로그램 세그먼트가 하나 이상의 다른 컴퓨터 프로그램 세그먼트와 통신할 수 있도록 하기 위한 하나 이상의 컴퓨터 판독 가능 매체로서,
    가상 폴더에서 참조되는 한 세트의 항목들에 대한 원격 액세스를 제공하라는 요구가 상기 요구를 실행할 수 있는 하나 이상의 다른 컴퓨터 프로그램 세그먼트로 전송되게 하는 한 세트의 컴퓨터 사용 가능 명령들
    을 포함하는 매체.
  18. 제17항에 있어서, 상기 가상 폴더는 정적 리스트를 포함하는 매체.
  19. 제18항에 있어서, 상기 리스트에 대해 항목들이 추가 또는 삭제되면, 상기 항목들의 원격 액세스에 대한 사용 권한이 대응하여 추가 또는 삭제되는 매체.
  20. 제17항에 있어서, 상기 가상 폴더는 상기 참조 항목들에 대한 한 세트의 기준들을 가진 동적 리스트를 포함하는 매체.
  21. 제20항에 있어서, 항목이 상기 리스트의 기준들을 만족시키거나 더 이상 만족시키지 못할 정도로 특성 변경을 가지면, 상기 항목에 액세스할 수 있는 사용 권한이 대응하여 추가 또는 삭제되는 매체.
  22. 제17항에 있어서, 항목에 대한 액세스가 가능하지 않을 때, 통지가 제공되는 매체.
  23. 제17항에 있어서, 상기 항목들에 대한 액세스는 판독/기입 중 하나 또는 판독만으로 제한될 수 있는 매체.
  24. 리스트의 분배자와 피분배자 사이의 통신 방법으로서,
    상기 피분배자는 상기 분배자의 컴퓨터에서 상기 리스트 상에서 참조되는 항목들에 원격 액세스하기 위한 호를 발하고,
    상기 분배자는 상기 호를 수신하고, 상기 항목들에 대한 원격 액세스를 제공하는 방법.
  25. 제24항에 있어서, 상기 리스트는 정적 리스트인 방법.
  26. 제25항에 있어서, 상기 리스트에 대해 항목들이 추가 또는 삭제되면, 상기 항목들에 대한 원격 액세스가 대응하여 허가 또는 거부되는 방법.
  27. 제24항에 있어서, 상기 리스트는 상기 항목들에 대한 한 세트의 기준들을 가진 동적 리스트인 방법.
  28. 제27항에 있어서, 상기 항목들이 상기 리스트에 대한 기준들을 만족시키거나 더 이상 만족시키지 못할 정도로 상기 항목들의 특성들이 변경될 때, 상기 항목들은 대응하여 상기 리스트에 대해 추가 또는 삭제되는 방법.
  29. 제24항에 있어서, 상기 리스트가 분배될 때 상기 리스트 상에 있는 항목에 대한 액세스가 가능할 수 없는 경우, 상기 분배자에게 통지가 제공되는 방법.
  30. 제24항에 있어서, 상기 분배자는 상기 항목들에 대한 액세스의 타입을 제한할 수 있는 방법.
  31. 분배자가 리스트 상에서 참조되는 한 세트의 항목들을 피분배자와 분배할 수 있게 하기 위한 하나 이상의 컴퓨터 판독 가능 매체로서,
    상기 피분배자가 상기 분배자의 컴퓨터를 통해 상기 항목들에 원격 액세스하는 것을 허용하는 한 세트의 컴퓨터 사용 가능 명령어들
    을 포함하는 매체.
  32. 제31항에 있어서, 상기 리스트는 정적 리스트 또는 동적 리스트 중 하나인 매체.
  33. 제31항에 있어서, 상기 리스트에 대해 항목들이 추가 또는 삭제되면, 상기 피분배자의 상기 항목들에 액세스할 수 있는 사용 권한이 대응하여 추가 또는 삭제되는 매체.
  34. 제31항에 있어서, 상기 분배자가 액세스가 가능하지 않은 항목에 대한 액세스를 제공하려고 시도할 때, 상기 피분배자가 상기 항목에 액세스할 수 없다는 통지가 상기 분배자에게 제공되는 매체.
  35. 제31항에 있어서, 상기 항목들에 대해 제공되는 액세스의 타입은 판독 또는 판독-기입 중 하나일 수 있는 매체.
  36. 컴퓨터 시스템에서 분배자와 피분배자 사이에 항목들을 분배하는 방법으로서,
    상기 분배자의 컴퓨터 상에서 다수의 참조 항목들을 가진 가상 폴더를 생성하는 단계; 및
    상기 가상 폴더를 피분배자에게 분배하여 상기 피분배자가 상기 분배자의 컴퓨터로부터 상기 참조 항목들에 대한 원격 액세스를 제공받는 단계
    를 포함하는 방법.
  37. 제36항에 있어서, 상기 가상 폴더는 정적 가상 폴더인 방법.
  38. 제37항에 있어서, 상기 분배자가 상기 가상 폴더로부터 항목들을 제거하면, 상기 피분배자는 상기 항목들에 대한 원격 액세스를 더 이상 제공받지 못하는 방법.
  39. 제37항에 있어서, 상기 가상 폴더에 항목들이 추가되면, 상기 피분배자는 상기 추가된 항목들에 대한 원격 액세스를 제공받는 방법.
  40. 제36항에 있어서, 상기 가상 폴더는 상기 참조 항목들에 대한 하나의 범위 및 한 세트의 기준들을 가진 동적 가상 폴더인 방법.
  41. 제40항에 있어서, 상기 동적 가상 폴더 내에 있는 항목이 상기 동적 가상 폴더의 기준들을 더 이상 만족시키지 못할 정도로 특성 변화를 가질 때, 상기 피분배자는 상기 항목에 대한 원격 액세스를 더 이상 제공받지 못하는 방법.
  42. 제40항에 있어서, 상기 동적 가상 폴더 상에 이전에는 없었던 항목이 상기 동적 가상 폴더의 기준들을 만족시킬 정도로 특성 변화를 가질 때, 상기 피분배자는 상기 항목에 대한 원격 액세스를 제공받는 방법.
  43. 컴퓨터 시스템에서 분배자와 피분배자 사이에 적어도 하나의 항목을 분배하는 방법으로서,
    상기 분배자가 분배하고자 하는 적어도 하나의 항목을 선택하는 단계;
    상기 분배자가 상기 항목을 함께 분배할 적어도 하나의 피분배자를 선택하는 단계; 및
    상기 피분배자에게 상기 분배자의 컴퓨터 상의 상기 항목에 대한 원격 액세스를 제공하는 단계
    를 포함하는 방법.
  44. 제43항에 있어서, 상기 분배자는 또한 상기 피분배자에게 할당되는 사용 권한의 레벨을 지정하는 방법.
  45. 제43항에 있어서, 분배해야할 상기 항목을 원격 액세스할 수 있는 파일 쉐어(file share)가 존재하는지를 확인하는 단계를 더 포함하는 방법.
  46. 제45항에 있어서, 상기 파일 쉐어가 이미 존재하는 경우, 상기 피분배자가 상기 분배받을 항목에 액세스하는 것을 허용하기 위하여 상기 파일 쉐어에 대한 사용 권한이 설정되는 방법.
  47. 제43항에 있어서, 상기 피분배자가 상기 분배해야 할 항목에 액세스할 수 있도록 상기 분배될 항목과 관련된 임의의 사용 권한이 설정되는지를 확인하는 단계를 더 포함하는 방법.
  48. 제43항에 있어서, 상기 항목이 보호되는지를 판정하고, 보호되는 경우, 상기 항목이 상기 피분배자와 분배될 수 있는지를 확인하고, 상기 항목이 분배될 수 없는 경우, 상기 분배자에게 통지를 제공하는 단계를 더 포함하는 방법.
  49. 제43항에 있어서, 상기 분배자의 방화벽이 상기 피분배자가 상기 분배되는 항목에 액세스하는 것을 허용하는지를 확인하는 단계를 더 포함하는 방법.
  50. 제43항에 있어서, 무엇이 분배되었는지, 누구와 분배되었는지, 또는 언제 분배되었는지 중 적어도 하나를 포함하는 분배 트랜잭션의 하나 이상의 상세(detail)를 기록하는 단계를 더 포함하는 방법.
  51. 제43항에 있어서, 상기 피분배자가 상기 분배자의 컴퓨터로부터 직접 상기 분배되는 항목에 액세스하는 것을 허용하는 링크를 상기 피분배자에게 전송하는 단계를 더 포함하는 방법.
  52. 제43항에 있어서, 상기 분배자가 상기 피분배자에게 분배한 것을 보기 위하여 상기 피분배자가 상기 분배자의 컴퓨터에 질의하는 것을 허용하는 단계를 더 포함하는 방법.
  53. 제43항에 있어서, 상기 항목은 직접 분배되는 개별 항목이어서, 상기 항목은 후에 분배되는 폴더에 먼저 저장될 필요가 없는 방법.
  54. 컴퓨터 시스템 상에서 적어도 하나의 항목을 분배하는 방법으로서,
    분배해야 할 항목에 액세스하기 위한 사용 권한을 수신하는 단계; 및
    상기 항목에 액세스하기 위한 사용 권한을 수신하는 것에 응답하여, 상기 항목에 원격 액세스하는 단계
    를 포함하는 방법.
  55. 제54항에 있어서, 상기 분배해야 할 항목이 원격 액세스될 수 있는 파일 쉐어가 존재하는지를 확인하는 단계를 더 포함하는 방법.
  56. 제55항에 있어서, 파일 쉐어가 이미 존재하는 경우, 상기 피분배자가 상기 항목에 액세스하는 것을 허용하기 위해 상기 파일 쉐어에 대한 사용 권한이 설정되는 방법.
  57. 제54항에 있어서, 상기 피분배자가 상기 항목에 액세스할 수 있도록 상기 항목과 관련된 임의의 사용 권한이 설정되는지를 확인하는 단계를 더 포함하는 방법.
  58. 제54항에 있어서, 상기 항목이 보호되는지를 판정하고, 보호되는 경우, 상기 항목이 상기 피분배자와 분배될 수 있는지를 확인하고, 상기 항목이 분배될 수 없는 경우, 상기 분배자에게 통지를 제공하는 단계를 더 포함하는 방법.
  59. 제54항에 있어서, 상기 피분배자가 상기 분배자의 컴퓨터로부터 직접 상기 항목에 액세스하는 것을 허용하는 링크를 상기 피분배자에게 전송하는 단계를 더 포함하는 방법.
  60. 제54항에 있어서, 상기 항목은 직접 분배되는 개별 항목이어서, 상기 항목은 후에 분배되는 폴더에 먼저 저장될 필요가 없는 방법.
  61. 컴퓨터 프로그램 세그먼트가 적어도 하나의 항목을 분배하기 위해 하나 이상의 다른 컴퓨터 프로그램 세그먼트와 통신하는 것을 가능하게 하기 위한 하나 이상의 컴퓨터 판독 가능 매체로서,
    분배해야 할 적어도 하나의 항목에 대한 원격 액세스를 제공하라는 요구가 상기 요구를 실행할 수 있는 하나 이상의 다른 컴퓨터 프로그램 세그먼트로 전송되도록 하는 한 세트의 컴퓨터 사용 가능 명령어들
    을 포함하는 매체.
  62. 제61항에 있어서, 상기 항목이 원격 액세스될 수 있도록 상기 항목과 관련된 임의의 사용 권한이 설정되는지를 확인하기 위한 컴퓨터 사용 가능 명령어를 더 포 함하는 매체.
  63. 제61항에 있어서, 상기 항목이 보호되는지를 판정하고, 보호되는 경우, 상기 항목이 분배될 수 있는지를 확인하고, 상기 항목이 분배될 수 없는 경우, 통지를 제공하기 위한 컴퓨터 사용 가능 명령어를 더 포함하는 매체.
  64. 제61항에 있어서, 무엇이 분배되었는지, 누구와 분배되었는지, 또는 언제 분배되었는지 중 적어도 하나를 포함하는 분배 트랜잭션의 하나 이상의 상세를 기록하기 위한 컴퓨터 사용 가능 명령어를 더 포함하는 매체.
  65. 제61항에 있어서, 상기 항목에 대한 직접 액세스를 제공하는 링크를 전송하기 위한 컴퓨터 사용 가능 명령어를 더 포함하는 매체.
  66. 분배자와 피분배자 사이에서 항목을 분배하는 방법으로서,
    상기 분배자가 상기 피분배자가 상기 분배자의 컴퓨터에서 상기 항목에 원격 액세스하는 것을 허용하는 적어도 하나의 사용 권한을 설정하기 위한 호를 발하는 단계,
    상기 호에 응답하여, 상기 사용 권한이 상기 항목에 대해 설정되는 단계를 포함하는 방법.
  67. 제66항에 있어서, 상기 피분배자가 상기 항목에 액세스할 수 있도록 상기 항목과 관련된 임의의 사용 권한이 설정되는지를 확인하는 단계를 더 포함하는 방법.
  68. 제66항에 있어서, 상기 항목이 보호되는지를 판정하고, 보호되는 경우, 상기 항목이 상기 피분배자와 분배될 수 있는지를 확인하는 단계를 더 포함하는 방법.
  69. 제66항에 있어서, 항목에 대한 액세스가 가능하지 않을 때, 상기 분배자에게 통지가 제공되는 방법.
  70. 제66항에 있어서, 상기 분배자는 상기 항목에 대해 제공되는 액세스의 타입을 제한할 수 있는 방법.
  71. 제66항에 있어서, 분배 트랜잭션의 하나 이상의 상세를 기록하는 단계를 더 포함하는 방법.
  72. 제66항에 있어서, 상기 피분배자가 상기 분배자의 컴퓨터로부터 직접 상기 항목에 액세스하는 것을 허용하는 링크를 상기 피분배자에게 전송하는 단계를 더 포함하는 방법.
  73. 제66항에 있어서, 상기 분배자가 상기 피분배자에게 분배한 것을 보기 위해 상기 피분배자가 상기 분배자의 컴퓨터에 질의하는 것을 허용하는 단계를 더 포함하는 방법.
  74. 제66항에 있어서, 상기 분배되는 항목은 직접 분배되는 개별 항목이어서, 상기 항목은 후에 분배되는 폴더에 먼저 저장될 필요가 없는 방법.
  75. 분배자가 피분배자와 적어도 하나의 항목을 분배할 수 있게 하기 위한 하나 이상의 컴퓨터 판독 가능 매체로서,
    상기 피분배자가 상기 분배자의 컴퓨터를 통해 상기 항목에 원격 액세스하는 것을 허용하는 한 세트의 컴퓨터 사용 가능 명령어들
    을 포함하는 매체.
  76. 제75항에 있어서, 상기 분배자는 상기 피분배자에게 할당되는 사용 권한의 레벨을 지정하고, 추가적인 피분배자들이 상이한 사용 권한을 수신할 수 있는 매체.
  77. 제75항에 있어서, 상기 분배자는 항목에 대한 사용 권한을 지정하고, 추가적인 항목들에 상이한 사용 권한들이 할당될 수 있는 매체.
  78. 제75항에 있어서, 상기 항목이 보호되는지를 판정하고, 보호되는 경우, 상기 항목이 상기 피분배자와 분배될 수 있는지를 확인하고, 상기 항목이 분배될 수 없는 경우, 상기 분배자에게 통지를 제공하기 위한 컴퓨터 사용 가능 명령어를 더 포함하는 매체.
  79. 제75항에 있어서, 항목에 대한 액세스가 가능하지 않을 때, 상기 분배자에게 통지가 제공되는 매체.
  80. 제75항에 있어서, 분배 트랜잭션의 하나 이상의 상세를 기록하기 위한 컴퓨터 사용 가능 명령어를 더 포함하는 매체.
  81. 제75항에 있어서, 상기 피분배자가 상기 분배자의 컴퓨터로부터 직접 상기 분배되는 항목에 액세스하는 것을 허용하는 링크를 상기 피분배자에게 전송하기 위한 컴퓨터 사용 가능 명령어를 더 포함하는 매체.
  82. 제75항에 있어서, 상기 분배자가 상기 피분배자에게 분배한 것을 확인하기 위해 상기 피분배자가 상기 분배자의 컴퓨터에 질의하는 것을 허용하기 위한 컴퓨터 사용 가능 명령어를 더 포함하는 매체.
  83. 제75항에 있어서, 상기 항목이 직접 분배되는 개별 항목이어서, 상기 항목은 후에 분배되는 폴더에 먼저 저장될 필요가 없는 매체.
  84. 컴퓨터 시스템에서 분배자와 피분배자 사이에 개별 항목을 분배하는 방법으로서,
    분배해야 할 분배자의 컴퓨터 상의 개별 항목을 지정하되, 상기 항목이 후에 분배되는 폴더에 저장되는 것을 요구하지 않는 단계; 및
    상기 개별 항목을 피분배자와 분배하여 상기 피분배자가 상기 분배자의 컴퓨터로부터 상기 개별 항목에 대한 원격 액세스를 제공받는 단계
    를 포함하는 방법.
  85. 제84항에 있어서, 상기 분배자는 상기 피분배자에 대한 사용 권한의 레벨을 지정하고, 추가 피분배자들이 상이한 사용 권한 레벨을 수신할 수 있는 방법.
  86. 제84항에 있어서, 상기 피분배자가 상기 항목에 액세스할 수 있도록 상기 항목에 관련된 임의의 사용 권한이 설정되는지를 확인하는 단계를 더 포함하는 방법.
  87. 제84항에 있어서, 상기 항목이 보호되는지를 판정하고, 보호되는 경우, 상기 항목이 분배될 수 있는지를 확인하는 단계를 더 포함하는 방법.
  88. 제84항에 있어서, 항목에 대한 액세스가 가능하지 않을 때, 상기 분배자에게 통지가 제공되는 방법.
  89. 제84항에 있어서, 분배 트랜잭션의 하나 이상의 상세를 기록하는 단계를 더 포함하는 방법.
  90. 제84항에 있어서, 상기 피분배자가 상기 분배자의 컴퓨터로부터 직접 상기 항목에 액세스하는 것을 허용하는 링크를 상기 피분배자에게 전송하는 단계를 더 포함하는 방법.
KR1020057009159A 2003-10-23 2004-07-27 정적 및 동적 리스트의 사용을 포함하는 가상 폴더 및 항목 공유 시스템 및 방법 KR101120755B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US10/691,841 US7526483B2 (en) 2003-03-27 2003-10-23 System and method for virtual folder sharing including utilization of static and dynamic lists
US10/691,841 2003-10-23
US10/729,841 2003-12-05
US10/729,841 US7536386B2 (en) 2003-03-27 2003-12-05 System and method for sharing items in a computer system
PCT/US2004/025548 WO2005045594A2 (en) 2003-10-23 2004-07-27 System and method for virtual folder and sharing items

Publications (2)

Publication Number Publication Date
KR20060118315A true KR20060118315A (ko) 2006-11-23
KR101120755B1 KR101120755B1 (ko) 2012-03-23

Family

ID=34577152

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057009159A KR101120755B1 (ko) 2003-10-23 2004-07-27 정적 및 동적 리스트의 사용을 포함하는 가상 폴더 및 항목 공유 시스템 및 방법

Country Status (5)

Country Link
US (1) US7536386B2 (ko)
EP (1) EP1573959A4 (ko)
JP (1) JP4732358B2 (ko)
KR (1) KR101120755B1 (ko)
WO (1) WO2005045594A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160074486A (ko) * 2013-10-18 2016-06-28 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 상호작용 개발 환경으로부터의 소프트웨어 아티팩트의 점진적 컴파일링 기법

Families Citing this family (108)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7823077B2 (en) 2003-03-24 2010-10-26 Microsoft Corporation System and method for user modification of metadata in a shell browser
US7240292B2 (en) 2003-04-17 2007-07-03 Microsoft Corporation Virtual address bar user interface control
US7769794B2 (en) * 2003-03-24 2010-08-03 Microsoft Corporation User interface for a file system shell
US7712034B2 (en) 2003-03-24 2010-05-04 Microsoft Corporation System and method for shell browser
US7421438B2 (en) 2004-04-29 2008-09-02 Microsoft Corporation Metadata editing control
US7627552B2 (en) 2003-03-27 2009-12-01 Microsoft Corporation System and method for filtering and organizing items based on common elements
US7827561B2 (en) 2003-03-26 2010-11-02 Microsoft Corporation System and method for public consumption of communication events between arbitrary processes
US7890960B2 (en) * 2003-03-26 2011-02-15 Microsoft Corporation Extensible user context system for delivery of notifications
US7650575B2 (en) * 2003-03-27 2010-01-19 Microsoft Corporation Rich drag drop user interface
US7925682B2 (en) 2003-03-27 2011-04-12 Microsoft Corporation System and method utilizing virtual folders
US7756750B2 (en) 2003-09-02 2010-07-13 Vinimaya, Inc. Method and system for providing online procurement between a buyer and suppliers over a network
US20050080861A1 (en) * 2003-10-14 2005-04-14 Daniell W. Todd Selectively displaying email folders
US8024335B2 (en) 2004-05-03 2011-09-20 Microsoft Corporation System and method for dynamically generating a selectable search extension
US7181463B2 (en) 2003-10-24 2007-02-20 Microsoft Corporation System and method for managing data using static lists
US20050203801A1 (en) * 2003-11-26 2005-09-15 Jared Morgenstern Method and system for collecting, sharing and tracking user or group associates content via a communications network
US8306874B2 (en) 2003-11-26 2012-11-06 Buy.Com, Inc. Method and apparatus for word of mouth selling via a communications network
US8523571B1 (en) * 2004-03-09 2013-09-03 Avirat, Inc. Family organization and communication tool
US7694236B2 (en) 2004-04-23 2010-04-06 Microsoft Corporation Stack icons representing multiple objects
US7657846B2 (en) 2004-04-23 2010-02-02 Microsoft Corporation System and method for displaying stack icons
US7992103B2 (en) 2004-04-26 2011-08-02 Microsoft Corporation Scaling icons for representing files
US8707209B2 (en) 2004-04-29 2014-04-22 Microsoft Corporation Save preview representation of files being created
US8499248B1 (en) 2004-04-29 2013-07-30 Paul Erich Keel Methods and apparatus for managing and exchanging information using information objects
US8402283B1 (en) * 2004-08-02 2013-03-19 Nvidia Corporation Secure content enabled drive system and method
US8359332B1 (en) 2004-08-02 2013-01-22 Nvidia Corporation Secure content enabled drive digital rights management system and method
US8751825B1 (en) 2004-12-15 2014-06-10 Nvidia Corporation Content server and method of storing content
US8788425B1 (en) 2004-12-15 2014-07-22 Nvidia Corporation Method and system for accessing content on demand
US8346807B1 (en) 2004-12-15 2013-01-01 Nvidia Corporation Method and system for registering and activating content
US8875309B1 (en) 2004-12-15 2014-10-28 Nvidia Corporation Content server and method of providing content therefrom
US20060136286A1 (en) * 2004-12-22 2006-06-22 Microsoft Corporation Method and apparatus for marketing using templates, lists and activities
US7383503B2 (en) * 2005-02-23 2008-06-03 Microsoft Corporation Filtering a collection of items
WO2006108162A2 (en) * 2005-04-06 2006-10-12 Getty Images, Inc. Digital asset management system, including customizable metadata model for asset cataloging and permissioning of digital assets, such as for use with digital images and songs
US8490015B2 (en) * 2005-04-15 2013-07-16 Microsoft Corporation Task dialog and programming interface for same
US20060241952A1 (en) * 2005-04-20 2006-10-26 Loduha Michael A Online multidisciplinary collaborative divorce system
US7614016B2 (en) * 2005-04-21 2009-11-03 Microsoft Corporation Multiple roots in navigation pane
US8893299B1 (en) 2005-04-22 2014-11-18 Nvidia Corporation Content keys for authorizing access to content
US8522154B2 (en) 2005-04-22 2013-08-27 Microsoft Corporation Scenario specialization of file browser
US8195646B2 (en) * 2005-04-22 2012-06-05 Microsoft Corporation Systems, methods, and user interfaces for storing, searching, navigating, and retrieving electronic information
US7536410B2 (en) * 2005-04-22 2009-05-19 Microsoft Corporation Dynamic multi-dimensional scrolling
US7162488B2 (en) * 2005-04-22 2007-01-09 Microsoft Corporation Systems, methods, and user interfaces for storing, searching, navigating, and retrieving electronic information
US20060242122A1 (en) * 2005-04-22 2006-10-26 Microsoft Corporation Systems, methods, and user interfaces for storing, searching, navigating, and retrieving electronic information
US20060265394A1 (en) * 2005-05-19 2006-11-23 Trimergent Personalizable information networks
US20060265396A1 (en) * 2005-05-19 2006-11-23 Trimergent Personalizable information networks
US20060265395A1 (en) * 2005-05-19 2006-11-23 Trimergent Personalizable information networks
US7765229B2 (en) * 2005-07-12 2010-07-27 Microsoft Corporation Single view of data in a networked computer system with distributed storage
US7665028B2 (en) 2005-07-13 2010-02-16 Microsoft Corporation Rich drag drop user interface
US7779004B1 (en) 2006-02-22 2010-08-17 Qurio Holdings, Inc. Methods, systems, and products for characterizing target systems
JP4656428B2 (ja) * 2006-04-26 2011-03-23 ソニー株式会社 コンテンツ処理装置および方法、並びにプログラム
US8321537B1 (en) 2006-12-27 2012-11-27 Google Inc. Methods and system for sharing gadgets between users
US7840903B1 (en) 2007-02-26 2010-11-23 Qurio Holdings, Inc. Group content representations
US7849420B1 (en) * 2007-02-26 2010-12-07 Qurio Holdings, Inc. Interactive content representations enabling content sharing
US9098167B1 (en) 2007-02-26 2015-08-04 Qurio Holdings, Inc. Layered visualization of content representations
US20080256443A1 (en) * 2007-04-16 2008-10-16 France Telecom System for aggregating and displaying syndicated news feeds
US20080263142A1 (en) * 2007-04-20 2008-10-23 Computer Associates Think, Inc. Meta Data Driven User Interface System and Method
US20080263018A1 (en) * 2007-04-20 2008-10-23 Computer Associates Think, Inc. Method and System for Mapping Business Objects to Relational Database Tables
JP2008276456A (ja) * 2007-04-27 2008-11-13 Hitachi Software Eng Co Ltd ファイル管理システム及び方法、並びに携帯端末装置
US9111285B2 (en) * 2007-08-27 2015-08-18 Qurio Holdings, Inc. System and method for representing content, user presence and interaction within virtual world advertising environments
US20090100109A1 (en) * 2007-10-16 2009-04-16 Microsoft Corporation Automatic determination of item replication and associated replication processes
US8261307B1 (en) 2007-10-25 2012-09-04 Qurio Holdings, Inc. Wireless multimedia content brokerage service for real time selective content provisioning
US20090125837A1 (en) * 2007-11-08 2009-05-14 International Business Machines Corporation Tab control with type ahead and thumbnail images
US7836053B2 (en) * 2007-12-28 2010-11-16 Group Logic, Inc. Apparatus and methods of identifying potentially similar content for data reduction
FR2932048A1 (fr) * 2008-05-27 2009-12-04 France Telecom Procede et systeme d'acces par un utilisateur a au moins un service offert par au moins un autre utilisateur.
US20090313259A1 (en) * 2008-06-17 2009-12-17 Microsoft Corporation Container handlers for sharing and unsharing
US7987202B2 (en) * 2008-06-25 2011-07-26 Microsoft Corporation Contemporaneously sharing resources targeted by a library
US20090327900A1 (en) * 2008-06-26 2009-12-31 Microsoft Corporation Indicating resources to which there are access rights
US8775548B2 (en) 2008-06-27 2014-07-08 Microsoft Corporation Extending sharing options of local computing resources
JP4569676B2 (ja) * 2008-07-02 2010-10-27 株式会社デンソー ファイル操作装置
US8161055B2 (en) * 2008-09-26 2012-04-17 International Business Machines Corporation Filter extraction in a service registry environment
US8041722B2 (en) * 2008-10-07 2011-10-18 International Business Machines Corporation Refining collections of entities in a service registry environment
US9607324B1 (en) 2009-01-23 2017-03-28 Zakta, LLC Topical trust network
US10191982B1 (en) 2009-01-23 2019-01-29 Zakata, LLC Topical search portal
US10007729B1 (en) 2009-01-23 2018-06-26 Zakta, LLC Collaboratively finding, organizing and/or accessing information
US9507793B2 (en) * 2009-09-29 2016-11-29 International Business Machines Corporation File resharing management
JP5625634B2 (ja) * 2010-09-01 2014-11-19 富士通株式会社 データ分散プログラム、データ格納プログラム、データ分散装置、データ格納装置、データ分散方法、およびデータ格納方法
US10068266B2 (en) 2010-12-02 2018-09-04 Vinimaya Inc. Methods and systems to maintain, check, report, and audit contract and historical pricing in electronic procurement
CN102043920A (zh) * 2010-12-29 2011-05-04 北京深思洛克软件技术股份有限公司 数据泄密防护系统中的公共文件的访问隔离方法
US8725443B2 (en) 2011-01-24 2014-05-13 Microsoft Corporation Latency measurement
US8988087B2 (en) 2011-01-24 2015-03-24 Microsoft Technology Licensing, Llc Touchscreen testing
US8562444B2 (en) * 2011-09-02 2013-10-22 Zynga Inc. Sharing items between multiple game participants
US20130066975A1 (en) * 2011-09-08 2013-03-14 Microsoft Corporation Group Opt-In Links
US9378389B2 (en) 2011-09-09 2016-06-28 Microsoft Technology Licensing, Llc Shared item account selection
US9785281B2 (en) 2011-11-09 2017-10-10 Microsoft Technology Licensing, Llc. Acoustic touch sensitive testing
US9317147B2 (en) 2012-10-24 2016-04-19 Microsoft Technology Licensing, Llc. Input testing tool
US8819138B2 (en) * 2012-10-29 2014-08-26 Dropbox, Inc. Identifying content items for inclusion in a shared collection
US9396349B1 (en) * 2012-11-02 2016-07-19 Emc Corporation Method and apparatus for sharing data from a secured environment
US9645947B2 (en) 2013-05-23 2017-05-09 Microsoft Technology Licensing, Llc Bundling file permissions for sharing files
US9600582B2 (en) 2013-05-23 2017-03-21 Microsoft Technology Licensing, Llc Blocking objectionable content in service provider storage systems
US9531722B1 (en) 2013-10-31 2016-12-27 Google Inc. Methods for generating an activity stream
US9614880B1 (en) 2013-11-12 2017-04-04 Google Inc. Methods for real-time notifications in an activity stream
US9614850B2 (en) 2013-11-15 2017-04-04 Microsoft Technology Licensing, Llc Disabling prohibited content and identifying repeat offenders in service provider storage systems
CN103686360A (zh) * 2013-12-04 2014-03-26 康佳集团股份有限公司 一种智能云电视文件分类浏览的方法及智能云电视
US20150193521A1 (en) * 2014-01-09 2015-07-09 Google Inc. Methods for Generating an Activity Stream
US9509772B1 (en) 2014-02-13 2016-11-29 Google Inc. Visualization and control of ongoing ingress actions
US9536199B1 (en) 2014-06-09 2017-01-03 Google Inc. Recommendations based on device usage
US9507791B2 (en) 2014-06-12 2016-11-29 Google Inc. Storage system user interface with floating file collection
US10078781B2 (en) 2014-06-13 2018-09-18 Google Llc Automatically organizing images
US20160140139A1 (en) * 2014-11-17 2016-05-19 Microsoft Technology Licensing, Llc Local representation of shared files in disparate locations
US9870420B2 (en) 2015-01-19 2018-01-16 Google Llc Classification and storage of documents
US10277601B1 (en) 2015-05-11 2019-04-30 Google Llc System and method for recursive propagating application access control
US20180335902A1 (en) * 2017-05-16 2018-11-22 Apple Inc. Techniques for dynamically displaying relevant files for selection
US10643178B1 (en) 2017-06-16 2020-05-05 Coupa Software Incorporated Asynchronous real-time procurement system
US10942723B2 (en) 2019-04-05 2021-03-09 Sap Se Format for multi-artefact software packages
US10809994B1 (en) * 2019-04-05 2020-10-20 Sap Se Declarative multi-artefact software installation
US11232078B2 (en) 2019-04-05 2022-01-25 Sap Se Multitenancy using an overlay file system
US11113249B2 (en) 2019-04-05 2021-09-07 Sap Se Multitenant application server using a union file system
US10956140B2 (en) 2019-04-05 2021-03-23 Sap Se Software installation through an overlay file system
WO2022251130A1 (en) * 2021-05-24 2022-12-01 Equals 3 LLC Linking to a search result
CN114786063B (zh) * 2022-03-11 2023-12-05 北京字跳网络技术有限公司 一种音视频处理方法、装置、设备以及存储介质
US20230334018A1 (en) * 2022-04-18 2023-10-19 Microsoft Technology Licensing, Llc File selection user interface

Family Cites Families (194)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4881179A (en) * 1988-03-11 1989-11-14 International Business Machines Corp. Method for providing information security protocols to an electronic calendar
US5241671C1 (en) 1989-10-26 2002-07-02 Encyclopaedia Britannica Educa Multimedia search system using a plurality of entry path means which indicate interrelatedness of information
US5513306A (en) 1990-08-09 1996-04-30 Apple Computer, Inc. Temporal event viewing and editing system
US5388196A (en) 1990-09-07 1995-02-07 Xerox Corporation Hierarchical shared books with database
US5333315A (en) 1991-06-27 1994-07-26 Digital Equipment Corporation System of device independent file directories using a tag between the directories and file descriptors that migrate with the files
US5504852A (en) * 1991-09-09 1996-04-02 Apple Computer, Inc. Method for creating a collection of aliases representing computer system files
US5461710A (en) 1992-03-20 1995-10-24 International Business Machines Corporation Method for providing a readily distinguishable template and means of duplication thereof in a computer system graphical user interface
EP0955591A3 (en) * 1992-04-30 2004-05-12 Apple Computer, Inc. Method and apparatus for organizing information in a computer system
DE69328522T2 (de) 1992-08-27 2001-01-11 Sun Microsystems Inc Verfahren und Vorrichtung zur Benutzung von Browsern für Sammlungen
US5559948A (en) 1992-12-23 1996-09-24 International Business Machines Corporation Apparatus and method for manipulating an object in a computer system graphical user interface
US5420605A (en) * 1993-02-26 1995-05-30 Binar Graphics, Inc. Method of resetting a computer video display mode
US5598524A (en) 1993-03-03 1997-01-28 Apple Computer, Inc. Method and apparatus for improved manipulation of data between an application program and the files system on a computer-controlled display system
US5499364A (en) 1993-10-14 1996-03-12 Digital Equipment Corporation System and method for optimizing message flows between agents in distributed computations
US6243071B1 (en) 1993-11-03 2001-06-05 Apple Computer, Inc. Tool set for navigating through an electronic book
MX9602952A (es) 1994-01-27 1997-06-28 Minnesota Mining & Mfg Notas de software.
US7106843B1 (en) * 1994-04-19 2006-09-12 T-Netix, Inc. Computer-based method and apparatus for controlling, monitoring, recording and reporting telephone access
US6453311B1 (en) 1994-05-06 2002-09-17 Apple Computer, Inc. System and method for performing context checks
US5680563A (en) 1994-07-25 1997-10-21 Object Technology Licensing Corporation Object-oriented operating system enhancement for filtering items in a window
US5831606A (en) 1994-12-13 1998-11-03 Microsoft Corporation Shell extensions for an operating system
US5956715A (en) * 1994-12-13 1999-09-21 Microsoft Corporation Method and system for controlling user access to a resource in a networked computing environment
US5696486A (en) 1995-03-29 1997-12-09 Cabletron Systems, Inc. Method and apparatus for policy-based alarm notification in a distributed network management environment
GB2301912A (en) * 1995-06-09 1996-12-18 Ibm Security for computer system resources
US5838317A (en) 1995-06-30 1998-11-17 Microsoft Corporation Method and apparatus for arranging displayed graphical representations on a computer interface
US6535230B1 (en) 1995-08-07 2003-03-18 Apple Computer, Inc. Graphical user interface providing consistent behavior for the dragging and dropping of content objects
US5929854A (en) 1995-11-30 1999-07-27 Ross; Michael M. Dialog box method and system for arranging document windows
US5867163A (en) 1995-12-01 1999-02-02 Silicon Graphics, Inc. Graphical user interface for defining and invoking user-customized tool shelf execution sequence
US6014137A (en) 1996-02-27 2000-01-11 Multimedia Adventures Electronic kiosk authoring system
US6768999B2 (en) * 1996-06-28 2004-07-27 Mirror Worlds Technologies, Inc. Enterprise, stream-based, information management system
US6021262A (en) 1996-07-12 2000-02-01 Microsoft Corporation System and method for detection of, notification of, and automated repair of problem conditions in a messaging system
US5757925A (en) 1996-07-23 1998-05-26 Faybishenko; Yaroslav Secure platform independent cross-platform remote execution computer system and method
US5923328A (en) 1996-08-07 1999-07-13 Microsoft Corporation Method and system for displaying a hierarchical sub-tree by selection of a user interface element in a sub-tree bar control
US5790121A (en) 1996-09-06 1998-08-04 Sklar; Peter Clustering user interface
US6025843A (en) * 1996-09-06 2000-02-15 Peter Sklar Clustering user interface
US5878410A (en) * 1996-09-13 1999-03-02 Microsoft Corporation File system sort order indexes
US6918096B2 (en) * 1996-11-07 2005-07-12 Thebrain Technologies, Corp. Method and apparatus for displaying a network of thoughts from a thought's perspective
US6037944A (en) 1996-11-07 2000-03-14 Natrificial Llc Method and apparatus for displaying a thought network from a thought's perspective
US5909540A (en) * 1996-11-22 1999-06-01 Mangosoft Corporation System and method for providing highly available data storage using globally addressable memory
US5987506A (en) * 1996-11-22 1999-11-16 Mangosoft Corporation Remote access and geographically distributed computers in a globally addressable storage environment
US20060129627A1 (en) * 1996-11-22 2006-06-15 Mangosoft Corp. Internet-based shared file service with native PC client access and semantics and distributed version control
US5935210A (en) 1996-11-27 1999-08-10 Microsoft Corporation Mapping the structure of a collection of computer resources
EP1010076A1 (en) * 1996-11-27 2000-06-21 1Vision Software, L.L.C. File directory and file navigation system
US6061695A (en) * 1996-12-06 2000-05-09 Microsoft Corporation Operating system shell having a windowing graphical user interface with a desktop displayed as a hypertext multimedia document
US6023708A (en) * 1997-05-29 2000-02-08 Visto Corporation System and method for using a global translator to synchronize workspace elements across a network
US5835094A (en) * 1996-12-31 1998-11-10 Compaq Computer Corporation Three-dimensional computer environment
US5933139A (en) 1997-01-31 1999-08-03 Microsoft Corporation Method and apparatus for creating help functions
US5875446A (en) * 1997-02-24 1999-02-23 International Business Machines Corporation System and method for hierarchically grouping and ranking a set of objects in a query context based on one or more relationships
US6144968A (en) 1997-03-04 2000-11-07 Zellweger; Paul Method and apparatus for menu access to information objects indexed by hierarchically-coded keywords
US5930801A (en) * 1997-03-07 1999-07-27 Xerox Corporation Shared-data environment in which each file has independent security properties
US6317142B1 (en) 1997-04-04 2001-11-13 Avid Technology, Inc. Taxonomy of objects and a system of non-modal property inspectors
JPH10301938A (ja) 1997-04-22 1998-11-13 Canon Inc 画像処理装置およびその方法、画像処理システム、記憶媒体
US6057844A (en) 1997-04-28 2000-05-02 Adobe Systems Incorporated Drag operation gesture controller
US5987454A (en) 1997-06-09 1999-11-16 Hobbs; Allen Method and apparatus for selectively augmenting retrieved text, numbers, maps, charts, still pictures and/or graphics, moving pictures and/or graphics and audio information from a network resource
US5899995A (en) * 1997-06-30 1999-05-04 Intel Corporation Method and apparatus for automatically organizing information
US6573907B1 (en) * 1997-07-03 2003-06-03 Obvious Technology Network distribution and management of interactive video and multi-media containers
US5877766A (en) * 1997-08-15 1999-03-02 International Business Machines Corporation Multi-node user interface component and method thereof for use in accessing a plurality of linked records
US6249866B1 (en) * 1997-09-16 2001-06-19 Microsoft Corporation Encrypting file system and method
US6237011B1 (en) * 1997-10-08 2001-05-22 Caere Corporation Computer-based document management system
US6202061B1 (en) * 1997-10-24 2001-03-13 Pictra, Inc. Methods and apparatuses for creating a collection of media
US6097389A (en) 1997-10-24 2000-08-01 Pictra, Inc. Methods and apparatuses for presenting a collection of digital media in a media container
US6061692A (en) * 1997-11-04 2000-05-09 Microsoft Corporation System and method for administering a meta database as an integral component of an information server
US6275829B1 (en) 1997-11-25 2001-08-14 Microsoft Corporation Representing a graphic image on a web page with a thumbnail-sized image
ATE223595T1 (de) * 1998-01-23 2002-09-15 Emc Corp Einkapselung, datendarstellung und übertragung von inhaltsaddressierbaren daten
US6003040A (en) 1998-01-23 1999-12-14 Mital; Vijay Apparatus and method for storing, navigating among and adding links between data items in computer databases
US6401097B1 (en) * 1998-01-23 2002-06-04 Mccotter Thomas M. System and method for integrated document management and related transmission and access
US6807632B1 (en) * 1999-01-21 2004-10-19 Emc Corporation Content addressable information encapsulation, representation, and transfer
US6078924A (en) * 1998-01-30 2000-06-20 Aeneid Corporation Method and apparatus for performing data collection, interpretation and analysis, in an information platform
US6128623A (en) * 1998-04-15 2000-10-03 Inktomi Corporation High performance object cache
US7756892B2 (en) * 2000-05-02 2010-07-13 Digimarc Corporation Using embedded data with file sharing
US6256031B1 (en) 1998-06-26 2001-07-03 Microsoft Corporation Integration of physical and virtual namespace
US6466238B1 (en) 1998-06-30 2002-10-15 Microsoft Corporation Computer operating system that defines default document folder for application programs
US6181342B1 (en) 1998-07-06 2001-01-30 International Business Machines Corp. Computer file directory system displaying visual summaries of visual data in desktop computer documents for quickly identifying document content
US6363377B1 (en) * 1998-07-30 2002-03-26 Sarnoff Corporation Search data processor
US6466932B1 (en) 1998-08-14 2002-10-15 Microsoft Corporation System and method for implementing group policy
US6324551B1 (en) 1998-08-31 2001-11-27 Xerox Corporation Self-contained document management based on document properties
US6240421B1 (en) 1998-09-08 2001-05-29 Edwin J. Stolarz System, software and apparatus for organizing, storing and retrieving information from a computer database
US6803926B1 (en) 1998-09-18 2004-10-12 Microsoft Corporation System and method for dynamically adjusting data values and enforcing valid combinations of the data in response to remote user input
US8332478B2 (en) * 1998-10-01 2012-12-11 Digimarc Corporation Context sensitive connected content
JP2000112797A (ja) * 1998-10-02 2000-04-21 Nippon Telegr & Teleph Corp <Ntt> ビューディレクトリ処理方法および装置とビューディレクトリ処理プログラムを記録した記録媒体
US6341280B1 (en) 1998-10-30 2002-01-22 Netscape Communications Corporation Inline tree filters
US6134568A (en) * 1998-10-30 2000-10-17 Kinko's Ventures, Inc. Previewing an assembled document
US7730089B2 (en) * 1998-11-16 2010-06-01 Punch Networks Corporation Method and system for providing remote access to the facilities of a server computer
US6823344B1 (en) 1998-12-03 2004-11-23 International Business Machines Corporation File manager system providing faster and more efficient interactive user access to files in computer displays
US6571245B2 (en) * 1998-12-07 2003-05-27 Magically, Inc. Virtual desktop in a computer network
US6480835B1 (en) 1998-12-31 2002-11-12 Intel Corporation Method and system for searching on integrated metadata
US6762777B2 (en) 1998-12-31 2004-07-13 International Business Machines Corporation System and method for associating popup windows with selective regions of a document
US6147601A (en) 1999-01-09 2000-11-14 Heat - Timer Corp. Electronic message delivery system utilizable in the monitoring of remote equipment and method of same
US6628309B1 (en) 1999-02-05 2003-09-30 International Business Machines Corporation Workspace drag and drop
US6411311B1 (en) * 1999-02-09 2002-06-25 International Business Machines Corporation User interface for transferring items between displayed windows
US6356915B1 (en) * 1999-02-22 2002-03-12 Starbase Corp. Installable file system having virtual file system drive, virtual device driver, and virtual disks
US6369840B1 (en) * 1999-03-10 2002-04-09 America Online, Inc. Multi-layered online calendaring and purchasing
US6636238B1 (en) 1999-04-20 2003-10-21 International Business Machines Corporation System and method for linking an audio stream with accompanying text material
JP3284543B2 (ja) 1999-04-23 2002-05-20 ソニー株式会社 情報処理装置、情報処理方法、およびプログラム格納媒体
US6573906B1 (en) * 1999-04-26 2003-06-03 International Business Machines Corporation Method and system for delivering integrated user assistance information and traditional help from the same source
US6539399B1 (en) * 1999-04-29 2003-03-25 Amada Company, Limited Stand alone data management system for facilitating sheet metal part production
US6526399B1 (en) 1999-06-15 2003-02-25 Microsoft Corporation Method and system for grouping and displaying a database
US6535229B1 (en) 1999-06-29 2003-03-18 International Business Machines Corporation Graphical user interface for selection of options within mutually exclusive subsets
IL130972A0 (en) 1999-07-15 2001-01-28 Hotbar Com Israel Ltd Method for the dynamic improvement of internet browser appearance and connectivity
US6448985B1 (en) 1999-08-05 2002-09-10 International Business Machines Corporation Directory tree user interface having scrollable subsections
US6549916B1 (en) * 1999-08-05 2003-04-15 Oracle Corporation Event notification system tied to a file system
US6763388B1 (en) * 1999-08-10 2004-07-13 Akamai Technologies, Inc. Method and apparatus for selecting and viewing portions of web pages
US6430575B1 (en) 1999-09-10 2002-08-06 Xerox Corporation Collaborative document management system with customizable filing structures that are mutually intelligible
US6871348B1 (en) * 1999-09-15 2005-03-22 Intel Corporation Method and apparatus for integrating the user interfaces of multiple applications into one application
US6763458B1 (en) 1999-09-27 2004-07-13 Captaris, Inc. System and method for installing and servicing an operating system in a computer or information appliance
US7444390B2 (en) * 1999-10-20 2008-10-28 Cdimensions, Inc. Method and apparatus for providing a web-based active virtual file system
US6583799B1 (en) 1999-11-24 2003-06-24 Shutterfly, Inc. Image uploading
US7917628B2 (en) * 1999-12-02 2011-03-29 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US6754829B1 (en) * 1999-12-14 2004-06-22 Intel Corporation Certificate-based authentication system for heterogeneous environments
US6606105B1 (en) 1999-12-22 2003-08-12 Adobe Systems Incorporated Layer enhancements in digital illustration system
US6847959B1 (en) * 2000-01-05 2005-01-25 Apple Computer, Inc. Universal interface for retrieval of information in a computer system
US6976020B2 (en) * 2000-01-27 2005-12-13 Poppet International, Inc. Software composition using graph types, graph, and agents
US6735623B1 (en) * 2000-02-09 2004-05-11 Mitch Prust Method and system for accessing a remote storage area
US20020046299A1 (en) * 2000-02-09 2002-04-18 Internet2Anywhere, Ltd. Method and system for location independent and platform independent network signaling and action initiating
AU2001235940A1 (en) * 2000-02-23 2001-09-03 Eyal, Yehoshua Systems and methods for generating and providing previews of electronic files such as web files
US20060173873A1 (en) * 2000-03-03 2006-08-03 Michel Prompt System and method for providing access to databases via directories and other hierarchical structures and interfaces
WO2001067309A2 (en) * 2000-03-03 2001-09-13 Radiant Logic, Inc. System and method for providing access to databases via directories and other hierarchical structures and interfaces
US6757362B1 (en) * 2000-03-06 2004-06-29 Avaya Technology Corp. Personal virtual assistant
US6549217B1 (en) * 2000-03-23 2003-04-15 Koninklijke Philips Electronics N.V. System and method for computer system management using bookmarks
JP2001282813A (ja) * 2000-03-29 2001-10-12 Toshiba Corp マルチメディアデータ検索方法、インデックス情報提供方法、マルチメディアデータ検索装置、インデックスサーバ及びマルチメディアデータ検索サーバ
US6563514B1 (en) * 2000-04-13 2003-05-13 Extensio Software, Inc. System and method for providing contextual and dynamic information retrieval
JP4325075B2 (ja) * 2000-04-21 2009-09-02 ソニー株式会社 データオブジェクト管理装置
US9213836B2 (en) * 2000-05-28 2015-12-15 Barhon Mayer, Batya System and method for comprehensive general electric protection for computers against malicious programs that may steal information and/or cause damages
US6745206B2 (en) 2000-06-05 2004-06-01 International Business Machines Corporation File system with access and retrieval of XML documents
US7043472B2 (en) * 2000-06-05 2006-05-09 International Business Machines Corporation File system with access and retrieval of XML documents
US7451099B2 (en) * 2000-08-30 2008-11-11 Kontera Technologies, Inc. Dynamic document context mark-up technique implemented over a computer network
JP2002082745A (ja) 2000-09-07 2002-03-22 Sony Corp 情報処理装置及び方法、並びにプログラム格納媒体
AUPR015700A0 (en) * 2000-09-15 2000-10-12 Filecat Pty Ltd Distributed file-sharing network
US6738770B2 (en) 2000-11-04 2004-05-18 Deep Sky Software, Inc. System and method for filtering and sorting data
US6684222B1 (en) * 2000-11-09 2004-01-27 Accenture Llp Method and system for translating data associated with a relational database
US6762776B2 (en) 2000-11-10 2004-07-13 Microsoft Corporation Mouse input panel windows class list
US7032182B2 (en) * 2000-12-20 2006-04-18 Eastman Kodak Company Graphical user interface adapted to allow scene content annotation of groups of pictures in a picture database to promote efficient database browsing
US6883146B2 (en) 2000-12-20 2005-04-19 Eastman Kodak Company Picture database graphical user interface utilizing map-based metaphors for efficient browsing and retrieving of pictures
US7020848B2 (en) * 2000-12-20 2006-03-28 Eastman Kodak Company Comprehensive, multi-dimensional graphical user interface using picture metadata for navigating and retrieving pictures in a picture database
US7028262B2 (en) * 2000-12-29 2006-04-11 International Business Machines Corporation Method and system for designing a theme and associating it with a collaboration space user interface
GB0100753D0 (en) * 2001-01-11 2001-02-21 Bate Matthew Data system
WO2002057917A2 (en) * 2001-01-22 2002-07-25 Sun Microsystems, Inc. Peer-to-peer network computing platform
CA2335395A1 (en) * 2001-02-09 2002-08-09 Opengraphics Corporation Controlled access system for online communities
US6831655B2 (en) 2001-02-20 2004-12-14 Sun Microsystems, Inc. Method and apparatus for determining display element attribute values
US6828988B2 (en) * 2001-02-27 2004-12-07 Microsoft Corporation Interactive tooltip
US7689711B2 (en) * 2001-03-26 2010-03-30 Salesforce.Com, Inc. System and method for routing messages between applications
US20020152262A1 (en) * 2001-04-17 2002-10-17 Jed Arkin Method and system for preventing the infringement of intellectual property rights
US6751626B2 (en) * 2001-05-03 2004-06-15 International Business Machines Corporation Method, system, and program for mining data in a personal information manager database
US20020188735A1 (en) * 2001-06-06 2002-12-12 Needham Bradford H. Partially replicated, locally searched peer to peer file sharing system
US6910049B2 (en) * 2001-06-15 2005-06-21 Sony Corporation System and process of managing media content
US7440994B2 (en) * 2001-07-06 2008-10-21 Intel Corporation Method and apparatus for peer-to-peer services to shift network traffic to allow for an efficient transfer of information between devices via prioritized list
KR20030006734A (ko) * 2001-07-14 2003-01-23 엠텍비젼 주식회사 통신망을 이용한 영상 데이터 관리 방법 및 시스템
US6865568B2 (en) * 2001-07-16 2005-03-08 Microsoft Corporation Method, apparatus, and computer-readable medium for searching and navigating a document database
US6801919B2 (en) 2001-07-27 2004-10-05 Hewlett-Packard Development Company, L.P. Object oriented database interface encapsulation that allows for chronologically overlapping transactions in a multi-threaded environment
US7610218B2 (en) * 2001-07-31 2009-10-27 Lightsurf Technologies, Inc. Integrated shopping cart for sale of third party products and services via the internet
AU2002313583A1 (en) * 2001-08-01 2003-02-17 Actona Technologies Ltd. Virtual file-sharing network
US20030028610A1 (en) * 2001-08-03 2003-02-06 Pearson Christopher Joel Peer-to-peer file sharing system and method using user datagram protocol
US6662198B2 (en) * 2001-08-30 2003-12-09 Zoteca Inc. Method and system for asynchronous transmission, backup, distribution of data and file sharing
US7203948B2 (en) * 2001-09-29 2007-04-10 Siebel Systems, Inc. Method, apparatus, and system for implementing caching of view custom options in a framework to support web-based applications
US6973482B2 (en) * 2001-10-01 2005-12-06 Microsoft Corporation Remote assistance
GB2380830A (en) * 2001-10-13 2003-04-16 Hewlett Packard Co Automatic file sharing in a peer to peer network by use of constraints between file system domains
US8015204B2 (en) * 2001-10-16 2011-09-06 Microsoft Corporation Scoped access control metadata element
US20030078918A1 (en) * 2001-10-23 2003-04-24 Souvignier Todd J. Method, apparatus and system for file sharing between computers
US20030093580A1 (en) * 2001-11-09 2003-05-15 Koninklijke Philips Electronics N.V. Method and system for information alerts
US6876996B2 (en) * 2001-11-14 2005-04-05 Sun Microsystems, Inc. Method and apparatus for using a shared library mechanism to facilitate sharing of metadata
JP4186456B2 (ja) * 2001-11-28 2008-11-26 沖電気工業株式会社 分散ファイル共有システムおよびその制御方法
US20030105745A1 (en) * 2001-12-05 2003-06-05 Davidson Jason A. Text-file based relational database
US7024427B2 (en) * 2001-12-19 2006-04-04 Emc Corporation Virtual file system
JP3778079B2 (ja) * 2001-12-20 2006-05-24 株式会社日立製作所 表示装置
US20040048233A1 (en) * 2001-12-21 2004-03-11 Matthews W. Donald Methods for providing information and providing student experience in providing information
US20030120928A1 (en) * 2001-12-21 2003-06-26 Miles Cato Methods for rights enabled peer-to-peer networking
US7266843B2 (en) * 2001-12-26 2007-09-04 Mcafee, Inc. Malware scanning to create clean storage locations
WO2003063029A1 (en) * 2002-01-18 2003-07-31 Bea Systems, Inc. System and method for using virtual directories to service url requests in application servers
WO2003079191A1 (en) * 2002-03-11 2003-09-25 Visionshare, Inc. Method and system for peer-to-peer secure communication
US7107285B2 (en) * 2002-03-16 2006-09-12 Questerra Corporation Method, system, and program for an improved enterprise spatial system
US20040019584A1 (en) * 2002-03-18 2004-01-29 Greening Daniel Rex Community directory
US20040030731A1 (en) * 2002-04-03 2004-02-12 Liviu Iftode System and method for accessing files in a network
US6938042B2 (en) * 2002-04-03 2005-08-30 Laplink Software Inc. Peer-to-peer file sharing
US7010755B2 (en) * 2002-04-05 2006-03-07 Microsoft Corporation Virtual desktop manager
US6816863B2 (en) 2002-05-09 2004-11-09 International Business Machines Corporation Method, system, and computer product for providing a distribution list
US7574488B2 (en) * 2002-05-31 2009-08-11 Hitachi, Ltd. Method and apparatus for peer-to-peer file sharing
US20040001106A1 (en) * 2002-06-26 2004-01-01 John Deutscher System and process for creating an interactive presentation employing multi-media components
US20040002993A1 (en) * 2002-06-26 2004-01-01 Microsoft Corporation User feedback processing of metadata associated with digital media files
WO2004008348A1 (en) * 2002-07-16 2004-01-22 Horn Bruce L Computer system for automatic organization, indexing and viewing of information from multiple sources
JP2004054721A (ja) * 2002-07-23 2004-02-19 Hitachi Ltd ネットワークストレージ仮想化方法
US20040054674A1 (en) * 2002-09-13 2004-03-18 Carpenter Keith A. Enabling a web application to access a protected file on a secured server
KR100953806B1 (ko) * 2002-09-30 2010-04-21 마이크로소프트 코포레이션 어플리케이션 및 사용자에게 공지되는 사용자 인터페이스엘리먼트들을 형성하기 위한 시스템 및 방법
US8935202B2 (en) * 2002-09-30 2015-01-13 Reed Elsevier Inc. Managing changes in a relationship management system
US20040088374A1 (en) * 2002-10-31 2004-05-06 Webb James D. Aggregation and sharing of patient data
GB0226294D0 (en) * 2002-11-12 2002-12-18 Autodesk Canada Inc Image processing
EP1567929A2 (en) * 2002-11-15 2005-08-31 Creo Inc. Methods and systems for sharing data
AU2003297275A1 (en) * 2002-11-15 2004-06-15 Big Champagne, Llc. Monitor file storage and transfer on a peer-to-peer network
TWI221746B (en) * 2002-11-18 2004-10-01 Ulead Systems Inc Preview file generating method applicable on multiple systems and device thereof
US20040098379A1 (en) * 2002-11-19 2004-05-20 Dan Huang Multi-indexed relationship media organization system
US7549047B2 (en) * 2002-11-21 2009-06-16 Xerox Corporation Method and system for securely sharing files
US7769881B2 (en) * 2003-01-24 2010-08-03 Hitachi, Ltd. Method and apparatus for peer-to peer access
US7945618B2 (en) * 2003-02-10 2011-05-17 Oren Asher Peer-to-peer service designer
US7769794B2 (en) * 2003-03-24 2010-08-03 Microsoft Corporation User interface for a file system shell
US7627552B2 (en) * 2003-03-27 2009-12-01 Microsoft Corporation System and method for filtering and organizing items based on common elements
US20050015405A1 (en) * 2003-07-18 2005-01-20 Microsoft Corporation Multi-valued properties
US20050114672A1 (en) * 2003-11-20 2005-05-26 Encryptx Corporation Data rights management of digital information in a portable software permission wrapper

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160074486A (ko) * 2013-10-18 2016-06-28 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 상호작용 개발 환경으로부터의 소프트웨어 아티팩트의 점진적 컴파일링 기법

Also Published As

Publication number Publication date
WO2005045594A3 (en) 2005-07-14
US20040193673A1 (en) 2004-09-30
JP2007509435A (ja) 2007-04-12
EP1573959A4 (en) 2007-07-25
US7536386B2 (en) 2009-05-19
KR101120755B1 (ko) 2012-03-23
WO2005045594A2 (en) 2005-05-19
JP4732358B2 (ja) 2011-07-27
EP1573959A2 (en) 2005-09-14

Similar Documents

Publication Publication Date Title
KR101120755B1 (ko) 정적 및 동적 리스트의 사용을 포함하는 가상 폴더 및 항목 공유 시스템 및 방법
US7526483B2 (en) System and method for virtual folder sharing including utilization of static and dynamic lists
US8117226B2 (en) System and method for virtual folder sharing including utilization of static and dynamic lists
KR100977360B1 (ko) 다른 유형의, 다른 물리적 위치의 항목들을디스플레이하기 위한 파일 시스템
KR100984400B1 (ko) 공통 요소에 기초하여 아이템들을 필터링하고 편성하기위한 시스템 및 방법
US6308179B1 (en) User level controlled mechanism inter-positioned in a read/write path of a property-based document management system
JP4378292B2 (ja) ファイルシステムシェル
EP0986009A2 (en) Extending application behavior through document properties
EP1766539B1 (en) Data compilation apparatus and method
JP2007533015A (ja) メディア・パッケージならびにメディア・パッケージの管理システムおよび方法
US20070130183A1 (en) Methods, systems, and computer program products for associating computer-system-accessible resources using behaviors
CN1820451B (zh) 虚拟文件夹和项目共享系统和方法
HRP20040440A2 (en) File system shell

Legal Events

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

Payment date: 20150121

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180118

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20200115

Year of fee payment: 9