KR20060071860A - 워크플로우 트랜잭션의 일괄화를 통한 런타임 및애플리케이션 상태의 동기화 - Google Patents

워크플로우 트랜잭션의 일괄화를 통한 런타임 및애플리케이션 상태의 동기화 Download PDF

Info

Publication number
KR20060071860A
KR20060071860A KR1020050104192A KR20050104192A KR20060071860A KR 20060071860 A KR20060071860 A KR 20060071860A KR 1020050104192 A KR1020050104192 A KR 1020050104192A KR 20050104192 A KR20050104192 A KR 20050104192A KR 20060071860 A KR20060071860 A KR 20060071860A
Authority
KR
South Korea
Prior art keywords
work items
workflow
service provider
component
transaction
Prior art date
Application number
KR1020050104192A
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 KR20060071860A publication Critical patent/KR20060071860A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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
    • 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
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06316Sequencing of tasks or work
    • 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
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0633Workflow analysis

Landscapes

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

Abstract

언커미팅된 워크의 일괄화를 통해 통신하는 컴포넌트들 사이에서 지속된 상태의 일관성을 유지하기 위한 워크플로우 관리. 워크플로우 컴포넌트는 서비스 제공자 컴포넌트에 의해 수행될 워크 아이템을 포함하는 워크플로우를 정의한다. 워크플로우 컴포넌트는 워크 아이템을 서비스 제공자 컴포넌트에 할당하고, 서비스 제공자 컴포넌트는 할당된 워크 아이템을 승인한다. 워크플로우 컴포넌트는 할당된 워크 아이템을 워크 일괄에 첨부한다. 워크플로우 컴포넌트는 일괄화된 워크 아이템을 포함하는 트랜잭션을 생성한다. 워크플로우 컴포넌트는 서비스 제공자 컴포넌트가 워크 아이템을 수행하도록 요구함으로써 워크플로우에 커미팅한다. 워크플로우 컴포넌트는 워크 아이템의 실행 상태를 체크하고, 상태를 영구 저장장치에 저장한다.
일괄처리, 워크플로우 트랜잭션, 동기화, 소프트웨어, 일관성

Description

