KR20060086305A - 컨텍스트-인식 플랫폼을 위한 시스템 및 방법 - Google Patents

컨텍스트-인식 플랫폼을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20060086305A
KR20060086305A KR1020060007651A KR20060007651A KR20060086305A KR 20060086305 A KR20060086305 A KR 20060086305A KR 1020060007651 A KR1020060007651 A KR 1020060007651A KR 20060007651 A KR20060007651 A KR 20060007651A KR 20060086305 A KR20060086305 A KR 20060086305A
Authority
KR
South Korea
Prior art keywords
context
context information
software code
information
executable software
Prior art date
Application number
KR1020060007651A
Other languages
English (en)
Other versions
KR101224721B1 (ko
Inventor
크리스토퍼 마이클 한
카메쉬 챈더 텀시 다야카르
라비팔 소인
리언 에드워드 쿠키에르맨
비크람 마단
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060086305A publication Critical patent/KR20060086305A/ko
Application granted granted Critical
Publication of KR101224721B1 publication Critical patent/KR101224721B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • G06F9/4451User profiles; Roaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/543Local

Abstract

실행 환경을 적응시키는 데에 이용될 수 있는 컨텍스트-인식 플랫폼을 위한 향상된 시스템 및 방법이 제공된다. 컴퓨터 시스템의 실행 환경에 관한 컨텍스트 정보를 설정하고, 추적하고, 획득하기 위한 인터페이스를 가지는 프레임워크는 플랫폼 상에서 실행되는 실행가능물에 의한 액세스를 위하여 플랫폼 레벨에서 컨텍스트 정보를 통합하기 위한 통합된 데이터 저장소 및 컨텍스트 플랫폼을 포함한다. 컨텍스트 엔진은 실행가능물로부터, 데이터 저장소에서의 컨텍스트 정보의 설정, 추적, 및 획득과 같은 컨텍스트 정보 동작을 수행하라는 요청을 수신할 수 있다. 컨텍스트 정보의 변경의 통지를 수신할 때, 하나 이상의 실행가능물은 시스템 설정들을 재구성하는 것과 같이 실행 환경을 변경할 수 있다. 마찬가지로, 실행가능물은 컨텍스트 정보를 이용하여 자신의 실행 환경을 적응시킬 수 있다.
컨텍스트 정보, 플랫폼, 애플리케이션 프로그래밍 인터페이스

Description

컨텍스트-인식 플랫폼을 위한 시스템 및 방법{SYSTEM AND METHOD FOR A CONTEXT-AWARENESS PLATFORM}
도 1은 본 발명이 포함될 수 있는 컴퓨터 시스템을 일반적으로 도시하는 블럭도.
도 2는 본 발명의 양태에 따른, 컨텍스트-인식 플랫폼의 일 실시예에서의 시스템 컴포넌트의 예시적인 아키텍처를 일반적으로 도시하는 블럭도.
도 3은 본 발명의 양태에 따른, 컨텍스트-인식 플랫폼의 다른 실시예에서의 시스템 컴포넌트의 예시적인 아키텍처를 일반적으로 도시하는 블럭도.
도 4는 본 발명의 양태에 따른, 컨텍스트 플랫폼의 다양한 실시예에 포함될 수 있는 컨텍스트 엔진을 위한 시스템 컴포넌트의 예시적인 아키텍처를 일반적으로 도시하는 블럭도.
도 5는 본 발명의 양태에 따른, 컨텍스트 정보를 설정하기 위한 일 실시예에서의 실행가능물에 의해 진행되는 예시적인 단계를 일반적으로 도시하는 흐름도.
도 6은 본 발명의 양태에 따른, 컨텍스트 정보를 추적하기 위한 일 실시예에서의 실행가능물에 의해 진행되는 예시적인 단계를 일반적으로 도시하는 흐름도.
도 7은 본 발명의 양태에 따른, 컨텍스트 정보를 획득하기 위한 일 실시예에서의 실행가능물에 의해 진행되는 예시적인 단계를 일반적으로 도시하는 흐름도.
도 8은 본 발명의 양태에 따른, 요청된 컨텍스트 정보 동작을 수행하기 위한 일 실시예에서의 컨텍스트 엔진에 의해 진행되는 예시적인 단계를 일반적으로 도시하는 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
120: 프로세싱 유닛
202: 실행가능물
210: 데이터 저장소
212: 사용자 컨텍스트 데이터
214: 실행가능물 컨텍스트 데이터
418: 통지 테이블
본 발명은 일반적으로 컴퓨터 시스템에 관한 것으로, 보다 상세히는 실행 환경을 적응시키는 데에 이용될 수 있는 컨텍스트-인식 플랫폼(context-awareness platform)을 위한 향상된 시스템 및 방법에 관한 것이다.
컴퓨터 사용자는 오랫동안 컴퓨터 시스템이 새롭거나 변경된 컴퓨팅 및/또는 운영 환경에 지능적으로 적응할 수 없는 것에 대하여 실망하여 왔다. 종종 복수의 물리적 위치에서 및 변화하는 환경 하에서, 다양한 서로 다른 활동들에 대하여 동작할 수 있는 모바일 컴퓨터의 사용자들은 보다 더 많이 실망할 수 있다. 예를 들 면, 하루를 시작할 때, 모바일 컴퓨터 사용자는 이메일 또는 인스턴트 메세지를 이용하여 가족 또는 친구들과 대화하면서 집에 있을 수 있다. 이후에 모바일 컴퓨터 사용자는 근무중에 미팅을 하는 동안 프레젠테이션을 행할 수 있다. 저녁에는, 모바일 컴퓨터 사용자는 비행기를 탑승하면서 다음날의 비지니스 미팅을 위한 업무 제안서를 준비할 수 있다.
그러나, 불행하게도, 컴퓨터는 어느 한 환경에 대한 구성이 더 이상 관련성이 없어 다른 환경에서 변경될 필요가 있을 경우에도, 여전히 이들 서로 다른 환경들 및 사용들 각각에 대하여 유사하게 구성된 상태를 유지할 수 있다. 예를 들면, 사용자는 사용자가 가정용 네트워크와 기업용 네트워크 간에 이동하는 경우 물리적인 위치에 대한 변경에 대해 모바일 컴퓨터를 구성할 필요가 있을 수 있다. 이러한 경우, 사용자는 디폴트 프린터 설정, 디폴트 인터넷 브라우저 홈페이지, 인터넷 브라우저 프록시 설정, 및 다른 관련 설정을 변경할 필요가 있다. 사용자는 또한 활동에 있어서의 변경에 대해 컴퓨터를 구성할 필요가 있을 수 있다. 예를 들면, 프레젠테이션을 행할 준비를 하는 사용자는 컴퓨터의 볼륨을 조절하고, 인스턴트 메세지 통지를 끄고, 화면보호기 타임아웃을 끄고, 다른 설정 조절들을 할 수 있다. 사용자는 또한 컴퓨터가 가정이 아닌 기업에서의 서로 다른 사람들과 대화하도록 구성할 필요가 있을 수 있다. 예를 들면, 업무에서 사용되는 이메일 계정과는 다른 디폴트 이메일 계정이 가정에서 친구 및 가족과 통신하는 데에 이용될 수 있다. 따라서, 모바일 컴퓨터 사용자는 컴퓨팅 환경이 변할 때마다 모바일 컴퓨터를 재구성해야 할 수 있다.
컴퓨팅 시스템이, 물리적 위치, 사용자가 이 물리적 위치에서 대화할 수 있는 사람들, 사용자의 활동 등과 같은 컴퓨팅 환경에 대한 컨텍스트 정보를 모으고 노출시켜 컴퓨터를 컴퓨팅 환경에 지능적으로 적용시키는 데에 이 컨텍스트 정보가 이용될 수 있는 방식이 필요하다. 이러한 시스템 및 방법은 균일하고 체계적인 방식으로 컨텍스트 정보를 모으고 노출시켜 임의의 실행가능물이 컴퓨터 시스템을 지능적으로 적용시키는 데에 이 컨텍스트 정보를 제공하거나 이용할 수 있도록 해야 한다.
간단히 말하자면, 본 발명은 실행 환경을 적응시키는 데에 이용될 수 있는 컨텍스트-인식 플랫폼을 위한 향상된 시스템 및 방법을 제공한다. 이러한 목적을 위해, 본 발명은 컴퓨터 시스템의 실행 환경에 관한 컨텍스트 정보를 설정하고, 추적하고, 획득하기 위한 인터페이스를 가지는 프레임워크 및 컴포넌트를 제공한다. 제공된 컴포넌트들 중에는 통합된 데이터 저장소를 포함하는 데이터 저장 설비 및 다양한 실행가능물에 동작적으로 연결된 컨텍스트 플랫폼이 있을 수 있다. 데이터 저장소는 컨텍스트 플랫폼 상에서 실행되는 실행가능물에 의하여 액세스를 위한 플랫폼 레벨에서 컨텍스트 정보를 통합함으로써 컨텍스트 플랫폼에 컨텍스트 정보의 통합된 저장소를 제공할 수 있다. 사용자 컨텍스트 데이터, 실행가능물 컨텍스트 데이터 및 시스템 컨텍스트 데이터를 포함하지만 이에 한정되지 않는 임의의 유형의 컨텍스트 정보가 저장될 수 있다.
컨텍스트 플랫폼은 컨텍스트 플랫폼의 다양한 부분과 다른 실행가능물 간의 데이터 교환 및 프로그래밍적인 대화를 조정하기 위한, 이제부터는 컨텍스트 엔진이라 칭할 실행가능물 코드 및 컨텍스트 애플리케이션 프로그래밍 인터페이스를 포함할 수 있다. 컨텍스트 애플리케이션 프로그래밍 인터페이스는 실행가능물에 대한 액세스를 제공하여 컨텍스트 정보를 설정하거나, 추적하거나, 획득할 수 있다. 임의의 실행가능물은 컨텍스트 애플리케이션 프로그래밍 인터페이스에 동작적으로 연결되어 컨텍스트 정보를 설정하거나, 추적하거나, 획득할 수 있다. 컨텍스트 엔진은 실행가능물로부터, 데이터 저장소에서의 컨텍스트 정보의 설정, 추적, 및 획득과 같은 컨텍스트 정보 동작을 수행하라는 요청을 수신할 수 있다. 예를 들면, 컨텍스트 엔진은 컨텍스트 정보를 갱신하라는 요청을 수신할 수 있고, 컨텍스트 정보의 변경에 대한 통지를 받도록 요청하였던 실행가능물들을 탐색할 수 있으며, 그 다음 컨텍스트 정보의 변경의 통지를 이 실행가능물에게 송신할 수 있다. 컨텍스트 정보의 변경의 통지를 수신한 결과로서, 하나 이상의 실행가능물이 시스템 설정을 재구성하는 것과 같은 실행 환경을 변경시킬 수 있다. 마찬가지로, 실행가능물은 컨텍스트 정보를 이용하여 자신의 실행 환경을 적응시킬 수 있다.
컨텍스트 플랫폼은 유리하게도 컴퓨터 시스템이 물리적 위치, 사용자가 이 물리적 위치에서 대화할 수 있는 사람들, 및 사용자의 활동 등과 같은 실행 환경에 대한 컨텍스트 정보를 모으고 노출시킬 수 있게 하여, 컴퓨터를 컴퓨팅 환경에 지능적으로 적용시키는 데에 이 컨텍스트 정보가 이용될 수 있도록 할 수 있다. 또한, 컨텍스트 플랫폼은 확장가능하며 컨텍스트 정보를 제공하고 사용할 수 있는 임의의 개수의 실행가능물을 지원한다. 또한, 컨텍스트 플랫폼은 임의의 사이즈 및/ 또는 포맷의 컨텍스트 정보 데이터를 지원할 수 있다. 다른 이점은 도면에 관련하여 취해질 때의 이하의 상세할 설명으로부터 보다 명백해질 것이다.
예시적인 운영 환경
도 1은 본 발명이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(100)의 예를 나타낸다. 컴퓨팅 시스템 환경(100)은 단지 적절한 컴퓨팅 환경의 일 예이며 본 발명의 사용 또는 기능의 범위에 제한을 가하도록 의도된 것은 아니다. 컴퓨팅 환경(100)은 예시적인 운영 환경(100)에 도시된 컴포넌트들 중의 임의의 하나 또는 조합에 관하여 임의의 종속성(dependency) 또는 요구사항(requirement)을 갖는 것으로 해석되어서는 안된다.
본 발명은 많은 다른 범용 또는 특수목적 컴퓨팅 시스템 환경들 또는 구성들에서 동작될 수 있다. 본 발명에 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경, 및/또는 구성의 예로는, 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드(hand-held) 또는 랩탑 장치, 태블릿 장치, 헤드리스 서버(headless servers), 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 셋톱 박스(set top box), 프로그램가능한 가전제품(programmable consumer electronics), 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기의 시스템 또는 장치 중의 임의의 것을 포함하는 분산형 컴퓨팅 환경 등이 포함되지만, 이에 한정되지 않는다.
본 발명은 컴퓨터에 의해 실행되는, 프로그램 모듈과 같은 컴퓨터 실행가능 명령어의 일반적인 관점에서 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 통신 네트워크를 통해 링크된 원격 프로세싱 장치에 의해 태스크를 수행하는 분산형 컴퓨팅 환경에서 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 국부 및/또는 원격 컴퓨터 저장 매체 내에 위치할 수 있다.
도 1을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(110)의 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트들로는, 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(120)에 연결시키는 시스템 버스(121)가 포함될 수 있지만, 이에 한정되는 것은 아니다. 시스템 버스(121)는 다양한 버스 아키텍처 중의 임의의 것을 사용하는 로컬 버스, 주변 버스, 및 메모리 버스 또는 메모리 컨트롤러를 포함하는 몇 가지 유형의 버스 구조 중의 임의의 것일 수 있다. 예로서, 이러한 아키텍처는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 인핸스드 ISA(Enhanced ISA; EISA) 버스, 비디오 일렉트로닉스 표준 어소시에이션(VESA) 로컬 버스, 및 메자닌(Mezzanine) 버스로도 알려진 주변 컴포넌트 상호접속(PCI) 버스를 포함하지만, 이에 한정되는 것은 아니다.
컴퓨터(110)는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형(removable) 및 비분리형(non-removable) 매체를 둘다 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이에 한정되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 기타 자기 저장장치, 또는 컴퓨터(110)에 의해 액세스될 수 있고 원하는 정보를 저장하는 데 사용될 수 있는 임의의 기타 매체를 포함하지만, 이에 한정되지 않는다. 통신 매체는 통상적으로 반송파 또는 기타 전송 메카니즘 등의 변조된 데이터 신호에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내의 정보를 인코딩하도록 하나 또는 그 이상의 특성을 설정 또는 변경시킨 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속 등의 유선 매체와, 음향, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함하지만, 이에 한정되지 않는다. 상술한 것들 중의의 임의의 조합 또한 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132) 등의 휘발성 및/또는 비휘발성 메모리의 형태의 컴퓨터 저장 매체를 포함한다. 시동중과 같은 때에 컴퓨터(110) 내의 구성요소들 간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(133; BIOS)은 일반적으로 ROM(131)에 저장된다. RAM(132)은 일반적으로 프로세싱 유닛(120)에 즉시 액세스할 수 있고 및/또는 프로세싱 유닛(120)에 의해 현재 작동되는 프로그램 모듈 및/또는 데이터를 포함한다. 예로서, (한정하고자 하는 것은 아님) 도 1은 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)를 도시한다.
컴퓨터(110)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 1에는 비분리형 비휘발성 자기 매체로부터 판독하거나 그 자기 매체에 기록하는 하드 디스크 드라이브(141), 분리형 비휘발성 자기 디스크(152)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(151), 및 CD-ROM 또는 기타 광 매체 등의 분리형 비휘발성 광 디스크(156)로부터 판독하거나 그 광 디스크에 기록하는 광 디스크 드라이브(155)가 도시되어 있다. 예시적인 운영 환경에서 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD(Digital versatile disk), 디지털 비디오 테이프, 고체 RAM, 고체 ROM 등을 포함하지만 이에 한정되지 않는다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 일반적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
앞서 기술되고 도 1에 도시된 드라이브 및 그 관련 컴퓨터 저장 매체는 컴퓨터(110)를 위한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장을 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 운 영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 도시된다. 이들 컴포넌트는 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일할 수도 있고 다를 수도 있음을 유의한다. 운영 체제(144), 애플리케이션 프로그램(145), 다른 프로그램 모듈(146), 및 프로그램 데이터(147)는 최소한 다른 복사본(different copies)임을 나타내기 위하여 다른 번호를 부여하였다. 사용자는 일반적으로 마우스, 트랙볼, 또는 터치 패드라 불리우는 포인팅 장치(161), 키보드(162), 마이크로폰(163), 태블릿 또는 전자 디지타이저(164)와 같은 입력 장치를 통해 컴퓨터(110)에 명령 및 정보를 입력할 수 있다. 도 1에 도시되지 않은 기타 입력 장치는 조이스틱, 게임 패드, 위성 안테나, 스캐너, 또는 바이오메트릭(biometric) 센서, 환경 센서, 위치 센서, 또는 다른 유형의 센터를 포함하는 다른 장치들을 포함할 수 있다. 이들 입력 장치 및 그외의 입력 장치는 시스템 버스에 연결된 사용자 입력 인터페이스(160)를 통해 종종 프로세싱 유닛(120)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버설 시리얼 포트(USB)와 같은 기타 인터페이스 및 버스 구조에 의해 접속될 수 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치는 또한 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속된다. 모니터(191)는 또한 터치 스크린 인터페이스(192)를 통해 시스템 버스(121)에 접속된 터치-스크린 패널 등과 통합될 수 있다. 모니터 및/또는 터치 스크린 패널은 태블릿-유형 퍼스널 컴퓨터에서와 같이, 컴퓨팅 장치(110)가 포함될 수 있는 하우징에 물리적으로 연결될 수 있음을 유의한다. 또한, 컴퓨팅 장치 (110)와 같은 컴퓨터는 출력 주변 인터페이스(193) 등을 통해 접속될 수 있는 스피커(194) 및 프린터(195) 등의 기타 주변 출력 장치도 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용한 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치, 또는 기타 공통 네트워크 노드일 수 있으며, 비록 도 1 에는 메모리 저장 장치(181)만이 도시되어 있지만, 컴퓨터(110)에 관하여 상술한 구성요소 중 다수 또는 모든 구성요소를 일반적으로 포함한다. 도 1에 도시된 논리적 접속은 근거리 통신망(LAN; 171) 및 원거리 통신망(WAN; 173)을 포함하지만, 그 외의 네트워크를 포함할 수도 있다. 이러한 네트워크 환경은 사무실, 기업 광역 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다. LAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 일반적으로 인터넷 등의 WAN(173)을 통해 통신을 구축하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메카니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(110)에 관하여 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 예로서 (한정하고자 하는 것은 아님), 도 1은 메모리 장치(181)에 상주하는 원격 애플리케이션 프로그램(185)을 도시한다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들간의 통신 링크를 구축하 는 그 외의 수단이 사용될 수 있다고 인식될 것이다.
컨텍스트 인식 플랫폼
본 발명은 일반적으로 컨텍스트-인식 플랫폼을 위한 시스템 및 방법에 관한 것이다. 컨텍스트-인식 플랫폼은 유리하게도 컴퓨터 시스템이 물리적 위치, 사용자가 이 물리적 위치에서 대화할 수 있는 사람들, 및 사용자의 활동 등과 같은 실행 환경에 대한 컨텍스트 정보를 모으고 노출시킬 수 있게 하여, 컴퓨터를 실행 환경에 지능적으로 적응시키는 데에 이 컨텍스트 정보가 이용될 수 있도록 할 수 있다. 본 명세서에서 이용되는 실행 환경은 설치 또는 구성 설정, 실행가능 명령어, 및 운영 체제 서비스와 같은 실행가능 설정을 의미한다. 후술될 바와 같이, 본 발명의 아키텍처는 컴퓨터 시스템의 실행 환경에 관한 컨텍스트 정보를 설정하고, 추적하고, 획득하기 위한 인터페이스를 가지는 프레임워크 및 컴포넌트를 제공한다. 제공된 컴포넌트들 중에는 플랫폼에서 실행되는 실행가능물들에 의한 액세스를 위하여 플랫폼 레벨에서 컨텍스트 정보를 통합하기 위한 통합된 데이터 저장소 및 컨텍스트 엔진이 있을 수 있다. 사용자 컨텍스트 데이터, 실행가능물 컨텍스트 데이터 및 시스템 컨텍스트 데이터를 포함하는 임의의 유형의 컨텍스트 정보가 저장될 수 있다. 본원에 기술된 다양한 시나리오, 흐름도 및 블럭도는 단지 예이며, 본 발명이 적용할 다수의 다른 시나리오가 존재한다고 이해될 것이다.
도면의 도 2를 참조해 보면, 컨텍스트-인식 플랫폼을 위한 시스템 컴포넌트의 예시적인 아키텍처를 일반적으로 나타내는 블럭도가 도시된다. 본 기술 분야에서 숙련된 기술을 가진 자라면 도면에 도시된 블럭 내에서 구현된 기능은 개별적인 컴포넌트들로서 구현될 수 있거나 몇몇의 또는 모든 블럭의 기능이 하나의 컴포넌트 내에서 구현될 수 있음을 인식할 것이다. 예로서, 컨텍스트 플랫폼(204)에서의 컨텍스트 API(206)의 기능은 개별적인 컴포넌트로 구현될 수 있다.
도 2에 도시된 컨텍스트 플랫폼(204)은 다양한 실행가능물(202) 및 데이터 저장소(210)와 같은 저장 설비에 동작적으로 연결될 수 있다. 컨텍스트 플랫폼(204)은 컨텍스트 애플리케이션 프로그래밍 인터페이스(API)(206) 및 컨텍스트 엔진(208)을 포함할 수 있다. 컨텍스트 API(206)는 애플리케이션 프로그래밍 인터페이스(API), 객체, 제어 또는 다른 실행가능 코드일 수 있다. 컨텍스트 API(206)는, 예를 들면, 컨텍스트 정보를 설정하거나, 추적하거나, 획득하기 위한 액세스를, 데이터 저장소(210)에 컨텍스트 정보를 추가하는 SetContextData, 데이터 저장소(210)의 컨텍스트 정보에 대한 갱신이 통지되는 TrackContextData, 및 데이터 저장소(210)의 컨텍스트 정보를 검색하는 GetContextData와 같은 호출가능한 인터페이스를 포함함으로써, 제공할 수 있다. 다른 컨텍스트 API들이 또한 컨텍스트 정보를 조작하는 데에 이용될 수 있다.
컨텍스트 엔진(208)은 커널 컴포넌트, 애플리케이션 컴포넌트, 링크된 라이브러리, 객체 등의 컴포넌트를 포함하는 임의의 실행가능한 소프트웨어 코드일 수 있다. 컨텍스트 엔진(208)은 데이터 저장소(210)에서의 컨텍스트 정보의 설정, 추적, 및 획득과 같은 실행가능한 소프트웨어 코드로부터의 컨텍스트 정보 동작을 수행하라는 요청을 수신할 수 있다. 예를 들면, 컨텍스트 엔진(208)은 컨텍스트 정보에 대한 갱신 또는 변경을 통지받는다는 요청들을 추적할 수 있고 추적이 요청된 컨텍스트 정보의 갱신 또는 변경을 수신할 때 실행가능물에 통지할 수 있다. 컨텍스트 정보를 영속적으로 저장하기 위하여, 컨텍스트 엔진(208)은 데이터 저장소(210)와 같은 다양한 저장 설비에 동작적으로 연결될 수 있다. 컨텍스트 엔진(208)은 GUID와 같은 고유한 식별자를 컨텍스트 정보를 저장하는 데에 이용될 수 있는 컨텍스트 정보를 나타내는 한 블럭의 컨텍스트 데이터와 연관시킬 수 있다.
데이터 저장소(210)는 컨텍스트 플랫폼(204)에서 실행되는 실행가능물에 의한 액세스를 위하여 플랫폼 레벨에서 컨텍스트 정보를 통합함으로써 컨텍스트 플랫폼(204)에 대한 컨텍스트 정보의 통합된 저장소를 제공할 수 있다. 데이터 저장소는 컨텍스트 유형을 저장할 수 있다. 컨텍스트 유형은 비트들의 데이터 블럭에 의해 나타나는 컨텍스트 정보의 식별자로서 작용하는 GUID일 수 있다. 본 명세서에서 이용되는 컨텍스트 정보는 위치, 활동 및 상태 정보를 포함하는 논리적 및 물리적 실행 환경에 관한 임의의 정보를 포함하지만 이에 한정되지 않는다. 실제로, 컨텍스트 정보는 임의의 데이터 유형, 포맷, 또는 사이즈일 수 있다. 예를 들면, 컨텍스트 정보는 2진 데이터, 포맷팅된 데이터, 오디오 또는 비디오와 같은 미디어 데이터, 인간이 읽을 수 있는 데이터, XML, 암호화된 데이터, 등을 포함할 수 있다. 데이터 저장소(210)에 저장된 다양한 컨텍스트 정보 중에서, 사용자 컨텍스트 데이터(212), 실행가능한 컨텍스트 데이터(214) 및 시스템 컨텍스트 데이터(216)가 있을 수 있다. 사용자 컨텍스트 데이터(212)는 프레젠테이션 프로그램 등을 이용하는, 웹 서핑과 같은 사용자의 활동에 관한 정보를 포함할 수 있다. 실행가능한 컨텍스트 데이터(214)는 프로그램 설정, 열린 파일들, 등과 같은 실행가능물의 상 태에 관한 정보를 포함할 수 있다. 또한 시스템 컨텍스트 데이터(216)는 배터리 전력 레벨, 네트워크 접속 등과 같은 하드웨어 장치의 상태와 같은 시스템 상태에 관한 정보를 포함할 수 있다.
실행가능물은 컨텍스트 정보를 제공하거나 얻고 및/또는 컨텍스트 정보의 변경에 따라서 자신의 컴퓨팅 환경을 적응시키는 임의의 애플리케이션 프로그램, 커널 컴포넌트, 또는 다른 실행가능물일 수 있다. 실행가능물(202)은 컨텍스트 API(206)에 동작적으로 연결되어 컨텍스트 정보를 설정, 추적, 또는 획득하기 위하여 호출가능한 인터페이스를 액세스할 수 있다. 예를 들면, 마이크로소프트® 윈도우즈 XP 운영 체제를 위한 네트워크 위치 인식(NLA) 서비스는 네트워크 변경들에 대하여 모니터링할 수 있고 네트워크의 컨텍스트 정보를 새로운 네트워크 접속에 설정하는 SetContextData API를 호출함으로써 네트워크 정보를 컨텍스트 플랫폼에 제공할 수 있다. 컨텍스트 엔진은 이 네트워크 접속과 관련된 새로운 값을 수신할 수 있고 네트워크 접속에 대한 컨텍스트 정보의 변경에 관하여 통지받기 위해 TrackContext API를 호출하였던 실행가능물을 탐색할 수 있다. 그 다음 컨텍스트 엔진은 이들 실행가능물들에 네트워크 접속에 관한 컨텍스트 정보의 변경에 대한 통지를 송신할 수 있다. 네트워크 접속에 대한 변경의 통지를 수신한 결과로서, 하나 이상의 실행가능물은 디폴트 프린터 설정, 디폴트 인터넷 브라우저 홈페이지, 인터넷 브라우저 프록시 설정, 등과 같은 시스템 설정들을 변경시킬 수 있다. 마찬가지로, 실행가능물은 컨텍스트 정보의 갱신이 통지되면 컨텍스트 정보를 이용하여 자신의 실행 환경을 적응시킬 수 있다.
도 3은 대안적인 실시예에서의 컨텍스트-인식 플랫폼(context-awareness platform)을 위한 시스템 컴포넌트의 예시적인 아키텍쳐를 일반적으로 도시하는 블럭도이다. 도 2와 관련하여 논의한 시스템 컴포넌트들 외에도, 관리되는 코드(maneged code)를 사용한 컨텍스트 플랫폼(302)의 구현을 제공하기 위하여, 관리되는 컨텍스트 애플리케이션 프로그래밍 인터페이스(304)가 컨텍스트 API(206)에 동작적으로 연결될 수 있다. 관리되는 코드는 마이크로소프트 .NET 플랫폼용으로 개발된 소프트웨어 코드를 지칭하는 것으로, 마이크로소프트 CLR(Common Language Runtime)에 의해 사용될 수 있는 메타데이터를 포함한다. 바람직하게는, .NET 런타임은 메모리 할당, 메모리 재생, 유형 검사 및 기타 데이터 관련 태스크들과 같은 데이터 관련 태스크들을 관리할 수 있다. 관리되는 컨텍스트 API(304)는 2개의 정적 메소드 SetContext 및 GetContext와, 실행가능물들이 윈도우 메시지와 직접적으로 대화하기 보다는 .NET 상호운영성 어셈블리(interoperability assembly)를 사용하여 컨텍스트 정보 이벤트를 수신할 수 있게 해 주는 비-정적 메소드들의 세트를 갖는 ContextClient 객체를 포함할 수 있다. 관리되는 컨텍스트 API(304)는 컨텍스트 API(206)에 동작적으로 연결될 수 있고, 컨텍스트 엔진(208)과 통신하기 위하여 .NET 상호운용성 어셈블리를 사용하여 상기에 설명된 컨텍스트 API(206)를 이용할 수 있다.
SetContext 메소드는 컨텍스트의 유형에 관한 새로운 컨텍스트 정보를 제공하기 위하여 실행가능물들에 의해 사용될 수 있다. 컨텍스트의 유형은 메소드에 전달된 객체의 유형에 의해 결정될 수 있다. 컨텍스트 엔진은 컨텍스트 정보를 메 소드에 전달된 객체에 대응하는 GUID에 연관시킴으로써 이 정보를 저장할 수 있다. 실행가능물들은 특정 유형의 컨텍스트에 대한 현재의 컨텍스트 정보를 획득하기 위하여 GetContext 메소드를 사용할 수 있다. 컨텍스트 엔진은 컨텍스트의 유형에 대한 GUID를 사용하여, SetContext 메소드에 대한 이전의 호출에 의해 데이터 저장소에 기입될 수 있는 저장된 컨텍스트 정보를 탐색할 수 있다.
관리되는 컨텍스트 API(304)는 ContextClient라고 칭해지는 객체에 의해 액세스될 수 있는 이벤트 메커니즘도 포함할 수 있다. ContextClient는 ContextChanged라는 명칭의 이벤트와, OldContext, NewContext, ContextType, 및 Stale과 같은 속성들을 갖는 ContextChangedEventArgs 객체를 이용할 수 있는 ContextChangedEventHandler라는 명칭의 이벤트 핸들러를 노출시킬 수 있다. OldContext 및 NewContext 속성은, 이벤트 수신기가 컨텍스트의 상태가 변경되기 전과 후에 그 컨텍스트의 상태를 결정하여, 적절한 액션을 취할 수 있게 해 줄 수 있다. ContextType은 이러한 이벤트에서의 객체들의 유형을 표현할 수 있다. 마지막으로, Stale 플래그는 이러한 컨텍스트 정보를 제공했던 실행가능물이 여전히 휘발성 메모리 내에 상주할 수 있는지의 여부를 표시하는 데에 사용될 수 있다.
도 4는 컨텍스트 플랫폼의 다양한 실시예에 포함될 수 있는 컨텍스트 엔진을 위한 시스템 컴포넌트의 예시적인 아키텍쳐를 일반적으로 도시하는 블럭도이다. 컨텍스트 엔진(208)은 메시지 큐로부터 컨텍스트 정보 동작들을 수행하라는 요청을 수신할 수 있고, 컨텍스트 정보의 갱신들로 데이터 저장소(210)를 갱신할 수 있고, 그 다음 실행가능물들(202)에 변경을 통지할 수 있다. 컨텍스트 엔진(208)은 메시 지 큐(402), 컨텍스트 메시지 프로세서(404), 컨텍스트 데이터(406), 컨텍스트 통지 큐(414), 컨텍스트 통지기(416), 통지 테이블(418) 및 하나 이상의 통지기 스레드(notifier thread)(420)를 포함할 수 있다. 일 실시예에서, 컨텍스트 정보 동작을 위하여 실행가능물에 의해 송신된 요청이 메시지 큐(402)에 수신될 때마다, 운영 체제는 메시지를 처리하기 위하여 컨텍스트 메시지 프로세서(404)를 디스패치(dispatch)할 수 있다. 컨텍스트 엔진(208)에 의해 수신될 수 있는 메시지들로는, 컨텍스트 데이터(406)에 컨텍스트 정보를 추가하기 위한 SetContextData 요청, 컨텍스트 데이터(406)에서 컨텍스트 정보에 대한 갱신들을 통지받기 위한 TrackContextData 요청, 및 컨텍스트 데이터(406)로부터 컨텍스트 정보를 검색하기 위한 GetContextData 요청이 포함될 수 있다.
컨텍스트 메시지 프로세서(404)는 컨텍스트 정보(406)로 도시된 바와 같이, 메모리에 컨텍스트 정보를 저장할 수 있다. 다양한 컨텍스트 정보들 중에서도 특히 사용자 컨텍스트 데이터(408), 실행가능한 컨텍스트 데이터(410) 및 시스템 컨텍스트 데이터(412)가 컨텍스트 데이터(406)에 저장될 수 있다. 컨텍스트 엔진(208)은 컨텍스트 정보를, 그 컨텍스트 정보를 포함하는 관련 데이터 블럭을 갖는 GUID로서 저장할 수 있다. GetContextData 요청이 수신될 때마다, 컨텍스트 메시지 프로세서(404)는 컨텍스트 데이터(406)로부터 요청된 컨텍스트 정보를 획득할 수 있고, 그 컨텍스트 정보의 사본을 공유 메모리 버퍼나, 온-디스크 파일(on-disk file) 또는 시스템 레지스트리 등과 같은 메모리 맵핑된 파일(memory mapped file) 또는 기타 공유된 위치에 배치시켜, 실행가능물이 통지를 수신한 때에 그 사본을 판독할 수 있게 한다. SetContextData 요청이 수신될 때마다, 컨텍스트 메시지 프로세서(404)는 SetContextData 요청 내의 컨텍스트 정보를 컨텍스트 데이터(406)에 추가함으로써 컨텍스트 데이터를 갱신한 다음에, 컨텍스트 정보를 컨텍스트 통지 큐(414)에 배치시킬 수 있다. 일 실시예에서, 컨텍스트 정보는 오래된 컨텍스트 정보, 새로운 컨텍스트 정보, 및 이러한 컨텍스트 정보의 갱신을 통지받기를 요청한 실행가능물들의 리스트를 포함할 수 있는 갱신 객체일 수 있다. 다른 실시예에서, 컨텍스트 정보의 갱신을 통지받기를 요청한 실행가능물들의 리스트는, 실행가능물들의 리스트가 하나 이상의 컨텍스트 유형 또는 GUID에 연관지어져 있을 수 있는 통지 테이블(418) 내에 개별적으로 저장될 수 있다. 컨텍스트 정보가 컨텍스트 통지 큐(414)에 배치된 후에, 컨텍스트 통지기(416)가 어웨이크(awake)될 수 있다. 일 실시예에서, 컨텍스트 통지기(416)는 컨텍스트 엔진(208)에 의해 대량 생성된 스레드일 수 있다. 컨텍스트 통지기(416)는 컨텍스트 통지 큐(414)로부터 컨텍스트 정보의 갱신을 판독하고, 이러한 컨텍스트 정보의 갱신을 통지받기를 요청한 각각의 실행가능물에 통지 메시지를 송신할 수 있다.
일 실시예에서, 컨텍스트 통지기(416)는 컨텍스트 정보의 갱신을 개개의 실행가능물에 통지하기 위하여 컨텍스트 정보에 대한 통지 메시지를 비동기식으로 송신하기 위해, 하나 이상의 통지기 스레드(420)를 대량 생성할 수 있다. 따라서, 통지기 스레드 상의 임의의 실행가능물에 의한 동기식 블럭은 다른 통지들이 송신되는 것을 저지하지 않을 수 있고, 이전에 어느 한 실행가능물에 송신된 통지가 완료될 것을 요구하지 않으면서, 임의의 개수의 통지가 실행가능물들에 송신될 수 있 다. 컨텍스트 정보의 갱신의 통지를 수신하면, 실행가능물은 공유된 메모리 버퍼 또는 메모리 맵핑된 파일과 같은 공유된 위치로부터 컨텍스트 정보의 갱신을 액세스할 수 있다.
주기적으로, 컨텍스트 엔진(208)은 컨텍스트 데이터(406) 내의 컨텍스트 정보를 데이터 저장소(210)와 같은 영속적인 저장소에 기입할 수 있다. 컨텍스트 엔진(208)은 통지 테이블(418) 또한 영속적인 저장소에 저장할 수 있다. 일 실시예에서, 컨텍스트 엔진(208)은 소정의 비활성 기간 이후에는 슬립 상태로 들어갈 수 있다. 슬립 상태가 되기 전에, 컨텍스트 엔진(208)은 컨텍스트 데이터(406) 및 통지 테이블(418)을 영속적인 저장소에 기입할 수 있다. 비활성 기간의 디폴트값은 예를 들어 1시간일 수 있다. 다양한 실시예들에서, 예상되는 사용자 활동 지속기간에 적합할 수 있는 다른 기간들도 사용될 수 있다. 일부 실시예들에서, 지속기간은 사용자에 의해 설정될 수 있다. 컨텍스트 엔진은 어웨이크된 때에, 영속적인 저장소로부터 통지 리스트를 판독하여 통지 테이블(418)에 기입하는 것은 물론, 영속적인 저장소로부터 컨텍스트 데이터를 판독하여 컨텍스트 데이터(406)에 기입할 수 있다.
실행가능물이 다른 실행가능물들에 의해 사용될 컨텍스트 정보를 제공하기를 원할 때마다, 이 실행가능물은 컨텍스트 엔진에 설정 요청을 송신할 수 있다. 도 5는 컨텍스트 정보를 설정하기 위한 일 실시예에서의 실행가능물에 의해 진행되는 예시적인 단계들을 일반적으로 도시하는 흐름도이다. 첫번째로, 단계(502)에서 컨텍스트의 변경이 탐지될 수 있다. 그 다음, 단계(504)에서는 컨텍스트 정보를 설 정하라는 요청이 송신될 수 있다. 예를 들어, 윈도우즈 XP 운영 체제용의 NLA 서비스와 같은 실행가능물은 네트워크 변경들을 모니터링할 수 있고, 새로운 네트워크 접속을 탐지할 수 있다. 그러면, 실행가능물은 네트워크의 컨텍스트 정보를 그 새로운 네트워크 접속으로 설정하기 위한, SetContextData API를 호출함으로써, 네트워크 정보를 컨텍스트 플랫폼에 제공할 수 있다.
도 6은 컨텍스트 정보를 추적하기 위한 일 실시예에서의 실행가능물에 의해 진행되는 예시적인 단계들을 일반적으로 도시하는 흐름도를 나타낸 것이다. 첫번째로, 단계(602)에서, 컨텍스트 정보를 추적하라는 요청이 송신될 수 있다. 예를 들어, 컴퓨터 시스템의 디폴트 프린터 설정을 담당할 수 있는 실행가능물은, 네트워크 접속에 관한 컨텍스트 정보의 갱신을 통지받기 위하여, TrackContextData API를 호출하여, 컨텍스트 플랫폼에 추적 요청을 송신할 수 있다. 다음으로, 컨텍스트 정보의 갱신의 통지가 단계(604)에서 수신될 수 있다. 다음으로, 컨텍스트 정보의 갱신이 단계(606)에서 획득될 수 있다. 예를 들어, 앞의 예에서 디폴트 프린터 설정을 담당했던 실행가능물은, 새로운 네트워크 접속에 관한 컨텍스트 정보의 갱신의 통지를 수신할 수 있고, 공유 메모리 버퍼 또는 메모리 맵핑된 파일로부터 그 새로운 네트워크 접속에 관한 컨텍스트 정보의 갱신의 사본을 검색할 수 있다. 마지막으로, 실행가능물은 단계(608)에서 컨텍스트 정보의 갱신에 따라 적응할 수 있다. 따라서, 앞의 예에서 디폴트 프린터 설정을 담당했던 실행가능물과 같은 실행가능물은, 디폴트 프린터 설정을 새로운 네트워크 접속에 사용되는 설정으로 변경하는 것 등에 의해, 컨텍스트 정보의 갱신에 따라 자신의 실행 환경을 적응시킬 수 있다.
도 7은 컨텍스트 정보를 획득하기 위한 일 실시예에서의 실행가능물에 의해 진행되는 예시적인 단계들을 일반적으로 도시하는 흐름도이다. 첫번째로, 컨텍스트 정보를 획득하라는 요청이 단계(702)에서 송신될 수 있다. 예를 들어, 브라우저의 디폴트 홈페이지를 설정하는 것을 담당할 수 있는 실행가능물은 네트워크의 컨텍스트 정보를 획득하기 위한 GetContextData API를 호출할 수 있다. 다음으로, 컨텍스트 정보의 통지가 단계(704)에서 수신될 수 있다. 마지막으로, 실행가능물은 단계(706)에서 획득된 컨텍스트 정보에 따라 적응할 수 있다. 예를 들어, 앞의 예에서 브라우저의 디폴트 홈페이지를 설정하는 것을 담당했던 실행가능물은 디폴트 홈페이지 설정을 네트워크 접속에 사용되는 설정으로 변경할 수 있다.
도 8은 요청된 컨텍스트 정보 동작을 수행하기 위한 일 실시예에서의 컨텍스트 엔진에 의해 수행되는 예시적인 단계들을 일반적으로 도시하는 흐름도이다. 당업자라면, 한 구현예가 동일한 효과를 달성하고 본 발명의 범위를 벗어나지 않으면서, 이러한 단계들을 다른 순서로 수행하거나, 효율성 또는 유연성을 위하여 이러한 단계들의 일부만을 수행하기로 선택할 수 있음을 알 것이다. 단계(802)에서, 컨텍스트 정보 동작이 수신될 수 있다. 예를 들어 컨텍스트 엔진(208)은 실행가능물로부터 컨텍스트 정보 동작을 수신할 수 있다. 단계(804)에서, 수신된 컨텍스트 정보 동작이 컨텍스트 정보를 설정하라는 요청인지의 여부가 판정될 수 있다. 그렇다면, 단계(806)에서는 메모리에 저장된 컨텍스트 데이터의 표현에 컨텍스트 정보가 추가될 수 있고, 단계(808)에서는 컨텍스트 정보가 컨텍스트 통지 큐에 배치 될 수 있다. 일 실시예에서, 컨텍스트 엔진(208)은 설정 요청 내의 컨텍스트 정보를 컨텍스트 데이터(406)에 추가한 다음에, 컨텍스트 정보를 컨텍스트 통지 큐(414)에 배치시킬 수 있다.
단계(810)에서, 이러한 컨텍스트 정보의 갱신을 통지받기를 요청한 임의의 실행가능물들은, 이러한 컨텍스트 정보의 갱신을 통지받을 실행가능물들의 리스트에서 탐색될수 있다. 예를 들어, 일 실시예에서, 이러한 컨텍스트 정보의 갱신을 통지받기를 요청한 실행가능물들의 리스트는, 실행가능물들의 리스트들이 컨텍스트 유형 또는 GUID에 연관지어져 있는 통지 테이블(418)과 같은 통지 테이블 내에 개별적으로 저장될 수 있다. 다른 실시예에서, 이러한 컨텍스트 정보의 갱신을 통지받기를 요청한 실행가능물들의 리스트는 정보들 중에서도 특히 갱신 컨텍스트 정보를 포함하는 갱신 객체에 저장될 수 있다.
단계(811)에서, 이러한 컨텍스트 정보의 갱신을 통지받을 실행가능물들의 리스트에 포함되기를 요청한 임의의 실행가능물이 존재하는지의 여부가 판정될 수 있다. 그렇다면, 단계(812)에서, 이러한 컨텍스트 정보의 갱신을 통지받기를 요청한 실행가능물들의 리스트에, 통지가 송신될 수 있다. 일 실시예에서, 컨텍스트 통지기(416)는 컨텍스트 통지 큐(414)로부터 컨텍스트 정보의 갱신을 판독할 수 있고, 이러한 컨텍스트 정보의 갱신을 통지받기를 요청한 각각의 실행가능물에 통지 메시지를 송신할 수 있다. 다양한 실시예들에서, 컨텍스트 통지기(416)는 컨텍스트 정보의 갱신을 개개의 실행가능물에 통지하기 위하여, 컨텍스트 정보에 대한 통지 메시지를 비동기식으로 송신하기 위해 하나 이상의 통지기 스레드(420)를 대량 생성 할 수 있다.
단계(812)에서 이 컨텍스트 정보의 갱신을 통지받기를 요청한 실행가능물들의 리스트에 통지가 송신되고 난 후, 또는 단계(811)에서 이 컨텍스트 정보의 갱신을 통지받을 실행가능물들의 리스트에 포함되기를 요청한 임의의 실행가능물이 존재하지 않는 것으로 판정된 경우, 단계(814)에서 컨텍스트 정보의 갱신이 영속적으로 저장될 수 있다. 예를 들어, 컨텍스트 엔진(208)은 컨텍스트 데이터(406)에서의 갱신된 컨텍스트 정보를 데이터 저장소(210)와 같은 영속적인 저장소에 주기적으로 기입할 수 있다. 일 실시예에서는, 컨텍스트 엔진(208)은 소정의 비활성 기간 이후에 슬립 상태로 들어가기 전에 컨텍스트 데이터(406)를 영속적인 저장소에 기입할 수 있다. 갱신된 컨텍스트 정보가 영속적으로 저장된 후, 프로세싱은 종료될 수 있다.
단계(804)로 되돌아가서, 수신된 컨텍스트 정보 동작이 설정 요청이 아닌 경우, 단계(816)에서는, 수신된 컨텍스트 정보 동작이 컨텍스트 정보를 추적하기 위한 요청인지의 여부가 판정될 수 있다. 그렇다면, 단계(818)에서, 컨텍스트 정보의 갱신을 통지받을 실행가능물들의 리스트가 갱신될 수 있다. 다음으로, 컨텍스트 정보의 갱신을 통지받을 실행가능물들의 갱신된 리스트가 단계(820)에서 영속적으로 저장될 수 있다. 예를 들어, 컨텍스트 엔진(208)은 통지 테이블(418)에서의 갱신된 실행가능물 리스트를 영속적인 저장소에 주기적으로 기입할 수 있다. 다른 실시예에서, 컨텍스트 엔진(208)은 다른 정보들 중에서도 특히 갱신된 컨텍스트 정보를 포함하는 갱신 객체에서의 갱신된 실행가능물 리스트를 영속적인 저장소에 주 기적으로 기입할 수 있다. 컨텍스트 엔진(208)은 소정의 비활성 기간 이후에 슬립 상태로 들어가기 전에, 다양한 실시예들에서의 갱신된 실행가능물 리스트를 영속적인 저장소에 기입할 수 있다. 통지받을 실행가능물들의 갱신된 리스트가 영속적으로 저장된 후에, 프로세싱은 종료될 수 있다.
단계(816)로 되돌아가서, 수신된 컨텍스트 정보 동작이 추적 요청이 아니었다면, 단계(822)에서, 수신된 컨텍스트 정보 동작이 컨텍스트 정보를 획득하라는 요청인지가 판정될 수 있다. 그렇다면, 단계(824)에서 컨텍스트 정보가 검색될 수 있다. 예를 들어, 일 실시예에서, 컨텍스트 엔진(208)은 컨텍스트 데이터(406)로부터 컨텍스트 정보를 획득할 수 있다. 다른 실시예에서, 컨텍스트 엔진(208)은 데이터 저장소(210)로부터 컨텍스트 정보를 획득할 수 있다. 다음으로, 단계(826)에서, 컨텍스트 정보가 요청자에게 송신될 수 있다. 획득 요청을 송신한 실행가능물에 컨텍스트 정보를 송신하고 난 후, 프로세싱은 종료될 수 있다. 일 실시예에서, 임의의 실행가능물이 획득 요청을 송신한 것에 대한 응답으로 컨텍스트 정보를 수신할 때마다, 이러한 컨텍스트 정보의 갱신을 통지받기를 요청한 실행가능물들의 리스트에 통지가 송신될 수 있다.
바람직하게는, 이러한 시스템 및 방법은, 컴퓨터 시스템이 실행환경에 관한 컨텍스트 정보를 모으고 노출시킬 수 있게 하여, 컴퓨터를 실행 환경에 지능적으로 적응시키는 데에 이 컨텍스트 정보가 이용될 수 있도록 할 수 있다. 실행가능물은 단일 항목의 컨텍스트 정보를 이용하여 실행 환경을 적응시키거나, 여러 항목의 컨텍스트 정보를 이용하여 실행 환경을 적응시킬 수 있다. 또한, 실행가능물은 컨텍 스트 정보를 설정하거나 이용가능한 컨텍스트 정보를 사용하여 실행 환경을 적응시키기 위하여, 다른 실행가능물들과 독립적으로 동작할 수도 있고, 여러개의 실행가능물들과 관련되어 동작할 수도 있다. 컨텍스트 정보는 플랫폼 레벨에서 통합된 데이터 저장소에 통합되어, 플랫폼 상에서 실행되고 있는 임의의 실행가능물이 컴퓨터 시스템을 지능적으로 적응시켜 사용자의 생산성을 향상시키기 위하여 컨텍스트 정보를 제공 또는 사용하도록 할 수 있다.
상기의 상세한 설명에서 알 수 있는 바와 같이, 본 발명은 실행 환경을 적응시키는 데에 사용될 수 있는 컨텍스트-인식 플랫폼을 위한 향상된 시스템 및 방법을 제공한다. 본 발명의 아키텍쳐는 컨텍스트 정보를 설정, 추적 및 획득하기 위한 인터페이스를 갖는 프레임워크 및 컴포넌트들을 제공한다. 제공되는 시스템 및 프레임은 확장가능하다. 사용자 컨텍스트 데이터, 실행가능물 컨텍스트 데이터 및 시스템 컨텍스트를 포함하는, 임의의 유형의 컨텍스트 정보가 이용될 수 있다. 컨텍스트 정보를 제공 또는 사용할 수 있는 임의의 개수의 실행가능물이 지원될 수 있다. 그러므로 시스템 및 방법은 동시대의 컴퓨팅에 필요한 중요한 이점 및 이득을 제공한다고 이해할 수 있다.
본 발명이 다양한 수정과 대안적인 구성들을 허용하긴 하지만, 본 발명의 특정 예시된 실시예들이 도면에 도시되어 있으며 위에서 상세하게 설명되었다. 그러나, 본 발명을 개시된 특정한 형식으로 한정하려는 의도는 없으며, 반대로 본 발명의 취지 및 범위 내에 있는 모든 수정, 대안적인 구성 및 등가물들을 포괄하도록 의도되다고 이해해야 한다.
본 발명은 실행 환경을 적응시키는 데에 이용될 수 있는 컨텍스트-인식 플랫폼을 위한 향상된 시스템 및 방법을 제공한다. 이러한 목적으로, 본 발명은 컴퓨터 시스템의 실행 환경에 관한 컨텍스트 정보를 설정하고, 추적하고, 획득하기 위한 인터페이스를 가지는 프레임워크 및 컴포넌트를 제공한다. 제공된 컴포넌트들 중에는 통합된 데이터 저장소를 포함하는 데이터 저장 설비 및 다양한 실행가능물에 동작적으로 연결된 컨텍스트 플랫폼이 있을 수 있다. 데이터 저장소는 컨텍스트 플랫폼 상에서 실행되는 실행가능물에 의하여 액세스를 위한 플랫폼 레벨에서 컨텍스트 정보를 통합함으로써 컨텍스트 플랫폼에 컨텍스트 정보의 통합된 저장소를 제공할 수 있다. 사용자 컨텍스트 데이터, 실행가능물 컨텍스트 데이터 및 시스템 컨텍스트 데이터를 포함하지만 이에 한정되지 않는 임의의 유형의 컨텍스트 정보가 저장될 수 있다.
컨텍스트 플랫폼은 컨텍스트 플랫폼의 다양한 부분과 다른 실행가능물 간의 데이터 교환 및 프로그래밍적인 대화를 조정하기 위한, 이제부터는 컨텍스트 엔진이라 칭할 실행가능물 코드 및 컨텍스트 애플리케이션 프로그래밍 인터페이스를 포함할 수 있다. 컨텍스트 애플리케이션 프로그래밍 인터페이스는 실행가능물에 대한 액세스를 제공하여 컨텍스트 정보를 설정하거나, 추적하거나, 획득할 수 있다. 임의의 실행가능물은 컨텍스트 애플리케이션 프로그래밍 인터페이스에 동작적으로 연결되어 컨텍스트 정보를 설정하거나, 추적하거나, 획득할 수 있다. 컨텍스트 엔진은 실행가능물로부터, 데이터 저장소에서의 컨텍스트 정보의 설정, 추적, 및 획 득과 같은 컨텍스트 정보 동작을 수행하라는 요청을 수신할 수 있다. 예를 들면, 컨텍스트 엔진은 컨텍스트 정보를 갱신하라는 요청을 수신할 수 있고, 컨텍스트 정보의 변경에 대한 통지를 받도록 요청하였던 실행가능물들을 탐색할 수 있으며, 그 다음 컨텍스트 정보의 변경의 통지를 이 실행가능물에게 송신할 수 있다. 컨텍스트 정보의 변경의 통지를 수신한 결과로서, 하나 이상의 실행가능물이 시스템 설정을 재구성하는 것과 같이 실행 환경을 변경시킬 수 있다. 마찬가지로, 실행가능물은 컨텍스트 정보를 이용하여 자신의 실행 환경을 적응시킬 수 있다.

