KR20060114625A - 애플리케이션 환경설정 클래스들을 확장하기 위한 시스템및 방법 - Google Patents

애플리케이션 환경설정 클래스들을 확장하기 위한 시스템및 방법 Download PDF

Info

Publication number
KR20060114625A
KR20060114625A KR1020057012337A KR20057012337A KR20060114625A KR 20060114625 A KR20060114625 A KR 20060114625A KR 1020057012337 A KR1020057012337 A KR 1020057012337A KR 20057012337 A KR20057012337 A KR 20057012337A KR 20060114625 A KR20060114625 A KR 20060114625A
Authority
KR
South Korea
Prior art keywords
user
application
information
notification
event
Prior art date
Application number
KR1020057012337A
Other languages
English (en)
Other versions
KR101231461B1 (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 KR20060114625A publication Critical patent/KR20060114625A/ko
Application granted granted Critical
Publication of KR101231461B1 publication Critical patent/KR101231461B1/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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

본 시스템 및 방법들은 컴퓨터 기능을 개인화하기 위한 시스템을 개시한다. 최종 사용자는, 예를 들어 다수의 간단한 IF-THEN 명제 논리를 사용함으로써 풍부하고 복잡한 환경설정을 용이하게 기록하기 위한 도구들을 제공받을 수 있다. 그 후, 환경설정은 질의들로 변환되고 구조화된 데이터에 효율적으로 실행된다. 그 후, 만족된 환경설정은, 통지를 제공하거나 또는 특정 폴더에 데이터를 저장하는 것과 같은 액션들을 실행한다. 또한, 본 발명의 일 양상에 따르면, 무엇보다도 데이터, 논리, 이벤트들이 모두 스키마화되어, 애플리케이션 컴포넌트들 간 및 애플리케이션들에 걸쳐 데이터를 공유할 수 있게 한다.
환경설정, 개인화, 스키마, 명제 논리, 이벤트, 액션,

Description

애플리케이션 환경설정 클래스들을 확장하기 위한 시스템 및 방법{SYSTEM AND METHOD FOR EXTENDING APPLICATION PREFERENCES CLASSES}
관련 출원들에 대한 교차 참조
본 출원은 2003년 10월 24일에 출원된 "SYSTEM AND METHOD FOR EXTENDING APPLICATION PREFERENCE CLASSES"라는 제목의 미국 특허출원 번호 10/693,717호에 대해 우선권을 주장하며, 그 전체가 참조로 본원에 포함된다.
본 발명은 일반적으로 컴퓨터 시스템에 관한 것으로서, 보다 구체적으로는 컴퓨터 시스템을 개인화(personalizing)하는 시스템 및 방법에 관한 것이다.
컴퓨터 및 컴퓨팅 관련 기술들의 사용자들은 통상적으로 2가지 구별되는 부류, 즉 많이 숙련되고 지식이 있는 개인과 다른 일반인들로 분리된다. 숙련되고 지식이 있는 개인들은, 컴퓨터를 풍부한 방식들로 사용하는 방법을 알고 있으며, 프로그램을 형성하고 풍부하고 쓸모있는 거동을 용이하기 하기 위해 자신의 뜻대로 컴퓨터를 사용할 수 있다. 나머지 세계의 컴퓨터 사용자들은, 지식, 정보에 대한 용이하거나 저렴한 접근, 또는 컴퓨터를 그들의 요구에 맞게 사용하는 능력이 없기 때문에 숙련되고 지식이 있는 개인들에 좌우된다. 기술이 접근에 대한 이러한 장벽중 일부를 제거한 경우 컴퓨팅에 있어서의 주요한 획기적 발전이 일어났다. 메 인프레임의 세계에서, 컴퓨터는 거의 가장 큰 비지니스에 대해서도 비용이 비싸서 여유가 되지 않았다. 그 후, 미니 컴퓨터 및 개인용 컴퓨터(PCs)의 출현으로 비용 장벽이 무너졌고 작은 비지니스 및 개인들이 컴퓨터를 사용할 수 있게 되었다. 1980년대, 프로그래머들을 GUI(Graphical User Interface) 애플리케이션들을 구축하기 위해 노력하였다. 풍부하고 일관된 GUI들 없이는, 프로그래머들이 PC 사용자들을 위한 쓸모있는 애플리케이션들을 생성할 수 없었다. 비주얼 베이직 혁명뿐만 아니라 컨트롤 및 이벤트 기반 GUI 구성의 사용으로 인해 애플리케이션 개발자들이 풍부한 애플리케이션들을 용이하게 생성할 수 있게 되었다. 이어서, 보다 많은 최종 사용자들이 이러한 애플리케이션들을 이용할 수 있는 선순환 사이클이 확립되었다. 1990년대에는, 최종 사용자들이 정보에 대한 접근 부족을 극복하기 위해 노력하였다. 인터넷이 성장함에 따라 이러한 공간을 변환시키고, 브라우저를 사용하는 누구에게나 거의 모든 쓸모있는 정보가 접근가능하게 되었다. 그러나, 극복될 필요가 있는 여전히 많은 장벽이 존재한다.
기존 컴퓨팅은 개인용이 아니다. 진정으로 "개인용(personal)"인 소위 퍼스널 컴퓨터는 거의 없었다. 로컬 디스크에 저장된 데이터가 개인용이라는 것은 맞다. 그러나, 기계의 행위, 즉 사용자를 위해 수행하는 액션(들)이 수백만 사용자들에 걸쳐 거의 동일하다. 놀랍도록 강력한 범용 컴퓨터를 소유함에도 불구하고, 평균적인 사용자는 컴퓨터를, 통신 종단점으로서 유용하고, 검색 진입점으로서 유용하고, 소정의 고정된 대중시장적인 애플리케이션을 실행하는데 유용한 정적인 도구로 취급하나, 다른 경우 단어의 진정한 의미의 임의의 "개인용 컴퓨팅(personal computing)"을 할 수 없다. 현재의 애플리케이션들에 가용한 개인화 기능은 가능한 것과 원하는 것의 표면을 단지 건드리는 것뿐이다.
또한, 기존의 컴퓨팅은 자동화되어 있지 않고, 적절한 시간에 사용자가 결정을 내리고 조치를 취해야 하는 수동이다. 가장 일반적인 컴퓨터 최종 사용자들의 일상적인 루틴을 생각해보자. 그중에서, 최종 사용자는 정보를 수집하고, 통신하고, 통신을 개시하거나 응답하고, 정보를 조직화한다. 컴퓨터들은 사람들 간의 통신을 개선시키고 정보에 대한 접근을 개선시켰다. 그러나, 컴퓨터는, 결정을 하고 적절한 시간에 조치를 취하는 최종 사용자의 책임감을 거의 경감시키지 못한다.
여전히, 종래의 컴퓨팅은 컨텍스트적(contextual)이지 않다. 통상적으로 컴퓨터 소프트웨어는 오히려 정적이고 사용자의 실제 상황에 무관한 옵션 설정들을 제공한다.
진정으로 개인화된 컴퓨터 시스템 - 최종 사용자들의 요구와 선호를 알아채고 사용자들의 요구뿐만 아니라 사용자 컨텍스트(user context)에 의해 안내되는 방식으로 작용하는 시스템 - 이 필요하다. 또한 컴퓨터 시스템 및 소프트웨어는 모든 최종 사용자에게, 하나 이상의 최종 사용자들의 관심 정보를 수집하고 조사하며 사용자에 의해 지정된 방식으로 해당 정보에 자동적으로 반응하는 개인용 보조수단을 제공하여야 한다.
본원의 소정의 양상들에 대한 기본적인 이해를 제공하기 위해 본원의 간략한 요약이 아래에 제공된다. 이러한 요약은, 본원에 대한 광범위한 개요가 아니다. 본 발명의 중요한/핵심 구성요소를 식별하거나 또는 본 발명의 범위를 결정하도록 의도되지 않는다. 그 유일한 목적은, 나중에 제공될 보다 상세한 설명에 대한 서론으로서 간략한 형태로 본 발명의 소정의 개념들을 제공하는 것이다.
정보 에이전트 시스템, 애플리케이션, 및 방법들이 본원에 개시된다. 정보 에이전트 시스템은, 정보 에이전트 애플리케이션(때때로 IA 애플리케이션들로 본원에서 지칭됨)을 실행하기 위한 플랫폼을 제공한다. 그 후, IA 애플리케이션들은 최종 사용자들에 의해 프로그램되고, 최종 사용자의 실행 보조자 또는 에이전트들로서 사용될 수 있다. 그 후, 에이전트들은 최종 사용자의 개인 생산성을 크게 향상시키고, 데스크톱 애플리케이션들 및 모든 개인용 통신 매체들(예를 들어, 이동전화, 페이저, PDA ...)를 통합시킬 수 있다.
정보 애플리케이션 시스템의 중심은 데이터의 스키마화(schematization)이다. 스키마화는 잘 알려고 명확한 패턴들로 데이터를 구성하는 것인데, 이는 다수의 애플리케이션들이 서로 인식하고 상호작용할 수 있게 한다. 정보 특성, 정보 이벤트들 및 판단 논리 모두가 스키마화될 수 있다. 스키마화된 정보 특성들은, 최종 사용자 애플리케이션들(예를 들어, 전자 메일, 사람, 그룹들, 위치들 ...)에 기초한 데이터와 연관있다. 정보 특성들은 스미카화되어 다수의 서로 다른 애플리케이션들에서 데이터가 일관되게 해석될 수 있게 한다. 정보 이벤트들은 프로그램 논리를 부착하기 위한 훅(hooks)을 제공한다. 이러한 이벤트들은 하이 레벨이고 미숙한 최종 사용자들에 의한 이해를 용이하게 하기 위해 정보 흐름과 연결된다. 이벤트들도 스키마화될 수 있다. 또한, 판단 논리가 스키마화될 수 있다. 최종 사용자들은 훈련된 개발자들이 아니기 때문에, 프로그램을 전통적인 프로그래밍 언어로 기록할 것으로 기대하기 어렵다. 오히려, 스키마화된 논리 빌딩 블록들(예를 들어, IF-THEN 명제(propositions))이 최종 사용자들에게 제공되어 블록들을 함께 간단하고 풍부한 조합으로 결합시킴으로써 프로그램할 수 있게 한다. 데이타, 정보 훅(이벤트)의 스키마화 및 최종 사용자 프로그래밍 성능은, 애플리케이션들의 많은 에코 시스템을 연결하고 최종 사용자 논리를 통해 협업하는 큰 값을 최종 사용자에게 허용하며, 이는 그 후, 초심자 최종 사용자들이 시스템 통합자가 될 수 있게 한다.
또한, 본 발명의 일 양상에 따르면, 정보 애플리케이션 시스템은, 중량급 및 경량급 정보 애플리케이션들 모두를 컴파일하고 실행할 수 있는 유연한 실행 엔진을 포함한다. 중량급 애플리케이션들은, 그중에서도 하이-엔드 서버 상에서 종종 작동하고 높은 처리량 및 범위성(scalability)을 필요로 하는 애플리케이션들을 포함한다. 경량급 애플리케이션들은, 개인용 컴퓨터와 같은 보다 작은 시스템 상에서 종종 실행되고 낮은 대기시간, 작은 데이터베이스 풋프린트(footprint), 및 작은 작업 세트를 필요로 하는 애플리케이션들이다. 보다 작은 애플리케이션에서는, 대기시간과 처리량 간의 트레이드오프(tradeoff)가 보다 큰 서버 애플리케이션들에서와 반대가 된다. 따라서, 본 발명의 실행 엔진은, 특정 시스템 요구조건들(예를 들어, 낮은 대기시간, 작은 데이터베이스 풋프린트...)을 강조하도록 트레이트오프함으로써 복수의 서로 다른 애플리케이션 플랫폼들 상에서 애플리케이션들을 컴파일하고 실행할 수 있다는 점에서 유연하다.
본 발명의 다른 양상에 따르면, 최종 사용자 환경설정 또는 규칙들은 한번에 하나씩 개발되나 세트로 실행된다. 한번에 하나의 프로그래밍 모델(one-at-a-time programming model)은, 개발자들에게 가장 자연스러운 모델이며, 이는 개발자들이 하나의 환경설정에 대해 하나의 이벤트를 지정할 수 있게 한다. 그러나, 본원의 일 양상에 따르면, 시스템은, 한번에 하나씩의 프로그램 선언을 검색하고, 세트 지향 방식으로 실행되는 조건 클래스 질의들을 만들어 인덱싱과 복제 제거(duplicate elimination)와 같은 기술들을 이용한다. 이것은, 개발자들 및 최종 사용자들이 한번에 하나씩 프로그램을 개념화하고 기록하도록 하면서 환경설정들이 매우 효율적인 방식으로 평가된다는 점에서 이점이 있다.
본 발명의 다른 양상에 따르면, 새로운 애플리케이션 설치 시스템 및 방법이 제공된다. 종래 시스템에서, 애플리케이션 설치는 데이터베이스 객체, 표 및 저장된 절차들의 증식을 포함한다. 소정의 경우 애플리케이션들이 완전히 새로운 데이터베이스를 생성한다. 본 발명은, 기본 표들의 세트를 제공함으로써 애플리케이션 설치를 간략화시키고 촉진시킨다. 애플리케이션을 설치하기 위해, 시스템은 단순히 기본 표들을 갱신하면 된다. 이것은, 프로그램 액션들, 조건들, 이벤트들 및 절차들을 데이터로 저장함으로써 달성된다. 예를 들어, 절차에 있어서, 절차들이 텍스트 목록으로 생성될 수 있는데, 이는 데이터 저장소에 저장된다. 그러한 절차들을 작동시키기 위해, 프로그램 텍스트는 데이터 저장소로부터 간단히 확보되고 실행된다.
본 발명의 또 다른 양상에 따르면, 시스템은, 조건들/액션들이 서로 다른 정보 도메인들에 걸쳐 정보를 관련시킬 수 있게 하는 접근자 상수들(accessor constants)을 지원할 수 있다. 접근자 상수들은 서로 다른 도메인들에 걸쳐 정보 교환 또는 데이터 공유를 용이하게 한다. 예를 들어, 접근자 상수 MyFamily는, 전자 메일 애플리케이션 또는 달력 애플리케이션들에 의해 저장된 데이터를 질의함으로써 MyFamily의 구성원을 접근자 기능이 결정할 수 있도록 정의된다. 스키마화된 논리 및 접근자들의 조합은 적어도, 프로그래머가 아닌 사람들이 효율적인 크로스-도메인 질의(cross-domain queries)들을 기록할 수 있게 한다는 점에서 이점이 있다. 또한, 비교적 작은 개수의 접근자 제한들과 결합된 비교적 작은 개수의 조건 클래스들은, 다른 경우 애플리케이션 개발자에 의해 제공되지 않았던 많은 개수의 관심 조건들이 사용될 수 있게 한다.
본 발명의 또 다른 양상에 따르면, 사용자 정의된 환경설정은 애플리케이션들 간의 관계들을 인에이블시키도록 확장될 수 있다. 대부분은, 사용자들에게 제공되는 기능에 의해 IA 애플리케이션의 척도가 결정된다. 따라서, IA 애플리케이션이 확장가능한 정도는, 새로운 조건들 및 액션들이 기존의 애플리케이션의 컨텍스트 내에서 새로운 환경설정을 정의하는 사용자들에게 가용하게 되는 정도에 의해 결정될 수 있다. 애플리케이션 확장성은, 애플리케이션이 설치된 후에 본래 애플리케이션의 제작자(들)에 의한 추가 개입없이, 새로운 조건들 및 액션들이 애플리케이션에 추가될 수 있도록 하는 것을 주 목적으로 한다. 따라서, 개발자의 입력 없이, 최종 사용자들은, 서로 다른 애플리케이션들에 의해 제공되는 조건들 및 액션들을 사용하는 환경설정들을 생성하여, 애플리케이션들 간에 풍부한 관계들을 가능게 한다.
또한, 본 발명의 시스템은, 정보 에이전트 애플리케이션들을 지원한다. 본 발명의 일 양상에 따르면, 그러한 하나의 애플리케이션들은 폴더들, 데이터 컨테이너들 또는 데이터 저장소 및 연관된 파일 시스템(예를 들어, 계층구조 시스템, 임의적이거나 명시적인 관계를 통해 연관된 파일들)에 의해 제공되는 다른 데이터 조직 시스템을 개인화하는 것과 관련될 수 있다. 개인화된 폴더들은 최종 사용자 지정 논리 또는 환경설정에 의해 정의 및 제어된다. 따라서 최종 사용자들은, 이벤트 발생시 폴더들의 콘텐트를 제어하는 조건들 및 액션들을 정의할 수 있다. 본 발명의 일 양상에 따르면, 이벤트들은 폴더 데이터에서의 변화(예를 들어, 추가, 삭제 또는 수정된 문서)에 대응한다. 환경설정(예를 들어, 조건들, 액션들)은, 본 요약의 목적을 위해, 3개의 카테고리들, 사용자 측에서 액션을 취하는 환경설정(예를 들어, 비용 보고서에 관한 전자 메일을 유사한 명칭의 폴더로 이동하라), 폴더의 콘텐트를 제어하는 환경설정(예를 들어, 최근 2주 동안에 청취한 모든 재즈곡들을 현재 재즈 폴더로 저장하라), 및 앞선 2개의 조합(예를 들어, 소정의 달러보다 적은 모든 비용 보고서를 승인된 폴더로 이동시키고 이러한 액션을 통지하기 위해 전자 메일을 송신하라)들로 요약될 수 있다.
본 발명의 또 다른 양상에 따르면 액티브 폴더들을 사용하여 작업흐름 유형의 활동들이 사용될 수 있다. 여기서, 환경설정을 사용하는 최종 사용자는 멀티 스텝 태스크 또는 폴더들 내의 항목들을 통해 표현되는 작업 부분을 지정할 수 있다. 태스크 또는 작업 부분을 완료하기 위해 폴더 항목들에 액션들이 후속적으로 취해질 수 있다.
본 발명의 일 양상에 따라 연대기 폴더가 사용될 수도 있다. 연대기는, 사용자 또는 시스템의 사용자들에 관련된 이력 및 컨텍스트 정보를 나타낸다. 본 발명의 일 양상에 따르면, 연대기는 데이터 저장소에 저장될 수 있고 최종 사용자들이 자유롭게 접근할 수 있다. 따라서, 최종 사용자는 이력 데이터에 대한 제어를 유지할 수 있고 그에 기초하여 환경설정을 기록할 수 있다. 예를 들어, 사용자는 자신의 작업그룹 내의 모든 사람들이 소정의 주식 가격에 대한 이력 정보를 볼 수 있게 할 수 있으나, 그들이 자신들의 데스크 또는 회의에 있을지 여부와 같은 컨텍스트 정보를 제한하기를 원할 수 있다.
앞선 목적 및 관련 목적들을 달성하기 위해, 본 발명의 소정의 예시적인 양상들이 다음의 설명 및 첨부된 도면들과 함께 설명된다. 이러한 양상들은, 본 발명이 구현될 수 있는 다양한 방식들을 나타내며, 이들 모두는 본 발명에 의해 커버되는 것으로 의도된다. 본 발명의 다른 이점들 및 새로운 특징들은, 도면과 함께 고려되는 경우, 본 발명의 아래의 상세한 설명으로부터 명백해 질 것이다.
도 1은 본 발명의 일 양상에 따른 정보 에이전트 시스템의 블록도이다.
도 2는 본 발명의 일 양상에 따른 통지 컴포넌트의 블록도이다.
도 3은 본 발명의 일 양상에 따른 정보 에이전트 애플리케이션의 블록도이다.
도 4는 본 발명의 일 양상에 따른 예시적인 논리 스키마(schema)의 블록도이 다.
도 5는 본 발명의 일 양상에 따라 상수 접근자(constant accessor)들을 평가하기 위한 시스템의 블록도이다.
도 6은 본 발명의 일 양상에 따른 환경설정 평가 시스템의 블록도이다.
도 7은 본 발명의 일 양상에 따른 우선순위 시스템의 개략적인 블록도이다.
도 8은 본 발명의 일 양상에 따른 분류자(classifier)를 도시하는 블록도이다.
도 9는 본 발명의 일 양상에 따른 메시지 분류(message classification)를 나타내는 개략적인 블록도이다.
도 10은 본 발명의 일 양상에 따른 스칼라 분류자 출력을 나타내는 개략적인 블록도이다.
도 11은 본 발명의 일 양상에 따라 클래스 및 스칼라 출력에 따라 분류된 텍스트들을 나타내는 개략적인 블록도이다.
도 12는 본 발명의 일 양상에 따른 선형 우선순위 모델(linear priorities model)을 나타내는 도면이다.
도 13은 본 발명의 일 양상에 따른 비선형 우선순위 모델을 나타내는 도면이다.
도 14는 본 발명의 일 양상에 따라 사용자 활동을 결정하기 위한 모델을 나타내는 도면이다.
도 15는 본 발명의 일 양상에 따라 현재 사용자 활동을 결정하기 위한 추론 기반 모델(inference-based model)을 나타내는 도면이다.
도 16은 본 발명의 일 양상에 따라 경보 비용(alerting costs)을 결정하기 위한 추론 기반 모델을 나타내는 도면이다.
도 17은 본 발명의 일 양상에 따라 경보 비용을 결정하기 위한 보다 상세한 추론 기반 모델을 나타내는 도면이다.
도 18은 본 발명의 일 양상에 따라 충실도 손실의 측면에서 경보 비용을 결정하기 위한 보다 상세한 추론 기반 모델을 나타내는 도면이다.
도 19는 본 발명의 일 양상에 따라 우선순위를 생성하고 결정하기 위한 방법을 나타내는 흐름도이다.
도 20은 본 발명의 일 양상에 따른 텍스트 생성 프로그램 및 분류자를 나타내는 도면이다.
도 21은 본 발명의 일 양상에 따른 실행 엔진과 컨텍스트 분석기 간의 시스템적인 협력을 나타내는 개략적인 블록도이다.
도 22는 본 발명의 일 양상에 따른 컨텍스트 분석기를 나타내는 블록도이다.
도 23은 본 발명의 일 양상에 따른 소스 및 싱크를 나타내는 블록도이다.
도 24는 시간에 따라 매핑된 통지의 효용성을 나타내는 그래프이다.
도 25는 본 발명의 일 양상에 따른 예시적인 인터페이스를 나타내는 도면이다.
도 26은 본 발명의 일 양상에 따라 직접 측정에 의해 사용자 컨텍스트를 결정하기 위한 방법들을 나타내는 도면이다.
도 27은 본 발명의 일 양상에 따라 컨텍스트를 결정하기 위한 예시적인 계층구조형의 순서화된 규칙 세트를 나타내는 블록도이다.
도 28은 본 발명의 일 양상에 따라 사용자의 컨텍스트를 결정하기 위해 추론 엔진에 의해 실행되는 추론 분석을 나타내는 시스템의 개략적인 블록도이다.
도 29는 본 발명의 일 양상에 따라 단일 시간 주기 동안 사용자의 주의 집중을 추론하는 예시적인 베이지안 네트워크(Bayesian network)를 나타낸다.
도 30은 본 발명의 일 양상에 따라 서로 다른 시간 주기에서 컨텍스트 변수들 간의 사용자의 주의 집중의 베이지안 모델을 나타낸다.
도 31은 본 발명의 일 양상에 따라 사용자의 컨텍스트가 결정되는 방법을 나타내는 흐름도이다.
도 32는 본 발명의 일 양상에 따른 통지 전달 프로세스를 나타내는 흐름도이다.
도 33은 본 발명의 일 양상에 따른 액션/조건 진화적 체인(action/condition evolutionary chain)을 나타낸다.
도 34는 본 발명의 일 양상에 따른 애플리케이션 상호작용을 위한 시스템의 블록도이다.
도 35는 본 발명의 일 양상에 따른 개인화된 시스템의 블록도이다.
도 36은 본 발명의 일 양상에 따라 환경설정을 사용하기 위한 방법의 흐름도이다.
도 37은 본 발명의 일 양상에 따라 애플리케이션을 설치하기 위한 방법의 흐 름도이다.
도 38은 본 발명의 일 양상에 따라 애플리케이션들을 확장하기 위한 방법의 흐름도이다.
도 39는 본 발명의 일 양상에 따라 애플리케이션을 설치제거하기 위한 흐름도이다.
도 40은 본 발명의 일 양상에 따라 애플리케이션들에 걸쳐 프로그램 상수(programmatic constant)들을 확장하는 방법을 나타내는 흐름도이다.
도 41은 본 발명의 일 양상에 따라 컴퓨터 기능을 개인화하기 위한 방법을 나타내는 흐름도이다.
도 42는 본 발명의 일 양상에 따른 적절한 운영 환경을 나타내는 흐름도이다.
도 43은 본 발명이 상호작용할 수 있는 예시적인 컴퓨팅 환경의 개략적인 블록도이다.
본 발명은 지금부터 첨부된 도면들을 참조하여 설명되는데, 이러한 도면들에는 유사한 참조번호가 그 전체를 통해 유사한 구성요소들을 나타낸다. 그러나, 도면 및 그의 상세한 설명은 본 발명을 개시된 특정 형태로 한정하고자 하는 것이 아니라는 것을 이해하여야 한다. 오히려, 본 발명의 사상 및 범주 내에 해당되는 모든 수정, 등가물 및 대안들을 포함하도록 의도된다.
본 출원에 사용되는 바와 같이, "컴포넌트(component)" 및 "시스템(system)" 이라는 용어는, 하드웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어 또는 실행중인 소프트웨어중 어느 하나와 같은 컴퓨터 관련 실체를 나타낸다. 예를 들어, 컴포넌트는, 프로세서 상에서 동작하는 프로세스, 프로세서, 객체, 실행가능한 것, 실행 쓰레드, 프로그램 및/또는 컴퓨터일 수 있으나 이에 한정되지 않는다. 예로서, 서버 상에서 작동하는 애플리케이션 및 서버 모두가 컴포넌트일 수 있다. 하나 이상의 컴포넌트가 프로세스 및/또는 실행 쓰레드 내에 상주할 수 있고 컴포넌트는 하나의 컴퓨터 상에 국부적으로 존재하거나 및/또는 2개 이상의 컴퓨터들 간에 분산될 수 있다.
본원에서 사용되는 바와 같이, "추론(inference)"이라는 용어는, 시스템(10)의 상태, 환경, 및/또는 사용자를, 이벤트들 및/또는 데이터를 통해 포획된 관찰 세트로부터 추론하거나 또는 추리하는 과정을 일반적으로 나타낸다. 예를 들어 추론은 특정 컨텍스트 또는 액션을 식별하는데 사용될 수 있거나 또는 상태들에 대해 확률 분포를 생성할 수 있다. 추론은 확률론적 - 즉 데이터 및 이벤트들에 대한 고려에 기초하여 관심 상태들에 대한 확률 분포의 계산일 수 있다. 추론은 이벤트 세트 및/또는 데이터로부터 보다 높은 레벨의 이벤트들을 구성하기 위해 사용되는 기술들을 나타낼 수도 있다. 이러한 추론으로 인해, 관찰된 이벤트 세트 및/또는 저장된 이벤트 데이터로부터의 새로운 이벤트 또는 액션, 이벤트들이 일시적인 가까운 근접(close temporal proximity)으로 상관되는지 여부, 및 이벤트들 및 데이터가 하나 이상 수개의 이벤트 및 데이터 소스들로부터 나오는지 여부를 구성할 수 있다.
정보 에이전트 플랫폼(information agent platform)
먼저, 도 1로 가면, 본 발명의 일 양상에 따른 정보 에이전트 시스템(100)이 도시되어 있다. 정보 에이전트 시스템(100)은 APIs(application programming interface(s))(110), 컴파일러(120), 이벤트 컴포넌트(130), 컨텍스트 분석기(140), 스키마화된 데이터 저장소(150), 환경설정 실행 엔진(160), 액션 컴포넌트(170) 및 통지 컴포넌트(180)를 포함한다. 시스템(100)은 다양한 정보 에이전트 애플리케이션들의 실행을 용이하게 하기 위한 플랫폼을 제공한다. 시스템(100)은 독립적인 시스템 또는 보다 큰 시스템의 컴포넌트 부분일 수 있다. 시스템(100)은, 본 발명의 일 양상에 따르면, 컴퓨터 운영 체제와 함께 사용될 수 있으며, 운영 체제는 개인용 컴퓨터, 전화, PDAs(personal digital assistant)와 같은 이동 장치를 포함하나 이에 한정되지 않는 다수의 서로 다른 컴퓨팅 장치들 상에 사용될 수 있다. 시스템(100)은 서버들(예를 들어, SQL서버, WinFS 서버) 상에서 가입 서비스와 함께 사용될 수도 있다. 따라서, 시스템(100)이 활용되어 클라이언트, 서버 및 클라이언트-서버-클라우드 서비스(client-server-cloud service)(예를 들어, 아웃룩, 익스체인지 및 핫메일)들에 정보 에이전트 기능을 제공하는 서비스들과 다양한 제품들 간에 시너지를 제공할 수 있다.
APIs(110)가 시스템(100) 내에 포함되어 시스템(100)과의 상호작용을 용이하게 할 수 있다. APIs(110)는 개발자에 의해 활용되어 정보 에이전트 시스템(110) 내에 다양한 컴포넌트들을 셋업할 수 있다. 또한, APIs(110)가 사용되어 하나 이상의 이벤트 소스들 및/또는 시스템(100) 상에서 작동하는 정보 에이전트 애플리케 이션들에 가용한 현재 사용자 컨텍스트로부터 다수의 이벤트를 구성할 수 있다. 또한, API(110)는 데이터 저장소(150)에 저장된 논리 스키마(logic schema)를 리플렉트(reflect)시키고 데이터 저장소(150)에 환경설정들을 기록하는데 사용될 수 있다. 본 발명의 범주에 속하는 것으로 의도된, 많은 다른 APIs(110)의 사용이 본 명세서를 읽을 경우 본 기술분야의 당업자에게 자명해질 것이라는 것을 이해하여야 한다.
데이터 저장소(150)는 스키마화된 데이터를 위한 리치 구조형 저장소(rich structured store)이다. 데이터의 스키마화, 데이터를 잘 알려지고 명확한 패턴들로 구성하는 것은, 다수의 애플리케이션 상호작용을 가능케 하기 때문에 본 발명에 특히 중요하다. 아래에서 보다 상세하게 설명되는 바와 같이, 데이터 저장소(150)는 정보 에이전트 애플리케이션들에 의해 사용되어, 무엇보다도, 예를 들어 이벤트들의 표 및 환경설정들과 같이 애플리케이션들에 연관된 데이터를 저장한다. 또한, 데이터 저장소(150)가 정보 에이전트 시스템(100) 내에 포함되는 것으로 예시되더라도, 데이터 저장소(150)는 시스템 외부의 컴포넌트들과 상호작용할 수 있다는 것을 이해하여야 한다.
컴파일러(120)도 시스템(100)에 포함될 수 있다. 컴파일러(120)는 정보 에이전트 애플리케이션을 컴파일하는 역할을 한다. 특히, 컴파일러(120)는 개발자 스키마들과 최종 사용자 애플리케이션들을 컴파일한다. 본 발명의 일 양상에 따르면, 스키마들 및 최종 사용자 환경설정들을, 예를 들어, 데이터 저장소(150) 내의 표에 저장하기 위한 데이터로 변환하는 것을 용이하게 한다.
시스템(100)이 이벤트 컴포넌트(130)를 포함할 수도 있다. 이벤트들은, 환경설정 평가를 개시하고 그에 정보를 제공하는 트리거들(triggers)이다. 이벤트들은, 애플리케이션 또는 데이터에 따른 내부 상태 변화들 또는 세계의 외부 변화들중 어느 하나일 수 있는, 이벤트 소스들에서 발원한다. 이벤트 컴포넌트(130)는 애플리케이션들로부터의 API를 통해 제출된 이벤트들을 캡쳐하고 환경설정 평가를 개시한다. 예를 들어, 이벤트들은, 새로운 SMTP(Simple Mail Transport Protocol), 데이터 저장소(150) 내의 데이터 변화, 운영 체제 액션들, 명시적인 사용자 액션 및/또는 다른 환경설정의 액션들을 수신하는 SMTP 제공자에 의해 제기된다. 이벤트 컴포넌트(130)는 제3자 제공자(third party provider), 및 인터넷 및 네트워크 기반 통신, 전화 통신과 같은 통신뿐만 아니라 소프트웨어 서비스, XML 파일들, 애플리케이션들 및 데이터베이스들을 포함하나 이에 한정되지 않는 복수의 서로 다른 유형의 소스로부터 이벤트들을 수집하거나 또는 이벤트들을 수신할 수도 있다. 또한, 이벤트 컴포넌트(130)는 다양한 방법을 통해 데이터를 모니터하고 수집할 수 있다. 데이터를 수집하는 예시적인 방법은, 파일 추가에 대해 디렉토리를 모니터하고, 소정 유형의 엔트리들에 대해 시스템 및 애플리케이션 로그 파일들을 체크하고, 애플리케이션들로부터의 경보들을 트랩(trapping)하고, 웹 페이지를 모니터하고, 데이터베이스 표의 변화를 추적하고, 웹 서비스(들)에 의해 제공된 데이터를 리뷰하는 것을 포함할 수 있으나, 이에 한정되지 않는다.
데이터를 수집하기 위해 이벤트 컴포넌트(130)에 의해 사용될 수 있는 다양한 서로 다른 모델들이 존재할 수도 있다. 이러한 모델들은, 이벤트 컴포넌트 (130)가 다양한 이벤트 소스들로부터 이벤트들을 수집할 환경 및 횟수에 영향을 줄 수 있다.
이벤트 컴포넌트(130)는 2개의 방식들중 적어도 하나로 데이터를 통지하거나 또는 그 데이터가 제공될 수 있다. 이벤트 컴포넌트(130)는, "푸시(pushed)"되거나 또는 송신될 정보를 대기할 수 있거나 또는 소스를 폴링(polling)하고 임의의 새로운 또는 갱신된 데이터를 수집함으로써 소스로부터 정보를 "얻는 것(pull)"이 가능하다. 예를 들어, 좋아하는 뉴스 페이지 상의 헤드라인 스토리가 변경될 때마다 사용자가 통지받기를 원한다면, 이벤트 컴포넌트(130)는, 예를 들어 해당 페이지를 모니터하고 헤드라인 텍스트에 대한 변경을 검색하도록 구현될 수 있다. 텍스트가 변화할 때, 이벤트 컴포넌트(130)는 새로운 헤드라인 데이터를 추출하고, 예를 들어, 그 데이터를 데이터 저장소(150) 내의 이벤트 표에 저장함으로써 시스템(100)에 그 데이터를 제공할 수 있다. 상기 예에서, 이벤트 컴포넌트는 필요한 데이터를 수집하는 역할을 담당하는데, 이 이유는, 푸시 방법(push methodology)을 채용하는 경우에서와 같이 데이터가 이벤트 소스로부터 이벤트 컴포넌트(130)로 제공되지 않기 때문이다.
추가적으로 또는 대안적으로, 이벤트 컴포넌트(130)는 스케줄, 또는 미리 정의된 기준을 충족시키는 이벤트의 발생에 기초하여 시스템(100)에 대한 이벤트 데이터를 얻을 수 있다. 스케줄된 이벤트 컴포넌트(130)는, 애플리케이션 개발자에 의해 구현된 설정들에 기초하여 주기적으로 작동할 수 있다. 스케줄된 이벤트 컴포넌트(130)는, 작동을 개시하여, 새로운 이벤트 데이터를 검색 및 제출한 후, 다 음 스케줄된 트리거 시간까지 하이버네이트(hibernate)된다. 연속적으로 작동함으로써 이벤트 구동 이벤트 컴포넌트(130)가 이벤트 소스를 모니터할 수도 있다. 그 후, 데이터가 수집을 위한 특정 기준을 충족시키는 경우, 이벤트 컴포넌트는 이벤트의 발생을 수집하거나 또는 표시할 수 있다. 대안적으로, 이벤트 구동 이벤트 컴포넌트(130)는 단지 콜백 기능(callback function) 또는 소정의 다른 외부 자극에 응답하여 작동할 수 있다. 그 후, 이러한 외부 기능은, 수집할 유효 이벤트 데이터가 존재하는지 여부를 결정하고, 그러한 데이터를 수집하는 수단으로서 이벤트 컴포넌트(130)를 사용한다. 이벤트 컴포넌트(130)가 외부 이벤트 소스로부터 데이터는 수집하면, 이벤트 표에 데이터를 기록하고 이벤트 표를 데이터베이스(150)에 저장할 수 있다.
이벤트들을 모으거나 및/또는 수집하는데 어떤 방법(들) 또는 시스템(들)이 사용되는지 간에, 이벤트들은 효율성을 위해 일괄적으로 기록 및 처리될 수 있다는 것을 이해하여야 한다. 본원에서 일반적으로 정의되는 배치(batch)이라는 것은 그룹으로 처리되는 데이터 세트(예를 들어, 이벤트들, 환경설정들 ...)일 수 있다. 그룹 또는 배치의 크기는, 예를 들면 시스템 셋업 동안에 개발자에 의해 결정되고 지정되거나 및/또는 제어 패널을 통해 사용자에 의해 지정될 수 있다.
본 발명의 일 양상에 따라, 컨텍스트 분석기(140)에 의해 수집된 정보는 분석기에 의해 결정된 컨텍스트 정보(contexual information)를 포함한다. 컨텍스트 정보는, 본 명세서의 후반부에서 보다 상세하게 설명되는 바와 같이, 분석기(140)에 의해 하나 이상의 컨텍스트 정보 소스(도시 안됨)에 기초하여 사용자의 위치 및 주의 상태를 구별함으로써 결정된다. 컨텍스트 분석기(3122)는, 예를 들어 사용자의 자동차 또는 휴대 전화의 일부분인 GPS(global positioning system)을 통해 사용자의 실제 위치를 정확하게 결정할 수 있다. 분석기는, 날짜의 유형, 날짜의 시간, 사용자 달력의 데이터 및 사용자의 활동에 대한 관찰과 같은 정보를 고려함으로써 수집된 관찰 및/또는 배경 평가를 고려하여 사용자가 소정의 주의 상태에 있을 가능성을 결정하기 위해 통계적 모델을 사용할 수도 있다. 그 후, 소정의 주의 상태는 이벤트 또는 사용자 정의 환경설정를 위한 조건으로 사용될 수 있다.
환경설정 실행 엔진(160)은 처리 액션과 연관될 수도 있다. 환경설정 논리가 단지 실제로 결과 세트를 생산하더라도, 그러한 결과들의 일반적인 효과이기 때문에, 본원에서 대안적으로 액션이라고 지칭된다. 액션들을 실행하기 위해 환경설정 실행 엔진(160)을 사용하는 것은, 액션들이 실행될 수 있는 단지 하나의 방식이다. 액션들은 시스템(100)으로부터의 환경설정 결과들을 간단히 검색하고 그에 대해 작용하는 애플리케이션들에 의해 실행될 수도 있다. 시스템(100)의 일부로서 실행 엔진에 의한 액션들의 실행은 보다 능동형 에이전트(active agent)에 가까운 반면, 애플리케이션들에 의한 액션들의 실행은 보다 수동 판단 논리(passive decision logic)에 가깝다. 따라서, 시스템(100)은, 시스템(100)이 이벤트 컴포넌트(130)에 대해 이벤트 검색 및 처리를 위한 호스팅 서비스(hosting service)를 제공하는 방식과 유사하게 액션들을 검색하고 실행할 수 있는 호스팅 서비스를 애플리케이션 액션 핸들러에게 제공할 수 있다. 또한, 본 발명의 일 양상에 따르면, 데이터에 가까운 액션들(예를 들어, 전자 메일을 특정 폴더로 이동시키는 것)은 환 경설정 평가뿐만아니라 동일한 트랜잭션의 일부와 동기하여 실행 엔진(160)에 의해 시스템(100) 내에서 실행될 수 있다는 것을 이해하여야 한다.
시스템(100)의 환경설정 실행 엔진(160)은, 무엇보다도, 환경설정들을 처리하거나 또는 평가할 수 있다. 환경설정은, 이벤트들의 발생에 의해 트리거되는 최종 사용자 정의 규칙이다. 시스템(100)에 의해 지원될 수 있는 2개의 활성화 모델, 동기 및 비동기 활성화 모델이 존재한다. 동기 활성화 모델에서는, 이벤트 제출과 환경설정 평가 간에 얼마 안되는 지연이 존재한다. 즉, 이벤트 제출에 대한 응답이 반환되기 전에 환경설정 평가가 완료될 수 있다. 대조적으로 비동기 활성화 모델에서는, 이벤트 제출의 완료와 환경설정 평가의 완료 간에 상당한 지연이 존재한다. 예를 들어, 비동기 활성화를 구현하는 한 방법에 따르면, 제출된 이벤트들은, 그들에 대해 작용될 때까지 대기한다. 시스템(100)은 하나 또는 양쪽 활성화 모델을 지원할 수 있다. 또한, 본 발명의 일 양상에 따르면, 동기 또는 비동기 거동은, 처리에 가용한 배치 크기 및 시간을 포함하나 이에 한정되지 않는 다수의 고려에 따라 일괄 제출 동안 동적으로 선택될 수 있다. 환경설정 처리의 다른 양상은, 분리 및 트랜잭션 경계(isolation and transaction boundaries)를 포함한다. 예를 들어, 단일 이벤트 배치(batch)와 연관된 환경설정 처리는 트랜잭션형(transactional)일 수 있다. 대안적으로, 많은 이벤트 배치들은 하나의 트랜잭션 단위로 함께 처리될 수 있다. 시스템(100)은 상기 모델 시나리오들 중 하나 또는 양자를 지원할 수 있다. 또한, 환경설정 실행 엔진(160)은 트랜잭션의 범위의 이벤트 제출 및 환경설정 처리를 다룰 수 있다. 시스템(100)은, 다음의 2개 모델들 중 하나 또는 양자를 지원할 수 있다. 첫 번째로, 이벤트 제출 및 환경설정 처리는 동일한 트랜잭션을 공유할 수 있어 함께 실행될 수 있다. 다른 경우, 이벤트 제출 및 환경설정 처리는 서로 다른 트랜잭션들에서 발생할 수 있다.
본 발명의 일 양상에 따르면, 실행 엔진(160) 및 시스템(100)은 경량형 및/또는 중량형 정보 에이전트 또는 환경설정 애플리케이션들 모두를 지원할 수 있다. 경량형 애플리케이션들은, 낮은 대기시간, 작은 데이터베이스 풋프린트, 및 작은 작업 세트를 필요로 하는 애플리케이션들이다. 경량형 애플리케이션들에 대해서는 높은 처리량 및 범위성(scalability)이 첫 번째 순서의 필요조건이 아니다. 중량형 애플리케이션들은, 높은 처리량, 범위성, 높은 신뢰성, 엄격한 정확성 보증, 예측가능한 크래시 복구(crash recovery), 및 용이한 관리가능성을 필요로 하는 애플리케이션들이다. 낮은 대기시간 및 자원 소비는 중량형 애플리케이션들에 있어서 상위 우선순위는 아니다. 고성능 서버는 통상적으로 중량형 애플리케이션들을 실행하는 반면, 경량형 애플리케이션들은 개인용 컴퓨터 및 이동 장치를 포함하나 이에 한정되지 않는 저성능 시스템에 일반적으로 사용된다. 따라서, 실행 엔진(160)은 경량형 애플리케이션과 중량형 애플리케이션을 구별하고, 특정 애플리케이션 유형(예를 들어, 높은 처리량 대 낮은 대기시간)에 가장 잘 응답하는 방식으로 실행되도록 변경될 수 있어야 한다. 일반적으로 실행 엔진은 데이터베이스 풋프린트, 컴포넌트 활성화시의 대기시간, 프로세싱, 메모리 풋프린트 및 인지 프로세스와 가장 연관될 것이다. 중량형 애플리케이션의 실행은, (1) 무엇보다도, 다수의 데이터베이스, 표, 뷰, 저장된 절차들 및 사용자 정의 기능들을 지원하도록 큰 데이터 베이스 풋프린트의 할당; (2) 이벤트 수집, 통지 생성 및 통지 배포에 대한 작은 폴링 간격들; 및 (3) 정보의 일괄 프로세싱을 필요로 할 수 있다. 경량형 애플리케이션들의 실행은, (1) 최소의 메모리 및 데이터베이스 풋프린트로 사용될 수 있고; (2) 이벤트 수집, 통지 생성, 및 통지 배포(인에이블된 경우)에 대해 보다 큰 폴링 간격들을 활용하며; (3) 작은 배치(batch)들 또는 개별적으로 이벤트들과 같은 정보를 처리할 수 있다는 점에서 상이하다. 또한, 본 발명의 일 양상에 따르면, 호스트된 이벤트 제공자들 및 소정의 통지 배포는, 시스템 응답 시간과 간섭하는 프로세스들을 계속적으로 작동시키는 것을 필요로 하기 때문에, 경량형 애플리케이션들에서 지원될 수 없다. 그러나, 실행 엔진(160)은, 가용 자원들 및 기술 상태에 따라, 애플리케이션 "경량성(lightness)"의 증가하는 변화를 지원할 수 있다는 점에서 유연성이 있다는 것을 이해하여야 한다.
주의할 점은, 시스템(100)은 액션 컴포넌트(170)를 포함할 수도 있다는 것이다. 환경설정의 성공적인 평가시, 환경설정 실행 엔진(160)은 하나 이상의 유효 환경설정에 따라 소정의 액션들을 실행하기 위해 액션 컴포넌트(170)를 불러낼 수 있다. 액션들은 데이터 저장소(150)에 영향을 줄 수 있거나(예를 들어, 데이터를 삽입, 삭제 또는 수정하는 것) 및/또는 시스템(100) 내부 또는 외부의 다른 컴포넌트들 및 시스템들에 영향을 줄 수 있다. 액션중 하나의 특정 유형은 사용자 통지이다. 따라서, 액션 컴포넌트는 통지 컴포넌트(180)로 예시된다.
도 2를 참조하면, 통지 컴포넌트(180)가 보다 상세하게 예시된다. 통지 컴포넌트(180)는 포맷터(formatter)(272) 및 전달 프로토콜(274)을 포함한다. 통지 컴포넌트(180)는 미가공 통지 데이터를 입력으로 수신하고 사용자 장치(예를 들어, 컴퓨터, PDA, 이동 전화....)에 궁극적으로 도달하는 포맷화된 통지들을 출력한다. 미가공 통지 데이터가 통지 컴포넌트(180)에 의해 수신된 후, 통지는 목적지 장치에 대해, 가능할 경우 사용자의 선호 언어에 대해, 포맷화된 판독가능한 통지로 변환된 후, 전달 프로토콜(들)(274)을 통해 장치로 송신된다. 콘텐트 포맷팅은 하나 이상의 콘텐트 포맷터 컴포넌트들(272)에 의해 취급되는 태스크이다. 콘텐트 포맷터(들)(272)는 어레이로 패키지된, 통지 데이터를 입력으로 취한다. 표준 전달에 있어서, 단일 통지 기록에 대한 정보를 포함하는, 어레이 내의 단지 하나의 구성요소가 존재해야 한다. 다수의 통지가 단일 메시지로 가입자에게 송신되는 다이제스트 전달(digest delivery)에 있어서, 어레이 내에 다수의 구성요소가 존재하며, 이들 각각은 하나의 통지로부터의 데이터를 포함한다. 그 후, 콘텐트 포맷터(272)는, 예를 들어 적절한 포맷팅을 결정하기 위해 통지 데이터 내에 포함된 수신자 정보를 활용하여, 디스플레이용 데이터를 포맷한다. 또한, 다이제스트 전달이 사용되면, 콘텐트 포맷터(272)는 또한 통지 정보를 적절하게 모으는 것을 담당한다. 내부적으로, 콘텐트 포맷터(272)는 통지들을 포맷하기 위해 임의의 적절한 방식을 사용할 수 있다. 예를 들어, 그러한 방식은 기본 스트링 조작처리를 사용하는 것과 같이 단순할 수 있거나 또는 XSL(Extensible Stylesheet Language) 변환 또는 ASP.NET 렌더링을 사용하는 것과 같이 보다 복잡할 수 있다. 콘텐트 포맷터가 자신의 태스크를 완료한 경우, 포맷화된 데이터를 포함하는 스트링을 출력한다. 생성될 수 있는 소정의 통지 헤더 정보와 함께 스트링은 전달 프로토콜 컴포넌트 (274)로 전달된다.
통지 전달은, 전달 프로토콜(274)을 통해 달성된다. 일괄적인 통지가 이용가능하게 되는 경우, 통지 컴포넌트(180)는 통지(들) 내의 가입자 데이터를 판독하여 적절한 포맷팅을 결정한다. 그 후, 통지 컴포넌트(180)는 전달 프로토콜(172)을 통해 예를 들어 .NET Alerts 또는 SMTP 서버와 같은, 전달 서비스로 통지(들)을 송신할 수 있다. 보다 구체적으로, 애플리케이션이 작동하는 경우, 통지 컴포넌트(172)는 각 통지를 판독하여 가입자 전달 장치 및 현장(locale)을 취득할 수 있다. 그 후, 분배기는 장치 및 현장의 조합을 특정 포맷터 객체에 매치시켜 최종 통지를 생성한다. 통지 그 자체는 가공되지 않은 데이터의 조합, 포맷팅 시간에 계산된 데이터뿐만 아니라 콘텐트 포맷터(272)에 의해 지정된 텍스트를 포함할 수 있다. 이러한 옵션들은, 전문적이고 사용자 친화적인 통지 텍스트 및 웹 링크와 브랜딩 정보(branding information)의 포함을 고려한다.
시스템(100)이 내부 통지(예를 들어, 팝업 통지)를 다룰 수 있더라도, 시스템(100)은 외부의 제3자 장치들에 대한 통지들의 최종 전달을 취급하지 않는다. 대신, 시스템은, 전자 메일 게이트웨이 또는 .NET Alerts 서버들과 같이 전달 서비스에 대한 파이프로 생각될 수 있는 전달 채널(도시 안됨)을 사용할 수 있다. 구체적으로, 전달 채널은 프로토콜 및 최종점 어드레스를 포함할 수 있다. 시스템(100)은 전달 프로토콜(274)을 구성하여 통지 컴포넌트(180)로부터 통지를 수신자에게 전송하는 외부 전달 시스템으로 파이프라인을 제공할 수 있다. 그 후, 통지 컴포넌트는 전달 프로토콜 컴포넌트(274)를 활용하여 통지들을 프로토콜 패킷으로 패키지하고 그 통지들을 하나 이상의 전달 채널들로 송신한다. 전달 채널들은 후속적으로 패킷을, 의도된 수신자에게 그 통지(들)을 궁극적으로 송신할 수 있는 외부 전달 서비스에 제공한다.
정보 에이전트 애플리케이션(들)
도 3을 참조하면, 정보 에이전트 애플리케이션(300)이 본 발명의 일 양상에 따라 도시된다. 애플리케이션(300)은 시스템 상의 전개 단위이고 논리 스키마(310), 사용자 인터페이스(320), 판단 논리 컴포넌트(330), 이벤트 프로그래밍 컴포넌트(340) 및 태스크 스케줄 컴포넌트(350)를 포함한다. 논리 스키마(310)는 스키마화된 논리 빌딩 블록, 또는 최종 사용자에 의해 함께 구성될 수 있는 템플릿들을 정의한다. 스키마 개발자는 논리 스키마(310)뿐만 아니라 디폴트 거동들, 및 예외가 발생하는 경우의 거동들의 구성을 담당한다. 실제로, 논리 스키마(310)는 최종 사용자 논리의 실제 표현력을 강제하여 훈련되지 않은 최종 사용자가 실제 애플리케이션을 "프로그램(program)"할 수 있게 한다. 논리 빌딩 블록은 환경설정 클래스, 조건 클래스 정의 세트, 및 잠재적인 결과들 또는 액션들의 세트를 포함할 수 있다. 조건들 및 액션들은 연관된 애플리케이션(300)의 기능 및/또는 사용자 컨텍스트와 연관될 수 있다. 또한, 본 발명의 일 양상에 따라 논리 스키마(310)는 XML(eXtensible Markup Language)을 사용하여 정의될 수 있다는 것을 이해하여야 한다.
본 발명의 일 양상에 따르면, 스키마 논리(310)가 정의할 수 있는 2가지 종류의 빌딩 블록; 템플릿화된(templatized) 부울린 함수를 정의하는 조건 클래스 및 템플릿화된 절차를 정의하는 액션 클래스가 존재한다. 환경설정 클래스는 정보 에이전트 스키마 개발의 유닛이다. 환경설정은, 허가된 조건 클래스들(예를 들어 IsFrom(X), IsTo(Y)) 및 액션 클래스들(예를 들어 MoveToFolder(Z), Delete())의 세트를 포함한다. 또한, 모든 환경설정은 특정 이벤트 클래스와 연관되거나 또는 액션(예를 들어, EmailEvent)를 개시하도록 트리거한다. 스키마 논리(310)가 지정된 후, 스키마(310)는 컴파일러(120)에 의해 컴파일되고 데이터 저장소(150)의 정규화된 시스템 메타테이블들 내에 존속될 수 있다. 또한, 저장된 절차들은 환경설정을 평가할 수 있는 컴파일 기간 동안 생성될 수 있다. 스키마 논리(310) 및 절차 모두 나중의 액세스 및 실행을 위해 스키마화된 데이터 저장소(150)에 저장될 수 있다. 그 후, 사용자가 지정하고자 할 경우, 환경설정은 논리 스키마(122)와 비교되어 자신의 형식적인 적합성을 검증한 후, 데이터 저장소(150), 예를 들어 환경설정의 하나 이상의 표에 저장될 수 있다. 적절한 이벤트가 발생하는 경우, 그 후, 시스템(100)은 컴파일 시간 동안 생성된 저장된 절차들을 실행함으로써 적절한 환경설정이 평가되는 것을 보장할 수 있다. 본 발명의 일 양상에 따르면, 저장된 절차들은, 인덱싱 및 복제 제거(아래에 기술됨)와 같은 기술을 이용하여, 다수의 환경설정을 함께 세트 지향 방식으로 효율적으로 평가할 수 있다.
사용자 인터페이스(320)는 최종 사용자들에게 환경설정 작성(authoring) 또는 프로그래밍 인터페이스를 제공한다. 최종 사용자는 훈련받은 개발자가 아니기 때문에, 표준 절차적 프로그래밍 또는 스크립팅은 사용자들이 논리를 지정하는데 유용한 선택이 아니다. 따라서, 논리는, 사용자 인터페이스(320)를 통해 인스턴스 의 클릭 및 드래그 또는 복사 및 붙이기 방식으로 최종 사용자들에게 시각적으로 표현되고 제공될 수 있다. 주의할 점은, 사용자 인터페이스(320)는 애플리케이션(300) 내의 도구 막대(toolbar)이거나 완전히 독립적인 GUI(Graphical User Interface)일 수 있다는 것이다. 또한, 애플리케이션(들)(300)이 사용자 인터페이스(320)를 포함하는 것으로 예시되더라도, 애플리케이션(들)(300)이 환경설정들을 정의하기 위한 자신의 사용자 인터페이스를 반드시 가져야 하는 것은 아니라는 것을 이해하여야 한다. 애플리케이션(들)은, 논리 생성을 목적으로 하는 애플리케이션 특정 사용자 인터페이스 또는 운영 체제를 활용하도록 설계될 수 있다.
애플리케이션(들)(300)은 다양한 기능의 프로그램들 또는 환경설정을 생성하도록 최종 사용자에 의해 사용될 수 있는 3개의 컴포넌트들 - 판단 논리 컴포넌트(330), 이벤트 프로그래밍 컴포넌트(340) 및 태스크 스케줄 컴포넌트(430)를 포함할 수도 있다. 판단 논리 컴포넌트(330)는 최종 사용자가 판단 논리(a/k/a 최종 사용자 논리)를 정의할 수 있게 한다. 그 후, 애플리케이션은 다양한 판단들이 정의된 최종 사용자 논리에 의해 제어될 수 있게 한다. 예를 들어, 최종 사용자는, 스크린 상에 경보가 팝업되고 사용자를 인터럽트할지 여부, 그 시기, 및 그 방법을 지정할 수 있다. 애플리케이션은 최종 사용자가 판단 논리를 부착할 수 있는 이벤트들을 노출시킬 수도 있다. 예를 들어, 전자 메일 애플리케이션은 새로운 전자 메일이 폴더에 도달할 때마다 이벤트를 발생시킬 수 있다. 이벤트 프로그래밍 컴포넌트(340)는 최종 사용자가, 예를 들어 메시지의 콘텐트 및 사용자의 컨텍스트에 따라 발생할 수 있는 거동을 지정하는 규칙들 또는 환경설정을 부착할 수 있게 한 다. 규칙들 내의 조건들은 다른 애플리케이션들(예를 들어, 송신자가 동일한 작업그룹인지 여부를 확인하기 위한 액티브 디렉토리)로부터 데이터를 액세스할 수 있고, 본 발명의 일 양상에 따르면 액션들은 다른 애플리케이션들(450)에 영향을 주거나 또는 다른 이벤트를 일으킬 수 있다. 태스크 스케줄 컴포넌트(430)는 최종 사용자들이 애드-훅 또는 미리 정의된 태스크들을 이벤트 발생에 부착할 수 있게 한다. 예를 들어, 새로운 고객 불평이 발생한 경우, 최종 사용자는 그 불평을 처리하기 위해 미리 정의된 작업흐름을 개시하도록 선택할 수 있다.
판단 논리 컴포넌트(330)는, 개발자에 의해 제공된 조건 및 결론 템플릿들을 조합함으로써, 최종 사용자가 판단 논리 또는 최종 사용자 논리 프로그램을 기록할 수 있게 한다. 판단 논리는 "IF(조건) THEN(결과)" 환경설정 또는 규칙들을 사용하여 지정될 수 있다. 이러한 유형의 논리는 특히 최종 사용자 규격에 적절한데, 그 이유는 전혀 프로그래밍 경험이 없는 최종 사용자이더라도 용이하게 그러한 규칙을 이해하고 생성할 수 있기 때문이다. 예를 들어, 다음을 생각해보자: IF(개가짖는다) OR(벌이쏜다) THEN(아픔을느낀다). 이러한 규칙은, 개발자가 아니고 어린이도 이해할 수 있고 올바른 사용자 인터페이스가 주어지면 명확히 표현할 수 있는 것이다. 이러한 유형의 IF-THEN 논리 프로그래밍은, 적어도 이성적이고 언어 통신의 사람의 표기와 일치하기 때문에 최종 사용자 규격에 적절하다. 단일 규칙의 의미론은 선언형이며 잘 이해된다, 즉 조건들이 참이거나 참인 경우에만 그 결과들이 참이다. 또한, 최종 사용자들이 환경설정 논리를 액티브 컨텍스트에 적용하는 것은 직관적이다. 결과들은 단순히 자명한 이치의 선언보다는 취하는 액션들이 된 다. 예를 들어, IF(개가짖는다 OR 벌이쏜다) THEN(장미위에비가내리는것을생각하자)에서, 단일 IF-THEN 내에도, 허가된 표현력에 있어 다양한 정도의 풍부함이 존재할 수 있다. 상기 이전의 예는 명제로 이루어지는 논리(propositional logic)에 거의 대응한다. 명제로 이루어진 논리는, 단순한 참/거짓 명제가 결합되어 논리문들을 형성할 수 있는 표기법에 기초한다. 그러나, 술어 논리(predicate logic), 제한 논리(constraint logic) 및 귀납을 포함하나 이에 한정되지 않는, 평균적인 최종 사용자가 지정하기에는 너무 복잡할 수 있는 보다 풍부한 형태의 논리도 본 발명과 함께 사용될 수도 있다.
환경설정은 사용자 인터페이스(예를 들어, 제어 패널, 도구 막대)를 통해 지정될 수 있다. 스키마 개발자는 조건 논리의 빌딩 블록들로서 기본 술어 세트를 제공할 수 있다. 최종 사용자는 이어서 적절한 조건들을 선택하고, 적절한 파라미터 값들을 할당하고, 그들을 부울린 연산자들(예를 들어, AND, OR, NOT)과 결합시킬 수 있다. 유사하게, 최종 사용자는 적절한 결과를 선택하고 적절한 파라미터 값들을 할당할 수 있다. 최종 사용자가 지정한 프로그램의 풍부함은 개발자에 의해 제공된 스키마화된 논리로부터 나온다. 이러한 조건들 및 결과 템플릿은, 넓고 다양한 정보를 액세스하고 최종 사용자 애플리케이션들의 구조화된 데이터를 포함하는, 그들의 내부 논리 내에 풍부할 수 있다. 모든 조건 또는 결과 템플릿은 파라미터 리스트를 기술하는 스키마를 가질 수 있다. 최종 사용자는 적절한 파라미터 값들을 간단히 제공함으로써 이러한 빌딩 블록들을 활용할 수 있다.
따라서, 지금까지 설명해 온 것은 정보 에이전트 시스템(100)의 수동적인 활 용에 관한 것이고, 보다 능동적 스타일은 아래에 기술된다. 시스템(100)의 수동적인 사용에 따르면, 애플리케이션은, 적절한 단계에서 판단 논리를 불러오고 필요한 파라미터들을 제공하는 것을 담당한다. 애플리케이션은 결과들에 작용할 다른 애플리케이션을 호출하는 것을 담당할 수도 있다. 또한, 주의할 점은, 프로그램 인프라구조, 시스템(100)은 환경설정을 평가하고, 다수의 환경설정들 간의 충돌을 처리하고, 올바른 결과 세트를 결정하기 위해 번역기(도시 안됨)를 필요로 할 수도 있다는 것이다.
이벤트 프로그래밍 컴포넌트(340)는 정보 에이전트 애플리케이션(300)에 대해 적어도 3개의 기능을 제공한다. 첫 번째로, 이벤트 프로그래밍 컴포넌트(420)는, 최종 사용자 프로그램에 대한 훅(hook)들로서 작용할 수 있는 (예를 들어, 스키마 개발자에 의해 정의되는) 스키마화된 정보 이벤트들의 세트를 제공할 수 있다. 각 이벤트는 구조화된 데이터를 운반할 수 있다. 이벤트 인스턴스 캡쳐에 대해 많은 메커니즘이 존재한다(예를 들어, 이벤트 제출에 대한 APIs). 정보 이벤트들의 소정의 서브 클래스들이 존재한다. 이벤트들의 하나의 서브 클래스는 스키마화된 데이터 저장소(150) 내의 데이터 변화에 대응한다. 따라서, 이벤트 프로그래밍 컴포넌트(340)는 저장소(420) 내의 데이터 변화를 액세스하는 메커니즘을 제공할 수 있고, 그들을 스키마화된 변화 이벤트들로서 이용할 수 있게 한다. 이벤트들의 다른 서브 클래스는, 스케줄된 환경설정 활동에 대해 중요할 수 있는 순환하는 타이머 이벤트들에 대응할 수 있다. 이벤트 프로그래밍 컴포넌트(340)는 최종 사용자 "핸들러" 논리를 특정 이벤트들의 발생에 연관시키는 능력을 제공할 수도 있다. 또한, 이벤트 프로그래밍 컴포넌트(340)는 이벤트들을 캡쳐하고, 적절한 판단 논리를 적용하며, 판단 결과들을 실행하기 위해 액션 핸들러들을 불러오는 서비스를 제공할 수 있다.
이벤트 프로그래밍 컴포넌트(340)는 판단 논리 컴포넌트(330)와 상호작용하여 추가된 기능을 제공할 수 있다. 예를 들어, 최종 사용자는 새로운 이벤트들이 도달하는 경우 반복적으로 적용되는 판단 논리 컴포넌트(330)를 사용하여 상설 판단 논리를 셋업할 수 있다. 따라서, 시스템 및/또는 시스템에서 작동하는 애플리케이션은, 모든 트리거링 이벤트가 적절한 판단 논리의 평가를 야기한다는 점에서 능동형일 수 있다. 보다 구체적으로, 트리거링 이벤트들은 판단 논리에 대한 입력을 형성하고 환경설정 논리 평가의 결과들은 이벤트 프로그래밍 컴포넌트(340)가 최종 사용자를 위해 실행할 수 있는 액션들을 형성할 수 있다. 또한, 액션들은, 프로그래밍 컴포넌트(340)에 의해 추가 논리들이 후속적으로 실행되도록 하는 새로운 이벤트들을 발생시킬 수 있다. 결과적으로, 애드훅 체인형 이벤트 프로그래밍의 개념이 존재한다.
태스크 스케줄 컴포넌트(350)는 최종 사용자 태스크 스케줄 또는 작업흐름을 관리한다. 본원에 사용되는 스케줄은 태스크들 사이에 특별한 시퀀싱 또는 단계화를 갖는 태스크들의 조정된 세트이다. 태스크를 완전히 실행하는 목적은 통상적으로, 예를 들어 4명의 사람과의 회의를 스케줄하는 것과 같이 소정의 실제 세계의 목적을 달성하는 것이다. 회의의 예에서, 스케줄 내의 태스크들은 무엇보다도 초기 회의 요청을 송신하고 긍정적인 응답과 부정적인 응답을 처리하는 것을 포함한 다. 작업흐름은 비지니스 프로세스 자동화에서 일반적이지만, 본 발명에 대해 기술된 태스크 스케줄 또는 작업흐름은 최종 사용자 활동(예를 들어, 회의 스케줄, 문서 검토, 요청 대리...)과 연관된다. 이러한 작업흐름들 중 많은 부분은 간단한 프로세스인 관계로, 맞춤화될 수 있고 최종 사용자에게 명백하다.
태스크 스케줄 컴포넌트(350)는 판단 논리 컴포넌트(330)와 이벤트 프로그래밍 컴포넌트(340) 양자에 의해 제공된 기능으로 상호작용하고 그 기능을 강화한다(leverage). 이벤트 프로그래밍 컴포넌트(340)는 태스크 스케줄을 호출하기 위해 이상적인 훅을 제공한다. 예를 들어, 작업 요청을 포함하는 새로운 전자 메일의 도착에 의해 태스크 스케줄이 시작할 수 있다. 소정의 태스크 스케줄은 프로세스 흐름이 명확하여 엄격한 한편, 많은 다른 태스크 스케줄들은 최종 사용자가 서로 다른 경로들 사이를 선택할 수 있게 할 수 있어 유연하다. 예를 들어 회의 요청이 2명 이상의 초청받은 사람들에 의해 거절되면, 회의는 다시 스케줄이 잡히거나 또는 대안적으로 회의가 진행할 수 있다. 이는, 최종 사용자 환경설정 및 판단 논리 컴포넌트(330)를 활용하기 위한 좋은 영역이다. 또한, 주의할 점은, 본 발명의 대안적인 양상에 따르면, 태스크 스케줄 컴포넌트(350)는, 스케줄링이 변화에 반응하는 것 및 적절한 액션을 불러오는 것을 포함하기 때문에, 이벤트 프로그래밍 컴포넌트(340)에 포함될 수 있다. 종합하면, 태스크 스케줄의 소정 부분들은 개발자들에 의해 하드코드될 수 있으며, 상당한 값이, 흐름을 동적으로 함으로써 추가되고, 때때로 최종 사용자 프로그래밍을 통해 자동화되는 명시적인 사용자 판단들에 의해 구성된다.
본원에서 설명되는 정보 에이전트 개념에 대한 적어도 2개의 중심 구성요소들이 존재한다. 첫 번째는, 애플리케이션 거동을 제어하는 판단 논리를 제공하는 최종 사용자의 능력이 중요하다. 이는, 간단히 애플리케이션들의 최종 사용자 프로그램가능성이고, 최종 사용자를 위해 작용하는 에이전트를 실제 포함하지 않는다. 이는 본원에서 최종 사용자 논리의 수동적인 호출(passive invocation)로 나타낸다. 두번째는, 정보 에이전트 개념 내의 중요한 구성요소는, 최종 사용자가 능동형인 판단 논리를 제공하는 능력이다. 능동형 판단 논리는, 적절한 정보 이벤트들이 발생하는 경우 반복적으로 적용될 수 있어, 최종 사용자를 위한 소프트웨어 에이전트로 작용한다. 양자의 경우, 판단 논리는 통상적으로, 사용자의 컨텍스트 및 애플리케이션의 상태에 의존하는, 컨텍스트적이다. 이러한 2개의 컨텍스트 카테고리들 내의 다양한 종류의 시나리오는 이후에 설명될 것이다. 또한, 정보 에이전트가 취할 수 있는 서로 다른 "페르소나(personas)" 형태의 단-대-단(end-to-end) 시나리오들도 설명될 것이다.
최종 사용자 논리의 수동적인 호출의 일례는, 사용자의 인터럽션을 제어하기 위해 정보 에이전트를 활용하는 운영 체제이다. 소정의 애플리케이션이 스크린 상에 소리와 함께 팝업을 발생시키기를 원하는 경우마다, 운영 체제는 API를 활용하여 정보 에이전트 판단 논리 컴포넌트를 호출함으로써 발생해야 하는 것을 결정한다. 표시, 지연, 삭제, 및 전달을 포함하는 판단 논리 컴포넌트에 의해 밝혀질 수 있는 몇가지 가능한 결론들이 존재한다. 그 후, 운영 체제는, 판단 논리 컴포넌트(330)가 할 일을 말해주면, 실제 판단을 구현할 수 있다.
판단 논리 컴포넌트(330)는 종래의 프로그램들의 옵션들을 맞춤화하는데 사용될 수도 있다. 예를 들어, 종래의 전자 메일 프로그램은 수신 판독, 서명, 메일 우선순위에 대한 옵션들을 제공한다. 수신 판독에 있어서, 수신 판독이 인에이블되어 있는지 여부를 나타내는 체크 박스가 종종 존재한다. 판단 논리 컴포넌트(330)는, 중요한 메시지 또는 자신의 관리로 송신된 메시지에 대해서만 수신 판독을 인에이블하는 이러한 옵션을 맞춤화할 수 있다. 또한, 사용자는 통상적으로 외부로 나가는 메시지들에 서명을 할 수 있으나, 판단 논리 컴포넌트(330)를 사용하면, 의도하는 수신자에 따라 메시지에 서명을 부착함으로써 동작을 보다 쓸모있게 하고 개인화시킬 수 있다. 최종적으로, 전자 메일 우선순위 레벨은 통상적으로 송신자에 의해 결정되고 설정된다. 판단 논리 컴포넌트(330)를 사용함으로써, 메일 우선순위는, 예를 들어 수신자의 현재 컨텍스트에 따라 수신자에 의해 결정될 수도 있다. 또한, 주의할 점은, 최종 사용자 논리는, 상기와 같은 상황들에서 할 일을 결정하는 것(예를 들어, 서명을 첨부하는 것)뿐만 아니라 어떤 액션들의 콘텐트이어야 하는지(예를 들어, 어떤 서명이 실제 첨부되어야 하는지)를 결정하는데 활용될 수 있다는 것이다.
판단 논리 컴포넌트(330)를 통한 최종 사용자 논리의 능동적 호출은 다수의 상황에서 활용될 수 있다. 예를 들어, 능동형 논리는, 카메라 또는 조직 규칙에 따라 수신되는 전자 메일로부터 다운로드되는 화상들을 카테고리화하는 것과 같이 조직화된 데이터에 채용될 수 있다. 능동형 논리는, 새로운 전자 메일이 도달하고 수신자가 자리에 없어 그들의 이동 전화에 전자 메일을 전달하는 경우와 같이 변화 에 응답하는 데에도 활용될 수 있다. 능동형 논리는, 예를 들어 사용자가 자리에 없는 경우 사용자의 전화에 응답하고 예를 들어 사용자가 호출을 수취할 수 있는 다음번에 답신함으로써 통신을 강화하는데 사용될 수도 있다. 또한, 예를 들어 사용자의 여행 목적지에서 나쁜 날씨가 예상되는 때를 사용자가 통지받을 수 있도록 게시된 정보를 받아보는데 능동형 논리가 사용될 수 있다. 또한, 컨텍스트를 유지하는데 능동형 논리가 사용될 수 있다. 예를 들어, 사용자가 서로 다른 위치에서 회의에 들어오고 떠나는 경우, 컨텍스트는 적절히 갱신될 수 있다(예를 들어, 원격 또는 로컬, 바쁨 또는 한가함 ....).
정보 에이전트들은 사용자에 대해 실제 인간 에이전트가 하는 것과 같은 다양한 역할을 수행할 수 있다. 따라서, 정보 에이전트들은, 통신을 강화하는 비서, 정보를 조직화하는 사서, 본인/사용자가 기회를 알 수 있도록 보장하는 서비스 에이전트, 본인/사용자가 어려움에 처하지 않게 보장하는 샤프롱, 본인/사용자를 기분좋게 보고 느끼게 하는 시종을 포함하나 이에 한정되지 않는 다양한 사람들을 가질 수 있다. 비서로서 정보 에이전트는 본인/사용자가 자리에 없는 경우 전화에 응답하고, 전화건 사람을 자리에 없는 사용자의 음성 메일에 전달하고 전화를 받지 못했다는 것을 표시하는 인스턴트 메시징을 사용자에게 행하는 것과 같은 다양한 기능들을 실행할 수 있다. 사서와 같이 기능하면, 정보 에이전트는 디지털 사진 및 전자 메일을 조직화할 수 있다. 서비스 에이전트로서, 정보 에이전트는 예를 들어 판매된 주식 또는 부동산을 살 기회를 본인에게 통지할 수 있다. 샤프롱 역할을 하는 정보 에이전트는, 본인의 은행 계좌 잔고가 최소 잔고 아래에 있을 경우 본인에게 통지하고, 신용 카드 한계에 가까운 경우 본인에게 통보하며, 청구서가 제시간에 지불되었다는 것을 보장하는 통지를 제공하거나 및/또는 본인의 컴퓨터 상의 배터리 또는 꽉 찬 디스크에 대해 본인에게 경보할 수 있다. 시종으로서, 정보 에이전트는 중요한 고객으로부터 온 전화와 연관된 모든 문서 및 전자 메일을 모을 수 있거나 및/또는 당황스러운 통지가 프리젠테이션 도중에 팝업되지 않는 것을 보장할 수 있다.
논리 스키마(logic schema)
도 4로 돌아가면, 예시적인 논리 스키마(400)가 본 발명의 일 양상에 따라 도시된다. 논리 스키마(400)는 조건 클래스(410), 액션 클래스(415), 이벤트 클래스(420), 환경설정 클래스(425), 바인딩(binding)(430), 연대기(435), 충돌 해결(445), 명시적 실행 순서화(450), 필요한 조건들 및 액션들(455), 템플릿(460), 및 스케줄된 반복적인 환경설정(465)을 포함한다. 설명을 간단히 하기 위해, 예시적인 논리 스키마(400) 및 상기 스키마 컴포넌트들이 제공된다. 따라서, 논리 스키마(400)는 상기 언급한 컴포넌트들 모두, 그들의 서브세트, 및/또는 본원에 기술되지 않은 추가 스키마 컴포넌트들을 포함할 수 있다는 것을 이해하여야 한다. 앞서 토의한 바와 같이, 스키마 개발자는, 최종 사용자에 의해 함께 묶일 수 있는 스키마화된 논리 빌딩 블록들을 정의한다. 2개 종류의 빌딩 블록들은 조건 클래스(410) 및 액션 클래스(415)이다. 조건 클래스(410)는 템플릿화된 부울린 함수를 정의할 수 있으며, 액션 클래스(415)는 템플릿화된 절차들을 정의할 수 있다. 환경설정 클래스(425)는 정보 에이전트 스키마 개발의 유닛이다. 환경설정 클래스 (425)는, 무엇보다도, 허가된 조건 클래스들 및 액션 클래스들의 세트, 바인딩(430), 충돌 해결(445) 및 필요한 조건(455)을 포함할 수 있다. 또한, 모든 환경설정 클래스(425)는, 환경설정들에 대한 트리거링 이벤트들을 정의하는 특정 이벤트 클래스(420)와 연관될 수 있다. 다음은, 정보 에이전트 전자 메일 애플리케이션들에 대한 환경설정 클래스의 일례이다.
InboxPreferenceClass
Figure 112005035121854-PCT00001
ConditionClasses
Figure 112005035121854-PCT00002
IsFrom(X)
Figure 112005035121854-PCT00003
IsTo(Y)
Figure 112005035121854-PCT00004
ActionClasses
Figure 112005035121854-PCT00005
MoveToFolder(Z)
Figure 112005035121854-PCT00006
Delete()
Figure 112005035121854-PCT00007
TriggeringEventClass
Figure 112005035121854-PCT00008
EmailEventClass
Figure 112005035121854-PCT00009
Source of triggering event
Figure 112005035121854-PCT00010
Changes to an inbox folder
Figure 112005035121854-PCT00011
ApplyNow()
Figure 112005035121854-PCT00012
ScheduledEvent()
환경설정은 최종 사용자 논리의 유닛이다. 환경설정은 "ON(이벤트)IF(조건)THEN(액션세트)" 형태의 논리적 선언문일 수 있다. 따라서, 모든 환경설정은 다음과 같은 속성을 가져야 하나 반드시 필수적인 것은 아니다. 먼저, 환경설정은 환경설정 클래스에 속해야 한다. 두번째, 환경설정은 소정의 사용자 또는 본인이 소유하여야 한다. 세번째, 조건은, 모든 조건 인스턴스가 조건 클래스에 대한 파라미터 값을 정의하는, 조건 클래스들의 하나 이상의 인스턴스를 조합하는 선언형 부울린 표현이어야 한다. 마지막으로, 액션 세트는 액션 클래스들의 세트이어야 한다. 모든 액션 인스턴스는 액션 클래스에 대한 파라미터 값을 정의한다. 예를 들면:
UserPreference:
Figure 112005035121854-PCT00013
Instance of InBoxPreferenceClass
Figure 112005035121854-PCT00014
IF (IsFrom(John) OR IsTo('bookclub") THEN MovetoFolder('book Club')
그 후, 최종 사용자는 이벤트 핸들러들을 정의함으로써 "프로그램"할 수 있다. 각 이벤트 핸들러는 동일한 환경설정 클래스의 환경설정들의 세트에 의해 정의되기 때문에 동일한 이벤트로 트리거된다. 예를 들면:
Figure 112005035121854-PCT00015
IF (IsFrom(John) OR IsTo('bookclub") THEN MovetoFolder('book Club')
Figure 112005035121854-PCT00016
IF (IsTo('SillyStuffDL') THEN Delete()
이어서, 특정 이벤트가 발생하는 경우(예를 들어, 전자 메일이 도착하는 경우) 하나 이상의 환경설정은 유효 조건을 갖고, 다수의 액션들을 실행할 가능성을 가진다. 그 후, 다양한 충돌 해결 메커니즘이 아래에 설명되는 바와 같이 적용될 수 있다.
또한, 모든 조건은 간단히 자신의 호출 파라미터들을 갖는 부울린 함수이라는 것을 이해하여야 한다. 본 발명의 일 양상에 따르면, 애플리케이션 경계들에 걸치기 위해 개략적인 논리가 필요하다. 따라서 조건들은 다수의 서로 다른 애플리케이션들에 의해 생성된 데이터를 볼 수 있을 필요가 있다. 예를 들면:
Figure 112005035121854-PCT00017
존재 데이터: IF (IsFrom('John') AND SenderIsOnline()) THEN ...
Figure 112005035121854-PCT00018
위치 데이터: IF (IAmFarMeetingLocation()) THEN
ReminderMinutesWindow(30)
Figure 112005035121854-PCT00019
조직 계층구조: IF (IsFromMyManagement()) THEN MarkAsHighPriority()
상기 모든 예는 사용자 컨텍스트를 다룬다. 사용자 컨텍스트는 컨텍스트 분석기(140)(도 1)에 의해 결정되고 정보 에이전트 애플리케이션에 의해 사용되기 위해 데이터 저장소(150)(도 1)에 저장될 수 있다. 따라서, "Bool IsOnline(X)"와 같은 함수는 컨텍스트 분석기가 결정한 자신의 현재 컨텍스트 및 통과된 사람 X의 신원에 기초하여 참 또는 거짓을 반환할 수 있다.
상기 예에서 계속하면, InBoxPreferenceClass와 같은 환경설정 클래스의 스키마 개발자는 최종 사용자가 사용하기 위한 조건 클래스(410)를 제공할 필요가 있 다. 이것이 행해질 수 있는 몇가지 방식들이 존재한다. 예를 들어, 조건 클래스는 IsOnLine()일 수 있다. 이 경우, 최종 사용자는 "IF(IsOnline(Email.Sender))THEN...."의 형태로 환경설정을 정의할 수 있다. 대안적으로, 조건 클래스는 SenderIsOnline()일 수 있고, 자신의 선언에서 스키마 개발자는 IsOnline(X)에 결합시키고, X를 Email.Sender에 결합시킨다. 따라서, 최종 사용자는 환경설정 또는 규칙을 "IF(SenderIsOnline())THEN...."으로 정의할 수 있다. 본 발명이 조건 클래스(410)들을 지정하는 다수 형태를 지원하더라도, 상술한 형태에 상당한 차이가 존재한다는 점에 주의하라. 제1 형태는, 규칙을 작성하는 사람(즉 최종 사용자)가 스키마와 가변 바인딩들에 대해 판단을 하는 전통적인 서술형 계산 규칙 형태(predicated calculus rule form)이다. 두번째 형태는 보다 덜 유연하나, 최종 사용자가 사용하기에 명백하게 보다 간단하다. 따라서, 조건 클래스(410)들은, 스키마 개발자가 최종 사용자 논리의 표현력을 제한할 수 있는 영역이기 때문에 초심자인 최종 사용자가 정보 에이전트 애플리케이션들을 "프로그램"하기에 보다 실용적이며 구현가능하다.
요약하면, 스키마 개발자가 환경설정 클래스(425)를 작성하는 경우, 조건 클래스 선언 세트(410)가 만들어진다. 각 조건 클래스 선언은 구현 기능 및 개발자 정의 표현에 의해 설정된 함수에 대한 소정의 파라미터를 식별한다. 환경설정을 셋업하는 경우 남은 파라미터들은, 최종 사용자에 의해 모든 조건 인스턴스에 제공되는 상수이다. 액션들은 액션 클래스(415)의 인스턴스들이다. 각 액션 클래스(415)는 파라미터들을 갖는 절차들이다. 조건들과 같이, 파라미터들은 개발자에 의해 설정되거나 또는 최종 사용자에 의해 상수로 할당될 수 있다. 또한, 이벤트 클래스(420)는 이벤트들에 대한 정의를 제공한다. 이벤트 클래스는, 개발자에 의해 지정되거나 또는 최종 사용자에 의해 할당되는 바와 같이, 환경설정 평가를 트리거하는 이벤트의 정보 콘텐트를 정의한다.
본 명세서를 통해 알 수 있는 바와 같이, 본 발명의 일 양상에 따르면, 최종 사용자들은 경험있는 프로그래머들로 기대되지 않는다. 따라서, 환경설정은 직관적인 명칭(예를 들어, EmailISFrom())을 갖는 조건들에 기초하여 생성되고 조건에 대한 인수는 간단한 사용자 정의 상수(예를 들어, Mary)일 수 있다. 이로 인해 최종 사용자는 EmailIsFrom(Mary)에 의해 트리거되는 환경설정을 기록할 수 있다. 그러나, 사용자가 제공한 스트링 상수에만 기초한 인수들만 가지는 것은 너무 제한적이다. 따라서, 바인딩(430)은 환경설정 클래스(425)의 일부로서 논리 스키마(400)에 지정될 수 있어 최종 사용자들을 위해 프로그래밍을 보다 용이하게 하고 정보가 검색될 수 있는 도메인을 확장할 수 있다. 스키마(400) 내에 지정될 수 있는 적어도 3가지 유형의 파라미터 바인딩들이 존재한다. 첫 번째는, 상수를 미리 정의하는 상수 바인딩이 지정될 수 있다. 상수 바인딩을 지정하면, 적어도 최종 사용자가 상수를 선택하거나 지정할 필요가 없기 때문에 이점이 있다. 이벤트 설정 표현(event bound expression)들은 조건들 및 액션들에 대한 인수들로서 제공되는 값들로 설정될 수도 있다. 보다 구체적으로, 이벤트 필드 및 상수들을 사용하여 값을 계산하는 표현이 정의될 수 있다. 예를 들면:
Figure 112005035121854-PCT00020
조건 클래스: SenderIsOnline()
Figure 112005035121854-PCT00021
정의 기능: IsOnline(X)
Figure 112005035121854-PCT00022
바인딩: X -> mail.Sender
마지막으로, 상수 접근자(constant accessor)들이 정의될 수 있다. 상수 접근자들은, 사용자가 객체 각각을 수동으로 지정하는 대신 조건들 및 액션들에 대한 인수들을 제공하는 객체들의 명명된 그룹들이다.
상수 접근자들은 환경설정 및 조건들이, 다양한 도메인들로부터 정보를 내비게이팅하고 검색할 수 있도록 기록되게 하는 매우 강력한 상수들이다. 이러한 상수들은 올바른 정보, 즉 상수의 명칭과 연관된 그룹의 구성원들을 찾고 실현하도록 동작하는 기능들로 꾸며진 명칭들이다. 도 5로 돌아가면, 상수 값들을 검색하기 위한 시스템(500)이 본 발명의 일 양상에 따라 예시되어 있다. 시스템(500)은 접근자 입력 컴포넌트(510), 링크 컴포넌트(520) 및 다수의 도메인(530, 540, 550)(DOMAIN1 내지 DOMAINN , 여기서 N은 1보다 큼)을 포함한다. 접근자 입력 컴포넌트(510)는 MyFamily, MyCoworkers 또는 MyFriends와 같은 상수를 입력으로서 수신하고, 접근자 컴포넌트(520)에게 상수를 제공한다. 접근자 컴포넌트(520)는 입력 상수에 의해 지정된 그룹의 구성원들과 연관된 값(들)을 시도하여 결정하거나 또는 연결하기 위해 모든 접근가능한 도메인(520, 530, 540)을 검색하도록 동작가능하다. 본 발명의 일 양상에 따르면, 도메인(530, 540, 550)은 스키마화된 데이터 저장소에 저장된 애플리케이션들일 수 있다. 예를 들어, 도메인(520)은 전자 메일 애플리케이션일 수 있고, 도메인(530)은 달력 애플리케이션일 수 있으며, 도메인(540)은 고객 계정 애플리케이션일 수 있다. 따라서, 접근자 컴포넌트(520)는 상수의 값(예를 들어, MyFamily)을 결정하기 위한 시도로 전자 메일 애플리케이션 또는 로컬화된 데이터 레지스트리에 접근할 수 있다. 컴포넌트(520)가 해당 도메인 또는 로컬화된 데이터 레지스트리 내의 값을 결정할 수 없다면, 상수 값을 결정할 때까지 추가의 접근가능한 도메인들을 체크하거나 또는 모든 가용한 도메인들을 체크할 수 있다. 일례에서, 접근자 컴포넌트는:
<MyFamily>
<Father>Bob Jones</Father>
<Mother>Barb Jones</Mother>
<Brothers>
<Bro1>Michael Jones</Bro1>
<Bro2>Jason Jones</Bro2>
</Brothers>
</MyFamily>
와 같은 전자 메일 애플리케이션에서 데이터를 발견할 수 있다.
주의할 점은, 상수 MyFamily와 연관된 그룹의 구성원들의 XML 표현은 예시적인 목적으로만 사용된다는 것이다. 그룹 집단은 본 발명에 의해 정의되거나 및/또 는 많은 방식들로 실현될 수 있다. 따라서, 접근자 컴포넌트(520)은, 전자 메일 애플리케이션으로부터 검색된 데이터에 기초하여 MyFamily를 Bob Jones, Barb Jones, Michael Jones, 및 Jason Jones으로 결정하거나 연결시킬 수 있다. 그러나, 접근자 컴포넌트(540)는 데이터 완전성 및 정확성을 보장하기 위해 계속해서 다른 도메인들을 체크할 수 있다. 예를 들어, 달력 애플리케이션에서 <Mysister> Jennifer Jones</MySister>을 찾고 이 값을 상수 MyFamily에 관한 값들의 스트링에 추가할 수 있다.
따라서, 지금까지 토의된 상수들(예를 들어, MyFamily, MyCoworkers, MyFriends, MyFavorite Musicians)은, 소정의 사용자에 대해 정의되는 1차 상수로 알려져 있다. 그 후, 접근자 컴포넌트(510) 또는 접근자는 사용자의 신원 또는 다른 개시점들을 키 오프(key off)할 수 있다. 주의할 점은, 이전에 정의된 그룹들(예를 들어, 상수들에 의해 명명됨)을 조합하기 위해 환경설정들을 사용하여 사용자에 의해 N차 상수들이 구성되고 저장될 수도 있다는 것이다. 예로서, 명제 구문의 의미와 유사한 기능을 제공하는 상수 명명 그룹의 조합을 생각해보자. 예를 들어, 사용자는 FriendsOfMyFamily또는EmailsFromPreferredCustomersInAppointmentsToday 와 같은 그룹들을 표현하는 상수들을 구성하고 저장할 수 있다. 다른 측면에서, 상수 확장은, 상수 접근자들로 표현될 수도 있고 다른 상수들과 조합될 수도 있는 항목들의 필드들 상의 조건들과 유사하다.
따라서, 상수 접근자는 서로 다른 도메인들에 걸쳐 데이터에 대한 내비게이션을 제공한다. 스키마화된 논리와 내비게이션 접근자와의 조합은, 프로그래머가 아닌 사람이 크로스-도메인 환경설정을 기록할 수 있게 한다. 더욱이, 비교적 작은 개수의 접근자 제한들과 결합된 비교적 적은 개수의 조건 클래스들은 다른 경우 애플리케이션 개발자에 의해 예상되어야 하는 많은 관심있고 강력한 조건들의 지정을 용이하게 한다.
이외에, 주의할 점은, 환경설정 그룹들이 지정될 수도 있다는 것이다. 최종 사용자에 의해 정의된 판단 논리는 하나 이상의 환경설정 세트에 의해 표현된다. 따라서, 환경설정 그룹은 연관된 환경설정들의 그룹들을 위한 컨테이너로서 정의될 수 있다. 그 후, 환경설정 그룹 내의 환경설정들은 (1) 동일한 환경설정 클래스에 속하거나, (2) 함께 평가되며, 그 결과들의 충돌은 해결된다. 또한, 환경설정 그룹 내의 환경설정은 집합적으로 인에이블 및 디스에이블될 수 있다. 환경설정의 집합적인 인에이블 및 디스에이블은, 많은 시나리오에서 유용할 수 있다. 예를 들어, 최종 사용자는, 작업시 하나의 환경설정 세트를 가지고 집에서 다른 환경설정 세트를 가질 수 있다. 따라서, 환경설정 그룹은 사용자 컨텍스트에 기초하여 인에이블 또는 디스에이블될 수 있다.
논리 스키마(400)는 연대기(435)를 포함할 수도 있다. 많은 정보 에이전트 애플리케이션들은 현명한 판단을 위해 상태를 유지할 필요가 있다. 간단한 예로서, 뉴스를 발표하는 정보 에이전트 애플리케이션들 생각해보자. 최종 사용자들은 관심있는 뉴스 기사를 받아볼 것이다. 이벤트 피드(event feeds)는 일정한 뉴스 기사 스트림을 운반한다. 한가지 문제는, 동일한 기사가 약간 수정된 콘텐트를 가지나 동일한 제목을 가지고 여러번 도달할 수 있다는 것이다. 이러한 상황에서, 현 명한 조건은: IsNewArticle()일 것이다. 이러한 조건은 제목을 예전에 보지 못했다는 것을 체크할 수 있다. 다른 예는, 일정한 갱신 스트림이 기사를 단절된 스토리로 만드는지를 체크하는 것이다. 이러한 유형의 기능을 인에이블하기 위해, 이벤트들이 처리되는 경우 상태는 유지될 필요가 있다. 이러한 상태는 본원에서 연대기로 나타내는데, 그 이유는, 애플리케이션 이력의 표현이기 때문이다.
정보 에이전트 스키마 개발자는 (예를 들어, 관계 데이터베이스 내 또는 운영 체제에 의해 관리되는 폴더들 내의 표들로서) 연대기를 정의할 수 있다. 보다 중요하게는, 스키마 개발자는 애플리케이션 상태를 갱신하기 위해 이벤트 프로세싱의 중요 단계들에서 작동할 수 있는 논리를 정의할 수 있다. 예를 들어, 이벤트가 단절된 스토리(breaking story)에 대응하는지를 계산하는 적절한 시간은 이벤트들이 처리되기 전일 수 있다. 또한, 새로운 기사가 처리되어, 동일한 제목을 갖는 후속 이벤트들이 복제품으로 나타나는 사실을 기록할 적절한 시간은 이벤트들이 처리된 후일 것이다. 또한, 주의할 점은, 액션 이력뿐만 아니라 이벤트 이력을 기록하는데 연대기가 사용될 수도 있다는 점이다.
개발자들은 충돌 해결 절차 또는 충돌 해결 컴포넌트(545) 내의 논리를 논리 스키마(400) 내의 환경설정 클래스(425)의 일부로서 지정할 수 있다. 이벤트가 발생하는 경우, 다수의 환경설정이 이벤트와 일치하면 다수의 액션들이 발생할 수 있다. 따라서, 실행의 순서 및/또는 취해지는 최종 액션을 결정하기 위한 시스템 및 방법을 원할 수 있다. 다수의 액션들의 트리거링을 다루는 적어도 3개의 방식이 존재한다. 먼저, 스키마(500)는 최종 사용자가 액션 또는 환경설정 우선순위들을 정의할 수 있게 한다. 예를 들어, 최종 사용자는 모든 환경설정에 우선순위를 할당할 수 있다. 또한, 최종 사용자는 소정의 환경설정에 정지 프로세싱 표시자(예를 들어 플래그)를 할당할 수 있다. 따라서, 이벤트가 다수의 액션들을 트리거하는 경우, 액션들은 우선순위의 순서로 실행될 수 있다. 또한 대안적으로, 다수의 환경설정들이 환경설정 그룹 내에서 일치하면, 가장 우선순위가 높은 환경설정만 실행되고 나머지는 폐기된다. 또한 스키마(400)는 최종 사용자가, 표시자를 포함하는 환경설정이 다른 환경설정들과 동시에 트리거되는 상황을 다루기 위해 소정의 환경설정에 정지 프로세싱 표시자를 부착할 수 있게 하는 것과 같은, 충돌 해결 절차들을 지정할 수 있게 한다. 충돌이 해결될 수 있는 다른 방법은, 스키마(400) 내의 액션 클래스 우선순위들을 정의하는 것이다. 따라서, 스키마 개발자는 액션 클래스 우선순위를 지정할 수 있다. 예를 들어, MoveToFolder 액션 클래스는 Delete 액션 클래스 보다 높은 우선순위를 지정받을 수 있다. 다른 충돌 시나리오들은, 동일한 액션 클래스의 다수의 액션들이 동시에 트리거되는 경우 발생할 수 있다. 스키마 개발자들은 이러한 유형의 상황을 다루기 위해 다수의 충돌 해결 논리를 정의할 수 있다. 예를 들어, 원하는 팝업의 볼륨(예를 들어 SetVolume())을 설정하는 액션 클래스가 존재한다고 가정하자. 이벤트가 2개의 액션들, SetVolume(50) 및 SetVolume(70)을 트리거한다고 더 가정하자. 이 경우, 충돌 해결 컴포넌트(545) 내에 정의된 충돌 논리는, 취해진 액션이 2개의 레벨들중 최소, 최대 또는 평균에 대응하도록 정의될 수 있다.
환경설정 실행 순서는 명시적인 실행 컴포넌트(450)을 통해 스키마(400) 내 에 지정될 수도 있다. 소정의 상황에서, 환경설정의 명시적인 순서화는 필수적인데, 그 이유는 하나의 환경설정의 액션들이 다른 환경설정 내의 조건들에 영향을 줄 수 있기 때문이다. 예를 들어, 전자 메일 환경설정의 경우, 하나의 환경설정이 사용되어 들어오는 메시지의 우선순위를 결정하며, 다른 환경설정이 기록되어 메시지의 우선순위에 반응하고 그에 작용하는 방법을 결정한다. 최종 사용자 환경설정 기록자들은 통상적으로 경험이 없는 프로그래머들이다. 본 발명의 일 양상에 따르면, 최종 사용자는, 부작용을 가져 그 결과 순서화 요구조건을 갖는 환경설정 또는 규칙을 기록하도록 요구받지 않는다. 스키마 개발자들이 최종 사용자에게서 순서화 의존성들을 감추는 것이 바람직하다. 이는, 환경설정 클래스 순서화, 명시적인 체인화 및 환경설정 그룹 순서화를 포함하나 이에 한정되지 않는 다수의 서로 다른 방식들로 달성될 수 있다. 환경설정 그룹 순서화에 의해 스키마 개발자는 하나의 환경설정 클래스를 다른 것 이전에 실행하도록 순서화시킬 수 있다. 상기 예에서, 메시지 우선순위들(예를 들어 우선순위)을 확립하기 위한 환경설정 클래스는 메시지에 반응하는 환경설정 클래스 이전에 와야 한다. 본 발명의 일 양상에 따르면, 최종 사용자에게 제공된 사용자 인터페이스는 페인들(panes)로 분할되어, 각 환경설정 클래스는 자신의 페인을 가진다. 명시적인 체인화에 따르면, 스키마 개발자는 새로운 이벤트들 및 그들의 순서화를 발생시키는 액션들을 지정할 수 있다. 따라서 환경설정 클래스들은 환경설정 클래스 순서화보다는 액션 이벤트 체인화로 구현될 수 있다. 또한, 스키마 개발자는 환경설정 그룹들을 사용하여 실행 순서를 지정할 수 있다. 환경설정 그룹 순서화의 사용은 환경설정 클래스 순서화와 동일 한 기능을 제공하나, 보다 유연한 형태이다. 예를 들어, 모든 환경설정 그룹은 정확히 하나의 환경설정을 가질 수 있으며, 이는 전체적으로 순서화된 순차적 환경설정 리스트와 등가가 된다.
"필요(Required)" 조건 및 액션들은 필요 조건 및 액션 컴포넌트(455)를 활용하여 환경설정 클래스(425)의 일부로서 스키마(400) 내에 지정될 수도 있다. 모든 환경설정 클래스는 필요 조건들 및 액션들을 포함할 수 있다. 필요 조건 및 액션들은 모든 환경설정에 소정의 공통 패턴을 시행하는데 사용될 수 있다. 예를 들어, 서버 상에 인가되는 유사한 전자 메일 프로세싱 예에서, 수신함 환경설정의 필요 조건은, 환경설정의 소유자가 전자 메일의 수신인도 된다는 것일 수 있다.
템플릿(460)이 논리 스키마(400) 내에 정의될 수도 있다. 경험이 없는 최종 사용자의 논리에 대한 작성을 용이하게 하기 위해, 최종 사용자가 채용하고 활용할 수 있도록 템플릿이 개발자 또는 제3자에 의해 제공될 수 있다. 결과적으로, 템플릿이 최종 사용자에게 이용가능하면, 시스템(100)은 환경설정 템플릿의 추상화를 지원하여야 한다. 이는, 소정의 파라미터들이 지정되지 않는 지속적인 완전한 환경설정에 단순히 대응할 수 있다.
스키마(400)는, 스케줄되고 반복적인 환경설정 컴포넌트(465)를 통해 스케줄되고 반복되는 환경설정을 다루도록 정의될 수도 있다. 많은 정보 에이전트 애플리케이션들은 반복하는 스케줄 상에서 평가되는 환경설정들을 활용하기를 원할 수 있다. 많은 예들중 하나는, 작업일 마다 오후 5시에 요약 상태를 송신하는 환경설정을 포함한다. 본 발명의 일 양상에 따르면, 스케줄되고 반복하는 기능은 2개의 추상화를 사용하여 스키마(400)에 구현될 수 있다. 먼저, 시스템 정의 이벤트 클래스(예를 들어 TimerEvent)가 사용되어 스케줄된 활동에 대해 이벤트 훅을 제공할 수 있다. 이러한 이벤트 클래스는 다양한 규칙적인 세밀도로 구성될 수 있다. 또한 이벤트와 연관된 데이터는 현재 시간 및 이전의 점화(firing) 시간을 포함할 수 있다. 두번째, 모든 스케줄된 환경설정은 아래와 같은 조건을 포함한다:
RecurrenceInWindow(RecurrenceSchedule, StartTime, EndTime), 여기서
Figure 112005035121854-PCT00023
RecurrenceSchedule은 최종 사용자 규격으로부터 캡쳐된, 원하는 반복 패턴을 나타내는 상수이다;
Figure 112005035121854-PCT00024
StartTime은 개발자에 의해 타이머 이벤트의 이전 시간으로 설정된다; 및
Figure 112005035121854-PCT00025
EndTime은 개발자에 의해 타이머 이벤트의 현재 점화 시간으로 설정된다.
종합하면, 논리 스키마(400)는, 최종 사용자 환경설정을 위한 논리 빌딩 블록들을 제공하기 위해 다수의 서로 다른 컴포넌트들 또는 섹션들을 포함할 수 있다. 스키마는 임의의 형태, 예를 들어 XML 파일을 취할 수 있다. 스키마가 완성되면, 데이터베이스 표현으로 컴파일되고 예를 들어, 데이터 저장소(150)(도 1) 내에 저장될 수 있다. 스키마 파일은 Visual Studio와 같은 애플리케이션들을 사용하여 직접적으로 작성되거나 구성될 수 있다는 것을 이해하여야 한다. 따라서, 시스템 컴파일러는 다수의 스키마 편집기 애플리케이션들을 사용하여 생성된 스키마 파일들을 지원할 수 있어야 한다.
애플리케이션 실행(Application Execution)
정보 에이전트 애플리케이션의 실행은 3개의 구별되는 카테고리: 이벤트 프로세싱, 환경설정 프로세싱 및 액션 프로세싱으로 세분될 수 있다. 이벤트 프로세싱은, 이벤트들이 캡쳐되는 방법 및 환경설정 논리를 활성화시키는 방법을 다룬다. 환경설정 프로세싱은, 서로 다른 환경설정 프로세싱 모드들에 부분적으로 의존하여 다수의 서로 다른 방식들로 구현될 수 있다. 마지막으로, 애플리케이션 실행은 액션들을 처리하는 방법을 결정하는 것을 포함한다.
이벤트들은 시스템 APIs(110)(도 1)을 사용하여 이벤트들을 명시적으로 제출하는 소정의 애플리케이션에 의해 켭쳐될 수 있다. 이벤트들은 개별적으로 제출되거나 또는 일괄적으로 함께 제출될 수 있다. 아래의 것을 포함하나 이에 한정되지 않는 이벤트 캡쳐를 위한 다수의 시나리오들이 존재한다:
Figure 112005035121854-PCT00026
정규 애플리케이션 논리의 일부로서, 예를 들어, Exchange SMTP 제공자는 새로운 SMTP 메시지들을 수신할 수 있고 정보 에이전트 이벤트들을 명시적으로 발생시킬 수 있다.
Figure 112005035121854-PCT00027
데이터 변화로부터, 예를 들면, 데이터 저장소(150) 내에서 데이터가 변화하는 경우 이벤트들이 IA 논리에 대해 트리거된다.
Figure 112005035121854-PCT00028
운영 체제로부터, 예를 들어, 애플리케이션은 운영 체제 및/또는 그의 연관된 런타임을 듣고 있다가 특정 액션이 검출되면 이벤트들을 발생시킨다.
Figure 112005035121854-PCT00029
정보 에이전트 환경설정으로부터, 하나의 환경설정의 액션이 환경설정 평가를 통해 체인화를 이끄는 다른 이벤트를 발생시킬 수 있다.
Figure 112005035121854-PCT00030
사용자는 발생될 해당 이벤트를 명시적으로 지정할 수 있다. 예를 들어, 사용자는 폴더 내의 각 파일에 대응하여 이벤트들이 발생되는 것을 지정할 수 있다.
또한, 주의할 점은, 시스템(100)은, 능동적으로 실행될 보다 큰 애플리케이션을 필요로 하지 않는 이벤트 캡쳐 논리에 대한 호스팅 서비스를 제공할 수 있다. 예를 들어, 정보 에이전트 애플리케이션은, 소정의 운영 체제 이벤트들이 애플리케이션 활동을 트리거하는 것을 원할 수 있다. 결과적으로, 이러한 기능을 위해 단순히 개별 애플리케이션이 작동하는 것을 요구하기 보다는 이러한 이벤트 제공자를 서비스로 호스트하는 것이 가능하다.
이벤트들의 발생에 의해 환경설정이 활성화된다. 그 프로세싱은 동기, 비동기 또는 양자의 조합일 수 있다. 동기 프로세싱의 경우, 이벤트 제출과 환경설정 평가 사이에 무시할 정도로 작은 지연이 존재한다. 비동기 프로세싱의 경우, 그 반대로, 이벤트 제출과 이벤트 프로세싱 간에 상당한 지연을 가진다. 본 발명에 따른 시스템은 양쪽 프로세싱 모델을 지원하고 이벤트 일괄 제출에 기초하여 실시간으로 모델들 사이를 선택할 수 있다.
더욱이, 본 발명의 일 양상에 따르면, 환경설정 프로세싱은 환경설정들을 효율적으로 평가하기 위해 데이터베이스 질의들의 능력을 이용한다. 선언형 프로그 래밍 모델이 개발자 및 궁극적으로는 최종 사용자에게 노출되어, 한번에 하나씩 모델에 따라 조건 함수들이 지정될 수 있게 한다. 한번에 하나씩의 프로그래밍 모델은, 사용하기에 가장 자연스러운 모델이고 개발자들 및 사용자들이 하나의 환경설정에 대해 하나의 이벤트를 지정할 수 있게 한다. 그러나, 본 발명의 일 양상에 따르면, 시스템(100)은, 인덱싱 및 복제 제거와 같은 기술을 사용하여, 세트 지향 방식으로 실행하는 조건형 클래스 질의들을 만든다. 이것은, 개발자들 및 최종 사용자들이, 이해하고 기록하기에 용이하나 다수의 환경설정을 실행하는 데에는 비효율적인 방식인, 한번에 하나씩의 방식으로 프로그램을 개념화하고 기록하도록 하나, 환경설정이 효율적인 방식으로 평가된다는 점에서 이점이 있다. 또한, 다수의 환경설정은 일괄적으로 처리될 수 있으며, 주의할 점은, 이벤트 발생시 환경설정이 개별적으로 평가될 수 있다는 것이다.
도 6으로 가면, 환경설정 평가용 시스템(600)이 본 발명의 일 양상에 따라 도시되어 있다. 시스템(600)은 데이터 저장소(150), 다수의 표(610), 환경설정 실행 엔진(160) 및 결과표(630)를 포함한다. 데이터 저장소(150)는, 개발자 스키마뿐만 아니라 최종 사용자 환경설정으로부터 시스템(100)에 의해 생산된, 다수의 표(610)를 수용한다. 이벤트 발생의 결과로서, 환경설정 실행 엔진은, 예를 들어 데이터 저장소(150) 내에 저장된 표들로부터 환경설정들을 수신하거나 검색한다. 그 후, 실행 엔진(160)은 환경설정뿐만 아니라 (데이터로서 저장될 수도 있는) 소정의 저장된 절차들을 활용하여 표들(610)을 질의하고 결과표(630)를 생성한다. 결과표(630)는, 지정된 액션들이 시작될 수 있도록 그 조건들이 만족되는 환경설정을 저 장할 수 있다.
표(610)의 개수와 복잡성은 최종 사용자 환경설정을 지원하기 위해 개발자에 의해 기록된 스키마의 복잡성에 따라 변화할 수 있다. 시스템(600)이 환경설정들을 처리하기 위해 데이터베이스 표 및 질의들을 활용하는 방법을 명확히 하기 위해 이후에 일례가 제공된다. 이 예에서는, 수개 그룹의 환경설정들을 활용하고자 하는 2명의 개인, Jack 및 Jill이 존재한다. 설명한 바와 같이, Jack과 Jill이 최종 사용자 환경설정을 지정할 수 있기 전에, 스키마가 생성되어야 한다. 스키마는 상술한 바와 같이 수개의 부분들을 가지고 있으나, 이해를 용이하게 하기 위해 매우 간단한 스키마가 본원에서 설명될 것이다. 스키마의 중요 부분들중 하나는 이벤트 클래스의 정의이다. 본 예에서는, 2개의 이벤트 클래스: EmailEvents 및 Stockevents가 고려된다. 첨부된 첨부물에 따르면, 2개의 이벤트 클래스뿐만 아니라 3개의 환경설정 클래스들의 스키마 정의를 예시하는 의사 코드가 도시된다. 2개의 환경설정 클래스들은 EmailEvents에 기초하며, 제3 클래스는 Stockevents에 기초한다. 그 후, 정보 시스템(100)은 이러한 스키마를 활용하여 환경설정 클래스 표 및 조건 클래스를 생성할 수 있으며, 이는 데이터 저장소(150)에 저장될 수 있다. 예를 들어:
PreferenceClasses 표
--------------------------------------------------------------------
App. Id, Pref. Class Id, Pref. Class Name, Event Class Id
--------------------------------------------------------------------
1 1 EmailPreferences1 1
1 2 EmailPreferences2 1
1 3 StockPreferences 2
--------------------------------------------------------------------
ConditionClasses 표
------------------------------------------------------
Pref. Class Id, Cond. Class Id, Cond. Class Name
-------------------------------------------------------
1 1 MailIsFrom
1 2 MailContains
2 3 MailPriority
2 4 MailIsFrom
3 5 StockSymbol
3 6 TargetPrice
-------------------------------------------------------
이다.
그 후, Jack과 Jill은 그들의 환경설정을 정의할 수 있다. 상기 예를 위해, Jack이 3개의 환경설정 그룹들 PG(Jack,1), PG(Jack,2), PG(Jack,3)를 정의한다고 가정하자. 또한, Jack은 다음과 같이 그룹들 중에 분산된 5개의 환경설정들을 정의한다:
PG (Jack, 1)
P1: On EmailEvents if MailIsFrom (Mary) AND MailContains ("California")
then PopAToast
P2: On EmailEvents if MailIsFrom (Bob) OR MailContains ("InfoAgent")
then PopAToast
P3: On EmailEvents if MailIsFrom (Home) OR MailIsFrom (MyWife) OR MailIsFrom (MySon)
then PopAToast
PG (Jack, 2)
P3: On EmailEvents if MailIsFrom (Home) OR MailIsFrom (MyWife) OR MailIsFrom (MySon)
then PopAToast
PG (Jack, 3)
P4: On EmailEvents if MailIsFrom (Home) AND MailPriority (10)
then MoveToFolder ("URGENT")
P5: On EmailEvents if MailPriority (15)
then MoveToFolder ("VERY URGENT")
상기 예를 위해, Jill이 2개의 환경설정 그룹(Jill,1) 및 (Jill,2)를 정의한다고 가정하자. 또한, Jill이 다음과 같이 그룹들 중에 분산된 5개의 환경설정을 지정한다고 가정하자.
PG (Jill, 1)
P6: On EmailEvents if MailIsFrom (Home) OR MailContains ("Vacation")
then PopAToast
P7: On EmailEvents if MailIsFrom (Bob) AND !MailContains ("Work")
then PopAToast
P8: On EmailEvents if MailContains ("Bonus")
then PopAToast
PG (Jill, 2)
P9: On StockEvents if StockSymbol = ('EBAY') AND TargetPrice > 120
then SendCellPhoneMessage ('Me')
P10: On StockEvents if StockSymbol = ('AMZN') AND TargetPrice > 50
then SendCellPhoneMessage ('Me')
그 후, 정보 에이전트 시스템(100)은 이러한 환경설정들을 활용하여 환경설정들과 그에 연관된 조건들을 기술하는 추가의 관련 데이터베이스 표들을 생성한다. 한번에 하나씩 다음의 예시적인 표들 및 환경설정들을 평가하기 위해 사용되는 방법을 생각해보자.
아래에 도시된 환경설정 그룹 표는 Jack 및 Jill이 정의한 환경설정 그룹 각각에 대해 하나씩 5개의 행을 포함한다. 또한 주의할 점은 환경설정 그룹이 인에이블되어 있는지 여부를 나타내기 위해 열이 지정된다는 것이다. 위에서 설명한 바와 같이, 이것은 예를 들어 사용자가 그들이 집에 있는 경우 인에이블되는 한 그룹의 환경설정을 지정하기를 원하고 그들이 작업중인 경우 인에이블되는 다른 그룹의 환경설정을 지정하기를 원하는 경우 유용하다. 여기에서는, 모든 환경설정 그룹들이 인에이블되는 것으로 도시되어 있다.
PreferenceGroups 표
---------------------------------------------------------------------
Pref. Group Id, Pref. Group Name, Subscriber Id, Enabled
---------------------------------------------------------------------
1 Jack_1 Jack True
2 Jack_2 Jack True
3 Jack_3 Jack True
4 Jill_1 Jill True
5 Jill_2 Jill True
---------------------------------------------------------------------
어느 환경설정이 어느 환경설정 그룹의 구성원인지를 요약하기 위해 PreferenceGroupMemberShip 표가 정의될 수도 있다. 아래에 도시되는 이 표는 각 환경설정에 대해 하나씩, 11개의 행을 포함한다.
PreferenceGroupMemberShip 표
-------------------------------------
Pref. Group Id, Pref. Id,
-------------------------------------
1 1
1 2
1 3
2 3
3 4
3 5
4 6
4 7
4 8
5 9
5 10
------------------------------------
아래의 환경설정 표는 사용자들에 의해 정의된 환경설정들과 관련된 데이터를 요약하기 위해 데이터 저장소(150)에 저장될 수 있다. 이러한 표는 10개의 환경설정 각각에 대응하는 10개의 행들을 포함한다. 주의할 점은, 이러한 표는 단지 중요한 열과 행들을 보여주기 위해 연결된 것으로 도시된다는 점이다.
환경설정 표
-----------------------------------------------------------------------
Pref.Class Id, Pref.Id, Orig.Cond.Expr., ANDGroupCount
-----------------------------------------------------------------------
1 1 From (Mary) AND Contains (CA) 1
1 2 From (Bob) OR Contains (IA) 2
1 3 From (Home) OR From (MyWife) OR 3
From (MySon)
2 4 From (Home) AND Priority (10) 1
2 5 Priority (15) 1
1 6 From (Home) OR Contains (Vacation) 2
1 7 From (Bob) AND !Contains (Work) 1
1 8 Contains (Bonus) 1
3 9 Symbol (EBAY) AND Price (120) 1
3 10 Symbol (AMZN) AND Price (50) 1
-----------------------------------------------------------------------
주의점 : 총 = 14
또한, 상기 환경설정 표에는 모두 14개의 AND 그룹들이 존재하는 것에 주의하라. 또한, 상기에는 모두 19개의 조건들이 존재한다. 이러한 AND 그룹들 및 조건들에 대한 정보는 다음과 같이 추가 표들로 캡쳐된다:
ANDGroups 표
-----------------------------------------
Pref. Id, ANDGroupId, ConditionCount
-----------------------------------------
1 1 2 -- From (Mary) AND Contains (CA)
2 2 1 -- From (Bob)
2 3 1 -- Contains (IA)
3 4 1 -- From (Home)
3 5 1 -- From (MyWife)
3 6 1 -- From (MySon)
4 7 2 -- From (Home) AND Priority (10)
5 8 1 -- Priority (15)
6 9 1 -- From (Home)
6 10 1 -- Contains (Vacation)
7 11 1 -- From (Bob) AND !Contains (Work)
8 12 1 -- Contains (Bonus)
9 13 2 -- Symbol (EBAY) AND Price (120)
10 14 2 -- Symbol (AMZN) AND Price (50)
-----------------------------------------
AND 그룹 ids는 이전 표로부터 순차적으로 번호매겨진다. ConditionCount는 AND에 의한 조건 접속의 개수를 기록한다. 상기 표에서 유일하게 놀라운 행 엔트리는 아래에 도시한 것이다.
7 11 1 -- From (Bob) AND !Contains (Work)
주의할 점은, ConditionCount는 예상되는 바와 같이 2 보다는 1이라는 것이다. 질의 평가시 NOTs의 존재를 고려하기 위해, 조건 카운트는 그들 앞에 Not(!)를 가지지 않는 AND 그룹 내의 조건들만의 합으로 정의된다. 그들 앞에 NOT를 갖는 조건들은 아래에 도시된 바와 같이 개별적인 표로 요약될 수 있다.
ANDGroups는 다음의 연결된 표가 도시하는 바와 같이 표 내에서 ANDGroupMembership 의 견지에서 더 정의될 수 있다:
ANDGroupMembership 표
-------------------------------------------------------
ANDGroupId, Cond. Class Id, Cond. Id
-------------------------------------------------------
1 1 1 -- From (Mary)
1 2 2 -- Contains (CA)
2 1 3 -- From (Bob)
3 2 4 -- Contains (IA)
4 1 5 -- From (Home)
.......................................................
.......................................................
.......................................................
14 6 19 -- Price (50)
--------------------------------------------------------
상기한 바와 같이, NOTs를 갖는 조건들은 특별한 경우로 생각되고 다음과 같이 그들 자신의 표로 요약될 수 있다:
NOT 표
--------------------------
Cond. Class Id, Cond. Id
--------------------------
2 14 -- !Contains (Work)
--------------------------
환경설정에서 지정된 조건들의 값을 저장하기 위해 조건 값 표가 생성될 수도 있다. 주의할 점은, 이 표는 각 조건들과 연관된 2개의 파라미터 값들만 고려 한다는 것이다. 상기 예를 위해, 부분적으로 그것만으로 충분한데, 그 이유는 모든 조건들은 단지 하나의 파라미터 값을 가지기 때문이다. 그러나, 조건들이 그와 연관된 2개 이상의 값들을 포함하도록 허용되면, 그 후 표는 확장되거나 또는 대안적으로 다른 표가 어느 정도의 여분의 조건 값에 대해 인스턴스화될 수 있다.
ConditionValues 표
--------------------------------------------------------
Pref. Id, Cond. Class Id, Cond. Id, ParamVal1, ParamVal2
--------------------------------------------------------
1 1 1 Mary NULL
1 2 2 CA NULL
2 1 3 Bob NULL
2 2 4 IA NULL
3 1 5 Home NULL
.......................................................
.......................................................
.......................................................
10 6 19 50 NULL
--------------------------------------------------------
ConditionsResults 표도 제공될 수 있다. ConditionsResults 표는 최종 결과 표(730)에 대한 선구체로서 활용될 수 있다. ConditionsResults 표는 조건 질 의들이 실행됨에 따라 채워진다. 조건 질의들이 아직 작동하지 않기 때문에, 표에 행들이 아직 존재하지 않는다. 조건들을 평가하고 표를 채우는 예시적인 절차들이 아래에 설명된다.
ConditionsResults 표
------------------------------------------------
Bool, Cond. Id, Pref. Id, Event Id
------------------------------------------------
------------------------------------------------
앞서 언급한 바와 같이, 본 발명의 양상들중 하나는, 조건 함수의 개발자들에게 한번에 하나씩의 모델의 노출을 허용하는 선언형 프로그래밍 시스템을 제공하는 것이나, 궁극적으로는, 데이터베이스 질의 효율성을 이용하는 세트 지향 방식으로 실행하는 조건형 클래스 질의들을 만드는 것이다. 따라서, 일-대-일 조건 클래스 선언들은 질의들로 변환될 수 있다. 예를 들어, EmailEvents에서 최종 사용자 환경설정은 전자 메일의 송신자(예를 들면, Jack의 P1)에 의존적인 액션을 만들수 있다. 따라서, 사용자 인터페이스를 통한 최종 사용자는 MailIsFrom(Mary)를 기록할 수 있다. 그러나, 환경설정 실행시, 시스템(700)은 사용자 조건문을 표현하는 데이터베이스 질의를 실행한다. 예를 들어, 시스템이, CV.ParamValue1 = 'Mary'인 사용자 선언의 측면에서 다음과 같은 SQL 질의문을 실행할 수 있다.
SELECT 1
FROM EmailEvents E, ConditionValues CV
WHERE E.Sender = CV.ParamValue1;
따라서, 개발자는 각 조건에 대한 질의 코드를 정의하고 표에 저장한다. 가능하더라도, 이러한 노출 목적을 위해 새로운 표가 생성될 필요는 없다. 이전에 정의된ConditionClasses 표는 아래의 의사 코드로 나타낸 바와 같이 질의 텍스트를 포함하도록 간단히 수정될 수 있다.
-----------------------------------------------------------------------
Pref.Class Id, Cond.Class Id,Class Name, Query_Text
-----------------------------------------------------------------------
1 1 MailFrom select 1, Cond. Id, Pref. Id, Event Id
from EmailEvents E, ConditionValues CV
where E.Sender = CV.ParamValue1
AND CV.Cond.ClassId = 1
AND required conditions
1 2 MailContains select 1, Cond. Id, Pref. Id, Event Id
from EmailEvents E, ConditionValues CV
where E.MessageText like '%' +
CV.ParamValue1 + '%'
AND CV.Cond.ClassId = 2
AND required conditions
.........................................................................
.........................................................................
.........................................................................
3 6 TargetPrice select 1, Cond. Id, Pref. Id, Event Id
from StockEvents S, ConditionValues CV
where S.Price > CV.ParamValue1
AND CV.Cond.ClassId = 6
AND required conditions
---------------------------------------------------------------------------
모든 표(710)가 정의되면, 결과 표(730)을 채우도록 그러한 데이터에 대해 환경설정이 평가될 수 있으며, 그 후, 그와 연관된 액션들을 실행한다. 질의들을 실행함으로써 환경설정들이 실행될 수 있다. 데이터 저장소(150)에 데이터로서 저장되고 본 발명의 일 양상에 따라 요구시 구성될 수 있는, 하나 이상의 절차들을 사용함으로써 질의들이 평가 및 처리될 수 있다. 조건 및 환경설정을 평가한 후, 예를 들어 연관된 액션들의 실행이 개시될 수 있도록 환경설정이 참으로 평가되는지 여부를 나타내는 표시자들 및 환경설정들로 결과 표를 채우는데 몇몇 절차들이 사용될 수 있다. 예를 들어, 다음의 절차가 사용되어 조건들을 평가하거나 또는 질의하고 결과들을 ConditionResults 표에 저장할 수 있는데, 이는 이어서 평가되 어 결과 표(730)을 채운다.
create proc NSStoreResultsIntoResultsTable
@conditionClassId int
AS
declare @query varchar (255) -- this number could be much larger
select @query=Query_Text
from ConditionClasses
where conditionClassId = @conditionClassId
insert ConditionResults exec (@query)
return (0)
또한, 상기 절차는, 모든 조건 질의들이 실행되도록 루프로 사용될 수 있다는 것을 이해하여야 한다. 그러나, 증가하는 조건 평가를 허용하도록 각 조건에 대해 하나씩 상기 절차를 불러오는 것이 바람직할 것이다. 모든 조건들이 평가되면, 다른 절차가 사용되어, 그 사이에 부울린 연산자들을 갖는 조건들인, 환경설정들을 평가한다.
본원에 기술된 모든 절차들에 있어서, 무엇보다도, 프로그램 스타일, 효율성, 및 구성된 표들의 성질에 따라 절차들이 기록될 수 있는 다수의 서로 다른 방식들이 존재한다. 아래의 절차를 이해하기 위해, 본 발명의 일 양상에 따라 환경설정을 평가하기 위해 활용될 수 있는 질의의 일례가 제공된다. 주의할 점은, 단 일 실행에서 보다는 증분적으로 환경설정의 서로 다른 ANDGroups을 평가하는 보다 효율적인 질의 절차가 사용될 수 있다는 것이다.
select distinct (eventId, prefId)
from ConditionResults C, AndGroupMemberShip A
where C.condId = A.condId
group by C.eventId, C.prefId, A.AndGroupId
having sum (C.Bool) = (select ConditionCount
from AndGroups A2
where C.Prefid = A2.PrefId
and A.AndGroupId = A2.AndGroupId)
상기 절차가 작용하여 최종 결과 표(730)에 대한 행들을 생성하는 방법을 명확히 하기 위해 몇가지 예들이 아래에 제공된다.
일례 1:
ConditionResults 표가 다음의 2개 행을 가진다고 가정하자.
-------------------------------------------------
Bool, Cond. Id, Pref. Id, Event Id
-------------------------------------------------
1 1 1 100 -- From (Mary)
1 2 1 100 -- Contains (CA)
---------------------------------------------------
환경설정 1 내의 이러한 2개 조건들 간에 AND가 존재한다. 결과적으로, 이러한 환경설정은, 상기 조건들이 참인 경우에만 참으로 평가될 것이다. 이러한 조건들 모두는, 그 조건 카운트가 2인 제1 ANDGroup에 속한다. 따라서, 상기 표가 AndGroupMembership 표와 결합되는 경우, 다음의 표가 생성된다:
-------------------------------------------------
Bool, Cond. Id, Pref. Id, Event Id, AndGroupId
-------------------------------------------------
1 1 1 100 1
1 2 1 100 1
-------------------------------------------------
합 = 2
그룹이 수행된 후, 다음의 행을 얻는다.
-------------------------------------------------
sum (Bool), Pref. Id, Event Id, AndGroupId
-------------------------------------------------
2 1 100 1
-------------------------------------------------
지금 (Pref.Id, ANDGroupId)가 ANDGroups 표를 위한 키를 형성한다. 검색표는 2의 조건 카운트를 제공하는데, 이는 sum(Bool)과 동등하다. 따라서, 환경설정이 참이고 결과 표(730)에 추가될 수 있다.
일례 2:
ConditionResults 표가 다음의 2개 행을 가진다고 가정하자:
-----------------------------------------
Bool, Cond. Id, Pref. Id, Event Id
-----------------------------------------
1 3 2 101 -- From (Bob)
1 4 2 101 -- Contains (IA)
-----------------------------------------
환경설정 2 내의 이러한 2개 조건들 간에 OR이 존재한다. 따라서, 이러한 환경설정은 2개 조건들중 어느 하나가 참인 경우에만 참으로 평가될 것이다. 이러한 조건들은, 그 조건 카운트들이 모두 1인, 제2 및 제3 ANDGroups에 각각 속한다. 따라서, 상기 표가
Figure 112005035121854-PCT00031
표와 결합되는 경우, 다음과 같은 표 결과들이 발생한다:
------------------------------------------------
Bool, Cond. Id, Pref. Id, Event Id, AndGroupId
------------------------------------------------
1 3 2 101 2
1 4 2 101 3
-------------------------------------------------
상기 표가 그룹화된 이후,
--------------------------------------------------
sum (Bool), Pref. Id, Event Id, AndGroupId
--------------------------------------------------
1 2 101 2
1 2 101 3
--------------------------------------------------
를 얻는다.
상기 행들 모두는 해빙 절(having clause)을 만족시키고 그 결과 개별적인 것이 적용된 후에, 환경설정(Pref.Id = 2, Event Id = 101)이 결과 표(703)로 복사될 것이라는 것을 알 수 있다.
일례 3:
이러한 최종 예에 있어서, ConditionResults 표는 다음의 2개의 행들을 가진다:
-------------------------------------
Bool, Cond. Id, Pref. Id, Event Id
-------------------------------------
1 13 7 102 -- From (Bob)
1 14 7 102 -- Contains (Work)
-------------------------------------
환경설정 7에서의 조건이 실제로는
From (Bob) and !Contains (Work).
였다는 것을 기억하자.
NOTs가 존재하는 경우, 상기 두번째 행의 1은 본 발명의 일 양상에 따라 -1로 변경된다. 다음은 그러한 기능을 제공하는 예시적인 질의이다:
update ConditionResults
set Bool = -1
where cond. Id IN (select cond Id
from Not)
또한, 주의할 점은, 스마트 질의 최적화기가 사용되고 NOT 표가 비워져 있다는 통지가 있으면, 질의는 순식간에 반환된다. 따라서, 상기 표는:
-----------------------------------------
Bool, Cond. Id, Pref. Id, Event Id
-----------------------------------------
1 13 7 102 -- From (Bob)
-1 14 7 102 -- !Contains (Work)
----------------------------------------
합 = 0
가 된다.
이러한 조건들 모두는 제11 ANDGroup에 속한다. ANDGroup 표로부터, 이러한 환경설정(환경설정, ANDGroup)의 조건 카운트는 1로 결정될 수 있다. 0 ≠ 1이기 때문에, 환경설정 평가 질의로부터 어떤 행들도 발생되지 않을 것이다. 그러나, 제2 행이 conditionResults 표 내에 있지 않다면, 1(=1)의 합을 가지고 환경설정 7은 참으로 평가된다는 점에 주의하라.
결과 표(730)가 채워진 후, 환경설정 액션들이 실행될 수 있다. 정보 에이전트 시스템(100) 또는 정보 에이전트 애플리케이션(들)에 의해 시스템(100)으로부터 환경설정 결과들을 검색하고 그들에 대해 조치함으로써 액션들이 실행될 수 있다. 액션들이 정보 에이전트 시스템(100)이 아니라 애플리케이션들에 의해 실행되면, 액션들은 이벤트 제출 애플리케이션 또는 소정의 다른 애플리케이션을 활용하는 시스템(100)으로부터 검색될 수 있다. 시스템(100)에 따르면, 액션들을 검색하고 실행할 수 있는 애플리케이션 액션 핸들러들을 위해 시스템(100)에 의해 호스팅 서비스가 제공될 수 있다.
우선순위 액션들 및 컨텍스트 분석(Priority Actions and Context Analysis)
다음의 설명은, 예를 들어, 사용자 또는 시스템으로의 전송을 위해 우선순위 시스템에 의해 자동적으로 우선순위화되는, 통지 또는 메시지와 같은 생성된 액션들과 연관된 복수의 정보를 인에이블하기 위한 시스템 및 방법과 연관된다. 또한, 이러한 설명은, 설명의 간단함을 위해 통지의 우선순위 및 컨텍스트 분석에 초점을 맞추며, 임의의 액션(들)이 유사한 방식으로 우선순위 및 컨텍스트 분석을 활용할 수 있다는 것을 이해하여야 한다. 우선순위 시스템은, 사용자에 대한 학습된 중요 성에 따라 하나 이상의 수신된 메시지들을 우선순위화하도록 명시적으로 및/또는 암시적으로 훈련될 수 있는 분류자들을 활용할 수 있다. 예로서, 통지는 유사한 정도의 중요성을 가지는 통지의 유형 또는 일례들의 훈련 세트를 통해, 높은 중요도, 중간 중요도, 낮은 중요도 또는 다른 정도의 중요도로 분류될 수 있다. 메시지 중요성에 관련된 사용자의 개인 판단에 따라 분류자를 더 개량시키거나 또는 조정하기 위한 메시지 프로세싱에 대한 사용자의 활동을 모니터하기 위해 백그라운드 모니터가 제공될 수 있다. 다른 우선순위 분류는, 메시지의 지연된 리뷰 또는 프로세싱에 대한 시간과 연관된 손실에 관련된 결정들을 포함할 수 있다.
메시지 또는 다른 통지들이 자동으로 우선순위화된 이후, 사용자들은 다수의 보다 덜 중요하거나 및/또는 관련없는 메시지들을 선별할 필요없이 보다 중요한 메시지들을 리뷰할 수 있다. 메시지들은 중요도의 측면에서 하나 이상의 폴더들로 더 수집될 수 있으며, 여기서 사용자들은 원하는 시간에 유사하게 카테고리화된 중요성을 갖는 메시지들을 리뷰할 수 있다. 정보 에이전트 시스템(100)과 같은 다른 시스템들은, (예를 들어, 통지 컴포넌트(180)를 통해) 소정의 우선순위에 기초하여, 하나 이상의 통지 싱크(예를 들어, 이동전화, 핸드헬드 컴퓨터)에 메시지들을 전달할 수 있다. 예를 들어, 전자 메일 메시지가 높은 중요도를 갖는 것으로 결정되면, 정보 에이전트 시스템(100)은, 사용자가 현재 메시지를 수신하기 위해 책상에 있는지를 결정할 수 있다. 그렇지 않다면, 통지 플랫폼은 메시지를, 이동 전화 또는 가정용 랩톱 컴퓨터와 같은 사용자 위치에서의 현재 가장 유사한 통신 장치로 재송신할 수 있으며, 사용자는 중요하거나 긴급한 메시지를 통지받을 수 있다.
도 7을 참조하면, 시스템(700)은 본 발명의 일 양상에 따라 우선순위 시스템(712) 및 통지 액션 아키텍쳐를 예시한다. 우선순위 시스템(712)은 하나 이상의 메시지 또는 통지들(714)을 수신하고, 관련된 메시지에 대한 우선순위 또는 중요성의 척도(예를 들어, 메시지가 높은 중요성 또는 낮은 중요성일 확률값)를 생성하고, 출력(716)에서 관련된 우선순위 값을 하나 이상의 메시지에 제공한다. 아래에서 보다 상세하게 설명되는 바와 같이, 메시지(714)에 우선순위의 척도를 자동적으로 할당하기 위해 분류자들이 구성되고 훈련된다. 예를 들어, 출력(716)은, 메시지들이 높은, 중간, 낮은 또는 다른 중요도 카테고리에 속하는 확률이 메시지에 할당되도록 포맷될 수 있다. 메시지들은, 예를 들어, 결정된 중요도 카테고리에 따라 전자 메일 프로그램(도시 안됨)의 수신함 내에 자동적으로 소팅될 수 있다. 소팅(sorting)은 정의된 중요도 라벨을 갖는 시스템 폴더에 파일들을 송신하는 것을 포함할 수도 있다. 이는, 낮은, 중간 또는 높은 중요도와 같은 중요도로 라벨된 폴더들을 갖는 것을 포함할 수 있으며, 특정 중요도로 결정된 메시지들이 연관된 폴더로 소팅된다. 유사하게, 하나 이상의 오디오 사운드 또는 시각 디스플레이(예를 들어, 아이콘, 심볼)이 채용되어 원하는 우선순위를 갖는 메시지가 도착했다는 것을 사용자에게 경보할 수 있다(예를 들어, 높은 우선순위 메시지에 대해서는 3번의 신호음, 중간 우선순위 메시지에 대해서는 두번의 신호음, 낮은 우선순위 메시지에 대해서는 1번의 신호음, 높은 우선순위에 대해서는 적색 또는 깜박이는 경보 심볼, 중간 우선순위 메시지가 도달했다는 것을 알리는 녹색 및 깜박이지 않는 경보 심볼).
본 발명의 일 양상에 따르면, 정보 에이전트 시스템(717)(도 1의 100)은 우선순위 시스템(712)과 함께 사용되어 우선순위화된 메시지를 사용자에게 액세스가능한 하나 이상의 통지 싱크(sink)로 송신할 수 있다. 아래에서 보다 상세하게 설명되는 바와 같이, IA 시스템(717)이 사용되어 우선순위화된 메시지(716)를 수신하고, 예를 들어 사용자에게 통지할 때, 그 장소 및 방법에 대해 결정할 수 있다. 일례로서, IA 시스템(717)은 통신 양식(communication modality)(예를 들어, 휴대폰 또는 PDA와 같은 사용자의 현재 통지 싱크(718)) 및 사용자 가능성있는 위치 및/또는 가능성있는 주의 집중을 결정할 수 있다. 높은 중요도의 전자 메일이 수신되면, 예를 들어, IA 시스템(717)은 사용자들의 위치/집중을 결정하고 사용자와 연관된 통지 싱크로 메시지를 송신/재포맷한다. 낮은 우선순위 메시지(716)가 수신되면, 예를 들어 나중에 원하는 경우의 검토를 위해 사용자의 수신함에 전자 메일을 남겨두도록 IA 시스템(717)이 구성될 수 있다. 아래에서 보다 상세하게 설명되는 바와 같이, 다른 라우팅 및/또는 경보 시스템(719)이 활용되어 우선순위화된 메시지(716)를 사용자들 및/또는 다른 시스템들에 송신할 수 있다.
본 명세서의 다음 섹션에서는, 자동 분류 시스템 및 프로세스를 통한, 전자 메일과 같은 텍스트 파일에 대한 우선순위의 생성이 설명된다. 그 후, 설명되는 텍스트에 대한 우선순위의 생성은, 아래에서 보다 상세하게 설명되는 통지 플랫폼과 같은 다른 시스템들에 사용될 수 있다. 상기 섹션의 설명은 도 8 및 도 9와 함께 제공되며, 전자는 텍스트 분류자의 명시적 및 암시적 훈련을 나타내는 도면이고, 후자는 텍스트 분류자에 대한 입력에 의해 텍스트에 대한 우선순위가 생성되는 방법을 도시하는 도면이다. 설명은 또한, 텍스트의 우선순위가 분류될 수 있는 것에 따른 서로 다른 스키마의 도면들인 도 10 및 도 11과 함께 제공되고, 텍스트 유형에 따라 적용될 수 있는 비용 함수들을 도시하는 그래프들인 도 8 및 도 11과 함께 제공된다.
도 8을 참조하면, 텍스트/데이터 분류자(820)는, 화살표(822)에 의해 표시된 대로 명시적으로 훈련되고 화살표(824)로 표시된 대로 암시적으로 훈련되어 우선순위의 측면에서 분류를 수행할 수 있다. 화살표(822)로 표시된 명시적인 훈련은 일반적으로 분류자(820)의 구성 초기 단계에 수행되며, 화살표(824)로 표시된 암시적인 훈련은 통상적으로 분류자(820)가 구성된 이후에 수행되어, 예를 들어, 백그라운드 모니터(834)를 통해 분류자(820)를 미세하게 조정한다. 분류 훈련 및 구현 접근법을 예시하기 위한 목적으로 SVM(Support Vector Machine) 분류자에 관해 본원에 구체적으로 설명된다. 다른 텍스트 분류 접근법은 베이지안 네트워크, 판단 트리를 포함하고 독립적인 서로 다른 패턴을 제공하는 확률론적 분류 모델이 사용될 수 있다. 본원에 사용된 텍스트 분류는 우선순위의 모델들을 개발하기 위해 활용되는 통계적 회귀 분석을 포함할 수도 있다.
본 발명의 일 양상에 따르면, 잘 알려진 SVM이 분류자(820)로 사용된다. Naive Bayes, Bayes Net, 판단 트리 및 다른 학습 모델과 같은 다른 분류자 모델들이 사용될 수도 있다는 것을 이해하여야 한다. SVM은 분류자 구성기 및 특징 선택 모듈(826) 내에 학습 또는 훈련 단계를 통해 구성된다. 분류자는, 입력 속성 벡터 x = (x1, x2, x3, x4, xn)을, 입력이 클래스에 속하는 신뢰도, 즉 f(x) = confidence(class)로 매핑하는 함수이다. 텍스트 분류의 경우, 속성들은 단어들, 구문들 또는 단어들로부터 도출된 다른 도메인 고유 속성들(예를 들어, 음성의 일부분들, 핵심 용어들의 존재)이며, 클래스들은 카테고리들 또는 관심 영역들(예를 들어, 우선순위들의 레벨)이다.
SVMs 및 다른 유도된 학습 접근법들의 일 양상은, 분류 기능을 자동적으로 학습하기 위해 라벨링된 인스턴스들의 훈련 세트를 사용하는 것이다. 훈련 세트는 분류자 구성기(826)와 연관된 데이터 저장소(830) 내에 도시된다. 예시된 바와 같이, 훈련 세트는 잠재적 및/또는 실제 구성요소들 또는 특정 카테고리와 연관되는 구성요소 조합(예를 들어 단어들 또는 구문들)을 나타내는 그룹화의 서브세트(G1 내지 GN)을 포함할 수 있다. 데이터 저장소(830)는, 복수의 카테고리(1 내지 N)을 포함할 수도 있으며, 그룹화가 하나 이상의 카테고리와 연관될 수 있다. 학습 동안, 입력 특징들을 클래스의 신뢰도에 매핑하는 기능이 학습된다. 따라서, 모델을 학습한 후, 카테고리들은 입력 특징들의 가중화된 벡터로 표현된다.
카테고리 분류에 있어, 2진 특징 값들(예를 들어, 단어가 카테고리 내에 발생하거나 또는 발생하지 않는 것), 또는 실수값의 특징들(real-valued features)(예를 들어, 단어가 중요 가중치 r로 발생하는 것)이 종종 사용된다. 카테고리 컬력션이 다수의 고유 용어를 포함할 수 있기 때문에, 카테고리화에 기계 학습 기술이 적용되는 경우 특징 선택이 일반적으로 사용된다. 특징들의 수를 줄이기 위해, 특징들은 전체 빈도 카운트들에 기초하여 제거된 후, 카테고리들에 대한 맞춤에 기초한 보다 작은 개수의 특징들에 따라 선택된다. 카테고리에 대한 맞춤은 상호 정 보, 정보 게인(gain), 카이 자승(chi-square) 및/또는 실질적으로 임의의 다른 통계적 선택 기술을 통해 결정된다. 그 후, 이러한 보다 작은 기술들은 SVM에 대한 입력으로 작용한다. 주의할 점은, 선형 SVMs이 적절한 일반화 정확도를 제공하고 빠른 학습을 적절하게 제공한다는 것이다. 비선형 SVMs중 다른 클래스들은 다항 분류자 및 원형 기반 함수들을 포함하고 본 발명에 따라 활용될 수도 있다.
분류자 구성기(826)는, 입력 벡터들을 클래스 신뢰도에 매핑하는 기능을 "학습"하기 위해 데이터 저장소(830) 내의 그룹화 및 연관된 카테고리들을 분석하도록 학습 모델(832)을 사용한다. SVM을 포함하여 많은 학습 모델에 있어, 카테고리들에 대한 모델은 특징 가중치들의 벡터 w로서 표현될 수 있으며, 각 카테고리에 대해 학습된 가중 벡터가 존재할 수 있다. 가중치 w가 학습되는 경우, x 및 w의 스칼라 곱 - w는 학습된 가중치들의 벡터이고, x는 새로운 텍스트를 표현하는 벡터임 - 을 계산함으로써 새로운 텍스트가 분류된다. 시그모이드(sigmoid) 함수가 제공되어 SVM의 출력을 확률 P로 변환할 수도 있다. 확률은 카테고리들에 걸쳐 비교가능한 스코어들을 제공하거나 또는 우선순위가 결정될 수 있는 클래스들을 제공한다.
SVM은, 그 함수 형태가 훈련 이전에 정의되는 파라미터화된 함수이다. SVM을 훈련시키는 것은, 일반적으로 라벨링된 훈련 세트를 필요로 하는데, 이 이유는 SVM이 예들의 세트로부터 함수를 피팅할 것이기 때문이다. 훈련 세트는 N개의 예들의 세트로 구성될 수 있다. 각 예는 입력 벡터 xi 및 카테고리 라벨 yj - 이는 입력 벡터가 카테고리 내에 있는지 여부를 기술함 - 을 포함한다. 각 카테고리에 대해, N개의 예로 훈련된 SVM 내에는 N개의 자유 파라미터들이 존재한다. 이러한 파라미터들을 찾기 위해, 잘 알려진 바와 같이 QP(quadratic programming) 문제의 해를 구한다. QP 문제를 풀기 위한 다수의 알려진 기술이 존재한다. 이러한 기술들은, 순차적 최소 최적화 기술(Sequential Minimal Optimization technique)뿐만 아니라 다른 기술들을 포함할 수 있다. 도 9에 도시된 바와 같이, 입력 벡터 x로 변환된 텍스트 입력(936)은 각 카테고리에 대한 분류자(920)에 인가된다. 분류자(920)는 분류자 구성기(926)에 의해 결정된 학습된 가중 벡터 w(예를 들어, 각 카테고리에 대해 하나의 가중 벡터)를 활용하고 스칼라 곱을 형성하여 우선순위 출력(938)을 제공한다. 여기서, 확률 P는 하나 이상의 연관된 우선순위(예를 들어, 높음, 중간, 낮음)을 나타내는 입력 텍스트(936)에 할당될 수 있다.
다시 도 8을 참조하면, 화살표(822)로 표현되는 텍스트 분류자(820)의 훈련은, 특징 선택의 활용을 포함하여, 826에서 분류자를 구성하는 것을 포함한다. 명시적인 훈련 단계에서, 분류자(820)는 시간 임계(time critical) 및 비시간 임계 텍스트 모두를 사용하여 제공되어, 예를 들어 분류자가 둘 사이를 구별할 수 있다. 이러한 훈련 세트는 사용자에 의해 제공될 수 있거나 또는 표준 또는 디폴트 훈련 세트가 활용될 수 있다. 훈련 자료(training corpus)가 제공되면, 분류자(820)는 먼저 가장 구별되는 특징들을 찾기 위해 특징 선택 절차들을 적용한다. 이러한 프로세스는 상호 정보 분석을 사용한다. 특징 선택은, 자연어 프로세싱으로 태그된 구문들 및 음성의 일부분들과 같이, 가용한 보다 높은 레벨의 구별 또는 하나 이상의 단어들에 작용할 수 있다. 즉, 텍스트 분류자(820)는 중요하게 생각되는 텍스 트의 특징을 구별하기 위해 특별히 태그된 텍스트가 공급될 수 있다.
텍스트 분류를 위한 특징 선택은 일반적으로 단일 단어에 대해 검색을 수행한다. 단일 단어에 대한 신뢰 이상에서는, 도메인 고유 구문들 및 하이 레벨 특징 패턴도 사용될 수 있다. 특별한 토큰(token)들이 분류를 강화시킬 수도 있다. 전자 메일 임계성(criticality)에 대한 학습된 분류자의 품질은, 예를 들어, 서로 다른 시간 임계성의 전자 메일들 간을 구별하는데 유용한 것으로 식별된 특징 선택 절차들로 만들어진 특징(feature selection procedures handcrafted features)에 대해 입력함으로써 개선될 수 있다. 따라서, 특징 선택 동안, 하나 이상의 단어들뿐만 아니라 서로 다른 레벨의 시간 임계성의 메시지들 사이를 구별하는데 유용한 구분 및 심볼들이 고려된다.
다음의 예들이 예시하는 바와 같이, 토큰들 및/또는 메시지들의 임계성을 식별하는 값의 패턴들은 다음의 부울린 조합을 포함하여 상기 구분을 포함한다:
메시지 헤더 내의 정보
예를 들면:
TO:필드(수신자 정보)
사용자에게만 어드레스됨,
사용자를 포함하여 소수의 사람에게 어드레스됨,
작은 인원의 사람의 가명으로 어드레스됨,
작은 인원의 사람의 몇몇 가명들로 어드레스됨,
Cc:'d to user
Bcc:'d to user
FROM:필드(송신자 정보)
다양한 클래스들의 개인들로 잠재적으로 분할된, 중요한 사람의 미리 정해진 리스트 상의 이름들(예를 들어, 가족 구성원들, 친구들),
사용자의 회사/조직 내부로 식별된 송신자들,
사용자가 보고하는 관리자,
사용자의 관리자의 관리자,
사용자에게 보고하는 사람
과 같이 온라인 조직 차트로부터 그려진 사용자에 대한 조직 관계 구조에 관한 정보,
외부 비지니스 인물.
과거 시제 정보
이것은,
만났습니다.(We met),
회의 했습니다(meeting went),
발생했습니다(happened),
모였습니다(got together),
신경을 썼습니다(took care of),
어제 회의(meeting yesterday)
과 같이 이미 발생한 이벤트들에 관한 기술을 포함한다.
미래 시제 정보
내일(tomorrow),
이번 주(this week),
~ 할 것 입니까(are you going to),
언제 할 수 있나요(When we can),
기대하고 있습니다(Looking forward to),
~ 입니까?(Will this),
~ 일 것이다(Will be)
회의 및 조정 정보
모이다(get together),
만날 수 있을까요(Can you meet),
모일 예정입니까(Will get together),
~ 을 조정하다(Coordinate with),
합쳐질 필요가 있을까(Need to get together),
만납시다(See you),
회의 예약(Arrange a meeting),
초대하고 싶다(Like to invite),
부근에 있다(Be around)
해결된 날짜
날짜 및 시간을 기재하는 텍스트 패턴들로부터 지시된 미래 대 과거 날짜 및 시간
On 5/2, At 12:00과 같이, 명시적 또는 전형적인 약어
질문들
물음표에 인접한 단어들, 구문들
개인 요청의 표시
~ 가능한가요(Can you),
~ 하시겠습니까(Are you),
~ 할 예정인가요(Will you),
~ 해 주세요(you please),
~ 할 수 있나요(Can you do),
부탁드립니다(Favor to ask),
당신으로부터(From you).
필요의 표시
나는 ~ 필요합니다(I need),
그는 ~ 필요합니다(He needs),
그녀는 ~ 필요합니다(She needs),
~ 하고 싶습니다(I'd like),
좋습니다(It would be great),
나는 ~ 원합니다(I want),
그는 ~ 원합니다(He wants),
그녀는 ~ 원합니다(She wants),
신경 써 주세요(Take care of).
시간 임계성
곧 발생하는(happening soon),
즉시(right away),
마감일은 ~ 일 것이다(deadline will be),
마감일은 ~ 이다(deadline is),
가능한 빨리(as soon as possible),
곧 필요(needs this soon),
곧 할 것(to be done soon),
즉시 완료(done right away),
곧(this soon),
몇일까지(by [date]),
몇시까지(by [time]).
중요성
중요함(is important),
임박함(is critical),
단어, 구문 +!,
명시적인 우선순위 플래그 상태(낮음, 없음, 높음).
메시지의 길이
새로운 메시지의 컴포넌트 내의 바이트들의 수.
상업용 및 성인물 정크 전자 메일의 표시
공짜!!(Free!!),
단어+!!!(Word + !!!),
18세 이하(Under 18),
성인 전용(Adult's only),
대문자 단어의 퍼센트,
문자숫자겸용 문자의 퍼센트.
주의할 점은, 상기 도시된 단어 또는 구문 그룹화는, 분류자 훈련을 수행하는데 사용될 수 있는 예시적인 단어들, 그룹화 또는 구문들을 나타낸다는 것이다. 다른 유사한 단어들, 그룹들 또는 구문들이 유사하게 사용되며, 따라서 본 발명은 도시된 예들로 한정되지 않는다는 것을 이해하여야 한다.
또한, 도 8을 참조하면, 화살표(824)로 표시한 바와 같이, 분류자(820)의 암시적인 훈련은, 예를 들어, 사용자의 데스크톱 또는 이동 컴퓨터 상에 상주할 수 있는 백그라운드 모니터(834)를 통해 사용자 작업 또는 사용법 패턴들을 모니터링함으로써 수행된다. 예를 들어, 사용자들이 작업하고, 메일 리스트가 검토될 때, 시간 임계성 메시지들이 먼저 읽혀지고, 낮은 우선순위 메시지들이 나중에 검토되거나 및/또는 삭제된다고 가정할 수 있다. 즉, 새로운 전자 메일이 제공되는 경우, 사용자는, 자신이 즉시 그 전자 메일을 열어 볼 것인지 여부, 및 어떤 순서로, 열어보지 않고 그 전자 메일을 삭제하거나 및/또는 비교적 짧은 시간 내에 전자 메일에 응답할지 여부를 결정하기 위해 모니터된다. 따라서, 작업하거나 또는 시스템을 운영하면서 사용자가 모니터되도록 분류자(820)가 구성되며, 분류자는 백그라운드에서의 훈련에 의해 주기적으로 개량되고 실시간 의사 결정을 강화하기 위해 갱신된다. 분류자들을 구축하는 백그라운드 기술들은 새로운 훈련 메시지들로 분류자(820)를 갱신하는 기술로부터 확장될 수 있다.
대안적으로, 많은 양의 메시지들이 수집될 수 있으며, 매일 스케줄에 따라 또는 훈련 세트 및/또는 조합에 허가된 새로운 양의 메시지의 수에 따라 일괄 프로 세스로 새로운 필터들이 생성된다. 분류자에 입력된 각 메시지에 대해, 예를 들어, 분류자에 대한 새로운 케이스가 생성될 수 있다. 그 케이스들은, 예를 들어 높은 우선순위 또는 낮은 우선순위인 텍스트들의 네거티브 예 및 포지티브 예로서 저장된다. 일례로서, 하나 이상의 낮은, 중간 및 높은 긴급 클래스들이 인식되어, 이들 클래스들 각각의 멤버쉽의 확률이 예상 임계성을 구축하는데 활동된다. 보다 큰 개수의 임계성 클래스들이 보다 높은 해상도를 추구하는데 활용된다. 예를 들어, 도 9에 예시된 바와 같이, 메시지들의 훈련 세트(940)(예를 들어, 매우 높은, 높은, 중간, 보통, 낮은, 매우 낮은 등)는 분류자(942)를 훈련시키는데 초기에 사용될 수 있어, 944로 나타낸 바와 같이 실시간 분류가 달성되며, 훈련 세트(940)에 의해 결정된 예들의 개수에 따라 새로운 메시지들이 분류된다. 도 9에서, 그러한 3개 카테고리가 예시적인 목적으로 도시되어 있으나, 다수의 그러한 카테고리들이 가변하는 원하는 중요도에 따라 훈련될 수 있다는 것을 이해하여야 한다. 예시된 바와 같이, 새로운 메시지들(944)은 예를 들어 분류자(942)에 의해 할당된 우선순위에 따라, 라벨링되거나, 태그되거나 및/또는 하나 이상의 폴더(946)로 소팅될 수 있다. 아래에서 보다 상세하게 설명되는 바와 같이, 할당된 우선순위는 후속 시스템에 의해 더 활용되어 메시지를 포맷하고, 전달하고, 사용자에 대한 형식(modality)를 결정한다.
본 발명의 또 다른 양상에 따르면, 수 또는 값의 추정은, 예를 들어 케이스 또는 메시지를 폴더 세트중 하나로 라벨링하기보다는 사용자가 전자 메일과 상호작용하는 것을 모니터링함으로써 달성될 수 있다. 따라서, 분류자는 계속 갱신될 수 있으나, 이동하는 윈도우를 가지며, 소정의 나이보다 새로운 문서 또는 메시지들의 경우들이 사용자에 의해 지정되는 바와 같이 고려된다.
예를 들어, 메시지들의 지연된 리뷰와 연관된 일정한 손실율은 메시지의 예상 임계성(EC)로서 나타내지며,
Figure 112005035121854-PCT00032
이고, C는 비용 함수, d는 지연이고, E는 이벤트이며, H는 전자 메일의 임계성 클래스이고, EC는 잠재적인 클래스(들)에 대한 비용 함수 C에 의해 기술되는 손실율에 의해 가중처리된 클래스(들)의 확률에 대한 합으로서 표현된다.
일례로서, 도 9를 참조하면, 전자 메일 메시지와 같은 텍스트(936)가 분류자(920)로 입력되며, 그에 기초하여 텍스트(936)에 대한 우선순위(938)을 생성한다. 즉, 분류자(920)는, 예를 들어 0 내지 100%로 측정된, 우선순위(938)를 생성한다. 이러한 백분율은, 텍스트(936)가, 분류자(920)의 이전 훈련에 기초한, 높거나 또는 소정의 다른 우선순위일 확률의 척도이다.
주의할 점은, 상기한 바와 같이 본 발명에서 분류자(920) 및 우선순위(938)는, 훈련 단계의 전자 메일들이 예를 들어 높은 우선순위 또는 낮은 우선순위로 파악되는 방식에 기초할 수 있다. 이러한 방식은 도 10을 참조하여 예시되는데, 여기서 텍스트 분류자(1020)는, 높은 우선순위로 미리 결정되는 텍스트(1047)의 그룹, 및 낮은 우선순위로 미리 결정되는 텍스트(1048)의 그룹에 의해 훈련된다. 분 석될 텍스트는, 예를 들어 분석되는 텍스트가 높은 또는 낮은 우선순위일 가능성을 측정하는, 스칼라 수(1049)를 출력하는 분류자(820)로 입력된다.
예를 들어, 도 10 및 11을 참조하면, 도면은 텍스트(1036, 1136)가 낮은, 중간 및 높은 우선순위로 카테고리화되는 방식을 예시한다. 상술한 바와 같이, 다수의 다른 훈련 세트들이 사용되어 보다 크거나 또는 보다 높은 해상도로 구별되는 우선순위들을 제공한다. 텍스트 분류자(1020, 1120)는, 높은 우선순위인 텍스트 그룹(1047, 1147), 낮은 우선순위인 텍스트 그룹(1048, 1148), 및 중간 우선순위인 텍스트 그룹(1150)에 의해 훈련된다. 따라서 분석될 텍스트(1036, 1136)는, 예를 들어 분석되는 텍스트가 높은 우선순위이거나 또는 원한다면 중간 우선순위 또는 낮은 우선순위일 가능성을 측정할 수 있는 스칼라 수(1049, 1149)를 출력하는 분류자(1020, 1120)로 입력된다. 분류자(1020, 1120)는, 낮은, 중간, 또는 텍스트(1136)가 속할 가능성이 가장 높은, 높은 우선순위의 클래스를 나타내는 클래스(1152)를 출력할 수도 있다.
본 발명은, 우선순위의 정의를, 그 용어가 분류자(1020, 1120)에 의해 사용되어 전자 메일 메시지와 같은 텍스트에 그러한 우선순위를 할당하는 것으로 한정하지는 않는다. 예를 들어, 우선순위는 손실 함수로 정의될 수 있다. 보다 구체적으로, 우선순위는 수신된 이후 텍스트 리뷰시에 지연된 시간 당 손실된 기회의 예상 비용으로 정의될 수 있다. 그것은, 예상 손실 또는 텍스트의 지연된 처리에 대해 초래되는 비용이다. 손실 함수는 수신된 텍스트의 유형에 따라 더 변화할 수 있다.
예를 들어, 일반적인 경우는, 텍스트의 우선순위에 따른 선형 비용 함수의 그래프(1254)인 도 12에 예시되어 있다. 그래프(1254)에서, 시간이 증가하면, 텍스트를 리뷰하지 않은 비용도 증가한다. 그러나, 비용은, 선 1258로 나타낸 중간 우선순위 메시지 또는 선 1260으로 나타낸 낮은 우선순위 메시지와 비교하면 선 1256으로 나타낸 높은 우선순위 메시지에 대해 더 증가한다. 예를 들어, 높은 우선순위 선(1256)은 100의 기울기를 가질 수 있고, 중간 우선순위 선(1258)은 10의 기울기를 가질 수 있고, 낮은 우선순위 선(1260)은 1의 기울기를 가질 수 있다. 그 후, 이러한 기울기 값들은, 예를 들어 회귀 분석에 의해 소정의 텍스트에 우선순위를 할당하는 경우 분류자(1020, 1120)에 의해 활용될 수 있다.
그러나, 소정의 메시지는 선형 비용 함수를 사용하여 잘 근사된 자신들의 우선순위들을 가지지 않는다. 예를 들어, 회의와 관련된 메시지는 회의 시간이 다가옴에 따라 그 비용 함수가 증가할 것이고, 그 후, 비용 함수는 급격히 감소할 것이다. 즉, 회의에 빠진 후, 일반적으로 사용자들이 그에 대해 할 수 있는 것이 많지 않다. 이러한 상황은 도 13에 도시된 바와 같이, 비선형 비용 함수에 의해 보다 잘 근사된다. 그래프 1362에서, 비용 함수(1364)는 선 1366에 의해 구별되는 회의 시간에 도달할 때까지 급격히 증가하고, 그 후, 급격히 감소한다. 메시지의 유형에 따라, 비용 함수는, 선형 및 비선형 모두, 많은 서로 다른 대표적인 비용 함수들중 하나에 의해 근사될 수 있다.
따라서, 설명한 바와 같이, 텍스트의 우선순위는, 분류자의 출력에 기초한 다수의 우선순위들중 하나이거나, 역시 분류자의 출력에 기초하여 텍스트에 적용할 가장 가능성있는 우선순위 클래스일 가능성일 수 있다. 대안적으로, 전자 메일 메시지와 같은 텍스트의 예상 시간 임계성은,
Figure 112005035121854-PCT00033
와 같이 결정되고 기록될 수 있으며, EL은 예상 손실, p(criticali)는 텍스트가 임계성 i를 가질 확률이며, C(criticali)는 임계성 i를 갖는 텍스트에 대한 비용 함수이며, n은 전체 임계성 클래스들의 개수 - 1이다. 비용 함수들은 설명한 바와 같이 선형 또는 비선형일 수 있다. 함수가 선형인 경우, 비용 함수는 시간에 따라 일정한 손실율을 정의한다. 비선형 함수의 경우, 손실율은 텍스트의 지연되는 리뷰 또는 처리에 따라 변화하며 지연량에 따라 증가하거나 또는 감소할 수 있다.
n=1인 경우, 단지 2개의 우선순위 클래스들, 낮은 것과 높은 것이 존재한다고 하면, 예상 손실은,
Figure 112005035121854-PCT00034
와 같이 재공식화될 수 있으며, EC는 텍스트의 예상 임계성이다. 또한, 낮은 임계성 메시지의 비용 함수가 제로로 설정되면, 이는,
Figure 112005035121854-PCT00035
이 된다. 텍스트의 리뷰 시간까지의 전체 손실은 표현된 임계성의 적분으로 아래와 같이 표현될 수 있다.
Figure 112005035121854-PCT00036
이며, t는 문서를 리뷰하기 전의 시간 지연이다.
전자 메일 메시지와 같은 문서를 랭킹화하기 위한 값 메트릭(value metric)을 따르는 다른 척도는 중요도이다. 상기 설명은 시간 임계성으로서의 우선순위에 초점을 둔 반면, "중요도(importance)"의 다른 표기도 훈련될 수 있다. 예를 들어, 이는 훈련 폴더 세트를, "예상 중요도(expected importance)"의 척도가 결정될 수 있는 "높은 중요도"에서 "낮은 중요도"로 라벨링함으로써 달성될 수 있다. 다른 메트릭은, 여행중인 사용자에게 전달하기 위한 메시지들을 우선순위화하기 위한 척도를 결정하기 위해, 의미론적 라벨 "여행을 하면서 1일 내에 내가 보기를 원하는 메시지들"에 기초할 수 있다. 또한, 하나의 활용된 메트릭은, 의사 결정, 선별 및 라우팅을 위해 명확한 의미를 가지는, 긴급성 또는 시간 임계성이다. 이 경우, 클래스들은 서로 다른 레벨의 긴급성에 따라 라벨링되고 메시지가 각 클래스 내에 있는 것을 추론하는 확률로부터 각 메시지에 대한 예상 긴급성으로 계산된다.
임계성 분류에 대한 확장은, 앞선 섹션에서 설명한 바와 같이, 본 발명에 따 라 제공될 수도 있다. 예를 들어, 분류는, 특징들의 클래스들 간 또는 그 내부의 높은 대가의 특징들의 조합에 대한 자동 검색을 포함할 수 있다. 일례로서, 소정의 사용자들에게 특히 유용한 것으로 발견된 단어들을 갖는, 특별한 구별의 조합, 구조 등이 검색되고 분류 프로세스에서 활용될 수 있다. 2개의 특징들의 조합은, 더블릿(doublet)으로 칭해지고, 3개 특징들의 조합을 트리플릿(triplet)으로 표현되는 것 등이다. 특징들의 조합들은 분류를 개선시킬 수 있다.
분류는 또한 분류자 내에 이동 윈도우를 사용하는 증분형 인덱싱(incremental indexing)을 사용하여 개선될 수도 있다. 이는, 오래된 데이터가 타임아웃되고 새로운 데이터가 들어오는 것과 같이, 분류자가 주기적으로 리프레시되게 한다.
분류는 메시지 내에 지정된 이벤트의 날짜 및 시간의 결정에 기초할 수도 있다. 이러한 결정은 특징들을, 분류자에 의해 활용될 수 있는 메시지로 할당할 수 있다. 예를 들어, 할당된 특징들은, 4시간 이내의 오늘, 8시간 이내의 오늘, 내일, 이번 주, 이번 달 및 다음 달 등을 포함할 수 있다. 이는 분류자가, 분류되는 메시지들에 대해 개선된 정확도를 가질 수 있게 한다. 일반적으로, 이벤트가 미래에 존재하거나 또는 지나갔는지 여부를 고려하면, 분류는 참조되는 이벤트의 시간에 기초할 수 있다. 따라서, 분류는, 미래 이벤트들에 대해, 이벤트가 발생할 때의 미래의 시간에 대한 송신자의 기준을 고려한다.
다른 새로운 특징들이 분류 프로세스로 통합될 수도 있다. 예를 들어, 조직 차트가 활용되어 챠트 내의 송신자의 위치에 의해 메시지가 얼마나 중요한 것인지 를 결정한다. 언어적 특징이 분류자에 통합될 수 있다. 서로 다른 언어들을 수용하기 위해, 특징들은 송신자의 발신원 및/또는 메시지가 기록된 언어에 따라 수정될 수 있다. 분류는, 메시지들이 저장되는 서로 다른 폴더들뿐만 아니라 다른 스케일링 및 제어 규칙들에 따라 변화할 수 있다. 전자 메일 및 다른 소스들 이외에, 분류는 인스턴트 메시지들, 주식 티커와 같은 다른 정보원 등에 대해 수행될 수 있다.
일반적으로, 송신자-수신자 구조적 관계가 분류 프로세스에서 고려될 수 있다. 예를 들어, 사용자가 실질적으로 메시지의 유일한 수신자라면, 그 후 이러한 메시지는 작은 인원의 사람에게 송신된 메시지 보다 중요한 것으로 생각될 수 있다. 다시 말해, 작은 인원의 사람에게 송신된 메시지는, 사용자가 숨은 참조(bcc'ed)되거나 참조(cc'ed)된 메시지보다 중요할 수 있다. 송신자에 대하여, 송신자의 명칭이 인식되는지 여부에 기초하여 임계성이 할당될 수 있다. 임계성은, 송신자가 사용자가 관련되는 조직의 내부에 있는지 또는 외부에 있는지 여부에 따라 할당될 수도 있다.
분류에서 고려될 수 있는 다른 구별은, 메시지의 길이, 질문이 검출될 수 있는지 여부, 및 사용자의 명칭이 메시지 내에 있는지 여부를 포함한다. 시간 임계성과 연관된 언어는 메시지의 중요성을 증가시킬 수 있다. 예를 들어, "곧 발생하는(happening soon)", "곧 바로(right away)', "가능한 빨리(as soon as possible)", "ASAP" 및 "마감일은(deadline is)"과 같은 구문들은 메시지를 보다 위급하게 만들 수 있다. 미래 시제와 비교되는 과거 시제, 뿐만 아니라 "합치다 (get together)", "만날 수 있을까(can we meet)" 등과 같은 구문들에 의해 특정된 협력적인 태스크들이 고려될 수 있다. 정크 메일의 징후는 메시지의 우선순위를 낮춘다. 조직도 내에서 사용자와 가까운 송신자로부터의 짧은 질문과 같이, 조합을 나타내는 술어들이 분류 프로세스에 고려될 수도 있다.
다음의 설명에서, 높은 우선순위 텍스트, 예를 들어 사용자 설정 임계치보다 크거나 또는 의사결정 이론적 추론에 의해 결정된 임계값보다 큰 높은 우선순위일 확률을 갖는 텍스트를 사용자에게 경보할 때를 결정하는 프로세스들이 설명된다. 즉, 시간 임계적 메시지에 관해 인지하는 것을 넘어서, 예를 들어 사용자가 인입하는 전자 메일을 직접 보지 못하면 시간 임계적 메시지들을 사용자에게 경보하는 때를 결정하는 것도 중요하다. 일반적으로, 시간 임계적인 메시지에 관해 학습하는데 착수하는 경우 현재 태스크로부터 사용자의 주의를 딴 데로 돌리는 비용이 결정된다.
대안적으로, 경보 및 통지에 대한 다양한 정책들이 사용될 수 있다. 이러한 정책들은, 아래에서 보다 상세하게 설명되는, 예를 들면 통지 플랫폼 아키텍쳐 내에서 구현될 수 있다. 이러한 정책들중 소정의 것은:
Figure 112005035121854-PCT00037
전체 손실에 대해 사용자 지정 상한 경계를 설정하자. 이러한 정책은, 메시지의 지연된 리뷰에 연관된 전체 손실이 소정의 미리 지정된 "허용가능한" 손실 "x"를 초과하는 경우 시스템이 경보를 생성해야 한다는 것을 지정한다.
Figure 112005035121854-PCT00038
다른 정책은, NEVA=EVTA-ECA-TC(여기서 NEVA는 경보의 순수 예상값이며, EVTA는 경보의 예상 값이고, ECA는 경보의 예상 비용이며, TC는 메시지 통신과 연 관된 전송 비용임)와 같은, 보다 완전한 의사결정 이론적 분석에 기초한 비용 편익 분석(cost benefit analysis)일 수 있다.
비용 편익 분석이, 시간 t에서 사용자가 메시지를 리뷰보지 않아서 유발되는 예상 손실은 사용자에게 경보하는 예상 비용보다 크다는 것을 제안하는 경우에 사용자에게 경보해야 한다. 즉, 다음과 같은 경우에 경보가 수행되어야 하며
EL - EC > 0
EL은 현재 시간 t에서 텍스트를 리뷰보지 않은 것에 대한 예상 손실이고 EC는 현재 시간 t에서 텍스트에 대해 사용자에게 경보하는 예상 비용이다. 예상 손실은 설명의 앞부분에 설명된다.
그러나, 상기 공식은 가장 정확하지 않을 수 있는데, 그 이유는 사용자가 종종 장래에 스스로 메시지를 리뷰할 것이기 때문이다. 따라서, 실제 사용자는, EVTA로 나타내는 경보의 예상 값이 포지티브인 경우 일반적으로 경보를 받아야 된다. 따라서, 경보의 예상 값은, 경보없이 사용자가 스스로 나중에 메시지를 리뷰하는 값 - 경보 비용과는 대조적으로, 지금 텍스트를 사용자에게 경보하는 값을 고려해야 한다. 이는
Figure 112005035121854-PCT00039
와 같이 나타낼 수 있으며, 경보없이 소정의 포인트에서 사용자가 스스로 메시지를 리뷰하는 것에 대한 예상 손실인 ELno-alert - EC(주의산만한 생각, 및 정보를 전송하는 직접적인 비용에 기초한 경보의 예상 비용)과는 대조적으로, ELalert는, 경보가 된 때, 사용자가 즉시 메시지를 리뷰하고자 하는 경우 사용자가 메시지를 리뷰하는 것에 대한 예상 손실이다.
또한, 몇몇 메시지로부터의 정보는 단일 복합 경보로 함께 그룹화될 수 있다. 경보상태의 다수의 메시지들에 대한 정보를 리뷰하는 것은, 단일 메시지에 대한 정보를 중계하는 경보보다 비용이 더 들 수 있다. 주의산만시 그러한 증가는, 경보의 비용을 그의 정보 복잡성의 함수로 만듬으로써 표현될 수 있다. 전자 메일 메시지의 EVA는 다른 전자 메일 메시지의 EVA에 무관하다고 가정될 수 있다. 예를 들어, EVA(Mi, t)는 시간 t에서 단일 메시지 Mi에 대해 사용자에게 경보하는 값을 나타내며, ECA(n)은 n개 메시지의 콘텐트를 중계하는 예상 비용을 나타낸다. 따라서, 다수의 메시지는 n개 메시지 세트에 대한 정보를 중계하는 예상 값을 함께 합산함으로써,
Figure 112005035121854-PCT00040
와 같이 고려될 수 있다.
주의할 점은, 경보의 예상 비용을 결정하기 위하여, 사용자가 자리에 있거나 없는지 여부에 대한 정보를 추론하거나 직접 액세스하는 것이 유용하다는 것이다. 적외선 센서 및 압력 센서들과 같은 센서들이 사용되어, 사용자가 사무실에 있는때 를 나타낸다. 그러나, 그러한 장치가 이용가능하지 않다면, 사용자가 사무실에 있을 확률이, 예를 들어 최종 관찰된 마우스 또는 키보드 활동 이후의 시간과 같이, 컴퓨터 상의 사용자 활동의 함수로서 할당될 수 있다. 또한, 달력에서 이용가능한 스케줄 정보가 사용되어 사용자의 거리 및 성향에 관해 추론하고, 서로 다른 프로세스들에 의해 사용자에게 메시지를 전달하는 비용을 고려할 수도 있다.
높은 시간 임계성을 갖는 메시지들에 대한 정보로 사용자를 인터럽트하는 것에 관해 결정을 할 경우 사용자가 얼마나 많이 바쁜지를 아는 것도 중요하다. 사용자가 컴퓨터 상에서 작업중인지 여부 및 그 속도, 또는 사용자가 전화중이거나, 누군가와 말하거나 또는 다른 위치에서의 회의중인지 여부에 대해 추론될 수 있다(예를 들어, 추론적 의사 결정). 도 14에 예시된 바와 같이, 사용자의 활동 또는 그들의 주의 집중을 평가하기 위해 증거(evidence)의 몇몇 클래스들이 사용될 수 있다. 그 후 베이지안 네트워크가 활용되어 사용자의 활동에 대한 추론을 수행한다. 그러한 네트워크의 일례는 도 15에 도시되어 있다.
일반적으로, 사용자에게 메시지에 대해 경보하고 예상 임계성과 사용자 활동의 추론에 기초하여 서비스를 제공하는 때와 방법에 대해 결정이 이루어져야 한다. 예를 들어, 의사결정 모델을 활용하여 의사결정이 수행될 수 있다. 도 16-18은 경보 결정을 하기 위해 그러한 의사결정 모델이 활용될 수 있는 방법을 예시하는 도면이다. 도 16은 사용자를 인터럽트하고, 현재 활동, 메시지의 예상 시간 임계성 및 통신 양식에 따른 경보 비용을 고려하는 것에 관한 결정을 위한 의사결정 모델을 표시한다. 도 17은, 대체 메시징 기술의 비용 및 활동에 대한 해당 변수의 영 향 및 현재 위치를 나타내는 변수들을 포함할 수도 있다. 또한 도 18은 상당한 그래픽 콘텐트를 갖는 메시지가 그래픽 콘텐트가 존재하지 않은 채로 사용자에게 전달되는 경우 충실도의 손실에 연관된 비용을 고려하기 위해 확장된다.
대안적으로, 사용자에게 경보하는 때 및 방법에 대한 의사결정은, 사용자 지정 임계치들 및 경보에 대한 정책들을 정의하는 파라미터들의 세트를 사용하여 이루어진다. 예를 들어, 마우스 또는 키보드 활동에 기초하여 사용자의 존재가 추론될 수 있다. 따라서, 사용자는, 예를 들어 활동 및 비활동의 추론된 상태들에 대해 경보의 임계치들을 입력할 수 있다. 사용자들은 경보가 보다 낮은 임계성들에서 발생할 활동에 후속하는 휴지 활동의 양을 입력할 수도 있다. 실질적으로 컴퓨터 활동이 검출되지 않는 시간에 기초하여 사용자가 이용가능하지 않다고 결정되면, 그 후 메시지는 저장되고 사용자가 돌아와서 컴퓨터와 상호작용하는 경우 임계성의 순서로 사용자에게 보고된다. 또한, 사용자들은 라우팅 및 페이징 옵션들을, 예상 임계성, 최대 예상 손실, 및 사용자 경보의 값을 포함하는 양들의 함수로 지정할 수 있다.
통지 및/또는 경보 시스템은, 사용자가 돌아오는 것이 예상되는 때를 추정하여, 사용자가 돌아올 것으로 예상되기 이전에 중요한 것으로 예상되는 우선순위들을 전송할 수 있다. 이것은, 시간에 따라 사용자 있음 및 사용자 없음을 학습함으로써 달성될 수 있다. 그 후, 사용자는, 사용자들에게 경보됨이 없이 우선순위들을 리뷰하기 위해 시스템으로 돌아올 것으로 예상되는 때의 측면에서 적절한 정책들을 설정할 수 있다. 시스템에 의한 복귀 결정에 대한 예상 시간이, 예를 들어 아주 급한 메시지들의 송신자에게 자동적으로 전송될 수 있다. 이러한 방식으로, 메시지 송신자들은, 사용자가 메시지에 대해 응답할 수 있도록 돌아올 것으로 예상되는 때에 대한 피드백을 수신한다. 송신자는, 자신의 메시지가 사용자의 이동 장치 등으로 전송되었다고 통지받을 수도 있다.
도 19는 본 발명에 따라 우선순위를 생성하고 그 우선순위에 기초하여 경보 결정을 수행하는 방법을 예시한다. 설명을 간단하게 하기 위해, 방법은 일련의 액트(act)들로 도시되고 기술되며, 본 발명에 따라 소정의 액트들이 다른 순서들 및/또는 본원에 도시되고 설명된 것과는 다른 액트들과 동시에 발생할 수 있기 때문에, 본 발명은 액트들의 순서에 의해 한정되지 않는다는 것을 인식하고 이해하여야 한다. 예를 들어, 본 기술분야의 당업자는, 방법이 대안적으로 상태도와 같은, 일련의 상호연관된 상태들 또는 이벤트들로 표현될 수 있다는 것을 인식하고 이해할 수 있을 것이다. 더욱이, 본 발명에 따라 방법을 구현하는데 예시된 모든 액트들이 필요하지는 않다.
도 19를 참조하면, 흐름도(1974)는, 본 발명에 따라 우선순위가 생성되고 활용되는 방법을 예시한다. 1980에서, 할당된 우선순위를 갖는 텍스트와 같은 데이터가 수신된다. 데이터는 전자 메일 메시지이거나 또는 실질적으로 임의의 다른 유형의 데이터 또는 텍스트일 수 있다. 1982에서, 데이터에 대한 우선순위가 설명된 바와 같이 분류자에 기초하여 생성된다. 또한, 1982는 설명된 바와 같이 분류자의 초기 및 후속 훈련을 포함할 수 있다.
그 후, 데이터의 우선순위는 1984에서 출력된다. 도 19에 도시된 바와 같 이, 이는 1986, 1988, 1990, 1992 및 1994에서의 프로세싱을 포함할 수 있다. 1986에서, 현재 시간 t에서 데이터를 리뷰하지 않은 것에 대한 예상 손실이 결정된다. 이러한 결정은, 설명된 바와 같이 사용자가 경보없이 스스로 텍스트를 리뷰할 것이라는 가정에 기초하여, 미래에 텍스트를 즉시 리뷰하는 것에 대한 예상 손실을 고려한다. 1988에서, 경보의 예상 비용이 설명된 바와 같이 결정된다. 손실이 1990에서의 비용보다 작으면, 시간 t에서 경보가 이루어지지 않고(1992) 새로운 현재 시간 t에서 프로세스는 1986으로 다시 진행한다. 시간이 진행됨에 따라 소정의 포인트에서의 예상 손실이 경보 비용을 능가할 수 있기 때문에, 1986으로 돌아간 프로세싱이 수행되어 1990에서의 계산이 바뀔 수 있다. 예상 손실이 경보 비용을 능가하는 경우, 사용자 또는 다른 시스템에 대한 경보는 1994에서 수행된다.
사용자 또는 다른 시스템에 대한 경보의 출력이 지금 설명된다. 사용자가 우선순위화된 텍스트를 경보받아야 하는 때를 나타내는 경보 기준들에 기초하여 사용자는 전자 장치 상에서 경보받을 수 있다. 사용자가 경보받는 전자 장치는 페이저, 셀룰러/디지털 이동 전화, 또는 아래에서 보다 상세하게 설명되는 다른 통신 형식일 수 있다. 페이저 또는 이동 전화와 같은, 전자 장치 상의 사용자에 대한 경보는, 예를 들어 위치, 추론된 태스크, 및/또는 사용자의 주의 집중에 대한 정보에 민감하도록 구성될 수 있는 경보 기준들에 기초할 수 있다. 그러한 정보는 불확실성 하에서 추론될 수 있거나 또는 온라인 정보 소스들로부터 액세스될 수 있다. 예를 들어, 온라인 달력으로부터의 정보는, 아래에서 보다 상세하게 설명되는 통지 싱크와 같은, 장치로 정보를 중계하는 것에 대한 의사결정을 하기 위해 사용 되는 기준들을 제어하도록 구성될 수 있다.
라우팅 기준들에 기초하여 우선순위화된 텍스트 또는 다른 데이터를 라우팅함으로써 경보가 수행될 수 있다. 텍스트의 라우팅은, 텍스트가 전자 메일인 경우, 텍스트를 전달하는 것 및/또는 텍스트의 송신자에게 응답하는 것을 포함할 수 있다. 예를 들어, 사용자에게 우선순위화된 문서를 경보하기 위해 음향이 재생될 수 있다. 대안적으로, 에이전트 또는 자동화된 보조장치(예를 들어 대화형 표시 마법사)가 열려질 수 있다. 즉, 에이전트가 표시 스크린 상에 나타나서 우선순위화된 문서를 사용자에게 통지할 수 있다. 또한, 스크린 상에 표시되는 것과 같이 우선순위화된 문서가 열려질 수 있다. 문서는 주목받을 수 있다. 이는, 그 우선순위에 기초하여 문서를 사이징(sizing)하는 것을 포함하여, 문서의 우선순위가 높을수록, 표시되는 윈도우가 더 커질 수 있거나 및/또는 그의 우선순위에 기초하여 디스플레이 상의 중심에 문서를 위치시킬 수 있다.
이제 도 20을 참조하면, 본 발명의 일 양상에 따른 텍스트 생성 및 우선순위 시스템(2000)의 도면이 도시되어 있다. 시스템(2000)은 프로그램(2002) 및 분류자(2004)를 포함한다. 주의할 점은, 프로그램(2000) 및 분류자(2002)는 컴퓨터 판독가능 매체로부터의, 컴퓨터의 프로세서에 의해 실행되는 컴퓨터 프로그램을 포함할 수 있다.
프로그램(2002)은 분류자(2004)로의 입력을 위한 텍스트를 생성한다. 프로그램은, 나중에 텍스트의 역할을 하는 전자 메일을 수신하는 전자 메일 프로그램을 포함한다. 분류자(2004)는 연관된 메시지에 대한 우선순위를 생성한다. 상술한 바와 같이, 분류자(2004)는 베이지안 분류자, 서포트 벡터 머신(Support Vector Machine) 분류자 또는 다른 유형의 분류자일 수 있다. 그 후, 분류자(2004)에 의해 출력된 텍스트의 우선순위는 비용 편익 분석과 함께 사용되어, 설명한 바와 같이 추가 출력 및/또는 그에 기초한 경보를 실시할 수 있다.
도 21로 가면, 시스템(2100)이 환경설정 실행 엔진 및 컨텍스트 분석기가 본 발명의 일 양상에 따라 함께 기능하는 방법을 예시한다. 시스템(3100)은 컨텍스트 분석기(3122), 환경설정 실행 엔진(2124), 하나 이상의 이벤트 또는 통지 소스 1 내지 N(2126, 2127, 2128), 통지 소스로서 동작할 수 있는 우선순위 시스템(2130), 및 하나 이상의 액션 또는 통지 싱크 1 내지 M(2136, 2137, 2138)(N 및 M은 정수)을 각각 포함한다. 또한, 본 발명의 일 양상에 따라, 소스들은 이벤트 발행자로 지칭될 수도 있으며, 싱크들은 이벤트 가입자로 지칭될 수 있다. 임의의 개수의 싱크 및 소스들이 존재할 수 있다. 일반적으로, 실행 엔진(2124)은, 컨텍스트 분석기(2122)에 저장되거나 및/또는 액세스될 수 있는 파라미터 정보에 부분적으로 기초하여, 소스(2126-2128)로부터 싱크(2136-2138)로, 이벤트 또는 경보로도 불릴 수 있는, 통지들을 전달한다.
컨텍스트 분석기(2122)는 통지 의사결정에 영향을 주는 사용자의 변수 및 파라미터에 대한 정보를 저장/분석한다. 예를 들어, 파라미터는, 사용자의 통상적인 위치 및 주의 집중, 또는 하루의 시간 및 주일의 날짜당 활동과 같은 컨텍스트 정보, 및 사용자가 서로 다른 위치들에서 액세스하는 경향이 있는 장치들과 같이, 그러한 파라미터에 대해 필요조건이 되는 추가 파라미터를 포함할 수 있다. 그러한 파라미터들은 하나 이상의 센서들을 통해 자동적으로 이루어지는 관찰의 함수일 수도 있다. 예를 들어, 하나 이상의 프로파일(도시 안됨)이, GPS 서브 시스템에 의해 제공될 수 있는 사용자의 위치에 대한 정보, 또는 사용되고 있는 장치의 유형 및/또는 장치의 사용 패턴, 및 사용자에 의해 특정 유형의 장치가 액세스된 최종 시간에 대한 정보에 기초하여 선택되거나 또는 수정될 수 있다. 또한, 아래에서 보다 상세하게 설명되는 바와 같이, 자동화된 추론이 사용되어, 파라미터, 또는 위치 및 주의와 같은 상태들을 동적으로 추론할 수도 있다. 프로파일 파라미터들은 사용자에 의해 편집될 수 있는 사용자 프로파일로 저장될 수 있다. 미리 정의된 프로파일 세트 또는 동적 추론에 의존하는 것을 넘어, 통지 아키텍쳐는, 예를 들어 다음 "x" 시간 동안 또는 소정의 시간까지 중요한 통지를 제외하고는 사용자가 이용가능하지 않다는 것과 같이, 사용자가 사용자의 상태를 실시간으로 지정할 수 있게 한다.
파라미터들은, 서로 다른 설정의 서로 다른 유형들의 통지들에 의해 방해되는 것에 대한 사용자의 환경설정에 관한 디폴트 통지 환경설정 파라미터들을 포함할 수도 있으며, 이러한 것은 실행 엔진(2124)에 의한 통지를 결정하고 사용자가 변화를 개시할 수 있는 베이스로 사용될 수 있다. 파라미터들은, 사용자가 서로 다른 상황에서 통지되기를 원하는 방법(예를 들어 휴대 전화, 페이저에 의한 것과 같이)에 대한 디폴트 파라미터들 포함할 수 있다. 파라미터들은 서로 다른 설정의 서로 다른 모드들에 의해 통지되는 것과 연관된 단절의 비용과 같은 평가를 포함할 수 있다. 이는, 사용자들이 서로 다른 위치에 있는 가능성, 서로 다른 장치들이 이용가능하게 될 가능성, 및 소정의 시간에 사용자의 주의 상태의 가능성을 나타내는 컨텍스트 파라미터뿐만 아니라 사용자가 소정의 시간에 통지받기를 원하는 방법을 나타내는 통지 파라미터를 포함할 수 있다.
본 발명의 일 양상에 따라, 컨텍스트 분석기(2122)에 의해 저장된 정보는 분석기에 의해 결정된 컨텍스트 정보를 포함한다. 본 명세서의 나중 부분에서 보다 상세하게 설명되는 바와 같이, 하나 이상의 컨텍스트 정보 소스(도시 안됨)에 기초하여 사용자의 위치 및 주의 상태를 식별함으로써 분석기(2122)에 의해 컨텍스트 정보가 결정된다. 예를 들어, 컨텍스트 분석기(2122)는, 사용자의 자동차 또는 휴대폰의 일부인 GPS을 통해 사용자의 실제 위치를 정확하게 결정할 수 있다. 분석기는, 통계 모델을 사용하여, 날짜의 유형, 하루의 시간, 사용자 달력의 데이터 및 사용자의 활동에 대한 관찰과 같은 정보를 고려하여 수집된 관찰 및/또는 백그라운드 평가를 고려함으로써 사용자가 소정의 주의 상태에 있을 확률을 결정할 수도 있다. 소정의 주의 상태는, 사용자가 수신한 통지를 오픈할 것인지, 바빠서 수신한 통지를 오픈하지 않을 것인지 여부를 포함할 수 있고, 주일, 주말, 휴일 및/또는 다른 경우/주기와 같은 다른 고려사항을 포함할 수 있다.
소스(2126-2128, 2130)는 사용자 및/또는 다른 실체에 대해 의도된 통지들을 생성한다. 예를 들어, 소스(2126-2128)는, 인터넷 및 네트워크 기반 통신, 및 전화 통신과 같은 통신뿐만 아니라 소프트웨어 서비스를 포함할 수 있다. 통지 소스들은 본원에서, 사용자 또는 사용자에 대한 프록시, 정보, 서비스 및/또는 시스템 또는 세계 이벤트를 경보하도록 의도된, 통지 및 경보들로 지칭될 수도 있는 이벤 트들을 발생시키는 것으로 일반적으로 정의된다.
예를 들어, 전자 메일은, 우선순위화되도록 우선순위 시스템(2130)에 의해 통지들로서 생성될 수 있으며, 통지를 생성하는 애플리케이션 프로그램 또는 시스템은, 사용자에 대한 전자 메일의 긴급성 또는 가능성있는 중요성에 대응하는 상대적인 우선순위를 전자 메일에 할당한다. 전자 메일은 사용자에 대한 상대적 중요도에 관한 고려없이 송신될 수도 있다. 인터넷 관련 서비스는 예를 들어, 때때로 현재 뉴스의 헤드라인, 주식 가격과 같이, 사용자가 구독하는 정보를 포함하는 통지들을 포함할 수 있다.
통지 또는 이벤트 소스(2126-2128) 자체는 푸시형(push-type) 또는 풀형(pull-type) 소스일 수 있다. 푸시형 소스는, 헤드라인 뉴스와 같은 대응하는 요청, 및 가입된 후 정보를 자동적으로 송신하는 다른 인터넷 관련 서비스없이 정보를 자동적으로 생성 및 송신하는 소스들이다. 풀형 소스는, 메일 서버가 폴링된 후 수신되는 전자 메일과 같이, 요청에 응답하여 정보를 송신하는 소스들이다. 또 다른 통지 소스들은:
Figure 112005035121854-PCT00041
달력 시스템과 같은 전자 메일 데스크톱 애플리케이션들;
Figure 112005035121854-PCT00042
(시스템 활동에 대한 경보 또는 문제들에 대한 해당 정보를 갖는 메시지를 사용자에게 경보할 수 있는 것과 같은) 컴퓨터 시스템들
Figure 112005035121854-PCT00043
인터넷 관련 서비스, 약속 정보, 스케줄 질의;
Figure 112005035121854-PCT00044
하나 이상의 공유 폴더들의 소정 유형의 문서의 수 또는 문서에서의 변화;
Figure 112005035121854-PCT00045
정보에 대한 고정형 또는 지속형 질의들에 응답하는 새로운 문서의 이용가 능성; 및/또는
Figure 112005035121854-PCT00046
사람 및 그들의 존재, 그들의 위치 변화, 그들의 근접에 대한 정보를 위한 정보 소스들(예를 들어, 내가 여행중일 때 다른 동업자 또는 친구가 나로부터 10마일 이내인 경우를 알려 달라) 또는 그들의 이용가능성(예를 들어, 스티브가 대화에 참여할 수 있고 완전한 비디오 전화컨퍼런스를 지원할 수 있는 고속 링크의 근처에 있을 때를 알려 달라)에 대한 정보에 대한 정보 소스들
을 포함한다.
통지 액션 싱크(2136-2138)는 사용자에게 통지를 제공할 수 있다. 예를 들어, 그러한 통지 액션 싱크(2136-2138)는, 데스크톱 및/또는 랩톱 컴퓨터들과 같은 컴퓨터들, 핸드헬드 컴퓨터, 휴대폰, 전화, 페이저, 자동차 기반 컴퓨터뿐만 아니라 이해될 수 있는 다른 시스템/애플리케이션들을 포함할 수 있다. 주의할 점은, 싱크(2136-2138)중 일부는 다른 싱크들보다 더 풍부하게 통지를 전달할 수 있다는 것이다. 예를 들어, 데스크톱 컴퓨터는 통상적으로 스피커 및 그에 연결된 비교적 큰 컬러 디스플레이를 가질뿐만 아니라, 로컬 네트워크 또는 인터넷에 연결될 때 정보를 수신하기 위한 보다 높은 대역폭을 가질 수 있다. 따라서, 통지는 데스크톱 컴퓨터를 이용하여 비교적 풍부한 방식으로 사용자에게 전달될 수 있다. 반대로, 많은 휴대폰은 예를 들어 흑백의 보다 작은 디스플레이를 가지고 있고 비교적 낮은 대역폭에서 정보를 수신한다. 따라서, 휴대폰에 의해 전달되는 통지와 연관된 정보는 일반적으로 보다 짧고 예를 들어 전화의 인터페이스 성능에 맞춰져 있다. 따라서, 통지의 콘텐트는, 휴대폰으로 송신될 것이지 또는 데스크톱 컴퓨터로 송신될 것인지 여부에 따라 상이하다. 본 발명의 일 양상에 따르면, 통지 싱크는, 예를 들어 이벤트 구독 서비스를 통해 이벤트들 또는 통지들을 받아보는 것을 나타낼 수 있다.
실행 엔진(2124)은 컨텍스트 분석기에 의해 저장되거나 및/또는 결정된 정보를 액세스하며, 소스(2126-2128)로부터 수신된 통지들중 어느 것이 싱크(2136-2138)중 어느 것으로 전달될 것인지를 결정한다. 또한, 엔진(2124)은, 싱크(2136-2138)들중 어느 것이 정보를 송신하기 위해 선택되었는지에 따라 통지가 전송되는 방법을 결정할 수 있다. 예를 들어, 선택된 싱크(2136-2138)에 제공되기 전에 통지가 요약되어야 한다는 것이 결정될 수 있다.
본 발명은, 통지들중 어느 것이 통지 싱크들중 어느 것으로 전달되는지 및 어떤 방식으로 통지가 전달되는지에 대해 엔진(2124)이 결정하는 방법으로 한정되지 않는다. 일 양상에 따르면, 의사결정 이론적 분석이 사용될 수 있다. 예를 들어, 실행 엔진(2124)은 사용자의 위치, 주의, 장치의 이용가능성 및 경보가 없는 경우 사용자가 정보를 액세스할 때까지의 시간량을 포함하는 변수들에 대한 중요한 불확실성을 추론하도록 구성될 수 있다. 그 후, 통지 엔진(2124)은 통지를 사용자에게 경보할지 여부에 대해 통지 결정을 하고, 그렇다면, 요약의 성질 및 적절한 장치 또는 장치들을 사용하여 통지를 중계한다. 일반적으로, 실행 엔진(2124)은, 통지의 순수 예상 값을 결정한다. 그렇게 하면,
Figure 112005035121854-PCT00047
이용가능한 통지 싱크 각각의 충실도 및 전송 신뢰도;
Figure 112005035121854-PCT00048
사용자를 혼란스럽게 하는 주의 비용;
Figure 112005035121854-PCT00049
사용자에 대한 정보의 신규성;
Figure 112005035121854-PCT00050
사용자가 스스로 정보를 리뷰할 때까지의 시간;
Figure 112005035121854-PCT00051
정보에 대해 잠재적으로 민감한 컨텍스트 값; 및/또는
Figure 112005035121854-PCT00052
통지 내에 포함된 정보의, 시간에 대해 증가하거나 및/또는 감소하는 값
을 고려할 수 있다.
따라서, 불확실성에 대해 이루어진 추론은, 예를 들어 사용자의 소정의 주의 상태가 제공되면 특정 장치의 특정 모드를 사용하여 사용자를 혼란스럽게 하는 비용과 같은 값들의 예상 가능성으로 생성될 수 있다. 실행 엔진(2124)은 다음들중 하나 이상에 대해 결정할 수 있다.
Figure 112005035121854-PCT00053
(예를 들어, 컨텍스트 정보에 기초하여) 사용자가 현재 주의하고 실행하고 있는 것;
Figure 112005035121854-PCT00054
사용자가 현재 있는 위치;
Figure 112005035121854-PCT00055
정보가 얼마나 중요한가;
Figure 112005035121854-PCT00056
통지를 지연하는 비용;
Figure 112005035121854-PCT00057
통지가 얼마나 주의를 산만하게 하는가;
Figure 112005035121854-PCT00058
사용자에게 도달할 가능성; 및
Figure 112005035121854-PCT00059
소정의 통지 싱크의 특정 모드의 사용과 연관된 충실도 손실.
따라서, 실행 엔진(2124)은 계류중이고 능동적 통지에 대해, 의사결정이론적 분석과 같은 분석을 수행하고, 정보 싱크 및 소스에 의해 제공되는 컨텍스트 의존형 변수를 평가하고, 사용자가 정보를 리뷰할 가능성이 있을 때까지의 시간, 사용 자의 위치 및 현재 주의 상태와 같은 선택된 불확실성을 추론할 수 있다.
또한, 실행 엔진(2124)은 개인화된 의사결정이론적 분석을 지원하거나 또는 그 측면에서 컨텍스트 분석기(2122)에 의해 사용자 프로파일 내에 저장된 정보를 액세스한다. 예를 들어, 사용자 프로파일은, 사용자가 소정의 시간에 페이저를 통해서 통지가 미리 결정된 중요성 레벨을 가지는 경우에만 통지받기를 선호한다는 것을 나타낼 수 있다. 그러한 정보는 의사결정이론적 분석이 시작하는 기준선으로 활용될 수 있거나 또는 사용자에게 통지하는 방법 및 그 여부를 실행 엔진(2124)이 결정하는 방식일 수 있다.
본 발명의 일 양상에 따르면, 통지 플랫폼 아키텍쳐(2100)는, 이벤팅 또는 메시징 인프라구조 상에 상주하는 계층으로 구성될 수 있다. 그러나, 본 발명은 임의의 특정 이벤팅 인프라구조에 한정되지 않는다. 그러한 이벤팅 및 메시징 시스템 및 프로토콜은;
Figure 112005035121854-PCT00060
본 기술분야에 알려진, HTTP(HyperText Transport Protocol), 또는 HTTP 확장;
Figure 112005035121854-PCT00061
본 기술분야에 알려진 SOAP(Simple Object Access Protocol);
Figure 112005035121854-PCT00062
본 기술분야에 알려진 WMI(Windows Management Instrumentation);
Figure 112005035121854-PCT00063
본 기술분야에 알려진 지니(Jini); 및
Figure 112005035121854-PCT00064
예를 들어, 패킷 스위칭 프로토콜에 기초하는 것과 같이, 실질적으로 임의의 유형의 통신 프로토콜.
또한, 아키텍쳐는, 본 기술분야의 당업자가 이해할 수 있는 바와 같이, 유연 한 분산 연산 인프라구조 상에 상주하는 계층으로 구성될 수 있다. 따라서, 통지 플랫폼 아키텍쳐(2100)는, 예를 들어, 소스가 통지, 경보 및 이벤트들을 송신하는 방식 및 싱크가 통지, 경보 및 이벤트들을 수신하는 방식으로 하부 인프라구조를 활용할 수 있다. 그러나, 본 발명은 그렇게 한정되지 않는다.
도 22를 참조하면, 본 명세서의 이전 부분에서 설명된 정보 에이전트 시스템 아키텍쳐의 컨텍스트 분석기(2222)가 시스템(2200) 내에 보다 상세하게 도시된다. 도 22에 도시된 컨텍스트 분석기(2222)는 사용자 통지 환경설정 저장소(2240), 사용자 컨텍스트 프로파일 저장소(2262)를 포함하는 사용자 컨텍스트 모듈(2260), 및 화이트보드(2264)를 포함한다. 본 발명의 일 양상에 따른 컨텍스트 분석기(2222)는, 메모리를 포함하나 이에 한정되지 않는, 기계 판독가능한 매체로부터의, 컴퓨터의 프로세서에 의해 실행가능한 하나 이상의 컴퓨터 프로그램들로 구현될 수 있다.
환경설정 저장소(2262)는, 사용자에 대한 디폴트 통지 환경설정과 같은 사용자에 대한 통지 파라미터들, 예를 들면 사용자에 의해 편집되고 수정될 수 있는 사용자 프로파일을 저장한다. 환경설정 저장소(2262)는, 사용자가 통지될 방법에 영향을 주는 파라미터들에 대한 정보를 저장하는 저장소로 생각될 수 있다. 본원에 설명된 바와 같이, 예를 들어, IF-THEN 포맷의 스키마화된 논리를 활용하여 사용자들에 의해 환경설정이 지정될 수 있다. 사용자 컨텍스트 모듈(2260)은, 예를 들어 화이트보드(2264)에 게시된, 하나 이상의 컨텍스트 정보 소스(2280)에 기초하여, 사용자의 현재 컨텍스트를 결정한다. 사용자 컨텍스트 프로파일 저장소(2262)는, 사용자에 의해 편집되고 수정될 수 있는, 사용자에 대한 디폴트 컨텍스트 설정들과 같은, 사용자에 대한 컨텍스트 파라미터들을 저장한다. 즉, 사용자 컨텍스트 모듈(2260)은, 프로파일 저장소(3262)로부터 정보를 액세스하거나 및/또는 하나 이상의 컨텍스트 소스(2280)들을 통해, 라이브 센싱으로 저장소(2262) 내의 확신하는 이전 세트를 갱신함으로써 사용자의 현재 컨텍스트 정보에 대한 최상의 추측 또는 예측을 제공한다. 프로파일 저장소(2262)는, 예를 들어 사용자가 하고 있는 것, 사용자가 있는 장소를 선험적으로 저장하는 저장소로 생각될 수 있다.
사용자 컨텍스트 프로파일 저장소(2262)는 결정론적 또는 확률론적 프로파일과 같은 정보를 포획하는 미리 평가되거나 및/또는 미리 정의된 사용자 프로파일일 수 있다. 프로파일은 통상적인 위치, 활동, 장치 이용가능성, 및 하루의 시간, 날짜의 유형 및 하나 이상의 장치들과의 사용자 상호작용과 같은 관찰의 함수로서의, 통지의 서로 다른 클래스들의 비용 및 값일 수 있다. 날짜의 유형은, 예를 들어 주중, 주말 및 휴일을 포함할 수 있다. 그 후, 사용자 컨텍스트 모듈(2260)은, 사용자의 현재 또는 미래 위치 및 주의 상태와 같은 사용자의 컨텍스트 또는 상태의 양상들을 능동적으로 결정하거나 또는 추론할 수 있다. 또한, 컨텍스트의 실제 상태들은 화이트보드(2264)를 통해 컨텍스트 정보 소스(2280)들로부터 직접 액세스될 수 있거나, 및/또는 아래에서 상세하게 설명되는 바와 같이 베이지안 추론과 같은 추론적 방법들을 통해 그러한 다양한 관찰로부터 추론될 수 있다.
컨텍스트 정보 소스(2280)는, 사용자의 주의 상태 및 위치에 대해 화이트보드(2264)를 통해 컨텍스트 모듈(2260)에 정보를 제공할 수 있으며, 그로부터 모듈 이, 사용자의 현재 컨텍스트(예를 들어, 사용자의 현재 주의 상태 및 위치)에 대해 결정할 수 있다. 또한, 본 발명은 특정 개수 또는 유형의 컨텍스트 소스(2280)에 한정되지 않고, 사용자 컨텍스트 모듈(2260)에 의해 추론되거나 액세스되는 정보의 유형에도 한정되지 않는다. 그러나, 컨텍스트 소스(2280)는, 예를 들어 마우스 정보, 키보드 정보, (예를 들어, 애플리케이션이 현재 사용자의 집중을 받고 있는) 애플리케이션 정보, 주위 소리 및 발음 정보, 데스크톱 상의 윈도우 내의 텍스트 정보와 같은, 다수의 데스크톱 정보 및 이벤트들을 포함할 수 있다. 화이트보드(2264)는, 컨텍스트 정보 소스(2280)가 정보를 게시할 수 있고, 소스 및 컨텍스트 모듈(2260)을 포함하는 다수의 컴포넌트가 이러한 정보를 액세스할 수 있는 공통 저장 영역을 포함할 수 있다. 통지 또는 경보로도 불리우는, 이벤트 또는 액션은 일반적으로 세상의 하나 이상의 상태에 대한 관찰에 대한 정보를 포함할 수 있다. 그러한 상태들은 시스템 컴포넌트들의 상태, 사용자의 활동, 및/또는 환경에 대한 측정을 포함할 수 있다. 또한, 이벤트들은 측정 장치 및/또는 이벤트의 소스의 능동형 폴링에 의해, 변경, 및/또는 상수 또는 변화하는 이벤트 박동에 의해 송신되는 정보의 수신에 의해 생성될 수 있다.
컨텍스트 소스(2280)의 다른 유형들은, 예를 들어 사용자의 스케줄에 관한 스케줄링 정보를 일반적으로 제공할 수 있는 사용자의 PIM(personal-information manager) 정보를 포함한다. 하루의 현재 시간뿐만 아니라 예를 들어 GPS에 의해 결정되는 사용자의 위치 및/또는 휴대폰, PDA, 또는 국지적으로 결정될 수 있는 랩탑의 사용자 액세스도 컨텍스트 소스(2280)의 유형들일 수 있다. 또한, 실시간 이 동 장치 사용은 컨텍스트 소스(2280)의 한 유형이다. 예를 들어, 휴대폰과 같은 이동 장치는, 사용자에 의해 현재 액세스되고 있는지 여부뿐만 아니라, (예를 들어, 장치 사용법에 관한 정보도 나타내는) 장치의 방위 및 틸트, 및 (예를 들어, 사용자가 이동중인지 아닌지 여부에 대한 정보를 나타내는) 가속 및 속도를 결정할 수 있다.
도 23을 참조하면, 상술한 통지 소스가 보다 상세하게 설명된다. 통지 소스(2326-2328)는 일반적으로, 통지가 발생해야 하는 때, 및 그러할 경우, 통지들중 어느 것이 통지 싱크(2336-2338)들중 어느 것으로 어떤 순서로 전송되어야 하는지를 결정하는, 통지 실행 엔진(2324)으로 전송되는 통지들을 발생한다.
본 발명의 일 양상에 따르면, 통지 소스(2326-2328)는, 본원에서 통지 소스 스키마 또는 소스 스키마로 지칭되는, 속성 및 관계의 표준 기술 내의 다음의 파라미터들중 하나 이상을 가질 수 있다. 주의할 점은, 스키마는 상술한 바와 같이 소스, 싱크 및 컨텍스트 정보 소스들에 대해 제공될 수 있다는 것이다. 그러한 스키마는 서로 다른 컴포넌트들에 대해 선언적 정보를 제공하고 소스(2326-2328), 통지 엔진(2324), 싱크(2336-2338) 및 컨텍스트 분석기(2322)가 서로 의미론적 정보를 공유할 수 있게 한다. 따라서, 서로 다른 스키마는 성질, 긴급성 및 통지와 연관된 장치 신호 방식(device signaling modalities)에 대한 정보를 제공한다. 즉, 스키마는, 예를 들어 이벤트 또는 통지 클래스, 소스, 타겟, 이벤트 또는 통지 시멘틱, 존재론적(ontological) 콘텐트 정보, 관찰에 입각한 신뢰성 및 실질적으로 임의의 서비스 품질 속성을 포함하는 정보는 포함하는, 통지 및 이벤트들의 구조를 정의하는 클래스들의 컬렉션 및 클래스들 간의 관계로서 일반적으로 정의된다.
통지 소스 스키마에 대한 파라미터들(도시 안됨)은 메시지 클래스; 관련성; 중요성; 시간 임계성; 신규성; 콘텐트 속성들; 신뢰도 트레이드오프; 및/또는 소스 정보 요약 정보들중 하나 이상을 포함할 수 있다. 통지 소스에 의해 생성되는 통지에 대한 메시지 클래스는, 예를 들어 전자 메일, 인스턴트 메시지, 수치적 재정적 갱신, 및 데스크 톱 서비스와 같은 통지의 통신 유형을 나타낸다. 통지 소스에 의해 생성된 통지에 대한 연관성은, 하나 이상의 지정된 컨텍스트에 대해, 통지 내에 포함된 정보가 연관되는 가능성을 나타낸다. 예를 들어, 연관성은, 소스가 소정의 컨텍스트와 관련있는지 여부를 나타내는, 논리 플래그에 의해 제공될 수 있다. 통지의 신규성은, 사용자가 통지 내에 포함된 정보를 이미 알고 있을 가능성을 나타낸다. 즉, 신규성은 시간에 따라 정보가 사용자에게 새로운 것인지 여부이다.(사용자가 지금 정보는 알고 있는지를 나타내고, 설사 그렇더라도 사용자가 경보를 받지 않고 미래에 정보를 학습할 때를 나타냄).
통지와 연관된 충실도 트레이드오프는, 예를 들어 특정 허가된 절단 및/또는 요약의 서로 다른 형태에서 기인할 수 있는 통지 내의 정보 값의 손실을 나타낸다. 그러한 절단 및/또는 요약은, 대역폭, 및/또는 본래 발생된 완전한 통지를 싱크가 수신하지 못하게 하는 다른 제한을 가질 수 있는 소정 유형의 통지 싱크(2336-2338)로 전달되는 통지에 대해 요구될 수 있다. 일반적으로 충실도는 통지와 연관된 본래 콘텐트의 성질 및/또는 완전성의 정도와 관련있다. 예를 들어, 긴 전자 메일 메시지가 절단되거나 또는 다른 경우 휴대폰이 허용하는 최대 100개 문자들로 요약되면, 충실도의 손실이 발생한다. 유사하게, 텍스트 및 그래픽 콘텐트를 포함하는 본래 메시지는, 텍스트 성능만을 가지는 장치를 통해 전송될 때 충실도의 손실을 겪는다. 또한, 장치는 소스로부터 이용가능한 전체 해상도의 일부만을 도시할 수 있다. 충실도 트레이드오프는 순서화(예를 들어, 그래픽을 먼저, 음향을 나중의 순서로 중요성을 부과하는 것), 및/또는 통지의 콘텐트의 전체 값이 충실도가 변화함에 따라 어떻게 감소하는지를 나타내는 비용 함수중 어느 하나에 의해 서술된 소스의 충실도 환경설정 세트와 관련있다. 예를 들어, 충실도 트레이드오프는, 완전한 전자 메일 메시지의 전송과 연관된 완전한 값이 절단하는 양이 점차 증가함에 따라 어떻게 변화하는지를 기술할 수 있다. 예를 들어, 콘텐트 속성들은, 텍스트, 그래픽 및 오디오 성분을 코어 메시지가 포함하는지와 같은 정보를 표현하는, 콘텐트 성질의 요약을 포함할 수 있다. 콘텐트 그 자체는 통지의 메시지 콘텐트를 구성하는 실제 그래픽, 텍스트 및/또는 오디오이다.
정보가 현재 컨텍스트와 관련있다고 가정하면, 통지의 중요성은 사용자에 대한 통지에 포함되는 정보의 값과 관련있다. 예를 들어, 중요성은 사용자에 대한 정보 가치의 달러값으로 표현될 수 있다. 시간 임계성은, 통지 내에 포함된 정보의 값의 시간 의존적인 변화 - 즉 정보 값이 시간에 따라 어떻게 변화하는지를 나타낸다. 모든 경우는 아니지만 대부분의 경우, 통지의 정보 값은 시간에 따라 퇴화한다. 이는 도 24의 도면에 예시되어 있다. 그래프(2400)는 시간에 따라 매핑된 통지의 활용을 예시한다. 초기 시간을 나타내는 그래프 내의 점 2402에서, 통지의 중요성이 표시되며, 곡선 2404는 시간에 따른 활용의 쇠퇴를 나타낸다.
도 23을 다시 참조하면, 서로 다른 통지 소스들 또는 소스 유형에 대한 스키마 템플릿 및 디폴트 속성은, 도 22의 저장소(2240)와 같은 사용자 통지 환경설정 저장소에 저장된 통지 소스 프로파일 내에 이용가능하게 될 수 있다. 그러한 디폴트 템플릿은, 통지 소스에 의해 제공된 값들을 무시하거나 또는 소스들에 의해 제공된 스키마에서 빠진 경우 속성들을 제공하도록 지시될 수 있다. 소스 요약 통지는, 소스가 소스로부터 이용가능한 잠재적인 통지 및 정보의 상태의 일반 요약들을 우송하게 할 수 있다. 예를 들어, 메시징 소스로부터의 소스 요약 정보는, 적어도 소정의 우선순위인 읽혀지지 않은 메시지의 전체 개수, 사람들에 의한 사용자와의 통신 시도 상태에 대한 정보 및/또는 다른 요약 정보를 포함할 수 있다.
통지 싱크(2336-2338)는 실질적으로 임의의 장치 또는 애플리케이션일 수 있고, 그에 의해 사용자 또는 다른 실체는 통지 내에 포함된 정보를 통지받을 수 있다. 특정 통지를 전달하기 위해 사용되는 싱크 또는 싱크들에 대한 선택은 통지 엔진(2324)에 의해 결정된다.
통지 싱크(2336-2338)는 스키마 내에 제공된 다음의 파라미터들중 하나 이상을 가질 수 있다. 이러한 파라미터들은, 예를 들어 장치 클래스; 신호방식 모드(경보); 및 연관된 모드에 대한 충실도/렌더링 성능, 전송 신뢰도, 통신의 실제 비용 및/또는 주의 산란 비용을 포함할 수 있다. 경보 속성들의 파라미터화된 제어를 위해 구성된 장치에 있어서, 장치에 대한 스키마는 경보 속성들 및 속성들을 제어하기 위한 파라미터의 기술, 및 다른 속성(예를 들어, 전송 신뢰도, 분산 비용)이 경보 속성의 서로 다른 설정에 따라 변화하는 함수들을 추가적으로 포함할 수 있다. 통지 싱크에 대한 스키마는, 통지 장치들이 통지 실행 엔진(2324) 및/또는 시스템의 다른 컴포넌트들을 이용하여 자신의 성질 및 능력에 대한 의미론적 정보를 전달하는 방식을 제공한다. 서로 다른 장치 유형들에 대한 디폴트 속성 및 스키마 템플릿은, 앞선 부분에서 설명된 바와 같이 도 22의 저장소(2240)와 같은 사용자 통지 환경설정 저장소에 저장된 장치 프로파일에서 이용가능하게 될 수 있다. 그러한 디폴트 템플릿은, 장치에 의해 제공된 값들을 무시하거나 또는 그러한 장치들에 의해 제공된 스키마로부터 빠진 경우 속성들을 제공하도록 지시될 수 있다.
스키마 파라미터 각각이 설명된다. 장치의 클래스는, 예를 들어, 휴대폰, 데스크톱 컴퓨터, 및 랩톱 컴퓨터와 같은 장치의 유형과 관련있다. 또한 클래스는 이동 또는 고정형 장치와 같이 보다 일반적일 수 있다. 신호방식 모드는, 소정의 장치가 통지에 대해 사용자에게 경보할 수 있는 방식을 나타낸다. 장치들은 하나 이상의 통지 모드를 가질 수 있다. 예를 들어, 휴대폰은 진동만 할 수 있거나, 소정의 볼륨으로 울릴 수만 있거나 및/또는 진동 및 울림 모두를 가능케 할 수 있다. 또한, 경보 시스템을 위한 데스크톱 디스플레이는 몇 개의 개별적인 모드(예를 들어, 디스플레이의 우측 상부의 작은 통지 창 대 스크린 상부의 작은 섬네일 음향 전조가 있는 경우 또는 없는 경우)로 분해될 수 있다. 미리 정의된 거동 세트로 한정되는 것을 넘어, 장치는 장치 정의의 일부로서 파라미터들의 함수들인 경보 속성을 갖는 모드들을 인에이블시킬 수 있다. 모드에 대한 그러한 연속적인 경보 파라미터들은, 예를 들어 경보가 데스크톱에서 재생되고, 휴대폰이 울리는 볼륨 및 경보창의 크기와 같은 제어를 표현한다.
통지 싱크(2336-2338)의 모드에 대한 전송 신뢰성은, 사용자가 통지에 대해 통신된 경보를 수신할 가능성을 나타내며, 이는 해당 모드를 갖는 싱크를 통해 사용자에게 전달되다. 전송 신뢰성은 장치 이용가능성 및 사용자의 컨텍스트에 의존적일 수 있기 때문에, 장치의 서로 다른 모드들의 전송 신뢰성은 사용자의 위치 및 주의와 같은 컨텍스적인 속성을 조건으로 할 수 있다. 고유 위치 및 고유 주의 상태와 같은 속성들의 벡터곱에 의해 정의되고, 그러한 속성의 추상화로서 생성되는 논리합들로 정의되는(예를 들어, 집에서 떨어진 임의의 위치 및 오전 8시 이후 자정 전의 임의의 시간 기간) 하나 이상의 고유한 컨텍스트 상태들에 대한 전송 신뢰성도 지정될 수 있다, 예를 들어, 현재 사용자가 있는 장소에 따라, 휴대폰으로 전송된 정보는, 항상 사용자에게 도달되지 않을 수 있으며, 특히 사용자가 간헐적인 커버리지를 갖는 영역에 있거나, 또는 사용자가 해당 위치 내에서 휴대폰을 가지지 않는 경향(예를 들어, 가족 공휴일)이 있는 장소에 있는 경우 정보가 항상 사용자에게 도달되지 않을 수 있다. 컨텍스트는, 주변 잡음 및/또는 컨텍스트의 특성들을 마스크하거나 또는 어지럽게 하는 다른 것 때문에, 전송 신뢰성에 영향을 줄 수도 있다.
통신의 실제 비용은, 싱크에 전달되는 통지 내에 포함되는 경우 사용자에게 정보를 전달하는 실제 비용은 나타낸다. 예를 들어, 이러한 비용은 휴대폰 전송과 연관된 요금을 포함할 수 있다. 단절의 비용은, 특별한 컨텍스트에서 장치의 특정 모드에 의해 사용되는 경보와 연관된 단절과 관련돤 주의 비용을 포함한다. 주의 비용은 통상적으로 사용자의 특정 주의 집중에 통상적으로 민감하다. 또한 소정의 모드에서 충실도/렌더링 성능은 텍스트, 그래픽 및/또는 장치의 오디오/촉각 성능의 기술이다. 예를 들어, 휴대폰의 텍스트 한계는 임의의 단일 메시지에 대해 100문자일 수 있고 휴대폰은 그래픽 성능을 가질 수 없다.
도 25로 돌아가면, 예시적인 인터페이스(2500)가, 사용자의 현재 컨텍스트를 결정하는데 컨텍스트 분석기에 의해 활용될 수 있는 사용자에 의한 선택가능한 컨텍스트 지정을 예시한다. 사용자에 의한 직접적인 지정에 의한 사용자 컨텍스트의 결정 및/또는 사용자 수정가능한 프로파일이 설명된다. 사용자의 컨텍스트는, 사용자의 주의 집중 - 즉 사용자가 현재 통지 경보를 수신할 수 있는지 여부 -, 뿐만 아니라 사용자의 현재 위치를 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않는다.
사용자에 의한 컨텍스트의 직접 지정은, 사용자가 자신이 경보를 수신할 수 있는지 여부 및 사용자가 경보를 수신할 의향이 있는 위치를 나타내도록 할 수 있다. 디폴트 프로파일(도시 안됨)이 사용되어 디폴트 주의 상태, 및 사용자가 경보를 수신할 수 있는 디폴트 위치를 나타낼 수 있다. 디폴트 프로파일은 사용자에 의해 원하는 대로 수정될 수 있다.
도 25를 참조하면, 인터페이스(2500)는, 본 발명의 일 양상에 따라, 컨텍스트의 직접적인 지정이 구현될 수 있는 방법을 예시한다. 예를 들어, 윈도우(2502)는 주의 집중 섹션(2520) 및 위치 섹션(2540)을 가진다. 집중 섹션(2520)에서, 사용자는 예를 들어 사용자가 항상 경보를 수신할 수 있는지 여부; 사용자가 결코 경보를 수신할 수 없는지 여부; 및 사용자가 소정의 임계치보다 큰 중요도 레벨을 갖 는 경보들만 수신할 수 있는지 여부를 나타내는, 하나 이상의 체크 박스(2522)를 체크할 수 있다. 다른 가용성 섹션들이 제공될 수 있다는 것을 이해할 것이다. 도 25에 도시된 바와 같이, 임계값은 달러로 측정될 수 있으나 이는 단지 예시적인 목적을 위한 것이고, 본 발명은 이에 한정되지 않는다. 사용자는, 새로운 값을 직접 입력하거나 또는 화살표(2526)를 통해 임계값을 증가시키거나 감소시킴으로써 박스(2524) 내의 임계값을 증가시킬 수 있다.
위치 섹션(2540)에서, 사용자는 하나 이상의 체크 박스(2542)를 체크하여, 사용자가 경보를 전달받기를 원하는 위치를 나타낼 수 있다. 예를 들어, 사용자는 데스크톱에서, 전자 메일로, 랩톱에서, 휴대폰 상에서, 자신의 차에서, 페이저로, 또는 PDA 장치 등에서 경보를 전달받을 수 있다. 그러나, 이러한 것은 단지 예이고 본 발명 자체는 그렇게 한정되지 않는다는 것을 이해할 것이다.
체크 박스들(2522) 및 섹션(2520)의 박스(2524) 및 섹션(2540)의 체크 박스(2542)에 대해 디폴트들이 미리 설정될 수 있는 윈도우(2502)는 디폴트 사용자 프로파일로 생각될 수 있다. 프로파일은, 사용자가 자신의 원하는 선택으로 디폴트 선택을 무시할 수 있다는 점에서 사용자 수정가능하다. 다른 유형의 프로파일들도 본 발명에 따라 사용될 수 있다.
이제 도 26을 참조하면, 예를 들어, 하나 이상의 센서를 사용한, 직접 측정에 의한 사용자 컨텍스트의 결정이 본 발명에 따라 예시된다. 사용자의 컨텍스트는 사용자의 주의 집중뿐만 아니라 자신의 현재 위치를 포함할 수 있다. 그러나 본 발명 자체는 그렇게 한정되지 않는다. 컨텍스트의 직접 측정은, 센서(들)이 사 용되어 사용자가 현재 경보들을 수신할 수 있는지 여부를 검출하고, 사용자의 현재 위치를 검출하는 것을 나타낸다. 본 발명의 일 양상에 따르면, 직접 측정과 함께 추론 분석이 활용되어 본 명세서의 나중 부분에서 설명되는 바와 같이 사용자 컨텍스트를 결정할 수 있다.
도 26을 참조하면, 사용자 컨텍스트의 직접 측정이 달성될 수 있는 시스템(2600)이 예시된다. 시스템(2600)은 컨텍스트 분석기(2602)를 포함하고 다수의 센서(2604-2616), 즉 예를들어 휴대폰(2604), 비디오 카메라(2606), 마이크로폰(2608), 키보드(2610), PDA(2612), 자동차(2614) 및 GPS(2616)에 통신가능하게 연결된다. 도 26에 도시된 센서들(2604-2616)은 단지 예시적인 목적을 위한 것이고, 본 발명 자체에 대한 한정이나 제약을 나타내는 것은 아니다. 본원에 사용된 센서라는 용어는 일반적이고, 컨텍스트 분석기(2602)가 사용자의 현재 주의 집중이 어떤지, 및/또는 사용자의 현재 위치가 어디인지를 결정할 수 있는 임의의 장치 또는 방식을 의미하는, 용어를 광범위하게 포함한다.
예를 들어, 사용자가 휴대폰(2604)을 가지면, 이는 사용자가 휴대폰(2604)으로 경보를 수신할 수 있다는 것을 나타낼 수 있다. 그러나, 사용자가 현재 휴대폰(2604)으로 통화중이라면, 이는 사용자의 주의 집중이 다른 것(즉, 현재의 전화 통화)에 있어 사용자는 현재 통지 경보로 방해받지 않아야 한다는 것을 나타낼 수 있다. 예를 들어, 비디오 카메라(2606)가 사용자의 사무실에 있어, 사용자가 사무실에 있는지 여부(즉, 사용자의 위치) 및 다른 사람들이 사무실에 있는지 여부도 검출하여 회의를 제안하여, 사용자가 방해받지 않게 한다(즉, 사용자의 집중). 유사 하게, 마이크로폰(2608)도 사용자의 사무실에 있어, 사용자가 다른 사람과 대화중인지 여부를 검출하여, 사용자가 방해받지 않도록 하고, 키보드로 타이핑하고 있는지를 검출하여(예를 들어 키보드로부터 나오는 소리를 통해), 사용자가 또한 현재 방해받지 않도록 한다. 키보드(2610)도 사용되어 사용자가 현재 타이핑중인지 여부를 결정할 수 있는데, 예를 들어 사용자가 매우 빨리 타이핑을 치면, 이는 사용자가 컴퓨터 관련 활동에 집중을 두고 있고 과도하게 방해받지 않아야 한다는 것을 나타낼 수 있다(이는 또한 사용자가 실제 사무실에 있다는 것을 나타낼 수도 있다).
PDA 장치(2612)가 사용자에 의해 액세스되면, 이는, 사용자가 장치(2612)에서 경보를 받을 수 있다는 것 - 즉, 통지가 전달되어야 하는 위치는, 장치(2612)가 위치하는 임의의 곳임 - 을 나타낼 수 있다. 장치(2612)가 활용되어 사용자의 현재 주의 집중을 결정할 수도 있다. 자동차(2614)가 활용되어 사용자가 현재 자동차에 있는지 여부 - 즉, 자동차가 현재 사용자에 의해 동작되고 있는지 여부 - 를 결정할 수 있다. 또한, 예를 들어 자동차의 속도가 고려되어 사용자의 집중이 어떤지를 결정할 수 있다. 예를 들어, 속도가 소정의 속도보다 크면, 그 후, 사용자가 운전에 집중을 두고 있고 통지 경보에 의해 방해받지 않아야 된다고 결정된다. 본 기술 분야에서 알려진 바와 같이 GPS 장치(2616)가 사용되어 사용자의 현재 위치를 확인할 수도 있다.
상세한 설명의 다음 부분에서, 사용자 수정가능한 규칙들에 따른 사용자 컨텍스트의 결정이 설명된다. 사용자 컨텍스트는, 사용자의 주의 집중뿐만 아니라 그들의 현재 위치를 포함한다. 그러나, 본 발명은 이에 한정되지 않는다. 규칙들을 통한 컨텍스트의 결정은, if-then 규칙들의 계층적 세트가 후속되어 사용자의 위치 및/또는 주의 집중을 결정할 수 있다는 것을 나타낸다.
도 27을 참조하면, 도면은 예시적인 계층적 순서화된 규칙 세트(2700)를 예시한다. 규칙 세트(2700)는 예를 들어 규칙(2702, 2704, 2706, 2708, 2710, 2712, 2714)를 도시한다. 주의할 점은, 다른 규칙들이 유사하게 구성될 수 있다는 것이다. 도 27에 예시된 바와 같이, 규칙(2704, 2706)은 2702에 종속적이며, 규칙(2706)은 규칙(2704)에 종속적이고, 규칙(2714)은 규칙(2712)에 종속적이다. 규칙(2702)이 먼저 테스트되고; 참인 경우, 규칙(2704)이 테스트되고; 규칙(2704)이 참인 경우, 규칙(2706)이 테스트되는 것 등의 점에서 규칙들은 순서화되어 있다. 규칙(2704)이 거짓이면, 규칙(2708)이 테스트된다. 규칙(2702)이 거짓이면, 규칙(2710)이 테스트되며, 이는 참인 경우 규칙 (2712)를 테스트하게 하고, 이는 참인 경우 규칙(2714)을 테스트하게 한다. 규칙들은 바람직하게는 사용자 생성가능하거나 및/또는 수정가능하다. 다른 유형의 규칙들도 규칙 세트(2700) 내에 포함될 수 있다(예를 들어, if-then 규칙이 거짓인 경우, 다른 규칙이 제어함).
따라서, 규칙 세트는, 사용자의 컨텍스트가 결정되도록 사용자에 의해 구성될 수 있다. 예를 들어, 위치에 있어, 규칙 세트는 제1 규칙이 오늘이 주중인지 여부를 테스트하도록 될 수 있다. 그렇다면, 그 후, 제1 규칙에 종속적인 제2 규칙이 현재 시간이 오전 9시와 오후 5시 사이 인지 여부를 테스트한다. 그렇다면, 그 후, 제2 규칙은 사용자가 사무실에 있고, 그렇지 않으면 사용자는 집에 있다는 것을 나타낸다. 제1 규칙이 거짓이라면 - 즉 오늘이 주말이며 주중이 아니라는 의미 -, 다른 규칙이 사용자가 집에 있다는 것을 서술한다. 주의할 점은, 이러한 예는, 하나 이상의 다른 규칙들도 유사하게 구성될 수 있는 본원 발명 자체에 대해 제한적이거나 또는 한정적인 예라는 것을 의미하지 않는다는 것이다.
상세한 설명의 다음 부분에서, 통계적 및/또는 베이지안 모델을 사용하는 것과 같은, 추론 분석에 의한 사용자 컨텍스트의 결정이 설명된다. 주의할 점은, 추론 분석을 통한 컨텍스트 결정은, 소정의 양상에서, 설명된 바와 같이 센서(들)을 통한 직접 측정과 같은, 다른 결정에 의존할 수 있다는 것이다. 본원에 사용된 추론 분석은, 출력 변수(들), 즉 사용자의 현재 컨텍스트를 생성하기 위해 다수의 입력 변수들에 대해 추론 프로세스(들)을 사용하는 것과 관련있다. 분석은 일 양상에서 통계적 모델 및/또는 베이지안 모델의 활용을 포함할 수 있다.
도 28을 참조하면, 본 발명의 일 양상에 따라 사용자의 컨텍스트(2804)를 결정하기 위해 추론 엔진(2802)에 의해 추론 분석이 수행되는 시스템(2800)의 도면이 예시된다. 일 양상에서 엔진(2802)은 메모리와 같은 컴퓨터 판독가능한 매체로부터의, 컴퓨터의 프로세서에 의해 실행되는 컴퓨터 프로그램이다. 사용자 컨텍스트(3804)는 엔진(2802)의 출력 변수로 생각될 수 있다.
엔진(2802)은 하나 이상의 입력 변수를 처리하여 컨텍스트를 결정할 수 있다. 그러한 입력 변수는, 상세한 설명의 이전 부분에서 컨텍스트 결정을 위한 직접 측정 접근법과 함께 설명된 센서(들)과 같은, 하나 이상의 센서(들)(2808)뿐만 아니라 예를 들어 사용자의 스케줄링 또는 PIM(personal information manager) 컴 퓨터 프로그램 및/또는 사용자의 PDA 장치 상에서 액세스될 수 있는, 시계(2810) 및 달력(2812)에 의해 표현되는 현재 시간 및 날짜를 포함할 수 있다. 다른 입력 변수들은 도 28에 예시된 것 이외의 것으로 생각될 수도 있다. 도 28의 변수들은 본 발명 자체에 대해 한정이나 제한이 된다는 것을 의미하지는 않는다.
도 29 및 30을 참조하면, 상술한 추론 엔진에 의해 실행될 수 있는 통계적 및/또는 베이지안 모델에 의해 제공되는 바와 같이, 예시적인 추론 모델이 본 발명에 따라 예시되어 있다. 일반적으로, 컴퓨터 시스템은 사용자의 상태의 상세에 대해 어느정도 불확실할 수 있다. 따라서, 확률론적 모델이 구성되어, 사용자의 주의 또는 불확실한 다른 상태에 대해 추론할 수 있다. 베이지안 모델은, 사용자의 주의 집중에 대한 확률 분포를 추론할 수 있다. 그러한 주의 상태는, 사용자에 의해 다루어지는 인지적 도전의 구별되는 클래스 세트의 보다 추상적인 표현 또는 원형적 상태의 세트로서 공식화될 수 있다. 대안적으로, 주의 집중의 연속적인 측정에 대해 추론하는 모델들 및/또는 서로 다른 유형의 통지에 대한 인터럽션의 비용에 대한 확률 분포를 직접 추론하는 모델들이 공식화될 수 있다.
사용자의 활동 및 위치에 관한 관찰 세트에 기초하여 대체 활동 컨텍스트 또는 상태의 확률을 추론할 수 있는 베이지안 네트워크가 사용될 수 있다. 예로서, 도 29는 단일 시간 주기에 대한 사용자의 주의 집중을 추론하기 위한 베이지안 네트워크(2900)를 표시한다. 변수의 상태들, 주의 집중(2920)은 데스크톱 및 비데스크톱 컨텍스트와 관련있다. 모델에서 고려되는 예시적인 주의 컨텍스트는, 예를 들어 상황 인식, 캐칭업(catching-up), 비특정적 백그라운드 태스크, 포커스된 콘 텐트 생성 또는 리뷰, 가벼운 콘텐트 생성 또는 리뷰, 문서 브라우징, 사무실에서의 회의, 사무실 밖 회의, 프리젠테이션 경청, 사적 시간, 가족 시간, 개인 집중, 일상적 대화 및 여행을 포함한다. 베이지안 네트워크(2900)는 사용자의 현재 주의 및 위치가 사용자의 스케줄된 약속(2930), 하루의 시간(2940), 및 마감일의 근접(2950)에 의해 영향을 받을 수 있다는 것을 나타낸다. 사용자의 주의에 대한 확률 분포도, 예를 들어 사용자의 사무실에서 모니터된 주변 음향 신호의 상태의 요약(2960)에 의해 영향을 받는다. 시간에 따른 주변 음향 신호(2960)의 세그먼트들이 활동 및 대화의 존재에 대한 단서/입력들을 제공한다. 컴퓨터와 상호작용하는 사용자에 의해 생성된 사용자 활동의 지속적인 스트림 및 소프트웨어 애플리케이션들의 상태 및 구성은, 사용자의 주의에 대한 증거의 소스를 제공한다.
네트워크(2900)에 표현된 바와 같이, 운영 체제 또는 다른 환경 내의 상위 레벨 집중에서의 현재 소프트웨어 애플리케이션(2970)은 사용자의 집중 및 태스크의 성질에 영향을 미치고, 사용자의 주의 상태와 함께 집중하는 애플리케이션은 컴퓨터 중심 활동에 영향을 미친다. 그러한 활동은, 마우스 및 키보드 액션들의 시퀀스들로부터 구축된 사용자 활동의 스트림, 및 보다 넓은 시평(time horizon)에 걸친 애플리케이션 사용법의 보다 높은 레벨 패턴들을 포함한다. 그러한 패턴들은 전자 메일 중심적이고 워드 프로세서 중심적인 것을 포함하고, 다수의 애플리케이션들이 인터리브되는 방식을 포함하는 활동의 원형적 클래스(prototypical class)를 나타낸다.
도 30은, 서로 다른 기간에서 컨텍스트 변수들 사이에서의 사용자의 주의 집 중의 베이지안 모델(3000)을 예시한다. 마르코프 세트의 시간적 의존성이 모델(3000)에 의해 예시되는데, 컨텍스트 변수의 과거 상태들은 사용자의 상태의 현재 결정에 고려된다. 실시간으로, 그러한 베이지안 모델(3000)은 예를 들어 온라인 달력에 의해 제공되는 정보, 및 방의 음향에 대한 관찰 스트림 및 이벤트 센싱 시스템(도시 안됨)에 의해 보고된 사용자 활동을 고려하고, 사용자의 주의의 확률 분포에 대한 추론 결과를 계속 제공한다.
도 31 및 32는 본 발명에 따라 컨텍스트 분석기 및 통지 엔진과 같은 통지 아키텍쳐의 부분들을 제공하기 위한 방법을 예시한다. 설명을 간단히 하기 위해, 방법은 일련의 액트들로 도시되고 기술되나, 본 발명에 따라, 소정의 액트들이 서로 다른 순서 및/또는 본원에 도시되고 설명된 것과 다른 액트들과 동시에 발생할 수 있기 때문에 본 발명은 액트들의 순서에 의해 한정되지 않는다는 것을 인식하고 이해하여야 한다. 예를 들어, 본 기술 분야의 당업자는, 방법이, 상태도에서와 같이, 일련의 상호연관된 상태들 또는 이벤트들로 대안적으로 표현될 수 있다는 것을 인식하고 이해할 것이다. 더욱이, 예시된 모든 액트들이 본 발명에 따라 방법을 구현하는데 필요한 것은 아니다.
도 31을 참조하면, 흐름도(3100)는 본 발명에 따른 사용자의 컨텍스트 결정을 예시한다. 프로세스는, 3102에서 사용자의 위치를 결정하고 3104에서 사용자의 집중을 결정하는 것을 포함한다. 이러한 액트들은 이전에 설명된 하나 이상의 접근법들에 의해 달성될 수 있다. 예를 들어, 프로파일이 사용될 수 있고; 사용자는 자신의 컨텍스트를 지정할 수 있으며; 컨텍스트의 직접 측정이 활용될 수 있고; 규 칙 세트가 후속될 수 있으며; 베이지안 또는 통계 모델을 이용하는 것과 같은 추론 분석도 수행될 수 있다. 다른 분석이 사용되어 사용자의 컨텍스트를 결정할 수 있다는 것을 이해할 것이다. 예를 들어, 누군가 컴퓨터 앞에 있는지, 및 누군가 컴퓨터를 보고 있는지 여부를 알 수 있는 집적된 비디오 카메라 소스가 존재할 수 있다. 그러나, 주의할 점은, 시스템이 카메라와 함께 또는 카메라 없이 작동할 수 있다는 것이다. 모든 소스들에 대해 시스템은, 컨텍스트에 관한 추론에 대해 임의의 특별한 소스를 요구하지 않고, 실질적으로 임의의 가용한 입력 소스와 동작할 수 있다. 또한, 다른 양상에서, 집적된 가속도계, 마이크로폰, 및 사용자의 위치 및 주의를 감지하는 작은 PDA 상의 근접 검출기들이 존재할 수 있다.
도 32를 참조하면, 흐름도(3200)는 본 발명의 일 양상에 따른 통지 엔진에 대한 의사결정 프로세스를 예시한다. 3202에서, 하나 이상의 통지 소스는, 통지 엔진에 의해 수신되는, 통지들을 생성한다. 3204에서, 컨텍스트 분석기는 3206에서 통지 엔진에 의해 수신되는 사용자에 대한 컨텍스트 정보를 생성/결정한다. 즉, 본 발명의 일 양상에 따르면, 3204에서, 컨텍스트 분석기는 사용자의 현재 주의 상태 및 위치를 나타내는 사용자 컨텍스트 정보 프로파일을 액세스하거나 및/또는 상세한 설명의 앞선 부분들에서 설명한 바와 같이 하나 이상의 컨텍스트 정보 소스들로부터 사용자의 현재 주의 상태 및 위치에 관한 실시간 정보를 액세스한다. 3208에서, 통지 엔진은 컨텍스트 분석기로부터 수신된 컨텍스트 정보에 부분적으로 기초하여, 통지들중 어느 것이 통지 싱크들중 어느 것으로 전달되는지를 결정한다. 통지 엔진은, 컨텍스트 분석기에 의해 저장된 사용자의 통지 파라미터들에 대한 정 보에 기초하여 결정할 수도 있다. 즉, 일 양상에 따르면, 3208에서, 엔진은 사용자가 소정의 통지에 대해 경보를 받아야 하는지 여부 및 사용자가 어떻게 통지받아야 하는지에 대해 의사결정론적 분석을 수행한다. 아래에서 보다 상세하게 설명되는 바와 같이, 의사결정론적 및/또는 휴리스틱(heuristic) 분석, 결정 및 정책들이 3208에서 사용될 수 있다. 사용자에 대한 통지 파라미터들이 활용되어 소스 또는 싱크의 스키마에 제공된 파라미터들을 덧쓰거나 빠진 값들을 채움으로써 분석을 개인화할 수 있다. 통지 환경설정은, 의사결정론적 분석의 측면에서 사용되는 정책들(예를 들어, 발견적)을 제공할 수도 있다. 이러한 결정에 기초하여, 통지 엔진은 통지들을 3210에서 분배기에 전달한다.
데이터 구동형 애플리케이션 설치(Data-Driven Application Installation)
본 발명의 다른 양상에 따르면, 정보 에이전트 애플리케이션의 설치는 미리 정의된 표들을 갱신함으로써 달성될 수 있다. 종래의 통지 시스템뿐만 아니라 다른 애플리케이션들은 통상적으로 설치되는 경우 데이터베이스 객체의 증식을 수반한다. 모든 애플리케이션은 종래에는 설치 프로세스 동안 절차뿐만 아니라 많은 개수의 표 및 데이터베이스들을 저장하여야 한다. 그러나, 본 발명은 다른 접근법을 취한다. 먼저, 시스템 또는 정보 에이전트 시스템(100)과 같은 플랫폼이 설치되는 경우, 표의 기본 세트가 생성될 수 있다. 따라서, 애플리케이션 설치는 단지 데이터를 이미 존재하는 표에 삽입하는 것만을 수반한다. 이러한 접근법은 설치된 애플리케이션의 개수가 증가함에 따라 데이터베이스 객체들이 증식되는 것을 방지하고 (아래에 토의되는) 확장성을 가능케한다.
전술한 바를 달성하기 위해, 이벤트, 환경설정 및 절차들은 데이터로서 모두 저장될 수 있다. 이는 시스템이 데이터베이스 엔진의 항상 증가하는 처리력 및 질의를 이용하여 정보 에이전트 애플리케이션(300)(도 3)과 같은 다수의 애플리케이션을 실행할 수 있게 한다. 상술한 바와 같이, 환경설정은 최종 사용자들에 의해 정의되고 그 후 표 및 데이터베이스 내의 하이 레벨 데이터 필드들로 추상화될 수 있다. 이벤트들이 캡쳐되거나 검색된 후, 데이터베이스에 저장될 수 있다. 질의 평가 절차와 같은 종래의 저장된 절차들도 절차들을 생성하고 텍스트를 하나 이상의 데이터베이스 표들로 롤링(rolling)함으로써 데이터로 표현될 수 있다. 그 후, 절차가 실행되는 경우, 절차를 나타내는 텍스트 스트링이 데이터베이스 표로 부터 끄집어 내어지고 데이터베이스 내에서 동적으로 평가될 수 있다. 이러한 접근법은 애플리케이션에 의해 생성될 필요가 있는 저장된 절차들의 개수를 급격하게 줄이고, 애플리케이션 설치가 단지 DML(Data Manipulation Language) 데이터 구동형 동작으로 할 수 있다.
조합성 및 확장성(Composability and Extensibility)
본 섹션은 정보 에이전트 애플리케이션들이 초기 생성시에 조립되는 방법 및 나중에 확장되는 방법을 설명한다. 정보 에이전트 애플리케이션(IA 애플리케이션)은, 최종 사용자로 하여금 소정의 하부 시스템 또는 애플리케이션 도메인을 이용하여 ECA(event-condition action) 모델을 통해 상호작용할 수 있게 하도록 설계된다. 보다 구체적으로, 정보 에이전트 애플리케이션들은 사용자가, 특히 사용자 컨텍스트에 대한 민감성이 중요한 정보 라우팅, 필터링 및 프로세싱을 다루는 문제 영역들에 대해, 다른 애플리케이션 성능이 적용되는 방법을 제어하는 환경설정을 지정할 수 있도록 설계된다. 이에 기초하면, 정보 에이전트 애플리케이션들의 조합성 및 확장성은, 하부 시스템 또는 애플리케이션 도메인을 조합하거나 확장하는 것에 지향되기 보다는 환경설정(새로운 ECA 인스턴스화)를 효과적으로 생성하는 사용자의 능력을 타겟으로 한다는 것을 이해할 것이다.
새로운 애플리케이션, 컴포넌트, 또는 시스템 모델(이러한 것이 가능하고 본 발명의 범주 내에 고려되어야 하더라도)을 생성하는 것이 정보 에이전트 애플리케이션 조합성 및 확장성의 목적은 아니다. 오히려, 그 목적은, ECA 모델(예를 들어 의사결정 논리 컴포넌트(330))를 통해 환경설정 논리를 사용자가 지정하게 하는 시스템의 컴포넌트 또는 계층으로 동적인 확장을 가능하게 하는 것이다. 구체적으로, 새로운 조건들 및 액션들(ECA의 CA 부분)이, 소정의 애플리케이션이 설치된 시간에 후속하여 최종 사용자들에게 이용가능하게 되도록 하는 것이 목적이다. 또한, 이벤트들(ECA의 E 부분)도 유사한 방식으로 동적으로 확장될 수 있다는 것을 이해하여야 한다.
본 발명의 일 양상에 따르면, 정보 에이전트 애플리케이션들은 환경설정을 정의하기 위한 자신의 사용자 인터페이스를 가지지 않으나, 대신 운영 체제 인터페이스 또는 환경설정을 생성하기 위한 애플리케이션 특정 사용자 인터페이스를 사용한다. 이러한 문맥에서, 정보 에이전트 애플리케이션 조합성 및 확장성은, 기존의 사용자 인터페이스들이 그 후 사용자가 새로운 조건 및 액션들을 갖는 새로운 환경설정들을 생성하도록 하는 방식으로 새로운 조건 및 액션을 추가하도록 설계된다. 이 점에 있어서, IA 애플리케이션은, 새로운 조건 및 액션들을 적절하게 사용하는 방법 및 그 때에 대해 최종 사용자 컨텍스트를 제공하기 위해, 그러한 새로운 기능의 서명이 확장 제공된 기술과 함께 적절하게 표시될 수 있도록 그러한 새로운 조건 및 액션들에 대한 리플렉션(reflection)을 지원할 수 있다.
다중성은 정보 에이전트 애플리케이션들에 대해 다양한 시간에 다양한 컨텍스트 내에 존재한다. 특히, IA 애플리케이션이 자급 자족할 수 있고 독립적일 수 있지만, 많은 IA 애플리케이션들은 다른 IA 애플리케이션들에 의해 제공된 레버리지(leverage) 성능과 실제 상호작용할 수 있다. 구체적으로, 한 애플리케이션에 의해 정의된 조건 및 액션 기능은 다른 애플리케이션에 의해 사용될 수도 있다. IA 에이전트는 다른 것과 몇몇 다른 방식들로 상호작용할 수도 있다. 예를 들어, 하나의 IA 애플리케이션 내의 환경설정 평가는 다른 IA 애플리케이션에 제출된 이벤트를 생성하는 액션을 트리거할 수 있다.
조합성과 확장성 사이의 구별은, 정보 에이전트 애플리케이션들의 컬렉션들이 상호작용하고 진화하는 방법을 이해하는데 중요하다. 조합성은, 기존에 존재하고, 애플리케이션이 초기에 생성되는 때에 다른 정보 에이전트 애플리케이션들에 의해 제공되는 성능을 구성하는, 새로운 정보 에이전트 애플리케이션이 생성되는 경우 사용되는 개념이다. 확장성은, 애플리케이션이 생성되어 있거나 설치된 이후 생성되었던 새로운 기능으로 이미 존재하는 정보 에이전트 애플리케이션이 확장되는 개념 및 프로세스를 나타낸다. 또한, 메커니즘의 공통 세트가 조합성 및 확장성 모두를 지원하도록 사용되기 때문에, 조합성과 확장성의 얼마간 상이한 목적들 을 달성하는데 그러한 공통 메커니즘이 사용되는 방법 상의 미묘한 차이를 이해하는 것이 중요하다. IA 애플리케이션 조합성의 개념은, 개별적인 부분들의 세트로부터 단일 IA 애플리케이션이 구성되는 프로세스에도 적용가능하다. 이러한 조합성의 양상은 IA 애플리케이션을 모듈 형식으로 개발하는 소프트웨어 엔지니어링 목적에 대처한다. IA 애플리케이션 시스템에 도입되는 확장성의 개념은, 전통적인 확장성의 개념과 일관된다. 즉, 새로운 성능이 IA 애플리케이션의 본래 정의에 후속적으로 추가되고, 이는 애플리케이션의 성능을 강화시킨다.
대부분은, IA 애플리케이션의 척도는 사용자들에게 제공되는 성능에 의해 결정된다. 따라서, IA 애플리케이션이 확장될 수 있는 정도는 새로운 조건 및 액션이, 기존 애플리케이션의 컨텍스트 내에서 새로운 환경설정을 정의하는 사용자들에게 이용가능하게 되는 정도에 의해 결정될 수 있다. IA 애플리케이션 확장성은 주로, 애플리케이션이 설치된 시간 이후 본래 애플리케이션의 제작자(들)에 의한 추가 개입없이 새로운 조건 및 액션들이 애플리케이션에 추가될 수 있게 하는 것이 목적이다. 이러한 것이 작용하는 방법을 이해하기 위해, 액션 또는 조건 기능의 정의가 궁극적으로 정보 에이전트 애플리케이션의 최종 사용자에게 액세스가능하게되는 진화적인 체인을 강조하는 것이 중요하다.
도 33으로 돌아가면, 조건/액션 진화적 체인(3300)이 본 발명의 일 양상에 따라 도시되어 있다. 조건 및 액션들은 3310에서 조건 또는 액션 기능으로서 시작한다. 이러한 기능 지정은 예를 들어 SQL 호출가능한 기능/저장된 절차의 정의의 공식 서명을 나타내는 경우 사용될 수 있다. 새로운 조건 또는 액션 기능이 정의 되는 때와 그 기능이 대응 조건 또는 액션의 선언에 의해 기존 애플리케이션에 연결되는 때 사이에서, 기능은 후보 기능인 것으로 생각될 수 있다. 후보 기능의 개발자는 3320에서 목표로 하는 애플리케이션이, 후보 조건 또는 액션으로서 지칭되는 해당 기능으로부터 조건 또는 기능을 생성하도록 확장될 수 있게 하는 바인딩(bindings)을 지정한다. 이 단계에서, 조건 또는 액션들은, 확장될 기존 애플리케이션에 의해 사용하기 위한 후보들이며, 애플리케이션은 조건 또는 액션들을 사용하나 그들을 수취할 필요가 없다. 확장될 애플리케이션에서의 수취 논리는, 예를 들어 제안된 확장/바인딩을 서명했던 사람에 기초하여 해당 바인딩이 수취될 것인지 여부를 결정한다. 애플리케이션이 조건 또는 논리 기능 후보에 대해 자신의 환경설정 클래스들을 연결하면, 조건 또는 액션은 단순히 3330에서의 조건 또는 액션이 된다. 최종적으로, 최종 사용자가 새로 정의된 환경설정의 컨텍스트 내의 조건 또는 액션을 활용하는 경우, 해당 액션 또는 조건은 3340에서의 체인에 도시된 바와 같이 인스턴스화되었다고 말할 수 있다.
도 34는 본 발명의 일 양상에 따라 애플리케이션 상호작용을 위한 시스템(3400)을 나타낸다. 시스템(3400)은, 인스턴스 레지스트리 컴포넌트(3410), 정의 레지스트리(3412), 바인딩 레지스트리(3414), 애플리케이션 A(3420), 애플리케이션 B(3430), 바인딩(3425) 및 확장 컴포넌트(3440)를 포함한다. 확장성의 일 구현에서, 전개의 유닛은 애플리케이션 또는 확장(extension)이다. 인스턴스는 애플리케이션들 또는 애플리케이션 데이터 파일(ADFs)을 추가함으로써 확장된다. ADFs는 단일 애플리케이션이 전개되는 때에 사용하기 위해 개발자에 의해 생성될 수 있다. ADF는 일반적으로 애플리케이션의 중심 논리를 정의하고, 무엇보다도 이벤트, 조건 및 통지와 같은 액션들에 대한 스키마를 포함할 수 있다. 애플리케이션들은 확장 또는 확장 데이터 파일(EDFs)를 추가함으로써 확장될 수 있다. EDFs는 누군가에 의해 생성될 수 있고 인스턴스 및 애플리케이션이 생성된 이후(애플리케이션의 초기 설치를 포함함) 임의의 시간에 사용된다.
기능을 공유하는 애플리케이션들에 있어, 서로 감지할 필요가 있다. 본 발명의 일 양상에 따르면, 이는, 기능에 대한 정보 및 기능이 애플리케이션에 묶여지는 방법에 대한 정보를 저장하기 위해 정의 레지스트리(3412) 및 바인딩 레지스트리(3414)로 구성되는 인스턴스 레지스트리(3410)를 활용함으로써 달성될 수 있다. 인스턴스 레지스트리(3410)는 데이터를 저장하기 위해 애플리케이션에 대한 공유 위치를 제공한다. 인스턴스 레지스트리(3410)는 정의 레지스트리(3412) 및 바인딩 레지스트리(3414)를 포함한다.
정의 레지스트리(3412)는 애플리케이션 기능들과 관련된 정보를 저장한다. 본 발명의 일 양상에 따르면, 애플리케이션(예를 들어 IA 애플리케이션)에 의해 사용되는 애플리케이션 기능들은 정의 레지스트리(3412) 내에 등록되거나 또는 저장될 수 있다. 정의 레지스트리(3412) 내의 등록 기능은, 시스템 상에서 작동하는 모든 애플리케이션들에게 기능들이 공개되도록 한다. 따라서, 애플리케이션들에 의해 사용되는 기능들은, 정의 레지스트리에 등록되지 않은 것을 의미하는 완전히 개인적이거나 또는 정의 레지스트리에 등록되고 모든 다른 애플리케이션들에 대해 액세스가능하다는 것을 의미하는 공개적일 수 있다. 주의할 점은, 이러한 것이 정 의 레지스트리를 구현하는 단지 한가지 방식이라는 것이다. 다른 구현 메커니즘은 기능이 공개적인지 개인적인지 여부를 신호하는 지시자를 저장할 수 있다. 정의 레지스트리에 포함될 수 있는 소정의 예시적인 정보는 다음을 포함한다:
Figure 112005035121854-PCT00065
바인딩 레지스트리(3414)는 모든 바인딩, 조건, 액션 및 기능들에 대한 접근자들을 복수의 애플리케이션으로부터 저장할 수 있다. 이는, 그러한 기능들이 초기 정의 또는 애플리케이션에 대한 나중의 확장으로부터 유도되는지 여부에 상관없이 참일 수 있다. 또한, 주의할 점은, 본 발명의 일 양상에 따르면 공개 기능은 바인딩 메타데이터없이 사용할 수 없다는 것이다. 바인딩 메타데이터는, 공개 기능이 애플리케이션 데이터 이벤트 데이터에 결합되는 방법을 지정하는 정보이다. 바인딩 레지스트리(3414)에 공개 기능을 등록하는 것은, 기능을 애플리케이션에 결합시킨다. 이는, 일-대-다 관계이며, 하나의 기능이 다수의 서로 다른 애플리케이션들에 결합될 수 있다.
바인딩 레지스트리(3414)에 등록되는 바인딩들은 몇몇 상태들을 가질 수 있다. 예를 들어, 바인딩은 후보 바인딩일 수 있다. 후보 바인딩은 기능의 정의자(definer)에 의해 생성되고 다른 애플리케이션들에게 이용가능하게 된다. 바인딩은, 소정의 조건 또는 액션 기능에 특정 애플리케이션이 결합하는 방법을 표현하는, 소정의 애플리케이션에 바인딩이 특정적이다는 것을 나타내는 결합된 기능의 상태를 가질 수도 있다. 또한, 바인딩은 "수취 불가(not accepted)"의 상태를 가질 수 있다. 이러한 것은, 특정 애플리케이션에서 목표로 되었으나, 목표가 된 애플리케이션의 수취 논리에 의해 수취되지 않은 후보 기능들이다. 수취 논리는 ADF에서 선언되고, 무엇보다도, EDF 소스가 (예를 들어 디지털 서명을 사용하여) 진정한 것인지, (신뢰된 소스들의 리스트로부터) 인가된 것인지, 및 인증(EDF가 신뢰된 소스에 의해 서명됨)되었는지를 보장하는 컴포넌트들을 포함할 수 있다. 바인딩 레지스트리(3414)에 포함될 수 있는 추가 정보는 아래를 포함할 수 있으나, 이에 한정되지 않는다:
Figure 112005035121854-PCT00066
확장 컴포넌트(3420)는 후보 기능들에 기초하여 조건들 및 액션들을 생성한다. 확장 컴포넌트(3420)는 후보 기능들을 애플리케이션에 결합하기 위해 설치 시간에 설치 스크립트에 의해 호출될 수 있다. 새로운 후보 기능 엔트리가 바인딩 레지스트리(3414)에 작성되면, 액션 또는 타겟 애플리케이션의 일부분에 취해진 그의 부족분에 따라 몇몇 것들이 발생한다. 예를 들어, 타겟 애플리케이션이 설치되지 않으면, 그 후 엔트리는 무시될 수 있다. 타겟 애플리케이션이 설치되나 확장을 수취하도록 구성되지 않으면, 그 후 다시 엔트리가 무시될 수 있다. 그러나, 타겟 애플리케이션이 설치되고 후보 기능을 수취할 수 있으면, 그 후 새로운 조건, 액션 또는 접근자 바인딩이 애플리케이션에 대해 생성되고 확장 컴포넌트(3420)를 사용하는 애플리케이션들에 결합된다. 따라서, 시스템(3400)에서 애플리케이션 A(3430)은 애플리케이션 B(3440)에 이용가능하기를 원하는 로컬 기능 "ConditionFuncx"을 포함한다. 기능은 확장 데이터 파일(EDF)를 추가함으로써 애플리케이션 B(3440)에 대해 이용가능하게 될 수 있다. 그 후, 기능은 애플리케이션 B(3440)에 이용가능하게 되는 방식으로 인스턴스 레지스트리(3410)에 저장된다. 예를 들어, ConditionFuncX는 정의 레지스트리(3412)에 등록될 수 있고, 후보 기능은 바인딩 레지스트리(3414)에 저장될 수 있다. 그 후, 확장 컴포넌트(3420)는 바인딩 레지스트리(3414)로부터 후보 기능을 판독하고 애플리케이션 B(3440)에 결합시킴으로써 Condition A를 생성할 수 있다. 따라서, Condition A를 애플리케이션 A의 conditionFuncX에 결합시키는 바인딩(3450)이 생성된다.
바인딩 또는 의존성들이 설정되면, 주의할 점은, 수많은 방식들로 깨어질 수 있다는 것이다. 예를 들어, 애플리케이션에 의해 구현된 기능은, 그 애플리케이션이 제거되면 이용할 수 없게 된다(즉, 깨진 의존성). 더 이상 이용가능하지 않는 기능에 결합되어 있는 새로운 조건, 액션 또는 접근자로 새로운 애플리케이션이 설치되면, 의존 방식의 다른 예는 깨어질 수 있다. 또한, 애플리케이션이 모든 확장 또는 특정 확장을 더 이상 수취하지 않도록 재구성되면, 의존성이 깨어진다. 따라서, 기존 환경설정은, 더이상 이용가능하지 않은 조건, 액션 또는 접근자에 대한 의존성들을 가질 것이다. 깨어진 의존성은 수많은 방식로 보상될 수 있다. 본 발명의 일 양상에 따르면, 이용가능하지 않은 상태가 정의될 수 있다. 예를 들어, 적어도, 애플리케이션이 의존성을 깨도록 허가되기 전에, 모든 다른 애플리케이션들에게, 그들이 의존적인 환경설정들을 "NotAvailable" 상태로 둘 수 있도록 통지될 수 있다. 그 후, 애플리케이션이 설치될 때마다, 시스템 또는 애플리케이션은 이용가능하지 않은 상태가 이용가능하게 변경되고 환경설정이 활용될 수 있도록 의존성이 재설정되었는지를 체크할 수 있다.
환경설정은 정보 에이전트 애플리케이션들 사이에서 생성될 수 있다. 환경설정 인스턴스화는 IA 애플리케이션들 간의 사용작용이 달성될 수 있는 방법을 표현한다. 본 발명의 일 양상에 따르면, 하나의 IA 애플리케이션 보다 많은 능력을 액세스하는 환경설정을 사용자들이 생성할 수 있도록 하는 적어도 2개의 메커니즘이 제공될 수 있다. 하나의 메커니즘은 EDF 바인딩이다. 애플리케이션 개발자들은 EDF 바인딩을 생성하여, 한 애플리케이션 내의 환경설정 클래스들이 다른 애플리케이션들에 정의된 조건 및 액션들을 참조할 수 있게 한다. 이로 인해, 최종 사용자들은 다수의 애플리케이션으로부터의 조건 및 액션들을 참조하는 환경설정을 인스턴스화할 수 있다. 이벤트 제출 액션들이 다수의 애플리케이션들에 의해 제공된 능력을 이용할 수도 있다. 이벤트 클래스가 애플리케이션에 의해 정의되는 경우 이벤트 제출 액션 기능이 암시적으로 생성될 수 있다. 그 후, 이러한 이벤트 제출 액션 기능들은, 다른 애플리케이션들에 의해 사용되는, EDFs를 통해 액션들에 결합될 수 있어, 새로이 생성된 사용자 환경설정의 잠재적인 능력을 풍부하게 한다.
최종 사용자와는 반대로, 애플리케이션이 애플리케이션 개발자에 의해 지정된 환경설정을 직접 인스턴스화할 수 있게 하기 위해 추가 메커니즘 또는 컴포넌트들이 필요할 수 있다. 한 메커니즘 또는 컴포넌트들이 환경설정 템플릿에 대응할 수 있다. 환경설정 템플릿은 환경설정 클래스의 컨텍스트 내에서 정의될 수 있고, 조건 및 클래스들의 세트를 포함한다. 환경설정 클래스의 문법은 템플릿을 정의하기 위해 새로운 태그를 이용하여 확장될 수 있다. 후속적으로, 이러한 태그는 새로운 템플릿들을 이용하여 애플리케이션들을 확장하기 위해, EDFs에 의해 사용될 수 있다. 환경설정 인스턴스화 액션이 사용될 수도 있다. 새로운 환경설정 템플릿이 생성되는 경우, 액션 기능이 암시적으로 생성되어 지정된 템플릿으로부터 환경설정을 인스턴스화할 수 있다. 해당 액션 기능에 대한 파라미터들은 조건 액션들의 템플릿의 고정 세트로부터 환경설정을 인스턴스화될 필요가 있는 상수들을 나타낸다.
개발자들은 최종 사용자에 의한 명시적인 개입없이 애플리케이션 내 또는 애플리케이션들에 걸쳐 환경설정들을 인스턴스화할 수도 있다. 이러한 기능을 달성하기 위해 몇몇 메커니즘이 사용될 수 있다. 예를 들어, 새로운 ADF 태그가 환경설정 클래스에 추가되어 애플리케이션 정의 시간에 직접적으로 ADF 내에서 환경설정이 인스턴스화될 수 있게 한다. 대안적으로, 새로운 EDF 태그가 환경설정 클래스에 추가될 수 있다. 이로 인해, 애플리케이션이 정의되는 동안 및 그 후에 환경설정이 인스턴스화될 수 있다. 이외에도, 환경설정 인스턴스화는 스키마 정의 바깥에서 스크립트(예를 들어, SQL 스크립트)를 통해 예를 들어 시스템 APIs의 사용을 통해 달성될 수 있다.
상술한 기능을 사용하면, 한 애플리케이션이 이벤트를 송신하거나, 조건/액션들을 평가하거나 또는 다른 애플리케이션들 내의 환경설정들을 인스턴스화하기 때문에, 애플리케이션(예를 들어 IA 애플리케이션) 상호작용이 발생할 수 있다. 그러한 상호작용은 개발자에 의해 직접적으로 달성될 수 있거나 또는 최종 사용자가 정의한 환경설정을 통해 달성될 수 있다.
애플리케이션 조합성 및 확장성의 다양한 양상들에 대한 추가의 이해를 위해, 몇몇 예들이 다음에 제공된다. ShellApp는 운영 체제 정보 에이전트 애플리케이션이다. Office도 정보 에이전트 애플리케이션이다.
일례 #1 조합(Composition)
조합은 새로운 애플리케이션이 기존의 알려진 기능에 결합하도록 허가되는 경우 정의될 수 있다. 이러한 예에서, ShellApp가 먼저 설치되고 Office는 그 후에 설치된다. Office가 허가된 경우, 개발자는 Office 애플리케이션이 ShellApp의 FuncX 조건 기능을 강화시키는 것에 대해 알고 이와 같이 설계한다. Office가 설치되는 경우, FuncX 조건 기능(구 기능)을 Office 애플리케이션(새로운 애플리케이션) 내의 조건에 결합시키는 바인딩을 바인딩 레지스트리 내에 등록한다. 그 후, Office 애플리케이션 설치 스크립트는 바인딩 레지스트리를 판독하는 확장 컴포넌트를 호출한다. 그 후, 확장 컴포넌트는, 이미 정의된 조건("내장형(built in)")이 존재한다는 것을 검출하여 인스턴스 와이드(instance wide) NotAvailable 상태를 재평가하는 다음 단계로 건너뛴다.
일례 #2 확장(Extension)
확장은, 구 애플리케이션이 새로운 기능으로 확장되는 경우로서 정의될 수 있다. 이러한 예에서, 상기와 유사하게, ShellApp가 설치된 후 Office가 설치된다. Office가 인가된 경우, 개발자는 ShellApp 내에 사용될 수 있는 액션 기능 FuncY를 생성하였다. Office가 설치되는 경우, 정의 레지스트리에 액션 기능을 등록하고 Office 애플리케이션 FuncY(새로운 기능)을 ShellApp(구 애플리케이션) 내의 액션과 결합하는 바인딩을 바인딩 레지스트리 내에 등록한다. Office 애플리케이션 스크립트가 확장 컴포넌트를 호출하여 ShellApp 내에 대응하는 액션을 가지지 않는 새로운 바인딩이 존재한다는 것을 검출하고 그에 따라 ShellApp 내에 생성함으로써 액션을 내면화시킨다. 그 후, 인스턴스 와이드 NotAvailable 상태를 재평가한다. ShellApp는 Office 애플리케이션으로 확장되었다고 말할 수 있다.
일례#3 패치 확장(Patch Extension)
패칭(patching)은, 기능 및 애플리케이션 모두 이미 시스템 상에 설치되어 있는 경우 발생할 수 있다. 따라서, ShellApp 및 Office 모두 시스템 상에 설치되어 있다고 가정하면, 그 후, 오피스 서비스 팩이 설치된다. Office 애플리케이션의 배포 후에, 개발자들은 ShellApp가 사용할 수 있는 Office 내의 액션 기능이 존재한다는 것을 깨닫는다. 서비스 팩은, 무엇보다도, 새로운 Office 애플리케이션 조건을 Office 애플리케이션 내의 조건 기능과 결합시키는 바인딩을 정의하는 EDF를 포함한다. 서비스 팩이 설치되는 경우, 바인딩 레지스트리 내에 바인딩을 등록하고 확장 컴포넌트를 호출할 수 있다. 확장 컴포넌트는 타겟 애플리케이션들 내에 대응하는 액션 또는 조건을 가지지 않는 새로운 바인딩들이 존재한다는 것을 검출한 후, ShellApp 및 Office 애플리케이션 내에 그들을 생성할 수 있다. 그 후, 확장 컴포넌트는 인스턴스 와이드 Notavailable 상태를 재평가할 수 있다. 그 후, ShellApp는 Office 애플리케이션에 의해 확장되었다고 말해질 수 있고, Office는 ShellApp에 의해 확장되어졌다고 말해질 수 있다.
일례 #4 설치제거(Uninstalling)
이전에 설치된 Office 애플리케이션이 설치제거되었다고 가정하고, 그 프로세스동안 정의 및 바인딩 레지스트리로부터 모든 자신의 등록을 제거한다. ShellApp는, 지금 제거되는 Office에 의해 구현된 기능에 의존하는 액션들을 가질 수 있다. 따라서, 깨어진 의존성을 갖는 모든 액션들에 대해 이용가능하지 않거나 NotAvailable 상태가 선언될 수 있다. 그 후, 최종 사용자는 빠진 의존성에 대한 큐(cue)를 수신할 수 있다. 그 후, 최종 사용자는 이용가능하지 않은 환경설정들 또는 액션들(예를 들어 Office가 언젠가 돌아오는지)을 유지하거나 간단히 그들을 삭제하도록 선택할 수 있다.
일예 #5 재설치(Reinstalltion)
이전에 설치제거된 Office 애플리케이션이 지금 재설치된다고 가정하면, 설치 동안, 자신의 액션 기능과 바인딩을 ShellApp에 재등록한다. 그 후, Office 설치 스크립트는 확장 컴포넌트를 호출하여 ShellApp 내에 액션을 생성한다. 그러나 확장 컴포넌트는 조건, 액션 또는 접근자가 이미 타겟 애플리케이션(예를 들어, 이전에 설치된 애플리케이션)에 존재하는지를 간단히 검출할 수 있고 생성 단계로 건너 뛸 수 있다. 그 후, 기능들의 Notavailable 상태가 재평가되어 능동형일 수 있는 모든 기능이 인에이블된 상태에 위치되어 있다는 것을 보장한다.
개인화된 폴더들(Personalized Folders)
상기 설명한 시스템은, 소정의 이벤트 세트들에 대한 의사결정 및 액션들의 처리를 자동화하는 정보 애플리케이션의 구성을 용이하게 한다. 따라서, 최종 사용자가 데스크톱 통지 및 전자 메일 도착을 포함하나 이에 한정되지 않는 이벤트들에 대한 응답들을 개인화할 수 있게 하는 애플리케이션들이 설치될 수 있다. 그러한 애플리케이션중 하나는 이후에 설명되는 개인화된 폴더들이다. 본 발명은 다른 것들중에서, 스키마화된 데이터 저장소 및 스키마화된 논리를 활용함으로써 개인화된 이벤트 핸들링으로서 그러한 기능을 인에이블시킨다.
도 35로 돌아가면, 개인화된 시스템(3500)이 본 발명의 일 양상에 따라 도시된다. 시스템(3500)은 데이터 스토어(3550), 및 개인화된 폴더(들)(3510) 및 환경설정(3512)을 포함하는 정보 에이전트 애플리케이션(300)를 포함한다. 개인화된 폴더(들)(3510)은, 최종 사용자에 의해 직관적으로 지정될 수 있는 조건부 표현들에 기초하여 항목들을 포함하거나 제외할 수 있는 데이터 컨테이너 또는 폴더들과 관련있다. 일예에서, 폴더(들)(3510)은 계층적 방식으로 배열되고 운영 체제의 컴포넌트에 의해 구현될 수 있다. 그러나, 주의할 점은, 폴더 또는 데이터 컨테이너라는 용어의 사용은 한정하는 방식으로 의미하지 않는다는 것이다. 폴더(들)(3510)은 링크들, 포인터들 또는 관계 세트에 의해 정의된 데이터의 임의의 컬렉션으로 확장할 수 있다. 정보 에이전트 환경설정(3512)은 기술자가 아닌 최종 사용자가 스키마화된 논리 및 스키마화된 데이터를(예를 들어 데이터 스토어(150)를 통해) 결합시켜 풍부한 개인화된 애플리케이션들 및 환경들을 제공하는 능력을 나타낸다. 대조적으로, 종래의 환경설정은 스트링 상수들이 제공되는 직관적인 명칭들을 갖는 간단한 조건들을 단순히 이용한다. 환경설정(3512)은, 예를 들어 On 이벤트 IF 조건 THEN 액션들(On event IF conditions THEN actions) 또는 보다 애플리케이션 특정 용어들: On 폴더 이벤트 IF 조건 THEN 포함/제외 액션들(On folder event IF conditions THEN include/exclude actions)과 같이 최종 사용자들에게 친숙한 논리를 사용하여 최종 사용자에 의해 지정될 수 있다. 또한 주의할 점은 환경설정(3512)은, 통계적 및/또는 베이지안 모델들을 사용하는 것과 같이 추론 분석에 의해 개발되어 사용자 액션에 기초하여 사용자 환경설정을 학습할 수 있다는 것이다. 본원에서 사용된 추론 분석은 다수의 입력 변수들에 추론 프로세스(들)을 사용하여 출력 변수(들), 즉 사용자 환경설정 또는 환경설정 개발 도구에 대한 입력들을 생성하는 것과 관련있다. 일 양상에서, 분석은 통계적 모델 및/또는 베이지안 모델의 사용을 포함할 수 있으나, 이에 한정되지 않는다. 조건 및 액션들 이외에, 환경설정은 환경설정의 평가를 개시하는 트리거들을 포함한다. 본 발명의 일 양상에 따르면, 그러한 트리거들은, 폴더 내의, 문서의 추가, 문서의 삭제 및/또는 문서의 수정시 자동적으로 및/또는 시간에 의해 스케줄된, 명시적인 사용자 지시를 포함할 수 있다. 또한, 환경설정(3512)은 너무 복잡하여 단일 표현(예를 들어, 폴더로부터 특정 항목들을 포함/제외, 다수의 질의들의 효과들을 결합)을 통해 용이하게 생성되기 어려운 결과 세트들을 달성하도록 그룹화될 수 있다는 점을 이해하여야 한다. 또한, 주의할 점은, 개별적 및 그룹 환경설정(3512)은, 사용자가 폴더들(3510) 사이에서 환경설정을 드래그, 드롭, 자르고 붙일 수 있도록 물리적 엔트리들로 명시될 수 있다는 것이다. 폴더들(3510)은 데이터의 카피 또는 저장 장치에 저장된 데이터에 대한 단순한 포인터들을 포함할 수 있다(a/k/a 가상 폴더들). 저장된 데이터는 워드 프로세싱 문서, 스프레드쉬트, 화상 및 음악을 포함할 수 있으나 이에 한정되지 않는다. 또한 개인화된 폴더(3510)들은 다수의 서로 다른 도메인내의 항목들과 관련되는 연관된 환경설정(3512)을 가질 수 있다. 그러한 기능을 지원하기 위해, 미리 정의된 상수들이 도입된다. 보다 구체적으로, 한 항목 도메인으로부터의 미리 정의된 상수들은(예를 들어 MyGrandparent)는 다른 도메인들로부터의 조건들에 대한 인수들로 사용될 수 있다(예를 들어, Photofrom(MyGrandparent). 미리 정의된 조건 및 상수들의 결합은 최종 사용자들이 다양한 항목 도메인들을 관련시키는 간단하고 직관적인 방법을 제공한다. 물론, 사용자 정의 상수가 개인화된 폴더의 조건들에 제공될 수도 있다. 간단한 조건들이 항목 도메인에 대한 스키마로부터 추론될 수 있다. 예를 들어, 조건 EmailIsFrom() 또는 SubjectContains()가 전자 메일 스키마로부터 추론될 수 있다. 그러나, 스키마 개발자는 보다 풍부하고 많은 유용한 조건의 최소 세트를 명시적으로 확실하게 지정할 수 있다. 또한, 주의할 점은, 새로운 조건들이 애플리케이션(300)에 추가될 수 있고(확장성) 이어서 새로운 환경설정을 정의하는 최종 사용자들에 의해 활용될 수 있다는 것이다. 새로운 스키마가 설치됨에 따라, 폴더를 개인화하는 새로운 성능이 가능하게 된다.
폴더(3510)는 본 발명의 일 양상에 따라 도출되거나 또는 능동형으로 분류될 수 있다. 액티브 폴더들은 관심있는 무언가가 폴더 내에 발생한 경우(예를 들어 이벤트들 - 추가, 삭제 또는 수정된 파일 문서) 사용자를 위해 액션을 취한다. 예를 들어, 화상이 디지털 카메라로부터 MyPictures라 불리우는 액티브 폴더로 다운로드될 수 있다. 그와 동시에 또는 그 이후 짧은 시간 내에, 액티브 폴더는 달력 애플리케이션과 상의하여 화상이 찍혀졌을 때 사용자가 뭘 했는지를 결정한 후, 적절한 제목으로 새로운 폴더를 생성하고(예를 들어, 고기잡이 여행) 화상들을 새로운 폴더로 이동시킨다. 전자 메일 컨텍스트에서, 전자 메일 애플리케이션은 메시지가 비용 보고서를 포함하는 때를 결정하고, 소정의 값보다 작은 경우 그 보고서를 승인된 비용 보고서 폴더로 이동시킬 수 있다. 액티브 폴더의 또 다른 예시적인 사용에 있어서, 음악이 액티브 폴더로 다운로드될 수 있으며, 그 후 예술 장르(예를 들어, 재즈, 클래식, 랩, 록...)을 결정하고 그 음악을 적절한 폴더로 이동시킨다.
도출된 폴더들은 환경설정을 사용하여 폴더로부터 특정 파일을 포함시킬건지 또는 제외시킬건지를 결정한다. 이외에도, 주의할 점은, 도출된 폴더들은 파일들에 대한 포인터들 또는 매핑을 제공하는 가상 폴더일 수 있다는 것이다. 가상 폴더들은 데이터를 수용하기 위한 실제 폴더와 같이 작용하나 폴더는 실제 물리적인 존재를 가지지 않는다. 도출된 폴더의 사용의 일례는, 지난 2주 동안 적어도 3번 사용자에 의해 들려진 재즈 음악 모두를 포함하도록 사용자가 폴더를 정의하는 상황을 포함한다. 도출된 폴더들은 특정 유형이나 소정의 예외를 갖는 모든 파일을 포함하도록 환경설정에 의해 정의될 수도 있다. 예를 들어, 폴더는 재즈 음악가 Miles Davis에 의한 모든 트랙을 포함하나, 특정 노래 트랙(예를 들어, 인간성 및 새로운 룸바)를 제외하도록 정의될 수 있다. 또한, 주의할 점은, 사용자가 파일들을 폴더들로 드래그 및 드롭하고, 폴더는 드롭된 파일이 정의된 유형인지 여부를 확인하도록 환경설정들이 정의될 수 있다는 것이다. 파일이 허가된 유형이면, 폴더에 추가될 수 있으나, 그렇지 않으면, 거절될 수 있거나(예를 들어, 폴더에 복사되지 않음) 또는 대안적으로 특정 파일에 대해 예외가 생성될 것인지 여부에 대해 사용자에게 촉구할 수 있다.
또한, 주의할 점은, 소정의 폴더들은 액티브 폴더들과 도출된 폴더들 모두의 특성을 나타낼 수 있다는 것이다. 따라서, 소정의 폴더들은 폴더 내에 어느 항목이 포함되는지를 지정하는 그들과 연관된 환경설정뿐만 아니라 소정의 이벤트들이 그러한 항목에 대해 발생하는 경우 취할 액션을 지정하는 환경설정을 가질 수 있다.
애플리케이션들은 시스템(100)의 실행 엔진을 사용하여 처리될 수 있다. 앞에서 개시된 바와 같이, 환경설정은 데이터로 저장되고 데이터 질의의 형태로 실행될 수 있다. 데이터 저장소(150)는 하나 이상의 표에 데이터를 저장할 수 있으며, 그 후, 환경설정 정보를 사용하여 질의될 수 있다. 종래에는, 폴더 내의 데이터의 현재 상태를 유지하는 것을 보장하기 위해 비교적 짧은 간격들로 연속적으로 질의들이 실행되어야 했기 때문에, 표의 데이터베이스에 대해 질의를 실행하는 것은 계산적으로 불가능했다. 이는 특히, 폴더 데이터를 갱신하기 위해 계속적으로 질의를 작동시키면서 프로세서가 다수의 프로그램을 효율적으로 실행할 수 없는 개인용 컴퓨터와 같은 경량형 시스템에서 불가능했다. 그러나 본 발명은, 데이터가 추가, 삭제 또는 수정되는 경우와 같이 이벤트들의 발생 시에 질의들을 실행함으로써 이러한 문제를 극복한다. 따라서, 프로세서는 질의를 계속적으로 실행하고 폴더 데이터의 현재 상태를 유지하여도 부담이 되지 않는다.
액티브 폴더들에 기초한 작업흐름형 활동(Workflow-like Activities based on Active Folders)
개인화(예를 들어 ECA 규칙들)는 작업흐름 또는 태스크 스케줄과는 구별된다. 작업흐름 또는 태스크 스케줄은 폴더 내의 항목들을 통해 표현될 수 있는 여러 단계의 작업 부분이다. 개인화는, 최종 사용자의 의미있는 이벤트(예를 들어 전자 메일 도달) 또는 시스템/애플리케이션 거동(예를 들어 사용자 컨텍스트에 기초하여 데스크톱 인터럽트를 제어함)의 처리를 자동화하기 위해 시스템/애플리케이션 차단점들에서 적용되는 환경설정을 최종 사용자가 지정할 수 있게 하는 개념이다. 개인화는, 그 논리가 소정의 차단점(예를 들어, 이벤트, 흐름 내의 포인트...)에 국부화되는 환경설정을 최종 사용자가 표현할 수 있게 하는 것에 관한 것이다. 단일 환경설정의 액션들로 인한 다수의 환경설정의 임의의 캐스케이드된(cascaded) 평가는 우발적인 것이며, 계획된 것이 아니다. 따라서, 개인화는 작은 형태의 작업흐름이 아니며, 오히려 작업흐름과 개인화는 완전히 상이한 것들이다. 이벤트를 처리하기 위한 환경설정의 흔히 있는 케스케이딩(cascading)은 작업흐름 내의 태스크/규칙들의 계획된 체인화와는 상이하다. 또한, 개인화는 전자 메일, 전화 호출, 데스크톱 인터럽트, 및 작업흐름 또는 태스크 스케줄이 수반되는지 여부에 상관없는 최종 사용자 이벤트들의 많은 다른 유형들에 적용될 수 있다. 개인화된 작업 흐름은, 개인화가 독립적이나 작업흐름과 상보적인 개념이라는 전제에 기초한다.
개인화는, 최종 사용자 의사결정이 관련되는 경우마다, 작업흐름 또는 태스크 스케줄에 적용될 수 있다. 태스크의 개인화, 작업흐름 개시의 개인화, 작업흐름 태스크의 개인화, 및 작업흐름 스케줄링의 개인화에서 작업흐름들의 개인화에 대한 다양한 기회가 존재한다. 태스크를 개인화하는 일례는, 사용자가 의사결정 논리를 지정하여, 개인의 직접 보고서에 의해 소정의 달러량의 단위를 자동적으로 승인하는 것과 같은 소정의 태스크의 처리를 자동적으로 할 수 있는 것일 수 있다. 작업흐름 개시는, 관심 이벤트(예를 들어 전화 호출, 전자 메일 도달...)에 기초하여 작업흐름을 오픈/개시할 지 여부를 결정하는 것을 다룬다. 추적될 스케줄과 상호작용하는 것 등의 적절한 성능으로 래핑(wraapping)함으로써 게획된 개인화가 잠재적으로 작업흐름 태스크로 변화될 수 있다. 즉, 개인화는 사용자 환경설정이 태스크의 해결을 완전히 결정하는 작업흐름 내의 계획된 태스크로서 사용될 수 있다. 최종적으로, 개인화는 작업흐름 스케줄링에 포함될 수 있다. 작업흐름에서 다음 단계들에 대한 선택이 존재하는 경우, 개인화가 사용되어 사용자가 그러한 결정에 대한 환경설정을 지정할 수 있게 한다.
상기 카테고리들중 많은 것을 포함하는 개인화된 작업흐름의 실제적인 예는 비용 보고서의 처리일 수 있다. 이 예에서, 전자 메일이 수신함에 도달하고, 전자 메일의 유형이 검출되고(예를 들어, 비용 보고서로 플래그된, 제목), 전자 메일 데이터가 스캔되고, 인보이스(invoice) 양이 소정의 달러보다 적으면 그 보고서는 승인된 폴더로 이동된다. 그 후, 전자 메일은 보고서가 승인된 상태인 것을 나타내면서 송신자에게 다시 송신된다. 이어서, 저널이 사용자에 의한 월별 리뷰를 위해 생성될 수 있고 승인된 전체량이 계산될 수 있다.
작업흐름의 개인화의 상기 카테고리 모두가 작업흐름의 값을 강화시키며, 그러한 이점의 응용가능성은 작업흐름에 독점적이지 않다. 그러한 이점들은 통신 처리, 라우팅 또는 개인화를 포함하나 이에 한정되지 않는 많은 다른 도메인들에 적용될 수 있으며, 그러한 도메인들은 작업흐름에 참여되지 않을 수 있다.
연대기 폴더들(Chronicle Folders)
본 발명의 일 양상에 따른 연대기들은, 사용자 또는 시스템의 사용자에 연관된 이력 및 컨텍스트 정보를 표현한다. 통지 시스템은 종종 이전의 액션에 기초하여 액션을 취할지 여부를 평가하는 것의 일부로서 사용될 수 있는 이력 데이터의 개념을 포함한다. 예를 들어, 사용자는 "MSFT의 배당이 그날 동안 새롭게 높이 올라가면 나에게 알려주시오"라고 말하는 환경설정을 셋업하기를 원할 수 있다. 이 경우, 시스템은 그날 동안 MSFT 배당의 최고 가격점을 유지할 수 있어야 하고 새로운 고점에 도달하는 경우 이러한 정보를 갱신할 수 있어야 한다.
본 발명의 일 양상에 따르면, 연대기는 데이터 저장소에 저장되고 (예를 들어, 운영 체제에 의해 제공되는) 사용자 인터페이스를 통해 사용자들에게 자유롭게 액세스될 수 있다. 따라서, 최종 사용자는 이러한 이력 데이터에 대해 제어할 수 있고; 다른 파일이 백업되는 방식으로 백업할 수 있고, 자신의 집 또는 사무실의 다른 컴퓨터와 동기시킬 수 있으며, 통상적인 파일 공유 메커니즘을 통해 공유하고, 액세스 허가 및 다른 보안 설정을 세팅하여 이러한 컨텍스트 정보를 정확하게 액세스할 수 있는 사람을 제어한다. 예를 들어, 사용자는 그의 작업 그룹에 있는 모든 사람이 MSFT 배당 가격에 대한 이력 정보를 볼 수 있도록 할 수 있으나, 그들이 책상에 있는지 또는 회의중인지 여부와 같은, 컨텍스트 정보는 제한하기를 원할 수 있다.
또한, 본 발명에 따른 시스템은 소정의 공통적인 거동들을, 사용자를 위해 취해진 모든 액션이 연대기에 저장되는 "감사(audit)" 연대기; 얼마나 많은 특정 종류의 이벤트 또는 액션이 보여졌는지를 시스템이 계수하는 "계수(count)" 연대기; 및/또는 가장 높은 값 및 가장 낮은 값이 소정의 시간 주기 동안 이력적으로 보여졌는지를 추적할 수 있는 "하이/로우 워터마크(high/low watermark)" 연대기를 생성할 수 있는 능력을 포함하는 "내장형" 연대기 생성/유지 논리로서 노출시킬 수 있다.
또한, 본 시스템은 이러한 연대기들이, 정보 에이전트 애플리케이션들에 대해 전혀 모르는 애플리케이션들에 의해 갱신되는 것을 가능케 할 수 있다. 많은 통지 플랫폼은 사용자 규칙들(본원에서는 환경설정으로도 불림)의 일반적인 처리동안 컨텍스크 정보가 갱신될 수 있게 할 수 있으나, 본 발명이 데이터 저장소에 저장된 스키마화된 데이터를 환경설정 처리 또는 규칙의 일부로서 활용하기 때문에, 시스템은 임의의 애플리케이션에 의해 생성된 컨텍스트 정보를 사용할 수 있다. 예를 들어, 사용자는 사용자 컴퓨터로 주식 시세를 실시간 스트리밍하는, NASDAQ에 의해 기록된 애플리케이션을 다운로드하고 작동시킬 수 있다. NASDAQ 애플리케이션은 사용자가 관심있는 심볼들 각각에 대한 파일을 생성하고 이들 파일들 내에 관련 정보를 저장한다. 본 발명의 일 양상에 따른 정보 에이전트 애플리케이션이 이러한 유형의 객관화된 컨텍스트 정보를 활용하도록 구축되기 때문에, 정보 에이전트 시스템은 사용자 규칙 또는 환경설정 처리동안 이러한 파일들을 연대기들로서 이용할 수 있다.
연대기는 액티브 폴더들과 함께 사용될 수도 있다. 개인화된 폴더 시스템은 특정 폴더들을 지켜보는 능력을 포함하기 때문에, 생성되고, 수정되고 그러한 폴더들로 이동되는 폴더 항목들은 특정 연대기 또는 연대기 세트에 대한 컨텍스트 갱신들로 취급될 수 있다. 이러한 방식으로, 사용자가 자기쪽에서 작동하는 임의의 프로그래머가 기입한 코드없이 연대기들을 유지하는 것이 가능하다. 오히려, 최종 사용자는 자신의 컨텍스트 정보를 최신으로 유지하기 위해 운영 체제의 기존 파일 조작처리 메커니즘을 간단히 사용할 수 있다.
따라서, 본 발명은, 소프트웨어, 펌웨어, 하드웨어 또는 그들의 임의의 결합을 생산하기 위해 표준 프로그래밍 및/또는 엔지니어링 기술을 사용하여 방법, 장치 또는 제조물로 구현될 수 있다. 본원에 사용된 "제조물(article of manufacture)"(또는 대안적으로 "컴퓨터 프로그램 제품")이라는 용어는 임의의 컴퓨터 판독가능한 장치, 캐리어 또는 매체들로부터 액세스가능한 컴퓨터 프로그램을 포함하도록 의도된다. 물론, 본 기술 분야의 당업자는 본 발명의 범주에 벗어나지 않고 이러한 구성으로부터 많은 수정이 이루어질 수 있다는 것을 인식할 것이다.
위에서 설명된 예시적인 시스템의 관점에서, 본 발명에 따라 구현될 수 있는 방법은 도 36 내지 도 41의 흐름도를 참조하면 보다 잘 이해될 것이다. 설명을 간단히 하기 위해, 방법은 일련의 블록들로 도시되고 설명되었지만, 본 발명은, 소정의 블록들이 본 발명에 따라 서로 다른 순서로 발생하거나 및/또는 본원에 도시되고 설명된 것과는 다른 블록들과 동시에 발생할 수 있기 때문에 블록들의 순서에 의해 한정되지 않는다는 것을 인식하고 이해할 것이다. 더욱이, 본 발명에 따라 방법을 구현하기 위해 예시된 모든 블록들이 필요한 것은 아니다.
도 36으로 돌아가면, 환경설정을 사용하는 방법(3600)이 본 발명의 일 양상에 따라 예시되어 있다. 3610에서, 환경설정은 개발자 스키마(예를 들어, XML 스키마)에 기초하여 최종 사용자에 의해 지정되고 예를 들어 데이터 저장소 내의 표에 저장된다. 그 후, 3620에서, 하나 이상의 이벤트들이 수신되거나 또는 검출된다. 그 후, 환경설정은 3630에서 데이터 표를 질의하기 위해 질의 언어(예를 들어, SQL)을 사용하여 실행되거나 평가된다. 3640에서, 결과표가 생성되거나 또는 유효 조건부 유효 환경설정으로 채워질 수 있다. 마지막으로, 3650에서, 각각의 액션들이 결과표의 결과들에 기초하여 실행될 수 있다.
도 37로 돌아가면, 애플리케이션을 설치하는 방법(3700)이 본 발명의 일 양상에 따라 예시되어 있다. 3710에서, 기본표들이 설치된 애플리케이션을 실행할 플랫폼 또는 시스템과 연관된 데이터 저장소(예를 들어 정보 에이전트 시스템 데이터 저장소(150)) 내에 셋업된다. 이어서, 기본표들은 설치된 애플리케이션에 대한 새로운 표 및 데이터베이스를 엄격하게 생성하기 보다는 3720에서 애플리케이션 데이터로 갱신된다. 3730에서, 애플리케이션 절차들은 예를 들어 애플리케이션 절차들을 위해 지정된 기본표 내의 데이터로서 저장된다. 실행하기 위해, 텍스트의 애플리케이션 절차 스트링들이 데이터베이스에서 제거되고 일 양상에 따라 실시간으로 실행된다.
도 38은 본 발명의 일 양상에 따라 애플리케이션을 확장하는 방법(3800)을 도시한다. 3810에서, EDF가 개발자로부터 수신된다. EDFs는 하나의 애플리케이션 내의 환경설정 클래스들이 다른 애플리케이션들에 정의된 조건, 액션 및 이벤트들을 참조할 수 있게 하는 것과 연관된 정보를 포함한다. 그 후, 3820에서 기능 바인딩을이 인스턴스 레지스트리와 같은 중심 위치에 등록된다. 3830에서, 확장 컴포넌트에 의해 바인딩 정보가 검색되거나 수신된다. 이어서, 3840에서 바인딩에 수취 논리(acceptance logic)가 적용될 수 있다. EDF가 설치되는 경우 바인딩이 이용가능하게 되나, 본 발명의 일 양상에 따르면 애플리케이션에 자동적으로 적용되지 않는다. 오히려, EDF가 수취되는지를 결정하는데 수취 논리가 적용된다. 무엇보다도, 수취 논리는 바인딩 인증성, 인가 및/또는 수취될지 여부를 결정하기 위해 신뢰된 소스에 의한 인증을 조사한다. 3850에서, 바인딩을 수취할 것인지 여부에 대해 애플리케이션에 의해 결정된다. "아니오"라면, 그 후 프로세스는 간단히 바인딩없이 종료한다. "예"라면, 그 후 3860에서, 후보 기능 바인딩이 제1 애플리케이션으로부터 제2 애플리케이션로 연결된다.
도 39는 본 발명의 일 양상에 따라 애플리케이션들 설치제거하는 방법(3900)을 도시하는 흐름도이다. 3910에서, 설치제거되는 애플리케이션은 중앙 저장 위치에서 모든 등록을 제거한다. 중앙 저장 위치는 정의 및 바인딩 레지스트리를 갖는 인스턴스 레지스트리일 수 있다. 그 후 3920에서 애플리케이션 컴포넌트들이 제거된다. 그 후, (예를 들어, 확장 컴포넌트에 의해) 의존적인 애플리케이션에게 설치제거된 애플리케이션이 통보될 수 있다. 또한, 상술한 바와 같이, 방법(3900)의 블록들은 임의의 순서일 수 있다. 따라서, 본 발명의 다른 양상은 임의의 설치제거 또는 제거 프로세스 이전에 의존적인 애플리케이션이 통보받는 것을 포함한다.
도 40은 본 발명의 일 양상에 따라 애플리케이션들을 가로질러 프로그램 상수들을 확장하는 방법을 예시하는 도면이다. 4010에서 상수가 수신된다. 4020에서 애플리케이션 도메인들에 걸쳐 검색함으로써 상수의 값이 결정된다. 예를 들어, 상수 MyManager이 수신되면, 그 후 방법은 전자 메일 애플리케이션을 검색하고 MyManager의 값을 결정할 수 있다.
도 41은 본 발명의 일 양상에 따라 컴퓨터 기능을 개인화하는 방법(4100)을 도시한다. 4110에서, 최종 사용자는 제공된 스키마에 따라 환경설정을 기입한다. 환경설정은 임의의 형태일 수 있으나, 본 발명의 일 양상에 따르면, 부울린 연산자들에 의해 분리된 다수의 IF-THEN문을 포함한다. 애플리케이션 개발자에 의해 강제할 스키마가 제공되어 최종 사용자 프로그래밍이 간단하게 된다. 4120에서, 환경설정은 이벤트 발생시 실행된다. 이벤트는 폴더 데이터 내의 변경 또는 주식 가격의 변경을 포함하나 이에 한정되지 않는 발생하는 임의의 것일 수 있다. 데이터 저장소 컴포넌트에 데이터를 질의하여 활용함으로써 환경설정의 실행 또는 평가가 이루어질 수 있다. 4120에서, 액션은 조건부 유효 환경설정에 기초하여 취해진다.
본 발명의 다양한 양상들에 대한 컨텍스트를 제공하기 위해, 도 42 및 43뿐만 아니라 다음의 설명은 본 발명의 다양한 양상들이 구현될 수 있는 적절한 컴퓨팅 환경의 간단한 일반적인 설명을 제공하고자 의도된다. 본 발명은, 컴퓨터, 및/또는 컴퓨터들 상에서 작동하는 컴퓨터 프로그램의 컴퓨터 실행가능한 명령어들의 일반적인 문맥으로 상술되었으나, 본 기술분야의 당업자는 본 발명이 다른 프로그램 모듈들과 결합하여 구현될 수 있다는 것을 인식할 것이다. 일반적으로 프로그램 모듈은 특정 태스크들을 수행하거나 및/또는 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 컴포넌트, 데이터 구조 등을 포함한다. 더욱이, 본 기술 분야의 당업자는, 진보적인 방법들이, 단일 프로세서 또는 다중프로세서 컴퓨터 시스템, 미니 컴퓨팅 장치, 메인프레임 컴퓨터, 뿐만 아니라 개인용 컴퓨터, 핸드헬드 컴퓨터 장치, 마이크로프로세서 기반 또는 프로그램가능 소비자 전자장치 등을 포함하여, 다른 컴퓨터 시스템 구성으로 구현될 수 있다는 것을 이해할 것이다. 본 발명의 예시된 양상들은, 통신 네트워크를 통해 연결된 원격 프로세싱 장치에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 구현될 수도 있다. 그러나, 본 발명의 모든 양상이 아닌 소정의 양상이 독립형 컴퓨터 상에서 구현될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치에 위치할 수 있다.
도 42를 참조하면, 본 발명의 다양한 양상들을 구현하기 위한 예시적인 환경(4210)은 컴퓨터(4212)를 포함한다. 컴퓨터(4212)는 프로세싱 유닛(4214), 시스템 메모리(4216), 및 시스템 버스(4218)를 포함한다. 시스템 버스(4218)는 시스템 메모리(4216)를 포함하나 이에 한정되지 않는 시스템 컴포넌트들을 프로세싱 유닛(4214)에 연결한다. 프로세싱 유닛(4214)은 다양한 이용가능한 프로세서들중 임의의 것일 수 있다. 듀얼 마이크로프로세서 및 다른 다중프로세서 아키텍쳐들도 프로세싱 유닛(4214)으로 사용될 수 있다.
시스템 버스(4218)는 메모리 버스 또는 메모리 컨트롤러, 주변장치 버스 또는 외부 버스, 및/또는 11비트 버스, ISA(Industrial Standard Architecture), MSA(Micro-channel Architecture), EISA(Extended ISA), IDE(Intelligent Drive Electronics), VLB(VESA local bus), PCI(Peripheral Component Interconnect), USB(Universal Serial Bus), AGP(Advanced Graphics Port), PCMCIA(Personal Computer Memory Card International Association) 버스 및 SCSI(Small Computer Systems Interface)를 포함하나 이에 한정되지 않는 임의의 다양한 이용가능한 버스 아키텍쳐를 사용하는 로컬 버스를 포함하는 몇몇 유형들의 버스 구조(들)중 임의의 것일 수 있다.
시스템 메모리(4216)는 휘발성 메모리(4220) 및 비휘발성 메모리(4222)를 포함한다. 시동 동안과 같이 컴퓨터(4212) 내의 구성요소들 간에 정보를 전달하기 위한 기본 루틴들을 포함하는 BIOS(basic input/output system)가 비휘발성 메모리(4222)에 저장된다. 한정이 아니라 예로서, 비휘발성 메모리(4222)는 ROM(Read Only Memory), PROM(programmable ROM), EPROM(Electrically programmable ROM), EEPROM(electrically erasable ROM) 또는 플래시 메모리를 포함할 수 있다. 휘발성 메모리(4220)는 외부 캐시 메모리 역할을 하는 RAM(random access memory)을 포함한다. 한정이 아니라 예로서, RAM은 SRAM(synchronous RAM), DRAM(dynamic RAM), SDRAM(synchronous DRAM), DDR SDRAM(double data rate SDRAM), ESDRAM(enhanced SDRAM), SLDRAM(Synchlink DRAM) 및 DRRAM(direct Rambus RAM)과 같은 많은 유형으로 이용가능하다.
컴퓨터(4212)는 착탈식/비착탈식, 휘발성/비휘발성 컴퓨터 저장 매체들을 포함할 수도 있다. 도 42는 예를 들어 디스크 저장장치(4224)를 예시한다. 디스크 저장장치(4224)는 자기 디스크 드라이브, 플로피 디스크 드라이브, 테이프 드라이브, 재즈 드라이브(Jaz drive), 집 드라이브(Zip drive), LS-100 드라이브, 플래시 메모리 카드 또는 메모리 스틱을 포함하나 이에 한정되지 않는다. 이외에도, 디스크 저장장치(4224)는, CD-ROM(compact disk ROM) 장치, CD-R 드라이브(CD recordable drive), CD-RW 드라이브(CD rewritable drive) 또는 DVD-ROM(digital versatile disk ROM) 드라이브와 같은 광학 디스크 드라이브를 포함하나 이에 한정되지 않는 다른 저장 매체들과 개별적으로 또는 그들과 결합하는 저장 매체를 포함할 수 있다. 디스크 저장 장치(4224)들을 시스템 버스(4218)에 용이하게 접속하기 위해, 인터페이스(4226)와 같은 착탈식 또는 비착탈식 인터페이스가 통상적으로 사용된다.
도 42는 사용자와, 적절한 운영 환경(4210)으로 기술된 기본 컴퓨터 자원들 간의 중계자 역할을 하는 소프트웨어를 설명한다는 것을 이해할 것이다. 그러한 소프트웨어는 운영 체제(4228)를 포함한다. 디스크 저장장치(4224) 상에 저장될 수 있는 운영 체제(4228)는 컴퓨터 시스템(4212)의 자원들을 제어 및 할당하는 역할을 한다. 시스템 애플리케이션(4230)은 시스템 메모리(4216) 또는 디스크 저장장치(4224) 상에 저장된 프로그램 데이터(4234) 및 프로그램 모듈(4332)을 통해 운영 체제(4228)에 의한 자원 관리를 이용한다. 본 발명은 다양한 운영 체제 또는 운영 체제들의 조합으로 구현될 수 있다는 것을 이해할 것이다.
사용자는 입력 장치(들)(4236)을 통해 컴퓨터(4212)에 커맨드들 또는 정보를 입력한다. 입력 장치들(4236)은, 마우스, 트랙볼, 스틸러스, 터치 패드, 키보드, 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너, TV 튜너 카드, 디지털 카메라, 디지털 비디오 카메라, 웹 카메라 등과 같은 포인팅 장치를 포함하나 이에 한정되지 않는다. 이러한 입력 장치 및 다른 입력 장치들은 인터페이스 포트(들)(4238)를 거쳐 시스템 버스(4218)을 통해 프로세싱 유닛(4214)에 접속한다. 인터페이스 포트(들)(4238)은 예를 들어 직렬 포트, 병렬 포트, 게임 포트, 및 USB(universal serial bus)를 포함한다. 출력 장치(들)(4240)은 입력 장치(들)(4236)과 동일한 유형의 포트들중 일부를 사용한다. 따라서, 예를 들어, USB 포트가 컴퓨터(4212)에 입력을 제공하고, 컴퓨터(4212)로부터 출력 장치(4240)로 정보를 출력하는데 사용될 수 있다. 특별한 어댑터를 필요로 하는, 다른 출력 장치들(4240)중에서, 모니터, 스피커 및 프린터와 같은 소정의 출력 장치(4240)가 존재한다는 것을 예시하기 위해 출력 어댑터(4242)가 제공된다. 출력 어댑터(4242)는, 한정이 아니라 예로서, 출력 장치(4240)와 시스템 버스(4218) 간의 접속 수단을 제공하는 비디오 및 사운드 카드들 포함한다. 주의할 점은, 다른 장치들 및/또는 장치들의 시스템들이 원격 컴퓨터(들)(4244)과 같이 입력 및 출력 기능 모두를 제공한다는 것이다.
컴퓨터(4212)는 원격 컴퓨터(들)(4244)과 같은 하나 이상의 원격 컴퓨터들에 대해 논리적 접속을 사용하는 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(들)(4244)는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 워크스테이션, 마이크로프로세서 기반 어플라이언스, 피어 장치 또는 다른 일반적인 네트워크 노드 등일 수 있고 컴퓨터(4212)에 대해 설명된 구성요소들중 많은 부분 또는 전부를 통상적으로 포함한다. 간략히 하기 위해, 단지 메모리 저장 장치(4246)만이 원격 컴퓨터(들)(4244)와 함께 예시되어 있다. 원격 컴퓨터(들)(4244)은 네트워크 인터페이스(4248)를 통해 컴퓨터(4212)에 논리적으로 접속되고 그 후 통신 접속(4250)을 통해 물리적으로 접속된다. 네트워크 인터페이스(4248)는, LAN(local area network) 및 WAN(wide area network)와 같은 통신 네트워크들을 포함한다. LAN 기술들은 FDDI(Fiber Distributed Data Interface), CDDI(Copper Distributed Data Interface), 이더넷/IEEE 1102.3, 토큰 링/IEEE 1102.5 등을 포함한다. WAN 기술은, 점-대-점 링크, ISDN(Integrated Services Digital Networks) 및 그의 변형과 같은 회선 전환 네트워크들, 패킷 전환 네트워크 및 DSL(Digital Subscriber Lines)을 포함하나, 이에 한정되지 않는다.
통신 접속(들)(4250)은 통신 인터페이스(4248)를 버스(4218)에 접속시키는데 사용되는 하드웨어/소프트웨어와 관련있다. 명확한 예시를 위해 컴퓨터(4212) 내에 통신 접속(4250)이 도시되어 있으나, 컴퓨터(4212) 외부일 수도 있다. 네트워크 인터페이스(4248)로의 접속을 위해 필요한 하드웨어/소프트웨어는, 단지 예시적인 목적을 위해, 정규 전화급 모뎀, 케이블 모뎀과 DSL 모뎀을 포함하는 모뎀, ISDN 어댑터 및 이더넷 카드들과 같은 내부형 및 외부형 기술들을 포함할 수 있으나 이에 한정되지 않는다.
도 43은, 본 발명이 상호작용하는 샘플 컴퓨팅 환경(4300)의 개략적인 블록도이다. 시스템(4300)은 하나 이상의 클라이언트(들)(4310)을 포함한다. 클라이언트(들)(4310)은 하드웨어 및/또는 소프트웨어(예를 들어 쓰레드, 프로세스, 컴퓨팅 장치들)일 수 있다. 시스템(4300)은 하나 이상의 서버(들)(4330)을 포함할 수도 있다. 서버(들)(4330)은 하드웨어 및/또는 소프트웨어(예를 들어, 쓰레드, 프로세스, 컴퓨팅 장치들)일 수도 있다. 서버(들)(4330)은 예를 들어 본 발명을 사용함으로써 변환을 수행하기 위해 쓰레드들을 수용할 수 있다. 클라이언트(4310)와 서버(4330) 간의 한가지 가능한 통신은, 2개 이상의 컴퓨터 프로세스들 간에 전송되도록 구성되는 데이터 패킷의 형태일 수 있다. 시스템(4300)은 클라이언트(들)(4310)과 서버(들)(4330) 사이의 통신을 용이하게 하기 위해 사용될 수 있는 통신 프레임워크(4350)를 포함한다. 클라이언트(들)(4310)은 클라이언트(들)(4310)에 국부적 정보를 저장하는데 사용될 수 있는 하나 이상의 클라이언트 데이터 저장소(들)(4360)에 동작가능하게 접속된다. 유사하게, 서버(들)(4330)은 서버들(4330)에 국부적인 정보를 저장하는데 사용될 수 있는 하나 이상의 서버 데이터 저장소(들)(4340)에 동작가능하게 접속된다.
상술한 것은 본 발명의 일례들을 포함한다. 물론, 본 발명을 기술하기 위해 컴포넌트들 또는 방법들의 모든 인식가능한 조합을 기술하는 것이 불가능하나, 본 기술 분야의 당업자는 본 발명의 많은 추가 조합 및 변환이 가능하다는 것을 인식할 것이다. 따라서, 본 발명은 첨부된 청구범위의 사상 및 범위 내에 속하는 모든 이러한 변경, 수정 및 변동을 포함하도록 의도된다. 또한, "포함한다(include)"라는 용어가 상세한 설명 또는 청구범위에 사용되는 결과로, 그러한 용어는, 청구범위에 접속사로 사용되는 경우 용어 "포함하는(comprising)"이 해석되는 바와 같이 "포함하는(comprising)" 용어와 유사한 방식으로 포괄적인 것으로 의도된다.
첨부
<EventClasses>
<EventClass>
<EventClassName>EMailEvents</EventClassName>
<Schema>
<Field>
<FieldName>Sender</FieldName>
<FieldType>nvachar(255)</FieldType>
<FieldTypeMods>NOT NULL</FieldTypeMods>
</Field>
<Field>
<FieldName>Receiver</FieldName>
<FieldType>nvachar(255)</FieldType>
<FieldTypeMods>NOT NULL</FieldTypeMods>
</Field>
<Field>
<FieldName>Priority</FieldName>
<FieldType>int</FieldType>
<FieldTypeMods>NOT NULL</FieldTypeMods>
</Field>
<Field>
<FieldName>Subject</FieldName>
<FieldType>nvachar(255)</FieldType>
<FieldTypeMods>NOT NULL</FieldTypeMods>
</Field>
<Field>
<FieldName>MessageText</FieldName>
<FieldType>nvachar(255)</FieldType>
<FieldTypeMods>NOT NULL</FieldTypeMods>
</Field>
<Schema>
</EventClass>
<EventClass>
<EventClassName>StockEvents</EventClassName>
<Schema>
<Field>
<FieldName>Symbol</FieldName>
<FieldType>nvachar(10)</FieldType>
<FieldTypeMods>NOT NULL</FieldTypeMods>
</Field>
<Field>
<FieldName>Price</FieldName>
<FieldType>float</FieldType>
<FieldTypeMods>NOT NULL</FieldTypeMods>
</Field>
<Field>
<FieldName>Time</FieldName>
<FieldType>Datetime</FieldType>
<FieldTypeMods>NOT NULL</FieldTypeMods>
</Field>
<Schema>
</EventClass>
<EventClasses>
<PreferenceClasses>
<PreferenceClass>
<PreferenceClassName>EmailPreference1</PreferenceClassName>
<EventClassName>EmailEvents</EventClassName>
<ConditionClasses>
<ConditionClass>
<Name>MailFrom</Name> <!-- Condtion Class id = 1 -->
Mail is From @Sender
</CondtionClass>
<ConditionClass>
<Name>MailContains</Name> <!-- Condtion Class id = 2 -->
Mail Contains @KeyWord
</CondtionClass>
</CondtionClasses>
<ActionClasses>
<ActionClass>
<Name>PopToast</Name>
Pop A Toast
</ActionClass>
</ActionClasses>
</PreferenceClass>
<PreferenceClass>
<PreferenceClassName>EmailPreference2</PreferenceClassName>
<EventClassName>EmailEvents</EventClassName>
<ConditionClasses>
<ConditionClass>
<Name>MailPriority</Name> <!-- Condtion Class id = 3 -->
Priority > @Priority
</CondtionClass>
<ConditionClass>
<Name>MailFrom</Name> <!-- Condtion Class id = 4 -->
Mail is From @Sender
</CondtionClass>
</CondtionClasses>
<ActionClasses>
<ActionClass>
<Name>MoveToFolder</Name>
MoveToFolder (@TargetFolder) <
</ActionClass>
</ActionClasses>
</PreferenceClass>
<PreferenceClass>
<PreferenceClassName>StockPreference</PreferenceClassName>
<EventClassName>StockEvents</EventClassName>
<ConditionClasses>
<ConditionClass>
<Name>StockSymbol</Name> <!-- Condtion Class id = 5 -->
Symbol = @Ticker
</CondtionClass>
<ConditionClass>
<Name>TargetPrice</Name> <!-- Condtion Class id = 6 -->
Price > @TargetPrice
</CondtionClass>
</CondtionClasses>
<ActionClasses>
<ActionClass>
<Name>SendCellPhoneMsg</Name>
Send a message to cell phone of @subscriberId
</ActionClass>
</ActionClasses>
</PreferenceClass>
</PreferenceClasses>

Claims (24)

  1. 애플리케이션 환경설정(preference) 클래스들을 확장하는 시스템으로서,
    인스턴스 레지스트리 컴포넌트(instance registry component);
    상기 레지스트리 컴포넌트에 등록되는 하나 이상의 기능들을 포함하는 제1 애플리케이션; 및
    제2 애플리케이션이 상기 제1 애플리케이션의 상기 기능들을 사용할 수 있도록, 상기 인스턴스 레지스트리로부터 후보 기능들을 판독하고 제2 애플리케이션과 제1 애플리케이션 간에 바인딩(binding)들을 생성하는 확장 컴포넌트
    를 포함하는 시스템.
  2. 제1항에 있어서, 상기 인스턴스 레지스트리 컴포넌트는 기능 정의들을 저장하기 위한 정의 레지스트리 및 바인딩 데이터를 저장하기 위한 바인딩 레지스트리를 포함하는 시스템.
  3. 제1항에 있어서, 상기 기능들은 조건들을 제공하는 시스템.
  4. 제1항에 있어서, 상기 기능들은 이벤트들을 제공하는 시스템.
  5. 제1항에 있어서, 상기 기능들은 접근자(accessor)들을 제공하는 시스템.
  6. 제1항에 있어서, 후보 기능들은 특정 애플리케이션들에 결합하기 위해서만 이용가능한 시스템.
  7. 제2항에 있어서, 상기 바인딩 레지스트리는 EDF(extension data file)로부터 기능 바인딩 정보를 수신하는 시스템.
  8. 제1항에 있어서, 상기 바인딩은 상기 기능을 제공하는 애플리케이션의 제거시 파괴되는 시스템.
  9. 조건 상수(condition constant)들을 확장하기 위한 시스템으로서,
    프로그램 상수(programmatic constant)들을 수신하는 입력 컴포넌트; 및
    다수의 도메인들에 걸쳐 저장된 데이터로부터 상기 상수 값을 결정하기 위한 액세서리 컴포넌트
    를 포함하는 시스템.
  10. 제9항에 있어서, 상기 상수는 1차 상수인 시스템.
  11. 제9항에 있어서, 상기 상수는 N차 상수인 시스템.
  12. 애플리케이션 환경설정 클래스 기능을 확장하기 위한 방법으로서,
    후보 기능 바인딩들에 대한 정보를 포함하는 EDF를 수신하는 단계;
    중앙 데이터 저장소에 하나 이상의 기능 바인딩들을 등록하는 단계; 및
    중앙 데이터 저장소에 위치한 바인딩 기능 정보를 활용하여 제1 애플리케이션의 기능을 제2 애플리케이션에 결합시키는 단계
    를 포함하는 확장 방법.
  13. 제12항에 있어서, 상기 제2 애플리케이션이 상기 바인딩을 수취할 것인지 여부를 결정하는 수취 논리를 적용하는 단계를 더 포함하는 확장 방법.
  14. 제12항의 방법을 수행하기 위한 컴퓨터 실행가능한 명령들을 저장하고 있는 컴퓨터 판독가능한 매체.
  15. 애플리케이션을 설치제거하는 방법으로서,
    중앙 저장 위치로부터 모든 애플리케이션 등록을 제거하는 단계;
    프로그램 컴포넌트들을 제거하는 단계; 및
    의존적인 애플리케이션들에게 통보하는 단계
    를 포함하는 설치제거 방법.
  16. 제15항에 있어서, 상기 중앙 저장 위치는 인스턴스 레지스트리인 설치제거 방법.
  17. 제16항에 있어서, 상기 인스턴스 레지스트리는 정의 레지스트리 및 바인딩 레지스트리를 포함하는 설치제거 방법.
  18. 제17항에 있어서, 등록들을 제거하는 단계는 상기 정의 레지스트리 및 상기 바인딩 레지스트리의 등록들을 제거하는 단계를 포함하는 설치제거 방법.
  19. 제15항에 있어서, 상기 의존적인 애플리케이션들에게 통보하는 단계는 의존적인 애플리케이션들이 그들의 의존성을 NotAvailable 상태로 두도록 하는 설치제거 방법.
  20. 제15항의 방법을 수행하기 위한 컴퓨터 실행가능한 명령들을 저장하고 있는 컴퓨터 판독가능한 매체.
  21. 프로그램 상수들을 확장하기 위한 방법으로서,
    프로그램 상수를 수신하는 단계; 및
    애플리케이션 도메인들에 걸쳐 검색함으로써 상기 상수값을 결정하는 단계
    를 포함하는 확장 방법.
  22. 제21항에 있어서, 상기 상수는 1차 상수인 확장 방법.
  23. 제21항에 있어서, 상기 상수는 N차 상수인 확장 방법.
  24. 제21항의 방법을 수행하기 위한 컴퓨터 실행가능한 명령들을 저장하고 있는 컴퓨터 판독가능한 매체.
KR1020057012337A 2003-10-24 2004-07-27 애플리케이션 환경설정 클래스들을 확장하기 위한 시스템및 방법 KR101231461B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/693,717 2003-10-24
US10/693,717 US7137099B2 (en) 2003-10-24 2003-10-24 System and method for extending application preferences classes
PCT/US2004/024296 WO2005045668A1 (en) 2003-10-24 2004-07-27 System and method for extending application preference classes

Publications (2)

Publication Number Publication Date
KR20060114625A true KR20060114625A (ko) 2006-11-07
KR101231461B1 KR101231461B1 (ko) 2013-02-07

Family

ID=34522464

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057012337A KR101231461B1 (ko) 2003-10-24 2004-07-27 애플리케이션 환경설정 클래스들을 확장하기 위한 시스템및 방법

Country Status (6)

Country Link
US (1) US7137099B2 (ko)
EP (1) EP1676199A4 (ko)
JP (1) JP5189768B2 (ko)
KR (1) KR101231461B1 (ko)
CN (1) CN1745364B (ko)
WO (1) WO2005045668A1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100695009B1 (ko) * 2005-12-01 2007-03-14 한국전자통신연구원 소프트웨어 기반 프리필터링을 이용한 스트림 데이터 처리시스템 및 그 방법
WO2013115460A1 (ko) * 2012-02-01 2013-08-08 에스케이플래닛 주식회사 오브젝트 관리 시스템 및 그 방법
KR20130100828A (ko) * 2012-02-02 2013-09-12 에스케이플래닛 주식회사 개인 오브젝트 관리 시스템 및 그 방법
KR20220062992A (ko) * 2020-11-09 2022-05-17 (주)미소정보기술 도메인 특화된 언어 규칙 생성이 가능한 텍스트 데이터 분석 방법 및 장치
KR20220062991A (ko) * 2020-11-09 2022-05-17 (주)미소정보기술 의도추론 순서 조정이 가능한 텍스트 데이터 분석 방법 및 장치

Families Citing this family (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6714967B1 (en) * 1999-07-30 2004-03-30 Microsoft Corporation Integration of a computer-based message priority system with mobile electronic devices
US7698276B2 (en) * 2002-06-26 2010-04-13 Microsoft Corporation Framework for providing a subscription based notification system
US20040002958A1 (en) 2002-06-26 2004-01-01 Praveen Seshadri System and method for providing notification(s)
US7840933B2 (en) * 2003-08-06 2010-11-23 International Business Machines Corporation Software application management for distributing resources and resource modeling
US7669177B2 (en) * 2003-10-24 2010-02-23 Microsoft Corporation System and method for preference application installation and execution
US7756617B1 (en) * 2004-01-15 2010-07-13 David LeBaron Morgan Vehicular monitoring system
US7698383B2 (en) * 2004-02-27 2010-04-13 Research In Motion Limited System and method for building component applications using metadata defined mapping between message and data domains
US7668824B2 (en) * 2004-03-01 2010-02-23 Denso Corporation Interface device, inferring system, and visual expression method
US8190999B2 (en) * 2004-05-20 2012-05-29 International Business Machines Corporation System and method for in-context, topic-oriented instant messaging
US9626173B1 (en) * 2004-06-08 2017-04-18 Sap Se Non specification supported application deployment descriptors and web application deployment descriptors
US7395244B1 (en) * 2004-06-23 2008-07-01 Symantec Corporation Criticality classification system and method
US7774326B2 (en) * 2004-06-25 2010-08-10 Apple Inc. Methods and systems for managing data
US7730012B2 (en) 2004-06-25 2010-06-01 Apple Inc. Methods and systems for managing data
US7437358B2 (en) 2004-06-25 2008-10-14 Apple Inc. Methods and systems for managing data
US8117073B1 (en) 2004-09-17 2012-02-14 Rearden Commerce, Inc. Method and system for delegation of travel arrangements by a temporary agent
US7644266B2 (en) * 2004-09-23 2010-01-05 International Business Machines Corporation Apparatus, system, and method for message level security
US7607006B2 (en) * 2004-09-23 2009-10-20 International Business Machines Corporation Method for asymmetric security
US7925540B1 (en) 2004-10-15 2011-04-12 Rearden Commerce, Inc. Method and system for an automated trip planner
DE102004053597B4 (de) * 2004-11-05 2008-05-29 Infineon Technologies Ag Verfahren zum automatischen Erzeugen und/oder Steuern einer Telekommunikations-Konferenz mit einer Vielzahl von Teilnehmern, Telekommunikations-Konferenz-Endgerät und Telekommunikations-Konferenz-Servereinrichtung
US7970666B1 (en) 2004-12-30 2011-06-28 Rearden Commerce, Inc. Aggregate collection of travel data
US8090736B1 (en) * 2004-12-30 2012-01-03 Google Inc. Enhancing search results using conceptual document relationships
US20060184936A1 (en) * 2005-02-11 2006-08-17 Timothy Abels System and method using virtual machines for decoupling software from management and control systems
JP4833568B2 (ja) * 2005-03-15 2011-12-07 株式会社リコー 情報処理装置、画像形成装置、起動プログラムおよび記憶媒体
JP2006285522A (ja) * 2005-03-31 2006-10-19 Ntt Docomo Inc タスク選択支援装置、及び、タスク選択支援方法
JP2006338311A (ja) * 2005-06-01 2006-12-14 Dainippon Printing Co Ltd 複数のアプリケーションを搭載したデバイスを処理するコンピュータシステム、デバイスおよびコンピュータプログラム
US7428521B2 (en) * 2005-06-29 2008-09-23 Microsoft Corporation Precomputation of context-sensitive policies for automated inquiry and action under uncertainty
JP4787708B2 (ja) * 2005-10-13 2011-10-05 Necカシオモバイルコミュニケーションズ株式会社 通信端末、受信報知方法、及びプログラム
US7738887B2 (en) * 2005-10-31 2010-06-15 Microsoft Corporation Voice instant messaging between mobile and computing devices
US7788529B2 (en) * 2005-12-08 2010-08-31 International Business Machines Corporation Method for safely interrupting blocked work in a server
US20070157105A1 (en) * 2006-01-04 2007-07-05 Stephen Owens Network user database for a sidebar
US7861233B2 (en) * 2006-01-25 2010-12-28 Microsoft Corporation Transparent context switching for software code
US8141037B2 (en) * 2006-01-25 2012-03-20 Microsoft Corporation Transparent context switching for software code
JP2007287066A (ja) * 2006-04-20 2007-11-01 Konica Minolta Business Technologies Inc 画像処理装置、同装置におけるアプリケーションのインストール方法、及びアプリケーションのインストール処理プログラム
JP2008003718A (ja) * 2006-06-20 2008-01-10 Toshiba Corp データ管理装置、データ管理プログラム及びデータ管理方法
US7941374B2 (en) 2006-06-30 2011-05-10 Rearden Commerce, Inc. System and method for changing a personal profile or context during a transaction
CN101188623B (zh) * 2006-11-20 2011-02-02 国际商业机器公司 用于动态绑定门户组件的方法和系统
DE102007029133A1 (de) * 2007-03-20 2008-09-25 Ludwig-Maximilians-Universität Verfahren zum rechnergestützten Ermitteln der Abhängigkeiten einer Vielzahl von Modulen eines technischen Systems, insbesondere eines Softwaresystems
US8627211B2 (en) 2007-03-30 2014-01-07 Uranus International Limited Method, apparatus, system, medium, and signals for supporting pointer display in a multiple-party communication
US8060887B2 (en) 2007-03-30 2011-11-15 Uranus International Limited Method, apparatus, system, and medium for supporting multiple-party communications
US20080237337A1 (en) * 2007-03-30 2008-10-02 Motorola, Inc. Stakeholder certificates
US7539796B2 (en) * 2007-03-30 2009-05-26 Motorola, Inc. Configuration management of an electronic device wherein a new configuration of the electronic device is selected based on attributes of an application
US7765266B2 (en) 2007-03-30 2010-07-27 Uranus International Limited Method, apparatus, system, medium, and signals for publishing content created during a communication
US8702505B2 (en) 2007-03-30 2014-04-22 Uranus International Limited Method, apparatus, system, medium, and signals for supporting game piece movement in a multiple-party communication
US20080244470A1 (en) * 2007-03-30 2008-10-02 Motorola, Inc. Theme records defining desired device characteristics and method of sharing
US7765261B2 (en) * 2007-03-30 2010-07-27 Uranus International Limited Method, apparatus, system, medium and signals for supporting a multiple-party communication on a plurality of computer servers
US7950046B2 (en) 2007-03-30 2011-05-24 Uranus International Limited Method, apparatus, system, medium, and signals for intercepting a multiple-party communication
US7912804B1 (en) 2007-04-24 2011-03-22 Hewlett-Packard Development Company, L.P. Change management in a distributed system based on triggered policy rules
US9092380B1 (en) * 2007-10-11 2015-07-28 Norberto Menendez System and method of communications with supervised interaction
US8036980B2 (en) * 2007-10-24 2011-10-11 Thomson Reuters Global Resources Method and system of generating audit procedures and forms
US8050988B2 (en) * 2007-10-24 2011-11-01 Thomson Reuters Global Resources Method and system of generating audit procedures and forms
US20090132558A1 (en) * 2007-11-19 2009-05-21 Research In Motion Limited Method and system for application preference registration to a content delivery system
US9886524B1 (en) * 2007-11-28 2018-02-06 Sterling Infosystems, Inc. System and method for providing a report of generally available information
KR101362224B1 (ko) * 2007-12-03 2014-02-13 연세대학교 산학협력단 태스크 기반 사용자 인터페이스 생성 장치 및 그 방법
US20090182802A1 (en) * 2008-01-10 2009-07-16 Microsoft Corporation Mobile device management scheduling
US8166145B2 (en) * 2008-01-10 2012-04-24 Microsoft Corporation Managing event-based conditional recurrent schedules
US8230436B2 (en) * 2008-01-10 2012-07-24 Microsoft Corporation Aggregating recurrent schedules to optimize resource consumption
US8504452B2 (en) * 2008-01-18 2013-08-06 Thomson Reuters Global Resources Method and system for auditing internal controls
US8341598B2 (en) * 2008-01-18 2012-12-25 Microsoft Corporation Declartive commands using workflows
US7979393B2 (en) * 2008-02-22 2011-07-12 Microsoft Corporation Multiphase topology-wide code modifications for peer-to-peer systems
US20090299807A1 (en) * 2008-05-30 2009-12-03 Microsoft Corporation Scheduling opportunity previewer
US8554767B2 (en) * 2008-12-23 2013-10-08 Samsung Electronics Co., Ltd Context-based interests in computing environments and systems
US8175902B2 (en) * 2008-12-23 2012-05-08 Samsung Electronics Co., Ltd. Semantics-based interests in computing environments and systems
US20100161380A1 (en) * 2008-12-23 2010-06-24 Samsung Electronics Co., Ltd. Rating-based interests in computing environments and systems
US20100198604A1 (en) * 2009-01-30 2010-08-05 Samsung Electronics Co., Ltd. Generation of concept relations
US8620710B2 (en) * 2009-07-02 2013-12-31 International Business Machines Corporation Managing calendar events while preparing for time out-of-office
US9959150B1 (en) * 2009-12-31 2018-05-01 Lenovoemc Limited Centralized file action based on active folders
US9594602B1 (en) 2009-12-31 2017-03-14 Lenovoemc Limited Active folders
US9032412B1 (en) 2009-12-31 2015-05-12 Lenovoemc Limited Resource allocation based on active folder activity
US20120094600A1 (en) 2010-10-19 2012-04-19 Welch Allyn, Inc. Platform for patient monitoring
US8554797B2 (en) * 2010-12-17 2013-10-08 Sap Ag System and method for modular business applications
US9449288B2 (en) 2011-05-20 2016-09-20 Deem, Inc. Travel services search
US8701125B2 (en) * 2011-09-06 2014-04-15 The Nielsen Company (Us), Llc Methods and apparatus to detect uninstallation of an on-device meter
US20130067365A1 (en) * 2011-09-13 2013-03-14 Microsoft Corporation Role based user interface for limited display devices
US8661328B2 (en) * 2011-12-15 2014-02-25 Sap Portals Israel Ltd Managing web content on a mobile communication device
KR20130089400A (ko) * 2012-02-02 2013-08-12 삼성전자주식회사 휴대용 전자기기에서 애플리케이션 관리 방법 및 장치
JP5668714B2 (ja) * 2012-03-28 2015-02-12 カシオ計算機株式会社 データ処理装置及びプログラム
US8707254B2 (en) 2012-04-06 2014-04-22 Microsoft Corporation Service level objective for cloud hosted applications
US9046917B2 (en) * 2012-05-17 2015-06-02 Sri International Device, method and system for monitoring, predicting, and accelerating interactions with a computing device
US9357005B2 (en) * 2012-05-18 2016-05-31 Andrew Milburn Method and system for synchronized distributed display over multiple client devices
US8751500B2 (en) 2012-06-26 2014-06-10 Google Inc. Notification classification and display
US9207703B1 (en) * 2012-06-28 2015-12-08 Emc Corporation Method and apparatus for client application customization
US8484025B1 (en) * 2012-10-04 2013-07-09 Google Inc. Mapping an audio utterance to an action using a classifier
US8719280B1 (en) 2012-10-16 2014-05-06 Google Inc. Person-based information aggregation
US20140122396A1 (en) * 2012-10-29 2014-05-01 Qualcomm Incorporated Rules engine as a platform for mobile applications
US9282587B2 (en) 2012-11-16 2016-03-08 Google Technology Holdings, LLC Method for managing notifications in a communication device
US8949556B2 (en) 2012-12-10 2015-02-03 International Business Machines Corporation Cloud management of device memory based on geographical location
US9990611B2 (en) 2013-03-08 2018-06-05 Baydin, Inc. Systems and methods for incorporating calendar functionality into electronic messages
US20150348126A1 (en) * 2014-05-30 2015-12-03 Transilio, Inc. Personalized user engagement system using operating system notification script
US20160205054A1 (en) * 2015-01-14 2016-07-14 Linkedin Corporation Conditional delivery of electronic messages
US10356031B2 (en) * 2015-09-30 2019-07-16 Microsoft Technology Licensing, Llc Prioritized communication inbox
KR102362868B1 (ko) 2015-12-23 2022-02-15 삼성전자주식회사 사용자의 선호도에 따라 사용자에게 컨텐트들을 제공하는 방법 및 이를 위한 전자 장치
US9622180B1 (en) 2015-12-23 2017-04-11 Intel Corporation Wearable device command regulation
US10169647B2 (en) * 2016-07-27 2019-01-01 International Business Machines Corporation Inferring body position in a scan
US10649752B2 (en) * 2016-09-28 2020-05-12 International Business Machines Corporation Sharing data and applications across computing systems
US10762040B2 (en) * 2017-01-24 2020-09-01 Microsoft Technology Licensing, Llc Schematized data roaming
US20180307753A1 (en) * 2017-04-21 2018-10-25 Qualcomm Incorporated Acoustic event enabled geographic mapping
US10552543B2 (en) 2017-05-10 2020-02-04 International Business Machines Corporation Conversational authoring of event processing applications
CN110018813B (zh) * 2018-01-10 2022-12-02 武汉斗鱼网络科技有限公司 一种Toast设计方法、存储介质、电子设备及系统
CN108628631B (zh) * 2018-05-14 2019-02-15 北京理工大学 一种对参数中的缩写词进行自动扩展的方法
US11080564B2 (en) * 2018-09-28 2021-08-03 Microsoft Technology Licensing, Llc Content classification tool with re-classification techniques
US10963827B2 (en) * 2019-01-08 2021-03-30 International Business Machines Corporation Segmented social collaboration with communication arbitration
KR102630874B1 (ko) 2019-02-01 2024-01-30 삼성전자 주식회사 상황에 기반한 사용자 맞춤형 설정 방법 및 장치
US11630710B2 (en) * 2021-07-22 2023-04-18 Rovi Guides, Inc. Systems and methods to improve notifications with temporal content
US11694166B2 (en) 2021-10-01 2023-07-04 Baydin, Inc. Systems and methods for dynamically displaying recipient calendar information in electronic messages

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0047434A1 (de) * 1980-09-05 1982-03-17 BROWN, BOVERI & CIE Aktiengesellschaft Elektrochemische Messvorrichtung
AU639802B2 (en) * 1990-08-14 1993-08-05 Oracle International Corporation Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment
US5301326A (en) * 1991-09-24 1994-04-05 Microsoft Corporation Method and system for controlling the execution of an application program
US5481700A (en) * 1991-09-27 1996-01-02 The Mitre Corporation Apparatus for design of a multilevel secure database management system based on a multilevel logic programming system
JP2927325B2 (ja) * 1994-06-29 1999-07-28 富士ゼロックス株式会社 データ管理システム
JPH08263360A (ja) * 1995-03-27 1996-10-11 Nec Corp オブジェクト関連情報管理システム
CA2145923C (en) * 1995-03-30 2001-05-08 Gary W. Miller Computer operating system providing means for formatting information in accordance with specified cultural preferences
US5870746A (en) * 1995-10-12 1999-02-09 Ncr Corporation System and method for segmenting a database based upon data attributes
US6490718B1 (en) * 1996-05-08 2002-12-03 Electronic Data Systems Corporation System and method for processing electronic data interchange using a graphical representation
US6112192A (en) * 1997-05-09 2000-08-29 International Business Machines Corp. Method for providing individually customized content in a network
US6026235A (en) * 1997-05-20 2000-02-15 Inprise Corporation System and methods for monitoring functions in natively compiled software programs
US6016394A (en) * 1997-09-17 2000-01-18 Tenfold Corporation Method and system for database application software creation requiring minimal programming
JPH11184859A (ja) * 1997-12-18 1999-07-09 Sony Corp 情報処理装置および情報処理方法、並びに記録媒体
US6850893B2 (en) * 2000-01-14 2005-02-01 Saba Software, Inc. Method and apparatus for an improved security system mechanism in a business applications management system platform
US6108712A (en) * 1998-05-05 2000-08-22 International Business Machines Corp. Client-server system with central application management and providing export agent capability for retrofitting existing hardware and applications into the system
US6330566B1 (en) * 1998-06-22 2001-12-11 Microsoft Corporation Apparatus and method for optimizing client-state data storage
US6327705B1 (en) * 1998-10-08 2001-12-04 Microsoft Corporation Method for creating and maintaining user data
US6343376B1 (en) * 1998-10-22 2002-01-29 Computer Computer Corporation System and method for program verification and optimization
US6564251B2 (en) * 1998-12-03 2003-05-13 Microsoft Corporation Scalable computing system for presenting customized aggregation of information
US6766329B1 (en) * 2000-01-31 2004-07-20 Microsoft Corporation Dynamic personalized information organizer
US6532471B1 (en) * 2000-12-11 2003-03-11 International Business Machines Corporation Interface repository browser and editor
US6745193B1 (en) * 2001-01-25 2004-06-01 Microsoft Corporation System and method for defining, refining, and personalizing communications policies in a notification platform
JP2003263319A (ja) * 2002-03-11 2003-09-19 Toshiba Corp 上位フレームワークを利用したアプリケーションフレームワークの開発方法、およびその方法で用いられる上位フレームワーク
US7788588B2 (en) * 2003-02-07 2010-08-31 Microsoft Corporation Realizing users' preferences

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100695009B1 (ko) * 2005-12-01 2007-03-14 한국전자통신연구원 소프트웨어 기반 프리필터링을 이용한 스트림 데이터 처리시스템 및 그 방법
WO2013115460A1 (ko) * 2012-02-01 2013-08-08 에스케이플래닛 주식회사 오브젝트 관리 시스템 및 그 방법
KR20130100828A (ko) * 2012-02-02 2013-09-12 에스케이플래닛 주식회사 개인 오브젝트 관리 시스템 및 그 방법
KR20220062992A (ko) * 2020-11-09 2022-05-17 (주)미소정보기술 도메인 특화된 언어 규칙 생성이 가능한 텍스트 데이터 분석 방법 및 장치
KR20220062991A (ko) * 2020-11-09 2022-05-17 (주)미소정보기술 의도추론 순서 조정이 가능한 텍스트 데이터 분석 방법 및 장치

Also Published As

Publication number Publication date
CN1745364A (zh) 2006-03-08
KR101231461B1 (ko) 2013-02-07
US20050091674A1 (en) 2005-04-28
EP1676199A4 (en) 2008-10-15
US7137099B2 (en) 2006-11-14
JP2007509416A (ja) 2007-04-12
CN1745364B (zh) 2010-11-03
JP5189768B2 (ja) 2013-04-24
EP1676199A1 (en) 2006-07-05
WO2005045668A1 (en) 2005-05-19

Similar Documents

Publication Publication Date Title
KR101231461B1 (ko) 애플리케이션 환경설정 클래스들을 확장하기 위한 시스템및 방법
JP4896726B2 (ja) プリファレンスの条件の評価に基づいてアクションを実行するためのシステム、方法および記憶装置
US20050091184A1 (en) Personalized folders
US7177859B2 (en) Programming model for subscription services
US20040002988A1 (en) System and method for modeling subscriptions and subscribers as data
US20040002958A1 (en) System and method for providing notification(s)
EP1287444B1 (en) Priorities generation and management
US7243130B2 (en) Notification platform architecture
US7457879B2 (en) Notification platform architecture
US8024415B2 (en) Priorities generation and management
JP2004259261A (ja) 通知を提供するためのネットワークフレームワークおよびアプリケーション
EP1852789A1 (en) Priorities generation and management

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
S901 Examination by remand of revocation
GRNO Decision to grant (after opposition)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160104

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180118

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee