KR20140091699A - 태스크들의 애그리게이팅 및 프리젠팅 기법 - Google Patents
태스크들의 애그리게이팅 및 프리젠팅 기법 Download PDFInfo
- Publication number
- KR20140091699A KR20140091699A KR1020147012842A KR20147012842A KR20140091699A KR 20140091699 A KR20140091699 A KR 20140091699A KR 1020147012842 A KR1020147012842 A KR 1020147012842A KR 20147012842 A KR20147012842 A KR 20147012842A KR 20140091699 A KR20140091699 A KR 20140091699A
- Authority
- KR
- South Korea
- Prior art keywords
- task
- tasks
- engine
- user interface
- computer
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Resources & Organizations (AREA)
- Software Systems (AREA)
- Strategic Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Marketing (AREA)
- Data Mining & Analysis (AREA)
- Economics (AREA)
- Human Computer Interaction (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Between Computers (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
태스크들을 애그리게이팅 및 프리젠팅하기 위한 개념과 기술들이 본원에서 설명된다. 태스크 엔진은 태스크들을 호스팅하는 태스크 시스템들과 통신한다. 태스크 엔진에 의해 제공되는 사용자 인터페이스에 태스크들이 렌더링된다. 사용자 인터페이스 내의 태스크들에 대한 변경이 태스크 시스템들에, 또한 태스크 엔진에 관련된 캐시에 저장된 태스크들의 복사본에 기록될 수 있다. 몇몇 실시예에서, 태스크들은 태스크 시스템들에 저장되고, 태스크 엔진에 의해 제공되는 사용자 인터페이스에 의해 참조된다. 따라서, 태스크들에 대한 변경은 태스크 시스템들에 저장된 태스크들에 기록될 수 있다. 태스크들을 보여주고 편집하기 위한 사용자 인터페이스들도 제공된다.
Description
업무자들은 업무, 스케줄, 태스크, 타임라인, 및/또는 그들의 업무의 다른 양태들을 관리하기 위해 다수의 소프트웨어 애플리케이션들을 사용할 수 있다. 보통, 이런 소프트웨어 애플리케이션들은 업무를 표현하고, 특정 태스크들의 시간-기반 양태들을 나타내거나 추적하고, 및/또는 다른 소프트웨어와 통신하기 위해 서로 이질적인 및/또는 호환되지 않은 접근 방법을 사용한다. 그에 따라, 업무자들은 다수의 소프트웨어 애플리케이션을 사용하여 그들의 업무의 다양한 양태들을 관리할 수 있다.
일부 소프트웨어 애플리케이션들은 업무, 태스크들, 또는 사용자들에 관련된 기타 정보에 대응하는 데이터를 내보낼(export) 수 있다. 이렇게 내보내진 데이터는 일부 소프트웨어로 가져올 수 있지만, 몇몇 다른 소프트웨어와 호환되지 않을 수 있다. 이처럼, 데이터를 내보내는 기능은 경우에 따라 유용할 수 있지만, 업무자가 호환되지 않는 소프트웨어를 사용하는 경우 그 유용성이 감소될 수 있다.
또한, 내보내진 데이터를 다른 소프트웨어 애플리케이션들에서 가져올 때, 그 데이터가 구식이 되었거나 부적합해졌을 수도 있다. 예를 들어, 업무자가 데이터가 내보내진 다음에 내보내진 데이터로 표현된 업무를 완료할 수 있다. 이처럼, 데이터가 호환 가능한 소프트웨어 패키지로 들어가는 경우, 완료된 업무가 완료되지 않은 업무로 표현될 수 있다. 이를 수정하기 위해, 업무자는 업무의 완료를 나타내도록 데이터를 내보낸 원래 소프트웨어 애플리케이션에서의 업무의 상태를 업데이트하고, 데이터를 다시 내보내고, 그 데이터를 소프트웨어 애플리케이션에서 다시 불러올 수 있다.
이와 같은 그리고 기타의 고려사항과 관련하여, 본원에 기재된 개시 내용이 제시된다.
태스크들을 애그리게이팅 및 프리젠팅하기 위한 개념과 기술들이 본원에서 설명된다. 본원에 개시된 개념과 기술에 따르면, 시스템은 태스크 시스템들과 통신하는 태스크 엔진을 포함할 수 있다. 태스크 시스템들은 사용자와 관련된 태스크들을 호스팅하거나 관리한다. 몇몇 실시예에서, 태스크 엔진은 태스크 시스템들로부터 태스크들의 복사본을 얻고, 태스크들을 애그리게이팅하고, 태스크 엔진에 관련된 캐시 또는 기타 데이터 저장 장치에 애그리게이팅된 태스크들을 저장하도록 구성된다. 다른 실시예에서, 태스크 엔진은 태스크들의 로컬 복사본을 얻지 않고 태스크 시스템들에 의해 저장되거나 호스팅되는 태스크들을 참조하도록 구성된다.
또한 태스크 엔진은 애그리게이팅된 태스크들을 보여주고 관리하기 위해 하나 이상의 사용자 인터페이스를 생성하고 프리젠팅하도록 구성된다. 사용자 인터페이스들은 최근 또는 다가오는 기한, 오늘 날짜의 기한들을 프리젠팅하는 뷰, 새로운 태스크들을 프리젠팅하는 뷰, 완료된 태스크들을 프리젠팅하는 뷰, 모든 태스크들을 프리젠팅하는 뷰, 및 기타 뷰들을 포함할 수 있다. 몇몇 실시예에서, 뷰들 중 하나 이상이 애그리게이팅된 태스크들을 프리젠팅하는 타임라인을 포함한다. 사용자 인터페이스들에 의해 디스플레이되는 애그리게이팅된 태스크들은, 예를 들어, 태스크들의 수정, 태스크들을 중요하다고 혹은 완료되었다고 표시, 및/또는 다른 이유로 사용자와 인터랙션할 수 있다. 태스크들에 적용된 수정은 캐시 내의 태스크들의 복사본에 및/또는 태스크들을 호스팅, 생성, 및/또는 저장하는 태스크 시스템들에 기록될 수 있다.
하나의 양태에 따르면, 태스크 엔진은 태스크들을 저장하는 둘 이상의 태스크 시스템과 통신한다. 태스크 엔진은 태스크 엔진에 의해 노출되는 애플리케이션 프로그래밍 인터페이스를 통해 둘 이상의 태스크 시스템들로부터 태스크들의 복사본을 얻음으로써 태스크들을 애그리게이팅한다. 애그리게이팅된 태스크들은 태스크 엔진에 관련된 캐시 또는 기타 데이터 저장 장치에 저장된다. 애그리게이팅된 태스크들을 프리젠팅하는 사용자 인터페이스는 태스크 엔진에 의해 생성되어 사용자 또는 다른 엔티티에 프리젠팅된다. 다른 실시예에서, 애플리케이션 프로그래밍 인터페이스를 통해 다른 시스템들이나 소비자들이 애그리게이팅된 태스크들을 공유한다.
다른 양태에 따르면, 태스크 엔진에 의해 생성된 사용자 인터페이스는 애그리게이팅된 태스크들 중 하나 이상을 수정하는 기능을 포함한다. 애그리게이팅된 태스크들에 적용된 수정은 태스크 엔진에 의해 저장되는 태스크들의 복사본에 기록되거나 및/또는 태스크 시스템들에 의해 호스팅되거나 저장되는 태스크들에 직접 적용될 수 있다. 이처럼, 본원에 개시된 개념 및 기술들의 실시예를 통해 사용자들은 다수의 이질적인 태스크 시스템들로부터 태스크들을 애그리게이팅하고, 애그리게이팅된 태스크들을 하나의 사용자 인터페이스에 보여주고, 프리젠팅된 애그리게이팅되어진 태스크들과 인터랙션하고, 애그리게이팅된 태스크들에 대한 수정을 태스크들을 얻은 태스크 시스템들에 다시 기록할 수 있다.
전술한 대상은 컴퓨터-제어 장치, 컴퓨터 프로세스, 컴퓨팅 시스템, 또는, 컴퓨터 판독가능 저장 매체와 같은 제조 물품으로 구현될 수 있음을 이해할 필요가 있다. 이러한 특징들 및 다양한 다른 특징들은 다음의 상세한 설명을 읽고 관련 도면을 검토하면 명백해질 것이다.
본 요약은 아래의 상세한 설명에서 추가적으로 설명되는 단순화된 형태의 일련의 개념들을 소개하기 위해 제공된다. 본 요약은 청구 대상의 핵심적인 특징 또는 필수적인 특징을 식별하고자 하는 것이 아니며, 이러한 본 요약이 청구 대상의 범위를 제한하는 데 사용되는 것을 의도하는 것도 아니다. 더욱이, 청구 대상은 본 명세서의 임의의 부분에 언급되는 임의의 또는 모든 단점들을 해결하는 구현예에 제한되지 않는다.
도 1은 본원에 개시된 다양한 실시예들에 관한 예시적인 운영 환경을 도시하는 시스템 다이어그램이다.
도 2는 예시적인 실시예에 따른, 태스크들을 애그리게이팅하는 방법의 양태들을 도시하는 순서도이다.
도 3은 예시적인 실시예에 따른, 애그리게이팅된 태스크들을 프리젠팅하는 방법의 양태들을 도시하는 순서도이다.
도 4a-4f는 다양한 예시적인 실시예에 따른, 태스크들을 애그리게이팅 및 프리젠팅하기 위한 사용자 인터페이스들의 양태들을 도시하는 사용자 인터페이스 다이어그램들이다.
도 5는 본원에 제시된 실시예들의 양태들을 구현 가능한 컴퓨팅 시스템의 예시적인 컴퓨터 하드웨어 및 소프트웨어 아키텍처를 도시하는 컴퓨터 아키텍처 다이어그램이다.
도 6은 본원에 제시된 실시예들의 양태들을 구현 가능한 분산 컴퓨팅 환경을 도시하는 다이어그램이다.
도 7은 본원에 제시된 실시예들의 양태들을 구현 가능한 컴퓨팅 장치 아키텍처를 도시하는 컴퓨터 아키텍처 다이어그램이다.
도 8은 예시적인 실시예에 따른, 태블릿 컴퓨터에서 제공하는 사용자 인터페이스와 인터랙션하는 사용자를 도시하는 다이어그램이다.
도 2는 예시적인 실시예에 따른, 태스크들을 애그리게이팅하는 방법의 양태들을 도시하는 순서도이다.
도 3은 예시적인 실시예에 따른, 애그리게이팅된 태스크들을 프리젠팅하는 방법의 양태들을 도시하는 순서도이다.
도 4a-4f는 다양한 예시적인 실시예에 따른, 태스크들을 애그리게이팅 및 프리젠팅하기 위한 사용자 인터페이스들의 양태들을 도시하는 사용자 인터페이스 다이어그램들이다.
도 5는 본원에 제시된 실시예들의 양태들을 구현 가능한 컴퓨팅 시스템의 예시적인 컴퓨터 하드웨어 및 소프트웨어 아키텍처를 도시하는 컴퓨터 아키텍처 다이어그램이다.
도 6은 본원에 제시된 실시예들의 양태들을 구현 가능한 분산 컴퓨팅 환경을 도시하는 다이어그램이다.
도 7은 본원에 제시된 실시예들의 양태들을 구현 가능한 컴퓨팅 장치 아키텍처를 도시하는 컴퓨터 아키텍처 다이어그램이다.
도 8은 예시적인 실시예에 따른, 태블릿 컴퓨터에서 제공하는 사용자 인터페이스와 인터랙션하는 사용자를 도시하는 다이어그램이다.
다음의 상세한 설명은 태스크들을 애그리게이팅 및 프리젠팅하기 위한 개념과 기술들에 관한 것이다. 본원에 개시된 개념과 기술에 따르면, 태스크 엔진은 다수의 태스크 시스템과 통신한다. 태스크 시스템들은 태스크들을 호스팅하거나 관리하고, 애그리게이팅을 위해 태스크 엔진에 태스크들을 노출하거나 제공하도록 구성된다. 몇몇 실시예에서, 애그리게이팅된 태스크들은 태스크들의 저장 없이 태스크 엔진에 의해 프리젠팅된다. 다른 실시예에서, 태스크 엔진은 태스크들을 애그리게이팅하고 태스크 엔진에 관련된 캐시 또는 기타 데이터 저장 장치에 애그리게이팅된 태스크들을 저장하도록 구성된다.
또한 태스크 엔진은 애그리게이팅된 태스크들을 보여주고 관리하는 하나 이상의 사용자 인터페이스를 생성하고 프리젠팅하도록 구성된다. 캐시에 저장되거나 태스크 시스템들에 의해 저장된 애그리게이팅되어진 태스크들을 프리젠팅하기 위해 사용자 인터페이스들이 사용된다. 따라서, 몇몇 실시예에서 태스크 엔진은 사용자 인터페이스들에서 태스크들에 대한 참조를 내장하는 한편, 다른 실시예에서는, 사용자 인터페이스들을 생성하기 위해 태스크 엔진이 캐시에 저장된 태스크들의 복사본을 사용한다. 사용자 인터페이스들에 디스플레이되는 애그리게이팅된 태스크들은, 예를 들어, 태스크들의 수정, 태스크들을 중요하다고 혹은 완료되었다고 표시, 및/또는 다른 이유로 사용자들과 인터랙션할 수 있다. 태스크들에 적용된 수정은 캐시 내의 태스크들의 복사본에 및/또는 태스크 시스템들에 의해 호스팅되거나 저장되는 태스크들에 기록될 수 있다.
본원에서 설명되는 대상이 컴퓨터 시스템 상의 운영 체제 및 응용 프로그램의 실행과 연계하여 실행되는 프로그램 모듈의 일반적인 범주에서 제시되지만, 당업자는 다른 타입의 프로그램 모듈과 조합하여 다른 구현예들이 수행될 수 있음을 인지할 것이다. 일반적으로, 프로그램 모듈은 루틴, 프로그램, 컴포넌트, 데이터 구조, 그리고, 특정 작업을 수행하는 또는 특정 추상 데이터 타입을 구현하는 다른 타입의 구조를 포함한다. 나아가, 당업자는 본원에서 설명되는 대상이 핸드-헬드 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 또는 프로그래밍 가능한 소비자 가전, 미니 컴퓨터, 메인프레임 컴퓨터 등을 포함하는, 다른 컴퓨터 시스템 구성으로 실시될 수 있음을 이해할 것이다.
다음의 상세한 설명에서, 상세한 설명의 일부분을 형성하는, 그리고 구체적인 실시예 또는 예시들을 그림을 통해 도시하는 첨부 도면을 참조한다. 여러 도면에 걸쳐 유사한 도면 부호들이 유사한 요소를 나타내는 도면을 이제부터 참조하여, 태스크들을 애그리게이팅 및 프리젠팅하는 컴퓨팅 시스템, 컴퓨터 판독 가능 저장 매체, 및 컴퓨터-구현 방법의 양태들이 설명될 것이다.
이제 도 1을 참조하여, 본원에 제시된 다양한 실시예들에 관한 운영 환경(100)의 양태들이 설명될 것이다. 도 1에 도시된 운영 환경(100)은 네트워크(104)의 일부로서 동작하거나 또는 네트워크(104)와 통신하여 동작하는 태스크 엔진(102)을 포함한다. 태스크 엔진(102)은 운영 체제(106) 및, 예컨대, 태스크 애그리게이터(task aggregator)(108), 프리젠테이션 모듈(110), 및/또는 다른 애플리케이션 프로그램들과 같은 하나 이상의 애플리케이션 프로그램을 실행하도록 구성된다.
운영 체제(106)는 태스크 엔진(102)의 동작을 제어하는 컴퓨터 프로그램이다. 태스크 애그리게이터(108) 및 프리젠테이션 모듈(110)은, 본원에서 더욱 상세하게 설명되는 바와 같이, 태스크들을 애그리게이팅 및 프리젠팅하도록 본원에 설명된 기능을 제공하기 위해 운영 체제(106) 상에서 실행되도록 구성된 실행 가능 프로그램들이다. 태스크 애그리게이터(108) 및 프리젠테이션 모듈(110)이 태스크 엔진(102)의 컴포넌트들로 도시되어 있지만, 이런 컴포넌트들 각각은, 또는 그 조합들은, 네트워크(104) 및/또는 태스크 엔진(102)의 일부로서 동작하거나 또는 네트워크(104) 및/또는 태스크 엔진(102)과 통신하여 동작하는 독립형 장치들이나 그 컴포넌트들로서 또는 독립형 장치들이나 그 컴포넌트들 내에 구현될 있음을 이해할 필요가 있다. 또한, 몇몇 실시예에서, 워싱턴주 레드몬드에 있는 마이크로소프트 코포레이션의 콜라보레이션 제품들 중 MICROSOFT SHAREPOINT 군의 멤버를 실행하는 하나 이상의 장치에 의해 태스크 엔진(102)이 제공되는 몇몇 실시예에서, 태스크 애그리게이터(108) 및/또는 프리젠테이션 모듈(110) 중 하나 이상의 기능이 MICROSOFT SHAREPOINT에서 실행되는 서비스들에 의해 제공된다. 이처럼, 도시된 실시예는 예시적이며, 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다.
태스크 애그리게이터(108)는 하나 이상의 태스크 시스템(112A-N)(이하에서 일반적으로 또는 전체적으로 "태스크 시스템들(112)"이라고 함)과 통신하여 태스크 시스템들(112)에 의해 호스팅되거나 저장되는 하나 이상의 태스크(114)를 얻도록 구성된다. 다양한 구현에 따르면, 네트워크(104)의 일부로서 동작하거나 또는 네트워크(104) 및/또는 태스크 엔진(102)과 통신하여 동작하는 하나 이상의 서버 컴퓨터 또는 기타 컴퓨팅 장치에 의해 태스크 시스템들(112)의 기능이 제공된다. 본원에서 사용되는 바와 같이, "태스크"는 특정 작업 태스크, 업무, 동작, 프로세스, 이정표(milestone), 또는 작업의 기타 양태를 나타내는 데이터이다. 예를 들어, 웹사이트를 구축하는 프로젝트와 관련된 태스크는, 예를 들어, 홈페이지 배너 생성을 포함할 수 있다. 동일한 프로젝트와 관련된 다른 태스크로 페이지의 하나 이상의 부분에 대한 코드 작성(authoring)을 포함할 수 있다. 태스크들(114)은 임의의 작업 유형의 임의의 양태를 포함할 수 있기 때문에, 이들 실시예는 예시적인 것으로 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다.
다양한 실시예에 따르면, 태스크들(114)이 관련된 작업에 관한 다양한 유형의 정보를 포함할 수 있는 데이터에 의해 태스크들(114)이 표현된다. 예를 들어, 태스크들(114)은 태스크(114)의 제목, 태스크(114)의 작성 시간 및 일자("작성일"), 태스크(114)의 마감일(due date), 태스크(114)에 관련된 위치, 및 태스크(114)에 관련된 기타 정보를 포함할 수 있다. 태스크(114)의 위치는, 예를 들어, 태스크(114)를 얻은 태스크 시스템(112)의 URL이나 리소스 위치, 또는 다른 위치에 대응될 수 있다. 다른 정보는 사용자 또는 다른 엔티티에 의해 태스크(114)의 플래그 표시 여부를 나타내는 플래그 지표, 태스크(114)와 관련된 완성도를 나타내는 태스크(114)의 완료 상태, 태스크(114)가 관련된 프로젝트, 태스크(114)와 관련된 팀 또는 기타 사용자, 및/또는 기타 정보를 포함할 수 있으며, 그러나 이에 제한되지는 않는다. "플래그"는 태스크(114)를 중요하다고 또는 후속 조치(follow-up)를 위한 것이라고 사용자가 식별하는지에 대한 이진 예/아니오 또는 참/거짓 표시를 포함하거나, 문자 성적, 수치, 이들의 조합, 중요한 플래그가 만료되는 시간 등과 같은 상대적인 중요성의 비-이진 표시를 포함할 수 있다. 태스크들(114)은 원하는 임의의 정보를 포함할 수 있고, 이런 정보는 태스크들(114)의 정리(organize) 및/또는 목록 작성(catalogue)을 하기 위해서 태스크 애그리게이터(108)에 의해 및/또는 태스크들(114)을 프리젠팅하기 위해서 프리젠테이션 모듈(110)에 의해 사용될 수 있으나 반드시 그 정보가 사용되는 것은 아니다.
태스크 애그리게이터(108)는 태스크들(114)에 대응하는 데이터를 얻기 위해 태스크 시스템들(112)과 통신하도록 구성된다. 몇몇 실시예에서, 태스크 애그리게이터(108)는 태스크 시스템들(112)과 통신하여, 태스크들(114)을 요청하고, 태스크들(114)로서 수신된 데이터를 인식하고, 필요하다면, 태스크들(114)의 정리 및 목록 작성을 하고, 및/또는 데이터 저장 장소에 태스크들(114)을 저장한다. 다른 실시예에서, 태스크 시스템들(112)이 태스크 애그리게이터(108)와 통신 가능하도록 태스크 엔진(102)이 구성된다. 따라서, 태스크 시스템들(112)은 태스크 엔진(102)과 통신하여 태스크들(114)을 입력하도록 구성될 수 있고, 태스크 애그리게이터(108)는 입력된 데이터를 태스크들(114)로서 인식하고, 태스크들(114)의 정리 및/또는 목록 작성을 하거나 하지 않고 태스크들(114)을 데이터 저장 장치에 저장하도록 구성될 수 있다.
몇몇 실시예에서, 태스크 애그리게이터(108)는 캐시(116)에 태스크들(114)을 저장하도록 구성된다. 캐시(116)는 태스크 엔진(102)에 의해 호스팅되거나 또는 태스크 엔진(102)과 통신할 수 있다. 몇몇 실시예에서, 태스크 엔진(102)의 기능을 제공하는 장치의 메모리 장치, 하드 드라이브, 또는 기타 저장 장치에 의해 캐시(116)의 기능이 제공된다. 다른 실시예에서, 예를 들어, 하나 이상의 데이터베이스, 서버 컴퓨터, 대용량 저장 장치, 메모리 장치, 이들의 조합 등과 같이, 태스크 엔진(102)과 통신하는 하나 이상의 데이터 저장 장치에 의해서 캐시(116)의 기능이 제공된다. 따라서, 태스크 엔진(102)에 통합되거나 또는 태스크 엔진(102)으로부터 멀리 떨어진 데이터 저장 장치에 태스크들(114)이 저장될 수도 있음을 이해할 필요가 있다. 이와 같이, 도 1에 도시된 실시예는 예시적인 것으로, 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다.
또한 태스크 애그리게이터(108)는 태스크 시스템들(112)과 통신하여 태스크들(114)에 수행된 변경을 태스크 시스템들(112)에 기록하도록 구성된다. 본원에서 더욱 상세하게 설명하게 될 바와 같이, 태스크들(114)이 한 개 이상의 사용자 인터페이스("UI")(118)를 통해 한 명 이상의 사용자 혹은 다른 엔티티들("사용자들")에게 프리젠팅될 수 있다. 또한 사용자들은 UI들(118)를 통해 태스크들(114)을 관리할 수 있다. 예를 들어, 사용자들은 완료된 태스크들(114)을 삭제하거나 또는 완료된 것으로 표시할 수 있다. 이런 표시가 캡쳐되어 태스크 애그리게이터(108)에 제공될 수 있다. 태스크 애그리게이터(108)는 이 표시를 태스크 시스템들(112)에 전달하여 태스크 시스템들(112)에 저장된 태스크들(114)을 업데이트하도록 구성될 수 있다.
프리젠테이션 모듈(110)은 사용자들에게 UI들(118)을 생성하고 프리젠팅하도록 구성된다. 상기에서 언급한 바와 같이, 사용자들은 소프트웨어 사용자들, 다른 소프트웨어 애플리케이션들, 다른 시스템들, 및/또는 다른 엔티티들을 포함할 수 있다. 도시된 실시예에서, 사용자는 네트워크(104)를 통해 태스크 엔진(102)과 통신하면서 동작하는 클라이언트 장치(120)로서 도시되어 있다. 본 실시예는 예시적인 것으로 본원에 개시된 개념과 기술들의 간단한 설명을 제공한다. 몇몇 실시예에서, 예를 들어, 사용자는 워싱턴주 레드몬드에 있는 마이크로소프트 코포레이션의 제품들의 MICROSOFT EXCHANGE 군의 멤버를 실행하는 서버 컴퓨터("EXCHANAGE 서버")와 같은 태스크 시스템(112)에 대응될 수 있다. EXCHANGE 서버는 애그리게이팅을 위해 태스크 엔진(102)에 작업들(114)을 제공하거나 노출시킬 수 있고, UI들(118)을 통해 및/또는 태스크들(114)을 애그리게이팅하기 위해 태스크 엔진(102)에 의해 노출된 애플리케이션 프로그램 인터페이스("API")를 통해 애그리게이팅된 태스크들을 사용할 수 있다. 태스크 시스템들(112)이 태스크 애그리게이터(108)에 태스크들(114)을 입력할 수 있게 하기 위해 태스크 엔진(102)에 의해 API(122)가 노출될 수도 있다. 이와 같이, 본원에서 사용되는 용어 "사용자"는 광범위한 시스템, 사용자, 장치, 컴포넌트 등을 지칭하는 것으로 이해해야 하고, 도시된 실시예는 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다.
프리젠테이션 모듈(110)은 태스크들(114)과의 인터랙션을 위해 많은 UI들(118)을 사용자에게 제공할 수 있고, 사용자가 태스크들(114)에 행한 변경들을 나타내기 위해 태스크 애그리게이터(108)와 통신할 수 있다. 몇몇 예시적인 UI들(118)이 도 4a-4e와 관련하여 아래에 도시되어 있다. 본원에 설명된 이들 및 다른 도면들을 참조하여 더욱 분명하게 이해할 수 있는 것처럼, 프리젠테이션 모듈(110)은 태스크 애그리게이터(108)에 의해 애그리게이팅된 태스크들(114)을 얻어서 UI들(118)에서 이 애그리게이팅된 태스크들(114)을 프리젠팅하도록 구성될 수 있다.
몇몇 실시예에서, 프리젠테이션 모듈(110)은 사용자들이 태스크 엔진(102) 내에서 태스크들(114)을 생성할 수 있게 하기 위해 하나 이상의 UI(118)를 프리젠팅하도록 구성될 수 있다. 따라서, 태스크들(114)은 태스크 엔진(102)에서 생성될 수 있고, 태스크 시스템(112)으로부터 애그리게이팅되지 않을 수 있다. 이처럼, 태스크 엔진(102)은, 어떤 경우에는, 태스크 시스템(112)으로 기능할 수도 있다. 태스크 엔진(102)에서 생성된 태스크들(114)은 캐시(116)에 저장될 수 있고 및/또는 다른 태스크 시스템들(112), 클라이언트들, 및/또는 다른 장치들과 공유될 수도 있다.
몇몇 실시예에서, 태스크 엔진(102)은 캐시(116)에 태스크들(114)을 저장하지 않고도 태스크들(114)의 애그리게이팅과 프리젠팅을 지원한다. 특히, 태스크 엔진(102)의 몇몇 실시예는 태스크 시스템들(112)에 저장된 태스크들(114)을 UI들(118)에 보여주도록 구성된다. 나아가, 태스크 엔진(102)은, 필요하다면, 태스크 엔진(102)에서의 태스크들(114)의 생성 및 태스크 시스템들(112)에 대한 생성된 태스크들의 동기화를 지원하도록 구성될 수 있다. 예를 들어, 태스크들(114)은, 태스크 시스템들(112)에 의해 저장되거나 호스팅되는 태스크들(114)에 대한 외부 참조로서 UI들(118)에 내장될 수 있다. 이처럼, 사용자들은 태스크 시스템들(112)에 직접적으로 액세스하지 않고도 태스크 시스템들(112)에서 직접적으로 태스크들(114)과 인터랙션하고 및/또는 태스크들(114)을 수정할 수 있다. 나아가, 태스크들(114)에 수행된 변경들은 태스크 시스템들(112)에 저장된 태스크들(114)에 직접적으로 적용될 수 있어서, 태스크 시스템들(112)에 의해 저장된 태스크들(114)에 즉시 반영될 수 있다.
몇몇 실시예에서, 태스크 엔진(102)에서 사용자를 인증한다. 예를 들어, 앞서 언급한 바와 같이, 워싱턴주 레드몬드에 있는 마이크로소프트 코포레이션의 콜라보레이션 제품들 중 MICROSOFT SHAREPOINT 군의 멤버를 실행하는 컴퓨팅 장치에 의해 태스크 엔진(102)의 몇몇 실시예가 제공된다. 따라서, 태스크 엔진(102)에 의해 사용자가 인증 또는 식별될 수 있고, 태스크 엔진(102)은 인증 혹은 로그인을 요구하는 하나 이상의 태스크 시스템(112)으로 로그인 및/또는 인증할 수 있다. 인증 및 로그인은 일반적으로 알고 있는 것이므로, 간결하게 하기 위해 태스크 엔진(102)의 이런 양태들은 본원에서 추가적으로 상세하게 설명되지 않는다.
도 1은 하나의 태스크 엔진(102), 하나의 네트워크(104), 두 개의 태스크 시스템들(112), 및 하나의 클라이언트 장치(120)를 도시하고 있다. 그러나, 운영 체제(100)의 몇몇 구현에서 다수의 태스크 엔진들(102), 다수의 네트워크들(104), 하나 또는 둘 이상의 태스크 시스템(114), 및/또는 다수의 클라이언트 장치들(120)을 포함하는 경우도 이해할 필요가 있다. 따라서, 도시된 실시예는 예시적인 것으로 이해해야 하고, 어떤 식으로든 제한하는 것으로 해석해서는 안 된다.
이제 도 2에서, 태스크들(114)을 애그리게이팅하는 방법(200)의 양태들이 상세하게 설명될 것이다. 본원에 개시되는 방법들의 동작이 반드시 특정 순서로 제시되는 것은 아니며, 대안적인 순서(들)로 동작들의 일부 또는 전부의 실행이 가능하며 고려되는 것을 이해할 필요가 있다. 동작들은 설명 및 예시를 쉽게 하기 위해 보이는 순서대로 제시되어 있다. 첨부된 특허청구범위의 범위로부터 벗어나지 않으면서, 동작들이 추가, 생략, 및/또는 동시 실행될 수 있다.
또한, 예시되는 방법들이 임의의 시기에 종료될 수 있고, 전체적으로 수행될 필요는 없음을 이해할 필요가 있다. 방법의 일부 또는 모든 동작, 및/또는 실질적으로 동등한 동작들이, 본원에서 규정되는 바와 같이, 컴퓨터-저장 매체에 포함되는 컴퓨터 판독 가능 명령어들의 실행에 의해 수행될 수 있다. 상세한 설명 및 특허청구범위에서 사용되는 바와 같이, "컴퓨터 판독 가능 명령어"라는 용어와 그 변형예는 루틴, 애플리케이션, 애플리케이션 모듈, 프로그램 모듈, 프로그램, 컴포넌트, 데이터 구조, 알고리즘 등을 포함하도록 본원에서 폭넓게 사용된다. 컴퓨터 판독 가능 명령어는 단일-프로세서 또는 멀티프로세서 시스템, 미니컴퓨터, 메인프레임 컴퓨터, 개인용 컴퓨터, 핸드-헬드 컴퓨팅 장치, 마이크로프로세서-기반, 프로그램 가능한 소비자 가전, 이들의 조합 등을 포함하는 다양한 시스템 구성에서 구현될 수 있다.
따라서, 본원에서 설명되는 논리 동작들이 (1) 컴퓨터 구현 액트의 시퀀스 또는 컴퓨터 시스템 상에서 구동되는 프로그램 모듈로 구현되고 및/또는 (2) 컴퓨터 시스템 내에서 상호 연결된 기계 논리 회로 또는 회로 모듈로 구현된다는 점을 알아야 한다. 구현은 컴퓨팅 시스템의 성능 및 다른 요건들에 좌우되는 선택 사항이다. 따라서, 본원에서 설명되는 논리적 동작들은 상태, 동작, 구조적 장치, 액트, 또는 모듈로 다양하게 불릴 수 있다. 이러한 동작, 구조적 장치, 액트, 및 모듈은 소프트웨어, 펌웨어, 특수 목적 디지털 논리, 및 이들의 임의의 조합으로 구현될 수 있다.
본 개시의 개념을 예시하고 설명하기 위한 목적으로, 본원에 개시되는 방법은 태스크 애그리게이터(108) 및/또는 프리젠테이션 모듈(110)의 실행을 통해 태스크 엔진(102)에 의해 수행되는 것으로 설명된다. 이러한 실시예들은 예시적인 것이며 어떤 식으로든 제한적인 것으로 해석되어서는 안 된다는 점을 이해할 필요가 있다. 특히, 태스크 엔진(102)이 아닌 장치들은 태스크 애그리게이터(108) 및/또는 프리젠테이션 모듈(110)을 포함하는, 그러나 이에 제한되는 않는, 임의의 애플리케이션들이나 모듈들을 실행함으로써 본원에 설명된 기능을 제공할 수 있다.
방법(200)은 동작(202)에서 시작하며, 여기서 태스크 엔진(102)이 태스크 시스템(112)과 통신한다. 전술한 바와 같이, 태스크 엔진(102)과 태스크 시스템(112) 사이의 통신은 다양한 방식으로 개시 및/또는 수행될 수 있다. 몇몇 실시예에서, 태스크 엔진(102)은 태스크 시스템(112)에 접속한다. 따라서, 동작(202)은 태스크 엔진(102)이 태스크 시스템(112)에 접속하고, 필요하다면, 태스크 시스템(112)을 인증하고, 및/또는 태스크들(114)이 애그리게이팅되어야 하는 사용자나 시스템을 식별하는 것을 포함할 수 있다.
다른 실시예에서, 앞서 언급한 바와 같이, 태스크 시스템들(112)은 태스크 엔진(102)에 접속할 수 있다. 예를 들어, 태스크 시스템들(112)이 태스크 애그리게이터(108) 및/또는 태스크 엔진(102)의 다른 기능과 통신할 수 있게 하기 위해 태스크 엔진(102)은 태스크 시스템들(112)에 API(122)를 노출시킬 수 있다. 이처럼, 동작(202)은 태스크 시스템(112)이 태스크 엔진(102)에 관련된 API(122) 및/또는 다른 인터페이스들을 통해 태스크 엔진(102)에 액세스하는 것을 포함할 수 있다. 상기에서 상세하게 설명되지는 않았지만, 태스크 시스템들(112)은, 필요하다면, 태스크들(114)의 입력을 허락 받기 전에 태스크 엔진(102)에 의해 인증될 수 있다.
동작(202)으로부터, 동작(204)으로 방법(200)이 진행되고, 여기서는 태스크 엔진(102)이 태스크 시스템(112)으로부터 태스크들(114)을 획득한다. 본원에서 설명된 바와 같이, 태스크 엔진(102)의 요청에 대한 응답으로 태스크 시스템들(112)에 의해 태스크들(114)이 태스크 엔진(102)으로 입력될 수 있고, 또는 태스크 엔진(102)의 명시적인 요청 없이도 태스크 시스템들(112)에 의해 태스크들(114)이 입력될 수 있다. 몇몇 실시예에서, 태스크 엔진(102)은 태스크 엔진(102) 및/또는 태스크 시스템들(112)에 의해 실행되는 타이머 잡(job)의 만료에 기반하여 태스크들(114)을 요청하거나 수신한다. 다른 실시예에서, 프리젠테이션 모듈(110)에 의해 태스크들(114)이 판독되고 및/또는 UI(118)를 통해 사용자에게 프리젠팅된 후에 태스크 애그리게이터(108)가 캐시(116)에 저장된 태스크들(114)의 업데이트를 요청하도록 구성된다. 따라서, 사용자에 대한 태스크들(114)의 프리젠테이션 도중을 포함하는, 그러나 이에 제한되지는 않는, 언제든지 태스크들(114)이 요청되거나 업데이트될 수 있다.
동작(204)으로부터, 동작(206)으로 방법(200)이 진행되고, 여기서는 태스크 엔진(102)이 캐시(116)에 태스크들(114)을 기록한다. 동작(206)에서 캐시(116)에 기록된 태스크들(114)은 이전에 캐시(116)에 존재하지 않았던 새로운 태스크들(114), 캐시(116)에 저장된 하나 이상의 태스크(114)가 삭제된다는 표시, 및/또는 캐시(116)에 저장된 태스크들(114)의 중복 또는 수정 버전을 포함할 수 있다. 따라서, 동작(206)은 새로운 태스크들(114)의 기록, 태스크들(114)의 삭제, 태스크들(114)의 업데이트 등을 포함할 수 있다.
도 1과 관련하여 전술한 바와 같이, 본원에 개시된 개념 및 기술들의 몇몇 실시예는 태스크 엔진(102)을 통한, 태스크 시스템들(112)에서의 태스크들(114)의 내부(in-place) 프리젠테이션 및/또는 편집을 포함한다. 이와 같이, 몇몇 실시예에서, 태스크들(114)의 캐싱 없이 태스크들(114)이 애그리게이팅되고 프리젠팅될 수 있다. 이러한 실시예는 아래의 도 3에 도시된다.
동작(206)으로부터, 동작(208)으로 방법(200)이 진행되고, 여기서 태스크 엔진(102)은 태스크들(114)을 호스팅하는 다른 태스크 시스템(112)이 존재하는지 여부를 결정한다. 전술한 바와 같이, 태스크 엔진(102)은 많은 태스크 시스템들(112)로부터의 태스크들(114)을 애그리게이팅할 수 있다. 따라서, 동작(208)은 각각의 태스크 시스템(112)으로부터 태스크들(114)이 수신 또는 획득되었는지 여부에 대한 결정을 포함할 수 있다.
태스크 엔진(102)이, 동작(208)에서, 다른 태스크 시스템(112)이 존재한다고 결정하면, 방법(200)은 동작(202)으로 되돌아가서, 태스크 엔진(102)이 다른 태스크 시스템들(112)과 통신한다. 동작(208)의 어떤 반복에서든지, 태스크 시스템들(112)로부터 태스크들(114)을 얻고, 및/또는 태스크들(114)을 얻을 추가 태스크 시스템(112)이 없다고 태스크 엔진(102)이 결정할 때까지 동작들(202-208)이 반복될 수 있다. 태스크 엔진(102)이, 동작(208)에서, 태스크들(114)을 얻을 또 다른 태스크 시스템(112)이 없다고 결정하는 경우, 방법(200)은 동작(210)으로 진행된다. 방법(200)은 동작(210)에서 종료한다.
이제 도 3으로 가서, 예시적인 실시예에 따라, 태스크들(114)을 프리젠팅하는 방법(300)이 설명될 것이다. 방법(300)은 동작(302)에서 시작되고, 여기서 태스크 엔진(102)은 사용자와 관련된 태스크들(114)을 획득한다. 몇몇 실시예에서, 동작(302)은 캐시(116)로부터의 태스크들(114)의 획득을 포함한다. 도 1과 관련하여 전술한 바와 같이, 태스크들(114)은 태스크(114)와 관련된 사용자를 나타내는 데이터를 포함할 수 있다. 따라서, 사용자와 관련된 태스크들(114)을 캐시(116)에서 검색할 수 있다. 몇몇 구현에서는, 사용자와 관련된 태스크들(114)만이 캐싱되어, 캐싱된 모든 태스크들(114)이 기본적으로 사용자와 관련이 있을 수 있다.
다른 실시예에서, 태스크 시스템들(112)로부터 태스크(114)를 직접 얻어서 캐시(116)에 태스크들(114)을 저장하지 않고 사용자들에게 프리젠팅한다. 따라서, 동작(302)은 태스크 시스템들(112)에 액세스, 및 태스크 시스템들(112)에 의해 호스팅되고 태스크 엔진(102)에 의해 사용자에게 렌더링될 태스크들(114)의 식별을 포함할 수 있다. 전술한 바와 같이, 동작(302)은, 필요하다면, API(122)를 통해 완료되는 인증 및/또는 통신을 포함할 수 있다. 이처럼, 동작(302)을 위한 태스크들(114)의 "획득"은 태스크 엔진(102)에서의 태스크들(114)의 수신 및/또는 태스크 시스템들(112)에서의 태스크들(114)의 식별을 포함할 수 있다.
동작(302)으로터, 동작(304)으로 방법(300)이 진행되고, 여기서 태스크 엔진(102)은 UI들(118)과 같은 사용자 인터페이스에 동작(302)에서 얻은 태스크들(114)을 렌더링한다. 태스크들(114)을 프리젠팅하기 위한 일부 예시적인 사용자 인터페이스들이 도 4a-4e와 관련하여 아래에서 도시되고 설명된다. 전술한 바와 같이, 태스크들(114)을 프리젠팅하기 위한 사용자 인터페이스들은 사용자들로부터 입력을 수신하는 데에도 사용될 수 있다. 따라서, 동작(304)에서 렌더링되고 프리젠팅된 하나 이상의 사용자 인터페이스를 통해, 사용자가 태스크들(114) 및/또는 다양한 태스크들(114)에 관련된 데이터를 수정할 수 있게 된다. 도 3에는 도시되지 않았지만, 동작(302)에서 얻어지는 태스크들(114)의 렌더링 이전, 이후, 또는 도중에 캐시(116)를 업데이트하도록 태스크 엔진(102)의 몇몇 실시예가 구성된다. 그에 따라, 방법(300)의 몇몇 실시예는 캐시(116)를 업데이트하기 위해 태스크 애그리게이터(108)를 호출하는 동작을 포함한다. 이와 같은 실시예는 예시적인 것으로, 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다는 점을 이해할 필요가 있다.
도 4a-4e와 관련해서 도시되고 아래에서 더욱 상세하게 설명하게 될 바와 같이, 하나 이상의 사용자 인터페이스에서의 태스크들(114)의 렌더링은 사용자 혹은 다른 엔티티에게 최우선 순위로 예상되는 태스크들(114)을 디스플레이하는 "중요 및 업커밍(Important & Upcoming Tasks)" 뷰, 현재 캘린더 날짜 동안 및/또는 현재 시간에서 24 시간 내로 예정된 임의의 태스크들(114)을 열거하는 "오늘 마감(Due Today)" 뷰, 상대적인 중요도나 우선 순위에 상관 없이, 특정 사용자에게 부과된 임의의 태스크들을 포함하는 "액티브 태스크들(Active Tasks)" 뷰, 사용자에 의해 완료되었다고 표시되는 임의의 태스크들을 보여주는 "완료 태스크들(Completed Tasks)" 뷰, 이전 렌더링이나 캐시 리프레시 이후에 식별된 태스크들을 보여주는 "새로운 태스크들(New Tasks)" 뷰, 및/또는 기타 뷰들을 포함하는, 그러나 이에 제한되지는 않는, 태스크들(114)의 다양한 뷰의 렌더링을 포함할 수 있다. 몇몇 실시예에서, 추가 뷰들이 프로젝트 서버가 설치된 경우, 그 서버에 의해 지원되는 뷰들에 기반할 수 있고, 몇몇 실시예에서, 뷰들의 목록이 다른 태스크 시스템들(112)이 지원하거나 제공하는 뷰들로 확장될 수 있다. 또한 뷰들은 타임라인 인터페이스에서 하나 이상의 뷰를 통해 태스크들(114)을 디스플레이하는 타임라인 뷰를 포함할 수 있다. 이와 같은 실시예는 예시적인 것으로, 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다는 점을 이해할 필요가 있다.
동작(304)로부터, 동작(306)으로 방법(300)이 진행되고, 여기서 태스크 엔진(102)은 태스크(114) 혹은 태스크(114)와 관련된 데이터의 수정 여부를 결정한다. 태스크(114)의 수정은, 태스크(114)에 관련된 마감일, 태스크(114)와 관련된 사용자, 프로젝트, 또는 팀, 태스크(114)가 플래그 표시된 날짜 또는 시간, 태스크(114)의 플래그 표시 여부, 태스크(114)와 관련된 위치, 태스크(114)와 관련된 상대적인 가중치, 중요도, 또는 우선 순위, 태스크(114)의 완료 상태, 태스크(114)의 삭제, 이들의 조합 등을 포함하는, 그러나 이에 제한되지는 않는, 태스크의 임의의 양태의 수정을 포함할 수 있다. 따라서, 어떻든, 태스크(114)는 동작(306)에서 임의의 방식으로 수정될 수 있다.
태스크 엔진(102)이 태스크(114) 혹은 태스크(114)와 관련된 데이터가 수정되었다고 결정하면, 방법(300)은 동작(308)으로 진행한다. 동작(308)에서, 태스크 엔진(102)은 캐시(116)에 저장된 하나 이상의 태스크(114)를 편집한다. 상기의 동작(306)의 설명을 고려하면, 동작(308)이, 필요하다면, 태스크(114)의 임의의 양태에 대한 편집을 포함할 수 있음을 이해할 수 있다. 태스크(114)에 수행되었다고 동작(306)에서 결정된 임의의 수정은 캐시(116)의 태스크들(114)에 기록될 수 있다. 캐싱 없이 태스크 시스템들(112)로부터 직접 태스크들(114)을 얻는 경우, 동작(308)은 태스크 시스템들(112)에 저장된 태스크들(114)의 수정을 포함할 수 있다.
동작(308)로부터, 동작(310)으로 방법(300)이 진행되고, 여기서 태스크 엔진(102)은 캐시(116)의 수정된 태스크들(114)을 태스크 시스템들(112)에 기록한다. 캐싱 없이 태스크 시스템들(112)로부터 직접 태스크들(114)을 얻은 경우, 동작(308)에서 태스크 시스템들(112)에 의해 저장된 태스크들(114)에 직접적으로 변경이 이루어질 수 있으므로, 동작(310)은 생략될 수 있다. 다른 실시예에서, 태스크들(114)이 캐싱되고, 동작(310)은 태스크 시스템들(112)에 수정된 태스크들(114)을 기록하기 위해 태스크 시스템들(112)에 액세스하는 것을 포함한다.
동작(310)으로부터, 혹은 동작(306)으로부터, 태스크(114) 혹은 태스크(114)와 관련된 데이터가 수정되지 않았다고 태스크 엔진(102)이 결정하면, 방법(300)은 동작(312)으로 진행한다. 방법(300)은 동작(312)에서 종료된다.
이제 도 4a에서, 몇몇 실시예에서의 태스크들(114)을 프리젠팅하는 UI의 양태들을 도시하는 UI 다이어그램이 설명될 것이다. 특히, 도 4a는 태스크들(114)을 프리젠팅하는 기능을 여기에서 제공하도록 구성되는, 태스크 엔진(102)에 의해 생성된 화면 디스플레이(400A)를 도시한다. 몇몇 실시예에서, 화면 디스플레이(400A)는 도 3에 도시된 방법(300)의 동작(304)에서 프리젠테이션 모듈(110)에 의해 생성된다. 이와 같은 실시예는 예시적인 것으로, 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다는 점을 이해할 필요가 있다.
화면 디스플레이(400A)는 도 1에 도시된 UI들(118)에 대응될 수 있다. 따라서, 화면 디스플레이(400A)는 클라이언트 장치(120)에 의해 실행되는 웹 브라우저나 기타 애플리케이션에 의해 사용자 또는 다른 엔티티에 프리젠팅될 수 있다. 도 4a에 도시된 UI 다이어그램은 하나의 고려된 실시예의 예시이므로, 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다는 점을 이해할 필요가 있다.
도 4a에 도시된 화면 디스플레이(400A)는 다양한 메뉴 항목들(402)을 포함한다. 도시된 메뉴 항목들(402)은 예시적인 것으로, 추가 및/또는 대안적인 메뉴 항목들도 이용 가능하고 고려된다는 점을 이해할 필요가 있다. 특히, 특허청구범위의 범위를 벗어나지 않고 다양한 아이콘, 명령어 리본, 입력 상자들, 및/또는 결과 페이지를 보여주고 및/또는 결과 페이지와 인터랙션하는 기타 UI 컨트롤이 화면 디스플레이(400A)에 프리젠팅될 수 있다. 또한 화면 디스플레이(400A)는 태스크들(114) 검색, 태스크 엔진(102)에 관련된 사이트 검색, 태스크 시스템들(112) 검색, 및/또는 다른 목적으로 검색 문자열을 입력하는 검색 질의 입력 상자(404)를 포함하고 있는 것으로 도시된다. 도 4a에는 도시되지 않았지만, 다른 검색 상자들을 포함할 수도 있다. 예를 들어, 몇몇 실시예에서, 태스크들(114)을 인라인으로 필터링하는 검색 상자가 제공된다. 또한 필터링은 태스크들(114)에 관한 위치, 그룹, 제목, 또는 마감일에 기반하는 것은 물론, 태스크들(114)의 다른 양태들에도 기반하여 태스크들(114)에 실행될 수 있다.
앞서 언급한 바와 같이, 화면 디스플레이(400A)는 사용자 혹은 다른 엔티티에게 태스크들(144)을 프리젠팅하도록 구성된다. 태스크들(114)은 태스크 엔진(102)의 API(122)를 통해 다른 엔티티들에게 전달되기 때문에, 도 4a-4e에서 도시된 정보는 정보의 렌더링이 있든 없든 많은 장치들 또는 엔티티들에게로 전달될 수 있음을 이해할 필요가 있다. 이처럼, 화면 디스플레이(400A)는 또한 태스크들(114)을 애그리게이팅하고 프리젠팅하기 위해 본원에 개시된 개념 및 기술들의 다양한 양태들의 예시이다.
화면 디스플레이(400A)는 태스크 목록(406)을 포함한다. 태스크 목록(406)은 사용자나 혹은 그 사용자가 연관된 업무에 관한 태스크들(408A-D)(이하에서 일반적으로 및/또는 전체적으로 "태스크들(408)"이라고 함)의 목록을 포함한다. 태스크 목록(406)에 프리젠팅된 태스크들(408)은 도 1-3과 관련하여 앞서 설명된 태스크들(114)에 대응될 수 있음을 알 수 있다. 몇몇 실시예에서, 태스크들(408)이 다양한 주제(headings)(410A-C) 아래 분류된 것으로 태스크 목록(406)에 디스플레이된다. 도 4a에 도시된 바와 같이, 태스크들에 관련된 프로젝트에 기반하여, 태스크들에 관련된 맞춤 그룹(custom group)에 기반하여, 및/또는 태스크들에 관련된 다른 그룹 분류(groupings) 또는 카테고리에 기반하여 태스크들을 그룹화하기 위해 주제 아래에 다른 계층을 포함할 수 있다. 이러한 계층이 "위치(location)" 주제(410C)로서 도 4a에 도시된다. 이와 같은 실시예는 예시적인 것으로, 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다는 점을 이해할 필요가 있다.
도시된 실시예에서, 주제(410)는 사용자 혹은 다른 엔티티에 의해 플래그 표시된 하나 이상의 태스크(408)가 디스플레이될 수 있는 "중요 태스크들(Important Tasks)" 주제(410A)와 기한이 지났거나 마감일이 다가오는 태스크들이 디스플레이될 수 있는 "오버듀 및 업커밍 태스크들(Overdue & Upcoming Tasks)" 주제(410B)를 포함한다. 도 4a에 도시된 바와 같이, 반드시 그런 것은 아니지만, 태스크들(408)이 하나 이상의 주제(410) 아래에 나타날 수 있다. 추가 및/또는 대안적인 주제(410)를 고려할 수 있으므로, 도시된 실시예는 예시적인 것으로, 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다는 점을 이해할 필요가 있다.
화면 디스플레이(400A)에 도시된 태스크들(408)은 태스크들(408)을 인라인으로 편집하는 기능과 함께 제공될 수 있다. 따라서, 사용자 또는 다른 엔티티는 화면 디스플레이(400A)에 도시된 태스크들과 인터랙션할 수 있고, 디스플레이된 태스크(408)에 적용된 변경이 태스크 엔진(102)에 의해 탐지되어 관련 태스크들(114)에 기록될 수 있다. 전술한 바와 같이, 화면 디스플레이(400A)에 관해 설명된 기능을 통해 태스크들(408)에 적용된 변경들이 캐시(116)에 저장된 태스크들(114) 및/또는 태스크 시스템들(112)에 의해 호스팅되는 태스크들(114)에 기록될 수 있다.
프리젠테이션 모듈(110)은 화면 디스플레이(400A)에 도시된 다양한 다른 동작들도 지원한다. 예를 들어, 화면 디스플레이(400A)는 UI 컨트롤(412)을 포함할 수 있고, 그 선택으로 사용자나 다른 엔티티가 새로운 태스크(114)를 생성할 수 있다. UI 컨트롤(412)의 선택으로 프리젠테이션 모듈(110)은, 필요하다면, 새로운 태스크를 입력하기 위한 입력 화면이나 또는 인라인 서식(in-line form)을 프리젠팅할 수 있다. 또한 화면 디스플레이(400A)는 UI 컨트롤(414)을 포함할 수 있고, 이를 선택함으로써 태스크 애그리게이터(108)는 태스크(408B)가 표현하는 태스크를 태스크(408B)와 관련된 그룹의 다른 멤버들에 이동시키거나 복사하게 된다. 이처럼, 필요하다면, 그룹의 다른 멤버들과 태스크들(114)를 공유할 수 있다. 이들 실시예는 예시적인 것으로, 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다는 점을 이해할 필요가 있다.
몇몇 실시예에서, 화면 디스플레이(400A)는 타임라인(416)도 포함한다. 타임라인(416)은 사용자 또는 다른 엔티티에게 태스크들(114)의 시각적인 표현을 프리젠팅하는 데에 사용될 수 있다. 몇몇 실시예에 따르면, 타임라인(416)은 사용자나 또는 소프트웨어 세팅에 의해 설정되거나 조절될 수 있는 슬라이딩 시간 윈도우(sliding time window)를 사용하여 프리젠팅된다. 몇몇 실시예에서, 타임라인(416)에 디스플레이된 태스크들(114)은 태스크들(114)이 나오는 위치에 기반하여, 프로젝트나 기타 그룹화에 기반하여, 태스크들(114)에 관련된 중요 플래그 또는 마감일에 기반하여, 및/또는 다른 고려 사항들에 기반하여, 색(color) 코딩될 수 있다. 도시된 실시예의 슬라이딩 시간 윈도우는 과거 일주일과 미래 이주일을 포함한다. 이렇게 삼주일의 시간 윈도우 내의 마감일들이 타임라인(416)에 표시되어 사용자들이 기한이 지난 것과 다가오는 날짜들을 볼 수 있다. 타임라인(416)은, 반드시 할 필요는 없지만, "오버듀 및 업커밍 태스크들" 주제(410B) 아래 열거된 태스크들(408)을 디스플레이할 수 있음을 이해할 것이다. 또한, 몇몇 실시예에서 사용자들은 타임라인(416)에 태스크들(408)을 선택적으로 추가할 수 있다. 예를 들어, 도시된 실시예에서 사용자들은 태스크(408D) 옆에 도시된 UI 컨트롤(418)과 같은 UI 컨트롤을 선택함으로써 타임라인(416)에 태스크들(408)을 추가한다. 전술한 바와 같이, 태스크들(114)을 필터링할 수 있다. 타임라인(416)에 표시된 태스크들(114)을 포함하는, 그러나 이에 제한되지는 않는, 임의의 또는 전체 태스크들(114)을 필터링할 수 있음을 이해할 필요가 있다. 이와 같은 실시예는 예시적인 것으로, 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다는 점을 이해할 필요가 있다.
도 4a에 관해 본원에서 설명된 다양한 UI 컨트롤들은 사용자가 이용하는 입력 및/또는 디스플레이 장치에 따라, 다양한 움직임, 입력 장치, 및/또는 제스처를 사용하여 인터랙션할 수 있음을 이해할 필요가 있다. 몇몇 실시예에 따르면, 예를 들어, 사용자가 UI 컨트롤들 중 어느 하나 위에 마우스 포인터나 기타 입력 장치를 호버링한다거나, 마우스 또는 기타 입력 장치로 UI 컨트롤들 중 어느 하나를 또는 그 근처를 클릭한다거나, 한 개 이상의 손가락, 스타일러스, 및/또는 다른 구조나 장치들로 디스플레이된 UI 컨트롤 또는 그 근처에서 디스플레이 또는 화면을 터치한다거나, 음성 명령을 입력한다거나, 하나 이상의 키 누르기 또는 기타 입력을 통해 명령어를 입력한다거나, 이들의 조합 등으로 UI 컨트롤을 선택할 수 있다. 본원에 개시된 개념 및 기술은 많은 입력 장치들 및/또는 컨트롤들을 지원하는 다양한 장치들과 함께 사용될 수 있으므로, 상기의 명령어 목록은 예시적인 것으로 보아야 하며, 입력 유형 및/또는 태스크들(114)을 나타내기 위해 및/또는 액세스하기 위해 사용할 수 있는 장치들을 어떤 식으로든 제한하지 않는 것으로 보아야 한다.
이제 도 4b로 가서, 다른 실시예에서 태스크들(114)을 프리젠팅하는 UI의 양태들을 도시하는 UI 다이어그램이 설명될 것이다. 도 4b에 도시된 UI는 도 4a에 도시된 태스크들(408) 중 어느 하나의 선택을 수신하면, 반드시 그런 것은 아니지만, 태스크 엔진(102)에 의해 생성될 수 있다. 따라서, 화면 디스플레이(400A)에서 태스크(408)를 선택함으로써 태스크 엔진(102)은 선택된 태스크(408)에 관련된 추가 세부 사항을 프리젠팅할 수 있다. 도 4b에 도시된 UI 다이어그램은 고려된 하나의 실시예의 예시이며, 따라서 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다는 점을 이해할 필요가 있다.
화면 디스플레이(400B)는 태스크 윈도우(420)를 포함한다. 태스크 윈도우(420)는 선택된 태스크(408)에 관련된 추가 세부 사항을 디스플레이하도록 도시된다. 도 4b에 도시된 바와 같이, 태스크 윈도우(420)는 태스크 타일, 생성일, 완료일 또는 기한, 완료 상태, 태스크(114)를 호스팅하는 태스크 시스템에 관련된 위치, 및 태스크가 관련된 프로젝트나 팀과 같은 기타 정보, 그 프로젝트나 팀에 관한 정보, 및/또는 태스크(114)에 관한 기타 정보를 포함한다. 몇몇 실시예에서, 컨텍스트 정보의 일부 또는 모든 요소들이 인터랙티브할 수 있거나 그 어떤 요소도 인터랙티브하지 않을 수 있으며, 예를 들어, 이는 사용자들이 프로젝트 또는 팀 사이트들을 탐색하고, 그 사이트들에 정보 상태를 포스팅하며, 및/또는 그 정보에 관한 다른 행동을 취하게 할 수 있다. 이와 같은 실시예는 예시적인 것으로, 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다는 점을 이해할 필요가 있다.
이제 도 4c로 가서, 다른 실시예에서 태스크들(114)을 보여주는 UI의 양태들을 도시하는 UI 다이어그램이 설명될 것이다. 도 4c에 도시된 UI는, 반드시 그런 것은 아니지만, 도 3에 대해서 도시되고 설명된 방법(300)의 동작(304)에서 태스크 엔진(102)에 의해 생성될 수 있다. 몇몇 실시예에서, 도 4c에 도시된 실시예가 태스크들(114)을 프리젠팅하도록 태스크 엔진(102)에 의해 제공되는 기본 뷰가 된다. 도 4c는 식별된 임의의 태스크들을 디스플레이하는 액티브 뷰(430)로 태스크들(114)을 프리젠팅하기 위해 태스크 엔진(102)에 의해 생성된 화면 디스플레이(400C)를 도시한다. 액티브 뷰(430)로 도시된 태스크들(114)은, 반드시 그런 것은 아니지만, 각각의 태스크(114)의 중요도, 사용자가 태스크들(114)에 플래그를 표시했는지 여부, 각각의 완료 상태, 및/또는 마감일과 상관 없이, 식별된 임의의 태스크들(114)을 포함할 수 있다. 도 4c에 도시된 UI 다이어그램은 고려된 하나의 실시예의 예시이며, 따라서 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다는 점을 이해할 필요가 있다.
이제 도 4d로 가면, 다른 실시예에서 태스크들(114)을 보여주는 UI의 양태들을 도시하는 UI 다이어그램이 설명될 것이다. 도 4d에 도시된 UI는, 반드시 그런 것은 아니지만, 도 3에 대해서 도시되고 설명된 방법(300)의 동작(304)에서 태스크 엔진(102)에 의해 생성될 수 있다. 필요하다면, 도 4a-4c 및/또는 4e에 도시된 임의의 화면 디스플레이들(400)에 도 4d에 도시된 화면 디스플레이(400D)의 양태들의 일부 또는 전부가 포함되거나 그 어떤 양태도 포함되지 않을 수 있다. 화면 디스플레이(400D)는 태스크 엔진(102)에 의해 최근에 식별된 태스크들(114)을 디스플레이하는 새로운 태스크 뷰(440)를 포함한다. 도 4d의 목적상, "최근 태스크들(recent tasks)"은 이전 렌더링 이후 및/또는 최신 캐시 리프레시 작업 중에 식별된 태스크들(114)을 포함한다.
태스크들(114)에 관련된 마감일에 따라 일부 태스크들(114)이 타임라인(416)에 디스플레이되거나 디스플레이되지 않을 수 있음을 이해할 수 있다. 예를 들어, 도 4d에서, 태스크(408E)는 타임라인(416)에 디스플레이되는 타임라인 밖의 마감일을 갖고 있으므로 타임라인(416)에 디스플레이된 것으로 도시되지 않는다. 도 4d에 도시된 UI 다이어그램은 고려된 하나의 실시예의 예시이며, 따라서 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다는 점을 이해할 필요가 있다.
또한 화면 디스플레이(400D)는 "상태 보고 뷰(status reporting view)" 및/또는 "타임시트 뷰(timesheet view)"에 액세스하는 UI 컨트롤(442)을 디스플레이한다. UI 컨트롤(442)의 선택으로 태스크 엔진(102)은 프로젝트 서버 사이트의 태스크들(114)의 모음을 로딩하는 프로젝트 서버 상태 확인 기능을 호스팅하는 하나 이상의 다이얼로그를 시작할 수 있다. 또한 UI 컨트롤(442)은 도시된 위치에 프리젠팅되는 대신에, 또는 이에 더해서, 뷰 선택기(444)에서 옵션으로서 프리젠팅될 수 있다. 따라서, 선택된 제공자에 기반하여 UI 다이어그램의 확장 옵션으로서 "상태 보고 뷰"가 프리젠팅될 수 있다. 이처럼, 도시된 실시예는 예시적인 것으로, 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다는 점을 이해할 필요가 있다.
도 4e로 가면, 다른 실시예에서 태스크들(114)을 보여주는 UI의 양태들을 도시하는 UI 다이어그램이 설명될 것이다. 필요하다면, 4a-4e에 도시된 임의의 화면 디스플레이들(400)에 도 4e에 도시된 화면 디스플레이(400E)의 양태들의 일부 또는 전부가 포함되거나 그 어떤 양태도 포함되지 않을 수 있다. 화면 디스플레이(400E)는 완료되었다고 사용자 또는 다른 엔티티에 의해 표시된 태스크들(114)을 디스플레이하는 완료된 태스크 뷰(450)를 포함한다. 고려된 하나의 실시예에서, 다른 뷰들에서 완료되었다고 표시된 태스크들(114)이 애니메이션화되어 사용자들에게 피드백을 제공하거나 및/또는 태스크들(114)의 완료에 대한 만족을 사용자에게 제공할 수 있다. 취소선이 사용되는, 이러한 피드백의 하나의 고려된 예시가 도 4f에 도시된다. 다른 실시예에서, 태스크들(114)의 완료를 도시하기 위해 완료된 태스크들(114)이 삭제되거나 사라진다. 도 4e-4f에 도시된 UI 다이어그램들은 예시적이므로, 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다는 점을 이해할 필요가 있다.
도 4a-4e와 관련하여 상기에서 도시되고 설명된 화면 디스플레이들(400)에서, 태스크들(114)은 사용자들이 다양한 인라인 편집 프로세스를 완료할 수 있게 해주는 UI 컨트롤들로써 디스플레이될 수 있다. 예시적인 편집 프로세스는 제목, 마감일, 중요 플래그, 완료 상태, 또는 태스크(114)와 관련된 기타 정보를 인라인으로 편집하는 기능, 태스크(114)와 관련된 낱낱의 세부 사항을 보고 및/또는 편집하기 위해 태스크(114)의 태스크 서식(form)을 시작하는 기능, 제공자 또는 태스크 시스템(112)에 좌우될 수 있는, 태스크(114)와 관련된 프로젝트, 사이트, 시스템, 및/또는 위치를 나타내는 그룹 분류(groupings), 태스크(114)에 관한 메타데이터를 디스플레이하는 시작점(launch point) - 여기서 이 메타데이터는 사용자들이 관련 태스크들(114), 태스크(114)와 관련된 프로젝트, 관련 문서들, 및/또는 기타 정보와 같이 태스크(114)와 관련된 작업을 완료하려고 할 때 유용할 수 있는 컨텍스트 정보를 포함함 -, 특정 섹션이나 그룹 또는 새로운 섹션이나 그룹에서 새로운 태스크를 생성하는 기능, 태스크들(114)을 재정리하기 위해 그룹들 사이에서 태스크들(114)을 드래그 앤 드랍(drag and drop)하는 기능, 및/또는 기타 기능을 포함하지만, 이에 제한되지는 않는다. 예를 들어, 도 4a-4f에는 도시되지 않지만, 본원에 기술된 개념 및 기술들의 몇몇 실시예는 "업커밍(Upcoming)", "액티브(Active)", "새로운(New)", 및 "완료된(Completed)" 섹션들 및/또는 뷰들 아래에 위치 그룹 분류(location groupings)를 포함한다. 화면 디스플레이들(400)에 다른 기능이 포함될 수도 있으므로, 이들 실시예는 예시적이며, 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다는 점을 이해할 필요가 있다.
상기의 설명은 태스크 시스템들(112)로부터 태스크들(114)을 애그리게이팅하고 다양한 사용자 인터페이스(118)에 태스크들(114)을 프리젠팅하는 것에 관한 것이지만, 본원에 설명된 기능이 사용자 인터페이스(118)에서의 태스크들(114)의 프리젠팅 없이도 태스크들(114)을 애그리게이팅하고 정리하는 데 사용될 수 있음을 이해할 필요가 있다. 또한, 본원에서 설명된 UI들(118)은 예시적인 것으로, 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다. 본원에 개시된 개념 및 기술들은 태스크 시스템들(112)의 필요와 요구에 기반하여 UI들(118)의 확장을 지원한다. 따라서, 태스크 시스템들(112)과 관련하여 승인된 엔티티들이 원하는 정보를 프리젠팅하거나 금지하도록 UI들(118)을 조정할 수 있다.
전술한 바와 같이, 태스크들(114)은 다양한 UI들(118)의 일부 또는 전부에서 "중요한" 것으로 표시되거나 어떤 것도 "중요한" 것으로 표시되지 않을 수 있다. 몇몇 실시예에 따르면, 태스크(114)가 중요하다고 표시된 시간이 추적 및/또는 로깅될(logged) 수 있다. 반드시 그런 것은 아니지만, 이벤트 또는 태스크(114)가 중요하다고 표시된 후에 설정 또는 특정된 기간이 지난 후에 만료되도록 중요 플래그가 설정될 수 있다. 이처럼, 중요하거나 플래그 표시된 항목들을 추적하는 목록들을 조절하거나 관리할 수 있다. 이와 같은 실시예는 예시적이며, 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다는 점을 이해할 필요가 있다.
도 5는 태스크들을 애그리게이팅 및 프리젠팅하도록 본원에 설명된 소프트웨어 컴포넌트들을 실행할 수 있는 장치에 대한 예시적인 컴퓨터 아키텍처(500)를 도시한다. 따라서, 도 5에 도시된 컴퓨터 아키텍처(500)는 서버 컴퓨터, 이동 전화, PDA, 스마트폰, 데스크탑 컴퓨터, 넷북 컴퓨터, 태블릿 컴퓨터, 및/또는 랩탑 컴퓨터용 아키텍처를 예시한다. 컴퓨터 아키텍처(500)는 본원에 제시된 소프트웨어 컴포넌트들의 임의의 양태를 실행하는데 이용될 수 있다.
도 5에 도시된 컴퓨터 아키텍처(500)는 중앙 처리 장치(502)("CPU")와, 랜덤 액세스 메모리(506)("RAM") 및 읽기-전용 메모리("ROM")(508)를 포함하는 시스템 메모리(504)와, 메모리(504)를 CPU(502)에 연결하는 시스템 버스(510)를 포함한다. 부팅 중과 같이, 컴퓨터 아키텍처(500) 내의 요소들 사이의 정보 전달을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템이 ROM(508)에 저장된다. 컴퓨터 아키텍처(500)는 운영 체제(106), 태스크 애그리게이터(108), 프리젠테이션 모듈(110), 및/또는 기타 애플리케이션 프로그램들을 저장하기 위한 대용량 저장 장치(512)를 더 포함한다. 또한 대용량 저장 장치(512)는, 필요하다면, 태스크들(114) 및/또는 다른 데이터를 저장하도록 구성될 수 있다. 따라서, 도 5에 캐시(116)가 도시되지는 않았지만, 대용량 저장 장치(512)가 도 1과 관련하여 전술한 캐시(116)와 관련된 기능을 제공할 수 있음을 이해할 수 있다.
대용량 저장 장치(512)는 버스(510)에 연결된 대용량 저장 컨트롤러(도시되지 않음)를 통해 CPU(502)에 연결된다. 대용량 저장 장치(512) 및 연관된 컴퓨터 판독 가능 매체는 컴퓨터 아키텍처(500)에 대한 비-휘발성 스토리지를 제공한다. 본원에 포함된 컴퓨터 판독 가능 매체의 설명은 하드 디스크 또는 CD-ROM 드라이브와 같은 대용량 저장 장치를 언급하지만, 컴퓨터 판독 가능 매체는 컴퓨터 아키텍처(500)에 의해 액세스될 수 있는 이용 가능한 임의의 컴퓨터 저장 매체 또는 통신 매체일 수 있음을 당업자라면 이해할 필요가 있다.
통신 매체는 반송파 또는 다른 전송 메커니즘과 같은 변조 데이터 신호 내의 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 포함하고, 임의의 전달 매체를 포함한다. "변조 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하도록 하는 방식으로 변경되거나 설정되는 그 특성들 중 하나 이상을 갖는 신호를 의미한다. 예를 들면, 그러나 제한 없이, 통신 매체는 유선 네트워크 또는 직접-배선 연결과 같은 유선 매체와, 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 또한 상기의 임의의 조합이 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
예를 들면, 그러나 제한 없이, 컴퓨터 저장 매체는, 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터와 같이 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비-휘발성, 이동식 및 비이동식 매체를 포함할 수 있다. 예를 들어, 컴퓨터 매체는 RAM, ROM, EPROM, EEPROM, 플래시 메모리 또는 다른 고체 상태 메모리 기술(solid state memory technology), CD-ROM, DVD(digital versatile disk), HD-DVD, 블루레이, 또는 다른 광학 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 스토리지, 또는 다른 자기 저장 장치, 또는 원하는 정보의 저장에 사용될 수 있고 컴퓨터 아키텍처(500)가 액세스할 수 있는 그 밖의 다른 매체를 포함하지만, 이에 제한되지 않는다. 특허청구범위에서, "컴퓨터 저장 매체"라는 용어와 그 변형예는 파동, 신호, 및/또는 다른 일시적 및/또는 무형의 통신 매체 자체는 포함하지 않는다.
다양한 실시예에 따르면, 컴퓨터 아키텍처(500)는 네트워크(104)와 같은 네트워크를 통해 원격 컴퓨터에 대한 논리적 연결을 사용하여 네트워크 환경에서 동작할 수 있다. 컴퓨터 아키텍처(500)는 버스(510)에 연결된 네트워크 인터페이스 유닛(516)을 통해 네트워크(104)에 연결될 수 있다. 또한 네트워크 인터페이스 유닛(516)은 예를 들어, 태스크 시스템들(112), 클라이언트 장치(120), 및/또는 기타 시스템이나 장치 등의 원격 컴퓨터 시스템과 다른 종류의 네트워크를 연결하는 데에 이용될 수 있음을 이해할 필요가 있다. 컴퓨터 아키텍처(500)는 키보드, 마우스, 또는 전자 스타일러스(도 5에 도시되지 않음)를 포함한, 다수의 다른 장치로부터 입력을 수신 및 처리하는 입/출력 컨트롤러(518)도 포함할 수 있다. 마찬가지로, 입/출력 컨트롤러(518)는 디스플레이 화면, 프린터, 또는 다른 종류의 출력 장치(역시 도 5에 도시되지 않음)에 출력을 제공할 수 있다.
본원에 설명되는 소프트웨어 컴포넌트는, CPU(502)에 로딩되어 실행될 때, 범용 컴퓨팅 시스템으로부터 본원에서 제공되는 기능을 용이하게 하도록 맞춤화된 전용 컴퓨팅 시스템으로 CPU(502) 및 전체 컴퓨터 아키텍처(500)를 변환시킨다. CPU(502)는 임의의 개수의 트랜지스터 또는 다른 개별 회로 요소들로부터 구성될 수 있고, 이들은 개별적으로 또는 집합적으로 임의의 개수의 상태를 가정할 수 있다. 더욱 구체적으로, CPU(502)는 본원에 개시된 소프트웨어 모듈 내에 포함된 실행 가능 명령어에 응답하여, 유한-상태(finite-state) 기계로서 동작할 수 있다. 이러한 컴퓨터-실행 가능 명령어는 CPU(502)가 상태들 간에서 어떻게 전환하는지를 특정함으로써 CPU(502)를 변환시킬 수 있고, 이로 인해 CPU(502)를 구성하는 트랜지스터 또는 다른 개별 하드웨어 요소들을 변환할 수 있다.
본원에서 제시된 소프트웨어 모듈들의 인코딩으로 본원에서 제시된 컴퓨터 판독 가능 매체의 물리적 구조 또한 변환시킬 수 있다. 물리적 구조의 구체적인 변환은 본 설명의 서로 다른 구현예에서, 다양한 팩터들에 달려있을 수 있다. 이러한 팩터들의 예는 컴퓨터 판독 가능 매체를 구현하는 데 사용되는 기술, 컴퓨터 판독 가능 매체가 주-스토리지 또는 보조 스토리지로 특성화되는지 여부 등을 포함할 수 있지만, 이에 제한되지 않는다. 예를 들어, 컴퓨터 판독 가능 매체가 반도체-기반 메모리로 구현될 경우, 본원에 개시된 소프트웨어는 반도체 메모리의 물리적 상태를 변환시킴으로써 컴퓨터 판독 가능 매체 상에 인코딩될 수 있다. 예를 들어, 소프트웨어는 반도체 메모리를 구성하는 트랜지스터, 캐패시터, 또는 다른 개별 회로 요소들의 물리적 상태를 변환시킬 수 있다. 또한 소프트웨어는 데이터를 저장하기 위해 이러한 컴포넌트들의 물리적 상태를 변환시킬 수 있다.
다른 예로서, 본원에 개시된 컴퓨터 판독 가능 매체는 자기 또는 광학 기술을 이용하여 구현될 수 있다. 이러한 구현에서, 본원에서 제시된 소프트웨어는, 소프트웨어가 내부에 인코딩될 때, 자기 또는 광학 매체의 물리적 상태를 변환시킬 수 있다. 이러한 변환은 주어진 자기 매체 내의 특정 위치의 자기적 특성 변경을 포함할 수 있다. 또한 이러한 변환은, 해당 위치의 광학적 특성을 변경시키도록, 주어진 광학 매체 내의 특정 위치의 물리적 특징이나 특성의 변경을 포함할 수 있다. 본 설명의 사상 및 범위로부터 벗어나지 않으면서 물리적 매체의 다른 변환도 가능하며, 앞서의 예시들은 단지 이러한 논의를 촉진시키기 위해서 제공되었다.
상기에서 살펴볼 때, 본원에서 제시된 소프트웨어 컴포넌트들을 저장 및 실행시키기 위해, 많은 종류의 물리적 변환이 컴퓨터 아키텍처(500)에서 이루어질 수 있음을 이해할 필요가 있다. 컴퓨터 아키텍처(500)가 당업자에게 알려져 있는 핸드-헬드 컴퓨터, 임베디드 컴퓨터 시스템, PDA, 및 다른 종류의 컴퓨팅 장치를 포함하는, 다른 종류의 컴퓨팅 장치를 포함할 수 있다는 점도 이해할 필요가 있다. 컴퓨터 아키텍처(500)는 도 5에 도시되는 모든 컴포넌트들을 포함하지 않을 수 있거나, 도 5에 명시적으로 도시되지 않은 다른 컴포넌트들을 포함할 수 있으며, 또는 도 5에 도시되는 것과는 완전히 다른 구조를 이용할 수 있다는 점도 고려된다.
도 6은 태스크들을 애그리게이팅하고 프리젠팅하기 위해 본원에 설명된 소프트웨어 컴포넌트들을 실행할 수 있는 예시적인 분산 컴퓨팅 환경(600)을 도시한다. 따라서, 도 6에 도시된 분산 컴퓨팅 환경(600)은 태스크 엔진(102)에 관해 본원에서 설명된 기능을 제공하는 데 사용될 수 있다. 따라서, 분산 컴퓨팅 환경(600)은 본원에 제시된 소프트웨어 컴포넌트들의 임의의 양태를 실행하는 데 이용될 수 있다.
다양한 구현에 따르면, 분산 컴퓨팅 환경(600)은 네트워크(604) 상에서 동작하는, 네트워크(604)와 통신하여 동작하는, 또는 네트워크(604)의 일부로서 동작하는 컴퓨팅 환경(602)을 포함한다. 네트워크(604)는 다양한 액세스 네트워크들도 포함할 수 있다. 다양한 구현에 따르면, 네트워크(604)의 기능이 도 1 및 5에 도시된 네트워크(104)에 의해 제공된다. 하나 이상의 클라이언트 장치(606A-606N)(이하에서 전체적으로 및/또는 일반적으로 "클라이언트들(606)"이라 함)는 네트워크(604) 및/또는 다른 연결(도 6에 도시되지 않음)을 통해 컴퓨팅 환경(602)과 통신할 수 있다. 도시된 실시예에서, 클라이언트들(606)은 랩탑 컴퓨터, 데스크탑 컴퓨터, 또는 기타 컴퓨팅 장치와 같은 컴퓨팅 장치(606A), 슬레이트 또는 태블릿 컴퓨팅 장치("태블릿 컴퓨팅 장치")(606B), 이동 전화, 스마트폰, 또는 기타 이동 컴퓨팅 장치와 같은 이동 컴퓨팅 장치(606C), 서버 컴퓨터(606D), 및/또는 기타 장치들(606N)을 포함한다. 많은 클라이언트들(606)이 컴퓨팅 환경(602)과 통신할 수 있음을 이해할 필요가 있다. 클라이언트들(606)의 두 개의 예시적인 컴퓨팅 아키텍처가 도 5 및 7에서 본원에 도시되고 설명된다. 도시된 클라이언트들(606) 및 본원에 도시되고 설명된 컴퓨팅 아키텍처들은 예시적인 것으로 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다는 점을 이해할 필요가 있다.
도시된 실시예에서, 컴퓨팅 환경(602)은 애플리케이션 서버들(608), 데이터 스토리지(610), 및 하나 이상의 네트워크 인터페이스(612)를 포함한다. 다양한 구현에 따르면, 네트워크의 일부로서 실행되거나, 또는 네트워크와 통신하여 실행되는 하나 이상의 서버 컴퓨터에 의해 애플리케이션 서버들(608)의 기능이 제공될 수 있다. 애플리케이션 서버들(608)은 다양한 서비스, 가상 머신, 포털, 및/또는 기타 리소스들을 호스팅할 수 있다. 도시된 실시예에서, 애플리케이션 서버들(608)은 애플리케이션들을 호스팅하거나 기타 기능 등을 위해 하나 이상의 가상 머신(614)을 호스팅한다. 다양한 구현에 따르면, 가상 머신(614)은 태스크들을 애그리게이팅하고 프리젠팅하도록 본원에 설명된 기능을 제공하기 위해 하나 이상의 애플리케이션 및/또는 소프트웨어 모듈을 호스팅한다. 이와 같은 실시예는 예시적인 것으로, 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다는 점을 이해할 필요가 있다. 애플리케이션 서버들(608)은 하나 이상의 웹 포털, 링크 페이지, 웹 사이트, 및/또는 기타 정보("웹 포털")(616)를 호스팅하거나 또는 이에 대한 액세스를 제공할 수 있다.
다양한 구현에 따르면, 애플리케이션 서버들(608)은 하나 이상의 메일박스 서비스(618) 및 하나 이상의 메시징 서비스(620) 또한 포함한다. 메일박스 서비스(618)는 전자 메일("이메일") 서비스를 포함할 수 있다. 메일박스 서비스(618)는 캘린더 서비스, 연락처 관리 서비스, 통합(collaboration) 서비스, 및/또는 기타 서비스를 포함하는, 그러나 이에 제한되지는 않는, 다양한 개인 정보 관리("PIM") 서비스를 포함할 수 있다. 메시징 서비스(620)는 인스턴트 메시징 서비스, 챗 서비스, 포럼 서비스, 및/또는 기타 통신 서비스를 포함할 수 있으며, 그러나 이에 제한되지는 않는다.
또한 애플리케이션 서버들(608)은 하나 이상의 소셜 네트워킹 서비스(622)를 포함할 수 있다. 소셜 네트워킹 서비스(622)는 상태 업데이트, 인스턴트 메시지, 링크, 사진, 비디오, 및/또는 기타 정보를 공유하거나 포스팅하는 서비스, 기사, 제품, 블로그, 또는 기타 리소스에 댓글을 달거나 관심을 보이는 서비스, 및/또는 기타 서비스를 포함하는, 그러나 이에 제한되지는 않는, 다양한 소셜 네트워크 서비스를 포함할 수 있다. 몇몇 실시예에서, 소셜 네트워킹 서비스(622)는 FACEBOOK 소셜 네트워킹 서비스, LINKEDIN 전문가 네트워킹 서비스, MYSPACE 소셜 네트워킹 서비스, FOURSQUARE 지리적 네트워킹 서비스, YAMMER 직장 동료 네트워킹 서비스 등에 의해서 제공되거나 또는 이들을 포함한다. 다른 실시예에서, 소셜 네트워킹 서비스(622)는 다른 서비스, 사이트, 및/또는 소셜 네트워킹 공급자로서 알려져 있거나 혹은 명시적으로 알려져 있지는 않은 공급자에 의해 제공된다. 예를 들어, 일부 웹 사이트들에서 사용자들은 공개된 기사 읽기, 상품 또는 서비스에 댓글 달기, 발행, 콜라보레이션, 게임 등과 같은 다양한 활동 및/또는 컨텍스트 중에 이메일, 채팅 서비스, 및/또는 기타 수단을 통해 서로 인터랙션할 수 있다. 이와 같은 서비스의 예시로 워싱턴주 레드몬드에 있는 마이크로소프트 코포레이션의 WINDOWS LIVE 서비스 및 XBOX LIVE 서비스를 포함하지만, 이에 제한되지는 않는다. 다른 서비스들도 가능하며 고려된다.
또한 소셜 네트워킹 서비스(622)는 댓글 달기(commenting), 블로깅(blogging), 및/또는 마이크로블로깅(microblogging) 서비스를 포함할 수 있다. 이러한 서비스의 예시로 YELP 댓글 달기 서비스, KUDZU 리뷰 서비스, OFFICETALK 기업 마이크로블로깅 서비스, TWITTER 메시징 서비스, GOOGLE BUZZ 서비스, 및/또는 기타 서비스들을 포함하지만, 이에 제한되지는 않는다. 상기의 서비스 목록들은 완전한 것이 아니며, 간략하게 하기 위해 많은 추가 및/또는 대안적인 소셜 네트워킹 서비스(622)는 본원에 언급되지 않았다는 점을 이해할 필요가 있다. 이처럼, 상기의 실시예는 예시적인 것으로, 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다는 점을 이해할 필요가 있다.
도 6에 도시된 바와 같이, 애플리케이션 서버들(608)은 다른 서비스, 애플리케이션, 포털, 및/또는 기타 리소스("기타 리소스들")(624) 또한 호스팅할 수 있다. 기타 리소스들(624)은 태스크 시스템들(112)을 포함할 수 있지만, 이에 제한되지는 않는다. 따라서, 컴퓨팅 환경(602)은 다양한 메일박스, 메시징, 소셜 네트워킹, 및/또는 기타 서비스 또는 리소스를 가지고 태스크들을 애그리게이팅하고 프리젠팅하기 위해 본원에 개시되고 제공된 개념 및 기술들의 통합을 제공할 수 있음을 이해할 수 있다. 예를 들어, 소셜 네트워킹 또는 메시징 태스크, 다양한 개인 정보 관리 소프트웨어와 관련된 태스크들 등을 애그리게이팅하고 프리젠팅하는 데 본원에 개시된 개념 및 기술들이 사용될 수 있다. 또한, 사용자들은 그들의 태스크들(114)에 관련된 정보를 소셜 네트워크와 공유하고, 태스크들(114)에 관련된 메시지를 생성하고, 및/또는 태스크들(114)에 관한 다른 행동을 취할 수 있다.
앞서 언급한 바와 같이, 컴퓨팅 환경(602)은 데이터 스토리지(610)를 포함할 수 있다. 다양한 구현에 따르면, 데이터 스토리지(610)의 기능은 네트워크(604) 상에서 동작하는, 또는 네트워크(604)와 통신하여 동작하는 하나 이상의 데이터베이스에 의해 제공된다. 데이터 스토리지(610)의 기능은 컴퓨팅 환경(602)에 대한 데이터를 호스팅하도록 구성된 하나 이상의 서버 컴퓨터에 의해 제공될 수도 있다. 데이터 스토리지(610)는 하나 이상의 실제 또는 가상 데이터 스토어(626A-626N)(이하에서 전체적으로 및/또는 일반적으로 "데이터 스토어들(626)"이라 함)를 포함, 호스팅, 또는 제공할 수 있다. 데이터 스토어(626)는 애플리케이션 서버들(608)에 의해 사용되거나 생성되는 데이터 및/또는 다른 데이터를 호스팅하도록 구성된다. 도 6에 도시되어 있지는 않지만, 필요하다면, 데이터 스토어들(626)은 캐시(116), 태스크들(114), 및 UI들(118)도 호스팅할 수 있다.
컴퓨팅 환경(602)은 네트워크 인터페이스들(612)과 통신하거나 네트워크 인터페이스들(612)에 의해 액세스될 수 있다. 네트워크 인터페이스들(612)은 클라이언트(606)들과 애플리케이션 서버(608)들을 포함하는, 그러나 이에 제한되지는 않는, 둘 이상의 컴퓨팅 장치들 사이의 통신을 지원하는 다양한 유형의 네트워크 하드웨어 및 소프트웨어를 포함할 수 있다. 다른 유형의 네트워크들 및/또는 컴퓨터 시스템들에 접속하는 데에 네트워크 인터페이스들(612)이 이용될 수도 있음을 이해할 필요가 있다.
본원에서 설명된 분산 컴퓨팅 환경(600)은 본원에 개시된 소프트웨어 컴포넌트들의 임의의 양태들을 실행하도록 구성될 수 있는 많은 가상 컴퓨팅 리소스 및/또는 기타 분산 컴퓨팅 기능으로 본원에 설명된 소프트웨어 요소들의 임의의 양태들을 제공할 수 있다. 본원에 개시된 개념 및 기술들의 다양한 구현에 따르면, 분산 컴퓨팅 환경(600)은 클라이언트들(606)에 대한 서비스로서 본원에 설명된 소프트웨어 기능을 제공한다. 클라이언트들(606)은 서버 컴퓨터, 웹 서버, 개인용 컴퓨터, 이동 컴퓨팅 장치, 스마트폰, 및/또는 기타 장치들을 포함하는, 그러나 이에 제한되지는 않는, 실제 또는 가상 머신들을 포함할 수 있음을 이해할 필요가 있다. 이와 같이, 본원에 개시된 개념 및 기술들의 다양한 실시예를 통해 분산 컴퓨팅 환경(600)에 액세스하도록 구성된 임의의 장치가 태스크들을 애그리게이팅하고 프리젠팅하도록 본원에 설명된 기능을 이용할 수 있게 된다.
이제 도 7에서, 태스크들을 애그리게이팅하고 프리젠팅하는, 본원에 설명된 다양한 소프트웨어 컴포넌트들을 실행할 수 있는 컴퓨팅 장치의 예시적인 컴퓨팅 장치 아키텍처(700)가 설명된다. 컴퓨팅 장치 아키텍처(700)는, 부분적으로는, 폼 팩터(form factor), 무선 연결, 및/또는 배터리 전원 동작에 따른 이동 컴퓨팅을 용이하게 하는 컴퓨팅 장치들에 적용될 수 있다. 몇몇 실시예에서, 컴퓨팅 장치들은 이동 전화, 태블릿 장치, 슬레이트 장치, 휴대 비디오 게임 장치 등을 포함하지만, 이에 제한되지는 않는다. 또한, 컴퓨팅 장치 아키텍처(700)는 도 6에 도시된 임의의 클라이언트들(606)에 적용될 수 있다. 나아가, 컴퓨팅 장치 아키텍처(700)의 양태들은, 도 5에 관해서 본원에서 설명한 바와 같이, 종래의 데스크탑 컴퓨터, 휴대 컴퓨터(예컨대, 랩탑, 노트북, 초소형 휴대용 컴퓨터(ultraportables), 및 넷북), 서버 컴퓨터, 및 기타 컴퓨터 시스템들에 적용될 수 있다. 예를 들어, 아래에서 본원에 개시된 싱글 터치 및 멀티 터치 양태들은 터치스크린이나, 또는 터치-가능한 트랙 패드 또는 터치-가능한 마우스와 같은 기타 터치-가능한 장치를 이용하는 데스크탑 컴퓨터에 적용될 수 있다.
도 7에 도시된 컴퓨팅 장치 아키텍처(700)는 프로세서(702), 메모리 컴포넌트들(704), 네트워크 연결 컴포넌트들(706), 센서 컴포넌트들(708), 입/출력 컴포넌트들(710), 및 전원 컴포넌트들(712)을 포함한다. 도시된 실시예에서, 프로세서(702)는 메모리 컴포넌트들(704), 네트워크 연결 컴포넌트들(706), 센서 컴포넌트들(708), 입/출력("I/O") 컴포넌트들(710), 및 전원 컴포넌트들(712)과 통신한다. 도 7에 도시된 개별 컴포넌트들 간의 연결이 도시되지는 않았지만, 장치 기능을 수행하기 위해 컴포넌트들은 인터랙션할 수 있다. 몇몇 실시예에서, 하나 이상의 버스(도시되지 않음)를 통해 통신하도록 컴포넌트들이 배열된다.
프로세서(702)는, 본원에 설명된 다양한 기능을 실행하기 위해 데이터를 처리하고, 하나 이상의 애플리케이션 프로그램의 컴퓨터-실행 가능 명령어를 실행하고, 컴퓨팅 장치 아키텍처(700)의 다른 컴포넌트들과 통신하도록 구성된 중앙 처리 장치("CPU")를 포함한다. 본원에 제시된 소프트웨어 컴포넌트들의 양태들, 특히, 적어도 부분적으로 터치-가능한 입력을 이용하는 양태들을 실행하는 데 프로세서(702)가 이용될 수 있다.
몇몇 실시예에서, 프로세서(702)는, 범용 과학 및 공학 컴퓨팅 애플리케이션은 물론, 고해상도 비디오(예컨대, 720P, 1080P 이상), 비디오 게임, 삼차원("3D") 모델링 애플리케이션 등과 같은 그래픽-집약적인 컴퓨팅 애플리케이션을 실행시킴으로써 수행되는 동작들을 포함하지만, 이에 제한되지는 않는, CPU에 의해 실행되는 동작들을 가속화하도록 구성된 그래픽 처리 장치("GPU")를 포함한다. 몇몇 실시예에서, 프로세서(702)는 별개의 GPU(도시되지 않음)와 통신하도록 구성된다. 어떤 경우든, CPU와 GPU는 보조처리 CPU/GPU 컴퓨팅 모델에 따라 구성될 수 있으며, 여기서 애플리케이션의 순차적인 부분은 CPU에서 실행되고 계산-집약적인 부분은 GPU에 의해 가속화된다.
몇몇 실시예에서, 프로세서(702)는 아래에서 본원에 설명되는 다른 컴포넌트들 중 하나 이상과 함께 시스템-온-칩("SoC")이 되거나, 또는 그 안에 포함된다. 예를 들어, SoC는 프로세서(702), GPU, 네트워크 연결 컴포넌트들(706) 중 하나 이상, 및 센서 컴포넌트들(708) 중 하나 이상을 포함할 수 있다. 몇몇 실시예에서, 프로세서(702)는, 부분적으로는, 패키지-온-패키지("PoP") 집적 회로 패키징 기법을 이용하여 제작된다. 또한, 프로세서(702)는 싱글 코어 또는 멀티-코어 프로세서일 수 있다.
프로세서(702)는 영국 캠브리지의 ARM 홀딩스의 라이센스에서 이용 가능한 ARM 아키텍처에 따라 제조될 수 있다. 대안적으로, 프로세서(702)는 캘리포니아주 마운틴뷰의 인텔 코포레이션 등에서 제공되는 바와 같이, x86 아키텍처에 따라 제조될 수 있다. 몇몇 실시예에서, 프로세서(702)는 캘리포니아주 샌디에고의 퀄컴에서 제공되는 SNAPDRAGON SoC, 캘리포니아주 산타 클라라의 엔비디아에서 제공되는 TEGRA SoC, 대한민국 서울의 삼성에서 제공되는 HUMMINGBIRD SoC, 텍사스주 달라스의 텍사스 인스트루먼트에서 제공되는 오픈 멀티미디어 애플리케이션 플랫폼("OMAP") SoC, 상기 SoC들의 임의의 커스텀 버전, 또는 전용 SoC이다.
메모리 컴포넌트들(704)은 랜덤 액세스 메모리("RAM")(714), 판독 전용 메모리("ROM")(716), 통합 스토리지 메모리(integrated storage memory)("통합 스토리지")(718), 및 이동식 스토리지 메모리("이동식 스토리지")(720)를 포함한다. 몇몇 실시예에서, RAM(714) 또는 그 일부, ROM(716) 또는 그 일부, 및/또는 RAM(714)과 ROM(716)의 조합이 프로세서(702)에 통합된다. 몇몇 실시예에서, ROM(716)은 통합 스토리지(718)나 이동식 스토리지(720)로부터 운영 체제 커널을 로딩하기 위해 펌웨어, 운영 체제나 그 일부(예컨대, 운영 체제 커널), 및/또는 부트로더(bootloader)를 저장하도록 구성된다.
통합 스토리지(718)는 고체 상태 메모리, 하드 디스크, 또는 고체 상태 메모리와 하드 디스크의 조합을 포함할 수 있다. 통합 스토리지(718)는 본원에 설명된 프로세서(702) 및 기타 컴포넌트들도 연결될 수 있는 논리 기판에 납땜되거나 연결될 수 있다. 이처럼, 통합 스토리지(718)는 컴퓨팅 장치에 통합된다. 통합 스토리지(718)는 운영 체제 또는 그 일부, 애플리케이션 프로그램, 데이터, 및 본원에 설명된 기타 소프트웨어 컴포넌트들을 저장하도록 구성된다.
이동식 스토리지(720)는 고체 상태 메모리, 하드 디스크, 또는 고체 상태 메모리와 하드 디스크의 조합을 포함할 수 있다. 몇몇 실시예에서, 통합 스토리지(718) 대신에 이동식 스토리지(720)가 제공된다. 다른 실시예에서, 선택적인 추가 스토리지로서 이동식 스토리지(720)가 제공된다. 몇몇 실시예에서, 이용 가능한 전체 스토리지가 사용 가능하게 되고 그 전체 스토리지가 통합 스토리지(718)와 이동식 스토리지(720)의 결합된 전체 용량으로서 사용자에게 보여지도록 이동식 스토리지(720)가 통합 스토리지(718)와 논리적으로 결합된다.
이동식 스토리지(720)는, 이동식 스토리지(720)가 삽입되고 보안되어, 이동식 스토리지(720)가 프로세서(702)와 같은 컴퓨팅 장치의 다른 컴포넌트들과 통신할 수 있는 연결을 용이하게 해주는 이동식 스토리지 메모리 슬롯(도시되지 않음) 또는 기타 메커니즘에 삽입되도록 구성된다. 이동식 스토리지(720)는 PC 카드, 컴팩트 플래시 카드, 메모리 스틱, 시큐어 디지털("SD"), 미니 SD, 마이크로 SD, 범용 IC 카드("UICC")(예컨대, 가입자 식별 모듈("SIM") 또는 범용 SIM("USIM")), 전용 포맷 등을 포함하는, 그러나 이에 제한되지는 않는, 다양한 메모리 카드 형태로 구현될 수 있다.
메모리 컴포넌트들(704) 중 하나 이상에서 운영 체제를 저장할 수 있음을 이해할 수 있다. 다양한 실시예에 따르면, 운영 체제는 심비안 Ltd의 SYMBIAN OS, 워싱턴주 레드몬드에 있는 마이크로소프트 코포레이션의 WINDOWS MOBILE OS, 마이크로소프트 코포레이션의 WINDOWS PHONE OS, 마이크로소프트 코포레이션의 WINDOWS, 캘리포니아주 팔로 알토의 휴렛 패커드 사의 WEBOS, 캐나다 온타리오주의 워털루에 있는 리서치 인 모션 Ltd의 BLACKBERRY OS, 캘리포니아주 쿠퍼티노의 애플 Inc의 IOS, 및 캘리포니아주 마운틴 뷰의 구글 Inc의 ANDROID OS를 포함하지만, 이에 제한되지는 않는다. 다른 운영 체제들도 고려된다.
네트워크 연결 컴포넌트들(706)은 무선 광역 통신망 컴포넌트("WWAN 컴포넌트")(722), 무선 근거리 통신망 컴포넌트("WLAN 컴포넌트")(724), 및 무선 개인 통신망("WPAN 컴포넌트")(726)을 포함한다. 네트워크 연결 컴포넌트들(706)은 WWAN, WLAN, 또는 WPAN일 수 있는 네트워크(728)와의 통신을 용이하게 한다. 하나의 네트워크(728)만이 도시되어 있지만, 네트워크 연결 컴포넌트들(706)은 다수의 네트워크들과의 동시 통신을 용이하게 할 수도 있다. 예를 들어, 네트워크 연결 컴포넌트들(706)은 WWAN, WLAN, 또는 WPAN 중 하나 이상을 통해 다수의 네트워크와 동시 통신을 용이하게 할 수 있다. 몇몇 실시예에서, 네트워크들(104, 604) 중 하나 이상에 의해 네트워크(728)가 제공된다. 몇몇 실시예에서, 네트워크(728)는 네트워크들(104, 604)을 포함한다. 또 다른 실시예에서, 네트워크(728)는 네트워크들(104, 604)에 대한 액세스를 제공한다.
네트워크(728)는 WWAN 컴포넌트(722)를 통해 컴퓨팅 장치 아키텍처(700)를 이용하는 컴퓨팅 장치에 음성 및/또는 데이터 서비스를 제공하기 위해 하나 이상의 이동 통신 기술을 이용하는 이동 통신망과 같은 WWAN일 수 있다. 이동 통신 기술은 GSM(Global System for Mobile communications), CDMA(Code Division Multiple Access) ONE, CDMA2000, UMTS(Universal Mobile Telecommunications System), LTE(Long Term Evolution), 및 WiMAX(Worldwide Interoperability for Microwave Access)를 포함할 수 있지만, 이에 제한되지는 않는다. 나아가, 네트워크(728)는 TDMA(Time Division Multiple Access), FDMA(Frequency Division Multiple Access), CDMA, W-CDMA(wideband CDMA), OFDM(Orthogonal Frequency Division Multiplexing), SDMA(Space Division Multiple Access) 등을 포함하는, 그러나 이에 제한되지는 않는, (상기의 표준들에 의해 사용되거나 또는 사용되지 않을 수 있는) 다양한 채널 액세스 방법들을 이용할 수 있다. GPRS(General Packet Radio Service), EDGE(Enhanced Data rates for Global Evolution), HSDPA(High-Speed Downlink Packet Access), EUL(Enhanced Uplink) 아니면 HSUPA(High-Speed Uplink Packet Access)로 명명되어지는 것을 포함하는 HSPA(High-Speed Packet Access) 프로토콜 군, HSPA+(Evolved HSPA), LTE, 및 다양한 기타 현재 및 미래 무선 데이터 액세스 표준을 사용하여 데이터 통신을 제공할 수 있다. 네트워크(728)는 상기의 기술들의 임의의 조합으로 음성 및/또는 데이터 통신을 제공하도록 구성될 수 있다. 네트워크(728)는 차세대 기술에 따라 음성 및/또는 데이터 통신을 제공하도록 구성되거나 조정될 수 있다.
몇몇 실시예에서, WWAN 컴포넌트(722)는 네트워크(728)에 대한 이중(dual)- 멀티-모드 연결을 제공하도록 구성된다. 예를 들어, WWAN 컴포넌트(722)는 네트워크(728)에 대한 연결을 제공하도록 구성될 수 있고, 네트워크(728)는 GSM 및 UMTS 기술을 통해서, 또는 기술들의 다른 결합을 통해서 서비스를 제공한다. 대안적으로, 이와 같은 기능을 제공하기 위해서, 및/또는 호환되지 않는 다른 기술들(즉, 하나의 WWAN 컴포넌트로는 지원할 수 없음)을 지원하기 위해 추가 기능을 제공하기 위해서 다수의 WWAN 컴포넌트들(722)을 이용할 수 있다. WWAN 컴포넌트(722)는 다수의 네트워크들(예컨대, UMTS 네트워크 및 LTE 네트워크)에 대한 유사한 연결을 용이하게 할 수 있다.
네트워크(728)는 IEEE 802.11a, 802.11b, 802.11g, 802.11n 및/또는 향후 802.11 표준(본원에서 전체적으로 와이파이라고 함)과 같은 하나 이상의 IEEE(Institute of Electrical and Electronic Engineers) 802.11 표준에 따라 동작하는 WLAN일 수 있다. 시험 802.11 표준들도 고려된다. 몇몇 실시예에서, WLAN은 하나 이상의 무선 와이파이 액세스 포인트를 이용하여 구현된다. 몇몇 실시예에서, 무선 와이파이 액세스 포인트들 중 하나 이상이 와이파이 핫스팟으서 기능하고 있는 WWAN에 연결되는 다른 컴퓨팅 장치가 된다. WLAN 컴포넌트(724)는 와이파이 액세스 포인트들을 통해 네트워크(728)에 연결되도록 구성된다. 이러한 연결은 WPA(WI-FI Protected Access), WPA2, WEP(Wired Equivalent Privacy)을 포함하지만, 이에 제한되지는 않는, 다양한 암호화 기술을 통해 보안될 수 있다.
네트워크(728)는 IrDA(Infrared Data Association), 블루투스(BLUETOOTH), 무선 USB(Universal Serial Bus), Z-웨이브, 지그비(ZIGBEE), 또는 기타 단거리 무선 기술에 따라 동작하는 WPAN일 수 있다. 몇몇 실시예에서, WPAN 컴포넌트(726)는 WPAN을 통해 주변 장치, 컴퓨터, 또는 기타 컴퓨팅 장치들과 같은 다른 장치들과의 통신을 용이하게 하도록 구성된다.
센서 컴포넌트들(708)은 자력계(730), 주변광(ambient light) 센서(732), 근접(proximity) 센서(734), 가속도계(736), 자이로스코프(738), 및 GPS 센서(Global Positioning System sensor)(740)를 포함한다. 온도 센서 또는 충격 탐지 센서와 같은, 그러나 이에 제한되지는 않는, 다른 센서들이 컴퓨팅 장치 아키텍처(700)에 통합되는 것도 고려될 수 있다.
자력계(730)는 자기장의 세기와 방향을 측정하도록 구성된다. 몇몇 실시예에서, 자력계(730)는 기본 방향들, 동서남북을 포함하는 좌표계에서의 정확한 방향을 사용자에게 제공하기 위해서 메모리 컴포넌트들(704) 중 하나에 저장된 나침반(compass) 애플리케이션 프로그램에 측정치를 제공한다. 나침반 컴포넌트를 포함하는 내비게이션 애플리케이션 프로그램에 유사한 측정치가 제공될 수 있다. 자력계(730)에서 얻은 측정치의 다른 사용들도 고려된다.
주변광 센서(732)는 주변광을 측정하도록 구성된다. 몇몇 실시예에서, 주변광 센서(732)는 저조도 및 고조도 환경을 보상하도록 디스플레이의 밝기를 자동으로 조절하기 위해서(아래에서 설명됨) 메모리 컴포넌트들(704) 중 하나에 저장된 애플리케이션 프로그램에 측정치를 제공한다. 주변광 센서(732)에서 얻은 측정치의 다른 사용들도 고려된다.
근접 센서(734)는 직접적인 접촉 없이 컴퓨팅 장치에 근접한 객체 또는 물건의 존재를 탐지하도록 구성된다. 몇몇 실시예에서, 근접 센서(734)는 사용자의 신체(예컨대, 사용자의 얼굴)의 존재를 탐지하고, 컴퓨팅 장치의 몇몇 기능을 사용 가능하게 또는 사용 불가능하게 하기 위해 근접 정보를 이용하는 메모리 컴포넌트들(704) 중 하나에 저장된 애플리케이션 프로그램에 이 정보를 제공한다. 예를 들어, 전화 애플리케이션 프로그램은 사용자의 얼굴이 우연히 통화 중에 전화를 끊거나 전화 애플리케이션 프로그램의 다른 기능을 사용 가능/사용 불가능하게 하지 않도록, 근접 정보의 수신에 대응하여 터치스크린을 자동으로 사용 불가능하게 할 수 있다(아래에서 설명됨). 근접 센서(734)에서 탐지한 것과 같은 근접도의 다른 사용들도 고려된다.
가속도계(736)는 적절한 가속도를 측정하도록 구성된다. 몇몇 실시예에서, 가속도계(736)의 출력은 애플리케이션 프로그램의 몇몇 기능을 제어하기 위한 입력 메커니즘으로써 애플리케이션 프로그램에서 사용된다. 예를 들어, 애플리케이션 프로그램은 가속도계(736)를 통해 수신된 입력에 대응해 캐릭터, 그 일부, 또는 객체가 움직이거나 조종되는 비디오 게임일 수 있다. 몇몇 실시예에서, 가속도계(736)의 출력이 가로 모드와 세로 모드 사이에서 전환, 좌표 가속도(coordinate acceleration) 계산, 또는 떨어짐 탐지에 사용되도록 애플리케이션 프로그램에 제공된다. 가속도계(736)의 다른 사용들도 고려된다.
자이로스코프(738)는 방향성(orientation)을 측정하고 유지하도록 구성된다. 몇몇 실시예에서, 애플리케이션 프로그램의 몇몇 기능을 제어하기 위한 입력 메커니즘으로써 애플리케이션 프로그램에서 자이로스코프(738)로부터의 출력이 사용된다. 예를 들어, 비디오 게임 애플리케이션이나 기타 애플리케이션의 3D 환경 내에서의 움직임의 정확한 인식을 위해 자이로스코프(738)를 사용할 수 있다. 몇몇 실시예에서, 애플리케이션 프로그램의 몇몇 기능의 제어를 개선하기 위해, 애플리케이션 프로그램에서 자이로스코프(738) 및 가속도계(736)로부터의 출력을 이용한다. 자이로스코프(738)의 다른 사용들도 고려된다.
GPS 센서(740)는 위치를 계산할 때 사용하기 위해 GPS 위성으로부터 신호를 수신하도록 구성된다. 위치 정보를 필요로 하거나 위치 정보로부터 이득을 얻는 임의의 애플리케이션 프로그램에서 GPS 센서(740)에서 계산되는 위치가 사용될 수 있다. 예를 들어, 그 위치에서 목적지까지의 방향 또는 목적지에서 그 위치까지의 방향을 제공하기 위해 내비게이션 애플리케이션 프로그램에서 GPS 센서(740)에서 계산되는 위치를 사용할 수 있다. 또한, E911 서비스와 같은 외부 위치-기반 서비스에 위치 정보를 제공하기 위해 GPS 센서(740)가 사용될 수 있다. GPS 센서(740)는 위치를 결정할 때에 GPS 센서(740)를 돕기 위해 네트워크 연결 컴포넌트들(706) 중 하나 이상을 이용하는 와이파이, 와이맥스(WIMAX), 및/또는 기지국 삼각 측량(cellular triangulation) 기법을 통해 생성되는 위치 정보를 얻을 수 있다. A-GPS(Assisted GPS) 시스템에서 GPS 센서(740)를 사용할 수도 있다.
I/O 컴포넌트들(710)은 디스플레이(742), 터치스크린(744), 데이터 I/O 인터페이스 컴포넌트("데이터 I/O")(746), 오디오 I/O 인터페이스 컴포넌트("오디오 I/O")(748), 비디오 I/O 인터페이스 컴포넌트("비디오 I/O")(750), 및 카메라(752)를 포함한다. 몇몇 실시예에서는, 디스플레이(742)와 터치스크린(744)이 결합된다. 몇몇 실시예에서, 데이터 I/O 컴포넌트(746), 오디오 I/O 컴포넌트(748), 및 비디오 I/O 컴포넌트(750) 중 둘 이상이 결합된다. I/O 컴포넌트들(710)은 아래에서 설명되는 다양한 인터페이스를 지원하도록 구성되는 별개의 프로세서들을 포함하거나, 프로세서(702)에 내장된 처리 기능을 포함할 수 있다.
디스플레이(742)는 시각 형태로 정보를 프리젠팅하도록 구성된 출력 장치이다. 특히, 디스플레이(742)는 그래픽 사용자 인터페이스("GUI") 요소들, 텍스트, 이미지, 비디오, 통지, 가상 버튼, 가상 키보드, 메시징 데이터, 인터넷 컨텐츠, 장치 상태, 시간, 날짜, 캘린더 데이터, 선호도, 지도 정보, 위치 정보, 및 시각 형태로 제공될 수 있는 임의의 다른 정보를 프리젠팅할 수 있다. 몇몇 실시예에서, 디스플레이(742)는 (사용된다면) 액티브 또는 패시브 매트릭스 기술 및 백라이팅(backlighting) 기술을 이용하는 LCD(liquid crystal display)이다. 몇몇 실시예에서, 디스플레이(742)는 OLED(organic light emitting diode) 디스플레이다. 다른 디스플레이 유형도 고려된다.
터치스크린(744)은 터치의 존재 및 위치를 탐지하도록 구성되는 입력 장치이다. 터치스크린(744)은 저항식 터치스크린, 정전식 터치스크린, 표면 탄성파 터치스크린, 적외선 터치스크린, 광학 영상(optical imaging) 터치스크린, 분산 신호(dispersive signal) 터치스크린, 음향 펄스 인식 터치스크린일 수 있으며, 또는 임의의 다른 터치스크린 기술을 이용할 수도 있다. 몇몇 실시예에서, 터치스크린(744)은 투명층으로써 디스플레이(742)의 위에 통합되어, 사용자가 하나 이상의 터치를 사용하여 디스플레이(742) 상에 프리젠팅되는 객체 또는 기타 정보와 인터랙션할 수 있게 한다. 다른 실시예에서, 터치스크린(744)은 디스플레이(742)를 포함하지 않는 컴퓨팅 장치의 표면에 통합된 터치 패드이다. 예를 들어, 컴퓨팅 장치는 디스플레이(742)의 위에 통합된 터치스크린과 디스플레이(742) 반대쪽 면의 터치 패드를 가질 수 있다.
몇몇 실시예에서, 터치스크린(744)은 단일-터치 터치스크린이다. 다른 실시예예서, 터치스크린(744)은 멀티-터치 터치스크린이다. 몇몇 실시예에서, 터치스크린(744)은 개별(discrete) 터치들, 단일 터치 제스처, 및/또는 멀티-터치 제스처를 탐지하도록 구성된다. 이들은 편의를 위해 본원에서 전체적으로 제스처라고 한다. 몇 가지 제스처가 이제부터 설명될 것이다. 이들 제스처는 예시적인 것으로 첨부된 특허청구범위의 범위를 제한하고자 의도한 것은 아님을 이해할 필요가 있다. 또한, 설명된 제스처, 추가 제스처, 및/또는 대안적인 제스처는 터치스크린(744)에서의 사용을 위해 소프트웨어로 구현될 수 있다. 이처럼, 개발자는 특정 애플리케이션 프로그램 전용인 제스처들을 생성할 수 있다.
몇몇 실시예에서, 터치스크린(744)은 사용자가 디스플레이(742)에 프리젠팅된 항목 위에서 터치스크린(744)을 한 번 태핑하는 탭 제스처를 지원한다. 탭 제스처는 사용자가 태핑하는 모든 것을 열거나 시작하는 것을 포함하는, 그러나 이에 제한되지는 않는, 다양한 이유로 사용될 수 있다. 몇몇 실시예에서, 터치스크린(744)은 사용자 디스플레이(742)에 프리젠팅된 항목 위에서 터치스크린(744)을 두 번 태핑하는 더블 탭 제스처를 지원한다. 단계적으로 줌인 또는 줌아웃하는 것을 포함하는, 그러나 이에 제한되지는 않는, 다양한 이유로 더블 탭 제스처가 사용될 수 있다. 몇몇 실시예에서, 터치스크린(744)은 사용자가 터치스크린(744)을 태핑하고 적어도 사전 정의된 시간 동안 접촉을 유지하는 탭 앤 홀드(tab and hold) 제스처를 지원한다. 컨텍스트-특정(context-specific) 메뉴를 여는 것을 포함하는, 그러나 이에 제한되지는 않는, 다양한 이유로 탭 앤 홀드 제스처가 사용될 수 있다.
몇몇 실시예에서, 터치스크린(744)은 사용자가 터치스크린(744)에 손가락을 두고 그 손가락을 터치스크린(744) 상에서 움직이면서 터치스크린(744)과의 접촉을 유지하는 팬 제스처를 지원한다. 제어된 속도로 화면, 이미지, 또는 메뉴에서 이동하는 것 포함하는, 그러나 이에 제한되지는 않는, 다양한 이유로 팬 제스처가 사용될 수 있다. 다수의 손가락 팬 제스처도 고려된다. 몇몇 실시예에서, 터치스크린(744)은 사용자가 화면이 움직이기 원하는 방향으로 손가락을 미는(swipe) 플릭(flick) 제스처를 지원한다. 플릭 제스처는 메뉴 또는 페이지를 수평으로 또는 수직으로 스크롤하는 것을 포함하는, 그러나 이에 제한되지는 않는, 다양한 이유로 사용될 수 있다. 몇몇 실시예에서, 터치스크린(744)은 사용자가 터치스크린(744) 상에서 두 손가락(예컨대, 엄지와 검지 손가락)으로 꼬집는 움직임을 하거나 두 손가락을 멀리 떨어뜨리는 핀치 앤 스트레치(pinch and stretch) 제스처를 지원한다. 핀치 앤 스트레치 제스처는 웹사이트, 지도, 또는 사진을 점점 줌인하거나 줌아웃하는 것을 포함하는, 그러나 이에 제한되지는 않는, 다양한 이유로 사용될 수 있다.
제스처 실행을 위해 하나 이상의 손가락을 사용하는 것으로 상기의 제스처들이 설명되었지만, 발가락 또는 스타일러스와 같은 객체 등의 다른 부속품을 사용하여 터치스크린(744)과 인터랙션할 수 있다. 이처럼, 상기의 제스처들은 예시적인 것으로 이해하여야 하고 어떤 식으로든 제한하는 것으로 해석되어서는 안 된다. 터치 인터페이스를 사용하는 예시적인 사용자 인터페이스가 도 8에 도시된다.
데이터 I/O 인터페이스 컴포넌트(746)는 컴퓨팅 장치로의 데이터 입력 및 컴퓨팅 장치로부터의 데이터 출력을 용이하게 하도록 구성된다. 몇몇 실시예에서, 데이터 I/O 인터페이스 컴포넌트(746)는, 예를 들어, 동기화 작업을 위해, 컴퓨팅 장치와 컴퓨터 시스템 간의 유선 연결을 제공하도록 구성된 커넥터를 포함한다. 커넥터는 전용 커넥터 또는 USB, 마이크로 USB, 미니 USB 등과 같은 표준 커넥터일 수 있다. 몇몇 실시예에서, 커넥터는 도킹 스테이션(docking station), 오디오 장치(예컨대, 디지털 뮤직 플레이어), 또는 비디오 장치와 같은 다른 장치와 컴퓨팅 장치를 도킹하는 도킹 커넥터(dock connector)이다.
오디오 I/O 인터페이스 컴포넌트(748)는 컴퓨팅 장치에 오디오 입력 및/또는 출력 기능을 제공하도록 구성된다. 몇몇 실시예에서, 오디오 I/O 인터페이스 컴포넌트(748)는 오디오 신호들을 모으도록 구성된 마이크로폰을 포함한다. 몇몇 실시예에서, 오디오 I/O 인터페이스 컴포넌트(748)는 헤드폰 또는 기타 외부 스피커에 대한 연결을 제공하도록 구성된 헤드폰 잭을 포함한다. 몇몇 실시예에서, 오디오 I/O 인터페이스 컴포넌트(748)는 오디오 신호들의 출력을 위한 스피커를 포함한다. 몇몇 실시예에서, 오디오 I/O 인터페이스 컴포넌트(748)는 광학 오디오 케이블 출력을 포함한다.
비디오 I/O 인터페이스 컴포넌트(750)는 컴퓨팅 장치에 비디오 입력 및/또는 출력 기능을 제공하도록 구성된다. 몇몇 실시예에서, 비디오 I/O 인터페이스 컴포넌트(750)는 다른 장치(예컨대, DVD 또는 블루레이 플레이어)로부터 입력으로서 비디오를 수신하고 또는 다른 장치(예컨대, 모니터, 텔레비전, 또는 기타 외부 디스플레이)에 출력으로서 비디오를 전송하도록 구성된 비디오 커넥터를 포함한다. 몇몇 실시예에서, 비디오 I/O 인터페이스 컴포넌트(750)는 비디오 컨텐츠를 입/출력하기 위해 HDMI(High-Definition Multimedia Interface), 미니 HDMI, 마이크로 HDMI, 디스플레이 포트, 또는 전용 커넥터를 포함한다. 몇몇 실시예에서, 비디오 I/O 인터페이스 컴포넌트(750) 또는 그 일부는 오디오 I/O 인터페이스 컴포넌트(748) 또는 그 일부와 결합한다.
카메라(752)는 정지 이미지 및/또는 비디오를 캡쳐하도록 구성될 수 있다. 카메라(752)는 CCD(charge coupled device) 또는 CMOS(complementary metal oxide semiconductor) 이미지 센서를 이용하여 이미지들을 캡쳐할 수 있다. 몇몇 실시예에서, 카메라(752)는 저조도(low-light) 환경에서 사진 촬영을 돕기 위해 플래시를 포함한다. 카메라(752)의 세팅은 하드웨어 또는 소프트웨어 버튼으로써 구현될 수 있다.
도시되지는 않았지만, 컴퓨팅 장치 아키텍처(700)에 하나 이상의 하드웨어 버튼이 포함될 수도 있다. 컴퓨팅 장치의 일부 동작 양태를 제어하는 데에 하드웨어 버튼을 사용할 수 있다. 하드웨어 버튼은 전용 버튼이거나 또는 다용도 버튼일 수 있다. 하드웨어 버튼은 기계적이거나 또는 센서 기반일 수 있다.
도시된 전원 컴포넌트들(712)은 하나 이상의 배터리(754)를 포함할 수 있고, 이는 배터리 게이지(gauge)(756)에 연결될 수 있다. 배터리(754)는 재충전할 수 있거나 또는 일회용일 수 있다. 재충전 가능한 배터리 유형으로 리튬 폴리머, 리튬 이온, 니켈 카드뮴, 및 니켈 수소 합금을 포함하지만, 이에 제한되지는 않는다. 배터리(754) 각각은 하나 이상의 전지로 만들어질 수 있다.
배터리 게이지(756)는 전류, 전압, 및 온도와 같은 배터리 파라미터들을 측정하도록 구성될 수 있다. 몇몇 실시예에서, 배터리 게이지(756)는 특정 오차 백분율 내의 잔존 수명을 예측하기 위해서 배터리 방전율, 온도, 수명 및 기타 요인들의 영향을 측정하도록 구성된다. 몇몇 실시예에서, 배터리 게이지(756)는 측정치를 이용하여 사용자에게 유익한 전원 관리 데이터를 제시하도록 구성되는 애플리케이션 프로그램에 측정치를 제공한다. 전원 관리 데이터는 사용된 배터리 퍼센트, 잔존 배터리 퍼센트, 배터리 조건, 잔존 시간, 잔존 용량(예컨대, 와트시(watt hour)), 전류량, 및 전압 중 하나 이상을 포함할 수 있다.
전원 컴포넌트들(712)은 전원 커넥터도 포함할 수 있고, 이는 상기의 I/O 컴포넌트들(710) 중 하나 이상과 결합할 수 있다. 전원 컴포넌트들(712)은 전원 I/O 컴포넌트(744)를 통해 외부 전원 시스템 또는 충전 설비와 접속할 수 있다.
상기에서 살펴본 것에 기초하여, 태스크들을 애그리게이팅하고 프리젠팅하는 기술이 본원에 개시되어 있음을 인지하여야 한다. 본원에서 제시된 대상이 컴퓨터 구조적 특징, 방법적 및 변환적 액트, 특정한 컴퓨팅 기계, 및 컴퓨터 판독 가능 매체에 대한 특정된 언어로 설명되지만, 첨부된 특허청구범위에서 규정되는 발명은 본원에서 설명된 특정한 특징, 액트, 또는 매체에 반드시 제한되는 것이 아님을 이해할 것이다. 오히려, 특정한 특징, 액트, 및 매체는 특허청구범위를 구현하는 예시적 형태로 개시된다.
상기에서 설명한 대상은 단지 예시에 불과하며, 제한적인 것으로 해석되어서는 안 된다. 도시되고 설명된 예시적인 실시예 및 애플리케이션을 따르지 않고, 또한, 본 발명의 진정한 사상 및 범위로부터 벗어나지 않으면서, 다음의 특허청구범위에서 개시된, 본원에 설명된 대상에 다양한 변형 및 변경이 이루어질 수 있다.
Claims (10)
- 태스크들을 프리젠팅하는 컴퓨터 구현 방법에 있어서,
태스크 엔진에서 상기 태스크들을 얻는 단계 - 상기 태스크들은 제 1 태스크 시스템에 관련된 제 1 태스크 및 제 2 태스크 시스템에 관련된 제 2 태스크를 포함함 -,
사용자 인터페이스에 상기 태스크들을 렌더링하는 단계,
상기 인터페이스를 프리젠팅하는 단계,
상기 사용자 인터페이스에 프리젠팅된 상기 태스크들 중 하나가 수정되었는지 여부를 판정하는 단계, 및
상기 태스크들 중 하나가 수정되었다는 판정에 대한 응답으로, 상기 제 1 태스크 시스템의 상기 제 1 태스크 및 상기 제 2 태스크 시스템의 상기 제 2 태스크 중 하나 이상에 상기 수정을 기록하는 단계
를 포함하는 컴퓨터 구현 방법.
- 제 1 항에 있어서,
상기 태스크들을 얻는 단계는
상기 제 1 태스크 시스템과 통신하는 단계,
상기 제 1 태스크 시스템으로부터 상기 제 1 태스크를 얻는 단계, 및
상기 태스크 엔진에 관련된 데이터 저장 장치에 상기 제 1 태스크를 저장하는 단계를 포함하는 방법.
- 제 2 항에 있어서,
상기 태스크들 중 하나가 수정되었다는 판정에 대한 응답으로, 상기 수정을 반영하기 위해 상기 데이터 저장 장치에 저장된 상기 제 1 태스크를 편집하는 단계를 더 포함하는 방법.
- 제 3 항에 있어서,
상기 데이터 저장 장치는 상기 태스크 엔진이 호스팅하는 캐시를 포함하는 방법.
- 제 1 항에 있어서,
상기 태스크들은 마감일 또는 완료일 중 적어도 하나를 나타내는 데이터를 포함하는 방법.
- 제 1 항에 있어서,
상기 태스크들을 얻는 단계는 상기 사용자 인터페이스에서 상기 태스크들 각각에 대한 외부 참조를 내장하는 단계를 포함하는 방법.
- 컴퓨터에 의한 실행 시에, 상기 컴퓨터로 하여금
태스크 엔진에서 복수의 태스크들을 얻고 - 상기 복수의 태스크들은 제 1 태스크 시스템에 관련된 제 1 태스크 및 제 2 태스크 시스템에 관련된 제 2 태스크를 포함함 -,
상기 태스크 엔진에 의해 실행되는 프리젠테이션 모듈에 의해 생성되는 사용자 인터페이스에 상기 태스크들을 렌더링하고,
상기 사용자 인터페이스를 프리젠팅하고,
상기 사용자 인터페이스에 프리젠팅된 상기 복수의 태스크들 중 하나가 상기 사용자 인터페이스를 통해 수정되었는지 여부를 판정하고,
상기 태스크들 중 하나가 수정되었다는 판정에 대한 응답으로, 상기 제 1 태스크 시스템에서 호스팅되는 상기 제 1 태스크의 버전 및 상기 제 2 태스크 시스템에서 호스팅되는 상기 제 2 태스크의 버전 중 적어도 하나를 수정하도록 하는 컴퓨터 판독 가능 명령어가 저장된 컴퓨터 저장 매체.
- 제 7 항에 있어서,
상기 컴퓨터 저장 매체는, 상기 컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금
상기 제 1 태스크 시스템으로부터 상기 제 1 태스크의 복사본을 얻기 위해 상기 제 1 태스크 시스템과 통신하고,
상기 제 2 태스크 시스템으로부터 상기 제 2 태스크의 복사본을 얻기 위해 상기 제 2 태스크 시스템과 통신하고,
상기 태스크 엔진의 데이터 저장 장치에 의해 제공되는 캐시에 상기 제 1 태스크의 복사본과 상기 제 2 태스크의 복사본을 저장하며,
상기 태스크들 중 하나가 수정되었다는 판정에 대한 응답으로, 상기 수정에 따라 상기 캐시에 저장된 상기 제 1 태스크의 복사본 및 상기 제 2 태스크의 복사본 중 적어도 하나를 편집하도록 하는 컴퓨터 판독 가능 명령어를 더 포함하는 컴퓨터 저장 매체.
- 제 7 항에 있어서,
상기 사용자 인터페이스의 프리젠팅은
타임라인에 의해 디스플레이되는 시간 윈도우 내에 마감일 또는 완료일을 갖고 있는 태스크들을 디스플레이하기 위한 타임라인 및 상기 태스크들을 디스플레이하기 위한 태스크 목록을 포함하는 제 1 뷰의 프리젠팅,
이전 캐시 업데이트 이후에 추가된 태스크들의 목록을 포함하는 제 2 뷰의 프리젠팅,
완료되었다고 표시된 태스크들의 목록을 포함하는 제 3 뷰의 프리젠팅, 및
상기 사용자 인터페이스에 보여지는 사용자에 관련되거나 엔티티와 관련된 임의의 태스크들을 포함하는 제 4 뷰의 프리젠팅 중 적어도 하나를 포함하는 컴퓨터 저장 매체.
- 컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금
태스크 엔진과 통신하는 복수의 태스크 시스템들과 통신하고 - 상기 복수의 태스크 시스템들 각각은 하나 이상의 태스크를 저장함 -,
상기 태스크 엔진에서, 상기 태스크 시스템들에 의해 저장되는 상기 하나 이상의 태스크 각각의 복사본을 얻고 - 상기 태스크의 복사본은 상기 태스크 엔진에 의해 노출된 애플리케이션 프로그래밍 인터페이스를 통해 수신됨 -,
상기 태스크 엔진에 관련된 캐시에서, 상기 태스크들의 복사본을 저장하고,
상기 태스크의 복사본을 프리젠팅하기 위한 사용자 인터페이스를 렌더링하고,
상기 사용자 인터페이스를 프리젠팅하고,
상기 사용자 인터페이스에 프리젠팅된 상기 복수의 태스크들 중 하나가 상기 사용자 인터페이스를 통해 수정되었는지 여부를 판정하고,
상기 태스크들 중 하나가 수정되었다는 판정에 대한 응답으로, 상기 태스크 시스템들 중 적어도 하나에 의해 저장되는 상기 태스크들 중 적어도 하나를 수정하도록 하는 컴퓨터 판독 가능 명령어가 저장된 컴퓨터 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/295,113 US20130124605A1 (en) | 2011-11-14 | 2011-11-14 | Aggregating and presenting tasks |
US13/295,113 | 2011-11-14 | ||
PCT/US2012/064248 WO2013074377A1 (en) | 2011-11-14 | 2012-11-09 | Aggregating and presenting tasks |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20140091699A true KR20140091699A (ko) | 2014-07-22 |
Family
ID=47856403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147012842A KR20140091699A (ko) | 2011-11-14 | 2012-11-09 | 태스크들의 애그리게이팅 및 프리젠팅 기법 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20130124605A1 (ko) |
EP (1) | EP2780803A4 (ko) |
JP (1) | JP2015505385A (ko) |
KR (1) | KR20140091699A (ko) |
CN (1) | CN102982440A (ko) |
WO (1) | WO2013074377A1 (ko) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9244652B1 (en) * | 2013-06-03 | 2016-01-26 | The Mathworks, Inc. | State management for task queues |
US9786016B2 (en) | 2014-02-28 | 2017-10-10 | Microsoft Technology Licensing, Llc | Image tagging for capturing information in a transaction |
US8942727B1 (en) | 2014-04-11 | 2015-01-27 | ACR Development, Inc. | User Location Tracking |
US9413707B2 (en) | 2014-04-11 | 2016-08-09 | ACR Development, Inc. | Automated user task management |
GB2532587B (en) * | 2014-08-08 | 2021-08-04 | Pismo Labs Technology Ltd | Methods and systems for transmitting data through an aggregated connection |
US20160055444A1 (en) * | 2014-08-21 | 2016-02-25 | Microsoft Technology Licensing, Llc | Multi-user integrated interaction |
US20170168654A1 (en) * | 2015-12-11 | 2017-06-15 | Microsoft Technology Licensing, Llc | Organize communications on timeline |
CN105515956A (zh) * | 2015-12-31 | 2016-04-20 | 小米科技有限责任公司 | 一种展示通讯消息的方法和装置 |
US9659391B1 (en) | 2016-03-31 | 2017-05-23 | Servicenow, Inc. | Request resolution shaper in a networked system architecture |
US20180130007A1 (en) * | 2016-11-06 | 2018-05-10 | Microsoft Technology Licensing, Llc | Efficiency enhancements in task management applications |
US20180136829A1 (en) * | 2016-11-11 | 2018-05-17 | Microsoft Technology Licensing, Llc | Correlation of tasks, documents, and communications |
US10740553B2 (en) * | 2017-04-17 | 2020-08-11 | Microsoft Technology Licensing, Llc | Collaborative review workflow graph |
US10789575B2 (en) * | 2017-05-05 | 2020-09-29 | Servicenow, Inc. | User interface for timesheet reporting |
US10574615B2 (en) | 2017-09-06 | 2020-02-25 | Microsoft Technology Licensing, Llc | Heterogeneous content in email inbox |
US11354609B2 (en) * | 2019-04-17 | 2022-06-07 | International Business Machines Corporation | Dynamic prioritization of action items |
CN111126013A (zh) * | 2019-12-27 | 2020-05-08 | 浙江艮威水利建设有限公司 | 水利水电工程施工安全管理系统 |
US20220083986A1 (en) * | 2020-09-14 | 2022-03-17 | Apple Inc. | Digital assistant-enabled daily briefings |
CN112668283B (zh) * | 2020-12-21 | 2022-05-27 | 北京字跳网络技术有限公司 | 文档编辑方法、装置和电子设备 |
CN113741755A (zh) * | 2021-09-16 | 2021-12-03 | 北京字跳网络技术有限公司 | 信息的处理方法、装置、终端和存储介质 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000057217A (ja) * | 1998-08-10 | 2000-02-25 | Ibm Japan Ltd | スケジュール表示方法、スケジュール変更方法、スケジュール管理システム、スケジュール管理装置、スケジュール管理プログラムを格納した記憶媒体 |
US20050071740A1 (en) * | 2003-09-30 | 2005-03-31 | Chee Lai Theng | Task extraction and synchronization |
US7340484B2 (en) * | 2004-06-29 | 2008-03-04 | Sap Ag | Integrated calendar |
US8302096B2 (en) * | 2004-11-12 | 2012-10-30 | Sap Ag | Methods and systems to perform individual tasks as a composite task |
US20060168530A1 (en) * | 2005-01-21 | 2006-07-27 | International Business Machines Corporation | Task weaver |
US10489749B2 (en) * | 2006-11-14 | 2019-11-26 | Microsoft Technology Licensing, Llc | Presenting daily task lists |
KR101128523B1 (ko) * | 2007-04-25 | 2012-03-27 | 삼성전자주식회사 | 사용자 일정 관리 장치 및 방법 |
WO2009009623A1 (en) * | 2007-07-09 | 2009-01-15 | Tailwalker Technologies, Inc. | Integrating a methodology management system with project tasks in a project management system |
US8402480B2 (en) * | 2008-01-31 | 2013-03-19 | Visibility.Biz Inc. | Systems and methods for generating a Swimlane Timeline for task data visualization |
US20090216792A1 (en) * | 2008-02-25 | 2009-08-27 | Sap Ag | Embedded work process item management |
US8302009B2 (en) * | 2008-05-15 | 2012-10-30 | Target Brands, Inc. | System and method for task management |
KR100993331B1 (ko) * | 2008-09-11 | 2010-11-09 | 한국전자통신연구원 | 사용자 일정관리장치 및 방법 |
US20100235838A1 (en) * | 2009-03-12 | 2010-09-16 | Jerry Ibrahim | Method, computer program product, and apparatus for enabling task aggregation in an enterprise environment |
US20110252351A1 (en) * | 2010-04-09 | 2011-10-13 | Calamander Inc. | Systems and methods for consuming, sharing, and synchronizing time based information |
US20120042003A1 (en) * | 2010-08-12 | 2012-02-16 | Raytheon Company | Command and control task manager |
-
2011
- 2011-11-14 US US13/295,113 patent/US20130124605A1/en not_active Abandoned
-
2012
- 2012-11-09 KR KR1020147012842A patent/KR20140091699A/ko not_active Application Discontinuation
- 2012-11-09 WO PCT/US2012/064248 patent/WO2013074377A1/en active Application Filing
- 2012-11-09 JP JP2014541277A patent/JP2015505385A/ja active Pending
- 2012-11-09 EP EP12849605.6A patent/EP2780803A4/en not_active Withdrawn
- 2012-11-13 CN CN2012104541996A patent/CN102982440A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20130124605A1 (en) | 2013-05-16 |
EP2780803A1 (en) | 2014-09-24 |
CN102982440A (zh) | 2013-03-20 |
WO2013074377A1 (en) | 2013-05-23 |
EP2780803A4 (en) | 2015-07-15 |
JP2015505385A (ja) | 2015-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20140091699A (ko) | 태스크들의 애그리게이팅 및 프리젠팅 기법 | |
US10031893B2 (en) | Transforming data to create layouts | |
US10521251B2 (en) | Hosting application experiences within storage service viewers | |
US9235335B2 (en) | Touch interactions with a drawing application | |
CA2783223C (en) | Global recently used files list | |
US9671944B2 (en) | Inclusion/exclusion user interface controls for range filters | |
US20140043325A1 (en) | Facetted browsing | |
US20140074811A1 (en) | Query ranking models | |
EP2807549B1 (en) | Presenting data driven forms | |
WO2013096021A1 (en) | User interface placeholders for application extensions | |
US9934331B2 (en) | Query suggestions | |
WO2017172491A1 (en) | Generating a services application | |
US20140201231A1 (en) | Social Knowledge Search | |
EP3765975A1 (en) | Locating files using a durable and universal file identifier | |
CN107810489B (zh) | 应用与设备之间的无缝转换 | |
EP3718006B1 (en) | Resumption of activities using activity data collected by an operating system | |
KR20170038823A (ko) | 문서에서의 데이터 검색 이용 방법 | |
BR112016030120B1 (pt) | Método implementado por computador para proporcionar uma sugestão de consulta e sistema configurado para proporcionar sugestões de consulta |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |