KR20050085060A - 메시지 플로우 관리 방법 및 시스템과 컴퓨터 판독가능한기록 매체 - Google Patents

메시지 플로우 관리 방법 및 시스템과 컴퓨터 판독가능한기록 매체 Download PDF

Info

Publication number
KR20050085060A
KR20050085060A KR1020057009069A KR20057009069A KR20050085060A KR 20050085060 A KR20050085060 A KR 20050085060A KR 1020057009069 A KR1020057009069 A KR 1020057009069A KR 20057009069 A KR20057009069 A KR 20057009069A KR 20050085060 A KR20050085060 A KR 20050085060A
Authority
KR
South Korea
Prior art keywords
message
node
workflow
processing
access
Prior art date
Application number
KR1020057009069A
Other languages
English (en)
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 KR20050085060A publication Critical patent/KR20050085060A/ko

Links

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
    • 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
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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
    • G06Q10/00Administration; Management
    • G06Q10/02Reservations, e.g. for tickets, services or events
    • 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
    • G06Q10/00Administration; Management
    • G06Q10/02Reservations, e.g. for tickets, services or events
    • G06Q10/025Coordination of plural reservations, e.g. plural trip segments, transportation combined with accommodation
    • 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
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • Human Resources & Organizations (AREA)
  • Theoretical Computer Science (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Strategic Management (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Quality & Reliability (AREA)
  • Operations Research (AREA)
  • Marketing (AREA)
  • Development Economics (AREA)
  • Software Systems (AREA)
  • Educational Administration (AREA)
  • Game Theory and Decision Science (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)

Abstract

일 형태에서, 메시지 플로우 관리 방법은 컴퓨터 소프트웨어 애플리케이션의 처리 노드에 의해 동시에 메시지들을 처리하는 단계를 포함한다. 상기 처리 노드는 로크 취득(lock acquisition), 시스템 리소스 액세스 및 플로우 경로에서 상호 접속된 로크 해제 노드의 적어도 하나의 세트를 포함한다. 그러한 세트에서, 처리는 제각기의 메시지를 처리하는 로크 획득 노드에 응답하여 상기 세트의 각각의 메시지에 대해 배타적으로 시스템 리소스에 대한 액세스를 승인하는 것을 포함한다. 시스템 리소스는 메시지를 처리하는 상기 세트의 시스템 리소스 노드에 응답하여 상기 메시지에 대해 액세스된다. 상기 메시지에 대한 리소스의 액세싱은 소정의 시스템 상태의 변경을 포함한다. 상기 시스템 리소스의 배타적인 액세싱은 그 메시지를 처리하는 세트의 로크 해제 노드에 응답하여 해제된다.

Description

메시지 플로우 관리 방법 및 시스템과 컴퓨터 판독가능한 기록 매체{METHOD, APPARATUS AND COMPUTER PROGRAM PRODUCT FOR MANAGING MESSAGE FLOW IN A MULTITHREADED, MESSAGE FLOW ENVIRONMENT}
본 발명은 메시지 플로우 환경에서 관련된 트랜잭션들에 대한 다중 메시지를 갖는 시스템에 대해 시스템 상태를 관리하는 것에 관한 것으로, 특히 메시지 플로우 환경에서 그 메세지들 중의 선택된 메시지에 대해 시스템 리소스로의 배타적인 액세스를 승인하고 해제하기 위한 노드(nodes)에 관한 것이다.
비즈니스 기업 데이터를 보다 생산적인 용도로 사용하기 위해서는 그 데이터는 상이한 소프트웨어 애플리케이션들 간에 신뢰성있게 이동되어야 한다. 즉, 비즈니스는, 기업 내의 임의의 장소에 배치되어 서로 연결되고 심지어 메시지를 다른 비즈니스 기업의 시스템, 가령 고객들 및 공급업자들의 시스템에 전송할 애플리케이션들을 필요로 한다. 간단한 일예로는 서로 통신을 필요로 하는 두개의 페이롤 시스템(payroll system)이 있다. 이러한 노력에도 불구하고 수많은 문제가 발생하는데, 그 문제들의 적어도 일부는 다양한 데이터 포맷을 사용하여 이종의 네트워크형 플랫폼들 상에서 실행되는 이질적인 애플리케이션들 간의 통신과 관련된다. 일예의 페이롤 시스템에서, 가령 이들 모든 시스템들은 종업원 이름들을 가질 수 있지만 하나의 시스템 내의 하나의 필드에 저장된 이름과 다른 시스템 내의 1개 이상의 필드 내에 저장된 이름을 가질 수 있다. 게다가, 일예의 페이롤에 의해 예시되는 문제는 비교적 간단하다. 하나의 애플리케이션에 의해 생성되는 데이터는 다른 애플리케이션에 대해서는 인식하기가 더욱 불가능한 데이터 구조를 가질 수 있다. 물론 애플리케이션들 간의 데이터를 변환할 수는 있지만 데이터가 보다 많은 시스템들 간에 공유하기 때문에 오버헤드는 허용될 수가 없으며 장래의 유지보수는 확대되고 종종 성가신 작업이 된다.
이러한 상황은 공통의 애플리케이션 프로그래밍 인터페이스(API)와의 메시지 처리 애플리케이션(message processing application)을 개발하기 위한, 가령 IBM의 WebSphere MQSeries Integrator("WMQI")와 같은 통합 툴에 대한 포커싱의 증가를 초래했다. ("WebSphere MQSeries Integrator"는 IBM의 상표이다) WMQI와 같은 소프트웨어에 의해 개발된 기업 통합 애플리케이션은 전형적으로 다른 애플리케이션들 간에서 전달되는 메시지에 대한 일종의 브로커(broker)와 같은 배포 허브(distribution hub)로서 동작하며, 따라서 본 명세서에서는 "브로커"로서 지칭될 수도 있다. 이러한 중심 위치에서, 메시지들이 어떻게 변환되고 라우팅되는지를 규정하는 정의가 구성된다. 이러한 장치는 애플리케이션들 간의 수많은 인터페이스에 대한 요건을 제거하고 상이한 운영 체제와 같은 플랫폼 차이에 관한 개발자의 걱정을 덜어주는 경향이 있다.
이러한 종류의 기업 통합 애플리케이션은 전형적으로 그래픽 툴(graphical tool), 및 "워크플로우(workflow)" 혹은 '메시지 플로우(message flow)" 환경으로서 지칭될 수 있는 것을 생성하는, 다양한 사전정의된 노드들을 포함하는 상호접속된 노드들의 구조 상에서의 메시지 플로우를 구성하는 하이 레벨 플로우 랭귀지에 의해 특징지어진다. 즉, 브로커 내에서, 개개의 기능들은 상호접속된 노드들의 집합체에 할당되며, 그 노드에서 처리 및 변환 동작(processing and transformation activities)가 발생한다. 사전정의되고 커스텀화된 노드들의 배치를 통해, 고급 처리 환경(sophisticated processing environment)이 형성되며, 이 환경에서 노드들은 메시지 플로우 내의 메시지 데이터에 관한 동작을 수행하며, 그 메시지 플로우 외부의 정보, 가령 데이터 베이스 혹은 외부 애플리케이션 내의 정보에 액세스할 수 있으며 그리고 큐(queue) 상에 메시지를 배치함으로써 그 메시지 플로우를 그대로 남겨둘 수 있다.
WMQI와 같은 브로커에서의 멀티쓰레딩(multithreading)을 위해 전형적으로 소정의 지원이 제공된다. 메시지는 큐로부터 판독되어 메시지 플로우를 개시할 수 있으며 큐 내로 배치되어 메시지 플로우를 종료할 수 있다. 입력 노드와 종료 노드 사이에는 멀티플 플로우 경로(multiple flow path)가 존재할 수 있으며, 각각의 메시지는 상이한 경로를 통해 동시에 플로잉(flowing)하고 각각의 메시지는 그 자체의 쓰레드(thread)에 의해 다루어진다(handled). 게다가, 입력 노드와 종료 노드 간에 단지 하나의 플로우 경로가 존재한다고 할지라도, 동시적인 동일 메시지 플로우의 인스탄스들이 지지되며, 각각의 인스탄스는 큐로부터 판독된 자체의 제각기 메시지를 처리한다.
그러한 멀티쓰레딩된 메시지의 경우 시스템 상태를 유지하는 것이 중요하다. 가령, 두개의 멀티쓰레딩된 트랜잭션, 혹은 동일한 트랜잭션에 대한 두개의 멀티쓰레딩된 메시지은 데이터베이스와 같은 공통의 소스에 액세스할 수 있다. 쓰레드가 그 소스에 액세스하는 방식은 트랜잭션 보전성(transactional integrity), 즉 그 시스템을 적절한 상태로 유지하기 위해서는 중요한 것일 수 있다. 그러나, 종래의 워크플로우 애플리케이션에서, 처리 노드(processing nodes)는 그 시스템에서 플로잉(flowing)되는 메시지의 트랜잭션 보전성을 자동으로 그리고 명시적으로 유지하지 못한다. 대신에, 개발자는 상기 브로커 애플리케이션(broker application)을 열심히 구조화하고 그리고 그 사전결정된 트랜잭션 특성을 적용함으로써 메시지 플로우의 바운드(bound) 내에서 트랜잭션 보전성을 주의깊게 유지해야만 한다.
쓰레드들 간에 트랜잭션 보전성을 유지하기 위해 메시지 플로우 애플리케이션을 구조화하는 하나의 공지된 방법은 관련된 메시지를 강제로 가입시키는 것이다. 가령, Notani 등에 의한 2002년 5월 28일의 미국 특허 제 6,397,192B1호의 "Synchronizing One or More Workflows Using One or More Synchronization Logic"을 참조하라. 그러나, 이는 특히 이러한 가입이 멀티플 쓰레드가 본질적으로 단일 쓰레드가 되도록 강제하는 것을 포함할 경우에 성능 결함을 야기할 수 있다. 따라서, 멀티쓰레딩된 메시지 플로우 환경에서 관련 트랜잭션에 대한 멀티플 메시지를 관리하기 위한 개선점이 요구된다.
도 1은 본 발명의 일 실시예에 따라 금융 트랜잭션의 메시지에 대한 로크 및 해제 노드(locking and releasing node)를 사용한 컴퓨터 애플리케이션 프로그램에서의 워크플로우를 도시한다.
도 2는 본 발명의 일 실시에에 따라 항공 예약 트랜잭션의 메시지에 대한 로크 및 해제 노드를 사용한 컴퓨터 애플리케이션 프로그램에서의 워크플로우를 도시한다.
도 3은 본 발명의 일 실시예에 따라 멀티플렉싱된 송신 라인에 액세스하는 메시지에 대한 로크 및 해제 노드를 사용한 컴퓨터 애플리케이션 프로그램에서의 워크플로우를 도시한다.
도 4a는 본 발명의 일 실시예에 따라 동일한 트랜잭션에 관련한 두개의 메시지에 대한 워크플로우의 추가적인 특징을 도시한다.
도 4b는 본 발명의 일 실시예에 따라 상이한 트랜잭션에 관련한 두개의 메시지에 대한 워크플로우의 추가적인 특징을 도시한다.
도 5는 본 발명의 시스템 형태에 대한 컴퓨터 시스템을 도시한다.
전술한 개선의 필요성은 본 발명에서 강조된다. 본 발명의 일 형태에서, 메시지 플로우 관리 방법은 컴퓨터 소프트웨어 애프리케이션에서 ("워크플로우 노드"로 지칭되기도 하는) 각각의 처리 노드와 관련한 인스트럭션에 의해 수많은 메시지를 동시에 처리하는 것을 포함한다. (본 명세서에서 그러한 노드와 관련한 인스트럭션에 의해 처리되는 메시지는 간단히 "그 노드에 의해 처리되는" 메시지로 지칭될 수 있다.) 처리중인 노드들은 로크 취득(lock acquisition), 시스템 리소스 액세스 및 ("워크플로우 경로" 혹은 간단히 "워크플로우"로 지칭되기도 하는) 플로우 경로에서 상호 접속된 로크 해제 노드의 적어도 하나의 세트를 포함한다. 그러한 세트에서, 그 세트의 로크 취득, 시스템 리소스 액세스 및 로크 해제 노드는 플로우 경로 내에서 상호 접속되며 플로우 경로에 의해 정의되는 시퀀스로 각각의 메시지를 처리한다. 상기 처리는 제각기의 메시지를 처리하는 세트의 로크 취득 노드에 응답하여 세트의 각각의 메시지에 대해 배타적으로 시스템 리소스에 대한 액세스를 승인하는 것을 포함한다. 이 시스템 리소스는 메시지를 처리하는 세트의 시스템 리소스에 응답하여 그 메시지에 대해 액세스된다. 상기 메시지에 대한 리소스의 액세싱은 소정의 시스템 상태의 변경을 포함한다. 상기 시스템 리소스의 배타적인 액세싱은 그 메시지를 처리하는 세트의 로크 해제 노드에 응답하여 해제된다.
본 명세서에서 "워크플로우 처리"의 용어는 플로우 경로 내의 노드들과 관련된 인스트럭션에 의해 메시지를 처리하는 프로세스의 인스탄스를 지칭하는데 사용된다.
전술한 설명에 의하면 시스템 리소스는 로크 메카니즘(lock mechanism)에 의해 선택적으로 보호되어 멀티플 워크플로우 처리가 리소스를 동시에 사용하지 못하도록 한다는 것을 이해해야 한다. 워크플로우가 시스템 리소스를 사용하도록 하기 위해서는 그 워크플로우는 현재 "로크"를 소유해야만 한다. 소정의 트랜잭션에 대한 단지 하나의 워크플로우 프로세스만이 임의의 주어진 인스탄스(instance)에서 로크를 소유할 것이다.
본 발명의 목적, 이점, 추가의 특징, 및 다른 형태들은 첨부되는 도면을 참조하면서 후술되는 상세한 설명을 통해 명백해질 것이다.
본 명세서에 첨부되는 청구범위는 본 발명의 신규한 특징을 기술하고 있다. 본 발명의 선호되는 용도, 추가의 목적 및 이점들은 첨부되는 도면을 참조하여 설명되는 실시예의 상세한 설명을 통해 이해될 것이다.
도 1을 참조하면, 본 발명의 일 실시예에 따라, 컴퓨터 애플리케이션 프로그램에 대해 플로우 경로(100A, 100B)와 플로우 경로의 제 1 및 제 2 인스탄스가 도시된다. 플로우 경로(100A, 100B)는 트랜잭션을 시작에서 종료까지 관리하기 위해 유한 상태 머신(finite state machine)을 필요로 하는 금융 트랜잭션을 처리하기 위한 것이다. 본 명세서에 사용되는 바와 같이, 용어 "금융 트랜잭션"은 계정 정보의 갱신이나, 저축 계정, 유가증권, 뮤추얼 펀드, 약속 어음, 증권 계약서, 상업 어음, 또는 부동산을 포함하는 임의의 종류의 금융 자산의 양도를 포함한다. 플로우 경로(100A, 100B)는 각각 커넥션에 의해 상호 접속된 다수의 노드(120A 내지 150A, 120B 내지 150B)를 갖는다. (노드(120A, 125A) 간의 커넥션(115A)은 설명상 명시적으로 번호가 매겨진다.) 비록 두개의 경로(100A,100B)가 도시되지만, 플로우 경로의 다수의 인스탄스(instance)가 존재하거나 환경에 의존하는 오직 하나의 인스탄스가 존재할 수 있다. 즉, 금융 트랜잭션은 메시지에 의해 구현되며 시스템 리소스, 본 실시예의 경우 데이터베이스에 대한 액세스를 필요로 한다. 입력 큐에서 쓰레드 풀(thread pool)(도시안됨)로부터의 쓰레드의 가용성을 대기하는 다수의 메시지(105)가 도시된다. 쓰레드의 가용성 수신시, 플로우 경로(100A)의 제 1 인스탄스가 생성되며, 그 인스탄스를 위한 입력 노드(120A)는 큐(110)로부터 메시지(105)를 제거한다.
이러한 금융 트랜잭션들 중의 하나에 대한 적절한 동작은 시스템의 상태, 특히 소정의 시스템 리소스의 상태, 가령 이전에 언급한 데이터베이스에 의존한다. 큐(110) 내에는 하나 이상의 트랜잭션을 위한 메시지가 존재할 수 있지만 동일한 트랜잭션에 대해 수많은 메시지(105)가 존재할 수도 있다. 각각의 메시지(105)는 '플로우 경로'의 인스탄스와 관련한 노드들의 세트, 가령 플로우 경로(100A)와 관련된 노드(120A 내지 150A)에 의해 동시에 처리될 수 있다. 도 1의 실시예에는 동일한 트랜잭션에 대한 제 2 메시지(105)가 존재하며, 그 트랜잭션에 대한 제 2 메시지(105)는 다른 플로우 경로 인스탄스, 가령 플로우 경로(100B)에서 동시에 처리된다. 결과적으로, 트랜잭션 보전성 문제가 발생하며, 그에 따라 그 트랜잭션 및 데이터베이스의 상태에 대해 단지 적절한 동작들이 수행될 수 있도록 무언가가 수행되어야만 한다. 즉, 각각의 메시지(105)에 대한 트랜잭션에 관하여 작업이 수행될 때, 데이터베이스 상태는 변경될 것이며, 이전의 데이터베이스 상태에서 적합했던 동작들은 새로운 상태에서는 더이상 적합하지가 않을 것이다. 이러한 이유로, 소정의 시간에서의 트랜잭션을 위한 하나의 메시지에 대해 단지 하나의 세트의 동작만이 취해질 것이고, 그 동작의 세트는 동일한 트랜잭션과 관련한 다른 메시지에 대해 다른 동작이 시작되기 전에 완료되어야만 한다. 게다가, 만약 그렇지 않다면 동작은 다른 메시지에 대한 액세싱 이전에 완료되어야만 하거나, 그렇지 않으면 데이터베이스의 상태의 보전성은 훼손되거나 적어도 모호해질 것이다.
이러한 문제에 역점을 두어 다루기 위해서, 플로우 경로(100A, 100B)는 제각기 "LockTransaction" 노드(120A, 120B), 즉 본 명세서에서 보다 일반적으로 "로크 노드(locking node)"로 지칭되는 노드 타입을 사용한다. 동일한 트랜잭션에 관한 노드(120A, 120B)의 각각의 인스탄스에 의해 처리되는 메시지(105)에 대해, 로크 노드(120A, 120B)는 단지 하나의 메시지(105)에 대해 그 데이터베이스로의 배타적인 액세스를 승인한다. 본 실시예의 특징에 의하면, 그러한 LockTransaction 노드는 다른 트랜잭션에 관한 다른 동시 메시지를 위해 데이터베이스 혹은 다른 시스템 리소스로의 액세스를 차단하지는 못한다. 이러한 특징은 시스템 성능을 개선시킨다. 그러나, 다른 실시예에서, 그러한 LockTransaction 노드는, 그 메시지들이 상이한 트랜잭션들과 관련되는지에는 무관하게, 다른 동시 메시지를 위해 데이터베이스 혹은 다른 시스템 리소스로의 액세스를 차단하지는 못한다.
일예로서, 트랜잭션은 특정 은행 계정에 관한 지급일 수 있다. 하나의 메시지(105)는 상기 계정에서 다른 계정으로의 자금의 이동을 야기할 수 있는 지급일 수 있는 반면, 다른 메시지(105)는 지급을 취소하는 것으로, 물론 이는 그 계정에서의 자금의 유지를 초래할 수 있다. 데이터베이스의 액세싱은 지급 메시지의 경우 데이터베이스에 대한 데빗(debit)과 같이, 계정으로부터의 이동에 관한 정보를 데이터베이스에 알리는 것이거나 그렇지 않을 경우 지급 메시지가 나중에 처리된다면 지급 명령을 무효로하도록 지급 중단을 데이터베이스에 알리는 것이다. 로크 노드(120A, 120B)는 처리가 메시지(105)에 대해서는 직렬화되지만 동일한 트랜잭션에 관한 메시지(105) 및 데이터베이스에 액세싱하는 것에 관해서는 직렬화되지 않도록 보장한다.
보다 더 넓은 정도로의 직렬화보다는 오히려 위의 방식으로 로크가 제한된다는 것이 시스템 성능에 대한 이점이 된다. 즉, 일부의 애플리케이션에서, 데이터베이스에 대한 액세싱 외에는 동일 트랜잭션에 대한 다른 메시지 처리가 배제될 수 없다는 것이다. 상기 로크가 데이터베이스에 대한 로크 액세스에 바로 국한되므로, 다른 처리가 진행될 수 있다. 마찬가지로, 동일 트랜잭션과 관련되지 않은 다른 메시지에 대해, 처리가 상기 로크 노드에 의해서는 중단되지 않는다는 것이 이점이 된다.
보다 상세하게 설명하기 위해 플로우 경로(100A)에 의한 처리가 또한 기술된다. 계정 데이터베이스가 노드(120A)의 또다른 인스탄스, 가령 노드(120B)에 의해 사전에 로크되었다면, 노드(120A)의 인스탄스는 해제될 데이터베이스에 관한 로크를 대기한다. 만약 데이터베이스가 사전에 노드(120A)의 또다른 인스탄스에 의해 로크되지 않았다면 메시지(105)는 트랜잭션을 위한 로크 노드(120A)에 의해 더 처리된다. 노드(120A)에 의한 이러한 처리에 응답하여, 데이터베이스의 액세싱은 동일 트랜잭션에 관한 다른 메시지(105)에 대해 로크된다. 노드(120A)에 의한 데이터베이스로의 배타적 액세스로 승인된 메시지(105)에 대해, ReadStateDatabase 노드(130A)에 의한 처리는 그 메시지(105)에 대한 데이터베이스의 상태를 판독한다. 다음에, UpdateStateDatabase 노드(140A)에서, 데이터베이스의 상태는 메시지(105)에 대해 갱신된다. 데이터베이스의 갱신은 가령 지급 메시지에 대해 이전에 언급한 데빗이나 취소된 지급 메시지에 대한 지급 중단 표시를 포함할 것이다. 트랜잭션의 갱신은 가령 지급이 완료되었거나 지급 중단이 승인되었다는 것을 나타내는 것을 포함할 것이다. 그것은 지급이 예상되는 날짜에 관한 변경, 피지급인의 변경과, 지급을 행할 책임자의 변경, 지급을 위해 사용될 통화의 변경, 또는 구매자 혹은 판매자에게로의 특정 명령을 포함하는 일부의 텍스트 열의 변경을 포함할 수 있다.
다음에, 노드(140A)에 의한 처리가 메시지(105)에 대한 데이터베이스를 갱신한 이후에, 그 데이터베이스에 대한 배타적 액세싱은 메시지(105)를 처리하는 FreeTransaction 노드(145A)에 응답하여 해제되며, 메시지(105)는 다음에 노드 출력(150A)에 응답하는 처리에 의해 출력 큐(175) 내에 배치된다. 데이터베이스 상에서의 로크를 해제하는 FreeTransaction 노드(145A)에 응답하여, 노드들은 도시된 플로우 경로(100B)와 같이, 동일 트랜잭션에 관한 플로우 경로의 다른 인스탄스 내의 다른 메시지(105)에 대한 데이터베이스에 액세스하기 위해 해제된다.
도 2를 참조하면, 플로우 경로(200)의 인스탄스가 본 발명의 실시예에 따라, 항공 예약 트랜잭션에서의 메시지를 위한 로크 및 해제 노드를 사용한 컴퓨터 애플리케이션 프로그램을 위해 도시된다. 도 2의 예는 또한 호텔 혹은 공연 이벤트에 대한 예약을 포함한 임의의 종류의 예약에 적용가능할 수 있다. 플로우 경로(200)는 커넥션에 의해 상호 접속된 다수의 노드(220 내지 280)를 갖는다. 예시의 목적으로 노드(220)와 노드(225) 사이에 커넥션을 위한 엘리먼트 번호(215)가 명시적으로 설정되어 있다. 다시, 오직 하나의 플로우 경로(200)가 (이 경우 서브 경로를 가지면서)도시되지만, 플로우 경로(200)의 다중 인스탄스가 존재할 수 있다. 이전의 예에서와 같이, 예약 트랜잭션은 메시지에 의해 구현되며, 시스템 리소스에 대한 액세스, 이 경우에 비행 정보 데이터베이스 및 좌석 매핑 데이터베이스에 대한 액세스를 필요로 한다. 메시지(205)는 좌석 할당을 포함하는 비행을 예약하고자 하는 티켓팅 에이전트, 웹 프로그램, 고객 등으로부터 발생한다. 메시지(205)는 입력 큐(210) 내에서 쓰레드 풀(도시안됨)로부터의 쓰레드의 이용가능성을 대기한다. 쓰레드의 이용가능성에 따라, 플로우 경로(200)는 그 쓰레드에 대해 인스탄스화되며, 경로(200)에 대한 입력 노드(220)는 그 큐(210)로부터 메시지(205)를 제거한다.
도 1에서와 같이 도 2의 실시예에서, 적절한 동작들은 데이터베이스의 상태에 의존한다. 각각의 비행 예약 메시지(205)는 플로우 경로(200)의 인스탄스와 관련된 노드 세트에 의해 동시에 처리될 수 있다. 만약 동일 비행 및 좌석 할당을 위한 하나 이상의 예약 메시지(205)가 존재하고 이들 다수 메시지(205)가 동시에 처리된다면, 무결성 문제(issue)가 발생한다. 즉, 동일 비행에 관한 동일 좌석의 다수의 잠재적 예약의 문제는 메시지 플로우 경로(200)의 인스탄스의 바운드 내에서 관리되어야만한다.
엔터 노드(enter node)(220)는 메시지(205)에 의해 표시되는 비행을 로케이팅하는(locating) LocateFlight 노드(225)에 커넥터(215)를 통해 그 메시지(205)를 전달한다. 다음에, IsFlightOpen 노드(230)는 비행이 예약을 수신하도록 개방되는지 여부를 결정한다. 만약 그렇지 않다면, 그 메시지는 TryOtherFlight 노드(235)에 전달되며, 이 노드는 티켓팅 에이전트, 고객 등에 프롬프트하여 잠재적 비행에 관해 에이전트 등에 통지하는 것을 포함하는 다양한 비행을 요청한다. 새로운 요청을 수신하는 것에 응답하여, 그 메시지는 노드(235)에 의해 다시 노드(225)에 전달되며, 그 비행은 로케이팅되고, 노드(230)는 비행이 예약을 수신하도록 개방되는지의 여부를 결정한다. 대안으로서, 만약 에이전트, 고객 등이 새로운 요청을 만들지 않는다고 선택하게 되면, 노드(235)는 그 메시지(205)를 노드(280)에 전달하여 비행을 예약하지도 않고 빠져나간다.
일단 개방된 비행이 노드(230)에 의해 로케이팅되면, 그 메시지(205)는 LockFlight-Access 노드(240)에 전달된다. 만약 비행 정보 데이터베이스가 사전에 노드(240)의 또다른 인스탄스에 의해 로크되지 않았다면, 노드(240)의 현재의 인스탄스는 특정 비행에 대한 비행 정보 데이터베이스에 대한 액세스를 로크하여 동일 비행을 위한 다른 메시지(205)가 그 데이터베이스에 액세스하는 것을 방지하며, 현재의 노드(240)는 그 메시지(205)에 대한 배타적 액세스를 승인한다. 만약 비행 정보 데이터베이스가 사전에 노드(240)의 또다른 인스탄스에 의해 로크된다면, 노드(240)의 현재의 인스탄스는 해제될 비행 정보 데이터베이스 상에서의 로크를 대기한다. 이것은 각각의 비행에 대해 비행 정보 데이터베이스에 대한 토큰을 할당함으로써 구현될 수 있다. 이러한 방식으로, 노드(240)는 토큰을 수신하는 것에 응답하여 그 비행에 대한 데이터베이스에 대한 배타적 액세스를 승인한다.
다음에, LocateSeatPreference 노드(245)에서, 좌석 선호에 관한 정보가 비행 정보 데이터베이스에 대한 승인된 액세스가 되는 메시지(205)를 위해 로케이팅된다. 이러한 것은 승객의 계정 내의 정보를 찾는 것이나 매뉴얼 입력을 수신하기 위해 프롬프팅하는 것을 포함할 수 있다. 좌석 선호는 가로 좌석 대 통로 좌석, 앞쪽 좌석 대 뒷쪽 좌석, 날개 위의 좌석 혹은 날개 위가 아닌 곳의 좌석 등을 포함할 수 있다.
일단 좌석 선호가 회득되면, 메시지(205)는 IsSeatOpen 노드(255)에 전달되며, 이 노드는 좌석 매핑 데이터베이스에 질의하여 상기 선호에 의해 표시된 타입의 특정 좌석이 이용가능한지의 여부를 결정한다. 만약 선호된 타입의 좌석이 이용불가능하다면, 그 메시지(205)는 TryOtherSeat 노드(250)에 전달되며, 이 노드는 에이전트에게 재시도 혹은 예약을 포기할 것인지를 문의한다. 만약 에이전트가 재시도를 선택한다면, 플로우는 그 메시지를 노드(245)로 리턴하고, 상기 노드(245)는 새로운 선호의 매뉴얼 입력을 탐색하거나 그 입력을 위해 프롬프트한다.
일단 노드(255)에서 선호된 타입의 좌석이 개방되어 있다고 결정되면, 그 메시지(205)는 LockSeatAccess 노드(260)에 전달된다. 만약 좌석 매핑 데이터베이스가 사전에 노드(260)의 또다른 인스탄스에 의해 로크되어 있지 않다면, 가령, 노드(260)가 특정 비행에 대한 좌석 매핑 데이터베이스를 위한 토큰을 수신하다면, 노드(260)의 현재 인스탄스는 특정 비행에 대한 데이터베이스에 대한 액세스를 로크하여, 동일한 비행에 대한 다른 메시지(205)가 그 데이터베이스에 액세스하는 것을 차단하며, 현재의 노드(260)는 그 메시지(205)에 대해 배타적 액세스를 승인한다. 다음에 좌석 매핑 데이터베이스에 대한 액세스가 승인된 메시지(205)는 RecordReservation 노드(265)에 전달되며, 이 노드는 좌석 할당 및 비행 예약을 비행 정보 및 좌석 매핑 데이터베이스 내에 레코딩한다. 데이터베이스 내에 레코딩된 정보는 또한 또다른 처리를 위해 메시지(205)에 첨부된다.
다음에, 메시지(205)는 ReleaseSeatAccess 노드(270)에 전달되며, 이 노드는 가령 노드(260)에 할당된 좌석 매핑 데이터베이스에 대한 토큰을 다시 한번 이용가능하게 함으로써 특정 비행에 관한 좌석 매핑 데이터베이스를 해제한다. 다음에, 그 메시지는 ReleaseFlightAccess 노드(275)에 전달하며, 이 노드는 마찬가지로 노드(240)에 할당된 비행 정보 데이터베이스에 대한 토큰을 다시 한번 이용가능하게 함으로써 특정 비행에 관한 비행 정보 데이터베이스를 해제한다. 다음, 노드(275)는 Exit 노드(280)에 메시지(205)를 전달하며, 이 노드는 다시 그 메시지를 출력 큐(290)에 배치하며, 이 큐에서 메시지는 다른 처리를 대기하며, 이 다른 처리는 그 메시지(205)에 첨부된 정보에 기반하여 에이전트 및 고객에 대한 통지를 발생시키는 것과, 티켓을 프린팅하는 것 등을 포함할 수 있다.
도 3을 참조하면, 플로우 경로(300)의 인스탄스는 본 발명의 실시예에 따라 일부의 통신 트랜잭션을 수행하는 (도시안된)전송 라인을 액세싱하는 메시지에 대해 로크 및 해제 노드를 사용하는 컴퓨터 애플리케이션 프로그램을 위해 도시된다. 도 3의 예는 일반적으로 가령 TCP/IP 프로토콜에 따른 데이터 패킷을 송신하고 수신하는 것에 관한 트랜잭션을 포함한 다양한 통신 트랜잭션에 적용가능하다. 다시 한번, 플로우 경로(300)의 다수의 인스탄스가 존재할 수 있다. 즉, 메시지(305)는 입력 큐(310) 내에서 쓰레드 풀(도시안됨)로부터의 쓰레드의 이용가능성을 대기한다. 쓰레드 이용가능성에 따라, 플로우 경로(300)는 인스탄스화되고, 그 인스탄스에 대한 Input 노드(320)는 큐(310)로부터 메시지(305)를 제거한다. 그 메시지(305)는 다음에 FormatData 노드(325)에 전달되며, 이 노드는 메시지(305)가 송신되는 시스템 혹은 애플리케이션에 대한 데이터를 포맷한다.
다음의 적절한 동작은 전송 라인의 상태에 의존한다. 따라서, 메시지(305)는 다음의 GetXmitLock 노드(330)에 전달된다. 만약 라인이 사전에 노드(330)의 또다른 인스탄스에 의해 로크된다면, 노드(330)의 현재 인스탄스는 해제될 라인 상에서의 로크를 대기한다. 만약 전송 라인이 사전에 노드(330)의 또다른 인스탄스에 의해 로크되어 있지 않다면, 노드(330)의 현재 인스탄스는 전송 라인에 대한 액세스를 로크하여, 다른 메시지(305)가 라인에 액세스하는 것을 차단하며, 현재의 노드(330)는 그 메시지(305)에 대한 배타적 액세스를 승인한다. 그 메시지(305)는 다음에 FlowOrder 노드(335)에 전달되며, 이 노드는 그 메시지(305)를 XmitData 노드(340)에 전달하며, 노드(340)와 관련된 코드가 실행된 후, 즉 노드(340)에서 실행되는 메시지(305)가 완료된 후, 메시지를 ReleaseXmitLock 노드(345)에 전달한다. 노드(340)에서, 그 메시지는 전송 라인 상으로 전달된다. 다음, 그 메시지는 노드(345)로 전달되며, 이 노드는 다시 한번 그 라인을 노드(330)에 할당된 그 라인에 대한 토큰을 이용가능하게 함으로써 해제한다. 다음, 노드(345)는 메시지(305)를 Exit 노드(350)에 전달하며, 이 노드는 다시 메시지(305)를 출력 큐(360) 내에 배치하며, 이 큐내에서 메시지는 또다른 처리를 위해 대기한다.
도 4를 참조하면, 본 발명의 실시예에 따른 메시지 플로우 매핑을 위한 방법의 여러 측면들이 도시된다. 전술한 바와 같이, 큐(410) 내의 메시지(405)는 각각의 컴퓨터 소프트웨어 애플리케이션 처리 노드와 관련한 인스트럭션에 의해 동시에 처리될 수 있다. 제 1 메시지(405.1)는 로크 획득 노드(420A), 시스템 리소스 액세스 노드(425B) 및 로크 해제 노드(425C)를 포함한 제 1 처리 노드 세트와 관련한 제 1 인스트럭션 쓰레드에 의해 처리된다. 상기 세트의 노드는 워크플로우의 메시지(405.1)를 처리하기 위한 시퀀스를 규정하는 워크플로우(410A) 내에서 상호접속된다. 제 2 메시지(405.2)는 로크 획득 노드(420B), 시스템 리소스 액세스 노드(425B) 및 로크 해제 노드(430B)를 포함한 제 2 처리 노드 세트와 관련한 제 2 인스트럭션 쓰레드에 의해 처리된다. 상기 제 2 세트의 노드는 워크플로우(410B) 내에서 상호접속된다. 워크플로우(410B)는 워크플로우(410A)의 또다른 인스탄스일 수 있다.
워크플로우(410A)에 대한 처리는 시간 t0에서 제각기의 메시지(405.1)를 처리하는 워크플로우의 로크 획득 노드(420A)에 응답하여 워크플로우의 메시지(405.1)를 위한 시스템 리소스에 대한 배타적 액세스를 승인하는 것을 포함한다. 액세스의 승인은 로크(402x)의 인스탄스를 획득하는 것으로서 도시된다. 마찬가지로, 워크플로우(410B)에 대한 처리는 시간 t2에서 제각기의 메시지(405.2)를 처리하는 워크플로우의 로크 획득 노드(420B)에 응답하여 워크플로우의 메시지(405.2)를 위한 시스템 리소스(450)에 대한 배타적 액세스를 승인하는 것을 포함한다.
워크플로우(410A)에 대한 처리는 또한 메시지(405.1)를 처리하는 워크플로우의 시스템 리소스 노드(425A)에 응답하여 메시지(405.1)에 대한 시스템 리소스(450)를 액세스하는 것(426A)을 포함한다. 이는 소정의 시스템 상태를 변경하는 메시지(405.1)를 포함한다. 시스템 리소스 노드(425A)가 워크플로우(410A) 내에서 승인 노드(420A) 다음에 위치하고, 시스템 리소스(450)가 시스템 리소스 노드(425A)에 의해 처리되는 것에 응답하여 액세스되기 때문에, 시스템 리소스는 승인 노드(420A)가 메시지(405.1)에 대한 로크(402x)를 획득하기 전까지는 액세스될 수 없다.
마찬가지로, 워크플로우(410B)에 대한 처리는 또한 메시지(405.2)를 처리하는 워크플로우의 시스템 리소스 노드(425A)에 응답하여 메시지(405.2)에 대한 시스템 리소스(450)의 액세싱을 포함하며, 상기 메시지는 소정의 시스템 상태를 변경하는 메시지(405.2)를 포함한다.
워크플로우(410A)에 대한 처리는 또한 메시지(405.1)를 처리하는 워크플로우의 로크 해제 노드(430A)에 응답하여 시스템 리소스(450)의 배타적 액세싱을 해제하는 것을 포함한다. 마찬가지로, 워크플로우(410B)에 대한 처리는 또한 메시지(405.2)를 처리하는 워크플로우의 로크 해제 노드(430B)에 응답하여 시스템 리소스(450)의 배타적 액세싱을 해제하는 것을 포함한다.
도 4에 도시된 실시예에서, 제 1 메시지(405.1)는 트랜잭션 X에 대한 것이고, 제 2 메시지(405.2)는 동일한 트랜잭션 X에 대한 것이다. 모든 메시지(405.1 및 405.2)에 대해, 각각의 로크 획득 노드(425A 및 425B)에 의해 시스템 리소스에 승인된 액세스의 배타성은 각각의 메시지의 트랜잭션의 동일성에 응답한다. 따라서, 도 4에 도시된 바와 같이, 제 1 메시지(405.1)에 대한 로크 획득 노드(425A)가시스템 리소스(450)에 대해 제 1 메시지(405.1)의 액세스를 승인했다면, 제 2 메시지(405.2)에 대한 로크 획득 노드(425B)는, 제 1 메시지(405.1)에 대한 로크 해제 노드(430A)가 로크(402x)를 해제하기 전에는 시스템 리소스(450)에 대한 제 2 메시지(405.2)의 액세싱, 즉, t1에서의 배타적 액세싱을 거부하는데, 그 이유는 제 1 메시지 및 제 2 메시지가 동일한 트랜잭션 X를 위한 것이기 때문이다.
환언하면, 도 4a에 도시된 예에서, 시스템 리소스 노드(425B)가 워크플로우(410B) 내의 승인 노드(420B) 후에 위치하고, 시스템 리소스(450)가 시스템 리소스 노드(425B)에 의해 처리되는 것에 응답하여 처리되고, 메시지(405.1)가 메시지(405.2)에 앞서 로크(402x)를 획득했기 때문에, 시스템 리소스(450)는, 해제 노드(430A)가 시간 t1에서 로크(402x)를 해제하고 그리고 승인 노드(420B)가 시간 t2에서 메시지(405.2)에 대한 로크(402x)를 획득하기 전에는 메시지(405.2)를 위해 액세스될 수 없다. 주목할 것은, 이러한 것은 인스트럭션 쓰레드를 가입시키는 것을 포함하는 것이 아니라 단지 로크 획득 노드(420A 및 420B)가 공통의 트랜잭션을 체킹하는 것을 포함하며, 그리고 만약에 공통의 트랜잭션이 발견되면, 응답적으로 그 공통의 트랜잭션에 대한 로크(402x)를 획득하고 해제한다는 것이다.
도 4b를 참조하면, 동일한 워크플로우(410A 및 410B)가 도시되지만 이 경우 메시지(405.1 및 405.2)는 이 시점에 상이한 트랜잭션으로 된다. 특히, 메시지(405.1)는 트랜잭션 U에 대한 것이고, 메시지(405.2)는 트랜잭션 V에 대한 것이다. 도시된 방법의 실시예에 의하면, 메시지(405.1 및 405.2)가 상이한 트랜잭션에 대한 것이므로, 제 2 메시지(405.2)는, 제 1 메시지(405.1)에 대한 로크 해제 노드(430A)가 배타적 액세싱을 해제하는지의 여부에 무관하게, 제 2 메시지(405.2)에 대한 로크 획득 노드(425B)에 의해 시스템 리소스(450)에 대해 액세스가 승인된다. 따라서, 도시된 바와 같이, 각각의 로크 획득 노드(420A 및 420B)에 의해 메시지(405.1)는 로크(402u)가 승인되지만 메시지(405.2)는 로크(402v)가 동시에 승인되어, 메시지(405.1 및 405.2)에 대한 모든 처리는 시스템 리소스(450)에 동시에 액세싱할 수 있다.
(도시안된)다른 실시예에서, 시스템 리소스의 액세싱의 배타성은 로크 획득 노드의 메시지에 대한 트랜잭션의 동일성과는 무관하다. 이 경우, 제 1 및 제 2 메시지가 상이한 트랜잭션에 대한 것의 여부에 무관하게, 만약 제 1 메시지에 대한 로크 획득 노드가 시스템 리소스에 대한 제 1 메시지의 액세싱을 승인했다면, 제 2 메시지 액세싱은, 메시지들이 동일한 트랜잭션을 위한 것인 도 4a에 도시된 바와 같이, 제 1 메시지에 대한 로크 해제 노드가 배타적 액세싱을 해제하기 전까지는 로크 해제 노드에 의해 시스템 리소스에 대해 거부되는 액세스가 된다.
도 5를 참조하면, 컴퓨터 시스템(510)이 도시되는데, 이 컴퓨터 시스템은 기술된 실시예에 일반적으로 적용가능하다. 상기 컴퓨터 시스템(510)은 프로세서(515), 휘발성 메모리(520)(가령, RAM), 키보드(525), 포인팅 장치(530)(가령, 마우스), 비휘발성 메모리(535)(가령, ROM, 하드디스크, 플로피디스크, CD-ROM, 및 DVD), 디스플레이 스크린을 갖는 디스플레이 장치(505)를 포함한다. 메모리(520 및 535)는 프로그램 인스트럭션을 저장하기 위한 것으로, 이 인스트럭션은 프로세서(515)에 의해 본 발명에 따른 방법의 다양한 실시예를 구현하도록 실행가능하다. 시스템(510) 내에 포함되는 컴포넌트들은 버스(540)에 의해 상호접속된다. (도시안된) 통신 장치는 시스템(510)과 다른 데이터 캐리어 간의 정보 교환을 인에이블하도록 버스(540)에 접속될 수 있다.
다양한 실시예에서 시스템(510)은 퍼스널 컴퓨터 시스템, 메인프레임 컴퓨터 시스템, 워크스테이션, 인터넷 어플라이언스, PDA, 메모리를 구비한 내장형 프로세서 등을 포함한 다양한 형태를 취한다. 일 실시예에서, 시스템(510)은 AIX 혹은 리눅스 운영 체제와 WMQI 애플리케이션을 실행하는 IBM RISC 6000 시스템이다. 또다른 실시예에서, WMQI 애플리케이션은 IBM NetVista 시스템(510)과 윈도우즈 NT 운영 체제에서 실행된다. 용어 "컴퓨터 시스템"은 메모리 매체로부터의 인스트럭션을 실행하는 프로세서를 갖는 임의의 장치를 포함하는 것으로 간주된다.
메모리 매체는 바람직하게도 본 발명에 따른 방법의 다양한 실시예를 구현하기 위한 인스트럭션(또한 "소프트웨어 프로그램"으로 알려짐)을 저장한다. 다양한 실시예에서, 하나 이상의 소프트웨어 프로그램은 프로시줘 기반의 기법, 컴포넌트 기반의 기법, 및/또는 객체 지향형 기법을 포함하는 다양한 방식으로 구현된다. 특정 실시예는 XML, C, C++, 자바, 및 마이크로소프트 파운데이션 클래스(MFC)를 포함한다.
본 발명이 소프트웨어 애플리케이션 및 컴퓨터 시스템의 문맥으로 기술되었지만, 당업자라면 본 발명의 프로세스는 다양한 형태의 인스트럭션의 컴퓨터 판독가능 매체로서 배포가능하며 본 발명이 그 배포를 수행하는데 실제 사용되는 특정 타입의 신호 포함 매체에 무관하게 동일하게 적용된다는 것을 이해할 수 있을 것이다. 컴퓨터 판독가능 매체의 예들은 플로피 디스크, 하드디스크 드라이브, RAM, 및 CD-ROM과 같은 기록가능한 타입의 매체와, 디지털 및 아날로그 통신 링크와 같은 전송 타입 매체를 포함할 수 있다.
본 발명의 실시예의 기술은 예시용으로 제공되었지만, 본 발명을 개시된 형태에 국한시킬려는 것은 아니다. 당업자라면 여러 변형 및 수정을 가할 수 있을 것이다.
본 실시예들은 본 발명의 원리를 최선으로 설명하고 당업자들에게 본 발명을 이해시키기 위해 선택되고 기술되었다. 고려되는 특정의 용도로 다양한 변형을 갖는 다른 실시예가 적응될 수 있다. 게다가, 첨부되는 청구범위에서의 동작들은 전적으로 세트된 특정의 시퀀스로 수행될 필요는 없다는 것을 이해해야 한다.

Claims (16)

  1. 메시지 플로우 관리 방법―메시지들은 제각기의 컴퓨터 소프트웨어 애플리케이션 처리 노드들과 관련된 인스트럭션에 의해 동시에 처리됨―에 있어서,
    제 1 세트의 처리 노드와 관련된 제 1 세트의 인스트럭션에 의해 제 1 메시지를 처리하는 단계―상기 제 1 세트의 노드들은 워크플로우의 메시지를 처리하기 위한 시퀀스를 규정하는 워크플로우 내에서 상호 접속됨―와,
    워크플로우 내에서 상호 접속된 제 2 세트의 처리 노드들과 관련된 제 2 세트의 인스트럭션에 의해 제 2 메시지를 처리하는 단계를 포함하되,
    상기 워크플로우는 적어도 제각기의 로크 획득, 시스템 리소스 액세스 및 로크 해제 노드를 포함하며,
    상기 워크플로우에 대한 처리는
    제각기의 메시지를 처리하는 워크플로우의 로크 획득 노드에 응답하여 워크플로우의 제각기의 메시지에 대한 시스템 리소스에 대해 배타적 액세스를 승인하는 단계와,
    그 메시지를 처리하는 워크플로우의 시스템 리소스에 응답하여 그 메시지에 대한 시스템 리소스를 액세싱하는 단계―상기 메시지에 대한 리소스의 액세싱은 소정의 시스템 상태를 변경하는 단계를 포함함―와,
    상기 메시지를 처리하는 워크플로우의 로크 해제 노드에 응답하여 상기 시스템 리소스의 배타적 액세싱을 해제하는 단계를 포함하는
    메시지 플로우 관리 방법.
  2. 제 1 항에 있어서,
    상기 제 2 워크플로우는 제 1 워크플로우의 제 2 인스탄스인 메시지 플로우 관리 방법.
  3. 제 1 항에 있어서,
    상기 제 1 및 제 2 메시지는 트랜잭션을 위한 것이고, 상기 액세스의 배타성은 상기 로크 획득 노드의 메시지에 대한 트랜잭션의 동일성에 응답하며,
    만약 상기 제 1 메시지에 대한 로크 획득 노드가 상기 시스템 리소스에 대한 제 1 메시지 액세스를 승인했다면,
    상기 제 1 메시지 및 상기 제 2 메시지가 동일 트랜잭션에 대한 것이라는 것에 응답하여, 상기 제 1 메시지에 대한 상기 로크 해제 노드가 상기 배타적 액세싱을 해제할 때까지 상기 제 2 메시지에 대한 로크 획득 노드에 의해 상기 시스템 리소스에 대한 제 2 메시지 액세스를 거부하는 단계와,
    상기 제 1 메시지 및 상기 제 2 메시지가 상이한 트랜잭션에 대한 것이라는 것에 응답하여, 상기 제 1 메시지에 대한 상기 로크 해제 노드가 상기 배타적 액세싱을 해제하는지의 여부에 상관없이, 상기 제 2 메시지에 대한 상기 로크 획득 노드에 의해 상기 시스템 리소스에 대한 상기 제 2 메시지 액세스를 승인하는 단계를 포함하는 메시지 플로우 관리 방법.
  4. 제 1 항에 있어서,
    상기 제 1 및 제 2 메시지는 소정의 트랜잭션에 대한 것이고, 상기 액세스의 배타성은 상기 로크 획득 노드의 메시지에 대한 트랜잭션의 동일성에 무관하며,
    상기 제 1 및 제 2 메시지가 상이한 트랜잭션에 대한 것인지의 여부에 무관하게, 만약 상기 제 1 메시지에 대한 로크 회득 노드가 상기 시스템 리소스에 대한 상기 제 1 메시지 액세스를 승인했다면,
    상기 제 1 메시지에 대한 상기 로크 해제 노드가 배타적 액세싱을 해제할 때까지 상기 제 2 메시지에 대한 상기 로크 획득 노드에 의해 상기 시스템 리소스에 대한 상기 제 2 메시지 액세스를 거부하는 단계를 포함하는 메시지 플로우 관리 방법.
  5. 제 1 항에 있어서,
    상기 메시지들은 금융 트랜잭션에 대한 것인 메시지 플로우 관리 방법.
  6. 제 1 항에 있어서,
    상기 메시지들은 예약 트랜잭션에 대한 것인 메시지 플로우 관리 방법.
  7. 제 1 항에 있어서,
    상기 메시지들은 통신 트랜잭션에 대한 것인 메시지 플로우 관리 방법.
  8. 메시지 플로우 관리 시스템―메시지들은 제각기의 컴퓨터 소프트웨어 애플리케이션 처리 노드들과 관련된 인스트럭션에 의해 동시에 처리됨―에 있어서,
    처리 장치와,
    상기 처리 장치에 동작가능하게 연결되며 상기 처리 장치에 대한 소정의 인스트럭션을 갖는 메모리 장치를 포함하며,
    상기 처리 장치는 상기 소정의 인스트럭션에 응답하여,
    제 1 세트의 처리 노드와 관련된 제 1 세트의 인스트럭션에 의해 제 1 메시지를 처리하는 단계―상기 제 1 세트의 노드들은 워크플로우의 메시지를 처리하기 위한 시퀀스를 규정하는 워크플로우 경로 내에서 상호 접속됨―와,
    워크플로우 내에서 상호 접속된 제 2 세트의 처리 노드들과 관련된 제 2 세트의 인스트럭션에 의해 제 2 메시지를 처리하는 단계―상기 워크플로우는 적어도 제각기의 로크 획득, 시스템 리소스 액세스 및 로크 해제 노드를 포함하며, 상기 워크플로우에 대한 처리는, 제각기의 메시지를 처리하는 워크플로우의 로크 획득 노드에 응답하여 워크플로우의 제각기의 메시지에 대한 시스템 리소스에 대해 배타적 액세스를 승인하는 단계와, 그 메시지를 처리하는 워크플로우의 시스템 리소스에 응답하여 그 메시지에 대한 시스템 리소스를 액세싱하되 상기 메시지에 대한 리소스의 액세싱은 소정의 시스템 상태를 변경하는 단계를 포함함―와, 상기 메시지를 처리하는 워크플로우의 로크 해제 노드에 응답하여 상기 시스템 리소스의 배타적 액세싱을 해제하는 단계를 포함하는 것을 수행하도록 동작되는
    메시지 플로우 관리 시스템.
  9. 제 8 항에 있어서,
    상기 제 2 워크플로우는 상기 제 1 워크플로우의 제 2 인스탄스인 메시지 플로우 관리 시스템.
  10. 제 8 항에 있어서,
    상기 제 1 및 제 2 메시지는 트랜잭션을 위한 것이고, 상기 액세스의 배타성은 상기 로크 획득 노드의 메시지에 대한 트랜잭션의 동일성에 응답하며,
    만약 상기 제 1 메시지에 대한 로크 획득 노드가 상기 시스템 리소스에 대한 제 1 메시지 액세스를 승인했다면,
    상기 제 1 메시지 및 상기 제 2 메시지가 동일 트랜잭션에 대한 것이라는 것에 응답하여, 상기 제 1 메시지에 대한 상기 로크 해제 노드가 상기 배타적 액세싱을 해제할 때까지 상기 제 2 메시지에 대한 로크 획득 노드에 의해 상기 시스템 리소스에 대한 제 2 메시지 액세스를 거부하는 단계와,
    상기 제 1 메시지 및 상기 제 2 메시지가 상이한 트랜잭션에 대한 것이라는 것에 응답하여, 상기 제 1 메시지에 대한 상기 로크 해제 노드가 상기 배타적 액세싱을 해제하는지의 여부에 상관없이, 상기 제 2 메시지에 대한 상기 로크 획득 노드에 의해 상기 시스템 리소스에 대한 상기 제 2 메시지 액세스를 승인하는 단계를 포함하는 메시지 플로우 관리 시스템.
  11. 제 8 항에 있어서,
    상기 제 1 및 제 2 메시지는 소정의 트랜잭션에 대한 것이고, 상기 액세스의 배타성은 상기 로크 획득 노드의 메시지에 대한 트랜잭션의 동일성에 무관하며,
    상기 제 1 및 제 2 메시지가 상이한 트랜잭션에 대한 것인지의 여부에 무관하게, 만약 상기 제 1 메시지에 대한 로크 회득 노드가 상기 시스템 리소스에 대한 상기 제 1 메시지 액세스를 승인했다면,
    상기 제 1 메시지에 대한 상기 로크 해제 노드가 배타적 액세싱을 해제할 때까지 상기 제 2 메시지에 대한 상기 로크 획득 노드에 의해 상기 시스템 리소스에 대한 상기 제 2 메시지 액세스를 거부하는 단계를 포함하는 메시지 플로우 관리 시스템.
  12. 제 8 항에 있어서,
    상기 메시지들은 금융 트랜잭션에 대한 것인 메시지 플로우 관리 시스템.
  13. 제 8 항에 있어서,
    상기 메시지들은 예약 트랜잭션에 대한 것인 메시지 플로우 관리 시스템.
  14. 제 8 항에 있어서,
    상기 메시지들은 통신 트랜잭션에 대한 것인 메시지 플로우 관리 시스템.
  15. 컴퓨터 시스템에서 실행되며, 제 1 항 내지 제 14 항 중의 어느 한 항에 따른 방법의 각 단계를 수행하는 프로그램 코드 수단을 갖는 컴퓨터 프로그램.
  16. 제 15 항에 있어서,
    컴퓨터 판독가능 매체에 저장되는 컴퓨터 프로그램.
KR1020057009069A 2002-12-20 2003-12-12 메시지 플로우 관리 방법 및 시스템과 컴퓨터 판독가능한기록 매체 KR20050085060A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/326,147 US7401334B2 (en) 2002-12-20 2002-12-20 Method, apparatus and computer program product for managing message flow in a multithreaded, message flow environment
US10/326,147 2002-12-20

Publications (1)

Publication Number Publication Date
KR20050085060A true KR20050085060A (ko) 2005-08-29

Family

ID=32593950

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057009069A KR20050085060A (ko) 2002-12-20 2003-12-12 메시지 플로우 관리 방법 및 시스템과 컴퓨터 판독가능한기록 매체

Country Status (6)

Country Link
US (2) US7401334B2 (ko)
JP (1) JP2006511857A (ko)
KR (1) KR20050085060A (ko)
CN (1) CN101027643A (ko)
AU (1) AU2003296645A1 (ko)
WO (1) WO2004057462A2 (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4238142B2 (ja) * 2004-01-15 2009-03-11 株式会社日立製作所 プログラムコンポーネントの処理要求キューの構成方法、プログラムコンポーネントの登録方法及び実行制御方法、プログラムコンポーネントの登録プログラム及び実行制御プログラム、並びに、アプリケーションサーバ
US8232962B2 (en) 2004-06-21 2012-07-31 Trading Technologies International, Inc. System and method for display management based on user attention inputs
US8010608B2 (en) * 2005-06-07 2011-08-30 Microsoft Corporation Locked receive locations
US8402426B2 (en) 2005-12-30 2013-03-19 Sap Ag Architectural design for make to stock application software
US8396731B2 (en) 2005-12-30 2013-03-12 Sap Ag Architectural design for service procurement application software
US8522194B2 (en) 2005-12-30 2013-08-27 Sap Ag Software modeling
US8316344B2 (en) 2005-12-30 2012-11-20 Sap Ag Software model deployment units
US8448137B2 (en) 2005-12-30 2013-05-21 Sap Ag Software model integration scenarios
US8380553B2 (en) 2005-12-30 2013-02-19 Sap Ag Architectural design for plan-driven procurement application software
US8442850B2 (en) 2006-03-30 2013-05-14 Sap Ag Providing accounting software application as enterprise services
US8024405B2 (en) * 2006-03-30 2011-09-20 Microsoft Corporation Declarative model for concurrency-control across lightweight threads
US8312416B2 (en) * 2006-04-13 2012-11-13 Sap Ag Software model business process variant types
US8141101B2 (en) * 2007-09-12 2012-03-20 International Business Machines Corporation Minimizing message flow wait time for management user exits in a message broker application
US9021503B2 (en) * 2007-11-16 2015-04-28 Microsoft Technology Licensing, Llc Coordinating application state and communication medium state
US8447657B2 (en) 2007-12-31 2013-05-21 Sap Ag Architectural design for service procurement application software
US7844726B2 (en) * 2008-07-28 2010-11-30 Trading Technologies International, Inc. System and method for dynamically managing message flow
US8401928B2 (en) * 2008-09-18 2013-03-19 Sap Ag Providing supplier relationship management software application as enterprise services
US8401908B2 (en) 2008-12-03 2013-03-19 Sap Ag Architectural design for make-to-specification application software
US8671035B2 (en) 2008-12-11 2014-03-11 Sap Ag Providing payroll software application as enterprise services
US8250234B2 (en) 2010-04-26 2012-08-21 Microsoft Corporation Hierarchically disassembling messages
US8443453B2 (en) * 2010-10-13 2013-05-14 International Business Machines Corporation Ad hoc trust delegation in human based workflow systems using one time access key
US8561080B2 (en) * 2011-04-26 2013-10-15 Sap Ag High-load business process scalability
CN102810184A (zh) * 2011-06-01 2012-12-05 金蝶软件(中国)有限公司 一种动态执行工作流的方法、装置及企业系统
JP5891969B2 (ja) 2012-06-25 2016-03-23 富士通株式会社 排他制御プログラム、該装置、及び該方法
JP5880316B2 (ja) * 2012-07-02 2016-03-09 富士通株式会社 プログラム、プロセス実行方法およびプロセス実行コンピュータ
CN102902589B (zh) * 2012-08-31 2016-06-29 浪潮电子信息产业股份有限公司 一种集群mic作业的管理及调度方法
US20170322734A1 (en) * 2012-12-05 2017-11-09 International Business Machines Corporation Using locks to prevent multiple rebuilds of the same source
US10467691B2 (en) 2012-12-31 2019-11-05 Trading Technologies International, Inc. User definable prioritization of market information
JP5979250B2 (ja) * 2013-01-21 2016-08-24 日産自動車株式会社 排他制御検査装置、排他制御検査方法、排他制御検査プログラム
US9396043B2 (en) 2013-04-10 2016-07-19 Microsoft Technology Licensing, Llc Synchronization across applications
US10460387B2 (en) 2013-12-18 2019-10-29 Trading Technologies International, Inc. Dynamic information configuration and display
CN103970611A (zh) * 2014-05-05 2014-08-06 神华集团有限责任公司 基于计算机集群的任务处理方法
CN109416642A (zh) * 2016-07-04 2019-03-01 华为技术有限公司 计算机模拟服务器上的电子硬件设计的性能评估技术

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0318935A (ja) 1989-06-15 1991-01-28 Hitachi Ltd データリストに対するアクセスの直列化方式
IL93239A (en) * 1990-02-01 1993-03-15 Technion Res & Dev Foundation High flow-rate synchronizer/schedular apparatus for multiprocessors
US6374311B1 (en) * 1991-10-01 2002-04-16 Intermec Ip Corp. Communication network having a plurality of bridging nodes which transmit a beacon to terminal nodes in power saving state that it has messages awaiting delivery
US5430850A (en) * 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
US5359594A (en) * 1992-05-15 1994-10-25 International Business Machines Corporation Power-saving full duplex nodal communications systems
US5423044A (en) * 1992-06-16 1995-06-06 International Business Machines Corporation Shared, distributed lock manager for loosely coupled processing systems
US5999911A (en) * 1995-06-02 1999-12-07 Mentor Graphics Corporation Method and system for managing workflow
DE69719269T2 (de) * 1996-08-01 2003-10-30 Ibm Absicherung der Unteilbarkeit für eine Ansammlung von transaktionellen Arbeitsschritten in einem Arbeitsflussverwaltungssystem
US6078982A (en) 1998-03-24 2000-06-20 Hewlett-Packard Company Pre-locking scheme for allowing consistent and concurrent workflow process execution in a workflow management system
US6052684A (en) * 1998-03-24 2000-04-18 Hewlett-Packard Company System and method for performing consistent workflow process execution in a workflow management system
US6397192B1 (en) * 1998-06-05 2002-05-28 I2 Technologies Us, Inc. Synchronizing one or more workflows using one or more synchronization-join activities that include synchronization logic
WO2000058873A1 (en) 1999-03-26 2000-10-05 Octane Software, Inc. Workflow design engine
US6742015B1 (en) * 1999-08-31 2004-05-25 Accenture Llp Base services patterns in a netcentric environment
US7640315B1 (en) 2000-08-04 2009-12-29 Advanced Micro Devices, Inc. Implementing locks in a distributed processing system
WO2002015614A1 (en) 2000-08-15 2002-02-21 University Of Maryland, College Park Method, system, and computer program product for positioning and synchronizing wireless communications nodes
US20020186251A1 (en) * 2001-06-07 2002-12-12 International Business Machines Corporation Method, apparatus and computer program product for context-sensitive scrolling
US20020186252A1 (en) * 2001-06-07 2002-12-12 International Business Machines Corporation Method, apparatus and computer program product for providing context to a computer display window
US7228547B2 (en) * 2001-07-30 2007-06-05 International Business Machines Corporation Method, system, and program for enabling access to a plurality of services

Also Published As

Publication number Publication date
US20040123294A1 (en) 2004-06-24
AU2003296645A1 (en) 2004-07-14
WO2004057462A3 (en) 2005-07-28
US7401334B2 (en) 2008-07-15
AU2003296645A8 (en) 2004-07-14
US8108860B2 (en) 2012-01-31
WO2004057462A2 (en) 2004-07-08
CN101027643A (zh) 2007-08-29
JP2006511857A (ja) 2006-04-06
US20080271040A1 (en) 2008-10-30

Similar Documents

Publication Publication Date Title
KR20050085060A (ko) 메시지 플로우 관리 방법 및 시스템과 컴퓨터 판독가능한기록 매체
US6487665B1 (en) Object security boundaries
US6415284B1 (en) Intelligent forms for improved automated workflow processing
CN101390055B (zh) 对锁管理资源的先期改变
Tartanoglu et al. Dependability in the Web services architecture
US6101607A (en) Limit access to program function
EP0538453B1 (en) Management interface and format for license management system
US5260999A (en) Filters in license management system
US8843939B2 (en) Computer architecture and process for application processing engine
US5438508A (en) License document interchange format for license management system
US6178440B1 (en) Distributed transaction processing system implementing concurrency control within the object request broker and locking all server objects involved in a transaction at its start
JP2009211728A (ja) データ及びリソースに対するアクセス制御を有するウェブベースセキュリティ
KR100322224B1 (ko) 클라이언트/서버 컴퓨터 시스템에서 서버 내의 클라이언트 요청들의 디스패칭시에 시맨틱 동시 제어를 수행하는 장치 및 방법
US20100318393A1 (en) Dynamically dispatching workflows in response to workflow rules
US7752614B2 (en) Dynamic workflow documentation system
US20070061358A1 (en) Workflow application having linked workflow components
US20070061182A1 (en) Workflow operational console
Dan et al. The Coyote approach for network centric service applications: Conversational service transactions, a monitor and an application style
van de Riet et al. Security moving from database systems to ERP systems
Weigand et al. Dynamic business models as a basis for interoperable transaction design
US20100293503A1 (en) Business process management (bpm) add-in for office software
Greenfield et al. Isolation support for service-based applications: A position paper
Sun et al. Requirements and evaluation of protocols and tools for transaction management in service centric systems
Gudes et al. Alter-egos and roles—supporting workflow security in cyberspace
Olivier Using workflow to enhance security in federated databases

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application