Claims (20)

  1. 실행가능물에 컨텍스트(context) 정보를 제공하기 위한 컴퓨터 시스템으로서,
    실행가능한 소프트웨어 코드,
    상기 실행가능한 소프트웨어 코드에 동작적으로 연결된 컨텍스트 컴포넌트 - 상기 컨텍스트 컴포넌트는 상기 실행가능한 소프트웨어 코드에 의해 컨텍스트 정보 동작을 요청하기 위하여 호출될 수 있는 애플리케이션 프로그래밍 인터페이스를 가짐 - ,
    상기 컨텍스트 컴포넌트에 동작적으로 연결되어 상기 실행가능한 소프트웨어 코드에 의해 요청된 상기 컨텍스트 정보 동작을 수행하기 위한 컨텍스트 엔진, 및
    상기 컨텍스트 엔진에 동작적으로 연결되어 컨텍스트 정보를 영속적으로 저장하기 위한 통합된 데이터 저장소
    를 포함하는 시스템.
  2. 제1항에 있어서,
    상기 실행가능한 소프트웨어 코드에 의해 컨텍스트 정보 동작을 요청하기 위하여 호출될 수 있는 상기 애플리케이션 프로그래밍 인터페이스는 컨텍스트 정보를 설정하라고 요청하기 위한 애플리케이션 프로그래밍 인터페이스를 포함하는 시스템.
  3. 제1항에 있어서,
    상기 실행가능한 소프트웨어 코드에 의해 컨텍스트 정보 동작을 요청하기 위하여 호출될 수 있는 상기 애플리케이션 프로그래밍 인터페이스는 컨텍스트 정보에서의 변경을 획득하라고 요청하기 위한 애플리케이션 프로그래밍 인터페이스를 포함하는 시스템.
  4. 제1항에 있어서,
    상기 실행가능한 소프트웨어 코드에 의해 컨텍스트 정보 동작을 요청하기 위하여 호출될 수 있는 상기 애플리케이션 프로그래밍 인터페이스는 컨텍스트 정보의 변경을 추적하라고 요청하기 위한 애플리케이션 프로그래밍 인터페이스를 포함하는 시스템.
  5. 제1항에 있어서,
    상기 컨텍스트 엔진은 상기 실행가능한 소프트웨어 코드에 의해 요청된 상기 컨텍스트 정보 동작을 수행하기 위한 컨텍스트 메세지 프로세서를 포함하는 시스템.
  6. 제1항에 있어서,
    상기 컨텍스트 엔진은 상기 실행가능한 소프트웨어 코드에 상기 컨텍스트 정 보에 대한 통지 메세지를 송신하기 위한 컨텍스트 통지기를 포함하는 시스템.
  7. 제1항에 있어서,
    상기 컨텍스트 엔진은 상기 실행가능한 소프트웨어 코드에 상기 컨텍스트 정보에 대한 통지 메세지를 비동기식으로 송신하는 통지기 스레드를 포함하는 시스템.
  8. 제1항에 있어서,
    상기 통합된 데이터 저장소는 기기 상태, 애플리케이션 상태, 및 사용자 활동의 컨텍스트 정보를 영속적으로 저장하기 위한 데이터 저장소를 포함하는 시스템.
  9. 제1항 기재의 시스템을 포함하는 컴퓨터 실행가능 컴포넌트를 구비하는 컴퓨터 판독가능 매체.
  10. 실행가능한 소프트웨어 코드에 컨텍스트 정보를 제공하기 위한 방법으로서,
    실행가능한 소프트웨어 코드의 컨텍스트 정보를 설정하기 위하여 애플리케이션 프로그래밍 인터페이스를 호출하는 단계,
    상기 실행가능한 소프트웨어 코드의 컨텍스트 정보를 설정하는 단계,
    상기 실행가능한 소프트웨어 코드의 컨텍스트 정보를 획득하기 위하여 애플 리케이션 프로그래밍 인터페이스를 호출하는 단계, 및
    기기 상태, 애플리케이션 상태, 및 사용자 활동의 컨텍스트 정보를 포함하는 통합된 데이터 저장소로부터 상기 실행가능한 소프트웨어 코드의 컨텍스트 정보를 획득하는 단계
    를 포함하는 방법.
  11. 제10항에 있어서,
    상기 실행가능한 소프트웨어 코드의 컨텍스트 정보를 설정하라는 요청을 수신하는 단계를 더 포함하는 방법.
  12. 제10항에 있어서,
    상기 실행가능한 소프트웨어 코드의 컨텍스트 정보를 추척하라는 요청을 수신하는 단계를 더 포함하는 방법.
  13. 제10항에 있어서,
    상기 실행가능한 소프트웨어 코드의 컨텍스트 정보를 획득하라는 요청을 수신하는 단계를 더 포함하는 방법.
  14. 제10항에 있어서,
    실행가능한 소프트웨어 코드에 상기 컨텍스트 정보의 갱신을 통지하는 단계 를 더 포함하는 방법.
  15. 제14항에 있어서,
    상기 실행가능한 소프트웨어 코드에 상기 컨텍스트 정보에 대한 통지 메세지를 비동기식으로 송신하기 위한 통지 스레드를 대량 생성(spawn)하는 단계를 더 포함하는 방법.
  16. 제10항에 있어서,
    기기 상태, 애플리케이션 상태, 및 사용자 활동의 컨텍스트 정보를 포함하는 통합된 데이터 저장소에 상기 컨텍스트 정보를 영속적으로 저장하는 단계를 더 포함하는 방법.
  17. 제10항에 있어서,
    상기 획득된 컨텍스트 정보를 이용하여 상기 실행가능한 소프트웨어 코드의 명령어를 상기 실행가능한 소프트웨어 코드의 실행 환경을 변경시키도록 실행하는 단계를 더 포함하는 방법.
  18. 제10항 기재의 방법을 수행하는 컴퓨터 실행가능 명령어를 구비한 컴퓨터 판독가능 매체.
  19. 실행가능물들에 컨텍스트 정보를 제공하기 위한 시스템으로서,
    컨텍스트 정보 동작을 수행하기 위하여 애플리케이션 프로그래밍 인터페이스를 호출하기 위한 수단,
    상기 컨텍스트 정보 동작을 수행하기 위한 수단,
    상기 실행가능한 소프트웨어 코드의 컨텍스트 정보를 획득하기 위하여 애플리케이션 프로그래밍 인터페이스를 호출하기 위한 수단, 및
    상기 실행가능한 소프트웨어 코드의 컨텍스트 정보를 획득하기 위한 수단
    을 포함하는 시스템.
  20. 제19항에 있어서,
    상기 컴퓨터 시스템의 상태, 상기 실행가능한 소프트웨어 코드의 상태, 및 사용자 활동의 컨텍스트 정보를 포함하는 통합된 데이터 저장소에 상기 컨텍스트 정보를 영속적으로 저장하기 위한 수단을 더 포함하는 시스템.