워크플로우 트랜잭션의 일괄화를 통한 런타임 및 애플리케이션 상태의 동기화{SYNCHRONIZATION OF RUNTIME AND APPLICATION STATE VIA BATCHING OF WORKFLOW TRANSACTIONS}
도 1은 본 발명의 하나의 실시예에 따라 언커미팅된 워크의 일괄화를 통해 통신하는 컴포넌트들에 걸쳐 지속된 상태의 일관성을 유지하기 위한 시스템을 예시하는 블록도의 예로 든 실시예를 도시한 도.
도 2는 본 발명의 하나의 실시예에 따라 서비스 제공자 컴포넌트로부터 워크 아이템들의 일괄화를 예시하는 예로 든 흐름도.
도 3은 본 발명의 하나의 실시예에 따라 하나 이상의 첨부된 워크 아이템들과의 트랜잭션을 예시하는 예로 든 블록도.
도 4는 본 발명의 하나의 실시예에 따라 언커미팅된 워크의 일괄화를 통해 통신하는 컴포넌트에 걸쳐 지속된 상태의 일관성을 유지하는 오퍼레이션을 예시하는 예로 든 플로우 차트.
도 5는 본 발명이 구현될 수 있는 적합한 컴퓨팅 시스템 환경의 하나의 예를 예시하는 블록도.
<도면의 주요 부호에 대한 간단한 설명>
102 : 워크플로우 컴포넌트(런타임)
104-1 내지 104-N : 서비스 제공자 컴포넌트
106 : 영구 저장장치
본 발명의 실시예들은 전반적으로 워크플로우 모델링에 관한 것이다. 특히, 본 발명의 실시예들은 언커미팅된 작업의 일괄화(batching)를 통해 통신하는 컴포넌트에 걸쳐 지속된 상태의 일관성을 유지하는 것에 관한 것이다.
현재의 소프트웨어 시스템은 비즈니스 문제를 모델링함으로써 비즈니스 문제를 고도의 워크플로우로 매핑하려고 시도한다. 일반적으로, 워크플로우 프로세스는 태스크 또는 액션의 열, 이들이 수행되어야 하는 순서, 이들을 수행할 수 있는 사람을 정의하는 허가(permission), 및 각 액션에 대해 수행되는 스크립트와 관련된다. 워크플로우는 상태 및 이벤트의 측면에서 기술될 수도 있다. 워크플로우를 가능하게 하는 소프트웨어 시스템의 컴포넌트일 수 있는 워크플로우 엔진은 워크플로우 정의를 강제하고 워크플로우 액션을 실행한다.
워크플로우 엔진은 3개의 주요 기능을 가지고 있다. 첫 번째로, 이는 현재의 워크플로우 상태에 대해 변경이 유효한지 여부를 검증한다. 두 번째로, 이는 현재 사용자가 워크플로우 이벤트를 실행할 허가를 가지고 있는지를 체크한다. 세 번째로, 이벤트가 유효하고 사용자가 이벤트를 실행할 허가를 가지고 있는 경우, 워크플로우 엔진은 실행을 허용한다. 예를 들면, 새로운 기사를 발간하는 것과 관 련된 것들과 같은 일련의 태스크를 관리할 때, 일련의 워크 아이템들이 수행되어야 한다. 이러한 예에서, 태스크들은 기사를 작성하고, 작성된 기사를 편집하며, 편집된 기사를 검토하고, 편집된 기사를 발간하는 것을 포함한다. 전형적인 워크플로우 엔진은 다른 서비스 공급자 컴포넌트들(예를 들면, 작성 컴포넌트, 편집 컴포넌트, 검토 컴포넌트, 및 발간 컴포넌트)이 이들 워크 아이템들 또는 태스크들을 수행하도록 요구한다.
소프트웨어 시스템의 워크플로우 엔진/컴포넌트는 다른 컴포넌트들(예를 들면, 작성 컴포넌트, 편집 컴포넌트, 등)과 규칙적으로 통신하여 다양한 워크 아이템들의 상태를 모니터링한다. 동시에, 이들 컴포넌트들은 이들 워크 아이템들의 상태들을 모니터링하거나 체크포인팅한다. 불행하게도, 이들 컴포넌트들은 이들 지속된 상태를 일관되게 유지하기 위한 메커니즘을 가지고 있지 않다.
예를 들면, 워크플로우 엔진은 다른 컴포넌트들을 호출하여, 하나의 워크플로우 실행 동안에 복수의 워크 아이템들을 실행한다. 워크 플로우 엔진은 수개의 메시지들을 이들 컴포넌트들에게 전송하여 워크 아이템들의 상태들을 결정한다. 전송된 각 메시지는 메시징 서비스 제공자 컴포넌트를 유발시킨다. 메시징 컴포넌트는 워크 플로우에 대해 일관되고 오래 견디는 상태를 유지하도록 요구되기 때문에, 워크 플로우 상태들이 성공적으로 지속될 수 없다면, 메시지들은 외부로 전송되어서는 안 된다.
불행하게도, 이러한 타입의 수직으로 통합된 소프트웨어 시스템 설계 접근법(즉, 실질적으로 데이터의 도달시 워크 아이템들의 실행)은 다수의 단점들을 가지 고 있다. 예를 들면, 하나의 컴포넌트가 특정 태스크 또는 워크 아이템을 수행하고 있는 동안, 다른 컴포넌트들은 그 특정 워크 아이템의 상태(예를 들면, 완료됨, 실행 중, 또는 폐기됨)를 알지 못한다. 뿐만 아니라, 수행될 워크플로우에서 하나 이상의 워크 아이템들을 실행하는데 실패한 경우, 워크플로우 엔진은 상태 파악의 부족으로 인해, 전체 워크플로우를 재실행하는 것이 필요하다.
따라서, 워크플로우 트랜잭션의 일괄화를 위한 메커니즘을 통해 워크 아이템들의 런타임 및 애플리케이션을 동기화하고, 트랜잭션의 일괄화를 통해 워크플로우 엔진이 워크 아이템들의 실행을 지연시키며 통신하는 컴포넌트에 걸쳐 워크 아이템들의 지속된 상태의 일관성을 유지할 수 있게 하기 위한 워크플로우 관리의 개선이 이들 및 다른 단점 중 하나 이상을 대처하기 위해 요구된다.
본 발명의 실시예들은 컴포넌트들이 지속 트랜잭션에서 공유하는 것을 용이하게 한다. 환언하면, 이들 실시예들은 하나의 트랜잭션에서 워크플로우 상태 및 현저한 메시징 상태를 영구 저장장치(storage)에 커미팅하는 것을 허용하고, 이는 "체크포인팅된" 상태들이 모든 컴포넌트들에 걸쳐 일관된다는 것을 보장한다. 본 발명의 실시예들은 서비스 제공자 컴포넌트로의 호출 또는 할당 모두에서, 스레드 호출 컨텍스트의 워크 일괄(batch) 오브젝트를 플로팅하는 워크플로우 컴포넌트를 포함한다. 서비스 제공자 컴포넌트는 커미트 시간에 모든 액션을 하나의 트랜잭션으로 다루는 이러한 워크를 일괄에 부가하도록 선택될 수 있다.
하나의 양태에 따르면, 방법은 워크플로우내의 상태를 관리한다. 실행될 하 나 이상의 워크 아이템들이 정의된다. 하나 이상의 정의된 워크 아이템들은 실행을 위해 하나 이상의 서비스 제공자 컴포넌트들에 할당된다. 하나 이상의 할당된 워크 아이템들은 나중에 하나 이상의 서비스 제공자 컴포넌트로 일괄화된다. 하나 이상의 일괄화된 워크 아이템들의 상태는 지속된 것이다. 하나 이상의 서비스 제공자 컴포넌트들은 하나 이상의 커미팅된 워크 아이템들을 실행할 때, 하나 이상의 일괄화된 워크 아이템들을 실행하도록 커미팅된다.
다른 양태에 따르면, 하나 이상의 컴퓨터-판독가능 매체는 워크플로우에서 상태를 관리하기 위한 컴퓨터-실행가능 컴포넌트를 가지고 있다. 워크플로우 컴포넌트는 실행될 하나 이상의 워크 아이템들을 할당한다. 워크플로우 컴포넌트는 하나 이상의 워크 아이템들을 정의하고, 워크플로우 컴포넌트는 나중에 하나 이상의 할당된 워크 아이템들을 일괄화한다. 하나 이상의 서비스 제공자 컴포넌트들은 하나 이상의 일괄화된 워크 아이템들을 실행하도록 커미팅한다.
또 다른 양태에 따르면, 시스템은 지속된 서비스 상태들을 유지한다. 워크플로우 엔진은 실행될 하나 이상의 워크 아이템들을 할당한다. 워크플로우 엔진은 하나 이상의 워크 아이템들을 정의하고, 워크플로우는 나중에 하나 이상의 할당된 워크 아이템들을 일괄화한다. 서비스 제공자 컴포넌트는 하나 이상의 할당된 워크 아이템들을 실행하도록 커미팅한다.
추가 양태에서, 방법은 제1 호스트 환경에 의해 실행가능한 하나 이상의 워크 아이템의 워크플로우를 관리한다. 하나 이상의 워크 아이템을 실행하는 할당은 제1 호스트 환경에서 수신된다. 하나 이상의 할당된 워크 아이템들은 제1 호스트 환경에서 일괄에 첨부되어, 하나 이상의 할당된 워크 아이템들이 나중에 제1 호스트 환경에 의해 실행될 것이라는 것을 나타낸다. 하나 이상의 할당된 워크 아이템들을 실행하려는 요구는 제1 호스트 환경에서 수신된다. 제1 호스트 환경은 하나 이상의 요구된 워크 아이템들을 실행한다.
다르게는, 본 발명은 다양한 다른 방법 및 장치를 포함할 수 있다.
다른 특징들은 일부는 명백하고 일부는 이하에 지적된다.
대응하는 참조 부호는 전체 도면에 걸쳐 대응하는 부분을 나타낸다.
우선, 도 1을 참조하면, 블록도는 본 발명의 하나의 실시예에 따라 어커미팅된 워크의 일괄화를 통해 통신하는 컴포넌트들에 걸쳐 지속된 상태의 일관성을 유지하기 위한 시스템(100)을 예시하고 있다. 시스템(100)은 워크플로우 컴포넌트(102), 하나 이상의 서비스 제공자 컴포넌트들(104), 및 영구 저장장치(106)를 포함하고 이들로 제한되지 않는다. 하나의 실시예에서, 시스템(100)은 하나 이상의 컴포넌트들(예를 들면, 워크플로우 컴포넌트(102), 서비스 제공자 컴포넌트(104), 등)을 포함하는 소프트웨어 시스템이다. 다른 실시예에서, 시스템(100)은 기업 애플리케이션 통합 시스템과 같이, 본 발명의 실시예들을 포함하는 하나 이상의 애플리케이션 및/또는 소프트웨어 시스템을 포함하는 통합 소프트웨어 애플리케이션 시스템이다.
워크플로우 컴포넌트(102)는 서비스 제공자 컴포넌트(104, 예를 들면 104-1 내지 104-N)에 의해 수행되는 태스크의 형태로 워크를 관리한다.
도 1의 서비스 제공자 컴포넌트(104-1 내지 104-N)는 다양한 서비스 또는 워크 아이템을 제공하는 컴포넌트들이다. 예를 들면, 서비스 제공자 컴포넌트(104-1)는 사용자 검색 질의를 수신하고, 제품의 온라인 주문을 수신하는 등과 같은 웹 서비스를 제공하는 컴포넌트일 수 있다. 하나의 실시예에서, 서비스 제공자 컴포넌트(104)는 호스트 환경으로도 알려진 시스템(100)의 일부이고, 서비스 제공자 컴포넌트(104)는 호스트들이다. 다른 실시예에서, 서비스 제공자 컴포넌트(104)의 일부 또는 모두는 시스템(100)의 외부이다. 예를 들면, 서비스 제공자 컴포넌트(104-1)는 서비스 제공자 컴포넌트(104-2)와는 분리된 소프트웨어 애플리케이션 또는 시스템내에 존재할 수 있다. 또 다른 실시예에서, 서비스 제공자 컴포넌트(104)에 의해 수행되는 워크아이템들의 예들은 메시징, 인스턴스, 트랜잭션, 퍼시스턴스(persistence), 스레딩, 타이머, 롤(role), 트랙킹 등을 포함하고, 이들로 제한되지 않는다.
도 1에 예시된 바와 같은 워크플로우 컴포넌트(102) 및 서비스 제공자 컴포넌트(104)는 시스템(100)의 일부이지만, 이들 컴포넌트들(즉, 워크플로우 컴포넌트(102), 서비스 제공자 컴포넌트(104), 및/또는 영구 저장장치(106))은 분리된 시스템들(예를 들면, 분리된 호스트 환경들)의 일부일 수 있다는 것은 자명하다. 예를 들면, 워크플로우 컴포넌트(102)는 단독 소프트웨어 애플리케이션내에 존재하는데 대해, 서비스 제공자 컴포넌트(104-1) 및/또는 서비스 제공자 컴포넌트(104-2)는 워드 프로세싱 소프트웨어, 스프레드시트 소프트웨어, 등과 같이 분리된 소프트웨어내에 존재할 수 있다.
처음에, 워크플로우 컴포넌트(102)는 실행을 위한 워크 아이템 열을 가지고 있다. 예를 들면, 웹 서비스를 제공하는 시스템에서, 워크아이템 열은 새로운 제품을 판매하기 위한 새로운 웹 페이지를 구성하는데 필요할 수 있다. 워크 아이템 또는 태스크는 제품의 그림을 제공하고, 제품의 설명을 제공하며, 제품 가용성을 검색하는 것, 등을 포함하고, 이들로 제한되지 않는다. 이러한 예에서, 서비스 제공자 컴포넌트(104-1 내지 104-N)는 이들 워크 아이템의 모두 또는 일부를 수행하거나 실행하는 서비스를 제공한다. 도 1에 도시된 바와 같이, 서비스 제공자 컴포넌트(104)는 워크플로우 컴포넌트(102)와 단독으로 직접하기보다는 영구 저장장치(106)와 상호작용할 수 있다.
이러한 워크 아이템 열이 주어지면, 워크플로우 컴포넌트(102)는 우선 이들 워크 아이템의 실행을 정의한다. 새로운 웹 페이지를 구성하는 상기 예에서, 워크플로우 컴포넌트(102)는 제품의 설명을 제공하기 전에 제품의 그림을 제공하는 등과 같이 워크 아이템의 실행 시퀀스를 정의한다. 뿐만 아니라, 워크플로우 컴포넌트(102)는 기한 및/또는 다른 사업 규칙과 같은 다른 규칙들을 정의한다. 예를 들면, 워크플로우 컴포넌트(102)는 새로운 페이지의 구성의 완료에 대한 기한 및/또는 온라인 고객이 새로운 제품을 살 수 있는 처음 2일 동안의 할인판매 등을 부여할 수 있다. 워크 아이템의 실행을 위한 다른 규칙 및/또는 정의가 워크플로우 컴포넌트(102)에 제공될 수 있다는 것은 자명하다.
일단 이들 워크 아이템 열이 정의되면, 워크플로우 컴포넌트(102)는 이들 워크 아이템을 하나 이상의 서비스 제공자 컴포넌트(104)에 할당한다. 이제, 도 2를 참조하면, 흐름도는 본 발명의 하나의 실시예에 따른 서비스 제공자 컴포넌트(104)로부터 워크 아이템의 일괄화를 예시하고 있다. 예를 들면, 서비스 제공자 컴포넌트를 유발하기 이전에, 워크플로우 컴포넌트(102)는 워크 아이템 열에 대해 참조부호 208에서, 워크 일괄(batch)을 생성한다. 참조부호 210-1에서, 워크플로우 컴포넌트(102)는 메시지를 서비스 제공자 컴포넌트 A(예를 들면, 서비스 제공자 컴포넌트(104-1))에 전송함으로써 워크 아이템(예를 들면, 새로운 제품의 그림을 제공함)을 할당한다. 환언하면, 워크플로우 컴포넌트(102)는 서비스 제공자 컴포넌트 A에 대한 오퍼레이션의 유발에 일괄을 부착한다. 이에 대해, 서비스 제공자 컴포넌트 A는 제1 워크 아이템을 생성하여 이를 워크 일괄에 첨부한다. 유사하게, 워크플로우 컴포넌트(102)는 다른 워크(예를 들면, 새로운 제품의 설명을 제공함)를 참조부호 212-1을 통해 서비스 제공자 컴포넌트 B(예를 들면, 서비스 제공자 컴포넌트(104-2))에 할당한다. 하나의 실시예에서, 워크플로우 컴포넌트(102)는 서비스 제공자 컴포넌트 A에 워크 아이템의 실행을 지연하도록 요구함으로써 서비스 제공자 컴포넌트 A에 워크 아이템을 할당한다. 예를 들면, 워크플로우 컴포넌트(102)는 워크플로우 컴포넌트(102)가 서비스 제공자 컴포넌트 A가 수행하도록 명령하기 전까지 서비스 제공자 컴포넌트 A가 워크를 수행하도록 요구한다. 다른 실시예에서, 워크플로우 컴포넌트(102)는 하나 이상의 워크 일괄을 생성하고, 이들 각각은 다양한 서비스 제공자 컴포넌트(104)에 의해 수행되는 워크 아이템 열을 포함한다.
워크플로우 컴포넌트(102)는 서비스 제공자 컴포넌트 A가 워크 아이템을 수행하도록 요구하고 서비스 제공자 컴포넌트 A는 전체 워크아이템 대신에 할당된 워 크 아이템 중 하나의 양태를 워크 일괄에 첨부하는 것은 자명하다. 예를 들어, 서비스 제공자 컴포넌트 A에 의해 워크 일괄에 첨부된 워크 아이템은 워크플로우 컴포넌트(102)로부터의 요구의 데이터베이스 요소일 수 있다. 다른 예에서, 서비스 제공자 컴포넌트 B에 의해 워크 일괄에 첨부된 워크 아이템은 워크플로우 컴포넌트(102)로부터 동일한 요구의 다른 양태일 수 있다.
워크플로우 컴포넌트(102)와 각 서비스 제공자 컴포넌트(예를 들면, 서비스 제공자 컴포넌트 A)간의 복수의 상호작용이 발생할 수 있다는 것은 자명하다. 예를 들면, 워크플로우 컴포넌트(102)는 참조부호 210-2를 통해 하나 이상의 워크 아이템을 서비스 제공자 컴포넌트 A에 할당하고(또는 참조부호 212-2를 통해 서비스 제공자 컴포넌트 B에), 서비스 제공자 컴포넌트 A는 하나 이상의 할당된 워크 아이템을 참조부호 214-2를 통해 워크 일괄에 첨부한다(또는 서비스 제공자 컴포넌트 B 는 하나 이상의 할당된 워크 아이템을 참조부호 216-2를 통해 워크 일괄에 첨부한다).
다른 실시예에서, 워크플로우 컴포넌트(102)는 특정 서비스 제공자 컴포넌트에 할당된 워크 아이템과 연관시키는 워크 일괄을 생성한다. 예를 들면, 워크플로우 컴포넌트(102)는 서비스 제공자 컴포넌트 A로부터의 워크 아이템을 위한 워크 일괄, 및 서비스 제공자 컴포넌트 B로부터의 워크 아이템에 대한 다른 워크 일괄을 생성할 수 있다. 그럼으로써, 워크플로우 컴포넌트(102)는 필요한 대로 각 서비스 제공자 컴포넌트에 대한 워크 일괄을 생성한다.
서비스 제공자 컴포넌트 A는 할당된 워크 아이템을 워크 일괄에 첨부하거나 부가함으로써 참조부호 214-1을 통해 워크플로우 컴포넌트(102)에 반응한다. 유사하게, 서비스 제공자 컴포넌트 B는 참조부호 216-1을 통해 워크 아이템을 워크 일괄에 첨부한다. 예를 들면, 상기 예를 이용하여, 서비스 제공자 컴포넌트(104-1)는 새로운 웹 페이지를 구성하기 위한 새로운 제품의 그림을 제공할 수 있는 워크플로우 컴포넌트(102)에 메시지를 전송한다. 유사하게, 서비스 제공자 컴포넌트(104-2)는 새로운 제품의 설명을 제공할 수 있는 워크플로우 컴포넌트(102)에 메시지를 전송한다. 워크플로우 컴포넌트(102)는 특정 서비스 제공자 컴포넌트(104)가 특정 워크 아이템을 실행하는 방법의 세부사항을 모를 수도 있다고 생각된다. 새로운 제품에 대한 새로운 웹 페이지를 구성하는 상기 예를 이용하면, 서비스 제공자 컴포넌트(104-1)는 새로운 제품의 그림을 로케이팅하는 다수의 제품 그림들을 포함하는 데이터베이스에 액세스하도록 요구될 수 있다. 유사하게, 서비스 제공자 컴포넌트(104-2)는 제품의 설명을 포함하는 데이터베이스에 액세스하도록 요구되거나 데이터베이스에서 가용하지 않은 경우 새로운 설명을 제공하는 사람 개입을 가지도록 요구될 수도 있다.
단지 2개의 서비스 제공자 컴포넌트 A 및 B가 도 2에 도시되어 있지만, 추가 워크 아이템들이 이들 및 다른 서비스 제공자 컴포넌트들에 할당될 수 있다는 것은 자명하다. 서비스 제공자 컴포넌트(104)는 워크플로우 컴포넌트(102)로부터 할당될 워크아이템을 수행하는 것을 거절할 수 있다는 것도 자명하다.
서비스 제공자 컴포넌트(104)로부터 메시지를 수신할 때, 워크플로우 컴포넌트(102)는 참조부호 226에서 워크 아이템의 상태를 지속시키기 위한 일괄화된 워크 아이템을 포함하는 트랜잭션을 생성한다. 예를 들면, 워크플로우 컴포넌트(102)는 스케줄링된 지점 또는 시간에 트랜잭션을 생성한다. 참조부호 218-1에서, 워크플로우 컴포넌트(102)는 서비스 제공자 컴포넌트 A가 일괄화된 워크 아이템(예를 들면, 새로운 제품의 그림을 제공함)을 지속하라고 요구한다. 환언하면, 워크플로우 컴포넌트(102)는 서비스 제공자 컴포넌트 A에게 일괄화된 워크 아이템의 실행 상태에 관해 요구한다. 서비스 제공자 컴포넌트 A는 참조부호 222-1에서 일괄화된 워크 아이템의 상태를 "실행되지 않음", "완료됨", "실행 중", "폐기됨" 등과 같이 나타냄으로써 워크플로우 컴포넌트(102)에 반응한다. 특정 워크 아이템에 대응하는 하나 이상의 다른 상태가 워크플로우 컴포넌트(102)에 제공될 수 있다는 것은 자명하다. 유사하게, 워크플로우 컴포넌트(102)는 참조부호 220-1에서, 서비스 제공자 컴포넌트 B(예를 들면, 서비스 제공자 컴포넌트(104-2))가 일괄화된 워크 아이템(에를 들면, 새로운 제품의 설명을 제공함)의 실행 상태를 지속하도록 요구하고, 서비스 제공자 컴포넌트 B는 참조부호 224-1에서 요구에 응답한다.
워크플로우 컴포넌트(102)는 다른 일괄화된 워크 아이템의 실행 상태에 관해 복수의 요구(예를 들면, 218-2)를 서비스 제공자 컴포넌트 A에 전송할 수 있다. 마찬가지로, 서비스 제공자 컴포넌트 A는 다른 요구된 일괄화된 워크 아이템의 상태를 나타내도록 워크플로우 컴포넌트(102, 예를 들면, 222-2에서)에 응답할 수 있다.
본 발명의 하나의 실시예에 따르면, 워크플로우 컴포넌트(102)는 상태를 지속하는 트랜잭션을 생성한다. 워크플로우 컴포넌트(102)는 워크 일괄에 대해 반복 하고 서비스 제공자 컴포넌트 A에 대한 모든 워크 아이템을 수집한다. 이러한 예에서, 워크플로우 컴포넌트(102)는 특정 워크 일괄을 생성하는 워크 아이템간의 순서를 유지한다. 커미트 포인트에서, 워크플로우 컴포넌트(102)는 서비스 제공자 컴포넌트 A의 오퍼레이션을 유발할 때 트랜잭션 및 워크 일괄을 패싱한다. 서비스 컴포넌트 A는 워크 일괄내의 워크 아이템을 트랜잭션에 부가한다. 환언하면, 워크 아이템들이 지속된다. 이들 프로세스들은 워크 일괄내의 아이템을 가지는 모든 컴포넌트들에 대해 반복된다. 커미트 통지 또는 메시지의 성공시, 워크플로우 컴포넌트(102)는 트랜잭션을 커미팅한다. 그리고나서, 트랜잭션의 성공적인 커미팅시, 워크플로우 컴포넌트(102)는 일괄에 대해 반복하고, 컴포넌트별로 모든 워크 아이템들을 수집한다(이전의 서비스 제공자 컴포넌트 A에 대해서와 같이).
다음으로, 워크플로우 컴포넌트(102)는 서비스 제공자 컴포넌트(104)에 의해 제공되는 영구 저장장치(106)에 워크 아이템의 상태를 저장한다. 예를들면, 서비스 제공자 컴포넌트(104)는 워크플로우 컴포넌트(102)가 워크 아이템의 상태를 저장하기 위한 영구 저장장치(106)와 같은 전체 리소스 환경을 제공한다. 유사하게, 상호작용(예를 들면, 도 1에서 서비스 제공자 컴포넌트(104-N)와 영구 저장장치(106)간의 화살표)은, 워크플로우 컴포넌트가 워크 아이템의 상태를 저장하기 위해, 서비스 제공자 컴포넌트(104-N)가 영구 저장장치(106)에 액세스하는 것을 도시하고 있는 예이다. 또한, 단지 하나의 영구 저장장치(106)만이 도 1에 도시되어 있지만, 다수의 영구 저장장치가 워크 아이템의 상태를 저장하는데 워크플로우 컴포넌트(106)에 가용할 수 있다는 점은 자명하다. 영구 저장장치(106)는 컴퓨터 판 독가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터(예를 들면, 도 5의 시스템 메모리(134))와 같이 정보 저장을 위한 휘발성 및 비휘발성, 제거가능 및 제거불가능 매체일 수 있다. 워크 아이템의 저장된 지속적인 상태로, 워크플로우 컴포넌트(102)는 워크 아이템의 일관성을 유지할 수 있다. 환언하면, 워크플로우 컴포넌트(102)는 워크아이템을 규칙적으로 체크포인팅하고, 모든 워크 아이템들의 지속적인 상태를 유지하기 위해 체크포인트에서 워크 아이템들의 상태를 저장한다.
참조부호 228에서, 워크플로우 컴포넌트(102)는 트랜잭션을 커미팅한다. 환언하면, 워크플로우 컴포넌트(102)는 서비스 제공자 컴포넌트(104)가 일괄화된 워크 아이템의 실행을 커미팅하도록 요구한다. 다시 새로운 제품에 대한 새로운 웹 페이지를 구성하는 상기 예를 참조하면, 워크플로우 컴포넌트(102)가 태스크를 완료하는데 필요한 모든 워크를 할당한 후, 워크플로우 컴포넌트(102)는 서비스 제공자 컴포넌트에게 새로운 제품의 그림을 제공하고 새로운 제품의 설명을 제공하라고 요구한다. 이러한 워크 아이템의 할당, 일괄화 및 커미팅을 통해, 워크플로우 컴포넌트(102)는 워크 아이템들이 할당시 실행/수행되는 수직으로 통합된 모델의 단점 및 약점을 해결하는데 도움을 준다. 이러한 지연된 실행을 제공함으로써, 워크플로우 컴포넌트(102)는 워크 아이템의 지속적인 상태를 유지하면서 실행/수행에 워크 아이템이 요구될 때를 관리한다. 동시에, 각 서비스 제공자 컴포넌트(104)는 다른 서비스 제공자 컴포넌트(104)가 특정 일괄 또는 트랜잭션에서 가지는 워크 아이템 상태의 일관된 뷰를 가지고 있다.
제한적인 의미가 아니고 예를 들어, 메시징 서비스 제공자 컴포넌트에서 "Send"메시지는 결과적으로 임시변통의 SQL(구조화된 질의 언어)을 포함하는 오브젝트의 구성으로 나타나게 된다. 이러한 예에서, 메시징 서비스 제공자 컴포넌트는 오브젝트, 즉 Work 아이템을 워크 일괄에 부가한다. 워크플로우 컴포넌트에 의해 결정된 스케줄링된 커미트 포인트에서, 트랜잭션이 생성된다. 더구나, 모든 현저한 할당된 워크 아이템에게 트랜잭션이 주어지고, 서비스 제공자 컴포넌트는 워크 아이템을 실행/수행하는 것을 커미팅하도록 명령된다. 이러한 포인트에서, 예를 들면, 메시징 서비스 제공자 컴포넌트는 트랜잭션의 일부로서 SQL을 실행하는데 적절한 어떠한 액션이든 수행한다. 그리고나서, 트랜잭션이 커미팅된다.
이제, 도 3을 참조하면, 블록도는 본 발명의 하나의 실시예에 따른 하나 이상의 첨부된 워크 아이템과의 트랜잭션(304)을 예시하고 있다. 설명된 바와 같이, 워크플로우 컴포넌트(102)는 일괄화된 워크 아이템의 하나 이상의 일괄을 포함하는 트랜잭션을 생성한다. 하나의 실시예에서, 트랜잭션(304)은 하나 이상의 트랜잭션(302, 예를 들면 302-1 내지 302-N)을 포함하고 실제적으로 긴 완료 기간(에를 들면, 수 개월)이 소요되는 긴 운용 트랜잭션이다. 각 트랜잭션은 각 트랜잭션(302)을 분리된 블록으로 도시한 도 3에 도시된 바와 같이, 트랜잭션 경계에 따라 구성된다. 예를 들면, 트랜잭션(302-1, 예를 들면 원자 트랜잭션 1)은 트랜잭션(302-2, 예를 들면, 원자 트랜잭션 2)과는 분리된 경계를 가지고 있다. 그 분리된 경계들을 가지는 트랜잭션을 정의함으로써, 워크플로우 컴포넌트(102)는 트랜잭션(302)을 체크포인팅하여 트랜잭션(302)의 상태/상황(status)을 결정한다. 예를 들면, 워크플로우 컴포넌트(102)는 참조부호 308에서 트랜잭션(302-1)의 상태를 체크하거 나 모니터링한다. 유사하게, 워크플로우 컴포넌트(102)는 참조부호 306에서 트랜잭션(302-2)의 상태를 체크한다. 트랜잭션(302)의 상태를 체크포인팅함으로써, 워크플로우 컴포넌트(102)는 트랜잭션(302)에서 워크 아이템의 지속적인 상태를 유지한다.
다른 예에서, 각 트랜잭션(302)은 하나 이상의 워크 아이템을 포함하는 하나 이상의 일괄을 포함한다. 예를 들어, 원자 트랜잭션(302-1)은 하나 이상의 워크 아이템(도시되지 않음)을 포함하는 일괄(또는 스코프 일괄, 310)을 포함한다. 유사하게, 원자 트랜잭션(302-2)은 하나 이상의 워크 아이템을 포함하는 일괄(또는 스코프 일괄, 312)을 포함한다. 단지 하나의 일괄(301)만이 도 3에서 원자 트랜잭션(302-1)에 도시되어 있지만, 각 트랜잭션(302)은 하나 이상의 일괄 또는 내부 스코프 일괄을 포함할 수 있다는 것은 자명하다.
다른 실시예에서, 오류로 인해 하나 이상의 워크 아이템 또는 전체 트랜잭션이 실행되지 않는 경우에, 워크플로우 컴포넌트(102)는 다른 트랜잭션이 정의된 트랜잭션 경계로 인해 영향을 받지 않은 상태에서 오류가 발생한 트랜잭션에서 워크 아이템을 폐기하는 것만 필요할 것이다. 워크플로우 컴포넌트(102)는 우선 오류가 발생하는 스코프(예를 들면, 원자 트랜잭션(302-1)에서 스코프 일괄(310))에 관련된 모든 워크 아이템을 식별하고, 오류 워크 일괄을 구성한다. 그리고나서, 워크플로우 컴포넌트(102)는 각 고유 계류중인 워크 아이템의 "완료"상태를 유발하고 그 상태에서 완료된 상황(status)은 오류 워크 일괄내에 모든 워크에 대해 "오류"로 설정된다. 더구나, 워크플로우 컴포넌트(102)는 이러한 워크 일괄의 모든 워크 를 폐기한다. 본 실시예에서 런타임은 오류로부터 회복 후 모든 남아있는 워크 일괄 아이템에 대한 참조를 유지한다. 그리고나서, 워크는 장래 퍼시스턴스 포인트에서 커미팅된다.
새로운 웹 페이지를 구성하는 상기 예에서, 서비스 제공자 컴포넌트(104-1)가 트랜잭션에서 워크 아이템을 실행하도록 커미팅한 후 새로운 제품의 그림을 제공할 수 없다고 가정하자. 트랜잭션의 지속적인 상태를 유지할 때, 워크플로우 컴포넌트(102)는 특정 워크 아이템(예를 들면, 새로운 제품의 그림을 제공하는 것)이 폐기되거나 완료되지 않은 것으로 결정한다. 그리고나서, 워크플로우 컴포넌트(102)는 다른 트랜잭션(예를 들면, 다른 아이템에 대해 순서를 결정하는 것, 등)은 이러한 오류 트랜잭션에 의해 영향을 받지 않는 동안에, 이러한 트랜잭션(즉, 새로운 웹 페이지를 구성함)에서 일부 또는 모든 워크 아이템을 폐기한다. 하나의 실시예에서, 다른 트랜잭션에서 다른 워크 아이템을 완료할 때 또는 오류로부터 회복시, 워크플로우 컴포넌트(102)는 오류가 발생한 트랜잭션의 참조(예를 들면, 일괄화된 워크 아이템, 워크 아이템 정의, 등)를 유지하여, 워크플로우 컴포넌트(102)가 서비스 제공자 컴포넌트(104)로 하여금 나중에 다시 워크 아이템을 커미팅하도록 요구할 수 있다.
또 다른 실시예에서, 서비스 제공자 컴포넌트(104-1)는 워크플로우 컴포넌트(102)에게 커미팅된 워크 아이템의 실행을 완료할 수 없다는 것을 나타내는 메시지를 통지하거나 전송할 수 있다. 결과적으로, 워크플로우 컴포넌트(102)는 수신된 메시지에 응답하여 워크 아이템을 폐기할 수 있다.
도 4는 본 발명의 하나의 실시예에 따라 언커미팅된 워크의 일괄화를 통해 통신하는 컴포넌트들에 걸쳐 지속된 상태의 일관성을 유지하는 오퍼레이션을 예시하는 플로우 차트의 예이다. 처음에, 워크플로우 컴포넌트(102)는 수행/실행될 워크 아이템 세트를 포함하는 워크플로우를 정의한다. 단계 402에서, 워크플로우 컴포넌트(102)는 워크 일괄을 생성한다. 워크플로우 컴포넌트(102)는 단계 404에서 워크 아이템을 서비스 제공자 컴포넌트(에를 들면, 서비스 제공자 컴포넌트(104-1))에 할당한다. 단계 406에서, 서비스 제공자 컴포넌트(104)는 할당된 바와 같이, 워크 아이템을 생성하고, 이들 워크 일괄에 첨부한다. 워크플로우 컴포넌트(102)는 단계 408에서 워크플로우를 완료하기 위해 워크 일괄에 첨부된 더 이상의 워크 아이템이 존재하는지 여부를 결정한다. 결정이 긍정이라면, 워크플로우 컴포넌트(102)는 단계 404로 진행하여 워크 일괄에 첨부될 추가 워크 아이템을 수집한다.
결정이 부정이라면, 워크플로우 컴포넌트(102)는 단계 410에서 트랜잭션을 생성한다. 다르게는, 워크플로우 컴포넌트(102)는 스케줄링된 시간 또는 포인트에서 트랜잭션을 생성한다. 단계 412에서, 워크플로우 컴포넌트(102)는 일괄화된 워크 아이템을 트랜잭션에 수집한다. 단계 414에서, 워크플로우 컴포넌트(102)는 워크 아이템의 상태를 지속시킨다. 다음으로, 워크플로우 컴포넌트(102)는 단계 416에서 트랜잭션의 실행을 커미팅한다. 즉, 워크플로우 컴포넌트(102)는 서비스 제공자 컴포넌트(104)가 할당된 워크를 실행/수행하도록 요구한다. 서비스 제공자 컴포넌트(104)가 워크 아이템의 실행을 커미팅한 후 워크플로우 컴포넌트(102)는 워크 아이템의 상태를 도 1의 영구 저장장치(106)에 저장함으로써, 워크 아이템의 상태를 계속해서 지속시킨다.
단계 418에서, 워크플로우 컴포넌트(102)는 워크 아이템/트랜잭션의 상태를 주기적으로 체크포인팅함으로써 커미팅된 워크 아이템의 실행 동안에 발생하는 임의의 오류가 있는지 여부를 결정한다. 다른 실시예에서, 서비스 제공자 컴포넌트(104)는 오류가 발생했다는 메시지를 전송하거나 워크플로우 컴포넌트9102)에 통지한다. 워크플로우 컴포넌트(102)가 어떠한 실행 오류도 없는 것으로 결정하면, 워크플로우 컴포넌트(102)는 단계 420에서 트랜잭션의 실행을 완료하도록 진행한다.
다르게는, 워크플로우 컴포넌트(102)가 실행 오류가 있는 것으로 결정하거나 다른 실시예에서 서비스 제공자 컴포넌트가 실행 오류가 있는 것으로 지시하는 경우, 워크플로우 컴포넌트(102)는 단계 422에서 오류가 발생한 워크 아이템/트랜잭션과 연관된 일괄(들)을 폐기한다. 환언하면, 워크플로우 컴포넌트(102)는 내부 일괄(오류가 발생한 스코프의)의 모든 아이템을 폐기하고, 워크플로우 컴포넌트(102)는 본 실시예에서, 나중 커미트 포인트을 위해 주위 스코프에 워크 아이템을 유지한다. 단계 424에서, 워크플로우 컴포넌트(102)는 오류가 발생하지 않은 워크 아이템의 실행을 완료한다. 워크플로우 컴포넌트(102)는 단계 426에서 오류가 발생한 워크 아이템과 연관된 워크의 참조를 유지하고, 서비스 제공자 컴포넌트(104)가 나중에 오류가 발생한 워크 아이템을 계속해서 커미팅하도록 한다(점선으로 도시된 바와 같음). 부록 A는 워크플로우 트랜잭션 일괄화에 대한 프로토콜의 예를 제공한다.
본 발명은 본 발명의 적어도 일부 특징을 실시하는 워크 아이템을 포함하는 일괄을 구현함으로써 종래의 워크플로우 시스템 설계 및 모델링보다 장점을 제공한다. 동작시, 하나 이상의 컴포넌트를 포함하는 소프트웨어 시스템 또는 소프트웨어 시스템들은 워크플로우 관리하는 워크플로우 컴포넌트를 포함한다. 워크플로우 컴포넌트는 처음에 하나 이상의 서비스 제공자 컴포넌트에 의해 수행되는 워크플로우(예를 들면, 새로운 제품에 대한 새로운 웹 페이지를 구성함)를 정의한다. 예를 들면, 새로운 웹 페이지를 구성하기 위한 워크플로우는 새로운 제품의 그림을 제공하고, 새로운 제품의 설명을 제공하며, 새로운 제품 가용성을 결정하는 등과 같은 워크 아이템을 포함할 수 있다. 서비스 제공자 컴포넌트는 워크플로우 컴포넌트와 분리된 소프트웨어 시스템, 애플리케이션 또는 패키지내에 존재할 수 있다는 것은 자명하다.
워크플로우 컴포넌트는 워크 일괄을 생성하고, 워크 아이템을 서비스 제공자 컴포넌트에 할당하는 메시지를 전송한다. 서비스 제공자 컴포넌트는 할당된 워크 아이템들이 실행/수행될 수 있는지 여부를 결정한다. 결정이 긍정이라면, 서비스 제공자 컴포넌트는 워크 아이템을 워크 일괄에 첨부한다. 이러한 일괄화 프로세스에 의해, 워크플로우 컴포넌트는 할당된 워크 아이템의 거의 동시 실행을 지연시킨다는 것은 자명하다.
다음으로, 워크플로우 컴포넌트는 일괄화된 워크 아이템을 포함하는 트랜잭션을 생성한다. 워크플로우 컴포넌트는 트랜잭션/워크 아이템을 체크포인팅함으로써 워크 아이템의 상태를 주기적으로 체크포인팅하고 워크 아이템의 상태를 영구 저장장치에 저장한다. 그렇게 할 때, 워크플로우 컴포넌트는 다양한 트랜잭션에서 워크 아이템의 지속된 상태의 일관성을 유지한다. 워크플로우 컴포넌트는 서비스 제공자 컴포넌트가 워크 아이템을 실행/수행하도록 요구함으로써 트랜잭션을 커미팅한다.
실행 오류가 발생한 경우에, 워크플로우 컴포넌트는 오류가 발생한 워크 아이템을 폐기한다. 워크플로우 컴포넌트는 계속해서 오류가 발생되지 않은 워크 아이템의 실행을 완료한다. 하나의 실시예에서, 서비스 제공자 컴포넌트는 워크플로우 컴포넌트에 실행 오류가 발생했다는 것을 나타내는 메시지를 전송한다. 오류가 발생한 실행으로부터의 회복시 또는 오류가 발생하지 않은 워크 아이템의 실행을 완료한 후, 워크플로우 컴포넌트는 나중에 오류발생된 워크 아이템을 커미팅한다.
도 5는 컴퓨터(130)의 형태로 된 일반목적 컴퓨팅 디바이스의 하나의 예를 도시하고 있다. 본 발명의 하나의 실시예에서, 컴퓨터(130)와 같은 컴퓨터는 여기에 예시되고 설명된 다른 도면에 이용하기에 적합하다. 컴퓨터(130)는 하나 이상의 프로세서 또는 처리 유닛(132) 및 시스템 메모리(134)를 구비하고 있다. 예시된 실시예에서, 시스템 버스(136)는 시스템 메모리(134)를 포함하는 다양한 시스템 컴포넌트들을 프로세서(132)에 결합시킨다. 버스(136)는 메모리 버스 또는 메모리 컨트롤러, 주변장치 버스, 가속 그래픽 포트 및 다양한 버스 아키텍쳐들 중 임의의 것을 이용하는 프로세서 또는 로컬 버스를 포함하는 수개의 타입의 버스 구조 중 하나 이상을 나타낸다. 예를 들어, 그러한 아키텍쳐는 ISA 버스, MCA 버스, EISA 버스, VESA 로컬 버스, 메자닌(Mezzanine) 버스로도 알려진 PCI 버스를 포함하고, 이들로 제한되지는 않는다.
컴퓨터(130)는 통상 적어도 일부 타입의 컴퓨터 판독가능 매체를 구비한다. 휘발성 및 비휘발성 매체, 제거가능 및 제거 불가능 매체를 모두 포함하는 컴퓨터 판독가능 매체는 컴퓨터(130)에 의해 액세스될 수 있는 임의의 가용한 매체가 될 수 있다. 예를 들어, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함하고, 이들로 제한되지 않는다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보 저장을 위한 임의의 방법이나 기술로 구현되는 휘발성 및 비휘발성, 제거가능 및 제거 불가능 매체를 모두 포함한다. 에를 들면, 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD 또는 다른 광학 디스크 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 다른 자기 저장장치 디바이스, 또는 원하는 정보를 저장하는데 이용될 수 있고 컴퓨터(130)에 의해 액세스될 수 있는 임의의 다른 매체를 포함한다. 통신 매체는 통상 컴퓨터 판독가능한 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터를 반송파와 같은 변조 데이터 신호 또는 다른 전송 메카니즘으로 실시하고, 임의의 정보 전달 매체를 포함한다. 본 기술분야의 숙련자는 정보를 신호로 인코딩하는 것과 같은 방식으로 설정되거나 변경되는 하나 이상의 특징을 구비하는 변조된 데이터 신호에 익숙할 것이다. 유선 네트워크 또는 직접-유선 접속과 같은 유선 매체 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체가 통신 매체의 예들이다. 상기의 임의의 조합도 컴퓨터 판독가능한 매체의 범주내에 든다.
시스템 메모리(134)는 제거가능 및/또는 제거불가능, 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 예시된 실시예에서, 시스템 메모리(134)는 판독전용메모리(ROM, 138) 및 랜덤액세스 메모리(RAM, 140)를 포함한다. 기동 동안과 같이 컴퓨터(130) 내의 소자들간의 정보 전달을 도와주는 기본 루틴을 포함하는 기본 입출력 시스템(142, BIOS)은 통상 ROM(138)에 저장된다. RAM(140)은 통상 처리 유닛(132)에 의해 즉시 액세스 가능하거나 이것에 의해 현재 동작되고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 예를 들면, 도 5는 오퍼레이팅 시스템(144), 애플리케이션 프로그램(146), 다른 프로그램 모듈(148) 및 프로그램 데이터(150)를 포함하고, 이들로 제한되지는 않는다.
컴퓨터(130)는 다른 제거가능/제거불가능, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 예로서, 도 5는 제거불가능, 비휘발성 자기 매체에 기록하거나 판독하는 하드 디스크 드라이브(154)를 예시하고 있다. 도 5는 또한 제거가능, 비휘발성 자기 디스크(158)에 기록하거나 판독하는 자기 디스크 드라이브(156), 및 CD-ROM 또는 다른 광학 매체와 같은 제거가능, 비휘발성 광 디스크(162)에 기록하거나 판독하는 광 디스크 드라이브(160)를 도시하고 있다. 예로 든 오퍼레이팅 환경에서 이용될 수 있는 다른 제거가능/제거 불가능, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고체 상태 RAM, 고체 상태 ROM, 등을 포함하고, 이들로 제한되지는 않는다. 하드 디스크 드라이브(154), 자기 디스크 드라이브(156) 및 광 디스크 드라이브(160)는 통상 인터페이스(166)와 같은 비휘발성 메모리 인터페이스에 의해 시스 템 버스(136)에 접속된다.
상기 설명되고 도 5에 예시된 드라이브 또는 다른 대량 저장 디바이스 및 그 연관 컴퓨터 저장 매체는 컴퓨터(130)에 대해 컴퓨터 판독가능한 명령, 데이터 구조, 프로그램, 모듈 및 데이터의 저장을 제공한다. 도 5에서, 예를 들면, 하드 디스크 드라이브(154)는 오퍼레이팅 시스템(170), 애플리케이션 프로그램(172), 다른 프로그램 모듈(174) 및 프로그램 데이터(176)를 저장하는 것으로서 예시된다. 유의할 점은 이들 컴포넌트들은 오퍼레이팅 시스템(144), 애플리케이션 프로그램(146), 다른 프로그램 모듈(148) 및 프로그램 데이터(150)와 동일하거나 또는 상이할 수도 있다는 점이다. 오퍼레이팅 시스템(170), 애플리케이션 프로그램(172), 다른 프로그램 모듈(174), 및 프로그램 데이터(176)는 최소한 다른 복제물이라는 것을 예시하도록 다른 숫자가 주어진다.
사용자는 키보드(180) 및 포인팅 디바이스(182, 예를 들면 마우스, 트랙볼, 펜 또는 터치 패드)와 같은 입력 디바이스 또는 사용자 인터페이스 선택 디바이스를 통해 컴퓨터(130)에 명령과 정보를 입력한다. 다른 입력 디바이스(도시되지 않음)는 마이크로폰, 조이스틱, 게임 패드, 위성 디시(dish), 스캐너 등을 포함할 수 있다. 이들 및 다른 입력 디바이스들은 시스템 버스(136)에 결합되는 사용자 입력 인터페이스(184)를 통해 처리 유닛(132)에 접속되고, 병렬 포트, 게임 포트 또는 범용 직렬 버스(USB)와 같은 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 모니터(188) 또는 다른 타입의 디스플레이 디바이스는 또한 비디오 인터페이스(190)와 같은 인터페이스를 통해 시스템 버스(136)에 접속된다. 모니터 (188)뿐만 아니라, 컴퓨터는 출력 주변장치 인터페이스(도시되지 않음)를 통해 접속될 수 있는 프린터 및 스피커와 같은 다른 주변장치 출력 디바이스를 포함할 수 있다.
컴퓨터(130)는 원격 컴퓨터(194)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용하여 네트워킹된 환경에서 동작할 수 있다. 원격 컴퓨터(194)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 디바이스 또는 다른 공통 네트워크 노드일 수 있고, 통상 컴퓨터(130)와 관련하여 상기 설명한 구성요소들 중 다수 또는 모두를 포함한다. 도 5에 도시된 논리적 접속은 로컬 영역 네트워크(LAN, 196) 및 와이드 영역 네트워크(WAN, 198)를 포함하지만, 다른 네트워크/버스를 포함할 수도 있다. LAN(136) 및/또는 WAN(138)은 유선 네트워크, 무선 네트워크, 그 조합, 등일 수 있다. 그러한 네트워킹 환경은 사무실, 기업-와이드 컴퓨터 네트워크, 인트라넷 및 글로벌 컴퓨터 네트워크(예를 들면, 인터넷)에서 흔한 것이다.
로컬영역 네트워킹 환경에서 이용되는 경우, 컴퓨터(130)는 네트워크 인터페이스 또는 어댑터(186)를 통해 LAN(196)에 접속된다. 와이드 영역 네트워킹 환경에서 이용되는 경우, 컴퓨터(130)는 통상 모뎀(178) 또는 인터넷과 같이 WAN(198)을 통해 통신을 확립하기 위한 다른 수단을 포함한다. 내부 또는 외부에 존재하는 모뎀(178)은 사용자 입력 인터페이스(184) 또는 다른 적절한 메커니즘을 통해 시스템 버스(136)에 접속될 수 있다. 네트워킹된 환경에서, 컴퓨터(130)에 관련하여 도시된 프로그램 모듈, 또는 그 일부는 원격 메모리 저장 디바이스(도시되지 않음)에 저장될 수 있다. 예로서, 도 5는 메모리 디바이스 상에 상주하는 것 으로서 원격 애플리케이션 프로그램(192)을 예시하고 있다. 도시된 네트워크 접속은 예로 든 것이며 컴퓨터들 간의 통신 링크를 확립하는 다른 수단이 이용될 수 있다.
일반적으로, 컴퓨터(130)의 데이터 프로세서는 컴퓨터의 다양한 컴퓨터 판독가능 저장 매체에 다른 시간에 저장된 명령에 의해 프로그래밍된다. 프로그램 및 오퍼레이팅 시스템은 통상 예를 들면, 플로피 디스크 또는 CD-ROM 상에 분산된다. 이곳으로부터, 이들이 컴퓨터의 부차적인 메모리로 인스톨되거나 로딩된다. 실행시, 이들은 적어도 부분적으로는 컴퓨터의 주 전자 메모리에 로딩된다. 여기에 설명된 발명은 그러한 매체가 마이크로프로세서 또는 다른 데이터 프로세서와 조합하여 이하에 설명된 단계들을 구현하기 위한 명령 또는 프로그램을 포함할 때 이들 및 다른 다양한 타입의 컴퓨터 판독가능 저장 매체를 포함한다. 본 발명은 또한, 여기에 기술된 방법 및 기술에 따라 프로그래밍될 때 컴퓨터 자체를 포함한다.
예시의 목적상, 오퍼레이팅 시스템과 같은 프로그램 및 다른 실행가능 프로그램 컴포넌트가 이산 블록으로서 여기에 예시되어 있다. 그러나, 그러한 프로그램 및 컴포넌트들은 컴퓨터의 다른 저장 컴포넌트에 다양한 시간에 상주하며 컴퓨터의 데이터 프로세서(들)에 의해 실행된다는 것은 자명하다.
컴퓨터(130)를 포함하여 예로 든 컴퓨팅 시스템 환경과 관련하여 설명되었지만, 본 발명은 다수의 다른 일반목적 또는 특별목적 컴퓨팅 시스템 환경 또는 구성으로 동작가능하다. 컴퓨팅 시스템 환경은 본 발명의 이용이나 기능의 범주에 대해 어떠한 제한도 암시하려는 것이 아니다. 더구나, 컴퓨팅 시스템 환경은 예로 든 오퍼레이팅 환경에 예시된 컴포넌트들 중 임의의 하나 또는 조합과 관련된 임의의 종속성 또는 요구조건을 가지는 것으로 해석되어서는 안된다. 본 발명에 이용하기에 적합한 주지된 컴퓨팅 시스템, 환경 및/또는 구성의 예들은 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩탑 디바이스, 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 셋탑 박스, 프로그램가능한 소비자 전자장치, 모바일 전화기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템 또는 디바이스들 중 임의의 하나를 포함하는 분산 컴퓨팅 환경, 등을 포함하고, 이들로 제한되지 않는다.
본 발명은 하나 이상의 컴퓨터 또는 다른 디바이스에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령의 일반적인 컨텍스트로 기술된다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상적인 데이터 타입을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트 및 데이터 구조를 포함하고, 이들로 제한되지 않는다. 본 발명은 통신 네트워크를 통해 링크되는 원격 처리 디바이스에 의해 태스크들이 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 디바이스를 포함하는 로컬 및 원격 컴퓨터 저장 매체에 배치될 수 있다.
소프트웨어 아키텍쳐의 컨텍스트의 인터페이스는 소프트웨어 모듈, 컴포넌트, 코드 일부, 또는 컴퓨터 실행가능 명령의 다른 시퀀스를 포함한다. 인터페이스는 예를 들면, 제2 모듈에 액세스하여 제1 모듈 대신에 컴퓨팅 태스크를 수행하는 제1 모듈을 포함한다. 제1 및 제2 모듈은 하나의 예에서, 오퍼레이팅 시스템에 의해 제공되는 것과 같은 애플리케이션 프로그램 인터페이스(API), 컴포넌트 오브젝트 모델(COM) 인터페이스(예를 들면, 피어-투-피어 애플리케이션 통신을 위함), 및 확장가능한 마크업 언어 메타데이터 인터체인지 포맷(XML) 인터페이스(예를 들면, 웹 서비스들간의 통신을 위함)를 포함한다.
인터페이스는 Java 2 Platform Enterprise Edition(J2EE), COM, 또는 분산된 COM(DCOM)에서와 같은 밀접하게 결합된, 동기 구현이다. 대안으로 또는 추가하여, 인터페이스는 웹 서비스(예를 들면, 단일 오브젝트 액세스 프로토콜을 이용함)에서와 같이 느슨하게 결합된, 비동기 구현일 수 있다. 일반적으로, 인터페이스는 이하의 특성, 즉 밀접하게 결합된, 느슨하게 결합된, 동기 및 비동기의 임의의 조합을 포함한다. 또한, 인터페이스는 표준 프로토콜, 전용 프로토콜, 또는 표준 및 전용 프로토콜의 임의의 조합과 일치한다.
여기에 설명된 인터페이스는 모두 단일 인터페이스의 일부이거나 분리된 인터페이스 또는 그 임의의 조합으로서 구현될 수 있다. 인터페이스는 로컬 또는 원격으로 실행하여 기능을 제공한다. 또한, 인터페이스는 여기에 예시되거나 기재된 것보다 추가 또는 더 적은 기능을 포함할 수 있다.
여기에 예시되거나 기재된 방법의 실행 또는 수행 순서는 달리 지정되지 않는 한, 필수적인 것이 아니다. 즉, 방법의 요소들은 달리 지정되지 않는 한, 다른 순서로 실행될 수 있고, 방법은 여기에 공개된 것보다 더 많거나 적은 요소를 포함할 수 있다. 예를 들면, 다른 요소 이전에, 동시에, 또는 그 후에 특정 요소를 실행하거나 수행하는 것은 본 발명의 범주에 든다고 생각할 수 있다.
본 발명 또는 그 실시예(들)의 요소를 소개할 때, 관사인 하나, 및 상기는 요소들 중 하나 이상이라는 것을 의미한다. 용어 "포함하는" 및 "구비하는"은 내포적인 것으로서, 리스팅된 요소보다 추가적인 요소가 있다는 것을 의미한다.
상기를 감안하면, 본 발명의 수개의 목적들이 달성되고 다른 유익한 결과들이 얻어진다는 것을 알 수 있다.
본 발명의 범주에서 벗어나지 않고 상기 제품 및 방법에 다양한 변경이 가해짐에 따라, 상기 설명에 포함되고 첨부된 도면에 도시된 모든 문제는 예시적인 것으로 해석되고 제한적인 의미로는 해석되지 않는 것이다.
본 발명에 의하면 컴포넌트들이 지속 트랜잭션에서 공유되는 것을 용이하게 된다.
부록 A
워크플로우 트랜잭션 일괄화.
예로 든 워크플로우의 실행 동안에, 런타임이 그 서비스로 호출되어 워크를 수행한다. 예를 들면, 전송 워크플로우 활동은 메시징 서비스로의 호출이다. 메시징 서비스는 전송 요구를 처리하고 전송과 연관된 특정 상태를 유지한다. 트랜잭션/퍼시스턴스 모델의 요구조건들 중 하나는 다른 서비스 및 워크플로우 런타임에 의해 유지되는 상태들간의 일관성을 유지하는 것이다. 워크플로우가 커미트 포인트에 도달하면, 런타임은 퍼시스턴스 서비스를 유발하고 그 워크플로우 인스턴스 상태를 핸드아웃한다. 이러한 인스턴스 상태 및 다른 서비스 워크는 일괄화되어 하나의 단일 트랜잭션으로 인리스팅되는 오래견디는 리소스 매니저(RM)에 커미팅된다.
B0 및 B1이 워크의 분리된 일괄인 경우(예를 들면, 도 3에서 트랜잭션(304) 및 원자 트랜잭션(302-N)을 참조), 커미트 포인트에서 전체 워크 집합{B0, B1}은 트랜잭션에서 커미팅될 필요가 있다. 트랜잭션의 오류시, 요구조건은, B0에 연관된 워크가 버려져야 된다는 것이다. B1과 연관된 워크는 후속 포인트에 대해 계속해서 존재해야 한다.
본 발명의 하나의 실시예에 따르면, 제공자들이 동일한 트랜잭션을 공유하는 것을 용이하게 하기 위해, Runtime은 그 Services로의 모든 호출에서 스레드 호출 컨텍스트의 WorkBatch 오브젝트를 플로팅시킨다. Services는 이러한 일괄에 워 크를 부가하도록 선택할 수 있다. 예를 들면, 메시징 서비스의 Send 메소드는 결과적으로 임시변통의 SQL을 포함하는 오브젝트의 구성으로 나타나게 된다. 그리고나서, 메시징 서비스는 오브젝트를 WorkBatch에 부가할 수 있다. 스케줄의 커미트 포인트에서, 메시징 서비스 IPendingWork.Complete 메소드가 유발되고, 그 모든 펜딩 워크가 그것에 되돌려진다. 그리고나서, 서비스는 트랜잭션의 일부로서 SQL을 실행하는데 적절한 어떠한 액션이라도 수행할 수 있다.
예를 들면, Namespace:Microsoft.Workflow.Runtime:
public sealed class WorkBatch
{
public void Add(IPendingWork work, object workItem);
}
Add 메소드는 계류중인 워크 아이템을 워크 일괄에 부가하는데 이용될 수 있다. 제공자는 IPendingWork 인터페이스를 구현하는 오브젝트로의 참조로 일괄에 부가되는 태그를 제공한다. 이러한 오브젝트는 워크의 최후의 커미트를 핸들링할 것이다. 이하의 예에서, 퍼시스턴스 제공자 자체는 IPendingWork 인터페이스를 구현한다.
인터페이스 IPendingWork는 이하와 같이 정의된다.
interface IPendingWork
{
void Commit(ITransaction transaction, IList<object>items);
void Complete(bool succeeded, IList<object>items);
}
Commit 메소드에서, 워크 아이템의 리스트는 트랜잭션 오브젝트를 이용하여 데이터베이스에 커미팅된다.
Complete 메소드는 필요한 클린업을 수행한다. 이러한 메소드는 아이템 리스트에서 워크를 처리하는 것을 종료했을 때 런타임에 의해 호출된다. 워크가 성공적으로 완료되면, succeeded=true이고 그렇지 않으면 succeeded=false이다.
이러한 예에 추가하여, Commit Point에서의 액션들의 시퀀스는 이하를 포함한다.
a. 런타임은 PersistenceService를 유발한다::메소드를 저장한다.
b. 런타임은 TransactionService를 유발한다::메소드를 생성하고 System.ICommitableTransaction을 얻는다.
c. 런타임은 그 워크 수집을 반복하고 동일한 IPendingWork 오브젝트를 참조하는 모든 아이템을 수집한다. 그리고나서, 각 고유 IPendingWork 오브젝트의 Commit 메소드를 한번 유발하고, Transaction 및 그 모든 현저한 워크의 리스트를 패싱한다.
d. Commit 통지의 성공시, 런타임은 ICommittableTransaction을 유발한다::Commit
e. 트랜잭션의 성공시, 런타임은 각 고유 IPendingWork 오브젝트의 Complete 메소드를 한번 유발하고, succeeded=true 및 모든 그 현저한 워크의 리스 트를 패싱한다.
Workflow Fault에 대한 액션 시퀀스의 예는 이하를 포함한다.
a. 워크플로우 모델 구문(원자 스코프)에 기초하여, 런타임은 오류 스코프와 관련된 IPendingWork 오브젝트를 폐기하기로 결정한다.
b. 런타임은 모든 폐기된 워크에 대해 완료된 상황(status)=false로 각 고유 IPendingWork의 Complete 메소드를 유발시킨다.
c. 런타임은 오류로부터 회복 후 아직 유효하다라고 구문이 나타내고 있는 임의의 워크를 참조한다. 그리고나서, 그 워크는 장래 퍼시스턴스 포인트에서 커미팅될 수 있다.

