KR20080106561A - 실세계 프로세스들을 모델링하기 위한 방법 및 시스템과 컴퓨터 판독가능 매체 - Google Patents

실세계 프로세스들을 모델링하기 위한 방법 및 시스템과 컴퓨터 판독가능 매체 Download PDF

Info

Publication number
KR20080106561A
KR20080106561A KR1020087023830A KR20087023830A KR20080106561A KR 20080106561 A KR20080106561 A KR 20080106561A KR 1020087023830 A KR1020087023830 A KR 1020087023830A KR 20087023830 A KR20087023830 A KR 20087023830A KR 20080106561 A KR20080106561 A KR 20080106561A
Authority
KR
South Korea
Prior art keywords
activity
automaton
program fragment
execution
workflow
Prior art date
Application number
KR1020087023830A
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 KR20080106561A publication Critical patent/KR20080106561A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/482Application

Landscapes

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

Abstract

관리된 실행 환경을 가상화하기 위한 워크플로우가 제공된다. 워크플로우 엔진은 오토머튼 및 그에 연관된 메소드들에 기초하여 워크플로우를 실행한다. 워크플로우 엔진은 실세계 프로세스들의 모델링을 가능하게 하기 위해, 실행되는 워크플로우에 연관된 연속부를 캡쳐한다.
워크플로우, 관리된 실행 환경, 가상화, 오토머튼, 연속 데이터

Description