KR1020060007651A 2005-01-26 2006-01-25 컨텍스트-인식 플랫폼을 위한 시스템 및 방법 KR101224721B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/044,354 2005-01-26
US11/044,354 US7716651B2 (en) 2005-01-26 2005-01-26 System and method for a context-awareness platform

Publications (2)

Publication Number Publication Date
KR20060086305A true KR20060086305A (ko) 2006-07-31
KR101224721B1 KR101224721B1 (ko) 2013-01-21

Family

ID=36603024

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060007651A KR101224721B1 (ko) 2005-01-26 2006-01-25 컨텍스트-인식 플랫폼을 위한 시스템 및 방법

Country Status (5)

Country Link
US (1) US7716651B2 (ko)
EP (1) EP1686465A3 (ko)
JP (1) JP2006209774A (ko)
KR (1) KR101224721B1 (ko)
CN (1) CN1811704B (ko)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7735019B2 (en) * 2007-04-25 2010-06-08 International Business Machines Corporation Method for providing functional context within an actively scrolling view pane
US20090083768A1 (en) * 2007-09-20 2009-03-26 Hatalkar Atul N Context platform framework for aggregation, analysis and use of contextual information
US20090138478A1 (en) * 2007-11-27 2009-05-28 Motorola, Inc. Method and Apparatus to Facilitate Participation in a Networked Activity
US8112552B2 (en) * 2008-02-25 2012-02-07 Microsoft Corporation Default peripheral device selection based on location
US20090222300A1 (en) * 2008-03-03 2009-09-03 The Coca-Cola Company Systems and Methods of Marketing to Defined Consumer Groups
US8533227B2 (en) * 2008-05-14 2013-09-10 Red Hat, Inc. Managing website blacklists
US8024732B2 (en) 2008-07-28 2011-09-20 Microsoft Corporation State separation for application changes
US8402174B2 (en) * 2008-12-19 2013-03-19 Intel Corporation Handling sensors in a context-aware platform with hint signals
US8321843B2 (en) * 2009-02-09 2012-11-27 Tranxition Corporation Automatic analysis of an application's run-time settings
US20120096114A1 (en) * 2009-04-09 2012-04-19 Research In Motion Limited Method and system for the transport of asynchronous aspects using a context aware mechanism
US9736675B2 (en) 2009-05-12 2017-08-15 Avaya Inc. Virtual machine implementation of multiple use context executing on a communication device
JP5290863B2 (ja) * 2009-05-15 2013-09-18 株式会社日立製作所 ターミナルサーバ、シンクライアントシステム、及びコンピュータ資源割り当て方法
US9135144B2 (en) * 2009-10-22 2015-09-15 Freescale Semiconductor, Inc. Integrated circuits and methods for debugging
US8606889B2 (en) * 2010-01-21 2013-12-10 Microsoft Corporation Roaming application settings across multiple computing devices
US9002924B2 (en) 2010-06-17 2015-04-07 Microsoft Technology Licensing, Llc Contextual based information aggregation system
GB2484715A (en) * 2010-10-21 2012-04-25 Vodafone Ip Licensing Ltd Communication terminal with situation based configuration updating
US20120108172A1 (en) * 2010-10-29 2012-05-03 Microsoft Corporation Personal digital context
US10409576B2 (en) 2010-10-29 2019-09-10 Intuit, Inc. Chained data processing and application utilization
US10026058B2 (en) 2010-10-29 2018-07-17 Microsoft Technology Licensing, Llc Enterprise resource planning oriented context-aware environment
US9116728B2 (en) * 2010-12-21 2015-08-25 Microsoft Technology Licensing, Llc Providing a persona-based application experience
US8813167B2 (en) * 2010-12-30 2014-08-19 Apple Inc. Dynamic device configuration using predicates
JP5177239B2 (ja) 2011-01-21 2013-04-03 沖電気工業株式会社 コンテキストアウェアシステム及びイベントデータ生成方法
US9544396B2 (en) * 2011-02-23 2017-01-10 Lookout, Inc. Remote application installation and control for a mobile device
US8996687B2 (en) 2011-05-31 2015-03-31 At&T Intellectual Property I, L.P. Context-based computing framework
US8645969B2 (en) * 2011-08-19 2014-02-04 Qualcomm Incorporated Method for dynamic discovery of processors and processor capabilities
US9069899B2 (en) * 2012-06-27 2015-06-30 Microsoft Technology Licensing, Llc Integrating diagnostic information in development environment
US9203891B2 (en) * 2013-03-13 2015-12-01 Qualcomm Incorporated System and method to enable web property access to a native application
JP6238610B2 (ja) * 2013-07-18 2017-11-29 キヤノン株式会社 情報処理端末、制御方法、及びプログラム
JP6259920B2 (ja) * 2013-09-04 2018-01-10 インテル・コーポレーション 複数のモバイルコンピューティングデバイスのための動的なストレージ管理の促進メカニズム
US20150121343A1 (en) * 2013-10-25 2015-04-30 Microsoft Corporation Test impact analysis using cross reference data and metadata
EP3100137B1 (en) 2014-01-30 2019-06-12 Hewlett-Packard Development Company, L.P. Context based mobile device
US20170052793A1 (en) * 2014-05-09 2017-02-23 Nec Corporation Automatic application control system, automatic application control method, and program recording medium
US20170048731A1 (en) * 2014-09-26 2017-02-16 Hewlett Packard Enterprise Development Lp Computing nodes
US10659594B2 (en) 2015-02-12 2020-05-19 American University Of Beirut Context aware mobile personalization system and methods of use
KR20170092409A (ko) * 2016-02-03 2017-08-11 엘지전자 주식회사 이동 단말기 및 이의 제어 방법
US11477302B2 (en) 2016-07-06 2022-10-18 Palo Alto Research Center Incorporated Computer-implemented system and method for distributed activity detection
US10572315B1 (en) * 2016-08-29 2020-02-25 Amazon Technologies, Inc. Application programming interface state management
US10476860B1 (en) 2016-08-29 2019-11-12 Amazon Technologies, Inc. Credential translation
US10552442B1 (en) 2016-08-29 2020-02-04 Amazon Technologies, Inc. Stateful database application programming interface
US10901760B2 (en) * 2018-03-05 2021-01-26 Microsoft Technology Licensing, Llc View augmentation in multiscreen environment
CN108469990A (zh) * 2018-03-14 2018-08-31 北京思特奇信息技术股份有限公司 一种并行计算方法及系统

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6512525B1 (en) * 1995-08-07 2003-01-28 Apple Computer, Inc. Multiple personas for mobile devices
US6401138B1 (en) * 1996-10-28 2002-06-04 Koninklijke Philips Electronics N.V. Interface for patient context sharing and application switching
US6131166A (en) * 1998-03-13 2000-10-10 Sun Microsystems, Inc. System and method for cross-platform application level power management
US6298378B1 (en) * 1998-12-04 2001-10-02 Sun Microsystems, Inc. Event distribution system for computer network management architecture
US7289102B2 (en) * 2000-07-17 2007-10-30 Microsoft Corporation Method and apparatus using multiple sensors in a device with a display
US7072956B2 (en) * 2000-12-22 2006-07-04 Microsoft Corporation Methods and systems for context-aware policy determination and enforcement
US20030131142A1 (en) * 2001-03-14 2003-07-10 Horvitz Eric J. Schema-based information preference settings
US20030182394A1 (en) * 2001-06-07 2003-09-25 Oren Ryngler Method and system for providing context awareness
US6813690B1 (en) * 2001-06-12 2004-11-02 Network Appliance, Inc. Caching media data using content-sensitive identifiers
US7260553B2 (en) * 2002-01-11 2007-08-21 Sap Aktiengesellschaft Context-aware and real-time tracking
AU2003236313A1 (en) * 2002-04-11 2003-10-20 International Business Machines Corporation Computer, computer security setting method, and program
JP2003323363A (ja) 2002-04-30 2003-11-14 Fujitsu Ltd 環境設定装置、環境設定プログラム、および情報処理装置
JP2004005269A (ja) 2002-05-31 2004-01-08 Toshiba Corp データ取得方法、電子機器およびデータ取得プログラム
US20040122892A1 (en) * 2002-12-24 2004-06-24 Brittenham Peter J. Method, apparatus, and computer-program product for event service declaration, registration, and notification