Claims (20)

  1. 워크플로우에서 상태를 관리하기 위한 방법으로서,
    실행될 하나 이상의 워크 아이템들을 정의하는 단계와,
    실행을 위해 상기 하나 이상의 정의된 워크 아이템들을 하나 이상의 서비스 제공자 컴포넌트들에 할당하는 단계와,
    상기 하나 이상의 할당된 워크 아이템들을 나중에 상기 하나 이상의 서비스 제공자 컴포넌트들에 일괄화시키는 단계와,
    상기 하나 이상의 일괄화된 워크 아이템들의 상태를 지속시키는 단계와,
    상기 하나 이상의 일괄화된 워크 아이템들을 실행하도록 상기 하나 이상의 서비스 제공자 컴포넌트들을 커미팅하는 단계를 포함하고,
    상기 하나 이상의 서비스 제공자 컴포넌트들은 하나 이상의 커미팅된 워크 아이템들을 실행하는 상태 관리 방법.
  2. 제1항에 있어서,
    상기 커미팅 단계는 트랜잭션을 생성하는 단계 및 상기 하나 이상의 일괄화된 워크 아이템들을 트랜잭션에 첨부하는 단계 중 적어도 하나를 포함하는 상태 관리 방법.
  3. 제2항에 있어서,
    상기 첨부 단계는 상기 트랜잭션의 상기 하나 이상의 첨부된 워크 아이템들을 상기 하나 이상의 정의된 워크 아이템들의 함수로서 세그먼팅하는 상태 관리 방법.
  4. 제1항에 있어서,
    상기 하나 이상의 서비스 제공자 컴포넌트들은 하나 이상의 호스트 환경들 및 상기 하나 이상의 정의된 워크 아이템들에 대하여 원격인 하나 이상의 호스트 환경들 중 하나 이상의 일부이고,
    상기 하나 이상의 워크 아이템들은 메시징, 인스턴스, 트랜잭션, 퍼시스턴스, 스레딩, 타이머, 롤(role) 및 트랙킹 중 적어도 하나 이상을 포함하는 상태 관리 방법.
  5. 제1항에 있어서,
    상기 하나 이상의 커미팅된 워크 아이템들을 실행하는 것에 실패한 경우, 상기 하나 이상의 서비스 제공자 컴포넌트들에 의해 메시지를 전송하는 단계를 더 포함하는 상태 관리 방법.
  6. 제1항에 있어서,
    상기 지속시키는 단계는 상기 하나 이상의 일괄화된 워크 아이템들의 상태를 컴퓨터 판독가능 매체에 저장하는 단계를 포함하고, 상기 하나 이상의 할당된 워크 아이템들의 상태는 완료됨, 실행 중 및 폐기됨 중 적어도 하나를 포함하는 상태 관리 방법.
  7. 제1항에 있어서,
    하나 이상의 컴퓨터 판독가능 매체가 제1항에 따른 방법을 수행하기 위한 컴퓨터 실행가능 명령을 구비하는 상태관리 방법.
  8. 워크플로우에서 상태를 관리하기 위한 컴퓨터 실행가능 컴포넌트들을 구비하는 하나 이상의 컴퓨터 판독가능 매체로서, 상기 컴포넌트들은,
    실행될 하나 이상의 워크 아이템들을 할당하기 위한 워크플로우 컴포넌트- 상기 워크플로우 컴포넌트는 상기 하나 이상의 워크 아이템들을 정의하고, 상기 워크플로우 컴포넌트는 나중에 하나 이상의 할당된 워크 아이템들을 일괄화시킴 -와,
    상기 하나 이상의 일괄화된 워크 아이템들을 실행하도록 커미팅하기 위한 하나 이상의 서비스 제공자 컴포넌트들
    을 포함하는 컴퓨터 판독가능 매체.
  9. 제8항에 있어서,
    상기 하나 이상의 일괄화된 워크 아이템들의 지속적인 상태를 저장하기 위한 메모리를 더 포함하고, 상기 하나 이상의 일괄화된 워크 아이템들의 지속적인 상태는 완료됨, 실행 중 및 폐기됨 중 적어도 하나를 포함하는 컴퓨터 판독가능 매체.
  10. 제8항에 있어서,
    상기 워크플로우 컴포넌트들은 트랜잭션을 생성하고, 상기 트랜잭션은 상기 하나 이상의 일괄화된 워크 아이템들을 포함하는 컴퓨터 판독가능 매체.
  11. 제8항에 있어서,
    상기 워크플로우 컴포넌트는 트랜잭션의 상기 하나 이상의 할당된 워크 아이템들을 하나 이상의 정의된 워크 아이템들의 함수로서 세그먼팅하는 것을 더 포함하는 컴퓨터 판독가능 매체.
  12. 제8항에 있어서,
    상기 하나 이상의 서비스 제공자 컴포넌트들은 하나 이상의 호스트 환경들의 일부인 컴퓨터 판독가능 매체.
  13. 제8항에 있어서,
    상기 워크플로우 컴포넌트는 실행을 위해 상기 하나 이상의 정의된 워크 아이템들을 상기 하나 이상의 서비스 제공자 컴포넌트들에 할당하고, 상기 하나 이상의 서비스 제공자 컴포넌트들은 상기 하나 이상의 정의된 워크 아이템들에 대하여 원격인 하나 이상의 호스트 환경들의 일부인 컴퓨터 판독가능 매체.
  14. 제8항에 있어서,
    상기 하나 이상의 서비스 제공자 컴포넌트들은 상기 하나 이상의 커미팅된 워크 아이템들을 실행하는 데에 실패한 경우 상기 워크플로우 컴포넌트에 통지하는 컴퓨터 판독가능 매체.
  15. 제1 호스트 환경에 의해 실행가능한 하나 이상의 워크 아이템들의 워크플로우를 관리하기 위한 방법으로서,
    제1 호스트 환경에서, 하나 이상의 워크 아이템들을 실행하는 할당을 수신하는 단계와,
    상기 하나 이상의 할당된 워크 아이템들을 일괄에 첨부하는 단계- 상기 첨부는 나중에 상기 제1 호스트 환경에 의해 실행될 상기 하나 이상의 할당된 워크 아이템들을 나타냄 -와,
    상기 제1 호스트 환경에서, 상기 하나 이상의 할당된 워크 아이템들을 실행하는 요청을 수신하는 단계와,
    상기 제1 호스트 환경에서, 상기 하나 이상의 요청된 워크 아이템들을 실행하는 단계
    를 포함하는 워크플로우 관리 방법.
  16. 제15항에 있어서,
    상기 할당은 하나 이상의 정의된 워크 아이템들을 포함하고,
    트랜잭션은 상기 트랜잭션의 하나 이상의 워크 아이템들에 대한 원자 트랜잭션 경계를 상기 하나 이상의 정의된 워크 아이템들의 함수로서 정의하는 단계를 포함하며,
    상기 하나 이상의 워크 아이템들은 제2 호스트 환경에서 실행가능한 워크플로우 관리 방법.
  17. 제15항에 있어서,
    상기 하나 이상의 워크 아이템들의 정의된 원자 트랜잭션 경계에 따라 상기 하나 이상의 일괄화된 워크 아이템들의 상태를 트랜잭션에 저장하는 단계를 더 포함하는 워크플로우 관리 방법.
  18. 제15항에 있어서,
    상기 하나 이상의 일괄화된 워크 아이템들의 상태를 컴퓨터 판독가능 매체에 저장하는 단계를 더 포함하고, 상기 하나 이상의 일괄화된 워크 아이템들의 상태는 완료됨, 실행 중 및 폐기됨 중 적어도 하나를 포함하는 워크플로우 관리 방법.
  19. 제15항에 있어서,
    상기 일괄을 트랜잭션에 첨부하는 단계를 더 포함하는 워크플로우 관리 방법.
  20. 제15항에 있어서,
    상기 하나 이상의 커미팅된 워크 아이템들을 실행하는 것에 실패한 경우, 상기 제1 호스트 환경에 의해 메시지를 전송하는 단계를 더 포함하는 워크플로우 관리 방법.