실세계 프로세스들을 모델링하기 위한 방법 및 시스템과 컴퓨터 판독가능 매체{ABSTRACT EXECUTION MODEL FOR A CONTINUATION-BASED META-RUNTIME}
현존하는 시스템들은 자율적인 에이전트들 간의 비지니스 프로세스 또는 기타 실세계 상호작용을 하이레벨 워크플로우를 통해 모델링하려고 시도한다. 그러나, 워크플로우는 (a) 실행 및 모델링의 복잡성, (b) 설계시의 플로우의 구조에 대한 지식, (c) 고정적으로 규정된 것인지 또는 애드혹/동적인지, (d) 라이프사이클 동안의 다양한 시점에서의 플로우의 작성 및 편집의 용이성, 및 (e) 코어 워크플로우 프로세스에 대한 비지니스 로직의 약한 또는 강한 연관과 같은 다양한 특질면에서 다를 수 있다. 현존하는 워크플로우 모델은 이러한 인자들 모두를 수용하는 데에 실패하였다.
또한, 대부분의 현존하는 워크플로우 모델들은 언어-기반 방식(예를 들어, BPEL4WS, XLANG/S 및 WSFL) 또는 어플리케이션-기반 방식에 기초하고 있다. 언어-기반 방식은 사용자/프로그래머에 대하여 워크플로우 프로세스를 모델링하는 것을 돕는 폐쇄된 집합의 미리-정의된 구성들을 갖는 하이레벨 워크플로우 언어이다. 워크플로우 언어는 사용자가 워크플로우 모델을 구축할 수 있도록 하기 위하여, 폐쇄된 구성 집합에 대한 시멘틱 정보의 전부를 갖는다. 그러나, 언어는 개발자에 의해 확장가능하지 않고, 워크플로우 모델을 구성하는 폐쇄된 프리미티브 집합을 표현한다. 언어는 워크플로우 시스템 벤더에 의해 탑재된 언어 컴파일러에 속박된다. 워크플로우 시스템 제품의 벤더만이 그 제품의 장래 버전에서 새로운 구성 집합을 이용하여 언어를 확장하는 것에 의해 모델을 확장할 수 있다. 이는 언어에 연관된 컴파일러의 업그레이드를 필요로 하는 경우가 많다. 또한, 언어는 통상적으로 다른 프로그램에 의해 쉽고 효율적으로 사용될 수 있는 함수(function) 또는 연산(operation)을 서술적으로(declaratively) 노출 또는 정의하지 않는다.
어플리케이션-기반 방식은 도메인 특정 문제를 해결하기 위하여 어플리케이션 내에 워크플로우 능력을 갖는 어플리케이션이다. 이러한 어플리케이션은 진정으로 확장가능하지도 않고, 프로그래밍가능한 모델을 갖지도 않는다.
<발명의 개요>
본 발명의 실시예들은 실세계 프로세스들을 워크플로우로 모델링한다. 일 실시예에서, 본 발명은 워크플로우 내의 액티비티와의 연관을 위해 오토머튼(automaton)을 정의한다. 고정된 기능성(fixed functionality)을 갖는 관리된 실행 환경(managed execution environment)을 가상화(virtualizing)하는 메타-런타임 엔진(meta-runtime engine)은 정의된 오토머튼에 기초하여 액티비티를 포함하는 프로그램 단편을 실행한다. 실행 중인 프로그램 단편에 관한 일시중지 신호(suspension signal)를 수신하는 것에 응답하여, 메타-런타임 엔진은 프로그램 단편에 연관된 연속 데이터(continuation data)를 결정하고, 프로그램 단편에 연관된 임의의 자원을 릴리즈한다.
본 개요는 이하의 상세한 설명에서 더 설명될 개념들 중 선택된 것을 간략화 된 형태로 소개하기 위해 제공된 것이다. 본 개요는 청구 대상의 핵심적인 특징 또는 본질적인 특징을 식별하도록 의도된 것이 아니며, 청구 대상의 범위를 결정하는 데에 도움이 되도록 의도된 것도 아니다.
이하에서 다른 특징들이 부분적으로 명확해지고 부분적으로 지시될 것이다.
도 1은 본 발명의 양태들에 대한 예시적인 운영 환경을 도시한 블럭도.
도 2는 본 발명의 일 실시예에 따른 연속-기반 워크플로우 프레임워크를 설명하는 예시적인 블럭도.
도 3은 본 발명의 일 실시예에 따른 워크플로우를 도시한 예시적인 블럭도.
도 4는 본 발명의 일 실시예에 따른 워크플로우 액티비티의 계층적 구조를 도시한 도면.
도 5는 본 발명의 일 실시예에 따른 액티비티에 대한 예시적인 상태 오토머튼을 도시한 도면.
도 6은 본 발명의 일 실시예에 따라 워크플로우 액티비티를 처리하기 위한 예시적인 시스템을 도시한 블럭도.
도 7은 연속-기반 런타임에 대한 추상화 실행 모델의 동작을 도시한 예시적인 흐름도.
도면들 전체에서 대응하는 참조 부호들은 대응하는 부분들을 나타낸다.
먼저 도 1을 참조하면, 워크플로우 내의 프로세스-중심 액티비티(process- centric activity)를 모델링하기 위한 전형적인 프로그래밍 패러다임을 설명하는 블럭도가 도시되어 있다. 도 1은 3-레벨 가상화 모델을 도시하는데, 여기에서 최고 레벨에 있는 관리된 실행 환경(106)은 운영 체제(104)를 가상화한다. 관리된 실행 환경(106)은 컴퓨팅 장치의 프로세서 아키텍쳐에 독립하여 구현될 수 있는 추상화 스택 머신(abstract stack machine)과 관련하여, 환경(106) 내에서 실행되고 있는 프로그램의 실행을 가상화한다. 운영 체제(104)는 최저 레벨에서 처리 장치(102)를 가상화한다. 관리된 실행 환경(106) 레벨에 있는 프로그램들은 관리된 실행 환경(106) 내에서 이용가능한 고정된 기능성으로 인해 워크플로우 내의 프로세스들 간의 복잡한 상호작용을 수용할 수 있는 능력 및 능률을 갖지 못한다. 관리된 실행 환경(106)은 또한 실세계 워크플로우를 모델링하는 워크플로우의 복잡성 및 능력을 다루는 데에 적합하지 않은 다양한 엄격한 요구조건들을 포함한다. 또한, 운영 체제(104) 내의 프로그래밍 코드 또는 루틴은 다른 제약조건들 중에서도, 처리 장치(102)의 종류 또는 구성과, 컴퓨팅 아키텍쳐의 종류(예를 들어, IBM 브랜드의 퍼스널 컴퓨터와 호환가능한 것, APPLE 브랜드의 퍼스널 컴퓨터와 호환 가능한 것, 또는 다른 시스템)에 의존한다. 또한, 운영 체제(104)가 적절하게 기능하기 위해, 프로그래밍 언어는 전형적으로 스택, 힙(heap) 또는 스레드와 같은 하드웨어-특정적인 데이터 구조를 필요로 한다.
다음으로, 도 2를 보면, 본 발명의 양태들은 연속-기반 워크플로우 엔진(202), 메타-런타임 엔진, 또는 관리된 실행 환경을 가상화하는 다른 프레임워크를 포함한다. 워크플로우는 액티비티들의 계층적 구성을 포함하는데, 각 액티비티 는 작업의 단위(a unit of work)를 표현한다. 워크플로우 엔진(202)은 실세계 프로세스를 표현하는 워크플로우 내의 액티비티 또는 연산 코드(op 코드)의 실행에 대한 비동기적인 추상화 모델을 제공한다. 워크플로우 엔진(202)은 실행 사이클 동안의 어느 시점에서라도 프로그램을 일시중지(suspending)시키고 재개시킬 수 있는 연속-기반 런타임이다. 액티비티가 도메인-특정적인데 반하여, 워크플로우 엔진(202)은 도메인 특수성에 대해 알지 못한다(agnostic of domain specificity). 더욱이, 워크플로우 엔진(202)은 액티비티와 관련하여 패키지된 특정 제어 흐름 패턴에 관해서는 아무것도 알지 못한다. 이와 같이, 본 발명의 양태들에 의해 제공되는 실행 모델은 추상적이다. 또한, 전체 워크플로우 인스턴스는 논리적으로 임의의 시간량(예를 들어, 일, 월, 년) 동안 실행될 수 있는 한편, 워크플로우에 연관된 액티비티들은 단기간의 작업(short-lived work)을 수행하고 협동적인 멀티태스킹 방식으로 산출할 수 있다. 본 발명의 양태들의 추상화 실행 모델은, 워크플로우 엔진(202)이 인스턴스를 실행의 중간에 일시중지시키고/거나 메모리로부터 퇴거시키고 장래에 재개할 수 있게 해 준다. 워크플로우 엔진(202)은 프로그램 패시베이션(passivation)에 걸쳐 그러한 동작들을 관리한다.
일 실시예에서, 워크플로우 엔진(202)은 관리된 실행 모듈(106)의 양태들, 즉 도메인-특정적인 op 코드, 스레드, 동기화 프리미티브, 실행 머신, 개체 수명, 소스 포맷, 예외(exception), 폴트(fault), 폴트 전파(fault propagation) 및 폴트 핸들링 중 하나 이상을 가상화하도록 동작한다. 예를 들어, 본 발명의 양태들은 사용자가 커스텀 액티비티와 관련하여 커스텀 op 코드를 작성할 수 있게 해 준다. 일반적으로, 워크플로우 엔진(202)은 관리된 실행 환경(106)으로부터 스레드, 스택 및/또는 힙을 사용한다. 워크플로우 엔진(202)은, 임의의 프로그래밍 언어로 작성되고 임의의 파일 포맷으로 구성된 프로그램을 실행할 수 있는 능력을 이용하여, 프로그램 개발자가 타협없이 프로그램을 설계할 수 있게 해 준다. 본 발명의 양태들은, 워크플로우 엔진(202)에 의해 실행될 베이스 클래스(base class)로서 워크플로우 태스크 또는 프로세스를 표현하는 액티비티를 정의함으로써, 개발자들이 관리된 실행 환경(106) 내에서 엄격하고 하드코딩되어 있으며 융통성없는 고정된 함수 또는 액티비티 집합을 고수하지 않고서도, 쉽고 효율적으로 도메인 특정적인 op 코드를 구축할 수 있게 해 준다. op 코드는 보건 산업, 금융 산업, 또는 기타 도메인에 특정적일 수 있다. 도 2의 워크플로우 엔진(202)은 연속부(continuation) 및 그 다양한 양태들의 모델링을 가능하게 하여 프로그래머가 복잡하고 동적인 제어 흐름 패턴을 모델링할 수 있게 해 주는, 임의의 현존하는 실행 프레임워크(예를 들어, 도 1의 관리된 실행 환경(106), 운영 체제(104), 처리 장치(102))의 최상위에 계층화된 임의의 연속-기반 런타임일 수 있다. 본 발명의 양태들은 액티비티를 임의의 방식 또는 표현(예를 들어, 흐름도, 다이어그램, 번호가 매겨진 설명 등)으로 정의할 수 있게 해 준다.
연속부는 복잡하고 동적인 제어 흐름 패턴을 모델링하는 데에 사용될 수 있다. 연속부는 액션에서 동결된 프로그램(a program frozen in action)이며, 계산의 상태를 포함하는 단일의 함수 개체(functional object)를 포함할 수 있다. 개체가 평가될 때, 저장된 계산은 그것이 중단되었던 위치에서 재시작될 수 있다. 특정한 종류의 문제를 해결할 때, 프로그램의 상태를 저장하고 나중에 그것을 다시 시작할 수 있다면, 큰 도움이 될 수 있다. 예를 들어, 멀티프로세싱에서, 연속부는 일시중단된 프로세스를 편리하게 표현한다. 비결정적인 검색 프로그램(nondeterministic search program)에서, 연속부는 검색 트리 내의 노드를 표현할 수 있다.
관리된 실행 환경(106)은 프로그램들 간에서 공통이지만 고정된 통신 환경을 생성하는 한편, 그러한 환경 내에서 실세계 프로세스를 모델링하는 능력을 가지고 있지 않다. 예를 들어, 관리된 실행 환경(106)에서 실행되는 어플리케이션은 함수들 또는 공통의 개체지향 클래스를 공유하기 위하여 중간 언어(intermediate language)로 제한된다. 중간 언어는 고정된 매개변수, 인수 또는 스키마, 또는 함수를 갖는다.
다시 도 2를 보면, 사용자(204)(예를 들어, 사람, 어플리케이션 프로그램, 프로그램, 운영 체제 등)는 워크플로우 설립 프레임워크(workflow foundation framework)를 제공하는 컴퓨터(206)와 상호작용한다. 컴퓨터(206) 및 그에 연관된 프로세서(도시되지 않음)는 연속 데이터(210) 및 워크플로우 설립을 구현하기 위한 컴퓨터 실행가능 명령어들을 갖는 하나 이상의 컴퓨터 판독가능 컴포넌트 또는 모듈을 저장하고 있는 메모리 영역(208)에 액세스할 수 있다. 연속 데이터(210)는 어플리케이션 상태 및 런타임 상태를 포함한다. 일 실시예에서, 어플리케이션 상태는 액티비티 개체들의 리스트를 포함하며 (예를 들어 액티비티 트리를 참조하여) 액티비티 상태를 지시하는 한편, 런타임 상태는 다음으로 실행 일정이 잡힌 예외 핸들러를 식별하는 프로그램 카운터를 포함하거나 스케쥴러 큐 상태(예를 들어, 스케쥴러에 연관된 큐 내의 아이템들)를 다르게 지시한다. 연속 데이터(210)에 의해 표현되는 연속부는, 일반적으로 주어진 시점에서의 액티비티 실행 컨텍스트 또는 프로그램 단편의 다른 상태를 표현한다. 액티비티 실행 컨텍스트는 관리된 실행 환경(106)으로부터의 물리적 스레드와 연관된 스택에 독립적으로 이용가능하다.
도 2의 실시예에서, 컴퓨터 실행가능 컴포넌트 또는 모듈은 오토머튼 모듈(automata module)(212), 실행 머신 모듈(214), 연속 모듈(216) 및 재개 모듈(218)을 포함한다. 오토머튼 모듈(212)은, 컴퓨터(206)에 의해 실행된 때, 워크플로우 내의 액티비티와의 연관에 대한 오토머튼을 정의한다. 정의된 오토머튼은 그에 연관된 상태들의 집합 및 그 상태들 각각에 대응하는 하나 이상의 메소드를 갖는다. 실행 머신 모듈(214)은 오토머튼 모듈(212)에 의해 정의된 오토머튼에 기초하여 액티비티를 포함하는 프로그램 단편을 실행한다. 연속 모듈(216)은 실행 머신 모듈(214)에 의해 실행되고 있는 프로그램 단편에 대한 일시중지 신호를 수신한 것에 응답하여 프로그램 단편의 연속 데이터(210)를 캡쳐하고, 그 프로그램 단편에 연관된 자원을 릴리즈한다. 연속 모듈(216)의 동작은 프로그램 단편을 피클링(pickling)하고, 프로그램 단편을 퇴거시키고, 프로그램 단편을 탈수(dehydrating)하고, 및/또는 프로그램 단편을 언로드(unloading)하는 것으로 참조될 수 있다. 예를 들어, 연속 데이터는, 제어 흐름 패턴, 반복(iteration), 병렬 foreach 문, 상태 머신, 페이지 플로우 컨트롤러, 시퀀스 발생기, 및 다른 연속부 중 하나 이상을 모델링하는 데에 사용된다.
재개 모듈(218)은, 컴퓨터(206) 또는 다른 컴퓨팅 장치에 의해 실행된 때, 실행 머신 모듈(214)에 의해 실행되고 있는 프로그램 단편에 관한 재개 신호의 수신에 응답하여, 연속 모듈(216)에 의해 캡쳐된 프로그램 단편에 대한 연속 데이터(210)를 복구한다. 실행 머신 모듈(214)은 복구된 연속 데이터(210)에 기초하여 프로그램 단편의 실행을 재개한다.
예를 들어, 실행 핸들러(예를 들어 액티비티에 연관된 메소드)는 연속부에 대한 참조를 이용하여 더 많은 실행 핸들러들의 일정을 정할 수 있다 (예를 들어, 컴포지트 액티비티(composite activity)는 자신의 자식들의 실행의 일정을 정할 수 있다). 일 실시예에서, 연속부에 대한 참조는 직접적 또는 암시적 인수(argument)로서 액티비티 실행 컨텍스트를 포함한다. 성공적으로 완결된 액티비티의 보상(compensation)은 지속된 컨텍스트를 재호출하고 그 컨텍스트 내에서 액티비티 인스턴스의 보상기 메소드(compensator method)를 실행함으로써 장래에 실행될 수 있다.
도 2, 다른 도면, 및 본 명세서의 언어의 요소들 중 임의의 것은, 메타-런타임을 제공하기 위한 수단, 및 프로그램 단편에 연관된 연속부를 캡쳐하기 위한 수단을 구성한다.
다음으로 도 3을 참조하면, 예시적인 워크플로우(300)가 도시되어 있다. 도 3의 예에서, 워크플로우(300)는 구매 주문을 처리하기 위한 워크플로우이다. 워크플로우 내의 액티비티들은, 그들 중 일부가 워크플로우(300) 내의 다른 액티비티들과 병렬로 또는 동시에 수행될 수 있는 한편, 그들 중 일부는 워크플로우(300) 내 의 다른 액티비티들의 완료 후에 실행되도록 시퀀스화될 수 있다. 워크플로우(300)는 고객으로부터의 주문 접수와 같은 시작점(302)으로부터 시작된다. 워크플로우(300)는 조건문(304)(예를 들어, IF문 또는 WHILE문)을 포함하며, 이것은 조건문(304) 내의 조건의 결과에 따라 조건문(306) 및 조건문(308)으로 분기한다. 조건문(306)에 이어, 워크플로우(300)는 비동기적으로 실행될 2개의 시퀀스를 갖는 병렬 구조(310)를 포함한다. 도 3에 도시된 예에서, "SEND EMAIL" 액티비티 및 "GET APPROVAL" 액티비티는 워크플로우가 단계(314)에서 완료되기 전에 병렬로 처리된다.
조건문(308)에 뒤이어, "액티비티를 여기에 드롭" 영역(316)은, 워크플로우가 단계(314)에서 완료되기 전에, 액티비티 작성자 또는 다른 사용자가 워크플로우(300)에 액티비티들을 추가할 수 있음을 나타낸다.
다음으로 도 4를 참조하면, 블럭도는 워크플로우 액티비티의 계층적 구조(402)(예를 들어, 트리 구조)를 도시하고 있다. 액티비티의 실행은 액티비티 트리의 루트에서 시작하여 그 액티비티 트리를 실행하는 것을 포함한다. 액티비티는 임의의 프로그래밍 언어로 된 소프트웨어 코드로 구성될 수 있다. 예를 들어, 소프트웨어 코드는 특정한 도메인 또는 실행 환경에서 작성된 비지니스 또는 어플리케이션 로직 또는 규칙을 표현할 수 있다. 액티비티는 로직 또는 규칙을 구현하는 하나 이상의 작업 아이템 또는 기타 액티비티를 포함할 수 있다. 도 4의 예에서, 액티비티 및 관련 작업 아이템들은 구조(402) 또는 기타 실행 시퀀스에 따라 배열되고 실행된다.
메타-런타임 엔진은 액티비티에 연관된 작업 아이템들 각각에 대한 범위 또는 경계를 정의한다. 이러한 범위 또는 경계는 작업 아이템들에 의해 액세스될 공유 데이터 또는 자원, 관련 속성, 핸들러, 제약조건, 이벤트 등과 같은 정보를 포함하고, 그들을 (예를 들어 데이터, 메타데이터 등의 형태로) 노출한다.
도 5를 참조하면, 예시적인 상태 오토머튼은 액티비티가 천이할 수 있는 상태들의 집합을 정의한다. 일반적으로, 상태 오토머튼(500)은 액티비티의 실행 수명을 정의한다. 도 5의 예시적인 오토머튼(500)에서, 액티비티는, 메타-런타임 엔진이 그 액티비티를 실행하고 천이 조건을 평가함에 따라, 정의된 상태들의 집합을 통하여 천이한다. 메타-런타임 엔진은 추상화 오토머튼마다 액티비티의 실행을 강제한다. 일 실시예에서, 액티비티의 실행은 오토머튼(500) 내의 상태들 및 그 상태들 각각의 가능한 특정 천이에 관련하여 수행된다.
예시적인 한 오토머튼은 초기화 상태, 실행 상태 및 폐쇄 상태를 포함한다. 도 5의 예에서, 상태 오토머튼(500)은 초기화 상태(502), 실행 상태(504), 취소 상태(506), 폴트 상태(508), 보상 상태(compensating state)(510), 및 폐쇄 상태(512)를 포함한다. 다른 실시예에서, 본 발명의 실시예들의 범위를 벗어나지 않고서, 하나 이상의 추가 상태들이 상태 오토머튼(500) 내에서 정의될 수 있다.
일반적으로, 상태 오토머튼(500)은 상태들을 집합을 통한 액티비티의 천이를 정의하는 하나 이상의 천이 조건을 갖는다. 일 실시예에서, 제1 오토머튼은 제1 액티비티에 연관되고 제2 오토머튼은 제2 액티비티에 연관된 경우, 제1 액티비티의 제1 오토머튼의 천이 조건은 제2 액티비티의 제2 오토머튼의 현재 상태에 의존할 수 있다.
또한, 상태 오토머튼(500)은 컴포지트 액티비티 내의 액티비티들 또는 작업 아이템들 간의 하나 이상의 관계를 확립할 수 있다. 예를 들어, 관계 규칙들 중 하나는, 액티비티 트리의 루트 노드에 있는 메소드 또는 작업 아이템들을 폐쇄 상태(512)로 천이시키기 전에, 자식 노드들에 있는 모든 작업 아이템들이 초기화 상태(502) 또는 폐쇄 상태(512)에 있어야 하는 것을 포함할 수 있다. 다른 규칙은, 액티비티 트리의 자식 노드에 있는 작업 아이템들을 실행 상태(504)로 천이시키기 전에, 루트 노드에 있는 작업 아이템이 실행 상태(504)에 있어야 함을 지정할 수 있다.
다음으로 도 6을 참조하면, 도면은 본 발명의 일 실시예에 따라 워크플로우 액티비티를 처리하기 위한 시스템(600)을 도시하고 있다. 시스템(600)은 도 1의 처리 장치(102)와 같은 처리 장치이거나 처리 장치들의 컬렉션일 수 있는 프로세서(602)를 포함한다. 시스템(600)은 프로세서(602)에 의해 액세스될 수 있는 데이터를 저장하기 위한 저장소 또는 메모리 영역(604)도 포함한다. 일 실시예에서, 시스템(600)은 처리 장치(예를 들어, 프로세서(602)), 시스템 메모리(예를 들어, 메모리 영역(604)), 및 프로세서(602)를 비롯한 다양한 시스템 컴포넌트들을 메모리 영역(604)에 연결하는 기타 컴포넌트들을 갖는 컴퓨터일 수 있다.
예를 들어, 메모리 영역(604)은 워크플로우(예를 들어, 도 3의 워크플로우(300)) 내에서의 처리를 위한 복수의 액티비티(606)를 저장하고 있다. 복수의 액티비티(606) 각각은 하나 이상의 작업 아이템을 포함하고, 작업 아이템들은 트리 구조와 같은 계층 구조로 조직화될 수 있다(도 4 참조). 복수의 액티비티(606)를 처리하는 데에 있어서, 프로세서(602)는 스케쥴러(608)를 액세스 또는 실행한다. 스케쥴러(608)는 작업 아이템들의 큐(610)(예를 들어, 워크큐), 및 큐(610)가 비워질 때까지 아이템들을 디큐잉(dequeue)하고 그 디큐잉된 작업 아이템에 연관된 작업을 수행하는 대응 구현물을 호출하는 디스패처(612)를 포함한다. 큐(610) 내의 각 작업 단위는 액티비티에 의해 구현되는 메소드에 대응한다. 메소드는 실행 핸들러라고도 지칭될 수 있다. 주어진 액티비티의 완전한 실행은 선행 시점에서 큐(610)에 큐잉된 실행 핸들러들의 집합의 호출 및 실행을 망라할 수 있다.
도 5의 상태 오토머튼(500)과 같은 상태 오토머튼은 워크플로우 액티비티 내의 작업 아이템들(예를 들어, 작업 아이템(622))에 대한 실행 플로우를 정의한다. 프로세서(608)는 스케쥴러(608)와 같은 컴퓨터 실행가능 명령어들의 집합 또는 컴포넌트를 통해 복수의 액티비티(606) 내의 작업 아이템들에 액세스하여, 작업 아이템(622)을 초기화하고 작업 아이템(622)을 큐(610)에 큐잉 또는 저장한다. 예를 들어, 도 6에 도시된 것과 같은 작업 아이템(622-1)은 초기화되고 큐(610) 내에 큐잉된다. 다음으로, 작업 아이템(622-1)은 실행을 위해 실행 상태(예를 들어, 도 5의 실행 상태(504))로 천이되기 전에, 디스패처(612)에 의해 큐(610)로부터 디큐잉 또는 제거된다.
일 실시예에서, 작업 아이템(622-1)은 "사용자로부터의 입력 요청"의 함수를 수행하기 위한 액티비티 메소드 또는 액티비티 연산(624), 루틴, 또는 코드들의 컬렉션을 포함한다. 하나 이상의 다른 액티비티 메소드, 액티비티 연산, 루틴 또는 코드들이 본 발명의 양태들의 범위를 벗어나지 않고서 작업 아이템(622)들 각각에 포함될 수 있다.
디스패처(612)가 작업 아이템(622)을 디스패치할 때, 프로세서(602)는 단계(614)에서 작업 아이템(622)들 각각에서 메소드(624)를 실행한다. 작업 아이템(622-1)의 예에서, 프로세서(602)는 요청된 정보 또는 데이터를 입력하기 위한 사용자 인터페이스(UI)를 사용자에게 제공할 수 있다. 다른 실시예에서, 프로세서(602)는 입력을 위해 외부 데이터 소스에 접속 또는 액세스할 수 있다. 액티비티 메소드 또는 액티비티 연산(624)이 완료되면, 프로세서(602)는 단계(616)에서 작업 아이템(622-1)의 실행을 종료한다.
다르게는, 프로세서(602)는 후속하는 검색 및 계속되는 실행을 위하여 단계(618)에서 작업 아이템(예를 들어, 작업 아이템(622-1))의 실행 상태를 데이터 저장소(620)에 패시베이트 또는 다르게 캡쳐할 수 있다.
작업 아이템(622-1)의 실행 동안의 매개변수 또는 조건에 의존하여, 작업 아이템(622-1)은 취소 상태(예를 들어, 도 5의 취소 상태(506)) 또는 폴트 상태(예를 들어, 도 5의 폴트 상태(508))로 진행할 수 있다. 일 실시예에서, 작업 아이템(422-1)은 취소 상태로부터 폴트 상태로 진행할 수 있다. 다른 실시예에서, 보상 상태(예를 들어, 도 5의 보상 상태(510))는 폴트 또는 예외가 발생할 때 수행될 연산 또는 함수들의 집합을 기술한다.
다음으로 도 7을 보면, 예시적인 흐름도는 연속-기반 런타임에 대한 추상화 실행 모델의 동작을 도시하고 있다. 본 방법은 단계(702)에서 워크플로우 내의 액 티비티와의 연관을 위해 오토머튼을 정의하는 단계를 포함한다. 정의된 오토머튼은 그에 연관된 상태들의 집합, 및 그 상태들의 집합을 통한 액티비티의 천이를 정의하는 하나 이상의 천이 조건을 갖는다. 액티비티가 한 상태로부터 다른 상태로 천이하기 전에 (또는 액티비티가 천이할 수 있게 하기 전에), 본 방법은 천이 조건을 검증하는 단계를 포함한다. 일 실시예에서, 오토머튼은 사용자, 어플리케이션 프로그램, 운영 체제 또는 기타 소스로부터 수신된다.
본 방법은, 단계(704)에서 오토머튼 내의 상태들 각각에 대응하는 하나 이상의 메소드를 정의한다. 예를 들어, 액티비티에 대한 메소드는 사용자에 의해 정의되고, 사용자로부터 런타임에서 수신되고, 그 액티비티에 연관된 오토머튼 내의 상태들 중 적어도 하나에 연관지어질 수 있다. 예를 들어, 정의된 메소드들은 액티비티를 표현하는 데이터 구조와 연관지어질 수 있다.
고정된 기능성을 갖는 관리된 실행 환경을 가상화하는 메타-런타임 엔진은, 단계(706)에서, 정의된 오토머튼 및 정의된 메소드에 기초하여 액티비티를 포함하는 프로그램 단편을 실행한다. 본 방법은, 단계(708)에서, 실행 중인 프로그램 단편에 관한 일시중지 신호를 수신하는 것과, 단계(710)에서, 수신된 일시중지 신호에 응답하여 프로그램 단편에 연관된 연속 데이터를 결정하고 그 결정된 연속 데이터를 메모리 영역에 저장하는 것을 포함한다. 연속 데이터는 프로그램 단편의 연속부를 표현한다. 본 방법은 단계(712)에서 프로그램 단편에 연관된 하나 이상의 자원을 식별하고, 그 식별된 자원을 릴리즈하는 것을 포함한다.
일 실시예에서, 프로그램 단편의 실행은 에피소드식이고, 각각의 에피소드는 연속부로서 지속된다. 연속 데이터는, 일 실시예에서 메타-런타임 엔진에 연관된 런타임 상태 및 프로그램 단편에 연관된 어플리케이션 상태를 포함하는 액티비티 실행 컨텍스트를 표현한다. 연속부에 대한 데이터 경계는, 예를 들어 주변 컨텍스트(ambient enclosing context) 내의 상태에 대한 변수들의 범위, 스코핑 및 바인딩을 결정함으로써 정의된다.
다음으로, 예를 들어 데이터가 프로그램 단편에 의해 소비될 수 있게 된 때에, 그 프로그램 단편에 재개 신호가 지향될 수 있다. 이러한 재개 신호에 응답하여, 본 방법은 메모리 영역 내에 저장된 연속 데이터에 액세스하고, 그 액세스된 연속 데이터를 실행 머신에 연관된 실행 메모리로 로딩한다. 본 방법은 단계(714)에서, 로딩된 연속 데이터에 기초하여 프로그램 단편의 실행을 재개한다. 일반적으로, 본 방법의 이러한 양태들은 프로그램 단편의 재기동 또는 재시작이라고 지칭될 수 있다.
도 2의 컴퓨터(206) 및 도 6의 프로세서(602)는 범용 컴퓨팅 장치의 예이다. 본 발명의 일 실시예에서, 컴퓨터는 도시 및 설명되는 다른 도면들에서의 설명에서의 사용에 적합하다. 컴퓨터는 하나 이상의 프로세서 또는 처리 장치와, 시스템 메모리를 포함한다. 컴퓨터는 전형적으로 적어도 소정 형태의 컴퓨터 판독가능 매체를 포함한다. 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체를 포함하는 컴퓨터 판독가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함하지만 이에 제한되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명 령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 예를 들어, 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨터(110)에 의해 액세스되고 원하는 정보를 저장할 수 있는 임의의 기타 매체를 포함한다. 통신 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 구현하고 모든 정보 전달 매체를 포함한다. 당업자라면, 신호 내에 정보를 인코딩하도록 그 신호의 특성들 중 하나 이상을 설정 또는 변경시킨 "피변조 데이터 신호"에 익숙할 것이다. 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 접속(direct-wired connection)과 같은 유선 매체, 그리고 음향, RF, 적외선, 기타 무선 매체와 같은 무선 매체를 포함한다. 상술된 매체들의 모든 조합이 또한 컴퓨터 판독가능 매체의 영역 안에 포함되는 것으로 한다.
시스템 메모리(130)는 이동식 및/또는 비이동식의 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 컴퓨터는 또한 다른 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다.
컴퓨터는 원격 컴퓨터와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있고, 통상적으로 컴퓨터와 관련하여 상술된 구성요소들의 대부분 또는 그 전부를 포함한다.
컴퓨터를 포함하는 예시적인 컴퓨팅 시스템 환경과 관련하여 설명되었지만, 본 발명의 실시예들은 수많은 다른 일반 목적 또는 특수 목적 컴퓨팅 시스템 환경 또는 구성에서 동작할 수 있다. 컴퓨팅 시스템 환경은 본 발명의 임의의 양태의 용도 또는 기능성의 범위에 관한 어떠한 제한을 제시하도록 의도된 것이 아니다. 또한, 컴퓨팅 시스템 환경은 예시적인 운영 환경에 도시된 구성요소들 중의 어느 하나 또는 그들의 조합에 관한 어떠한 종속성 또는 요구조건으로 해석되어서는 안 된다. 본 발명의 양태들에서 사용하는 데 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경 및/또는 구성의 예로는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드-헬드 또는 랩톱 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그램가능한 가전제품, 이동 전화기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템들이나 장치들 중 임의의 것을 포함하는 분산 컴퓨팅 환경, 기타 등등이 있지만 이에 제한되는 것은 아니다.
본 발명의 실시예들은 일반적으로 하나 이상의 컴퓨터 또는 기타 장치에 의해 실행되는 하나 이상의 컴포넌트 또는 프로그램 모듈로 조직된 컴퓨터 실행가능 명령어와 관련하여 기술될 것이다. 컴퓨터의 데이터 프로세서는 컴퓨터의 다양한 컴퓨터 판독가능 저장 매체에 서로 다른 시간들에 저장된 컴퓨터 실행가능 명령어들에 의해 프로그래밍될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수 행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 개체, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명의 양태들은 그러한 컴포넌트들 또는 모듈들의 임의의 개수 및 조직으로 구현될 수 있다. 예를 들어, 본 발명의 양태들은 도면들에 도시되고 명세서에 설명된 특정 컴퓨터 실행가능 명령어나 특정 컴포넌트 또는 모듈로 제한되지 않는다. 본 발명의 다른 실시예들은 여기에 도시 및 설명된 것보다 더 많거나 더 적은 기능성을 갖는 다양한 컴퓨터 실행가능 명령어 또는 컴포넌트를 포함할 수 있다. 동작 시에, 컴퓨터는 본 발명의 양태들을 구현하기 위하여 도면들에 도시된 것과 같은 컴퓨터 실행가능 명령어들을 실행한다. 본 발명의 양태들은 통신 네트워크를 통해 연결되어 있는 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서도 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 비롯한 로컬 및 원격 컴퓨터 저장 매체 둘다에 위치할 수 있다.
소프트웨어 아키텍쳐 문맥에서의 인터페이스는 소프트웨어 모듈, 컴포넌트, 코드 부분, 또는 컴퓨터 실행가능 명령어들의 다른 시퀀스를 포함한다. 예를 들어, 인터페이스는 제1 모듈이 제2 모듈에 액세스하여 제1 모듈을 대신하여 컴퓨팅 태스크를 수행하게 하는 것을 포함한다. 일례에서, 제1 및 제2 모듈은 운영 체제에 의해 제공되는 것과 같은 어플리케이션 프로그램 인터페이스(API), (예를 들어, 피어-투-피어 어플리케이션 통신을 위한) 컴포넌트 오브젝트 모델(COM) 인터페이스, 및 (예를 들어 웹 서비스들 간의 통신을 위한) 확장 마크업 언어 메타데이터 인터체인지 포맷(XMI) 인터페이스를 포함한다. 인터페이스는 Java 2 플랫폼 엔터 프라이즈 에디션(J2EE), COM 또는 분산형 COM(DCOM) 예에서와 같이 밀접하게(tightly) 결합된 동기 구현일 수 있다. 대안적으로, 또는 추가적으로, 인터페이스는 (예를 들어, 심플 오브젝트 액세스 프로토콜을 사용하는) 웹 서비스에서와 같이 느슨하게 결합된 비동기 구현일 수 있다. 일반적으로, 인터페이스는 다음의 특성들 -밀접한 결합, 느슨한 결합, 동기 및 비동기- 의 임의의 조합을 포함할 수 있다. 또한, 인터페이스는 표준 프로토콜, 전용 프로토콜, 또는 표준 및 전용 프로토콜의 임의의 조합을 따를 수 있다. 여기에 설명되는 인터페이스들은 전부 단일 인터페이스의 일부일 수도 있고, 별개의 인터페이스들로 구현되거나 임의의 조합으로 구현될 수도 있다. 인터페이스는 국지적으로 또는 원격으로 실행하여 기능성을 제공할 수 있다. 또한, 인터페이스는 여기에 도시 또는 설명된 것보다 많거나 적은 기능성을 포함할 수 있다.
이하의 예들은 본 발명의 실시예들을 더 설명한다. 컴파일시 다수의 자식 액티비티들이 알려져 있지 않을 때, 제어 흐름은 본질적으로 동적인 것으로 간주된다. 예를 들어, 전형적인 문서 리뷰 프로세스를 모델링하는 컴포지트 액티비티는 프리미티브 리뷰어 액티비티들의 집합을 동시에 실행함으로써 리뷰어들에게 메시지를 송신한다. 그러나, 프로그램이 작성될 당시에는 리뷰어들의 수가 정적으로(statically) 알려져 있지 않을 수 있고, 따라서 컴포지트 액티비티의 자식의 정확한 양은 그 당시에는 구성될 수 없다. 그러한 경우에서, 컴포지트 액티비티는 이용가능한 실제 검토자들에 기초하여 실행시 동적 인스턴스들의 집합을 생성하기 위한 템플릿으로서 기능하는 단일 검토자 액티비티로 구성된다. 이러한 구성들의 제어 흐름 양태들이 본질적으로 동적일 뿐만 아니라, 국지성(locality) 및 바인딩(bindings)을 비롯한 런타임 상태 또한 동적이다. 예를 들어, 상태 머신을 모델링하는 액티비티는 상태를 표현하는 자식 액티비티들의 집합으로 구성된다. 각각의 상태 액티비티는 주어진 시점에서 동결된 상태 머신 또는 메타-프로그램의 상태를 표현하는 연속부이다. 연속부는 본 발명의 양태들에 의해 임의의 순서로 복수회 실행될 수 있다.
루프 구성(looping constructs)은 동적 제어 흐름의 특수한 경우로 볼 수 있다. 예를 들어, ForEach 구성을 모델링하는 액티비티의 시멘틱스(semantics)는, 각각의 반복이 ForEach 액티비티 내에 포함된 상태에 대한 별개의 스코프(distinct scope)를 생성해야 함을 기술한다. 상태의 스코핑(scoping)은 상태의 국지성, 스코프들에 걸친 상태들의 바인딩 또는 참조 무결성(referential integrity)의 관리, 및 주어진 스코프 내에 포함된 상태의 범위 또는 수명의 관리를 포함한다. 본 발명의 양태들에서, 프로그램 상태는 프로그램 트리 내의 액티비티들의 필드 및 종속성 속성과 관련하여 캡쳐된다. 이러한 방식으로, 루프 구성을 모델링하는 액티비티들에 대한 로컬(locals) 또는 임시 변수(temporary variables)의 개념이, 액티비티들의 인스턴스들을 동적으로 효과적으로 발생시킴으로써 생성된다. 이것은 루프의 바디(body)를 표현하는 템플릿 액티비티에 기초하여 반복의 로컬 상태를 캡쳐한다.
또한, 비지속성(non-durable)/비트랜잭션(non-transactional)의 프로그래밍 환경에서의 프로그램 구성과 달리, 액티비티들은 후속 프로그램 실행 동안 보상될 것을 요청할 수 있다. 예를 들어, DoWhile 액티비티의 성공적으로 완료된 반복은, 그것의 부모 액티비티가 폴트인 경우 그 라이프사이클에서의 나중 시점에서 보상될 수 있다. 본 발명의 양태들은 각각의 반복에 대응하는 액티비티의 실행 상태를 연속부로서 캡쳐하여 저장함으로써, 각각의 반복에 대해 그러한 보상을 가능하게 한다(예를 들어, 실행취소 시멘틱스를 구현). 저장된 실행 상태를 표현하는 연속부는, 액티비티들 중 임의의 것에 연관된 보상 메소드가 실행을 시도할 때, 실행의 원래 상태가 이용가능해지도록 하기 위해 나중에 호출될 수 있다.
여기에 도시 및 설명된 본 발명의 실시예들에서의 실행의 순서 또는 동작의 수행은 다르게 지정되지 않는 한 필수적인 것이 아니다. 즉, 동작들은 다르게 지정되지 않는 한 어떠한 순서로도 수행될 수 있으며, 본 발명의 실시예들은 여기에 개시된 것보다 더 많거나 더 적은 동작들을 포함할 수 있다. 예를 들어, 본 발명의 양태들의 범위를 벗어나지 않고서, 특정 동작을 다른 동작보다 먼저, 다른 동작과 함께, 다른 동작 이후에 실행 또는 수행하는 것이 예상된다.
본 발명의 양태들 또는 그 실시예들의 구성요소들을 소개할 때, 수사를 사용하지 않은 것, "그" 및 "상기"라는 표현을 사용한 것은 하나 이상의 구성요소가 있다는 것을 의미하도록 의도된 것이다. "포함한다", "구성된다", "갖는다"라는 용어는 포괄적인 의미로 의도되었으며, 나열된 구성요소들 이외의 추가 구성요소들이 있을 수 있음을 의미한다.
본 발명의 양태들이 상세하게 설명되었지만, 첨부된 특허청구범위에 정의된 대로 본 발명의 양태들의 범위를 벗어나지 않고서 수정 및 변형이 가능함을 분명히 알 것이다. 본 발명의 양태들의 범위를 벗어나지 않고서 상기 구성, 제품 및 방법들에 다양한 변경이 이루어질 수 있으므로, 상기 설명에 포함되고 첨부 도면들에 도시된 모든 내용은 제한적인 의미가 아니라 예시적인 것으로 해석되어야 한다.