Also Published As

Publication number Publication date
US20060200834A1 (en) 2006-09-07
KR101224721B1 (ko) 2013-01-21
CN1811704B (zh) 2010-06-23
JP2006209774A (ja) 2006-08-10
CN1811704A (zh) 2006-08-02
EP1686465A3 (en) 2009-01-28
EP1686465A2 (en) 2006-08-02
US7716651B2 (en) 2010-05-11

Similar Documents

Publication Publication Date Title
KR101224721B1 (ko) 컨텍스트-인식 플랫폼을 위한 시스템 및 방법
US8572033B2 (en) Computing environment configuration
AU2007221434B2 (en) Auxiliary display gadget for distributed content
US9009292B2 (en) Context-based data pre-fetching and notification for mobile applications
US9098363B2 (en) Search extensibility to third party applications
US9037751B2 (en) Data synchronization transparent to application
US20130219332A1 (en) Power efficient application notification system
US20070074121A1 (en) Interfaces for a productivity suite application and a hosted user interface
US11144601B2 (en) Mobile web scraping
JP6266588B2 (ja) ローカル・データーおよびリモート・データーの同期
CN111930706B (zh) 基于远程调用的分布式网络文件存储系统和方法
EP3374858B1 (en) Creating and modifying applications from a mobile device
CN105847446B (zh) 一种网络数据的获取方法、装置和系统
CN113742716B (zh) 代码运行方法、装置、电子设备、存储介质和程序产品
US11108709B2 (en) Provide status message associated with work status
US20130185733A1 (en) Subscriber-based event subscription
JP4628551B2 (ja) 動的インストールの方法及びコンピュータシステム
CN111078208A (zh) Mvc架构下的数据处理方法、系统、存储介质及电子设备
CN115878915A (zh) 页面访问方法、装置、存储介质以及计算机设备
CN113822031A (zh) 用于处理代码模板的方法和装置
CN116051061A (zh) 信息处理方法、装置、电子设备及可读存储介质
Patel Profile manager-Android application

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: 20151217

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161220

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171219

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20181226

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20191217

Year of fee payment: 8