KR1020050104192A 2004-12-22 2005-11-02 워크플로우 트랜잭션의 일괄화를 통한 런타임 및애플리케이션 상태의 동기화 KR20060071860A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/023,769 US7665093B2 (en) 2004-12-22 2004-12-22 Synchronization of runtime and application state via batching of workflow transactions
US11/023,769 2004-12-22

Publications (1)

Publication Number Publication Date
KR20060071860A true KR20060071860A (ko) 2006-06-27

Family

ID=36000930

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050104192A KR20060071860A (ko) 2004-12-22 2005-11-02 워크플로우 트랜잭션의 일괄화를 통한 런타임 및애플리케이션 상태의 동기화

Country Status (5)

Country Link
US (1) US7665093B2 (ko)
EP (1) EP1675056A1 (ko)
JP (1) JP2006178935A (ko)
KR (1) KR20060071860A (ko)
CN (1) CN1783132B (ko)

Families Citing this family (108)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9552599B1 (en) * 2004-09-10 2017-01-24 Deem, Inc. Platform for multi-service procurement
US8180658B2 (en) * 2007-01-30 2012-05-15 Microsoft Corporation Exploitation of workflow solution spaces to account for changes to resources
US20080184250A1 (en) * 2007-01-30 2008-07-31 Microsoft Corporation Synchronizing Workflows
US20080307035A1 (en) * 2007-06-05 2008-12-11 Erik John Burckart System and Method for Off-loading Online Meeting Updates Using Forward Proxy
CN101821721B (zh) * 2007-07-26 2017-04-12 起元技术有限责任公司 具有误差处理的事务型基于图的计算
US8326814B2 (en) 2007-12-05 2012-12-04 Box, Inc. Web-based file management system and service
US8108868B2 (en) * 2007-12-18 2012-01-31 Microsoft Corporation Workflow execution plans through completion condition critical path analysis
JP2009217587A (ja) * 2008-03-11 2009-09-24 Hitachi Ltd バッチ処理装置及び方法
US8161492B2 (en) * 2008-04-15 2012-04-17 Microsoft Corporation Continuation based runtimes in transactions
JP5128365B2 (ja) * 2008-05-09 2013-01-23 キヤノンソフトウェア株式会社 情報処理システム、情報処理方法、プログラム、及び、記録媒体
US20090307651A1 (en) * 2008-06-05 2009-12-10 Shanmugam Senthil Computing Platform for Structured Data Processing
US10169199B2 (en) 2008-06-10 2019-01-01 Microsoft Technology Licensing, Llc Automatic model-specific debugger extensions
JP5024453B2 (ja) * 2008-08-15 2012-09-12 富士通株式会社 業務フロー分散処理システム及び方法
US8683432B2 (en) * 2009-03-20 2014-03-25 Microsoft Corporation Providing execution context in continuation based runtimes
US20100293538A1 (en) * 2009-05-15 2010-11-18 Microsoft Corporation Dynamic program updating in a continuation based runtime
US8468529B2 (en) * 2009-05-27 2013-06-18 Microsoft Corporation Correlating, logging and tracing messaging events between workflow instances with globally unique identifiers
US8250588B2 (en) 2009-06-16 2012-08-21 Microsoft Corporation Persisting application state
US8205113B2 (en) * 2009-07-14 2012-06-19 Ab Initio Technology Llc Fault tolerant batch processing
US8281309B2 (en) * 2009-08-31 2012-10-02 Accenture Global Services Limited Optimization system for controlling batch job processing traffic transmitted to a mainframe computer
US8424009B2 (en) * 2009-12-04 2013-04-16 Microsoft Corporation Lock resolution for distributed durable instances
US20110173947A1 (en) * 2010-01-19 2011-07-21 General Electric Company System and method for gas turbine power augmentation
US8417805B2 (en) * 2010-01-26 2013-04-09 Microsoft Corporation Controlling execution of services across servers
US8296780B2 (en) * 2010-03-23 2012-10-23 Microsoft Corporation Reducing persistence commands
US10078674B2 (en) * 2010-06-04 2018-09-18 Mcl Systems Limited Integrated workflow and database transactions
WO2012099617A1 (en) 2011-01-20 2012-07-26 Box.Net, Inc. Real time notification of activities that occur in a web-based collaboration environment
US8538793B2 (en) * 2011-02-17 2013-09-17 Infosys Limited System and method for managing real-time batch workflows
US9015601B2 (en) 2011-06-21 2015-04-21 Box, Inc. Batch uploading of content to a web-based collaboration environment
US9063912B2 (en) 2011-06-22 2015-06-23 Box, Inc. Multimedia content preview rendering in a cloud content management system
WO2013009337A2 (en) 2011-07-08 2013-01-17 Arnold Goldberg Desktop application for access and interaction with workspaces in a cloud-based content management system and synchronization mechanisms thereof
GB2503625A (en) 2011-07-08 2014-01-01 Box Inc Collaboration sessions in a workspace on cloud-based content management system
US8862975B2 (en) 2011-09-19 2014-10-14 Microsoft Corporation Web-based workflow service visualization and navigation
US9197718B2 (en) 2011-09-23 2015-11-24 Box, Inc. Central management and control of user-contributed content in a web-based collaboration environment and management console thereof
US8515902B2 (en) 2011-10-14 2013-08-20 Box, Inc. Automatic and semi-automatic tagging features of work items in a shared workspace for metadata tracking in a cloud-based content management system with selective or optional user contribution
US11210610B2 (en) 2011-10-26 2021-12-28 Box, Inc. Enhanced multimedia content preview rendering in a cloud content management system
US9098474B2 (en) 2011-10-26 2015-08-04 Box, Inc. Preview pre-generation based on heuristics and algorithmic prediction/assessment of predicted user behavior for enhancement of user experience
US8990307B2 (en) 2011-11-16 2015-03-24 Box, Inc. Resource effective incremental updating of a remote client with events which occurred via a cloud-enabled platform
WO2013082320A1 (en) 2011-11-29 2013-06-06 Box, Inc. Mobile platform file and folder selection functionalities for offline access and synchronization
US9019123B2 (en) 2011-12-22 2015-04-28 Box, Inc. Health check services for web-based collaboration environments
US9904435B2 (en) 2012-01-06 2018-02-27 Box, Inc. System and method for actionable event generation for task delegation and management via a discussion forum in a web-based collaboration environment
US11232481B2 (en) 2012-01-30 2022-01-25 Box, Inc. Extended applications of multimedia content previews in the cloud-based content management system
US9965745B2 (en) 2012-02-24 2018-05-08 Box, Inc. System and method for promoting enterprise adoption of a web-based collaboration environment
US9195636B2 (en) 2012-03-07 2015-11-24 Box, Inc. Universal file type preview for mobile devices
US9054919B2 (en) 2012-04-05 2015-06-09 Box, Inc. Device pinning capability for enterprise cloud service and storage accounts
US9575981B2 (en) 2012-04-11 2017-02-21 Box, Inc. Cloud service enabled to handle a set of files depicted to a user as a single file in a native operating system
US9413587B2 (en) 2012-05-02 2016-08-09 Box, Inc. System and method for a third-party application to access content within a cloud-based platform
US9691051B2 (en) 2012-05-21 2017-06-27 Box, Inc. Security enhancement through application access control
US8914900B2 (en) 2012-05-23 2014-12-16 Box, Inc. Methods, architectures and security mechanisms for a third-party application to access content in a cloud-based platform
US9027108B2 (en) 2012-05-23 2015-05-05 Box, Inc. Systems and methods for secure file portability between mobile applications on a mobile device
US9021099B2 (en) 2012-07-03 2015-04-28 Box, Inc. Load balancing secure FTP connections among multiple FTP servers
GB2505072A (en) 2012-07-06 2014-02-19 Box Inc Identifying users and collaborators as search results in a cloud-based system
US9712510B2 (en) 2012-07-06 2017-07-18 Box, Inc. Systems and methods for securely submitting comments among users via external messaging applications in a cloud-based platform
US9792320B2 (en) 2012-07-06 2017-10-17 Box, Inc. System and method for performing shard migration to support functions of a cloud-based service
US9237170B2 (en) 2012-07-19 2016-01-12 Box, Inc. Data loss prevention (DLP) methods and architectures by a cloud service
US9794256B2 (en) 2012-07-30 2017-10-17 Box, Inc. System and method for advanced control tools for administrators in a cloud-based service
US8868574B2 (en) 2012-07-30 2014-10-21 Box, Inc. System and method for advanced search and filtering mechanisms for enterprise administrators in a cloud-based environment
US8745267B2 (en) 2012-08-19 2014-06-03 Box, Inc. Enhancement of upload and/or download performance based on client and/or server feedback information
US9369520B2 (en) 2012-08-19 2016-06-14 Box, Inc. Enhancement of upload and/or download performance based on client and/or server feedback information
US9558202B2 (en) 2012-08-27 2017-01-31 Box, Inc. Server side techniques for reducing database workload in implementing selective subfolder synchronization in a cloud-based environment
US9135462B2 (en) 2012-08-29 2015-09-15 Box, Inc. Upload and download streaming encryption to/from a cloud-based platform
US9117087B2 (en) 2012-09-06 2015-08-25 Box, Inc. System and method for creating a secure channel for inter-application communication based on intents
US9311071B2 (en) 2012-09-06 2016-04-12 Box, Inc. Force upgrade of a mobile application via a server side configuration file
US9195519B2 (en) 2012-09-06 2015-11-24 Box, Inc. Disabling the self-referential appearance of a mobile application in an intent via a background registration
US9292833B2 (en) * 2012-09-14 2016-03-22 Box, Inc. Batching notifications of activities that occur in a web-based collaboration environment
CN102902572B (zh) * 2012-09-17 2015-06-10 北京中电普华信息技术有限公司 一种基于消息分段式的工作流引擎以及集群系统
US10200256B2 (en) 2012-09-17 2019-02-05 Box, Inc. System and method of a manipulative handle in an interactive mobile user interface
US9553758B2 (en) 2012-09-18 2017-01-24 Box, Inc. Sandboxing individual applications to specific user folders in a cloud-based service
US10915492B2 (en) 2012-09-19 2021-02-09 Box, Inc. Cloud-based platform enabled with media content indexed for text-based searches and/or metadata extraction
US9959420B2 (en) 2012-10-02 2018-05-01 Box, Inc. System and method for enhanced security and management mechanisms for enterprise administrators in a cloud-based environment
US9705967B2 (en) 2012-10-04 2017-07-11 Box, Inc. Corporate user discovery and identification of recommended collaborators in a cloud platform
US9495364B2 (en) 2012-10-04 2016-11-15 Box, Inc. Enhanced quick search features, low-barrier commenting/interactive features in a collaboration platform
US9665349B2 (en) 2012-10-05 2017-05-30 Box, Inc. System and method for generating embeddable widgets which enable access to a cloud-based collaboration platform
US9628268B2 (en) 2012-10-17 2017-04-18 Box, Inc. Remote key management in a cloud-based environment
US9756022B2 (en) 2014-08-29 2017-09-05 Box, Inc. Enhanced remote key management for an enterprise in a cloud-based environment
US10235383B2 (en) 2012-12-19 2019-03-19 Box, Inc. Method and apparatus for synchronization of items with read-only permissions in a cloud-based environment
US9396245B2 (en) 2013-01-02 2016-07-19 Box, Inc. Race condition handling in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US9953036B2 (en) 2013-01-09 2018-04-24 Box, Inc. File system monitoring in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US9507795B2 (en) 2013-01-11 2016-11-29 Box, Inc. Functionalities, features, and user interface of a synchronization client to a cloud-based environment
US10599671B2 (en) 2013-01-17 2020-03-24 Box, Inc. Conflict resolution, retry condition management, and handling of problem files for the synchronization client to a cloud-based platform
US9401835B2 (en) 2013-03-15 2016-07-26 International Business Machines Corporation Data integration on retargetable engines in a networked environment
US9256460B2 (en) * 2013-03-15 2016-02-09 International Business Machines Corporation Selective checkpointing of links in a data flow based on a set of predefined criteria
US9323619B2 (en) 2013-03-15 2016-04-26 International Business Machines Corporation Deploying parallel data integration applications to distributed computing environments
US10846074B2 (en) 2013-05-10 2020-11-24 Box, Inc. Identification and handling of items to be ignored for synchronization with a cloud-based platform by a synchronization client
US10725968B2 (en) 2013-05-10 2020-07-28 Box, Inc. Top down delete or unsynchronization on delete of and depiction of item synchronization with a synchronization client to a cloud-based platform
US9633037B2 (en) 2013-06-13 2017-04-25 Box, Inc Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform
US9805050B2 (en) 2013-06-21 2017-10-31 Box, Inc. Maintaining and updating file system shadows on a local device by a synchronization client of a cloud-based platform
US10229134B2 (en) 2013-06-25 2019-03-12 Box, Inc. Systems and methods for managing upgrades, migration of user data and improving performance of a cloud-based platform
US10110656B2 (en) 2013-06-25 2018-10-23 Box, Inc. Systems and methods for providing shell communication in a cloud-based platform
US9535924B2 (en) 2013-07-30 2017-01-03 Box, Inc. Scalability improvement in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US9477511B2 (en) 2013-08-14 2016-10-25 International Business Machines Corporation Task-based modeling for parallel data integration
US9535909B2 (en) 2013-09-13 2017-01-03 Box, Inc. Configurable event-based automation architecture for cloud-based collaboration platforms
US10509527B2 (en) 2013-09-13 2019-12-17 Box, Inc. Systems and methods for configuring event-based automation in cloud-based collaboration platforms
US9213684B2 (en) 2013-09-13 2015-12-15 Box, Inc. System and method for rendering document in web browser or mobile device regardless of third-party plug-in software
US9704137B2 (en) 2013-09-13 2017-07-11 Box, Inc. Simultaneous editing/accessing of content by collaborator invitation through a web-based or mobile application to a cloud-based collaboration platform
GB2518298A (en) 2013-09-13 2015-03-18 Box Inc High-availability architecture for a cloud-based concurrent-access collaboration platform
US8892679B1 (en) 2013-09-13 2014-11-18 Box, Inc. Mobile device, methods and user interfaces thereof in a mobile device platform featuring multifunctional access and engagement in a collaborative environment provided by a cloud-based platform
US10866931B2 (en) 2013-10-22 2020-12-15 Box, Inc. Desktop application for accessing a cloud collaboration platform
CA2932763C (en) 2013-12-05 2022-07-12 Ab Initio Technology Llc Managing interfaces for dataflow graphs composed of sub-graphs
CN105094758A (zh) * 2014-04-29 2015-11-25 国际商业机器公司 用于避免事务回滚的方法和装置
US10530854B2 (en) 2014-05-30 2020-01-07 Box, Inc. Synchronization of permissioned content in cloud-based environments
US9602514B2 (en) 2014-06-16 2017-03-21 Box, Inc. Enterprise mobility management and verification of a managed application by a content provider
US10574442B2 (en) 2014-08-29 2020-02-25 Box, Inc. Enhanced remote key management for an enterprise in a cloud-based environment
US9894119B2 (en) 2014-08-29 2018-02-13 Box, Inc. Configurable metadata-based automation and content classification architecture for cloud-based collaboration platforms
US10038731B2 (en) 2014-08-29 2018-07-31 Box, Inc. Managing flow-based interactions with cloud-based shared content
US9311134B1 (en) 2014-09-29 2016-04-12 International Business Machines Corporation Automated creation of executable workflow
US11216764B2 (en) * 2017-07-11 2022-01-04 Jpmorgan Chase Bank, N.A. Systems and methods for distributed business process management
US11458621B2 (en) * 2017-09-27 2022-10-04 Kindred Systems Inc. Systems, devices, articles, and methods for parallelization of robots in synchronous communication framework
CN110264076B (zh) * 2019-06-19 2020-11-06 深圳市艾迪思特信息技术有限公司 一种物联网事务管理系统
CN111400352B (zh) * 2020-03-18 2020-11-17 北京三维天地科技股份有限公司 一种可进行数据批量处理的工作流引擎

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3267066B2 (ja) * 1994-09-30 2002-03-18 富士ゼロックス株式会社 ワークフロー支援システム
US5634127A (en) * 1994-11-30 1997-05-27 International Business Machines Corporation Methods and apparatus for implementing a message driven processor in a client-server environment
US5774661A (en) * 1995-04-18 1998-06-30 Network Imaging Corporation Rule engine interface for a visual workflow builder
US6353844B1 (en) * 1996-12-23 2002-03-05 Silicon Graphics, Inc. Guaranteeing completion times for batch jobs without static partitioning
US5960404A (en) * 1997-08-28 1999-09-28 International Business Machines Corp. Mechanism for heterogeneous, peer-to-peer, and disconnected workflow operation
US6225998B1 (en) * 1997-12-02 2001-05-01 Aspect Communications Visual design of workflows for transaction processing
US6115646A (en) * 1997-12-18 2000-09-05 Nortel Networks Limited Dynamic and generic process automation system
US6430538B1 (en) 1998-04-30 2002-08-06 Enterworks Workflow management system, method and medium with personal subflows
WO2000014618A2 (en) * 1998-08-24 2000-03-16 Fujitsu Limited Workflow system and method
AU3875900A (en) 1999-03-11 2000-09-28 Paysys International, Inc. Methods and systems for developing applications and for interfacing with users
JP2000348111A (ja) * 1999-06-01 2000-12-15 Hitachi Ltd ワークフロー管理方法及びその実施装置並びにその処理プログラムを記録した記録媒体
US6609128B1 (en) * 1999-07-30 2003-08-19 Accenture Llp Codes table framework design in an E-commerce architecture
US7289964B1 (en) * 1999-08-31 2007-10-30 Accenture Llp System and method for transaction services patterns in a netcentric environment
US6625602B1 (en) * 2000-04-28 2003-09-23 Microsoft Corporation Method and system for hierarchical transactions and compensation
WO2002029682A1 (en) * 2000-10-02 2002-04-11 International Projects Consultancy Services, Inc. Object-based workflow system and method
US7174534B2 (en) * 2001-01-22 2007-02-06 Symbol Technologies, Inc. Efficient system and method for running and analyzing multi-channel, multi-modal applications
US6907451B1 (en) * 2001-09-29 2005-06-14 Siebel Systems, Inc. Method, apparatus, and system for immediate posting of changes in a client server environment
US7461119B2 (en) * 2001-09-29 2008-12-02 Siebel Systems, Inc. Method, apparatus, and system for managing status of requests in a client server environment
US7089287B2 (en) * 2002-01-16 2006-08-08 Xerox Corporation Message-based system having embedded information management capabilities
US7127716B2 (en) * 2002-02-13 2006-10-24 Hewlett-Packard Development Company, L.P. Method of load balancing a distributed workflow management system
WO2003089995A2 (en) * 2002-04-15 2003-10-30 Invensys Systems, Inc. Methods and apparatus for process, factory-floor, environmental, computer aided manufacturing-based or other control system with real-time data distribution
US20040078105A1 (en) * 2002-09-03 2004-04-22 Charles Moon System and method for workflow process management
US20040148213A1 (en) * 2002-11-25 2004-07-29 Microsoft Corporation Automated workflow constraints
US20040162741A1 (en) * 2003-02-07 2004-08-19 David Flaxer Method and apparatus for product lifecycle management in a distributed environment enabled by dynamic business process composition and execution by rule inference
US7451432B2 (en) * 2004-10-01 2008-11-11 Microsoft Corporation Transformation of componentized and extensible workflow to a declarative format

