KR101959649B1 - 데이터에 대한 규칙들의 명시 및 적용 - Google Patents

데이터에 대한 규칙들의 명시 및 적용 Download PDF

Info

Publication number
KR101959649B1
KR101959649B1 KR1020177013833A KR20177013833A KR101959649B1 KR 101959649 B1 KR101959649 B1 KR 101959649B1 KR 1020177013833 A KR1020177013833 A KR 1020177013833A KR 20177013833 A KR20177013833 A KR 20177013833A KR 101959649 B1 KR101959649 B1 KR 101959649B1
Authority
KR
South Korea
Prior art keywords
data
data unit
units
values
unit
Prior art date
Application number
KR1020177013833A
Other languages
English (en)
Other versions
KR20170074949A (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 KR20170074949A publication Critical patent/KR20170074949A/ko
Application granted granted Critical
Publication of KR101959649B1 publication Critical patent/KR101959649B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • G06F16/24565Triggers; Constraints
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/214Database migration support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • Development Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Game Theory and Decision Science (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Computational Linguistics (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Read Only Memory (AREA)
  • Investigating Or Analysing Biological Materials (AREA)

Abstract

데이터에 규칙을 적용하기 위한 방법은, 데이터 소스로부터 데이터를 수신하는 단계와 수신된 데이터로부터 적어도 부분적으로 유도된 정돈된 (ordered) 복수의 데이터 유닛들 중 특정한 데이터 유닛을 처리하는 단계를 포함한다. 상기 처리하는 단계는, 상기 정돈된 복수의 데이터 유닛들로부터 데이터 유닛들의 정돈된 서브세트를 포함하는 데이터 유닛들의 제 1 세트를 결정 - 상기 정돈된 서브세트에 포함된 각각의 데이터 유닛은 특정한 데이터 유닛과 연관되고 상기 정돈된 복수의 데이터 유닛들 내의 특정한 데이터 유닛보다 먼저 발생함 - 하는 단계를 포함한다. 상기 규칙을 적용하기에 앞서, 상태 변수는 상기 데이터 유닛들의 세트에 걸친 순서대로의 반복으로부터 유래될 수 있는 상태로 업데이트되고, 상기 정돈된 서브세트의 각각의 데이터 유닛에 대해, 상기 데이터 유닛에 규칙을 적용한다. 규칙은 이어서 상기 상태 변수의 업데이트된 값을 판독하는 것을 포함하여 상기 특정한 데이터 유닛에 규칙에 적용된다.

Description

데이터에 대한 규칙들의 명시 및 적용{SPECIFYING AND APPLYING RULES TO DATA}
본 출원은 2014년 10월 20일자로 출원된 미국 특허 출원 번호 62/065,909 의 우선권을 주장한다.
본 출원은 데이터에 대한 규칙들의 명시 및 적용과 관련된 것이다.
본 출원은 데이터에 대한 규칙들의 명시 및 적용과 관련된 것이다.
일부 실시예들에서, 하나 이상의 규칙들은 데이터 처리 시스템 내의 레코드들에 적용될 수도 있다. 예를 들어, 규칙들은 레코드들 내에 포함된 정보에 기초하여 이벤트들을 트리거하기 위해 또는 레코드들의 퀄리티를 확인하기 위해 사용될 수도 있다. 규칙들은 사용자 인터페이스를 이용하여 개발자에 의해 명시될 수도 있다. 일부 실시예들에서, 규칙들을 적용한 결과들은 규칙들이 생산 단계 또는 개발 단계 동안 적용되었는가 여부에 의존하여, 상이할 수도 있다.
일 측면에서, 일반적으로, 하나 이상의 데이터 소스들로부터 데이터에 규칙을 적용하기 위한 방법은, 제 1 데이터 소스로부터 데이터를 수신하는 단계, 및 상기 제 1 데이터 소스로부터 수신된 데이터로부터 적어도 부분적으로 유도된 정돈된 (ordered) 복수의 데이터 유닛들 중 특정한 데이터 유닛을 처리하는 단계를 포함한다. 상기 처리하는 단계는, 상기 정돈된 복수의 데이터 유닛들로부터 데이터 유닛들의 정돈된 서브세트를 포함하는 데이터 유닛들의 제 1 세트를 결정 - 상기 정돈된 서브세트에 포함된 각각의 데이터 유닛은 특정한 데이터 유닛과 연관되고 상기 정돈된 복수의 데이터 유닛들 내의 특정한 데이터 유닛보다 먼저 발생함 - 하는 단계, 상기 특정한 데이터 유닛에 규칙을 적용하기에 앞서, 적어도 하나의 상태 변수를 상기 데이터 유닛들의 제 1 세트에 걸친 순서대로의 반복으로부터 유래될 수 있는 상태로 업데이트하고, 상기 정돈된 서브세트의 각각의 데이터 유닛에 대해, 상기 데이터 유닛에 규칙을 적용하는 단계, 및 상기 상태 변수의 업데이트된 값을 판독하는 것을 포함하여 상기 특정한 데이터 유닛에 규칙을 적용하는 단계를 포함한다.
측면들은 하기의 특징들 중 하나 이상을 포함할 수도 있다.
상기 처리하는 단계는, 상기 규칙을 테스트하기 위해 상기 특정한 데이터 유닛이 사용자 인터페이스 내에서 선택되는 테스트 환경 내에서 하나 이상의 데이터 소스들로부터 데이터에 규칙을 적용하는 제 1 모드와 연관될 수도 있다. 상기 테스트 환경 내에서 하나 이상의 데이터 소스들로부터 데이터에 규칙을 적용하는 제 1 모드는, 상기 정돈된 복수의 데이터 유닛들의 각각의 데이터 유닛에 대해, 생산 환경 내에서 하나 이상의 데이터 소스들로부터 데이터에 규칙을 적용하는 제 2 모드로부터 생성된 결과들과 일치하는 결과들을 생성하도록 구성될 수도 있다. 상기 테스트 환경 내에서 하나 이상의 데이터 소스들로부터 데이터에 규칙을 적용하는 제 1 모드는, 상기 정돈된 복수의 데이터 유닛들의 각각의 데이터 유닛에 대해, 상기 정돈된 복수의 데이터 유닛들 전부가 일괄적으로 (in a batch) 테스트되는 테스트 환경 내에서 하나 이상의 데이터 소스들로부터 데이터에 규칙을 적용하는 제 3 모드로부터 생성된 결과들과 일치하는 결과들을 생성하도록 구성될 수도 있다.
상기 데이터 유닛들의 제 1 세트는 데이터 유닛들의 정돈된 서브세트로 구성될 수도 있다. 상기 상태 변수를 업데이트하는 것은, 상기 데이터 유닛들의 제 1 세트에 걸친 순서대로 반복하는 것, 그리고 상기 정돈된 서브세트의 각각의 데이터 유닛에 대해, 상기 데이터 유닛에 규칙을 적용하고 상기 데이터 유닛에 규칙을 적용한 결과에 기초하여 업데이트된 상기 상태 변수의 값을 기록하는 것을 포함할 수도 있다. 상기 데이터 유닛들의 제 1 세트는 상기 데이터 유닛들의 정돈된 서브세트 내에 있지 않은 데이터 유닛들을 포함할 수도 있고, 상기 데이터 유닛들의 제 1 세트에 걸친 순서대로 반복하는 것은 상기 데이터 유닛이 상기 데이터 유닛들의 정돈된 서브세트의 멤버인지 여부를 결정하는 것을 포함할 수도 있다. 상기 복수의 데이터 유닛들은, 상기 복수의 데이터 유닛들 내의 특정한 데이터 유닛과 연관된 데이터 유닛의 최초 발생인 연관된 데이터 유닛을 포함할 수도 있고, 상기 데이터 유닛들의 정돈된 서브세트의 처음의 데이터 유닛은, 상기 연관된 데이터 유닛이 아닌 데이터 유닛이다.
방법은, 상기 정돈된 복수의 데이터 유닛들의 데이터 유닛들에 대한 규칙의 각각의 어플리케이션에 대한 상태 변수의 업데이트된 값들을 상태 변수 캐시 내에 저장하는 단계를 포함할 수도 있다. 상기 데이터 유닛들의 정돈된 서브세트의 처음의 데이터 유닛에 규칙을 적용하는 것은, 상기 상태 변수 캐시로부터 상기 복수의 데이터 유닛들 내의 처음의 데이터 유닛 이전에 발생한 데이터 유닛에 대한 규칙의 어플리케이션에 응답하여 저장되었던 상태 변수의 업데이트된 값을 판독하는 것을 포함할 수도 있다. 상기 복수의 데이터 유닛들 내의 처음의 데이터 유닛 이전에 발생한 데이터 유닛은, 상기 처음의 데이터 유닛과 관련하여 가장 가까운 데이터 유닛이고 상기 복수의 데이터 유닛들의 처음의 데이터 유닛 이전에 발생한 데이터 유닛일 수 있다. 상기 규칙은 복수의 규칙 케이스들을 포함할 수도 있다. 상기 복수의 규칙 케이스들의 적어도 하나의 규칙 케이스를 테스트한 결과는, 상기 상태 변수의 값에 의존할 수도 있다.
상기 복수의 데이터 유닛들의 특정한 데이터 유닛에 규칙을 적용하는 것은, 상기 상태 변수의 업데이트된 값에 반대하여 상기 복수의 규칙 케이스들의 적어도 하나의 규칙 케이스를 테스트하는 것을 포함할 수도 있다. 상기 데이터 유닛들의 정돈된 서브세트의 처음의 데이터 유닛은, 상기 정돈된 복수의 데이터 유닛들의 특정한 데이터 유닛에 관련된 데이터 유닛의 최초 발생일 수도 있다. 상기 복수의 규칙 케이스들 중 적어도 하나의 규칙 케이스는, 상기 제 1 데이터 소스와 상이한 제 2 데이터 소스로부터 유도된 값에 기초할 수도 있다. 상기 제 2 데이터 소스는 상기 처리의 개시 이후에 동적으로 액세스될 수도 있다. 상기 정돈된 복수의 데이터 유닛들의 각각의 데이터 유닛은 상기 제 1 데이터 소스의 레코드로부터의 하나 이상의 값들, 그리고 상기 제 2 데이터 소스로부터의 적어도 하나의 값을 포함할 수도 있다. 상기 정돈된 복수의 데이터 유닛은, 상기 제 1 데이터 소스의 레코드들의 세트의 순서에 따라 정돈될 수도 있다. 상기 데이터 유닛들의 정돈된 서브세트의 각각의 데이터 유닛은, 공유된 식별자에 의해 데이터 유닛들의 정돈된 서브세트의 다른 데이터 유닛들 연관될 수도 있다. 상기 공유된 식별자는, 키 필드 값을 포함할 수도 있다.
상기 특정한 데이터 유닛을 처리하는 단계는, 상기 특정한 데이터 유닛에 대한 하나 이상의 미리 획득된 값들이 데이터 유닛 캐시 내에 존재하고 유효한가 여부를 결정하는 단계, 그리고 만약 상기 미리 획득된 값들이 존재하고 유효한 것으로 결정되면 상기 데이터 유닛 캐시로부터 상기 특정한 데이터 유닛에 대한 하나 이상의 값들을 획득하고, 그렇지 않으면 상기 제 1 데이터 소스를 포함하는 하나 이상의 데이터 소스들로부터 상기 특정한 데이터 유닛에 대한 하나 이상의 값들을 획득하는 단계를 포함할 수도 있다. 상기 특정한 데이터 유닛에 대한 미리 획득된 값들이 유효한가 여부를 결정하는 것은, 상기 미리 획득된 값들이 획득된 이후 경과 된 시간을 미리 결정된 경과 시간 임계값에 비교하는 것을 포함할 수도 있다.
상기 하나 이상의 데이터 소스들로부터 상기 특정한 데이터 유닛에 대한 하나 이상의 값들을 획득하는 것은, 상기 특정한 데이터 유닛에 대한 하나 이상의 값들을 수신하기 위해 상기 제 1 데이터 소스로의 연결을 개방하는 것, 그리고 상기 정돈된 복수의 데이터 유닛들의 다른 데이터 유닛들에 대한 하나 이상의 값들을 수신하기 위해 상기 연결을 개방 상태에서 유지하는 것을 포함할 수도 있다. 상기 하나 이상의 데이터 소스들로부터 상기 특정한 데이터 유닛에 대한 하나 이상의 값들을 획득하는 것은, 상기 제 1 데이터 소스로의 미리 개방된 연결로부터 상기 특정한 데이터 유닛에 대한 하나 이상의 값들을 수신하는 것을 포함할 수도 있다. 상기 제 1 데이터 소스는 데이터베이스일 수도 있다. 상기 제 1 데이터 소스는 데이터 기록 (archive) 파일일 수도 있다.
방법은, 상기 정돈된 서브세트의 적어도 제 1 데이터 유닛에 대해서, 상기 제 1 데이터 유닛에 대한 미리 획득된 값들이 데이터 유닛 캐시 내에 존재하고 유효한가 여부를 결정하는 단계, 그리고 만약 상기 미리 획득된 값들이 존재하고 유효한 것으로 결정되면 상기 데이터 유닛 캐시로부터 상기 제 1 데이터 유닛에 대한 하나 이상의 값들을 획득하고, 그렇지 않으면 상기 제 1 데이터 소스를 포함하는 하나 이상의 데이터 소스들로부터 상기 제 1 데이터 유닛에 대한 하나 이상의 값들을 획득하는 단계를 포함할 수도 있다. 상기 제 1 데이터 유닛에 대한 미리 획득된 값들이 유효한가 여부를 결정하는 것은, 상기 미리 획득된 값들이 획득된 이후 경과 된 시간을 미리 결정된 경과 시간 임계값에 비교하는 것을 포함할 수도 있다. 상기 하나 이상의 데이터 소스들로부터 제 1 데이터 유닛에 대한 하나 이상의 값들을 획득하는 것은, 상기 제 1 데이터 유닛에 대한 하나 이상의 값들을 수신하기 위해 상기 제 1 데이터 소스로의 연결을 개방하는 것, 그리고 상기 정돈된 복수의 데이터 유닛들의 다른 데이터 유닛들에 대한 하나 이상의 값들을 수신하기 위해 상기 연결을 개방 상태에서 유지하는 것을 포함할 수도 있다. 상기 하나 이상의 데이터 소스들로부터 상기 제 1 데이터 유닛에 대한 하나 이상의 값들을 획득하는 것은, 상기 제 1 데이터 소스로의 미리 개방된 연결로부터 상기 제 1 데이터 유닛에 대한 하나 이상의 값들을 수신하는 것을 포함할 수도 있다.
다른 측면에서, 일반적으로, 하나 이상의 데이터 소스들로부터 데이터에 규칙을 적용하기 위한, 컴퓨터 판독 가능한 매체에 비 일시적인 형태로 저장된 소프트웨어는, 컴퓨팅 시스템으로 하여금, 제 1 데이터 소스로부터 데이터를 수신하는 것 및 상기 제 1 데이터 소스로부터 수신된 데이터로부터 적어도 부분적으로 유도된 정돈된 (ordered) 복수의 데이터 유닛들 중 특정한 데이터 유닛을 처리하는 것을 수행하게 하기 위한 명령어들을 포함한다. 상기 처리하는 것은, 상기 정돈된 복수의 데이터 유닛들로부터 데이터 유닛들의 정돈된 서브세트를 포함하는 데이터 유닛들의 제 1 세트를 결정 - 상기 정돈된 서브세트에 포함된 각각의 데이터 유닛은 특정한 데이터 유닛과 연관되고 상기 정돈된 복수의 데이터 유닛들 내의 특정한 데이터 유닛보다 먼저 발생함 - 하는 것, 상기 특정한 데이터 유닛에 규칙을 적용하기에 앞서, 적어도 하나의 상태 변수를 상기 데이터 유닛들의 제 1 세트에 걸친 순서대로의 반복으로부터 유래될 수 있는 상태로 업데이트하고, 상기 정돈된 서브세트의 각각의 데이터 유닛에 대해, 상기 데이터 유닛에 규칙을 적용하는 것, 및 상기 상태 변수의 업데이트된 값을 판독하는 것을 포함하여 상기 특정한 데이터 유닛에 규칙을 적용하는 것을 포함한다.
다른 측면에서, 일반적으로, 하나 이상의 데이터 소스들로부터 데이터에 규칙을 적용하기 위한 컴퓨팅 시스템은, 제 1 데이터 소스로부터 데이터를 수신하도록 구성된 입력 디바이스 또는 포트, 및 상기 제 1 데이터 소스로부터 수신된 데이터로부터 적어도 부분적으로 유도된 정돈된 (ordered) 복수의 데이터 유닛들 중 특정한 데이터 유닛을 처리하도록 구성된 적어도 하나의 프로세서를 포함한다. 상기 특정한 데이터 유닛을 처리하는 것은, 상기 정돈된 복수의 데이터 유닛들로부터 데이터 유닛들의 정돈된 서브세트를 포함하는 데이터 유닛들의 제 1 세트를 결정 - 상기 정돈된 서브세트에 포함된 각각의 데이터 유닛은 특정한 데이터 유닛과 연관되고 상기 정돈된 복수의 데이터 유닛들 내의 특정한 데이터 유닛보다 먼저 발생함 - 하는 것, 상기 특정한 데이터 유닛에 규칙을 적용하기에 앞서, 적어도 하나의 상태 변수를 상기 데이터 유닛들의 제 1 세트에 걸친 순서대로의 반복으로부터 유래될 수 있는 상태로 업데이트하고, 상기 정돈된 서브세트의 각각의 데이터 유닛에 대해, 상기 데이터 유닛에 규칙을 적용하는 것, 및 상기 상태 변수의 업데이트된 값을 판독하는 것을 포함하여 상기 특정한 데이터 유닛에 규칙을 적용하는 것을 포함한다.
다른 측면에서, 일반적으로, 하나 이상의 데이터 소스들로부터 데이터에 규칙을 적용하기 위한 컴퓨팅 시스템에 있어, 컴퓨팅 시스템은 제 1 데이터 소스로부터 데이터를 수신하도록 구성된 입력 디바이스 또는 포트, 상기 규칙을 적용하는 적어도 둘의 상이한 모드들 중 선택된 하나의 모드에서 상기 제 1 데이터 소스로부터 수신된 데이터로부터 적어도 부분적으로 유도된 복수의 데이터 유닛들을 처리하도록 구성된 적어도 하나의 프로세서를 포함한다. 상기 모드들은, 제 1 모드로서, 상기 복수의 데이터 유닛들은 특정한 순서에 따라 수신되고, 상기 복수의 데이터 유닛들을 처리하는 것은, 상기 복수의 데이터 유닛들의 적어도 일부의 각각에 대해, 상기 데이터 유닛에 규칙을 적용한 결과에 기초하여 적어도 하나의 상태 변수에 업데이트된 값을 기록하는 것을 포함하는, 상기 제 1 모드, 및 제 2 모드로서, 상기 복수의 데이터 유닛들의 특정한 데이터 유닛의 선택이 수신되는, 상기 제 2 모드를 포함한다. 상기 특정한 데이터 유닛을 처리하는 것은, (1) 상기 복수의 데이터 유닛들로부터 데이터 유닛들의 정돈된 서브세트를 포함하는 데이터 유닛들의 제 1 세트를 결정 - 상기 정돈된 서브세트에 포함된 각각의 데이터 유닛은 상기 복수의 데이터 유닛들 내의 특정한 데이터 유닛보다 먼저 발생함 - 하는 것, (2) 상기 특정한 데이터 유닛에 규칙을 적용하기에 앞서, 적어도 하나의 상태 변수를 상기 제 1 모드 내의 데이터 유닛들의 제 1 세트를 처리하는 것으로부터 유래될 수 있는 상태로 업데이트하는 것, 그리고 (3) 상기 상태 변수의 업데이트된 값을 판독하는 것을 포함하여 상기 특정한 데이터 유닛에 규칙을 적용하는 것을 포함한다.
측면들은 하기의 특징들을 하나 이상 포함할 수도 있다.
상기 제 2 모드는, 상기 규칙을 테스트하기 위해 상기 특정한 데이터 유닛이 사용자 인터페이스 내에서 선택되는 테스트 환경 내에서 하나 이상의 데이터 소스들로부터 데이터에 규칙을 적용하는 모드일 수도 있다. 상기 제 1 모드는, 생산 환경 내에서 하나 이상의 데이터 소스들로부터 데이터에 규칙을 적용하는 모드일 수도 있다. 상기 제 1 모드는, 상기 복수의 데이터 유닛들 전부가 일괄적으로 (in a batch) 테스트되는 테스트 환경 내에서 하나 이상의 데이터 소스들로부터 데이터에 규칙을 적용하는 모드일 수도 있다. 상기 데이터 유닛들의 제 1 세트는 데이터 유닛들의 정돈된 서브세트로 구성될 수도 있다.
상기 상태 변수를 업데이트하는 것은, 상기 데이터 유닛들의 제 1 세트에 걸친 순서대로 반복하는 것, 그리고 상기 정돈된 서브세트의 각각의 데이터 유닛에 대해, 상기 데이터 유닛에 규칙을 적용하고 상기 데이터 유닛에 규칙을 적용한 결과에 기초하여 업데이트된 상기 상태 변수의 값을 기록하는 것을 포함할 수도 있다. 상기 데이터 유닛들의 제 1 세트는 상기 데이터 유닛들의 정돈된 서브세트 내에 있지 않은 데이터 유닛들을 포함할 수도 있고, 상기 데이터 유닛들의 제 1 세트에 걸친 순서대로 반복하는 것은 상기 데이터 유닛이 상기 데이터 유닛들의 정돈된 서브세트의 멤버인지 여부를 결정하는 것을 포함할 수도 있다. 상기 정돈된 서브세트 내에 포함된 각각의 데이터 유닛은 상기 특정한 데이터 유닛과 연관될 수도 있고, 상기 복수의 데이터 유닛들은 상기 복수의 데이터 유닛들 내의 특정한 데이터 유닛과 연관된 데이터 유닛의 최초 발생인 연관된 데이터 유닛을 포함하고, 상기 데이터 유닛들의 정돈된 서브세트의 처음의 데이터 유닛은, 상기 연관된 데이터 유닛이 아닌 데이터 유닛일 수도 있다.
상기 제 2 모드에서 상기 특정한 데이터 유닛을 처리하는 것은, 상기 복수의 데이터 유닛들의 데이터 유닛들에 대한 규칙의 각각의 어플리케이션에 대한 상태 변수의 업데이트된 값들을 상태 변수 캐시 내에 저장하는 것을 포함할 수도 있다. 상기 데이터 유닛들의 정돈된 서브세트의 처음의 데이터 유닛에 규칙을 적용하는 것은, 상기 상태 변수 캐시로부터 상기 복수의 데이터 유닛들 내의 처음의 데이터 유닛 이전에 발생한 데이터 유닛에 대한 규칙의 어플리케이션에 응답하여 저장되었던 상태 변수의 업데이트된 값을 판독하는 것을 포함할 수도 있다. 상기 복수의 데이터 유닛들 내의 처음의 데이터 유닛 이전에 발생한 데이터 유닛은, 상기 처음의 데이터 유닛과 관련하여 가장 가까운 데이터 유닛이고 상기 복수의 데이터 유닛들의 처음의 데이터 유닛 이전에 발생한 것일 수도 있다. 상기 규칙은 복수의 규칙 케이스들을 포함할 수도 있다.
상기 복수의 규칙 케이스들의 적어도 하나의 규칙 케이스를 테스트한 결과는, 상기 상태 변수의 값에 의존할 수도 있다. 상기 복수의 데이터 유닛들의 특정한 데이터 유닛에 규칙을 적용하는 것은, 상기 상태 변수의 업데이트된 값에 반대하여 상기 복수의 규칙 케이스들의 적어도 하나의 규칙 케이스를 테스트하는 것을 포함할 수도 있다. 상기 정돈된 서브세트 내에 포함된 각각의 데이터 유닛은 특정한 데이터 유닛과 연관되고, 상기 데이터 유닛들의 정돈된 서브세트의 처음의 데이터 유닛은, 상기 복수의 데이터 유닛들 내의 상기 특정한 데이터 유닛에 관련된 데이터 유닛의 최초 발생일 수도 있다. 상기 복수의 규칙 케이스들 중 적어도 하나의 규칙 케이스는, 상기 제 1 데이터 소스와 상이한 제 2 데이터 소스로부터 유도된 값에 기초할 수도 있다. 상기 제 2 데이터 소스는 상기 처리의 개시 이후에 동적으로 액세스될 수도 있다.
상기 복수의 데이터 유닛들의 각각의 데이터 유닛은 상기 제 1 데이터 소스의 레코드로부터의 하나 이상의 값들, 그리고 상기 제 2 데이터 소스로부터의 적어도 하나의 값을 포함할 수도 있다. 상기 복수의 데이터 유닛은, 상기 제 1 데이터 소스의 레코드들의 세트의 순서에 따라 정돈될 수도 있다. 상기 정돈된 서브세트 내에 포함된 각각의 데이터 유닛은 특정한 데이터 유닛과 연관되고, 그리고 공유된 식별자에 의해 데이터 유닛들의 정돈된 서브세트의 다른 데이터 유닛들 연관될 수도 있다. 상기 공유된 식별자는, 키 필드 값을 포함할 수도 있다.
상기 특정한 데이터 유닛을 처리하는 것은, 상기 특정한 데이터 유닛에 대한 하나 이상의 미리 획득된 값들이 데이터 유닛 캐시 내에 존재하고 유효한가 여부를 결정하는 것, 그리고 만약 상기 미리 획득된 값들이 존재하고 유효한 것으로 결정되면 상기 데이터 유닛 캐시로부터 상기 특정한 데이터 유닛에 대한 하나 이상의 값들을 획득하고, 그렇지 않으면 상기 제 1 데이터 소스를 포함하는 하나 이상의 데이터 소스들로부터 상기 특정한 데이터 유닛에 대한 하나 이상의 값들을 획득하는 것을 포함할 수도 있다. 상기 특정한 데이터 유닛에 대한 미리 획득된 값들이 유효한가 여부를 결정하는 것은, 상기 미리 획득된 값들이 획득된 이후 경과 된 시간을 미리 결정된 경과 시간 임계값에 비교하는 것을 포함할 수도 있다. 상기 하나 이상의 데이터 소스들로부터 상기 특정한 데이터 유닛에 대한 하나 이상의 값들을 획득하는 것은, 상기 특정한 데이터 유닛에 대한 하나 이상의 값들을 수신하기 위해 상기 제 1 데이터 소스로의 연결을 개방하는 것, 그리고 상기 복수의 데이터 유닛들의 다른 데이터 유닛들에 대한 하나 이상의 값들을 수신하기 위해 상기 연결을 개방 상태에서 유지하는 것을 포함할 수도 있다.
상기 하나 이상의 데이터 소스들로부터 상기 특정한 데이터 유닛에 대한 하나 이상의 값들을 획득하는 것은, 상기 제 1 데이터 소스로의 미리 개방된 연결로부터 상기 특정한 데이터 유닛에 대한 하나 이상의 값들을 수신하는 것을 포함할 수도 있다. 상기 제 1 데이터 소스는 데이터베이스일 수도 있다. 상기 제 1 데이터 소스는 데이터 기록 (archive) 파일일 수도 있다.
상기 제 2 모드에서 상기 특정한 데이터 유닛을 처리하는 것은, 상기 정돈된 서브세트의 적어도 제 1 데이터 유닛에 대해서, 상기 제 1 데이터 유닛에 대한 미리 획득된 값들이 데이터 유닛 캐시 내에 존재하고 유효한가 여부를 결정하는 것, 그리고 만약 상기 미리 획득된 값들이 존재하고 유효한 것으로 결정되면 상기 데이터 유닛 캐시로부터 상기 제 1 데이터 유닛에 대한 하나 이상의 값들을 획득하고, 그렇지 않으면 상기 제 1 데이터 소스를 포함하는 하나 이상의 데이터 소스들로부터 상기 제 1 데이터 유닛에 대한 하나 이상의 값들을 획득하는 것을 포함할 수도 있다.
상기 제 1 데이터 유닛에 대한 미리 획득된 값들이 유효한가 여부를 결정하는 것은, 상기 미리 획득된 값들이 획득된 이후 경과 된 시간을 미리 결정된 경과 시간 임계값에 비교하는 것을 포함할 수도 있다. 상기 하나 이상의 데이터 소스들로부터 제 1 데이터 유닛에 대한 하나 이상의 값들을 획득하는 것은, 상기 제 1 데이터 유닛에 대한 하나 이상의 값들을 수신하기 위해 상기 제 1 데이터 소스로의 연결을 개방하는 것, 그리고 상기 복수의 데이터 유닛들의 다른 데이터 유닛들에 대한 하나 이상의 값들을 수신하기 위해 상기 연결을 개방 상태에서 유지하는 것을 포함할 수도 있다. 상기 하나 이상의 데이터 소스들로부터 상기 제 1 데이터 유닛에 대한 하나 이상의 값들을 획득하는 것은, 상기 제 1 데이터 소스로의 미리 개방된 연결로부터 상기 제 1 데이터 유닛에 대한 하나 이상의 값들을 수신하는 것을 포함할 수도 있다.
다른 측면에서, 일반적으로, 하나 이상의 데이터 소스들로부터 데이터에 규칙을 적용하기 위한, 컴퓨터 판독 가능한 매체에 비 일시적인 형태로 저장된 소프트웨어는 컴퓨팅 시스템으로 하여금, 제 1 데이터 소스로부터 데이터를 수신하는 것, 상기 규칙을 적용하는 적어도 둘의 상이한 모드들 중 선택된 하나의 모드에서 상기 제 1 데이터 소스로부터 수신된 데이터로부터 적어도 부분적으로 유도된 복수의 데이터 유닛들을 처리하는 것을 수행하게 하기 위한 명령어들을 포함한다. 상기 모드들은, 제 1 모드로서, 상기 복수의 데이터 유닛들은 특정한 순서에 따라 수신되고, 상기 복수의 데이터 유닛들을 처리하는 것은, 상기 복수의 데이터 유닛들의 적어도 일부의 각각에 대해, 상기 데이터 유닛에 규칙을 적용한 결과에 기초하여 적어도 하나의 상태 변수에 업데이트된 값을 기록하는 것을 포함하는, 상기 제 1 모드, 및 제 2 모드로서, 상기 복수의 데이터 유닛들의 특정한 데이터 유닛의 선택이 수신되는, 상기 제 2 모드를 포함한다. 상기 특정한 데이터 유닛을 처리하는 것은, (1) 상기 복수의 데이터 유닛들로부터 데이터 유닛들의 정돈된 서브세트를 포함하는 데이터 유닛들의 제 1 세트를 결정 - 상기 정돈된 서브세트에 포함된 각각의 데이터 유닛은 상기 복수의 데이터 유닛들 내의 특정한 데이터 유닛보다 먼저 발생함 - 하는 것, (2) 상기 특정한 데이터 유닛에 규칙을 적용하기에 앞서, 적어도 하나의 상태 변수를 상기 제 1 모드 내의 데이터 유닛들의 제 1 세트를 처리하는 것으로부터 유래될 수 있는 상태로 업데이트하는 것, 그리고 (3) 상기 상태 변수의 업데이트된 값을 판독하는 것을 포함하여 상기 특정한 데이터 유닛에 규칙을 적용하는 것을 포함한다.
다른 측면에서, 일반적으로, 하나 이상의 데이터 소스들로부터 데이터에 규칙을 적용하기 위한 방법은, 제 1 데이터 소스로부터 데이터를 수신하는 단계, 및 상기 규칙을 적용하는 적어도 둘의 상이한 모드들 중 선택된 하나의 모드에서 상기 제 1 데이터 소스로부터 수신된 데이터로부터 적어도 부분적으로 유도된 복수의 데이터 유닛들을 처리하는 단계를 포함한다. 상기 모드들은, 제 1 모드로서, 상기 복수의 데이터 유닛들은 특정한 순서에 따라 수신되고, 상기 복수의 데이터 유닛들을 처리하는 것은, 상기 복수의 데이터 유닛들의 적어도 일부의 각각에 대해, 상기 데이터 유닛에 규칙을 적용한 결과에 기초하여 적어도 하나의 상태 변수에 업데이트된 값을 기록하는 것을 포함하는, 상기 제 1 모드, 및 제 2 모드로서, 상기 복수의 데이터 유닛들의 특정한 데이터 유닛의 선택이 수신되는, 상기 제 2 모드를 포함한다. 상기 특정한 데이터 유닛을 처리하는 것은, (1) 상기 복수의 데이터 유닛들로부터 데이터 유닛들의 정돈된 서브세트를 포함하는 데이터 유닛들의 제 1 세트를 결정 - 상기 정돈된 서브세트에 포함된 각각의 데이터 유닛은 상기 복수의 데이터 유닛들 내의 특정한 데이터 유닛보다 먼저 발생함 - 하는 것, (2) 상기 특정한 데이터 유닛에 규칙을 적용하기에 앞서, 적어도 하나의 상태 변수를 상기 제 1 모드 내의 데이터 유닛들의 제 1 세트를 처리하는 것으로부터 유래될 수 있는 상태로 업데이트하는 것, 그리고 (3) 상기 상태 변수의 업데이트된 값을 판독하는 것을 포함하여 상기 특정한 데이터 유닛에 규칙을 적용하는 것을 포함한다.
측면들은 하기의 장점들 중 하나 이상을 포함할 수 있다.
본원에 개시된 어떤 측면들은, 아래에서 보다 상세하게 개시되는 바와 같이, 시스템이 단일 유닛 테스트 모드, 일괄 (batch) 테스트 모드, 및 생산 모드에서 규칙을 적용할 때, 일관된 결과들을 생성하는 것을 보장하면서, 종래 시스템들과 비교하여 규칙들을 명시하고 적용하기 위한 시스템의 성능 (performance) 및 기능 (functionality) 을 향상시킨다.
어떤 종래 시스템들과 비교하여, 본원에 개시된 측면들은 고정된 테스트 환경을 요구하지 않는다. 이것은 측면들이 복잡한 사건 처리에 있어 효율적으로 작동할 수 있고 개발자들로 하여금 고정된 테스트 환경에 맞추기 위해 그들이 규칙들을 기록하는 방식을 변경하도록 야기할 가능성이 적기 때문에 유리할 수 있다.
본 발명의 다른 특징들 및 장점들은 하기의 설명들로부터, 그리고 특허청구범위들로부터 명확해질 것이다.
도 1 은 데이터에 대해 규칙들을 명시하고 적용하기 위한 시스템의 블록 다이어그램이다.
도 2 는 데이터에 대해 규칙들을 명시하고 적용하기 위한 사용자 인터페이스이다.
도 3 은 데이터 소스들에 대한 사용자 인터페이스의 엘리먼트들의 연계를 나타내는 블록 다이어그램이다.
도 4 는 규칙의 일괄 어플리케이션 내의 제 1 단계의 다이어그램이다.
도 5 는 규칙의 일괄 어플리케이션 내의 제 2 단계의 다이어그램이다.
도 6 은 규칙의 일괄 어플리케이션 내의 제 3 단계의 다이어그램이다.
도 7 은 규칙의 단일 유닛 어플리케이션 내의 제 3 단계의 다이어그램이다.
도 8 은 규칙의 단일 유닛 어플리케이션 내의 제 1 단계의 다이어그램이다.
도 9 는 규칙의 단일 유닛 어플리케이션 내의 제 2 단계의 다이어그램이다.
도 10 은 예시적인 복잡한 사건 처리 루틴의 상태 다이어그램이다.
도 11 은 복잡한 사건 처리를 위한 시스템을 구성하기 위한 사용자 인터페이스이다.
1. 개요
도 1 은 개발자 (110) 로 하여금 데이터의 하나 이상의 소스들로부터 데이터 (예를 들어, 데이터베이스 레코드들) 로 어플리케이션을 위한 데이터 처리 규칙들을 명시하는 것을 가능하게 하는 데이터 처리 시스템 (100) 의 실시예를 도시한다. 생산 환경으로 릴리즈되기에 앞서 개발자 (110) 에 의해 명시된 데이터 처리 규칙들이 정확히 기능하는 것이 중요하기 때문에, 시스템 (100) 은 개발자 (110) 로 하여금 데이터 처리 규칙을 릴리즈하기에 앞서 테스트 데이터에 반대하여 데이터 처리 규칙들의 기능성을 테스트하는 것을 허용하도록 구성된다. 일부 실시예들에서, 시스템 (100) 은 개발자 (110) 로 하여금 단일 유닛 테스트 모드 또는 일괄 (batch) 테스트 모드에서 데이터 처리 규칙들의 기능성을 테스트하는 것을 허용한다. 단일 유닛 테스트 모드에서, 개발자 (110) 에 의해 명시된 데이터 처리 규칙은 한번에 하나의 테스트 데이터 유닛에 대해 적용된다. 일괄 테스트 모드에서, 개발자 (110) 에 의해 명시된 데이터 처리 규칙들은 한번에 복수의 테스트 데이터 유닛들에게 적용된다.
시스템 (100) 은 시스템 (100) 에 데이터를 공급하기 위한 데이터 소스 (102), 데이터 처리 규칙들을 명시하기 위한 사용자 인터페이스 (112) (예를 들어, 디스플레이 스크린 상의 그래픽의 뷰), 및 상기 데이터 소스 (102) 에 의해 공급된 데이터에 대한 데이터 처리 규칙들을 적용하기 위한 실행 모듈 (104) 을 포함한다.
1.1 데이터 소스
일반적으로, 데이터 소스 (102) 는 스토리지 디바이스들 또는 온라인 데이터 스트림들에 대한 연결들과 같은 데이터의 하나 이상의 소스들을 포함하고, 그것들의 각각은 다양한 포맷들 (예를 들어, 데이터베이스 테이블들, 스프레드시트 파일들, 플랫 텍스트 파일들, 또는 메인프레임에 의해 사용되는 네이티브 포맷) 중 임의의 포맷으로 데이터를 저장하거나 제공할 수도 있다. 도 1 의 예시적인 시스템 (100) 에서, 데이터 소스 (102) 는 테스트 데이터세트 (114), 신용 카드 잔고 데이터세트 (116), 및 얼마간의 최근 구매들의 기록 (archive) (118) 을 포함한다. 상기 개시된 데이터 소스 (102) 에 포함된 데이터 소스들의 세트는 데이터 소스 (102) 에 포함될 수도 있는 데이터 소스들의 세트의 단지 하나의 예시일 뿐임에 주목한다. 실제로, 시스템 (100) 의 구체적인 어플리케이션에 의존하여, 데이터 콘텐츠의 상이한 타입들을 가지는 많은 상이한 타입들의 데이터 소스들이 데이터 소스 (102) 내에 포함될 수 있다.
데이터 소스 (102) 에 포함되는 데이터세트들의 적어도 일부는 얼마간의 레코드들 (예를 들어, 미리 결정된 레코드 구조에 따라 포맷된 레코드들, 또는 데이터베이스 테이블 내의 열 (row) 들) 을 포함한다. 상기 얼마간의 레코드들의 각각의 엘리먼트는, 가능한 가치 없는 (null) 또는 비어 있는 (empty) 값들을 포함하여, 얼마간의 필드들 (예를 들어, 레코드 기록 내에서 정의된 속성들, 또는 데이터베이스 테이블 내의 컬럼들) (예를 들어, "이름 (first name)", "성 (last name)", "이메일 주소", 등) 에 대한 값들을 포함할 수 있다.
일부 구현들에서, 데이터 소스 (102) 에 포함된 데이터의 소스들의 하나는 데이터의 주요한 (primary) 소스로서 지정되고 데이터 소스 (102) 에 포함된 나머지 데이터의 소스들은 데이터의 주요한 소스와 연관된 데이터의 보조적인 (auxiliary) 데이터 소스들로서 지정된다. 매우 일반적으로, 데이터 처리 규칙들은 주요한 데이터 소스 내의 레코드들의 미리 정의된 세트의 각각의 레코드의 적어도 일부의 필드들에 적용된다. 주요한 데이터 소스의 레코드들에 대한 데이터 처리 규칙들의 어플리케이션 동안, 보조적인 데이터 소스들은 데이터 처리 규칙들에 의해 요구되고 주요한 데이터 소스로부터의 레코드들에 연관되는 다른 값들 또는 심지어 다른 레코드들을 획득하기 위해 액세스된다. 예를 들어, 주요한 데이터세트의 각각의 레코드들은 키 (예를 들어, 계좌 번호) 를 포함할 수도 있고, 이것은 보조적인 데이터 소스들로부터 연관된 데이터를 액세스하기 위해 사용된다. 아래에서 보다 구체적으로 개시되는 바와 같이, 주요한 데이터 소스 및 보조적인 데이터 소스로부터의 데이터는 "테스트 데이터 유닛"으로서 지칭되는, 유닛으로서의 테스트를 위해 수집될 수 있다. 도 1 의 예시적인 시스템에서, 주요한 데이터 소스는 테스트 데이터세트 (114) 이고, 데이터 소스 (102) 에 포함된 보조적인 데이터 소스들은 신용 카드 잔고 데이터세트 (116) 및 얼마간의 최근 구매 기록 파일 (118) 이다.
하기에서 더욱 더 구체적으로 개시되는 바와 같이, 시스템 (100) 은 보조적인 데이터 소스들의 고정적인 시뮬레이션으로서, 개발 및 테스트가 시작되기 전에 결정 및 저장되어야만 하는 고정된 테스트 값들을 요구하는 대신에, 데이터 처리 규칙들의 개발 및 테스트 동안 보조적인 데이터 소스들에 동적으로 액세스할 수 있도록 구성된다.
1.2 사용자 인터페이스
하기에서 도 2 를 참조하여 더욱 구체적으로 개시되는 사용자 인터페이스 (112) 는 개발자 (110) 로 하여금 테스트 데이터 유닛들을 처리하기 위해 사용되는 데이터 처리 규칙들의 세트를 명시하는 것을 가능하게 한다. 사용자 인터페이스 (112) 의 출력은 하나 이상의 데이터 처리 규칙들의 명세 (specification) 이다. 사용자 인터페이스 (112) 에 의해 생성된 하나 이상의 데이터 처리 규칙들의 명세는 실행 환경 (104) 으로 제공된다.
1.3 실행 환경
실행 환경 (104) 은 사용자 인터페이스 (UI) 모듈 (106), 처리 모듈 (108), 및 파라미터들의 세트 (120) 를 포함한다. 처리 모듈 (108) 은 상태 메모리 (122) 를 포함한다. 일부 예시들에서, 파라미터들의 세트 (120) 및 상태 메모리 (122) 는 데이터 처리 규칙들의 어플리케이션 동안 동적으로 액세스될 수 있는 추가의 보조적인 데이터 소스들로서 서빙한다.
사용자 인터페이스 (122) 로부터의 하나 이상의 데이터 처리 규칙들의 명세는 UI 모듈 (106) 로 제공되고, 이것은 상기 명시된 데이터 처리 규칙들을 처리 모듈 (108) 에 의해 사용될 수 있는 형태로 변환 (예를 들어, 컴파일 또는 인터프리팅) 한다. 처리 모듈 (108) 은 데이터 처리 규칙들의 사용가능한 형태, 파라미터들의 세트 (120), 및 데이터 소스 (102) 로부터의 데이터 유닛들을 입력으로서 수신하고, 데이터 처리 규칙들 및 파라미터들의 세트 (120) 에 따라 데이터 소스 (102) 로부터의 데이터 유닛들을 처리한다. 일부 실시예들에서, 아래에서 보다 구체적으로 설명되는 바와 같이, 데이터 소스 (102) 로부터의 데이터를 처리할 때 상태 메모리 (122) 는 하나의 테스트 데이터 유닛으로부터 다음으로 상태를 보존한다. 데이터 소스 (102) 로부터의 데이터를 처리한 결과들은 다시 UI 모듈 (106) 로 제공되고, 이어서 다시 사용자 인터페이스 (122) 로 제공되고, 여기서 그들은 개발자 (110) 에게 표시된다.
실행 환경 (104) 은 예를 들어, UNIX 운영 체계의 한 버전과 같은, 적절한 운영 체계의 제어 아래에 있는 하나 이상의 일반 목적의 컴퓨터들 상에서 호스팅될 수도 있다. 예를 들어, 실행 환경 (104) 은 복수의 중앙 처리 장치 (CPU) 들 또는 프로세서 코어들을 사용하는 컴퓨터 시스템들의 구성을 포함하는 멀티 노드 병렬 컴퓨팅 환경, 지역적 (예를 들어, SMP (symmetric multi-processing) 컴퓨터들과 같은 멀티프로세서 시스템들), 또는 지역적으로 분산된 (예를 들어, 클러스터들로서 커플링된 복수의 프로세서들 또는 MPP (massively parallel processing) 시스템들), 또는 원격의, 또는 원격으로 분산된 (LAN (local area network) 및/또는 WAN (wide-area network) 을 통해 커플링된 복수의 프로세서들), 또는 이들의 임의의 조합을 포함할 수 있다.
데이터 소스 (102) 를 제공하는 스토리지 디바이스들은 예를 들어, 실행 환경 (104) 을 호스팅하는 컴퓨터에 연결된 저장 매체 (예를 들어, 하드 드라이브) 상에 저장되어 실행 환경 (104) 에 대해 지역적일 수도 있고, 또는 예를 들어, 원격 연결 (예를 들어, 클라우드 컴퓨팅 인프라스트럭쳐에 의해 제공됨) 을 통해, 실행 환경 (104) 을 호스팅하는 컴퓨터와 통신하는 원격 시스템 (예를 들어, 메인프레임) 상에서 호스팅되어, 실행 환경 (104) 에 대해 원격일 수도 있다.
2. 예시적인 사용자 인터페이스
도 2 를 참조하면, 사용자 인터페이스 (112) 하나의 실시예는 개발자 (110) 로 하여금 데이터 처리 규칙들을 명시하고 테스트하는 것을 허용하도록 구성된다. 사용자 인터페이스 (112) 는 UI 모듈 (106) (예를 들어, 컴퓨터 모니터) 을 통해 렌더링되고 2 차원 그리드 (224), 데이터 유닛 넘버 제어 (226), 단일 유닛 테스트 제어 (228), 및 일괄 테스트 제어 (230) 를 포함한다. 매우 일반적으로, 개발자 (110) 는 2 차원 그리드 (224) 를 이용하여 데이터 처리 규칙을 명시할 수 있고, 이어서 단일 유닛 테스트 제어 (228) 를 이용하여 단일 테스트 데이터 유닛 (데이터 유닛 넘버 제어 (226) 에 의해 명시됨) 상에서, 또는 일괄 테스트 제어 (230) 를 이용하여 테스트 데이터 유닛들의 전체 세트 상에서 데이터 처리 규칙을 테스트할 수 있다. 대안적으로, 일부 구현들에서, 개발자 (110) 가 데이터 유닛 넘버 제어 (226) 에 의해 명시된 데이터 유닛을 변경한 이후에, UI 모듈 (106) 은 개발자 (110) 가 명시적인 명령을 입력하지 않아도 그 선택에 응답하여 선택된 테스트 데이터 유닛 상에서 데이터 처리 규칙의 테스트를 자동적으로 개시할 수도 있다.
2 차원 그리드 (224) 는 얼마간의 컬럼들 (232) 및 얼마간의 열들 (234) 을 포함한다. 컬럼들 (232) 은 입력 컬럼들 및 출력 컬럼들의 두 가지 컬럼 타입들로 나뉜다. 도 2 의 실시예에서, 2 차원 그리드 (224) 는 5 개의 입력 컬럼들: 거래량 (Transaction Amout) 컬럼, 신용 카드 잔고 (Credit Card Balance) 컬럼, 최근 구매 개수 (Num. Recent Purchases) 컬럼, 최근 경고 개수 (Num. Recent column) 컬럼, 및 리스크 레벨 (Risk Level) 컬럼을 포함한다. 매우 일반적으로, 각각의 입력 컬럼은 주요한 입력 데이터세트 (114) 로부터의 필드, 또는 보조적인 데이터 소스 (102) 로부터의 필드와 연관될 수도 있고, 이것으로부터 필드 값이 획득될 수도 있다 (예를 들어, 로 (raw) 값으로서 또는 표현의 일부로서 사용을 위해). 일부 예시들에서, 입력 칼럼들과 연관된 필드들을 위한 값들의 각각의 세트는 "테스트 데이터 유닛"으로서 지칭된다. 일부 예시들에서, 입력 컬럼들은 일시적인 변수, 상수, 또는 다른 자유 형식의 입력 값과 같은, 필드 이외의 소스들로부터의 값들과 연관될 수 있다.
도 2 의 실시예에서, 2 차원 그리드 (224) 는 단일 출력 컬럼: 경고 (Alert) 를 포함한다. 일부 예시들에서, 경고 출력 컬럼은 그것의 출력의 값에 기초하여 이벤트 (예를 들어, 텍스트 메시지를 전송) 을 트리거한다.
2 차원 그리드 (224) 의 열들 (234) 및 입력 컬럼들의 교차점들에서의 셀들 (236) 의 적어도 일부는 제약을 포함한다. 일부 예시들에서, 제약들의 적어도 일부는 데이터 소스 (102) 로부터의 주어진 데이터 유닛에 대한 필드의 값과 비교 값 (예를 들어, 달러 양) 사이의 비교 (예를 들어, 초과, 미만, 또는 동일) 를 나타낸다. 2 차원 그리드 (224) 의 주어진 열의 셀들 내의 제약들과 함께 규칙 케이스를 정의하고 각각의 출력 값은 만약 상기 규칙 케이스가 충족되었을 경우, 규칙의 출력을 정의한다. 일반적으로, 규칙 케이스가 충족되기 위해, 규칙 케이스들을 위한 모든 제약들은 반드시 충족되어야만 한다.
도 2 의 실시예에서, 제 1 열은 제 1 규칙 케이스를 정의하고, 제 1 출력 값은 하기와 같다.
만약 거래량 입력 데이터의 값이 $10,000 보다 크고 (AND)
신용 카드 잔고 입력 데이터의 값이 $5,000 보다 크고 (AND)
최근 구매 개수 입력 데이터의 값이 3 보다 작고 (AND)
최근 경고 개수 입력 데이터의 값이 1 보다 작고 (AND)
리스크 레벨이 "보통 (Normal)" 이면, (THEN)
경고 상태 출력은 "예 (YES)" 의 값으로 할당될 것이다.
유사하게, 제 2 열은 제 2 규칙 케이스를 정의하고, 제 2 출력 값은 하기와 같다.
만약 거래량 입력 데이터의 값이 $5,000 보다 크고 (AND)
신용 카드 잔고 입력 데이터의 값이 $5,000 보다 크고 (AND)
최근 구매 개수 입력 데이터의 값이 3 보다 작고 (AND)
최근 경고 개수 입력 데이터의 값이 1 보다 작고 (AND)
리스크 레벨이 "높음 (High)" 이면, (THEN)
경고 상태 출력은 "예 (YES)" 의 값으로 할당될 것이다.
마지막으로, 제 3 열은 제 3 규칙 케이스를 정의하고, 제 3 출력 값은 하기와 같다.
만약 거래량 입력 데이터의 값이 $5,000 보다 작으면 (THEN)
경고 상태 출력은 "아니오 (NO)" 의 값으로 할당될 것이다.
임의의 다른 열들은 아래 방향으로 지시하는 화살표들에 의해 지시되는 바와 같이, "아니오 (NO)" 의 기본 출력 값을 가지는 기본 규칙 케이스를 나타내고, 이것은 화살표의 가장 위에서의 셀 값은 화살표를 포함하는 박스 내의 모든 셀들에 대해서 반복된다는 것을 (입력 및 출력 컬럼들 양쪽 모두에 대해) 나타낸다.
3. 데이터 처리 규칙 어플리케이션
상기 언급된 바와 같이, 데이터 소스 (102) 내의 데이터의 소스들로부터의 하나 이상의 데이터 유닛들에 데이터 처리 규칙을 적용하기 위해, 사용자 인터페이스 (112) 는 UI 모듈 (106) 로 데이터 처리 규칙의 명세를 제공한다. UI 모듈 (106) 은 데이터 처리 규칙의 명세를 처리 모듈 (108) 에 의해 사용 가능한 형태로 (예를 들어, 컴필레이션, 인터프리테이션, 또는 어떤 다른 변환을 통해) 처리한다. 데이터 처리 규칙의 이용 가능한 형태는 하나 이상의 데이터 유닛들에 대한 입력을 제공하기 위해 데이터 소스 (102) 로부터의 하나 이상의 레코드들 또는 다른 값들과 함께 처리 모듈 (108) 로 제공된다. 처리 모듈 (108) 은 하나 이상의 데이터 유닛들에 데이터 처리 규칙을 적용하고 하나 이상의 출력 값들을 돌려받는다.
일반적으로, 2 차원 그리드 (224) 의 열들 (234) 에서 정의된 규칙 케이스들은 우선권에 의해 정돈 (ordered) 되고 그리하여 낮은 열 넘버를 가지는 규칙 케이스들 (예를 들어, 제 1 열) 은 높은 열 넘버를 가지는 규칙 케이스들 (예를 들어, 제 2 열) 보다 높은 우선권을 가진다. 2 차원 그리드 (224) 의 열들 (234) 과 연관된 우선권들은 처리 모듈 (108) 이 규칙을 적용할 때 고려된다. 그리하여, 제 1 열에서 정의된 규칙 케이스는 처음으로 테스트된다. 만약 제 1 열에서 정의된 규칙 케이스가 충족되면 (때때로 트리거되는 것으로 지칭됨), 제 1 열에서 정의된 출력 값들이 반환되고 규칙의 어플리케이션은 낮은 우선권을 가지는 열들에서 정의된 규칙 케이스들을 테스트하지 않고 종료한다. 만약 제 1 열에서 정의된 규칙 케이스가 충족되지 않으면, 처리 모듈 (108) 은 제 2 열에서 정의된 규칙 케이스를 테스트한다. 만약 제 2 열에서 정의된 규칙 케이스가 충족되면, 제 2 열에서 정의된 출력 값들이 반환되고 규칙의 어플리케이션은 낮은 우선권을 가지는 열들에서 정의된 규칙 케이스들을 테스트하지 않고 종료한다. 처리 모듈 (108) 은 2 차원 그리드 (224) 의 가장 낮은 우선권의 열에서 정의된 규칙 케이스가 테스트되고 2 차원 그리드 (224) 의 가장 낮은 우선권의 열에서 정의된 기본 출력 값들이 반환될 때까지 이러한 처리를 반복한다.
4. 테스트 결과의 표시
일부 실시예들에서, 처리 모듈 (108) 에 의해 반환되는 하나 이상의 출력 값들은 UI 모듈 (106) 로 제공되고, 개발자 (110) 로의 표시를 위해 차례로 하나 이상의 출력 값들을 사용자 인터페이스 (112) 로 제공한다. 개발자 (110) 는 이어서 데이터 처리 규칙이 바람직한 기능성에 일치하는지 여부를 결정하기 위해 사용자 인터페이스 (112) 내에서 데이터 처리 규칙의 적용 결과 (예를 들어, 하나 이상의 출력 값들) 를 관측한다. 만약 필요하면, 개발자 (110) 는 사용자 인터페이스 (112) 를 통하여 데이터 처리 규칙에 대해 변화들을 가할 수도 있다. 상호작용하는 피드백을 위한 이러한 능력은 본원에 개시된 단일 유닛 테스트 모드, 일괄 테스트 모드, 및 생산 모드에서 일정한 결과들을 획득하기 위한 접근들에 의해 가능하게 된다.
5. 인터 -테스트 (Inter-test) 데이터 유닛 의존성 (Dependency)
상기 언급된 바와 같이, 일부 실시예들에서, 사용자 인터페이스 (112) 의 2 차원 그리드 (224) 의 컬럼들과 연관된 필드들은, 일부는 데이터 소스 (102) 에 포함되고 일부는 실행 환경 (104) 이내에 포함되거나 그렇지 않으면 그로부터 액세스 가능한, 다양한 보조적인 데이터 소스들로부터 유도될 수 있다. 도 3 을 참조하면, 도 2 의 예시적인 데이터 처리 규칙에 대한 2 차원 그리드 (224) 는 그로부터 2 차원 그리드 (224) 의 컬럼들 (232) 과 연관된 필드들이 유도되는 다양한 예시적인 데이터 소스들과 함께 도시된다. 도 3 에 도시된 데이터 소스들은 설명을 위한 목적으로만 포함되며, 사용자 인터페이스 (112) 을 통해 개발자 (110) 에게 통상적으로 디스플레이되는 것은 아님에 주목한다.
도 3 에서, 2 차원 그리드 (224) 의 제 1 컬럼과 연관된 거래량 필드는 테스트 데이터세트 (114) 내에 나타나는 레코드들 내의 대응하는 필드로부터 유도되고, 2 차원 그리드 (224) 의 제 2 컬럼과 연관된 신용 카드 잔고 필드는 신용 카드 잔고 데이터세트 (116) 내에 나타나는 레코드들 내의 대응하는 필드로부터 유도되고, 2 차원 그리드 (224) 의 제 3 컬럼과 연관된 최근 구매 개수 필드는 최근 구매 기록 (118) (예를 들어, 미국 등록 특허 8,229,902 에 보다 자세하게 개시된 바와 같이, ICFF (indexed compressed flat file) 와 같은 기록) 으로부터 유도되고, 2 차원 그리드 (224) 의 제 4 컬럼과 연관된 최근 경고 개수 필드는 상태 메모리 (122) 내에 저장된 값으로부터 유도되고, 2 차원 그리드 (224) 의 제 5 컬럼과 연관된 리스크 레벨 필드는 파라미터들의 세트 (120) 로부터의 파라미터 값으로부터 유도된다. 도 3 의 실시예에서, 테스트 데이터세트 (114) 는 주요한 데이터 소스이고, 신용 카드 잔고 데이터세트 (116), 최근 구매 기록 (118), 상태 메모리, 및 외부 파라미터 (120) 는 전부 보조적인 데이터 소스들임에 주의한다. 또한, 테스트 데이터세트 (114) 의 레코드들로부터의 정보 (예를 들어, 키) 는 보조적인 데이터 소스들로 공급되어 그들은 테스트 데이터세트 (114) 의 레코드들과 연관된 보조적인 데이터를 액세스할 수 있음을 유의한다.
도 3 에 도시된 바와 같이, 일부 실시예들에서, 특정 출력 컬럼들에 대한 출력 값들은 특정 입력 컬럼들과 연관된 데이터 소스들을 업데이트하기 위해 사용될 수도 있다. 예를 들어, 도 3 의 경고 출력 컬럼 (340) 의 출력 값은 상태 메모리 (122) 를 업데이트하기 위해 사용되고, 그로부터 최근 경고 개수라고 명명된 제 4 의 입력 컬럼이 그것의 입력 데이터를 유도한다. 즉, 도 3 의 2 차원 그리드 (224) 에 의해 명시된 규칙을 적용한 결과가 YES 의 경고 값을 야기할 경우, 상태 메모리 (122) 내의 최근 경고 개수 필드는 증가하고, 경고가 최근에 발행되었음을 지시한다. 규칙 어플리케이션의 출력을 데이터 처리 규칙에 대한 입력으로서 사용되는 데이터 소스들로 저장하는 것에 의해, 인터-데이터 유닛 의존성들은 상이한 테스트 데이터 유닛들 간에 설립될 것이다.
인터-데이터 유닛 의존성들을 가지는 테스트 데이터 유닛들에 대해, 제 1 테스트 데이터 유닛 (450) 에 대한 데이터 처리 규칙의 어플리케이션의 결과는 하나 이상의 다른, 상이한 테스트 데이터 유닛들에 대한 데이터 처리 규칙의 적용의 결과들에 의존할 것이다.
6. 일괄 테스트
일괄 테스트 모드에서 테스트 데이터 유닛들에 데이터 처리 규칙을 적용할 경우에, 생산 환경 내에서 배치된 데이터 처리 시스템 내에서 수행되거나 생산 모드에서 수행하는 것과 같이, 데이터 처리 규칙은 미리 정의된 순서로 (통상적으로 주요한 데이터 소스로부터 그것이 유도된 테스트 데이터 유닛들 내의 값들과 연관됨) 테스트 데이터 유닛들에 적용된다. 테스트 데이터 유닛에 대한 도 2 의 데이터 처리 규칙의 어플리케이션 각각에 대해, 경고 출력 값이 생성되고 상태 메모리 (122) 는 경고 출력 값에 기초하여 업데이트된다. 일괄 테스트는 (테스트 데이터 유닛들의 미리정의된 서브세트의) 제 1 테스트 데이터 유닛 으로부터 시작하여 모든 테스트 데이터 유닛들을 처리하기 때문에, 주어진 테스트 데이터 유닛에 대해서, 이전의 모든 테스트 데이터 유닛들은 데이터 처리 규칙을 그들에게 적용되도록 하였다. 그리하여, 상태 메모리 (122) 는 상기 이전 테스트 데이터 유닛들에 대한 데이터 처리 규칙의 어플리케이션에 의해 생성된 경고 출력 값들을 반영한다.
도 4 내지 6 은, 고객 (customer) 계좌 키 값 (이 실시예에서 "Customer A," "Customer B," 등으로 레이블 됨) 에 의해 식별되는 주어진 고객에 대한 테스트 데이터 유닛들의 집합 (batch) 에 대한 일괄 테스트 모드 내의 도 2 의 데이터 처리 규칙의 예시적인 어플리케이션을 도시한다. 이러한 실시예에서, 각각의 테스트 데이터 유닛은 주요한 테스트 데이터세트 (114) 로부터 유도된 주어진 고객에 대한 거래량과, 보조적인 데이터 소스들 (116, 118, 120, 122) 로부터 유도된, 고객의 신용 카드 잔고, 고객에 대한 얼마 간의 최근 구매, 고객에 대해 발행된 얼마 간의 최근 경고들, 및 고객에 대한 리스크 레벨 파라미터를 포함하는 얼마 간의 보조적인 값들을 포함한다. 최근 경고들의 개수는 상이한 고객들에 대해 메모리 (122) 내의 상이한 개별적인 상태 변수들 내에 저장된다. 상이한 고객들에 대한 테스트 데이터 유닛들은 테스트되는 테스트 데이터 유닛들의 집합 내에서 인터리브 (interleave) 될 수 있다. 이러한 실시예에서, 순서 키 값들 1, 2, 및 10 을 가지는 테스트 데이터 유닛들은 고객 (Customer) A 에 대한 것이고, 순서 키 값들 3 내지 9 를 가지는 테스트 데이터 유닛은 다른 고객들에 대한 것이라고 가정된다.
도 4 를 참조하면, (순서 키 값 1 을 가지는) 고객 A 에 대한 제 1 테스트 데이터 유닛 (450) 은 $100 의 제 1 거래량 (441), $0 의 신용 카드 잔고 (442), 0 의 최근 구매 회수 값 (444), 0 의 최근 경고 회수 값 (446), "높음 (High)" 의 리스크 레벨 파라미터 값 (448) 을 포함한다. 도 2 에 명시된 데이터 처리 규칙을 적용하기 위해, 처리 모듈 (108) 은 먼저 제 1 테스트 데이터 유닛 (450) 에 데이터 처리 규칙의 제 1 규칙 케이스를 적용한다. 제 1 규칙 케이스를 충족시키기 위한 하나의 요구는 거래량 (441) 이 반드시 $10,000 을 초과해야만 한다는 것이다. 제 1 테스트 데이터 유닛 (450) 에 대한 거래량 (441) 은 $100 이므로, 제 1 테스트 데이터 유닛 (450) 에 의해 상기 제 1 규칙 케이스가 충족되지 않는다. 처리 모듈 (108) 은 이어서 제 1 테스트 데이터 유닛 (450) 에 데이터 처리 규칙의 제 2 규칙 케이스를 적용한다. 제 2 규칙 케이스를 충족시키기 위한 하나의 요구는 거래량 (441) 이 반드시 $5,000 을 초과해야만 한다는 것이다. 제 1 테스트 데이터 유닛 (450) 에 대한 거래량 (441) 은 $100 이므로, 제 1 테스트 데이터 유닛 (450) 에 의해 상기 제 2 규칙 케이스가 충족되지 않는다. 마지막으로, 처리 모듈 (108) 은 제 1 테스트 데이터 유닛 (450) 에 데이터 처리 규칙의 제 3 규칙 케이스를 적용한다. 제 3 규칙 케이스를 충족시키기 위한 유일한 요구는 거래량 (441) 이 $5,000 미만인 것이다. 제 1 테스트 데이터 유닛 (450) 에 대한 거래량 (441) 은 $100 이므로, 제 3 규칙 케이스는 충족된다. 제 3 규칙 케이스는 "아니오 (NO)"의 경고 값과 연관되었기 때문에, 제 1 테스트 데이터 유닛 (450) 에 대한 데이터 처리 규칙의 어플리케이션은 "아니오"의 경고 출력 값을 초래한다. "아니오"의 경고 출력 값이 출력이기 때문에, 최근 경고 개수는 상태 메모리 (122) 내에서 증가하지 않고 0 에서 유지한다.
일반적으로, 하나 이상의 다른 처리들은 테스트 데이터세트 (114) 내의 제 1 거래에 기초하여 신용 카드 잔고 데이터세트 (116) 내의 고객 A 의 신용 카드 잔고 (442) 의 값과 최근 구매 개수 기록 (118) 내의 고객 A 의 최근 구매 개수의 값 (444) 을 업데이트한다.
도 5 를 참조하면, (순서 키 값 2 를 가지는) 고객 A 에 대한 제 2 테스트 데이터 유닛 (552) 는, $5,100 의 제 2 거래량 (541), $100 의 신용 카드 잔고 (542), 1 의 최근 구매 개수 값 (544), 0 의 최근 경고 개수 값 (546), "높음 (High)" 의 리스크 레벨 파라미터 값 (548) 을 포함한다. 도 2 에 명시된 데이터 처리 규칙을 적용하기 위해, 처리 모듈 (108) 은 먼저 제 2 테스트 데이터 유닛 (552) 에 데이터 처리 규칙의 제 1 규칙 케이스를 적용한다. 제 1 규칙 케이스를 충족시키기 위한 하나의 요구는 거래량 (541) 이 반드시 $10,000 을 초과해야만 한다는 것이다. 제 2 테스트 데이터 유닛 (552) 에 대한 거래량 (541) 은 $5,100 이므로, 제 2 테스트 데이터 유닛 (552) 에 의해 상기 제 1 규칙 케이스가 충족되지 않는다. 처리 모듈 (108) 은 이어서 제 2 테스트 데이터 유닛 (552) 에 데이터 처리 규칙의 제 2 규칙 케이스를 적용한다. 제 2 테스트 데이터 유닛 (552) 내에서, 거래량 (541) 이 $5,000 을 초과하고, 최근 구매 개수 값 (544) 이 3 보다 작고, 최근 경고 개수 값 (546) 이 1 보다 작고, 리스크 레벨 값 (548) 이 "높음 (HIGH)" 이므로, 제 2 규칙 케이스는 충족된다. 제 2 규칙 케이스는 "예 (YES)"의 경고 값과 연관되었기 때문에, 제 2 테스트 데이터 유닛 (522) 에 대한 데이터 처리 규칙의 어플리케이션은 "예"의 경고 출력 값을 초래한다. 위에서 개시된 바와 같이, 데이터 처리 규칙의 어플리케이션이 "예"의 경고 출력 값을 초래하였기 때문에, 최근 경고 개수 상태 메모리 (122) 는 경고가 최근 발행되었음을 지시하기 위해 1 의 값을 증가시킨다.
이전의 데이터 유닛들에 대한 처리는 고객 계좌 키 값들과 매칭하는 나중의 데이터 유닛들에 대한 저장된 상태에만 영향을 미치기 때문에, 3 내지 9 의 순서 키 값을 가지는 테스트 데이터 유닛들은, 고객 A 에 대한 최근 경고 개수 값 (646) 을 변경하지 않고, 2 의 순서 키 값을 가지는 테스트 데이터 유닛 이후에 순차적으로 처리되었다.
도 6 을 참조하면, (순서 키 값 10 을 가지는) 고객 A 에 대한 제 3 테스트 데이터 유닛 (654) 는, $11,000 의 제 3 거래량 (641), $5,200 의 신용 카드 잔고 (642), 2 의 최근 구매 개수 값 (644), 1 의 최근 경고 개수 값 (646), "높음 (High)" 의 리스크 레벨 파라미터 값 (648) 을 포함한다. 도 2 에 명시된 데이터 처리 규칙을 적용하기 위해, 처리 모듈 (108) 은 먼저 제 3 테스트 데이터 유닛 (654) 에 데이터 처리 규칙의 제 1 규칙 케이스를 적용한다. 제 1 규칙 케이스를 충족시키기 위한 하나의 요구는 최근 경고 개수 (646) 가 반드시 1 보다 작은 값이어야만 한다는 것이다. 제 3 테스트 데이터 유닛 (654) 의 최근 경고 개수 값 (646) 은 1 이므로, 제 3 테스트 데이터 유닛 (654) 에 의해 상기 제 1 규칙 케이스가 충족되지 않는다. 처리 모듈 (108) 은 이어서 제 3 테스트 데이터 유닛 (654) 에 데이터 처리 규칙의 제 2 규칙 케이스를 적용한다. 제 2 규칙 케이스를 충족시키기 위한 하나의 요구는 최근 경고 개수 (646) 가 반드시 1 보다 작은 값이어야만 한다는 것이다. 제 3 테스트 데이터 유닛 (654) 의 최근 경고 개수 값 (646) 은 1 이므로, 제 3 테스트 데이터 유닛 (654) 에 의해 상기 제 2 규칙 케이스가 충족되지 않는다. 마지막으로, 처리 모듈 (108) 은 제 3 테스트 데이터 유닛 (654) 에 데이터 처리 규칙의 제 3 규칙 케이스를 적용한다. 제 3 규칙 케이스를 충족시키기 위한 유일한 요구는 거래량 (641) 이 $5,000 미만인 것이다. 제 3 테스트 데이터 유닛 (654) 에 대한 거래량 (641) 은 $11,000 이므로, 제 3 규칙 케이스는 충족되지 않는다. 충족된 규칙 케이스들을 가지지 않고, 데이터 처리 규칙은 "아니오 (NO)"의 기본 경고 출력 값을 반환한다.
7. 단일 유닛 테스트
일부 실시예들에서, 일괄 테스트 모드에서 테스트 데이터 유닛에 데이터 처리 규칙을 적용하기 보다는, 개발자 (110) 는 테스트 데이터세트 (114) 의 중간으로부터 레코드의 선택된 키 값에 대응하는 단일의, 선택된 테스트 데이터 유닛에 대해 데이터 처리 규칙을 적용할 수도 있다. 이러한 경우에, 만약 테스트 데이터 유닛의 값들이 미리 정의된 순서에 따라 선택된 데이터 유닛에 앞서 발생하는 데이터 유닛들 또는 값들에 대한 데이터 처리 규칙의 적용으로부터 유래된 상태를 정확하게 반영하지 않으면, 데이터 처리 규칙의 잘못된 출력이 발생할 수도 있다.
이러한 잘못된 출력을 피하기 위해서, 처리 모듈 (108) 은 선택된 데이터 유닛에 앞서 발생하는 테스트 데이터 유닛들의 서브세트를 결정하는 것에 의해 선택된 테스트 데이터 유닛을 처리하도록 구성된다. 일반적으로, 테스트 데이터 유닛들의 서브세트 내의 테스트 데이터 유닛들은 미리 정의된 순서 (예를 들어, 테스트 데이터세트 (114) 내의 레코드들로부터의 고유한 주요 키 필드의 정렬 순서, 또는 테스트 데이터세트 (114) 내의 레코드들의 저장 순서) 와 연관된다. 일부 실시예들에서, 테스트 데이터 유닛들의 서브세트 내의 테스트 데이터 유닛들은 전부 공통 식별자 (예를 들어, 고객 계좌 번호 필드와 같은, 테스트 데이터세트 (114) 내의 레코드들로부터의 고유하지 않은 키 필드의 값) 에 의해 연관된다. 선택된 테스트 데이터 유닛에 데이터 처리 규칙을 적용하기에 앞서, 처리 모듈은 미리 정의된 순서로 테스트 데이터 유닛들의 서브세트의 테스트 데이터 유닛들에 걸쳐 반복하고 각각의 테스트 데이터 유닛에 데이터 처리 규칙을 적용한다. 테스트 데이터 유닛들에 대한 데이터 처리 규칙의 어플리케이션의 적어도 일부에 대해, 데이터 처리 규칙의 어플리케이션에 의해 생성되는 출력은 상태 변수를 업데이트하기 위해 사용된다.
테스트 데이터 유닛들의 서브세트의 테스트 데이터 유닛들 전부에 대해 데이터 처리 규칙이 적용된 이후에, 상태 변수의 업데이트된 값이 판독되고 선택된 테스트 데이터 유닛에 대한 데이터 처리 규칙의 어플리케이션 내에서 사용된다.
선택된 테스트 데이터 유닛에 앞서 발생하는 모든 테스트 데이터 유닛들에 대해 데이터 처리 규칙이 적용된 것을 보장하는 것에 의해, 상태 변수의 값과 그에 따라 데이터 처리 규칙의 출력이 일괄 테스트 모드 및 생산 모드 내에서 획득될 수 있는 결과들과의 일치의 관점에서 정확한 것이 보장된다.
도 2 및 7 내지 9 를 참조하면, 단일 유닛 테스트 모드 처리의 일 실시예가 도시된다. 도 2 에서, 개발자 (110) 는 데이터 유닛 넘버 제어 (226) 를 이용하여 10 의 순서 키 값을 선택하였다. 단일 유닛 테스트 제어 (228) 를 누르는 것에 의해, 개발자 (110) 는 테스트 데이터세트 (114) 의 10 번째 레코드와 연관된 선택된 테스트 데이터 유닛에 데이터 처리 규칙을 적용하기 위한 바람을 지시한다. 도 7 을 참조하면, 테스트 데이터 유닛의 최근 경고 개수 필드 내의 부정확한 값에 기인하여 데이터 처리 규칙의 제 2 규칙 케이스가 부정확하게 충족되었기 때문에, 단순히 그들의 개별적인 데이터 소스들로부터 선택된 테스트 데이터 유닛 (754) 에 대한 2 차원 그리드 (224) 의 입력 컬럼들 (232) 각각에 대한 필드들의 값들을 판독하는 것 및 이러한 값들에 데이터 처리 규칙을 적용하는 것은 선택된 테스트 데이터 유닛 (754) 에 대해 "예 (YES)"의 잘못된 경고 출력 값을 초래할 수도 있다.
이러한 실시예에서, 순서 키 값 1, 2 및 10 을 가지는 테스트 데이터 유닛들은 고객 A 에 대한 것이고, 순서 키 값 3 내지 9 를 가지는 테스트 데이터 유닛들은 다른 고객들을 위한 것이라고 또한 가정된다. 따라서, (순서 키 값 10 을 가지는) 선택된 테스트 데이터 유닛 (754) 에 대한 경고 출력 값은, 테스트 데이터세트 (114) 의 제 1 레코드 및 제 2 레코드와 각각 연관되는, (순서 키 값 1 을 가지는) 제 1 테스트 데이터 유닛 및 (순서 키 값 2 를 가지는) 제 2 테스트 데이터 유닛에 대한 데이터 처리 규칙의 적용 결과에 의존한다. 제 1 테스트 데이터 유닛 및 제 2 테스트 데이터 유닛은 데이터 처리 규칙을 아직 적용되도록 하지 않았을 수도 있다. 이러한 실시예에서, 제 1 및 제 2 데이터 유닛들에 데이터 처리 규칙을 적용하지 않으면, (일괄 테스트 모드 및 생산 모드와 일치하는 의도된 행위에 따라) 고객 A 에 대한 상태 메모리 (122) 내에 저장된 최근 경고 개수 필드의 값은 부정확하다.
도 8 및 9 를 참조하면, 선택된 테스트 데이터 유닛 (754) 에 대한 데이터 처리 규칙의 어플리케이션에 앞서 상태 메모리 (122) 내에 저장된 최근 경고 개수 필드의 값이 정확하다는 것을 보장하기 위하여, 시스템 (100) 은 먼저 (순서 키 값 1 을 가지는) 제 1 테스트 데이터 유닛 (850) 및 (순서 키 값 2 를 가지는) 제 2 테스트 데이터 유닛 (952) 에 데이터 처리 규칙을 적용한다.
도 8 을 참조하면, 제 1 테스트 데이터 유닛 (850) 에 데이터 처리 규칙을 적용하는 것은 (도 4 의 경우에서와 같이) "아니오 (NO)" 의 경고 출력 값을 초래한다. "아니오"의 경고 출력 값은 출력이기 때문에, 최근 경고 개수는 상태 메모리 (122) 내에서 증가하지 않고 0 에서 유지한다. 도 9 를 참조하면, 제 2 테스트 데이터 유닛 (952) 에 데이터 처리 규칙을 적용하는 것은 (도 5 의 경우에서와 같이) "예 (YES)" 의 경고 출력 값을 초래한다. 데이터 처리 규칙의 어플리케이션이 "예"의 경고 출력 값을 초래했기 때문에, 상태 메모리 (122) 내의 최근 경고 개수 값은 경고가 최근 발행되었음을 지시하기 위해 1 의 값이 증가된다. 마지막으로, 도 7 을 참조하면, 상태 메모리 (122) 내의 최근 경고 개수 값은 부정확한 값을 포함하기 때문에, 선택된 테스트 데이터 유닛 (754) 에 데이터 처리 규칙을 적용하는 것은 (도 6 에서의 경우와 같이) 반환되는 "아니오 (NO)" 의 기본 경고 출력 값을 초래한다.
8. 복잡한 사건 처리
어떤 타입의 데이터 처리 시스템들은 본원에서 개시된 단일 유닛 테스트 모드, 일괄 테스트 모드, 및 생산 모드에서의 일치된 결과들을 획득하기 위한 기법들에 의해 이용 가능해진 동적 테스트 환경으로부터 특히 이익을 얻을 수 있다. 이러한 유형의 데이터 처리의 하나는 복잡한 사건 처리 (complex event processing) 이다. 예를 들어, 도 1 의 처리 모듈 (108) 은 복잡한 사건 처리 루틴들을 구현하도록 구성될 수 있다. 매우 일반적으로, 복잡한 사건 처리 시스템은 사건들 사이의 관계들 내의 패턴들을 식별하기 위해 복수의 소스들로부터의 데이터를 결합하는 것에 의해 사건들을 처리한다. 일부 실시예들에서, 복잡한 사건 처리 시스템들은 마케팅 기회들이나 위기들과 같은 의미있는 사건들을 식별하고 식별된 의미있는 사건들에 가능한 신속하게 대응하기 위해 최근 사건 기록을 이용하여 들어오는 사건들을 처리한다.
도 10 을 참조하면, 예시적인 복잡한 사건 처리 루틴, 마케팅 캠페인에 대한 상태 다이어그램 (1060) 이 도시된다. 마케팅 캠페인은 캐쉬 백 프로그램들에 대해 고객들에게 통지하는 것에 의해 신용 카드 사용을 증가시키고자 한다. 예시적인 마케팅 캠페인에서, 고객들은 하나 이상의 이전 구매 사건들뿐만 아니라 현재 구매 사건의 양쪽 모두에 기초하여 캐쉬 백 인센티브들을 제안받는다. 상태 다이어그램 (1060) 은 상태 전이들 (1064, 1068, 1072, 1076, 1078) 에 의해 교차되는 얼마간의 상태들 (1062, 1066, 1070, 1074, 1080) 을 포함한다. 대표 고객에 대한 구매 사건이 수신될 때, 고객의 상태는 고객의 현재 상태 및 수신된 구매 사건의 소성에 기초하여 업데이트된다.
특히, 예시적인 마케팅 캠페인의 시작에서, 만약 고객이 마케팅 캠페인에 적합한 것으로 여겨진다면, (예를 들어, 도 1 의 상태 메모리 (122) 내의 상태 변수에 "적합 (Eligible)" 상태 (1062) 의 지시를 기록하는 것에 의해) 고객은 "적합" 상태 (1062) 에 놓인다.
고객에 대해 제 1 구매 사건 (1064) 이 수신 되면, (예를 들어, 도 1 의 상태 메모리 (122) 내의 상태 변수로부터) 고객의 현재 상태가 판독된다. 고객이 현재 "적합" 상태 (1062) 에 있고 그들은 제 1 구매 사건 (1064) 을 수신하였기 때문에, 여행 관련 구매들 및 음식 관련 구매들에 대한 캐쉬 백 프로모션들을 포함하는 메시지 (미도시) 가 고객에게 그들이 마케팅 캠페인에 적합하다는 것을 알리기 위해 전송된다. 고객의 상태는 이어서, 고객이 마케팅 캠페인을 통지받았다는 것을 지시하는 "통지 (Notified)" 상태 (1066) 로 전이된다.
"통지" 상태 (1066) 에 있는 동안, 만약 여행 관련 구매 이벤트 (1068) 가 수신되면, 고객에게 그들이 여행 관련 프로모션을 받았으며 그들이 음식 관련 프로모션에 적합하다는 것을 알리기 위해 메시지가 전송된다. 고객의 상태는 이어서 고객이 여행 관련 프로모션을 받았음을 지시하는 "제 1 여행 (First Travel)" 상태 (1070) 로 전이된다.
대안적으로, "통지" 상태 (1066) 에 있는 동안, 만약 음식 관련 구매 이벤트 (1072) 가 수신되면, 고객에게 그들이 음식 관련 프로모션을 받았으며 그들이 여행 관련 프로모션에 적합하다는 것을 알리기 위해 메시지가 전송된다. 고객의 상태는 이어서 고객이 음식 관련 프로모션을 받았음을 지시하는 "제 1 음식 (First Food)" 상태 (1074) 로 전이된다.
"제 1 여행" 상태 (1070) 에 있는 동안, 만약 음식 관련 구매 사건 (1076) 이 수신되면, 고객에게 그들이 여행 관련 프로모션 및 음식 관련 프로모션 양쪽 모두를 받았음을 알리기 위해 메시지가 전송된다. 고객의 상태는 이어서 고객이 프로모션을 완료하였음을 지시하는 "완료 (Complete)" 상태 (1080) 로 전이된다.
유사하게, "제 1 음식" 상태 (1074) 에 있는 동안, 만약 여행 관련 구매 사건 (1078) 이 수신되면, 고객에게 그들이 여행 관련 프로모션 및 음식 관련 프로모션 양쪽 모두를 받았음을 알리기 위해 메시지가 전송된다. 고객의 상태는 이어서 고객이 프로모션을 완료하였음을 지시하는 "완료 (Complete)" 상태 (1080) 로 전이된다.
8.1 복잡한 사건 처리 설정 사용자 인터페이스
도 11 을 참조하면, 예시적인 사용자 인터페이스 (1182) 는 사용자로 하여금 도 10 의 상태 다이어그램 (1060) 에 의해 명시되는 바와 같은 복잡한 사건 처리 루틴을 구현하기 위한 시스템 (예를 들어, 도 1 의 처리 모듈 (108)) 을 설정 (congifure) 하는 것을 허용한다. 매우 일반적으로, 사용자 인터페이스는 사용자로 하여금 테스트들의 정돈된 세트에 따른 복잡한 사건 처리 루틴에 대한 상태 다이어그램을 표현하는 것을 허용하고, 각각의 테스트는 만약 테스트가 충족되면 발생하는 대응하는 출력을 가진다.
일부 실시예들에서, 사용자 인터페이스 (1182) 는 얼마간의 컬럼들 (1186) 및 얼마간의 열들 (1184) 을 포함하는 셀들의 2 차원 그리드 (1183) 로서 구현된다. 셀은 각각의 열 (1184) 및 컬럼 (1185) 의 교차점에서 존재하고 사용자 입력 (예를 들어, 파라미터 값) 을 받아들이도록 구성된다.
컬럼들 (1186) 은 "트리거" 컬럼들 (1188) 및 "출력" 컬럼들 (1190) 의 두 컬럼 타입들로 나누어진다. 도 11 의 사용자 인터페이스 (1182) 에서, 세 개의 트리거 컬럼들 (1188) (즉, 현재 상태, 여행 관련, 및 분류) 과 두 개의 출력 칼럼들 (1190) (즉, 신규 상태 및 메시지) 이 존재한다.
합쳐져서, 트리거 컬럼들 (1188) 과 연관된 주어진 열 내의 셀들은 테스트 (예를 들어, Boolean 테스트) 를 정의하기 위해 사용된다. 예를 들어, 2 차원 그리드 (1183) 의 제 1 열 (1185) 에서, "현재 상태" 트리거 컬럼과 연관된 셀은 입력 값 "적합"을 포함하고, "여행 관련" 트리거 컬럼과 연관된 셀은 입력 값 "임의 (any)"를 포함하고, "분류" 트리거 컬럼과 연관된 셀은 입력 값 "임의"를 포함한다. 제 1 열 (1185) 내의 트리거 컬럼들 (1188) 에 대한 값을 고려해 볼 때, 만약 고객의 현재 상태 (예를 들어, 상태 변수 스토리지로부터 판독되는 바와 같음) 가 "적합" 이라면, 신규 구매 사건이 여행 관련 구매 사건 또는 음식 관련 구매 사건인가 아닌가 여부와 관계없이, 시스템에 의해 수신된 고객에 대한 신규 구매 사건은 제 1 열 (1185) 에 의해 정의된 테스트를 충족한다.
출력 컬럼 (1188) 과 연관된 주어진 열 내의 각각의 셀은 만약 주어진 열에 대한 테스트가 충족되었을 경우 발생하는 출력 행동을 정의한다. 예를 들어, 2 차원 그리드 (1183) 의 제 1 열 (1185) 내에서, "신규 상태" 출력 컬럼과 연관된 셀은 "통지" 값을 포함하고, "메시지" 출력 컬럼과 연관된 셀은 적합한 통지 메시지 (1192) 를 포함한다. 제 1 열 (1185) 내의 출력 컬럼들 (1190) 에 대한 값들을 고려해 볼 때, 제 1 열 (1185) 에 의해 정의된 테스트가 고객에 대한 신규 구매 사건에 의해 충족되면, 고객의 현재 상태는 "통지"로 업데이트 (즉, 상태 변수 스토리지에 기록) 되고, 적합한 통지 메시지 (1192) 가 고객에게 전송된다.
2 차원 그리드 (1183) 의 제 2 열 (1187) 내에서, "현재 상태" 트리거 컬럼과 연관된 셀은 입력 값 "통지"를 포함하고, "여행 관련" 트리거 컬럼과 연관된 셀은 입력 값 "여행과 관련"을 포함하고, "분류" 트리거 컬럼과 연관된 셀은 입력 값 "임의"를 포함한다. 제 2 열 (1187) 내의 트리거 컬럼들 (1188) 에 대한 값을 고려해 볼 때, 만약 고객의 현재 상태가 "통지"이고 신규 구매 사건이 여행 관련 구매 사건이라면 시스템에 의해 수신된 고객에 대한 신규 구매 사건은 제 2 열 (1187) 에 의해 정의된 테스트를 충족한다.
2 차원 그리드 (1183) 의 제 2 열 (1187) 내에서, "신규 상태" 출력 컬럼과 연관된 셀은 "제 1 여행" 값을 포함하고, "메시지" 출력 컬럼과 연관된 셀은 여행 구매 통지 메시지 (1194) 를 포함한다. 제 2 열 (1187) 내의 출력 컬럼들 (1190) 에 대한 값들을 고려해 볼 때, 제 2 열 (1187) 에 의해 정의된 테스트가 고객에 대한 신규 구매 사건에 의해 충족되면, 고객의 현재 상태는 "제 1 여행"으로 업데이트되고, 여행 구매 통지 메시지 (1194) 가 고객에게 전송된다.
2 차원 그리드 (1183) 의 제 3 열 (1189) 내에서, "현재 상태" 트리거 컬럼과 연관된 셀은 입력 값 "통지"를 포함하고, "여행 관련" 트리거 컬럼과 연관된 셀은 입력 값 "임의"을 포함하고, "분류" 트리거 컬럼과 연관된 셀은 입력 값 "음식 및 약물"을 포함한다. 제 3 열 (1189) 내의 트리거 컬럼들 (1188) 에 대한 값을 고려해 볼 때, 만약 고객의 현재 상태가 "통지"이고 신규 구매 사건이 음식 관련 구매 사건이라면 시스템에 의해 수신된 고객에 대한 신규 구매 사건은 제 3 열 (1189) 에 의해 정의된 테스트를 충족한다.
2 차원 그리드 (1183) 의 제 3 열 (1189) 내에서, "신규 상태" 출력 컬럼과 연관된 셀은 "제 1 음식" 값을 포함하고, "메시지" 출력 컬럼과 연관된 셀은 음식 구매 통지 메시지 (1196) 를 포함한다. 제 3 열 (1189) 내의 출력 컬럼들 (1190) 에 대한 값들을 고려해 볼 때, 제 3 열 (1189) 에 의해 정의된 테스트가 고객에 대한 신규 구매 사건에 의해 충족되면, 고객의 현재 상태는 "제 1 음식"으로 업데이트되고, 음식 구매 통지 메시지 (1196) 가 고객에게 전송된다.
2 차원 그리드 (1183) 의 제 4 열 (1191) 내에서, "현재 상태" 트리거 컬럼과 연관된 셀은 입력 값 "제 1 여행"을 포함하고, "여행 관련" 트리거 컬럼과 연관된 셀은 입력 값 "임의"를 포함하고, "분류" 트리거 컬럼과 연관된 셀은 입력 값 "음식 및 약물"을 포함한다. 제 4 열 (1191) 내의 트리거 컬럼들 (1188) 에 대한 값을 고려해 볼 때, 만약 고객의 현재 상태가 "제 1 여행"이고 신규 구매 사건이 음식 관련 구매 사건이라면 시스템에 의해 수신된 고객에 대한 신규 구매 사건은 제 4 열 (1191) 에 의해 정의된 테스트를 충족한다.
2 차원 그리드 (1183) 의 제 4 열 (1191) 내에서, "신규 상태" 출력 컬럼과 연관된 셀은 "완료" 값을 포함하고, "메시지" 출력 컬럼과 연관된 셀은 캠페인 완료 통지 메시지 (1198) 를 포함한다. 제 4 열 (1191) 내의 출력 컬럼들 (1190) 에 대한 값들을 고려해 볼 때, 제 4 열 (1191) 에 의해 정의된 테스트가 고객에 대한 신규 구매 사건에 의해 충족되면, 고객의 현재 상태는 "완료"로 업데이트되고, 캠페인 완료 통지 메시지 (1198) 가 고객에게 전송된다.
2 차원 그리드 (1183) 의 제 5 열 (1193) 내에서, "현재 상태" 트리거 컬럼과 연관된 셀은 입력 값 "제 1 음식"을 포함하고, "여행 관련" 트리거 컬럼과 연관된 셀은 입력 값 "여행과 관련"을 포함하고, "분류" 트리거 컬럼과 연관된 셀은 입력 값 "임의"를 포함한다. 제 5 열 (1193) 내의 트리거 컬럼들 (1188) 에 대한 값을 고려해 볼 때, 만약 고객의 현재 상태가 "제 1 음식"이고 신규 구매 사건이 여행 관련 구매 사건이라면 시스템에 의해 수신된 고객에 대한 신규 구매 사건은 제 5 열 (1193) 에 의해 정의된 테스트를 충족한다.
2 차원 그리드 (1183) 의 제 5 열 (1193) 내에서, "신규 상태" 출력 컬럼과 연관된 셀은 "완료" 값을 포함하고, "메시지" 출력 컬럼과 연관된 셀은 캠페인 완료 통지 메시지 (1198) 를 포함한다. 제 5 열 (1193) 내의 출력 컬럼들 (1190) 에 대한 값들을 고려해 볼 때, 제 5 열 (1193) 에 의해 정의된 테스트가 고객에 대한 신규 구매 사건에 의해 충족되면, 고객의 현재 상태는 "완료"로 업데이트되고, 캠페인 완료 통지 메시지 (1198) 가 고객에게 전송된다.
마지막으로, 2 차원 그리드 (1183) 의 제 6 열 (1195) 내에서, "현재 상태" 트리거 컬럼과 연관된 셀은 입력 값 "임의"를 포함하고, "여행 관련" 트리거 컬럼과 연관된 셀은 입력 값 "임의"를 포함하고, "분류" 트리거 컬럼과 연관된 셀은 입력 값 "임의"를 포함한다. 제 6 열 (1195) 내의 트리거 컬럼들 (1188) 에 대한 값을 고려해 볼 때, 시스템에 의해 수신되는 고객에 대한 임의의 신규 구매 사건은 제 6 열 (1195) 에 의해 정의된 테스트를 충족한다.
2 차원 그리드 (1183) 의 제 6 열 (1195) 내에서, "신규 상태" 출력 컬럼과 연관된 셀은 "현재 상태" 값을 포함하고, "메시지" 출력 컬럼과 연관된 셀은 널 (null) 메시지 (1199) 를 포함한다. 제 6 열 (1195) 내의 출력 컬럼들 (1190) 에 대한 값들을 고려해 볼 때, 제 6 열 (1195) 에 의해 정의된 테스트가 고객에 대한 신규 구매 사건에 의해 충족되면, 고객의 현재 상태는 그것의 "현재 상태"에서 유지되고, 어떠한 통지 메시지도 고객에게 전송되지 않는다.
신규 구매 사건이 수신되었을 때, 2 차원 그리드 (1183) 의 열들 (1184) 에 의해 정의된 테스트들은, 테스트가 신규 구매 사건에 의해 충족될 때까지 신규 구매 사건을 위해 적용된다. 즉, 제 1 열 (1185) 에 의해 정의된 테스트가 처음으로 신규 구매 사건에 적용된다. 만약 제 1 열 (1185) 에 의해 정의된 테스트가 신규 구매 사건에 의해 충족되지 않으면, 제 2 열 (1187) 에 의해 정의된 테스트가 신규 구매 사건에 적용된다. 만약 제 2 열 (1187) 에 의해 정의된 테스트가 신규 구매 사건에 의해 충족되지 않으면, 제 3 열 (1189) 에 의해 정의된 테스트가 신규 구매 사건에 적용되고, 같은 방식으로 반복된다. 결국, 다른 열들에 의해 정의된 테스트들 중 어느 것도 신규 구매 사건에 의해 충족되지 않을 경우, 기본 제 6 열 (최종 열) 이 신규 구매 사건에 적용되고 신규 구매 사건에 의해 충족된다. 2 차원 그리드 (1183) 의 열들 (1184) 에 의해 정의된 테스트들을 순서대로 적용하는 것에 의해, 도 10 의 상태 다이어그램 (1060) 의 기능이 달성된다.
9. 대안들
일부 실시예들에서, 사용자 인터페이스의 성능은 주어진 판독 동작을 위한 데이터 소스들로의 판독 연결들을 개방하고 이어서 후속하는 판독 동작들을 위해 연결들을 캐시 (cache) (예를 들어, 데이터베이스 핸들 (handle) 을 저장하고 연결을 존속하도록 유지) 하는 것에 의해 향상될 수도 있다. 이렇게 하는 것은 연결 설정/해제 시간을 감소시킬 뿐만 아니라, 주어진 시간 구간 이내의 데이터 소스에 대한 연결들의 개수의 제한의 고갈을 방지할 수 있다.
일부 실시예들에서, 데이터 소스들 (또는 전체 테스트 데이터 유닛들) 로부터 판독한 레코드들은 캐시에 저장될 수 있다.
일부 실시예들에서, 레코드 (또는 테스트 데이터 유닛) 의 값이 요청될 때, 캐시가 처음으로 참고된다. 만약 레코드 (또는 테스트 데이터 유닛) 가 캐시 내에 존재하지 않으면, 요청된 레코드(들)을 검색하기 위해 캐시된 연결이 참조된다. 어떠한 연결도 요청된 레코드(들)을 검색하기 위해 캐시되지 않았으면, 요청된 레코드(들)을 검색하기 위해 신규 연결이 개방된다.
일부 실시예들에서, 어디에서 레코드 또는 테스트 데이터 유닛을 검색할지 여부의 결정은 레코드 또는 테스트 데이터 유닛이 마지막으로 검색된 이래의 시간에 기초한다. 만약 그것이 최근에 검색되었다면, 캐시된 값은 유효하다고 결정되고 캐시가 참조된다. 만약 레코드 또는 테스트 데이터 유닛이 마지막으로 검색된 이래로 더 긴 시간이 경과 했다면, 캐시된 값은 유효하지 않은 것으로 간주되고 캐시된 연결이 사용된다. 만약 레코드 또는 테스트 데이터 유닛이 마지막으로 검색된 이래로 훨씬 더 긴 시간이 경과 했다면, 캐시된 값 및 캐시된 연결은 유효하지 않은 것으로 간주되고 레코드 또는 테스트 데이터 유닛을 검색하기 위해 신규 연결이 개방된다.
데이터베이스들은 위에서 개시된 바와 같은 접근들로부터 이득을 얻을 수 있는 하나의 통상적인 타입의 데이터 소스인 반면에, 많은 다른 타입의 데이터 소스들 (예를 들어, 기록 파일들, 부차적인 데이터 세트들, 등) 역시 접근들로부터 또한 이득을 얻을 수 있음을 유의한다.
일부 실시예들에서, 정확한 상태 정보를 포함하는 테스트 데이터 유닛들의 값들은 나중의 사용을 위해 캐시된다. 이러한 경우들에서, 단일 레코드 테스트 모드에서 선택된 테스트 데이터 유닛에 앞서 모든 테스트 데이터 유닛들에 데이터 처리 규칙을 적용해야만 하기 보다는, 선택된 테스트 데이터 유닛과 가장 가까운 이전에 캐시된 테스트 데이터 유닛 사이의 이러한 레코드들만이 데이터 처리 규칙이 적용되도록 할 필요가 있다.
일부 실시예들에서, 사용자 인터페이스는 개발자로 하여금 데이터베이스 연결이 캐시될 때를 명시하도록 허용할 수 있다.
일부 실시예들에서, 상태 변수 값들은 그들이 제거되기 이전에 미리 정의된 양의 시간 동안 상태 변수 메모리 내에만 저장된다. 이러한 방법으로, 상태 변수는 그것에 적용되는 슬라이딩 윈도우를 본질적으로 (essentially) 가지고, 윈도우 집성 (windowed aggregation) 과 같은 동작들을 허용한다.
일부 실시예들에서, 입력 컬럼이 파라미터 액세스를 요구할 때, 파라미터의 값은 캐시될 수 있다. 예를 들어, 생산 환경에서, 파라미터는 명령-라인 입력 또는 파라미터 세트 파일로부터 판독될 수도 있고, 만약 필요하면 규칙 기반 어플리케이션이 런칭 (launched) 되는 환경 (즉, 생산 환경) 의 컨텍스트 내에서 해결될 수도 있다. 단일 유닛 테스트 모드 (또는 일괄 테스트 모드) 에 대해서, 현재 환경 또는 대신 가정된 테스트 값을 이용하여 평가된 파라미터로서, 또는 생산 환경이 제공할 수도 있는 것의 추정 (approximation) 으로서, 값은 마음대로 (예를 들어, 사용자 설정 가능한 파라미터에 기초하여) 선택될 수도 있다.
10. 구현들
상기 개시된 규칙 구체화 및 어플리케이션 방법들은, 예를 들어, 적절한 소프트웨어 명령들을 실행하는 프로그래머블 컴퓨팅 시스템을 사용하여 구현될 수 있거나 필드 프로그래머블 게이트 어레이 (FPGA) 와 같은 적절한 하드웨어 또는 어떤 하이브리드 형태로 구현될 수 있다. 예를 들어, 프로그래밍된 접근에서 소프트웨어는 하나 이상의 프로그래밍된 또는 프로그래머블 컴퓨팅 시스템 (분산, 클라이언트/서버, 또는 그리드 등의 다양한 아키텍처일 수 있음) 에서 실행되는 하나 이상의 컴퓨터 프로그램의 절차들을 포함할 수 있으며, 각각은 적어도 하나의 프로세서, 적어도 하나의 데이터 저장 시스템 (휘발성 및/또는 비 휘발성 메모리 및/또는 저장 요소들을 포함함), (적어도 하나의 입력 디바이스 또는 포트를 사용하여 입력을 수신하고 적어도 하나의 출력 디바이스 또는 포트를 사용하여 출력을 사용하기 위한) 적어도 하나의 사용자 인터페이스를 포함한다. 소프트웨어는 예를 들어, 데이터 처리 그래프의 디자인, 구성 및 실행에 관련된 서비스를 제공하는 더 큰 프로그램의 하나 이상의 모듈을 포함할 수 있다. 프로그램의 모듈들 (예를 들어, 데이터 처리 그래프의 구성요소들) 은 데이터 저장소에 저장된 데이터 모델을 따르는 데이터 구조 또는 다른 조직화된 데이터로 구현될 수 있다.
소프트웨어는 시간의 기간 (예를 들어, 동적 RAM 과 같은 동적 메모리 디바이스의 리프레쉬 기간들 사이의 시간) 에 대한 매체의 물리적 속성 (예를 들어, 표면 피트 (pit) 들 및 랜드 (land) 들, 자구 (magnetic domain) 들, 또는 전하 (electrical charge)) 을 이용하여 휘발성 또는 비휘발성 저장 매체, 또는 임의의 다른 비 일시적 매체에 저장되는 것과 같이 비 일시적 형태로 저장될 수 있다. 명령들을 로딩하기 위한 준비로서, 소프트웨어는 CD-ROM 또는 다른 컴퓨터 판독가능 매체 (예를 들어, 범용 또는 특수 목적 컴퓨팅 시스템 또는 디바이스에 의해 판독 가능함) 같은 유형적, 비일시적 매체 상에서 제공될 수 있거나, 그것이 실행되는 컴퓨팅 시스템의 유형적, 비일시적 매체로 네트워크의 통신 매체를 통해 (예를 들어, 전파된 신호에 인코딩되어) 전달될 수 있다. 처리의 일부 또는 전부는 특수 목적 컴퓨터상에서 또는 코프로세서 또는 필드 프로그래머블 게이트 어레이 (FPGA) 들 또는 전용, 응용 주문형 집적 회로 (ASIC) 들과 같은 특수 목적 하드웨어를 사용하여 수행될 수 있다. 처리는 소프트웨어에 의해 명시된 계산의 상이한 부분들이 상이한 컴퓨팅 요소들에 의해 수행되는 분산 방식으로 구현될 수 있다. 각각의 이러한 컴퓨터 프로그램은 저장 디바이스 매체가 본원에서 설명된 처리를 수행하기 위해 컴퓨터에 의해 판독될 때 컴퓨터를 구성하고 운영하기 위해, 바람직하게는 범용 또는 특수 목적 프로그래머블 컴퓨터에 의해 액세스 가능한 저장 디바이스의 컴퓨터 판독가능 저장 매체 (예를 들어, 솔리드 스테이트 메모리 또는 매체, 또는 자기 또는 광 매체) 상에 저장되거나 다운로드 된다. 본 발명 시스템은 또한 컴퓨터 프로그램으로 구성된 유형적, 비일시적 매체로 구현되는 것으로 간주될 수 있고, 이렇게 구성된 매체는 본원에서 설명된 처리 단계들 중 하나 이상을 수행하기 위해 컴퓨터로 하여금 특정한 미리 정의된 방식으로 동작하게 한다.
본 발명의 다수의 실시예들이 설명되었다. 그럼에도 불구하고, 전술한 설명은 예시를 위한 것이고 다음 청구항들의 범위 내에서 정의되는 본 발명의 범위를 제한하는 것이 아니다. 따라서, 다른 실시예들 역시 아래의 청구항들의 범위 내에 있다. 예를 들어, 다양한 변형들이 본 발명의 범위를 벗어나지 않고 이루어질 수 있다. 더 나아가, 상기 개시한 단계들 중 일부는 순서 독립적일 수 있고 따라서 설명된 것과 다른 순서로 수행될 수 있다.

Claims (33)

  1. 하나 이상의 데이터 소스들로부터의 데이터에 규칙을 적용하기 위한 방법으로서, 상기 방법은,
    제 1 데이터 소스로부터 데이터를 수신하는 단계;
    상기 제 1 데이터 소스로부터 수신된 데이터로부터 적어도 부분적으로 유도된 정돈된 (ordered) 복수의 데이터 유닛들 중 특정한 데이터 유닛을 처리하는 단계로서,
    상기 정돈된 복수의 데이터 유닛들로부터 데이터 유닛들의 정돈된 서브세트를 포함하는 데이터 유닛들의 제 1 세트를 결정 - 상기 정돈된 서브세트에 포함된 각각의 데이터 유닛은 특정한 데이터 유닛과 연관되고 상기 정돈된 복수의 데이터 유닛들 내의 특정한 데이터 유닛보다 먼저 발생함 - 하는 단계;
    상기 특정한 데이터 유닛에 규칙을 적용하기에 앞서, 상기 데이터 유닛들의 제 1 세트에 걸친 순서대로의 반복과, 상기 정돈된 서브세트의 각각의 데이터 유닛에 대해, 상기 데이터 유닛에 대한 규칙을 적용하는 것으로부터 유래될 수 있는 상태로 적어도 하나의 상태 변수를 업데이트하는 단계; 및
    상기 상태 변수의 업데이트된 값을 판독하는 것을 포함하여 상기 특정한 데이터 유닛에 규칙을 적용하는 단계를 포함하는,
    상기 특정한 데이터 유닛을 처리하는 단계를 포함하고,
    상기 상태 변수를 업데이트하는 것은, 상기 데이터 유닛들의 제 1 세트에 걸친 순서대로 반복하는 것, 그리고 상기 정돈된 서브세트의 각각의 데이터 유닛에 대해, 상기 데이터 유닛에 규칙을 적용하고 상기 데이터 유닛에 규칙을 적용한 결과에 기초하여 업데이트된 상기 상태 변수의 값을 기록하는 것을 포함하고,
    상기 데이터 유닛들의 제 1 세트는 상기 데이터 유닛들의 정돈된 서브세트 내에 있지 않은 데이터 유닛들을 포함하고,
    상기 데이터 유닛들의 제 1 세트에 걸친 순서대로 반복하는 것은 상기 데이터 유닛이 상기 데이터 유닛들의 정돈된 서브세트의 멤버인지 여부를 결정하는 것을 포함하는, 데이터에 규칙을 적용하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 처리하는 단계는, 상기 규칙을 테스트하기 위해 상기 특정한 데이터 유닛이 사용자 인터페이스 내에서 선택되는 테스트 환경 내에서 하나 이상의 데이터 소스들로부터의 데이터에 규칙을 적용하는 제 1 모드와 연관되는, 데이터에 규칙을 적용하기 위한 방법.
  3. 제 2 항에 있어서,
    상기 테스트 환경 내에서 하나 이상의 데이터 소스들로부터의 데이터에 규칙을 적용하는 제 1 모드는, 상기 정돈된 복수의 데이터 유닛들의 각각의 데이터 유닛에 대해, 생산 환경 내에서 하나 이상의 데이터 소스들로부터의 데이터에 규칙을 적용하는 제 2 모드로부터 생성된 결과들과 일치하는 결과들을 생성하도록 구성되는, 데이터에 규칙을 적용하기 위한 방법.
  4. 제 3 항에 있어서,
    상기 테스트 환경 내에서 하나 이상의 데이터 소스들로부터의 데이터에 규칙을 적용하는 제 1 모드는, 상기 정돈된 복수의 데이터 유닛들의 각각의 데이터 유닛에 대해, 상기 정돈된 복수의 데이터 유닛들 전부가 일괄적으로 (in a batch) 테스트되는 테스트 환경 내에서 하나 이상의 데이터 소스들로부터의 데이터에 규칙을 적용하는 제 3 모드로부터 생성된 결과들과 일치하는 결과들을 생성하도록 구성되는, 데이터에 규칙을 적용하기 위한 방법.
  5. 제 1 항에 있어서,
    상기 데이터 유닛들의 제 1 세트는 데이터 유닛들의 정돈된 서브세트로 구성되는, 데이터에 규칙을 적용하기 위한 방법.
  6. 삭제
  7. 삭제
  8. 제 1 항에 있어서,
    상기 복수의 데이터 유닛들은, 상기 복수의 데이터 유닛들 내의 특정한 데이터 유닛과 연관된 데이터 유닛의 최초 발생인 연관된 데이터 유닛을 포함하고,
    상기 데이터 유닛들의 정돈된 서브세트의 처음의 데이터 유닛은, 상기 연관된 데이터 유닛이 아닌 데이터 유닛인, 데이터에 규칙을 적용하기 위한 방법.
  9. 제 8 항에 있어서,
    상기 정돈된 복수의 데이터 유닛들의 데이터 유닛들에 대한 규칙의 각각의 어플리케이션에 대한 상태 변수의 업데이트된 값들을 상태 변수 캐시 내에 저장하는 단계를 더 포함하는, 데이터에 규칙을 적용하기 위한 방법.
  10. 제 9 항에 있어서,
    상기 데이터 유닛들의 정돈된 서브세트의 처음의 데이터 유닛에 규칙을 적용하는 것은, 상기 상태 변수 캐시로부터 상기 복수의 데이터 유닛들 내의 처음의 데이터 유닛 이전에 발생한 데이터 유닛에 대한 규칙의 어플리케이션에 응답하여 저장되었던 상태 변수의 업데이트된 값을 판독하는 것을 포함하는, 데이터에 규칙을 적용하기 위한 방법.
  11. 제 10 항에 있어서,
    상기 복수의 데이터 유닛들 내의 처음의 데이터 유닛 이전에 발생한 데이터 유닛은, 상기 처음의 데이터 유닛과 관련하여 가장 가까운 데이터 유닛이고 상기 복수의 데이터 유닛들의 처음의 데이터 유닛 이전에 발생한, 데이터에 규칙을 적용하기 위한 방법.
  12. 제 1 항에 있어서,
    상기 규칙은 복수의 규칙 케이스들을 포함하는, 데이터에 규칙을 적용하기 위한 방법.
  13. 제 12 항에 있어서,
    상기 복수의 규칙 케이스들의 적어도 하나의 규칙 케이스를 테스트한 결과는, 상기 상태 변수의 값에 의존하는, 데이터에 규칙을 적용하기 위한 방법.
  14. 제 13 항에 있어서,
    상기 복수의 데이터 유닛들의 특정한 데이터 유닛에 규칙을 적용하는 것은, 상기 상태 변수의 업데이트된 값에 반대하여 상기 복수의 규칙 케이스들의 적어도 하나의 규칙 케이스를 테스트하는 것을 포함하는, 데이터에 규칙을 적용하기 위한 방법.
  15. 제 1 항에 있어서,
    상기 데이터 유닛들의 정돈된 서브세트의 처음의 데이터 유닛은, 상기 정돈된 복수의 데이터 유닛들의 특정한 데이터 유닛에 관련된 데이터 유닛의 최초 발생인, 데이터에 규칙을 적용하기 위한 방법.
  16. 제 15 항에 있어서,
    상기 복수의 규칙 케이스들 중 적어도 하나의 규칙 케이스는, 상기 제 1 데이터 소스와 상이한 제 2 데이터 소스로부터 유도된 값에 기초하는, 데이터에 규칙을 적용하기 위한 방법.
  17. 제 16 항에 있어서,
    상기 제 2 데이터 소스는 상기 처리의 개시 이후에 동적으로 액세스되는, 데이터에 규칙을 적용하기 위한 방법.
  18. 제 16 항에 있어서,
    상기 정돈된 복수의 데이터 유닛들의 각각의 데이터 유닛은 상기 제 1 데이터 소스의 레코드로부터의 하나 이상의 값들, 그리고 상기 제 2 데이터 소스로부터의 적어도 하나의 값을 포함하는, 데이터에 규칙을 적용하기 위한 방법.
  19. 제 18 항에 있어서,
    상기 정돈된 복수의 데이터 유닛은, 상기 제 1 데이터 소스의 레코드들의 세트의 순서에 따라 정돈되는, 데이터에 규칙을 적용하기 위한 방법.
  20. 제 1 항에 있어서,
    상기 데이터 유닛들의 정돈된 서브세트의 각각의 데이터 유닛은, 공유된 식별자에 의해 데이터 유닛들의 정돈된 서브세트의 다른 데이터 유닛들 연관되는, 데이터에 규칙을 적용하기 위한 방법.
  21. 제 20 항에 있어서,
    상기 공유된 식별자는, 키 필드 값을 포함하는, 데이터에 규칙을 적용하기 위한 방법.
  22. 제 1 항에 있어서,
    상기 특정한 데이터 유닛을 처리하는 단계는, 상기 특정한 데이터 유닛에 대한 하나 이상의 미리 획득된 값들이 데이터 유닛 캐시 내에 존재하고 유효한가 여부를 결정하는 단계, 그리고 만약 상기 미리 획득된 값들이 존재하고 유효한 것으로 결정되면 상기 데이터 유닛 캐시로부터 상기 특정한 데이터 유닛에 대한 하나 이상의 값들을 획득하고, 그렇지 않으면 상기 제 1 데이터 소스를 포함하는 하나 이상의 데이터 소스들로부터 상기 특정한 데이터 유닛에 대한 하나 이상의 값들을 획득하는 단계를 포함하는, 데이터에 규칙을 적용하기 위한 방법.
  23. 제 22 항에 있어서,
    상기 특정한 데이터 유닛에 대한 미리 획득된 값들이 유효한가 여부를 결정하는 것은, 상기 미리 획득된 값들이 획득된 이후 경과 된 시간을 미리 결정된 경과 시간 임계값에 비교하는 것을 포함하는, 데이터에 규칙을 적용하기 위한 방법.
  24. 제 22 항에 있어서,
    상기 하나 이상의 데이터 소스들로부터 상기 특정한 데이터 유닛에 대한 하나 이상의 값들을 획득하는 것은, 상기 특정한 데이터 유닛에 대한 하나 이상의 값들을 수신하기 위해 상기 제 1 데이터 소스로의 연결을 개방하는 것, 그리고 상기 정돈된 복수의 데이터 유닛들의 다른 데이터 유닛들에 대한 하나 이상의 값들을 수신하기 위해 상기 연결을 개방 상태에서 유지하는 것을 포함하는, 데이터에 규칙을 적용하기 위한 방법.
  25. 제 22 항에 있어서,
    상기 하나 이상의 데이터 소스들로부터 상기 특정한 데이터 유닛에 대한 하나 이상의 값들을 획득하는 것은, 상기 제 1 데이터 소스로의 미리 개방된 연결로부터 상기 특정한 데이터 유닛에 대한 하나 이상의 값들을 수신하는 것을 포함하는, 데이터에 규칙을 적용하기 위한 방법.
  26. 제 1 항에 있어서,
    상기 제 1 데이터 소스는 데이터베이스인, 데이터에 규칙을 적용하기 위한 방법.
  27. 제 1 항에 있어서,
    상기 제 1 데이터 소스는 데이터 기록 (archive) 파일인, 데이터에 규칙을 적용하기 위한 방법.
  28. 제 1 항에 있어서,
    상기 정돈된 서브세트의 적어도 제 1 데이터 유닛에 대해서, 상기 제 1 데이터 유닛에 대한 미리 획득된 값들이 데이터 유닛 캐시 내에 존재하고 유효한가 여부를 결정하는 단계, 그리고 만약 상기 미리 획득된 값들이 존재하고 유효한 것으로 결정되면 상기 데이터 유닛 캐시로부터 상기 제 1 데이터 유닛에 대한 하나 이상의 값들을 획득하고, 그렇지 않으면 상기 제 1 데이터 소스를 포함하는 하나 이상의 데이터 소스들로부터 상기 제 1 데이터 유닛에 대한 하나 이상의 값들을 획득하는 단계를 더 포함하는, 데이터에 규칙을 적용하기 위한 방법.
  29. 제 28 항에 있어서,
    상기 제 1 데이터 유닛에 대한 미리 획득된 값들이 유효한가 여부를 결정하는 것은, 상기 미리 획득된 값들이 획득된 이후 경과 된 시간을 미리 결정된 경과 시간 임계값에 비교하는 것을 포함하는, 데이터에 규칙을 적용하기 위한 방법.
  30. 제 1 항에 있어서,
    상기 하나 이상의 데이터 소스들로부터 제 1 데이터 유닛에 대한 하나 이상의 값들을 획득하는 것은, 상기 제 1 데이터 유닛에 대한 하나 이상의 값들을 수신하기 위해 상기 제 1 데이터 소스로의 연결을 개방하는 것, 그리고 상기 정돈된 복수의 데이터 유닛들의 다른 데이터 유닛들에 대한 하나 이상의 값들을 수신하기 위해 상기 연결을 개방 상태에서 유지하는 것을 포함하는, 데이터에 규칙을 적용하기 위한 방법.
  31. 제 1 항에 있어서,
    상기 하나 이상의 데이터 소스들로부터 상기 제 1 데이터 유닛에 대한 하나 이상의 값들을 획득하는 것은, 상기 제 1 데이터 소스로의 미리 개방된 연결로부터 상기 제 1 데이터 유닛에 대한 하나 이상의 값들을 수신하는 것을 포함하는, 데이터에 규칙을 적용하기 위한 방법.
  32. 하나 이상의 데이터 소스들로부터의 데이터에 규칙을 적용하기 위한, 컴퓨터 판독 가능한 저장 매체에 비 일시적인 형태로 저장된 소프트웨어로서, 상기 소프트웨어는 컴퓨팅 시스템으로 하여금,
    제 1 항 내지 제 5항, 제 8 항 내지 제 31 항 중 어느 한 항의 방법을 수행하게 하기 위한 명령어들을 포함하는, 컴퓨터 판독 가능 저장 매체에 저장된 소프트웨어.
  33. 하나 이상의 데이터 소스들로부터의 데이터에 규칙을 적용하기 위한 컴퓨팅 시스템으로서,
    제 1 데이터 소스로부터 데이터를 수신하도록 구성된 입력 디바이스 또는 포트;
    제 1 항 내지 제 5항, 제 8 항 내지 제 31 항 중 어느 한 항의 방법을 수행하도록 구성된 적어도 하나의 프로세서를 포함하는, 컴퓨팅 시스템.
KR1020177013833A 2014-10-20 2015-10-19 데이터에 대한 규칙들의 명시 및 적용 KR101959649B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201462065909P 2014-10-20 2014-10-20
US62/065,909 2014-10-20
PCT/US2015/056176 WO2016064714A1 (en) 2014-10-20 2015-10-19 Specifying and applying rules to data

Publications (2)

Publication Number Publication Date
KR20170074949A KR20170074949A (ko) 2017-06-30
KR101959649B1 true KR101959649B1 (ko) 2019-07-04

Family

ID=54366528

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020177013833A KR101959649B1 (ko) 2014-10-20 2015-10-19 데이터에 대한 규칙들의 명시 및 적용
KR1020177013842A KR101965522B1 (ko) 2014-10-20 2015-10-19 데이터에 대한 규칙들의 명시 및 적용

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020177013842A KR101965522B1 (ko) 2014-10-20 2015-10-19 데이터에 대한 규칙들의 명시 및 적용

Country Status (10)

Country Link
US (3) US10191923B2 (ko)
EP (2) EP3210171B1 (ko)
JP (2) JP6511518B2 (ko)
KR (2) KR101959649B1 (ko)
CN (2) CN107209763B (ko)
AU (2) AU2015336259B2 (ko)
CA (2) CA2965122C (ko)
HK (2) HK1244332A1 (ko)
SG (2) SG11201703061XA (ko)
WO (2) WO2016064720A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2965122C (en) * 2014-10-20 2021-11-09 Ab Initio Technology Llc Specifying and applying rules to data
US10614056B2 (en) * 2015-03-24 2020-04-07 NetSuite Inc. System and method for automated detection of incorrect data
CN105930261B (zh) * 2016-01-16 2018-06-22 平安科技(深圳)有限公司 测试方法及测试终端
US10728111B2 (en) 2018-03-09 2020-07-28 Accenture Global Solutions Limited Data module management and interface for pipeline data processing by a data processing system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080256014A1 (en) * 2007-04-10 2008-10-16 Joel Gould Editing and Compiling Business Rules

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4410603C1 (de) * 1994-03-26 1995-06-14 Jenoptik Technologie Gmbh Verfahren zur Erkennung von Fehlern bei der Inspektion von strukturierten Oberflächen
US6615258B1 (en) * 1997-09-26 2003-09-02 Worldcom, Inc. Integrated customer interface for web based data management
US7017142B1 (en) * 1998-12-03 2006-03-21 International Business Machines Corporation Method and apparatus for applying business rules in an object model driven context
US6904412B1 (en) * 2000-03-14 2005-06-07 Everbank Method and apparatus for a mortgage loan originator compliance engine
US20020107754A1 (en) * 2000-06-27 2002-08-08 Donald Stone Rule-based system and apparatus for rating transactions
US7146399B2 (en) * 2001-05-25 2006-12-05 2006 Trident Company Run-time architecture for enterprise integration with transformation generation
FR2843213B1 (fr) * 2002-07-30 2004-12-24 Bull Sa Procede et systeme d'etablissement automatique d'un modele global de simulation d'une architecture
US7231399B1 (en) * 2003-11-14 2007-06-12 Google Inc. Ranking documents based on large data sets
US20060242084A1 (en) * 2005-04-25 2006-10-26 Moses Manuel B Consumer data credit or debit card
US7634495B2 (en) * 2005-05-06 2009-12-15 Microsoft Corporation System of multi-level defaults in transaction entries
US8140362B2 (en) * 2005-08-30 2012-03-20 International Business Machines Corporation Automatically processing dynamic business rules in a content management system
US8229902B2 (en) 2006-11-01 2012-07-24 Ab Initio Technology Llc Managing storage of individually accessible data units
JP2008117093A (ja) 2006-11-02 2008-05-22 Hitachi Ltd ユーザ操作記録・再現方法及び装置
US8595231B2 (en) 2007-04-26 2013-11-26 International Business Machines Corporation Ruleset generation for multiple entities with multiple data values per attribute
WO2008151423A1 (en) * 2007-06-10 2008-12-18 Shopplex.Com Corporation System and method for managing and updating data from a number of sources for a project
US7882178B2 (en) * 2007-09-05 2011-02-01 International Business Machines Corporation Method and system for using business rules to control invitations to join instant message collaborations
US9547638B2 (en) * 2008-06-30 2017-01-17 Ab Initio Technology Llc Data logging for rule specifications
US8756407B2 (en) * 2008-09-30 2014-06-17 International Business Machines Corporation Configuration rule prototyping tool
WO2010056867A1 (en) * 2008-11-12 2010-05-20 Ab Initio Software Llc Managing and automatically linking data objects
KR20150042877A (ko) * 2009-11-13 2015-04-21 아브 이니티오 테크놀로지 엘엘시 레코드 포맷 정보의 관리
WO2011068968A2 (en) 2009-12-02 2011-06-09 University Of South Florida Transparent contacts organic solar panel by spray
US8429110B2 (en) * 2010-06-10 2013-04-23 Microsoft Corporation Pattern tree-based rule learning
US8949166B2 (en) * 2010-12-16 2015-02-03 International Business Machines Corporation Creating and processing a data rule for data quality
US8671111B2 (en) * 2011-05-31 2014-03-11 International Business Machines Corporation Determination of rules by providing data records in columnar data structures
US20130166515A1 (en) * 2011-12-22 2013-06-27 David Kung Generating validation rules for a data report based on profiling the data report in a data processing tool
WO2013116838A1 (en) * 2012-02-03 2013-08-08 Buysafe, Inc. User to website guaranteed shopping
US9201911B2 (en) * 2012-03-29 2015-12-01 International Business Machines Corporation Managing test data in large scale performance environment
CN102664887A (zh) * 2012-04-19 2012-09-12 江汉大学 输入信息保护方法、装置和系统
WO2013190147A1 (en) * 2012-06-22 2013-12-27 Universite Pierre Et Marie Curie (Paris 6) Method for automated assistance to design nonlinear analog circuit with transient solver
US9461876B2 (en) * 2012-08-29 2016-10-04 Loci System and method for fuzzy concept mapping, voting ontology crowd sourcing, and technology prediction
US10489360B2 (en) * 2012-10-17 2019-11-26 Ab Initio Technology Llc Specifying and applying rules to data
CN103942228B (zh) * 2013-01-23 2018-09-07 北京京东尚科信息技术有限公司 规则引擎、计算方法、业务系统及调用方法
US9892026B2 (en) 2013-02-01 2018-02-13 Ab Initio Technology Llc Data records selection
US9558230B2 (en) * 2013-02-12 2017-01-31 International Business Machines Corporation Data quality assessment
US9143624B2 (en) * 2013-03-15 2015-09-22 Ab Initio Technology Llc Auditing of data processing applications
AU2014326734B2 (en) 2013-09-27 2018-09-27 Ab Initio Technology Llc Evaluating rules applied to data
US20160092811A1 (en) * 2014-09-30 2016-03-31 Bank Of America Corporation Business rules framework
US9596162B1 (en) * 2014-10-20 2017-03-14 Sprint Spectrum L.P. Method and system of imposing a policy rule for heavy usage
CA2965122C (en) * 2014-10-20 2021-11-09 Ab Initio Technology Llc Specifying and applying rules to data
US10942911B2 (en) * 2015-03-20 2021-03-09 D&B Business Information Solutions Aggregating high volumes of temporal data from multiple overlapping sources
US10614056B2 (en) * 2015-03-24 2020-04-07 NetSuite Inc. System and method for automated detection of incorrect data
CN104850618B (zh) * 2015-05-18 2018-06-01 北京京东尚科信息技术有限公司 一种提供有序数据的系统和方法
US20170046530A1 (en) * 2015-08-15 2017-02-16 Seshan Raj Distributed Cloud Storage System (DCSS) for secure, reliable storage and retrieval of data and computing objects
US20170091201A1 (en) * 2015-09-30 2017-03-30 Longsand Limited Dynamic classification of digital files
US11012414B2 (en) * 2019-04-30 2021-05-18 Centripetal Networks, Inc. Methods and systems for prevention of attacks associated with the domain name system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080256014A1 (en) * 2007-04-10 2008-10-16 Joel Gould Editing and Compiling Business Rules

Also Published As

Publication number Publication date
CA2965125C (en) 2020-12-15
AU2015336259B2 (en) 2018-08-30
CA2965122A1 (en) 2016-04-28
US10191924B2 (en) 2019-01-29
CN107209764B (zh) 2020-12-15
CA2965122C (en) 2021-11-09
CN107209764A (zh) 2017-09-26
AU2015336265A1 (en) 2017-06-01
KR101965522B1 (ko) 2019-04-03
WO2016064714A1 (en) 2016-04-28
HK1244332A1 (zh) 2018-08-03
AU2015336259A1 (en) 2017-06-01
US11334536B2 (en) 2022-05-17
EP3210170A1 (en) 2017-08-30
WO2016064720A1 (en) 2016-04-28
HK1244333A1 (zh) 2018-08-03
JP2017538191A (ja) 2017-12-21
EP3210171B1 (en) 2020-09-16
KR20170074952A (ko) 2017-06-30
EP3210171A1 (en) 2017-08-30
KR20170074949A (ko) 2017-06-30
CN107209763A (zh) 2017-09-26
SG11201703061XA (en) 2017-05-30
JP2017536614A (ja) 2017-12-07
CN107209763B (zh) 2021-04-09
US20160110351A1 (en) 2016-04-21
JP6379290B2 (ja) 2018-08-22
SG11201703110WA (en) 2017-05-30
US20160110407A1 (en) 2016-04-21
CA2965125A1 (en) 2016-04-28
US20190391964A1 (en) 2019-12-26
JP6511518B2 (ja) 2019-05-15
US10191923B2 (en) 2019-01-29

Similar Documents

Publication Publication Date Title
US11182204B2 (en) System and method for batch evaluation programs
JP7299163B2 (ja) データフローグラフ構成
US11334536B2 (en) Specifying and applying rules to data
US20140115589A1 (en) System and method for batch evaluation programs
CN117033497B (zh) 数据湖上数据更新与读取的方法及相关设备
CN118152394A (zh) 表单处理方法、装置、计算机设备、存储介质和产品
CN115328570A (zh) 有限元分析的插件调用方法及装置
CN115455035A (zh) 数据查询模型构建方法和计算机可读存储介质
McPhillips Transitioning From Relational to Nosql: a Case Study
Hansen et al. Microsoft SQL Server 2005: Rethinking Code Placement
NZ616212B (en) System and method for batch evaluation programs
NZ616299B (en) System and method for batch evaluation programs

Legal Events

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