Claims (20)

  1. 워크플로우 내의 실세계 프로세스들을 모델링하는 방법으로서,
    워크플로우 내의 액티비티(606)와의 연관을 위해 오토머튼(automaton)(500)을 정의하는 단계 -상기 정의된 오토머튼(500)은 그에 연관된 상태들의 집합을 가짐-,
    상기 오토머튼(500) 내의 상태들 각각에 대응하는 하나 이상의 메소드(method)들을 정의하는 단계 -상기 정의된 메소드들은 상기 액티비티(606) 내의 데이터 구조와 연관지어짐-,
    고정된 기능성을 갖는 관리된 실행 환경(106)을 가상화(virtualizing)하는 메타-런타임 엔진(meta-runtine engine)(202)에 의해, 상기 정의된 오토머튼(500) 및 상기 정의된 메소드들에 기초하여 상기 액티비티(606)를 포함하는 프로그램 단편을 실행하는 단계,
    상기 실행되는 프로그램 단편에 대한 일시중지 신호(suspension signal)를 수신하는 단계,
    상기 수신된 일시중지 신호에 응답하여 상기 프로그램 단편에 연관된 연속 데이터(continuation data)(210)를 결정하는 단계 -상기 연속 데이터(210)는 상기 프로그램 단편의 연속부를 표현함-,
    상기 결정된 연속 데이터(210)를 메모리 영역(208)에 저장하는 단계,
    상기 프로그램 단편에 연관된 하나 이상의 자원을 식별하는 단계, 및
    상기 식별된 자원을 릴리즈(release)하는 단계
    를 포함하는 실세계 프로세스 모델링 방법.
  2. 제1항에 있어서,
    상기 프로그램 단편에 관한 재개 신호(resumption signal)를 수신하는 단계,
    상기 메모리 영역 내에 저장된 상기 연속 데이터에 액세스하는 단계,
    상기 액세스된 연속 데이터를 실행 머신에 연관된 실행 메모리에 로딩하는 단계, 및
    상기 로딩된 연속 데이터에 기초하여 상기 프로그램 단편의 실행을 재개하는 단계
    를 포함하는 실세계 프로세스 모델링 방법.
  3. 제1항에 있어서,
    실행 머신은 관리된 실행 환경의 다음과 같은 양태들: 도메인 특정 op 코드, 스레드, 동기화 프리미티브, 실행 머신, 개체 수명, 소스 포맷, 예외(exception), 폴트(fault), 폴트 전파(fault propagation), 및 폴트 핸들링 중 하나 이상을 가상화하도록 동작하는 실세계 프로세스 모델링 방법.
  4. 제1항에 있어서, 상기 하나 이상의 메소드를 정의하는 단계는, 상기 액티비티에 연관된 상기 오토머튼 내의 상태들 중 적어도 하나와의 연관을 위해 메소드들 을 사용자로부터 수신하는 단계를 포함하는 실세계 프로세스 모델링 방법.
  5. 제1항에 있어서,
    상기 오토머튼은 상기 상태들의 집합을 통한 상기 액티비티의 천이를 정의하는 하나 이상의 천이 조건을 포함하고,
    상기 방법은, 상기 액티비티가 상기 상태들을 통해 천이할 수 있게 하기 전에, 상기 천이 조건들을 검증하는 단계를 더 포함하는 실세계 프로세스 모델링 방법.
  6. 제1항에 있어서,
    하나 이상의 컴퓨터 판독가능 매체가 제1항에 따른 방법을 수행하기 위한 컴퓨터 실행가능 명령어들을 갖는 실세계 프로세스 모델링 방법.
  7. 워크플로우 내의 실세계 프로세스들을 모델링하기 위한 시스템으로서,
    프로그램 단편의 연속부를 표현하는 연속 데이터(210)를 저장하기 위한 메모리 영역(208) -상기 프로그램 단편은 워크플로우 내의 액티비티(606)에 연관지어지고, 상기 메모리 영역(208)은 고정된 기능성을 갖는 관리된 실행 환경(106)을 가상화하기 위한 메타-런타임 엔진(202)을 더 저장하고, 상기 메타-런타임 엔진(202)은 연관된 상태들의 집합을 갖는 오토머튼(500)을 표현하는 실행 머신을 갖고, 하나 이상의 메소드들은 상기 상태들 각각에 대응하고, 상기 메소드들은 상기 액티비 티(606)를 표현하는 데이터 구조에 연관지어지고, 상기 메타-런타임 엔진(202)은 상기 실행 머신에 기초하여 상기 프로그램 단편을 실행함-, 및
    실행되는 프로그램 단편에 연관된 연속 데이터(210)를 캡처하고, 상기 캡처된 연속 데이터(210)를 상기 메모리 영역(208) 내에 저장하고, 상기 프로그램 단편에 연관된 하나 이상의 자원을 릴리즈하기 위한 컴퓨터 실행가능 명령어들을 실행하도록 구성된 프로세서(602)
    를 포함하는 실세계 프로세스 모델링 시스템.
  8. 제7항에 있어서,
    상기 캡쳐 및 상기 저장은, 상기 프로그램 단편을 피클링(pickling)하는 것, 상기 프로그램 단편을 퇴거시키는 것, 상기 프로그램 단편을 탈수(dehydrating)시키는 것, 및 상기 프로그램 단편을 언로딩하는 것 중 하나 이상에 대응하는 실세계 프로세스 모델링 시스템.
  9. 제7항에 있어서, 상기 메타-런타임 엔진은 상기 관리된 실행 환경으로부터, 스레드, 스택 및 힙(heap) 중 하나 이상을 이용하는 실세계 프로세스 모델링 시스템.
  10. 제7항에 있어서,
    상기 연속 데이터는 다음으로 실행 일정이 잡힌 예외 핸들러(exception handler)를 식별하는 프로그램 카운터를 포함하는 실세계 프로세스 모델링 시스템.
  11. 제7항에 있어서,
    상기 메모리 영역은 어플리케이션 상태 및 런타임 상태를 포함하는 연속 데이터를 저장하는 실세계 프로세스 모델링 시스템.
  12. 제11항에 있어서,
    상기 어플리케이션 상태는 액티비티 개체들의 리스트를 포함하는 실세계 프로세스 모델링 시스템.
  13. 제11항에 있어서, 상기 런타임 상태는 프로그램 카운터를 포함하는 실세계 프로세스 모델링 시스템.
  14. 제7항에 있어서,
    상기 프로세서는,
    상기 메모리 영역 내에 저장된 상기 연속 데이터에 액세스하고,
    상기 액세스된 연속 데이터를 상기 메타-런타임에 연관된 실행 메모리에 로딩하고,
    상기 로딩된 연속 데이터에 기초하여 상기 프로그램 단편의 실행을 재개하기 위한 컴퓨터 실행가능 명령어들을 더 실행하도록 구성된 실세계 프로세스 모델링 시스템.
  15. 제14항에 있어서,
    상기 로딩 및 상기 재개는 재기동(reactivation) 및 재시작(restarting) 중 하나 이상에 대응하는 실세계 프로세스 모델링 시스템.
  16. 제7항에 있어서,
    상기 메타-런타임을 제공하기 위한 수단 및 상기 프로그램 단편에 연관된 연속부를 캡쳐하기 위한 수단을 더 포함하는 실세계 프로세스 모델링 시스템.
  17. 제7항에 있어서,
    사용자로부터 수신된 오토머튼을 더 포함하고,
    상기 메타-런타임 엔진은 상기 수신된 오토머튼에 기초하여 상기 프로그램 단편을 실행하는 실세계 프로세스 모델링 시스템.
  18. 제7항에 있어서,
    상기 오토머튼은 상기 상태들의 집합을 통한 상기 액티비티의 천이를 정의하는 하나 이상의 천이 조건을 포함하고,
    상기 시스템은, 제1 액티비티에 연관된 제1 오토머튼 및 제2 액티비티에 연관된 제2 오토머튼을 더 포함하고,
    상기 제1 액티비티의 상기 제1 오토머튼의 천이 조건은 상기 제2 액티비티의 상기 제2 오토머튼의 현재 상태에 의존하는 실세계 프로세스 모델링 시스템.
  19. 워크플로우 패시베이션(workflow passivation)을 모델링하기 위한 컴퓨터 실행가능 모듈들을 갖는 하나 이상의 컴퓨터 판독가능 매체로서,
    상기 모듈들은,
    워크플로우 내의 액티비티(606)와의 연관을 위해 오토머튼(500)을 정의하기 위한 오토머튼 모듈(212) -상기 정의된 오토머튼(500)은 그에 연관된 상태들의 집합, 및 상기 상태들 각각에 대응하는 하나 이상의 메소드들을 가짐-,
    상기 오토머튼 모듈(212)에 의해 정의된 오토머튼(500)에 기초하여 상기 액티비티(606)를 포함하는 프로그램 단편을 실행하기 위한 실행 머신 모듈(214), 및
    상기 실행 머신 모듈(214)에 의해 실행되고 있는 상기 프로그램 단편에 관한 일시중지 신호의 수신에 응답하여, 상기 프로그램 단편의 연속 데이터(210)를 캡처하고, 상기 프로그램 단편에 연관된 자원을 릴리즈하기 위한 연속 모듈(216) -상기 연속 데이터(210)는 상기 프로그램 단편의 연속부를 표현함-
    을 포함하는 컴퓨터 판독가능 매체.
  20. 제19항에 있어서,
    상기 실행 머신 모듈에 의해 실행되고 있는 상기 프로그램 단편에 관한 재개 신호의 수신에 응답하여, 상기 연속 모듈에 의해 캡쳐된 상기 프로그램 단편의 상 기 연속 데이터를 복구하기 위한 재개 모듈을 더 포함하고,
    상기 실행 머신 모듈은 상기 복구된 연속 데이터에 기초하여 상기 프로그램 단편의 실행을 재개하는 컴퓨터 판독가능 매체.
KR1020087023830A 2006-03-30 2007-02-21 실세계 프로세스들을 모델링하기 위한 방법 및 시스템과 컴퓨터 판독가능 매체 KR20080106561A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/393,345 US20070239505A1 (en) 2006-03-30 2006-03-30 Abstract execution model for a continuation-based meta-runtime
US11/393,345 2006-03-30

Publications (1)

Publication Number Publication Date
KR20080106561A true KR20080106561A (ko) 2008-12-08

Family

ID=38576580

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087023830A KR20080106561A (ko) 2006-03-30 2007-02-21 실세계 프로세스들을 모델링하기 위한 방법 및 시스템과 컴퓨터 판독가능 매체

Country Status (11)

Country Link
US (1) US20070239505A1 (ko)
EP (1) EP2013846A1 (ko)
JP (1) JP2009532754A (ko)
KR (1) KR20080106561A (ko)
CN (1) CN101416214A (ko)
AU (1) AU2007235610A1 (ko)
BR (1) BRPI0709242A2 (ko)
CA (1) CA2643329A1 (ko)
MX (1) MX2008011914A (ko)
RU (1) RU2008138698A (ko)
WO (1) WO2007117360A1 (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060288332A1 (en) * 2005-06-21 2006-12-21 Microsoft Corporation Workflow debugger
CA2620566A1 (en) 2005-08-30 2007-03-08 Boehringer Ingelheim International Gmbh Glucopyranosyl-substituted benzyl-benzene derivatives, medicaments containing such compounds, their use and process for their manufacture
US8849691B2 (en) 2005-12-29 2014-09-30 Microsoft Corporation Modeling user input and interaction in workflow based applications
US7739135B2 (en) * 2006-03-30 2010-06-15 Microsoft Corporation Asynchronous fault handling in process-centric programs
US8078555B2 (en) * 2007-12-14 2011-12-13 Microsoft Corporation Decoupling static program data and execution data
US8181155B2 (en) * 2008-02-29 2012-05-15 Microsoft Corporation Unified expression and location framework
US8161492B2 (en) * 2008-04-15 2012-04-17 Microsoft Corporation Continuation based runtimes in transactions
US10417051B2 (en) * 2008-05-23 2019-09-17 International Business Machines Corporation Synchronizing shared resources in an order processing environment using a synchronization component
US8255451B2 (en) * 2008-09-17 2012-08-28 Microsoft Corporation Technologies for detecting erroneous resumptions in a continuation based runtime
US8336035B2 (en) * 2008-12-16 2012-12-18 Microsoft Corporation Customizable dynamic language expression interpreter
US9354847B2 (en) 2008-12-29 2016-05-31 Microsoft Technology Licensing, Llc Interface infrastructure for a continuation based runtime
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
US8307368B2 (en) * 2009-05-26 2012-11-06 Microsoft Corporation Locality-based scheduling in continuation-based runtimes
US8863001B2 (en) 2010-06-11 2014-10-14 Microsoft Corporation Web application home button
US9164671B2 (en) * 2010-06-11 2015-10-20 Microsoft Technology Licensing, Llc Web application navigation domains
US8671384B2 (en) 2010-06-11 2014-03-11 Microsoft Corporation Web application pinning including task bar pinning
US8793650B2 (en) 2010-06-11 2014-07-29 Microsoft Corporation Dynamic web application notifications including task bar overlays
US9536264B2 (en) 2011-11-14 2017-01-03 Microsoft Technology Licensing, Llc Host agnostic messaging in a continuation based runtime
US8869107B2 (en) 2012-01-12 2014-10-21 Microsoft Corporation Declarative dynamic control flow in continuation-based runtime
US9292342B2 (en) 2012-12-26 2016-03-22 Microsoft Technology Licensing, Llc Schedule based execution with extensible continuation based actions
US9317323B2 (en) 2012-12-26 2016-04-19 Microsoft Technology Licensing, Llc Dynamic execution log in a distributed system
WO2014142949A1 (en) * 2013-03-15 2014-09-18 Intel Corporation Identification and management of unsafe optimizations
EP3025280A4 (en) * 2013-05-21 2017-03-15 Citrix Systems Inc. User-defined workflows in app-based collaborative workspace system
US9304888B2 (en) 2013-06-25 2016-04-05 Microsoft Technology Licensing, Llc Consistent modeling and execution of time constructs in business processes
CN106611297A (zh) * 2015-10-21 2017-05-03 中兴通讯股份有限公司 工作流异常处理方法及系统
CN106250227A (zh) * 2016-08-02 2016-12-21 合肥奇也信息科技有限公司 一种寻求计算机程序执行定义目标的方法
EP3948533A1 (en) * 2019-03-27 2022-02-09 Amazon Technologies Inc. Continuation workflows
US11467858B2 (en) * 2019-03-27 2022-10-11 Amazon Technologies, Inc. Techniques for performing continuation workflows
US11366681B2 (en) 2019-03-27 2022-06-21 Amazon Technologies, Inc. Chaining virtual machines

Family Cites Families (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5301320A (en) * 1991-06-28 1994-04-05 Digital Equipment Corporation Workflow management and control system
US5390282A (en) * 1992-06-16 1995-02-14 John R. Koza Process for problem solving using spontaneously emergent self-replicating and self-improving entities
AU6133594A (en) * 1993-02-08 1994-08-29 Action Technologies, Inc. Method and apparatus for managing business processes
US5734837A (en) * 1994-01-14 1998-03-31 Action Technologies, Inc. Method and apparatus for building business process applications in terms of its workflows
US5485620A (en) * 1994-02-25 1996-01-16 Automation System And Products, Inc. Integrated control system for industrial automation applications
EP0697652A1 (en) * 1994-08-16 1996-02-21 International Business Machines Corporation Method for re-executing a process on a computer system for fault correction
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
WO1997023837A2 (en) * 1995-12-22 1997-07-03 Xerox Corporation Process support using system and user states
US5960200A (en) * 1996-05-03 1999-09-28 I-Cube System to transition an enterprise to a distributed infrastructure
US6427063B1 (en) * 1997-05-22 2002-07-30 Finali Corporation Agent based instruction system and method
DE19712946A1 (de) * 1996-05-30 1997-12-04 Ibm Methode zum Generieren einer Implementierung wiederverwendbarer Teile von Containern eines Workflow-Prozessmodells
US5930512A (en) * 1996-10-18 1999-07-27 International Business Machines Corporation Method and apparatus for building and running workflow process models using a hypertext markup language
US6028999A (en) * 1996-11-04 2000-02-22 International Business Machines Corporation System and method for non-sequential program statement execution with incomplete runtime information
EP0854431A3 (en) * 1997-01-20 2001-03-07 International Business Machines Corporation Events as activities in process models of workflow management systems
US6158044A (en) * 1997-05-21 2000-12-05 Epropose, Inc. Proposal based architecture system
US6016394A (en) * 1997-09-17 2000-01-18 Tenfold Corporation Method and system for database application software creation requiring minimal programming
US6807583B2 (en) * 1997-09-24 2004-10-19 Carleton University Method of determining causal connections between events recorded during process execution
US6961954B1 (en) * 1997-10-27 2005-11-01 The Mitre Corporation Automated segmentation, information extraction, summarization, and presentation of broadcast news
US6115646A (en) * 1997-12-18 2000-09-05 Nortel Networks Limited Dynamic and generic process automation system
US6081665A (en) * 1997-12-19 2000-06-27 Newmonics Inc. Method for efficient soft real-time execution of portable byte code computer programs
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
US6567783B1 (en) * 1998-06-05 2003-05-20 I2 Technologies Us, Inc. Communication across one or more enterprise boundaries regarding the occurrence of a workflow event
US6728947B1 (en) * 1998-06-05 2004-04-27 R. R. Donnelley & Sons Company Workflow distributing apparatus and method
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
US6587969B1 (en) * 1998-06-22 2003-07-01 Mercury Interactive Corporation Software system and methods for testing the functionality of a transactional server
JP2003528358A (ja) * 1998-08-24 2003-09-24 富士通株式会社 ワークフローシステムおよび方法
US6606740B1 (en) * 1998-10-05 2003-08-12 American Management Systems, Inc. Development framework for case and workflow systems
US6519595B1 (en) * 1999-03-02 2003-02-11 Nms Communications, Inc. Admission control, queue management, and shaping/scheduling for flows
US6789054B1 (en) * 1999-04-25 2004-09-07 Mahmoud A. Makhlouf Geometric display tools and methods for the visual specification, design automation, and control of adaptive real systems
US6678882B1 (en) * 1999-06-30 2004-01-13 Qwest Communications International Inc. Collaborative model for software systems with synchronization submodel with merge feature, automatic conflict resolution and isolation of potential changes for reuse
US6405364B1 (en) * 1999-08-31 2002-06-11 Accenture Llp Building techniques in a development architecture framework
US7020697B1 (en) * 1999-10-01 2006-03-28 Accenture Llp Architectures for netcentric computing systems
US7412462B2 (en) * 2000-02-18 2008-08-12 Burnside Acquisition, Llc Data repository and method for promoting network storage of data
AU2001242320A1 (en) * 2000-03-30 2001-10-15 Ideogramic Aps Method for gesture based modeling
US6768986B2 (en) * 2000-04-03 2004-07-27 Business Objects, S.A. Mapping of an RDBMS schema onto a multidimensional data model
US6964034B1 (en) * 2000-04-20 2005-11-08 International Business Machines Corporation Application development server and a mechanism for providing different views into the same constructs within a strongly encapsulated environment
US6918053B1 (en) * 2000-04-28 2005-07-12 Microsoft Corporation Compensation framework for long running transactions
US6845507B2 (en) * 2000-05-18 2005-01-18 Ss & C Technologies, Inc. Method and system for straight through processing
US6971096B1 (en) * 2000-05-19 2005-11-29 Sun Microsystems, Inc. Transaction data structure for process communications among network-distributed applications
US20020032692A1 (en) * 2000-09-08 2002-03-14 Atsuhito Suzuki Workflow management method and workflow management system of controlling workflow process
US6604104B1 (en) * 2000-10-02 2003-08-05 Sbi Scient Inc. System and process for managing data within an operational data store
AU2002211405A1 (en) * 2000-10-02 2002-04-15 International Projects Consultancy Services, Inc. Object-based workflow system and method
US6954747B1 (en) * 2000-11-14 2005-10-11 Microsoft Corporation Methods for comparing versions of a program
US7653566B2 (en) * 2000-11-30 2010-01-26 Handysoft Global Corporation Systems and methods for automating a process of business decision making and workflow
US7174534B2 (en) * 2001-01-22 2007-02-06 Symbol Technologies, Inc. Efficient system and method for running and analyzing multi-channel, multi-modal applications
US7240324B2 (en) * 2001-02-28 2007-07-03 Hewlett-Packard Development Company, L.P. Event-based scheduling method and system for workflow activities
US20020147606A1 (en) * 2001-03-14 2002-10-10 Norbert Hoffmann Application development method
US20030004746A1 (en) * 2001-04-24 2003-01-02 Ali Kheirolomoom Scenario based creation and device agnostic deployment of discrete and networked business services using process-centric assembly and visual configuration of web service components
CA2347647A1 (en) * 2001-05-15 2002-11-15 Ibm Canada Limited-Ibm Canada Limitee Storing and restoring snapshots of a computer process
US7089561B2 (en) * 2001-06-01 2006-08-08 Microsoft Corporation Methods and systems for creating and communicating with computer processes
US20020188644A1 (en) * 2001-06-08 2002-12-12 Verano Workflow automated task component manager
US7069536B2 (en) * 2001-06-28 2006-06-27 International Business Machines Corporation Method, system, and program for executing a workflow
US6898604B1 (en) * 2001-06-29 2005-05-24 Microsoft Corporation XML serialization and deserialization
US20030018508A1 (en) * 2001-07-19 2003-01-23 Schwanke Robert W. Data-triggered workflow processes
AU2002355575A1 (en) * 2001-08-08 2003-02-24 Trivium Systems Inc. Scalable messaging platform for the integration of business software components
US6985939B2 (en) * 2001-09-19 2006-01-10 International Business Machines Corporation Building distributed software services as aggregations of other services
US20030177046A1 (en) * 2001-12-03 2003-09-18 John Socha-Leialoha Method and system for reusing components
US7089287B2 (en) * 2002-01-16 2006-08-08 Xerox Corporation Message-based system having embedded information management capabilities
US20030144891A1 (en) * 2002-01-26 2003-07-31 International Business Machines Corporation Supervising the processing status of activities within workflow management systems
US7240330B2 (en) * 2002-02-01 2007-07-03 John Fairweather Use of ontologies for auto-generating and handling applications, their persistent storage, and user interfaces
US7516447B2 (en) * 2002-02-22 2009-04-07 Bea Systems, Inc. Methods and apparatus for building, customizing and using software abstractions of external entities
US7441197B2 (en) * 2002-02-26 2008-10-21 Global Asset Protection Services, Llc Risk management information interface system and associated methods
US20030233374A1 (en) * 2002-03-14 2003-12-18 Ulrich Spinola Dynamic workflow process
US7251689B2 (en) * 2002-03-27 2007-07-31 International Business Machines Corporation Managing storage resources in decentralized networks
US20030195762A1 (en) * 2002-04-12 2003-10-16 David Gleason Automated workflow
US7778717B2 (en) * 2002-04-15 2010-08-17 Invensys Systems, Inc. Component object model communication method for a control system
US7117484B2 (en) * 2002-04-16 2006-10-03 International Business Machines Corporation Recursive use of model based test generation for middleware validation
US7197553B2 (en) * 2002-04-19 2007-03-27 Nortel Networks Limited Network system having a virtual-service-module
US6688593B1 (en) * 2002-07-31 2004-02-10 Pitney Bowes Inc. Envelope transport turn module and ramp for an output portion of an inserter system
US20040078105A1 (en) * 2002-09-03 2004-04-22 Charles Moon System and method for workflow process management
US7398525B2 (en) * 2002-10-21 2008-07-08 International Business Machines Corporation Resource scheduling in workflow management systems
US8056046B2 (en) * 2002-10-22 2011-11-08 The Boeing Company Integrated system-of-systems modeling environment and related methods
US7437703B2 (en) * 2002-10-25 2008-10-14 Sap Ag Enterprise multi-agent software system with services able to call multiple engines and scheduling capability
US7062537B2 (en) * 2002-11-25 2006-06-13 Microsoft Corporation Workflow services architecture
US7272820B2 (en) * 2002-12-12 2007-09-18 Extrapoles Pty Limited Graphical development of fully executable transactional workflow applications with adaptive high-performance capacity
US7168077B2 (en) * 2003-01-31 2007-01-23 Handysoft Corporation System and method of executing and controlling workflow processes
CA2420479A1 (en) * 2003-02-13 2004-08-13 Ibm Canada Limited - Ibm Canada Limitee Flow debugging software and method
EP1620830A2 (en) * 2003-05-07 2006-02-01 Sap Ag An end user oriented workflow approach including structured processing of ad hoc workflows with a collaborative process engine
US20050066002A1 (en) * 2003-07-31 2005-03-24 Arnold Teres Workflow compatible healthcare information message communication system
US8645420B2 (en) * 2003-08-05 2014-02-04 Accenture Global Services Limited Methodology framework and delivery vehicle
CA2442796A1 (en) * 2003-09-26 2005-03-26 Ibm Canada Limited - Ibm Canada Limitee Binding a workflow engine to a data model
WO2005031566A2 (en) * 2003-10-02 2005-04-07 Research In Motion Limited System and method for extending capabilities and execution efficiency of script based applications
US7093207B1 (en) * 2003-11-17 2006-08-15 Kla-Tencor Technologies Corporation Data analysis flow engine
US7137033B2 (en) * 2003-11-20 2006-11-14 International Business Machines Corporation Method, system, and program for synchronizing subtasks using sequence numbers
US7308561B2 (en) * 2003-12-12 2007-12-11 Alcatel Lucent Fast, scalable pattern-matching engine
US7519960B2 (en) * 2003-12-19 2009-04-14 International Business Machines Corporation Method and system for debugging business process flow
US7650344B2 (en) * 2004-02-09 2010-01-19 Coremetrics, Inc. System and method of managing software product-line customizations
US7197502B2 (en) * 2004-02-18 2007-03-27 Friendly Polynomials, Inc. Machine-implemented activity management system using asynchronously shared activity data objects and journal data items
US8166554B2 (en) * 2004-02-26 2012-04-24 Vmware, Inc. Secure enterprise network
US20060064335A1 (en) * 2004-08-17 2006-03-23 International Business Machines Corporation Method, system, and storage medium for performing business process modeling
US20060159077A1 (en) * 2004-08-20 2006-07-20 Vanecek George Jr Service-oriented middleware for managing interoperability of heterogeneous elements of integrated systems
US20060069605A1 (en) * 2004-09-29 2006-03-30 Microsoft Corporation Workflow association in a collaborative application
US7464366B2 (en) * 2004-10-01 2008-12-09 Microsoft Corporation Programming interface for a componentized and extensible workflow model
US20060074735A1 (en) * 2004-10-01 2006-04-06 Microsoft Corporation Ink-enabled workflow authoring
US7631291B2 (en) * 2004-10-01 2009-12-08 Microsoft Corporation Declarative representation for an extensible workflow model
US20060074704A1 (en) * 2004-10-01 2006-04-06 Microsoft Corporation Framework to model cross-cutting behavioral concerns in the workflow domain
US8478616B2 (en) * 2004-10-29 2013-07-02 FrontRange Solutions USA Inc. Business application development and execution environment
US20060112122A1 (en) * 2004-11-23 2006-05-25 International Business Machines Corporation Method, system, and storage medium for implementing business process modules
US7493594B2 (en) * 2005-03-14 2009-02-17 Research In Motion System and method for designing component based applications
WO2006110981A1 (en) * 2005-04-18 2006-10-26 Research In Motion Limited System and method for enabling assisted visual development of workflow for application tasks
US20060241954A1 (en) * 2005-04-22 2006-10-26 International Business Machines Corporation Method and system for adaptive action management for business solutions

Also Published As

Publication number Publication date
CA2643329A1 (en) 2007-10-18
BRPI0709242A2 (pt) 2011-07-12
EP2013846A1 (en) 2009-01-14
MX2008011914A (es) 2008-09-29
US20070239505A1 (en) 2007-10-11
WO2007117360A1 (en) 2007-10-18
JP2009532754A (ja) 2009-09-10
CN101416214A (zh) 2009-04-22
RU2008138698A (ru) 2010-04-10
AU2007235610A1 (en) 2007-10-18

Similar Documents

Publication Publication Date Title
US8069439B2 (en) Framework for modeling continuations in workflows
KR20080106561A (ko) 실세계 프로세스들을 모델링하기 위한 방법 및 시스템과 컴퓨터 판독가능 매체
JP5297370B2 (ja) プロセス中心型プログラムにおける非同期フォールト処理
US8024405B2 (en) Declarative model for concurrency-control across lightweight threads
US20070239498A1 (en) Framework for modeling cancellation for process-centric programs
Bendraou et al. UML4SPM: An executable software process modeling language providing high-level abstractions

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