Also Published As

Publication number Publication date
CN1783132A (zh) 2006-06-07
EP1675056A1 (en) 2006-06-28
JP2006178935A (ja) 2006-07-06
CN1783132B (zh) 2014-11-19
US20060136279A1 (en) 2006-06-22
US7665093B2 (en) 2010-02-16

Similar Documents

Publication Publication Date Title
KR20060071860A (ko) 워크플로우 트랜잭션의 일괄화를 통한 런타임 및애플리케이션 상태의 동기화
US20200081879A1 (en) Persistent data storage techniques
US8024733B2 (en) Component model for batch computing in a distributed object environment
KR101126979B1 (ko) 분산형 고장 허용 및 고가용성 컴퓨팅 시스템
Graham Issues in real-time data management
US7962458B2 (en) Method for replicating explicit locks in a data replication engine
US10430298B2 (en) Versatile in-memory database recovery using logical log records
Wang et al. Lineage stash: fault tolerance off the critical path
US9904721B1 (en) Source-side merging of distributed transactions prior to replication
US9898517B2 (en) Declarative synchronization of shared data
US20100161549A1 (en) Masterless distributed batch scheduling engine
US7752599B2 (en) Systems and methods extending an existing programming language with constructs
CN104205095A (zh) 用于连续图更新和计算的平台
WO2007077012A2 (en) Architectural design for physical inventory application software
US20050022164A1 (en) Systems and methods utilizing a workflow definition language
Thomson et al. Fast distributed transactions and strongly consistent replication for OLTP database systems
Carbone et al. Large-scale data stream processing systems
Bernstein et al. Geo-distribution of actor-based services
Margara et al. A model and survey of distributed data-intensive systems
Pandey et al. LIFT-A new linear two-phase commit protocol
Soparkar et al. Time-constrained transaction management: real-time constraints in database transaction systems
Zhu et al. Client-centric consistency formalization and verification for system with large-scale distributed data storage
Lakhal et al. Ws-sagas: transaction model for reliable web-services-composition specification and execution
Tripathi et al. A transactional model for parallel programming of graph applications on computing clusters
Biörnstad A workflow approach to stream processing

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid