KR20080106560A - 프로세스 중심 프로그램에 대한 취소를 모델링하기 위한 방법, 시스템 및 컴퓨터 판독가능 매체 - Google Patents

프로세스 중심 프로그램에 대한 취소를 모델링하기 위한 방법, 시스템 및 컴퓨터 판독가능 매체 Download PDF

Info

Publication number
KR20080106560A
KR20080106560A KR1020087023828A KR20087023828A KR20080106560A KR 20080106560 A KR20080106560 A KR 20080106560A KR 1020087023828 A KR1020087023828 A KR 1020087023828A KR 20087023828 A KR20087023828 A KR 20087023828A KR 20080106560 A KR20080106560 A KR 20080106560A
Authority
KR
South Korea
Prior art keywords
state
activity
work items
execution
cancellation
Prior art date
Application number
KR1020087023828A
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 KR20080106560A publication Critical patent/KR20080106560A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • 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
    • 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)
  • Strategic Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Economics (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Educational Administration (AREA)
  • Game Theory and Decision Science (AREA)
  • Development Economics (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Stored Programmes (AREA)

Abstract

액티비티의 실행을 선언적으로 취소한다. 액티비티에 대한 상태 오토마톤이 규정되고, 상태 오토마톤은 실행 상태, 취소 상태 및 종료 상태를 포함하고, 액티비티의 실행 수명을 분류한다. 액티비티는 작업 아이템을 포함하고, 작업 아이템을 실행 계층 구조로 조직화한다. 작업 아이템은 실행 상태로부터, 액티비티의 각각의 작업 아이템의 실행의 완료를 나타내는 종료 상태로 천이된다. 작업 아이템들 중 하나의 작업 아이템이 종료 상태로 천이되면, 현재 실행 상태에 있는 작업 아이템으로 취소 요청이 전송된다. 실행 작업 아이템은 전송된 취소 요청 및 규정된 액티비티의 실행 계층 구조의 함수로서 식별된다. 액티비티의 실행 수명은 식별된 작업 아이템을 실행 상태로부터 취소 상태로 천이시킴으로써 취소된다.
오토마톤, 작업 아이템, 액티비티, 트리 구조, 선언적, 천이

Description

프로세스 중심 프로그램에 대한 취소를 모델링하기 위한 방법, 시스템 및 컴퓨터 판독가능 매체{FRAMEWORK FOR MODELING CANCELLATION FOR PROCESS-CENTRIC PROGRAMS}
자율적인 에이전트들 간의 현실적인(real-world) 상호작용을 모델링하는 복잡한 명령어들의 처리를 가능하게 하기 위하여 프로세스 지향(process-oriented) 프로그램 또는 프로세스 중심(process-centric) 프로그램이 발달되어 왔다. 프로세스 중심 프로그램은 현실의 프로세스를 반영하고, 현실의 엔티티들 간의 상호작용을 반영한다. 기존의 시스템은 비지니스 문제점을 모델링함으로써 비지니스 문제점들을 고레벨 작업 흐름(workflow)에 매핑하려고 한다. 그러나, 현실의 작업 흐름은, (a) 실행 및 모델링의 복잡성, (b) 설계시에 작업 흐름의 구조에 대한 지식, (c) 정적으로 또는 애드혹(ad-hoc)/동적으로 규정됨, (d) 그 라이프사이클 내의 여러 지점에서 용이하게 작업 흐름을 어서링(authoring)하고 에디트하기, 및 (e) 비지니스 로직과 핵심적인 작업 흐름 프로세스와의 약한 연관 또는 강한 연관과 같은 다양한 차원(dimensions)에서 변화된다.
또한, 대부분의 기존의 작업 흐름 모델들은 언어 기반 접근 방식(예를 들면, BPEL4WS, XLANG/S 및 WSFL) 또는 애플리케이션 기반 접근 방식 중 어느 것에 기초한다. 언어 기반 접근 방식은, 사용자/프로그래머에 대한 작업 흐름 프로세스의 모델링을 돕는 미리 규정된 구성물의 폐집합(closed set of predefined constructs)을 갖는 고레벨 작업 흐름 언어이다. 작업 흐름 언어는 사용자가 작업 흐름 모델을 구축할 수 있게 하기 위하여 구성물의 폐집합에 대한 모든 시맨틱(semantic) 정보를 전달한다. 그러나, 언어는 개발자에 의해 확장될 수 없고, 작업 흐름 모델을 구성하는 프리미티브(primitive)의 폐집합을 나타낸다. 언어는 작업 흐름 시스템 벤더에 의해 탑재되는 언어 컴파일러에 종속된다. 단지 작업 흐름 시스템 제품 벤더만이 제품의 향후 버전에서 언어를 새로운 집합의 구성물로 확장함으로써 모델을 확장할 수 있다. 이는 언어와 연관된 컴파일러의 업그레이드를 종종 필요로 한다. 또한, 언어는 다른 프로그램들에 의해 용이하고 효율적으로 사용될 수 있는 함수들 또는 연산들을 대개 선언적으로(declaratively) 노출시키거나 규정하지 않는다.
애플리케이션 기반 접근 방식은 영역 특정 문제를 해결하기 위하여 애플리케이션 내에 작업 흐름 능력을 갖는 애플리케이션이다. 이 애플리케이션은 실제로 확장할 수도 없고, 프로그램가능한 모델도 갖지 않는다.
또한, 기존의 접근 방식에 의하면, 복잡성, 예견(foreknowledge), 동적 작업 흐름, 어서링 용이성, 및 비지니스 로직과 핵심적인 작업 흐름과의 연관 강도와 같은 문제점들이 적절하게 처리되지 않는다. 상이한 클래스의 작업 흐름들을 모델링하기 위하여 시각적인 작업 흐름 설계자를 구축하는 데 이용가능한, 확장가능하고 사용자 지정 가능하고 재호스트가능한 작업 흐름 설계자 프레임워크는 존재하지 않는다. 기존의 시스템은, 사용자가 작업 흐름 프로세스를 그래픽적으로 설계하게 하고 개발업자가 선택한 프로그래밍 언어로 비지니스 로직을 연관시키게 하는 것을 허용하는 RAD(rapid application development) 스타일의 작업 흐름 설계 경험이 부족하다.
또한, 작업 흐름 프로세스는, 작업 흐름 프로세스 모델의 복수의 단계들에 걸쳐 교차 편집된(cross cutting) 수직형으로 얽혀있는 관계들(orthogonal and tangled concerns)을 다룬다. 예를 들면, 작업 흐름 프로세스의 일부는 장시간 실행되는 트랜잭션(transaction)에 참여하도록 설계되고, 동일한 프로세스의 다른 일부는 동시 실행되도록 또는 공유 리소스에 액세스하도록 설계된다. 설계의 단점 때문에, 기존의 시스템은 사용자가 액티비티들의 동기적(synchronous) 실행 또는 인터리빙(interleaving)된 실행을 설계할 수 있게 하는 실행 스레드의 인터리빙을 제공하지 못한다. 동일한 작업 흐름 프로세스의 또 다른 일부는 트래킹을 필요로 하고, 다른 일부는 비지니스 또는 애플리케이션 레벨의 익셉션(exception)을 다룬다. 작업 흐름 프로세스의 하나 이상의 부분에 소정의 거동(behavior)을 적용할 필요가 있다.
일부 작업 흐름 모델링 접근 방식들은, 모든 익셉션 및 인간의 개입(intervention)을 포함한 전체적인 비지니스 프로세스의 완전한 흐름 기반(flow-based) 설명을 필요로 하기 때문에 비실용적이다. 이들 접근 방식 중 일부는 익셉션들이 생겨남에 따라 추가적인 기능들을 제공하지만, 다른 접근 방식들은 비지니스 프로세스를 모델링하기 위하여 흐름 기반 접근 방식 대신에 오로지 제약 기반(constraint-based) 접근 방식만을 사용한다. 기존의 시스템은 흐름 기반 접근 방식 또는 제약 기반 접근 방식 중 어느 것을 구현한다. 이러한 시스템은 너무 융통성이 없기 때문에, 수많은 흔한 비지니스 상황들을 모델링할 수 없다. 또한, 이 시스템은 익셉션 또는 취소(cancellation)를 비동기적으로 다룰 수 있는 능력이 부족하다.
<발명의 개요>
본 발명의 실시예는 상태 오토마톤(automaton)에 취소 상태를 규정함으로써 프로그램에서의 취소를 모델링하기 위한 선언적인(declarative) 프레임워크를 제공한다. 또한, 본 발명의 취소 상태 및 다른 양태에 의하면, 개발자 또는 프로그램은 프로그램의 취소를 선언적으로 규정하고 프로세싱 중인 사용자에게 이를 제공할 수 있다.
또한, 본 발명의 실시예는 합성 액티비티(composite activity)(예를 들면, 계층 구조를 갖는 액티비티들의 그룹)가 하나 이상의 액티비티(예를 들면, 액티비티 트리의 자식(children) 액티비티)의 실행을 취소하는 것을 허용할 수 있다. 또한, 본 발명의 취소 구현 양태는 프로그램 및 동적 제어 흐름 내에서 조기 완료(early completion)를 모델링하는 것을 허용한다.
본 개요는 이하 실시예에서 상술되는 개념의 선택을 간략화된 형태로 도입하기 위하여 제공된다. 본 발명이 개요는 청구 대상의 핵심적인 특징 또는 본질적인 특징을 식별하기 위한 것이 아니고, 또한 청구 대상의 범위를 정하는 데 도움이 되도록 사용하기 위한 것도 아니다.
그 밖의 특징들은 이하에서 부분적으로 명백해지고 부분적으로 지적될 것이다.
도 1은 기존의 프로그래밍 패러다임을 도시하는 블록도.
도 2는 본 발명의 일 실시예에 따른 가상화된 작업 흐름 설계 프레임워크를 도시하는 블록도.
도 3은 본 발명의 일 실시예에 따른 예시적인 작업 흐름을 도시하는 예시적인 도면.
도 4는 본 발명의 일 실시예에 따른 작업 흐름 액티비티를 처리하기 위한 시스템의 예시적인 컴퓨팅 환경을 도시하는 도면.
도 5는 본 발명의 일 실시예에 따른 작업 흐름 액티비티의 계층 구조를 도시하는 도면.
도 6은 본 발명의 일 실시예에 따른 액티비티와 연관된 작업 아이템의 처리 상태를 설명하는 예시적인 상태 오토마톤을 도시하는 도면.
도 7A 내지 7E는 본 발명의 일 실시예에 따른 액티비티의 작업 아이템의 선언적인 취소를 도시하는 블록도.
도 8은 본 발명의 일 실시예에 따라 작업 흐름의 액티비티의 작업 아이템을 취소하기 위한 방법을 도시하는 흐름도.
도 9는 본 발명의 양태가 저장될 수 있는 예시적인 컴퓨터 판독 가능 매체를 도시하는 블록도.
대응하는 참조 문자들은 도면 전반에 걸쳐 대응하는 부분들을 나타낸다.
도 1을 참조하면, 블록도는 작업 흐름과 같은 프로세스 중심 액티비티에 대한 프로그램을 설계하기 위한 기존 프로그래밍 패러다임을 도시한다. 예를 들면, 본 도면은 기존의 프로그램 패러다임의 3 레벨 가상화 모델을 도시하고 있으며, 이 모델은, 관리 실행 환경(managed execution environment)의 레벨이 최상위 레벨이고, 처리 장치가 최하위 레벨이다. 이 프로그래밍 설계 시스템에서는, 관리 실행 환경 레벨에서조차도, 프로그램, 특히 작업 흐름 프로세스를 다루는 프로세스 중심 프로그램에 작업 흐름의 프로세스들 간의 복잡한 상호작용을 수용하기 위한 능력 및 효율이 부족하다.
소프트웨어 또는 애플리케이션 프로그램을 설계하는 것과 연관되어 소정의 제약이 있다는 것은 당업자에 의해 알려져 있다. 이 예에서, 운영 체제 소프트웨어 프로그램(104)을 작성할 때, 프로그래밍 코드 또는 루틴은 컴퓨팅 아키텍쳐의 유형(예를 들면, IBM® 호환형, APPLE® 컴퓨터 또는 기타 시스템)에 특정된 처리 장치(102)의 유형 또는 구성, 또는 기타 제약 조건에 의존된다. 또한, 프로그래밍 언어는 운영 체제(104)가 적절하게 기능하기 위하여 통상적으로 스택, 힙(heap), 스레드 베이스, 또는 기타 하드웨어 특정 구조와 같은 데이터 구조를 정확하게 식별하고 사용할 필요가 있다.
복잡한 작업 흐름 프로세스를 다루는 데 있어서, 기존의 애플리케이션은 관리 실행 환경(106)(예를 들면, 프로그램이 함수 또는 공통의 객체 지향(object- oriented) 클래스를 공유할 수 있는 런타임 환경)의 개념을 사용하며, 이 환경에서는 하나의 프로그래밍 언어로 작성된 프로그램이 다른 프로그래밍 언어로 작성된 다른 프로그램의 함수를 호출할 수 있다. 이러한 실행 환경에서, 관리 실행 환경(106)이 파라미터, 인수 또는 스키마 또는 함수를 서로 다른 프로그램들에 노출시켜 그 프로그램들이 서로 상호작용할 수 있도록, 서로 다른 프로그래밍 언어들로 된 이 프로그램들은 중간 언어(intermediate language)로 컴파일된다.
이 실행 환경(106)은 프로그램들 간의 공통의 통신 환경을 생성하지만, 실행 환경(106)은 프로세스 중심 프로그램의 복잡성 및 성능을 다루는 데 적절하지 않을 수 있는 여러 가지 엄격한 요구 사항을 포함한다. 예를 들면, 실행 환경(106)은 프로그램이 특정한 파일 포맷으로 확인(confirm)될 것을 필요로 한다. 또한, 실행 환경(106)은 그 프로그램 내의 함수 또는 연산이 고정된 집합의 함수, 또는 실행 환경(106)에 의해 규정되는 함수들의 클래스를 사용할 것을 요구한다.
본 발명의 실시예는 기존의 프로그래밍 모델의 단점을 극복하기 위하여 도 2에 도시된 확장가능한 파운데이션 또는 프레임워크(202) 상에 구축된다. 프로그램이 임의의 프로그래밍 언어로 작성되고 임의의 파일 포맷으로 구성되는 것을 허용함으로써, 본 발명의 양태는 프로그램 개발자가 그 기능 및 상세는 손상시키지 않으면서 특정한 함수를 사용하여 프로그램을 설계하게 할 수 있다. 작업 흐름 태스크 또는 프로세스와 같은 액티비티를 작업 흐름 프레임워크에서 실행될 기본 클래스로서 규정함으로써, 개발업자는 기존 실행 환경의 엄격하고 하드코딩(hard-coded)되고 융통성없는 고정된 집합의 함수 또는 액티비티 클래스를 고수하지 않으 면서, 영역 특정된(예를 들면, 의료 산업, 금융 산업 등에서의 프로그램과 같은 특정한 실행 환경) 연산 코드(이하에서는, "op-code")를 용이하고 효율적으로 구축할 수 있다. 또한, 본 발명의 양태를 구현하는 작업 흐름 파운데이션은 임의의 기존 프레임워크(예를 들면, 관리 실행 환경, 운영 체제 환경 또는 하드웨어 처리 장치 레벨)의 최상위에 계층화되어 있는 연속 기반 런타임(continuation based runtime)이다.
본 발명의 양태는, 작업 흐름 내의 액티비티가 작업 흐름 설계의 리프리젠테이션으로부터 구성될 수 있기만 하다면, 임의의 형태 또는 리프리젠테이션(예를 들면, 흐름도, 도면, 번호를 부기한 설명 등)으로의 작업 흐름 설계를 허용함으로써, 특정한 파일 포맷으로 액티비티를 규정하는 것의 제약을 제거한다.
도 3은 본 발명의 일 실시예에 따른 작업 흐름(300)의 개략도를 도시한다. 예를 들면, 작업 흐름(300)은 구매 주문을 처리하기 위한 작업 흐름일 수 있고, 이 구매 주문 작업 흐름(300)은 구매 주문 수신하기, 고객에게 확인(confirmation) 전송하기, 매니저에 의해 구매 주문 승인(approve)하기 등과 같은 프로세스 또는 액티비티를 포함할 수 있다. 또한, 이 액티비티는, 일부 액티비티는 다른 액티비티와 동시에 실행되고 일부 다른 액티비티는 다른 액티비티의 완료시에만 실행될 수 있도록 시퀀스화(sequence)될 수 있다.
작업 흐름(300)은 시작점(302)부터 시작될 수 있다. 예를 들면, 구매 주문 작업 흐름에 대한 시작점(302)에서 고객으로부터 주문이 수신될 수 있다. 또한, 작업 흐름(300)은 조건문(conditional statement)(304)("IF 문" 또는 "WHILE 문" 등)을 포함할 수 있고, 이는 추가적인 조건문(306 및 308)으로 재분할(subdivide)될 수 있다. 또한, 작업 흐름(300)은 하나 이상의 시퀀스 또는 액티비티(312)를 더 포함하는 병렬 구조(310)를 포함할 수 있다. 예를 들면, 병렬 구조(310)는, 병렬로 처리되는 인벤토리(inventory) 체크, 이용가능한 운송업자(shipper) 업데이트 등과 같은 액티비티를 포함한다. 도시된 예에서는, "Send E-mail" 및 "Get Approval"과 같은 액티비티가 병렬로 처리될 수 있다. 또한, "drop activities here"(316)에서, 사용자는 더 많은 액티비티를 작업 흐름(300)에 추가하거나 보충할 수 있다. 작업 흐름(300)을 완료하기 위하여, 프로세스 또는 액티비티는 완료 단계 또는 완료점(314)에서 종료된다.
일 실시예에서, 액티비티는 트리 구조(도 5 참조)(500) 또는 기타 실행 시퀀스로 계층적으로 배치될 수 있다. 예를 들면, 액티비티는 액티비티가 그와 연관된 2 이상의 작업 아이템을 포함하는 합성 액티비티일 수 있다. 액티비티 메소드는 2개의 자식 또는 리프(leaf) 노드(504 및 506)를 갖는 루트 노드(502)에 존재할 수 있다. 또한, 자식 노드(504 및 506)(예를 들면, work item_1 및 work item_2 각각)에서의 액티비티 메소드는 계층 구조에 따라 실행될 수 있다. 또한, 자식 노드(504 및 506)는 실행될 각각의 작업 아이템을 갖는 다른 자식 노드를 포함할 수 있다.
다른 실시예에서, 액티비티는 단순 액티비티, 컨테이너 액티비티 및 루트 액티비티와 같은 유형의 하나 이상의 액티비티를 포함한다. 이 실시예에서, 모델에는 하나의 루트 액티비티가 존재하며, 루트 액티비티 내에는 단순 액티비티 또는 컨테이너 액티비티가 존재하지 않을 수도 있고, 또는 임의의 수의 단순 액티비티 또는 컨테이너 액티비티가 존재할 수도 있다. 컨테이너 액티비티는 단순 액티비티 또는 컨테이너 액티비티를 포함할 수 있다. 전체적인 작업 흐름 프로세스는 고차(higher-order) 작업 흐름 프로세스를 구축하기 위한 액티비티로서 사용될 수 있다. 또한, 액티비티는 인터럽트(interrupt)가 가능할 수도 불가능할 수도 있다. 인터럽트가 불가능한 합성 액티비티는 인터럽트가 가능한 액티비티를 포함하지 않는다. 인터럽트가 불가능한 액티비티에는 액티비티가 중단되게 하는 서비스가 없다.
또한, 액티비티 및 그 액티비티에 포함된 작업 아이템을 실행함에 있어서, 작업 흐름 프레임워크는 각각의 작업 아이템에 대한 범주(scope) 또는 경계(boundary)인 실행 컨텍스트 또는 환경을 규정한다. 이 범주 또는 경계는 작업 아이템에 의해 액세스될 공유 데이터 또는 리소스, 연관된 속성, 핸들러(handler), 제약조건 및 자율적인 에이전트들 간의 상호작용과 같은 정보를 (예를 들면, 데이터, 메타데이터 등의 형태로) 포함하고 노출시킨다. 이 범주는 계층적으로 구조화될 수 있다. 또한, 각각의 액티비티는 기초적인(underlying) 관리 프레임워크를 지원하는 임의의 프로그래밍 언어의 사용자 코드에 의해 구성될 수 있다. 예를 들면, 사용자 코드는 특정 영역 또는 실행 환경에서 작성된 비지니스 또는 애플리케이션 로직 또는 규칙을 나타낼 수 있다. 각각의 액티비티는 사용자 코드의 실행 내로의 프리인터셉션 후크(pre-interception hook) 및 포스트인터셉션 후크(post-interception hook)를 지원할 수 있다. 각각의 액티비티는 런타임 실행 시맨틱과 거동(예를 들면, 상태 관리, 트랜잭션, 이벤트 핸들링 및 익셉션 핸들링)을 연관시킨다. 액티비티는 다른 액티비티와 상태 또는 리소스를 공유할 수 있다. 또한, 액티비티는 프리미티브(primitive) 액티비티일 수도 있고 합성 액티비티로 그룹화될 수도 있다. 프리미티브 또는 기본 액티비티는 하부구조(예를 들면, 자식 액티비티)를 갖지 않으며, 따라서 트리 구조의 리프 노드이다. 합성 액티비티는 하부구조를 포함한다. (예를 들면, 하나 이상의 자식 액티비티의 부모(parent) 액티비티이다.)
도 4는 본 발명의 일 실시예에 따른 작업 흐름 액티비티를 처리하기 위한 시스템(400)을 도시하는 도면이다. 시스템(400)은 처리 장치 또는 처리 장치들의 집합일 수 있는 프로세서(402)를 포함한다. 또한, 시스템(400)은 프로세서(402)에 의해 액세스가능한 데이터를 저장하기 위하여 메모리 영역(404)을 포함한다. 일 실시예에서, 시스템(400)은 하나 이상의 프로세서 또는 처리 장치(예를 들면, 프로세서(402)), 및 시스템 메모리(예를 들면, 메모리 영역(404))를 포함하는 컴퓨터일 수 있으며, 이는 시스템 메모리를 포함한 여러 가지 시스템 컴포넌트를 프로세서(402)에 연결하기 위한 다른 컴포넌트를 포함한다.
일례에서, 메모리 영역(404)은 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보를 저장하기 위하여 임의의 방법 또는 기술로 구현되는 컴퓨터 판독 가능 매체, 즉 휘발성, 비휘발성, 이동식 또는 비이동식 매체 중 어느 것을 포함할 수 있다. 예를 들면, 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 원하는 정보를 저장하는 데 사용될 수 있고 시스템(400)에 의해 액세스될 수 있는 임의의 기타 매체를 포함한다. 또한, 메모리(404)는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)의 기타 데이터를 구현하는 통신 매체를 포함할 수 있다. 당업자는 정보를 신호로 인코딩하는 것과 같은 방식으로 하나 이상의 특징을 설정시키거나 변경시킨 피변조 데이터 신호와 친숙하다. 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체, 및 음향, RF, 적외선 및 기타 무선 매체와 같은 무선 매체가 통신 매체의 예들이다. 또한, 상기의 임의의 조합도 컴퓨터 판독가능 매체의 범주 내에 포함된다.
일례에서, 메모리 영역(404)은 작업 흐름(예를 들면, 작업 흐름(300))에서 처리하기 위한 복수의 액티비티(406)를 저장한다. 복수의 액티비티(406) 각각은 하나 이상의 작업 아이템을 포함하고, 작업 아이템은 트리 구조(도 5 참조)와 같은 계층 구조로 조직화될 수 있다. 복수의 액티비티(406)를 처리함에 있어서, 프로세서(402)는 조직화된 액티비티의 세트를 셋업하기 위하여 구성되는 스케쥴러(408)에 액세스하거나 이를 실행한다.
예를 들면, 프로세서(408)는 작업 아이템(422)을 큐(queue)(410)에 인큐(enqueue)하거나 저장하기 위하여 스케쥴러(408)와 같은 컴포넌트 또는 컴퓨터 실행가능 명령어의 세트를 통해 복수의 액티비티(406) 내의 작업 아이템에 액세스 한다. 프로세서(402)에 의해 액세스가능한 디스패처(dispatcher)(412)는 실행을 위해 작업 아이템(422)을 디스패치한다. 예를 들면, 작업 아이템(422-1)은 "사용자로부터 입력 요청(requesting input from a user)"의 기능을 실행하기 위하여 액티비티 메소드(424), 루틴 또는 코드의 집합을 포함할 수 있다. 하나 이상의 다른 액티비티 메소드, 루틴 또는 코드가 본 발명의 범주를 벗어나지 않고도 각각의 작업 아이템(422)에 포함될 수 있다.
작업 아이템(422)이 디스패처(412)에 의해 디스패치되고 나면, 프로세서(402)는 블록(414)에서 작업 아이템(422)의 각각의 메소드(424)를 실행한다. 작업 아이템(422-1)의 예에서, 프로세서(402)는 요청되는 정보 또는 데이터를 입력하도록 사용자 인터페이스(UI)를 사용자에게 제공할 수 있다. 다른 실시예에서, 프로세서(402)는 사용자로부터 입력을 요청하기 위하여 외부 데이터 소스에 접속되거나 이에 액세스할 수 있다. 액티비티 메소드(424)를 완료하면, 프로세서(402)는 블록(416)에서 작업 아이템(422)의 실행을 종료한다. 일 실시예에서, 프로세서(402)는 블록(418)에서 작업 아이템의 실행 상태를 데이터 저장소(420)에 페시배이트(passivate)한다.
다른 실시예에서, 프로세서(402)는 도 6에 도시된 오토마톤과 같은 상태 오토마톤에 따라 작업 아이템(422)을 실행하며, 여기서 도 6은 본 발명의 일 실시예에 따른 액티비티와 연관된 작업 아이템의 처리 상태를 나타내는 예시적인 상태 오토마톤(600)을 도시하는 도면이다. 일 실시예에서, 상태 오토마톤(600)은 액티비티의 실행 수명(execution lifetime)을 규정한다. 일례에서, 상태 오토마톤(600) 은 (도 4에 도시되어 있는 바와 같은) 초기화 상태, 실행 상태 및 종료 상태(closed state)를 포함할 수 있다. 다른 실시예에서, 상태 오토마톤(600)은 초기화 상태(602), 실행 상태(604), 취소 상태(606), 폴팅(faulting) 상태(608), 보상(compensating) 상태(610) 및 종료 상태(612)를 포함한다.
예를 들면, 상태 오토마톤(600)은 작업 흐름 액티비티 내의 작업 아이템(예를 들면, 작업 아이템(422))의 실행의 프로세스 흐름을 나타낸다. 도 4에 도시된 작업 아이템(422-1)이 큐(410)에 인큐되면, 우선 초기화된다. 다음, 작업 아이템(422-1)이 실행 상태(예를 들면, 도 6의 실행 상태(604))에서 실행되기 전에, 큐(410)로부터 디스패처(412)로 디큐(dequeue)되거나 제거된다. 작업 아이템(422-1)의 실행 기간 동안의 파라미터 또는 조건에 따라, 작업 아이템(422-1)은 취소 상태(606) 또는 폴팅 상태(608)로 진행될 수 있다. 일 실시예에서, 작업 아이템(422-1)은 취소 상태(606)로부터 폴팅 상태(608)로 진행될 수 있다. 다른 실시예에서, 보상 상태(610)는 폴팅 또는 익셉션이 발생하였을 경우에 실행될 연산 또는 함수의 집합을 나타낸다.
예를 들면, 작업 아이템(예를 들면, 작업 아이템(422-1))의 실행 기간 동안에 익셉션이 발생한 경우, 예를 들면 함수에 대한 파라미터가 없어진 경우를 가정한다. 시스템(400)은 작업 아이템(422-1)을 폴팅 상태(608)로 천이(transition)시킨다. 또한, 천이시킴에 있어서, 시스템(400)은 작업 아이템(422-1)을 종료 상태(612)로 천이시키기 전에 보상 상태(610)에서 가비지 콜렉션(garbage collection)(예를 들면, 캐시 또는 메모리로부터 이전에 실행된 연산 부분을 제거 하기, 파라미터 값을 리셋하기 등) 동작을 행한다. 종료 상태(612)는 액티비티(예를 들면, 도 5의 액티비티(500))의 실행이 완료되었음을 나타낸다.
일 실시예에서, 상태 오토마톤(600)은 합성 액티비티 내의 작업 아이템들 간의 관계를 구축한다. 예를 들면, 관계 규칙들 중 하나의 규칙은, 액티비티 트리의 루트 노드의 종료 상태(612) 메소드 또는 작업 아이템으로 천이되기 전에, 자식 노드의 모든 작업 아이템들이 초기화 상태(602) 또는 종료 상태(612)에 있어야 함을 포함할 수 있다. 다른 규칙은, 액티비티 트리의 자식 노드의 작업 아이템을 실행 상태(604)로 천이시키기 위해, 루트 노드의 작업 아이템이 이미 실행 상태(604)에 있어야 함을 필요로 할 수 있다.
다른 실시예에서는, 본 발명의 실시예의 범주를 벗어나지 않고도, 상태 오토마톤(600)에 하나 이상의 추가적인 상태가 규정될 수 있다.
다음, 도 7A 내지 도 7E를 참조하면, 블록도는 본 발명의 실시예에 따른 액티비티의 작업 아이템의 선언적인 취소를 도시한다. 단지 간략화를 위해(이에 제한되지 않음), 도 7A는 트리 구조로 조직화된 3개의 자식 작업 아이템, 즉 work item_1(704), work item_2(706) 및 work item_3(708)을 포함하는 합성 액티비티(702)를 도시한다. 도시된 바와 같이, 루트 액티비티(702)는 "표시 장치에 텍스트를 기입하고, 텍스트를 기입한 후에 액티비티를 종료하기"(write text on display and terminate the activity after writing the text)"를 위한 메소드를 포함한다. 또한, 상술한 작업 아이템을 위한 함수는 이하와 같이 제공된다.
Figure 112008068284167-PCT00001
도 7B에서, 실행 상태(710)의 스냅샷(즉, 작업 아이템이 실행 상태(710)에 있고 나서 30초 후)은 현재 실행 상태에 있는 작업 아이템을 도시한다. 또한, 이 시점에서 액티비티(702)가 이미 실행 상태(710)에 있음을 이해할 것이다. 이 단계에서, work item_1(704)에 포함된 함수에 따르면, "Hello"란 텍스트가 도 4의 사용자 인터페이스(UI)(428)와 같은 디스플레이에 표시된다.
도 7C에서, 작업 아이템이 실행 상태에 있고 나서 31초 후의 시점에서, work item_1(704)의 함수는 실행(즉, 디스플레이에 "Hello" 기입)을 완료하였다. work item_1(704)은 종료 상태(712)로 천이된다. 종료 상태(712)로 천이되면, 취소 요청(722)이 현재 실행 상태에 있는 하나 이상의 작업 아이템, 예를 들면 work item_2(706) 및 work item_3(708)으로 전송된다(참조부호 720으로 나타냄).
본 발명의 실시예에 의하면, 액티비티(702)가 그 메소드의 실행, 즉 "디스플레이에 텍스트를 기입하고, 텍스트를 기입한 후에 액티비티를 종료하기"를 완료하였기 때문에, 액티비티 트리 내의 모든 나머지 작업 아이템이 취소 상태로 천이된다. 이와 같이, 액티비티(702)가 종료 상태(712)로 천이되어야 한다. 그 결과, 현재 실행 상태(710)에 있는 동작, 함수 또는 메소드가 폐기되거나, 또는 그 실행을 완료하지 못할 것이다.
이와 같이, 도 7D에서는, 작업 아이템이 실행 상태(710)에 있고 나서 32초 후의 시점에서, work item_2(706) 및 work item_3(708)이 취소 상태(716)로 천이된다. 일 실시예에서, work item_2(706) 및 work item_3(708)은 취소 상태(716)(예를 들면, 도 4의 취소 상태(426))로 천이되기 전에 스케쥴러 큐(714)에 인큐된다. 도 7E에서, work item_2(706) 및 work item_3(708)은 스케쥴러 큐(714)로부터 디큐되어, 취소 상태(716)로 천이되고 있다. 이 예에서, 모든 작업 아이템이 종료 상태(화살표 718로 나타냄)로 천이되면, 액티비티(702)는 액티비티(702)가 그 실행을 완료하였음을 나타내는 종료 상태(712)로 천이된다.
익셉션이 트리거(trigger)되는 기존의 시스템과는 달리, 본 발명의 양태는 취소 상태(716)를 제공함으로써 취소를 선언적으로 트리거한다. 취소 상태(716)를 이용하면, 개발자 또는 프로그래머가 프로그램의 일부의 취소를 효율적으로 다루는 프로세스 중심 프로그램을 설계할 수 있다.
작업 아이템을 취소 상태(716)로 천이시키면, 본 발명의 다른 실시예는 액티비티의 실행 수명의 취소에 응답하여 사용자(430)에게 취소 후(post-cancellation) 동작들의 세트를 제공한다. 예를 들면, 도 4의 시스템(400)은 사용자(430)에게 다수의 동작을 UI(428)를 통해 대화 창(dialog window)으로 제공할 수 있다. 또한, 동작은 실행 상태(710)에 있는 나머지 작업 아이템을 취소하거나, 다른 동작을 실행하거나 그 밖의 동작을 행하기 위한 결정 상자(decision box)를 포함할 수 있지만, 이에 제한되지 않는다. 본 발명의 다른 실시예는 작업 아이템의 실행과 연관된 데이터를 제거하기 위한 동작 세트(예를 들면, 임시 기억, 버퍼링, 메모리 액세스 등)를 액티비티의 실행 수명을 취소하는 함수로서 행할 수 있다.
일 실시예에서, 도 6은 액티비티(예를 들면, 그 영역에 특정된 op-code의 세트를 규정할 수 있는 연산의 집합)가 그 실행 수명 기간에 있을 수 있는 6개의 상태(초기화(Initialized), 실행(Executing), 종료(Closed), 취소(Canceling), 폴팅(Faulting) 및 보상(Compensating) 상태)를 포함하는 오토마톤을 나타낸다. 상기한 바와 같이 취소 특징을 포함함에 있어서, 작업 아이템이 스케쥴러 큐로부터 디큐되고, 그 실행 전에 핸들러가 실제로 디스패치된다. 오토마톤(600)은 프리미티브 액티비티 및 합성 액티비티 모두에도 마찬가지로 적용된다.
또한, 부모 액티비티와 자식 액티비티 간의 합성 관계는 합성 액티비티가 제어 흐름 패턴의 모델링을 가능하게 하도록 본 발명의 실시예에 따라 실시됨을 유의한다.
예를 들면, 액티비티 트리의 부모 액티비티 내에 자식을 합성하려면 이하의 조건이 요구된다.
(1) 부모 액티비티가 종료 상태로 천이되기 위해 필요한 사전 조건은, 자식 들이 초기화 상태 또는 종료 상태에 있어야 한다는 것이다. 이 예에서는, 부모가 종료 상태로 천이되는 경우, 자식 액티비티 또는 자식 작업 아이템이 실행 상태, 취소 상태, 폴팅 상태 또는 보상 상태에 있을 수 없다.
(2) 자식이 실행 상태로 천이되기 위해 필요한 사전 조건은, 부모가 이미 실행 상태, 취소 상태, 폴팅 상태, 보상 상태 또는 기타 "<>ing" 상태에 있어야 한다는 것이다.
예시적인 실시예에서, 작업 흐름 파운데이션 또는 프레임워크 런타임은 상기한 규칙 또는 요구 사항을 엄격하게 실시한다. 또한, 작업 흐름 프레임워크는 상기한 설명에 기초하여 취소를 모델링하기 위한 잘 규정된 프로토콜을 액티비티 작성자에게 제공한다. 취소는, 액티비티 합성 계층 구조에서 하향 전달된다. 즉, 부모 합성 액티비티가 그 자식의 취소를 스케쥴링하는 것으로부터 시작하여, 다음으로 그 자식을 취소하는 등으로 계속된다. 게다가, 이 예는 실행 신호가 합성 구조에서 하향 전달되는 방식과 유사하다.
취소가 익셉션으로서 취급되었던 기존의 기술과 달리, 본 발명의 실시예는 취소를 합성 액티비티의 정상 실행 시맨틱의 특수한 거동으로서 모델링하여, 액티비티 실행의 동적 제어 흐름이 실현되도록 한다.
도 8은 본 발명의 일 실시예에 따라 작업 흐름의 액티비티의 작업 아이템을 취소하기 위한 방법을 도시하는 흐름도이다. 일례에서, 도 8에 도시된 방법 또는 프로세스는 도 9에 도시된 컴퓨터 판독가능 매체(900)와 같은 컴퓨터 판독가능 매체 상에 저장된 컴퓨터 실행가능 컴포넌트에 의해 실행될 수 있다. 예를 들면, 초 기에, 블록(802)에서, 상태 머신(902)이 액티비티에 대한 상태 오토마톤을 규정한다. 상태 오토마톤(예를 들면, 상태 오토마톤(600))은 실행 상태, 취소 상태 및 종료 상태를 포함한다. 블록(804)에서, 액티비티 컴포넌트(904)는 액티비티가 복수의 작업 아이템을 포함하도록 규정한다. 규정된 액티비티는 복수의 작업 아이템을 실행 시퀀스 또는 실행 계층 구조(예를 들면, 트리 구조)로 조직화한다. 각각의 작업 아이템은 액티비티 일부를 실행하기 위한 메소드를 포함한다.
블록(806)에서, 스케쥴러 컴포넌트(906)는 작업 아이템을 실행 상태로부터 종료 상태(이는 액티비티의 실행 완료를 나타냄)로 천이시킨다. 블록(808)에서, 작업 아이템들 중 하나가 종료 상태로 천이되고 있는 것에 응답하여, 메시지 컴포넌트(908)는 취소 요청을 현재 실행 상태에 있는 작업 아이템들 중 하나 이상의 작업 아이템으로 전송한다. 블록(810)에서, 취소 핸들러(910)는 실행 상태에 있는 하나 이상의 작업 아이템을 전송된 취소 요청 및 규정된 액티비티의 실행 시퀀스의 함수로서 식별한다. 일 실시예에서, 취소 핸들러(910)는 작업 아이템이 취소 상태로 천이되기 전에 작업 아이템을 스케쥴러 큐에 인큐함으로써 작업 아이템을 식별한다.
블록(812)에서, 실행 컴포넌트(912)는 하나 이상의 식별된 작업 아이템을 실행 상태로부터 취소 상태로 천이시킴으로써 액티비티의 실행 수명을 취소한다. 또한, 다른 실시예에서, 컴퓨터 판독가능 매체(900)는 액티비티의 실행 수명의 취소에 응답하여 도 4의 사용자(430)에게 취소 후 동작들의 세트를 제공하기 위하여 UI(예를 들면, UI(428))를 포함한다. 또 다른 실시예에서, 소거(cleaning) 컴포넌 트(914)는 작업 아이템의 실행과 연관된 데이터를 실행 컴포넌트에 의한 액티비티의 실행 수명의 취소의 함수로서 제거한다.
비록 도 4의 시스템(400)과 같은 예시적인 컴퓨팅 시스템 환경과 관련하여 설명되었지만, 본 발명의 실시예는 다수의 기타 범용 또는 전용 컴퓨팅 시스템 환경 또는 구성에서 동작된다. 컴퓨팅 시스템 환경은 본 발명의 임의의 양태의 용도 또는 기능의 범주에 관하여 어떠한 제한을 암시하고자 하는 것이 아니다. 또한, 컴퓨팅 시스템 환경은 예시적인 운영 환경에 도시된 컴포넌트들 중 임의의 하나 또는 임의의 조합과 관련하여 어떠한 의존성 또는 요구 사항을 갖는 것으로 해석되어서는 않된다. 본 발명의 양태와의 사용에 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경 및/또는 구성의 예로는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드-헬드 또는 랩톱 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그램가능한 가전제품, 이동 전화, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템들이나 장치들 중 임의의 것을 포함하는 분산 컴퓨팅 환경, 기타 등등이 있지만 이에 제한되는 것은 아니다.
본 발명의 실시예는 일반적으로 하나 이상의 컴퓨터 또는 기타 장치에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어와 관련하여 기술될 것이다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함하지만, 이에 제한되지 않는다. 본 발명의 양태는 또한 통신 네트워크를 통해 연결되어 있는 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실시될 수 있 다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 비롯한 로컬 및 원격 컴퓨터 저장 매체 둘다에 위치할 수 있다.
동작에 있어서, 시스템(400)은 본 발명의 양태를 구현하기 위하여 도 8과 같은 도면에 도시된 것 같은 컴퓨터 실행가능 명령어를 실행한다. 예를 들면, 사용자가 "자동차 판매 액티비티(car sale activity)"로서 차량을 팔고 싶어한다고 가정한다. 액티비티를 파일에 임의의 포맷으로 포뮬레이트(formulate)함으로써, 본 발명의 실시예는 이러한 작업 흐름 액티비티를 처리할 수 있다. 이 "자동차 판매 액티비티"는 온라인에서 판매 광고하기, 라디오 방송국을 통해 판매 광고하기, 신문의 클래시파이드 섹션(classified section)을 통해 판매 광고하기, 및 차량의 창문에 "판매 중(for sales)" 표지를 게재함으로써 판매 광고하기와 같은 하나 이상의 작업 아이템을 포함할 수 있다. 또한, 액티비티는 사용자가 임의의 출처로부터 제안을 수락하고 나면, 사용자가 복수의 제안을 수신하고/하거나 수락하는 것을 피하기 위하여 광고물(advertising effort)의 취소를 제공한다.
예를 들면, 사용자가 온라인에 게재된 광고를 본 누군가로부터 제안을 수신하고 이를 수락한다고 가정한다. "온라인에서 판매 광고하기" 작업 아이템은 종료 상태로 천이되어, 현재 실행 상태에 있는 모든 다른 작업 아이템에게 통지(notification)를 트리거한다. 본 발명의 실시예는 사용자에게, "신문에 통지", "미결정된 잠재적인 구매자에게 통지", "온라인 광고 철회" 등과 같은 임의의 취소 후 동작이 실행될 수 있는지를 나타내라고 추가적으로 요청할 수 있다. 이처럼, 액티비티는 결국 종료 상태로 천이되어, "자동차 판매 액티비티"를 선언적 방식으 로 종료한다.
여기서 도시되고 설명되는 본 발명의 실시예에서의 동작들의 실행 또는 수행 순서는 다른 방식으로 특정되어 있지않는 한 중요하지 않다. 즉, 다른 방식으로 특정되어 있지않는 한, 동작들은 임의의 순서로 실행될 수 있고, 본 발명의 실시예는 여기에 개시된 동작보다 더 많은 동작 또는 더 적은 동작을 포함할 수 있다. 예를 들면, 다른 동작 전에, 또는 다른 동작과 동시에, 또는 다른 동작 후에 특정 동작을 실행하거나 수행하는 것도 본 발명의 양태의 범주 내에 있음을 고려한다.
본 발명의 실시예는 컴퓨터 실행가능 명령어로 구현될 수 있다. 컴퓨터 실행가능 명령어는 하나 이상의 컴퓨터 실행가능 컴포넌트 또는 모듈로 구성될 수 있다. 본 발명의 양태는 임의의 수의 이와 같은 컴포넌트 또는 모듈, 및 이러한 컴포넌트 또는 모듈의 조합으로 구현될 수 있다. 예를 들면, 본 발명의 양태는 도면에 도시되고 여기에서 설명된 특정 컴퓨터 실행가능 명령어 또는 특정 컴포넌트 또는 모듈에 제한되지 않는다. 본 발명의 다른 실시예는 여기에서 도시되고 설명된 것보다 기능이 더 많거나 더 적은 기능을 갖는 다른 컴퓨터 실행가능 명령어 또는 컴포넌트를 포함할 수 있다.
본 발명의 양태 또는 본 발명의 실시예의 구성 요소를 도입할 때, "a", "an", "the" 및 "said"는 하나 이상의 구성 요소가 존재함을 의미하기 위한 것이다. "comprising", "including" 및 "having"은 포괄적인 것으로, 열거된 구성 요소 이외에 추가적인 구성 요소가 있을 수 있음을 의미하기 위한 것이다.
본 발명의 양태를 상술하였지만, 첨부되는 청구 범위에 규정된 바와 같이 본 발명의 양태의 범주를 벗어나지 않고도 수정 및 변경이 가능함은 명백할 것이다. 본 발명의 양태의 범주를 벗어나지 않고도 상기한 구성, 제품 및 방법에 여러 가지 변화를 가할 수 있기 때문에, 상술한 설명에 포함되고 첨부 도면에 도시된 모든 대상은 예시적인 것으로 해석되어야 하고, 제한의 의미로 해석되지 않아야 한다.

Claims (20)

  1. 프로세스 중심(process-centric) 프로그램의 액티비티(406)를 선언적으로(declaratively) 취소(canceling)하기 위한 방법으로서,
    상기 액티비티(406)에 대하여 상태 오토마톤(automaton)(600)을 규정하는 단계 - 상기 상태 오토마톤(600)은 실행 상태(604), 취소 상태(606) 및 종료 상태(612)를 포함하고, 상기 액티비티(406)의 실행 수명(execution lifetime)을 분류함 -;
    복수의 작업 아이템들(422)을 포함하도록 상기 액티비티(406)를 규정하는 단계 - 상기 규정된 액티비티(406)는 상기 복수의 작업 아이템들(422)을 실행 계층 구조(500)로 조직화하고, 상기 작업 아이템들(422) 각각은 상기 액티비티(406)의 일부를 실행하기 위한 메소드(method)를 포함함 -;
    상기 복수의 작업 아이템들(422)을 상기 실행 상태(604)로부터 상기 종료 상태(612)로 천이(transitioning)시키는 단계 - 상기 종료 상태(612)는 상기 액티비티(406)의 실행 완료를 나타냄 -;
    상기 작업 아이템들(422) 중 하나의 작업 아이템이 상기 종료 상태(612)로 천이되면, 현재 상기 실행 상태(604)에 있는 상기 작업 아이템들(422) 중 하나 이상의 작업 아이템들에게 취소 요청(722)을 전송하는 단계;
    상기 실행 상태(604)에 있는 하나 이상의 작업 아이템들(422)을 상기 전송된 취소 요청(722) 및 상기 규정된 액티비티(406)의 실행 계층 구조(500)의 함수로서 식별하는 단계; 및
    상기 하나 이상의 식별된 작업 아이템들(422)을 상기 실행 상태(604)로부터 상기 취소 상태(606)로 천이시킴으로써 상기 액티비티(406)의 실행 수명을 취소하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 액티비티(406)의 실행 수명의 취소에 응답하여, 상기 하나 이상의 식별된 작업 아이템들(422)을 상기 취소 상태(606)로부터 상기 종료 상태(612)로 천이시키는 단계를 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 액티비티(406)의 실행 수명의 취소에 응답하여, 사용자(430)에게 취소 후(post-cancellation) 동작들의 세트를 제공하는 단계를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 하나 이상의 작업 아이템들(422)을 식별하는 단계는 상기 작업 아이템들(422)을 스케쥴러 큐(scheduler queue)(714)에 인큐(enqueue)하는 단계를 포함하는 방법.
  5. 제4항에 있어서,
    상기 취소하는 단계는 상기 작업 아이템들(422)을 상기 스케쥴러 큐(714)로부터 상기 취소 상태(606)로 디큐(dequeue)하는 단계를 포함하는 방법.
  6. 제1항에 있어서,
    상기 실행 계층 구조(500)는 트리 구조를 포함하고,
    상기 하나 이상의 작업 아이템들(422)을 식별하는 단계는, 상기 트리 구조를 상기 트리 구조의 저레벨에서 상기 트리 구조의 고레벨로 트래버스(traverse)함으로써 상기 실행 상태에 있는 상기 하나 이상의 작업 아이템들(422)을 식별하는 단계를 포함하는 방법.
  7. 제1항에 있어서,
    하나 이상의 컴퓨터 판독가능 매체가 제1항의 방법을 행하기 위한 컴퓨터 실행가능 명령어들을 포함하는 방법.
  8. 프로세스 중심 프로그램의 액티비티(406)를 선언적으로 취소하기 위한 시스템(400)으로서,
    상기 액티비티(406)의 작업 아이템들(422)과 연관된 데이터를 저장하기 위한 메모리 영역(404) - 상기 액티비티(406)는 상기 작업 아이템들을 실행 시퀀스(500)로 조직화함 -; 및
    컴퓨터 실행가능 명령어들을 실행하도록 구성된 프로세서(402)
    를 포함하고,
    상기 컴퓨터 실행가능 명령어들은,
    상기 액티비티(406)에 대하여 상태 오토마톤(600)을 규정하고 - 상기 상태 오토마톤(600)은 실행 상태(604), 취소 상태(606) 및 종료 상태(612)를 포함하고, 상기 액티비티(406)의 실행 수명을 분류함 -,
    상기 작업 아이템들(422)을 포함하도록 상기 액티비티(406)를 규정하고,
    상기 작업 아이템들(422)을 상기 실행 상태(604)로부터 상기 종료 상태(612)로 천이시키고 - 상기 종료 상태(612)는 상기 액티비티(406)의 실행 완료를 나타냄 -,
    상기 작업 아이템들(422) 중 하나의 작업 아이템이 상기 종료 상태(612)로 천이되면, 현재 상기 실행 상태(604)에 있는 상기 작업 아이템들 중 하나 이상의 작업 아이템들(422)에게 취소 요청(722)을 전송하고,
    상기 실행 상태(604)에 있는 하나 이상의 작업 아이템들(422)을 상기 전송된 취소 요청(722) 및 상기 규정된 액티비티(406)의 실행 시퀀스(500)의 함수로서 식별하고,
    상기 하나 이상의 식별된 작업 아이템들(422)을 상기 실행 상태(604)로부터 상기 취소 상태(606)로 천이시킴으로써 상기 액티비티(406)의 실행 수명을 취소하기 위한 것인 시스템(400).
  9. 제8항에 있어서,
    상기 액티비티(406)의 취소된 실행 수명에 응답하여, 상기 하나 이상의 식별된 작업 아이템들(422)을 상기 취소 상태(606)로부터 상기 종료 상태(612)로 천이시키기 위한 수단을 더 포함하는 시스템(400).
  10. 제8항에 있어서,
    상기 액티비티(406)의 실행 수명의 취소에 응답하여, 사용자(430)에게 취소 후 동작들의 세트를 제공하기 위한 수단을 더 포함하는 시스템(400).
  11. 제8항에 있어서,
    상기 프로세서(402)는 상기 작업 아이템들(422)을 상기 메모리 영역(404)의 스케쥴러 큐(714)에 인큐하여 상기 하나 이상의 작업 아이템들(422)을 식별하도록 구성되는 시스템(400).
  12. 제11항에 있어서,
    상기 프로세서(402)는 상기 액티비티(406)의 취소된 실행 수명에 응답하여, 상기 작업 아이템들(422)을 상기 스케쥴러 큐(714)로부터 상기 취소 상태(606)로 디큐하도록 구성되는 시스템(400).
  13. 제8항에 있어서,
    상기 실행 시퀀스(500)는 트리 구조를 포함하고,
    상기 프로세서(402)는 상기 트리 구조를 상기 트리 구조의 저레벨에서 상기 트리 구조의 고레벨로 트래버스함으로써 상기 하나 이상의 작업 아이템들(422)을 식별하도록 구성되는 시스템(400).
  14. 제8항에 있어서,
    상기 작업 아이템들(422)과 연관된 데이터를 상기 메모리 영역(404)으로부터 상기 액티비티(406)의 취소된 실행 수명의 함수로서 제거하기 위한 수단을 더 포함하는 시스템(400).
  15. 프로세스 중심 프로그램의 액티비티(406)를 선언적으로 취소하기 위한 컴퓨터 실행가능 컴포넌트들을 포함하는 하나 이상의 컴퓨터 판독가능 매체(900)로서,
    상기 액티비티(406)에 대하여 상태 오토마톤(600)을 규정하기 위한 상태 머신(state machine)(902) - 상기 상태 오토마톤(600)은 실행 상태(604), 취소 상태(606) 및 종료 상태(612)를 포함하고, 상기 액티비티(406)의 실행 수명을 분류함 -;
    복수의 작업 아이템들(422)을 포함하도록 상기 액티비티(406)를 규정하기 위한 액티비티 컴포넌트(904) - 상기 규정된 액티비티(406)는 상기 복수의 작업 아이템들(422)을 실행 시퀀스(500)로 조직화하고, 상기 작업 아이템들(422) 각각은 상기 액티비티(406)의 일부를 실행하기 위한 메소드를 포함함 -;
    상기 작업 아이템들(422)을 상기 실행 상태(604)로부터 상기 종료 상태(612)로 천이시키기 위한 스케쥴러 컴포넌트(906) - 상기 종료 상태(612)는 상기 액티비티(406)의 실행 완료를 나타냄 -;
    상기 작업 아이템들(422) 중 하나의 작업 아이템이 상기 종료 상태(612)로 천이되는 것에 응답하여, 현재 상기 실행 상태(604)에 있는 상기 작업 아이템들 중 하나 이상의 작업 아이템들(422)에게 취소 요청(722)을 전송하기 위한 메시지 컴포넌트(908);
    상기 식별된 작업 아이템들(422)을 스케쥴러 큐(714)에 인큐함으로써, 상기 실행 상태(604)에 있는 하나 이상의 작업 아이템들(422)을 상기 전송된 취소 요청(722) 및 상기 규정된 액티비티(406)의 실행 시퀀스(500)의 함수로서 식별하기 위한 취소 핸들러(910); 및
    상기 하나 이상의 식별된 작업 아이템들(422)을 상기 실행 상태(604)로부터 상기 취소 상태(606)로 천이시킴으로써 상기 액티비티(406)의 실행 수명을 취소하기 위한 실행 컴포넌트(912)
    를 포함하는 하나 이상의 컴퓨터 판독가능 매체(900).
  16. 제15항에 있어서,
    상기 스케쥴러 컴포넌트(906)는 상기 하나 이상의 식별된 작업 아이템들(422)을 상기 취소 상태(606)로부터 상기 종료 상태(612)로 천이시키도록 구성되는 하나 이상의 컴퓨터 판독가능 매체(900).
  17. 제15항에 있어서,
    상기 액티비티(406)의 실행 수명의 취소에 응답하여, 사용자(430)에게 취소 후 동작들의 세트를 제공하기 위한 사용자 인터페이스(UI)(428)를 더 포함하는 하나 이상의 컴퓨터 판독가능 매체(900).
  18. 제15항에 있어서,
    상기 취소 핸들러(910)는 상기 작업 아이템들(422)을 상기 스케쥴러 큐(714)로부터 상기 취소 상태(606)로 디큐하도록 구성되는 하나 이상의 컴퓨터 판독가능 매체(900).
  19. 제15항에 있어서,
    상기 실행 시퀀스(500)는 트리 구조를 포함하고,
    상기 취소 핸들러(910)는 상기 트리 구조를 상기 트리 구조의 저레벨에서 상기 트리 구조의 고레벨로 트래버스함으로써 상기 하나 이상의 작업 아이템들(422)을 식별하도록 구성되는 하나 이상의 컴퓨터 판독가능 매체(900).
  20. 제15항에 있어서,
    상기 작업 아이템들(422)의 실행과 연관된 데이터를 상기 실행 컴포넌트(910)에 의한 상기 액티비티(406)의 실행 수명의 취소의 함수로서 제거하기 위한 소거(cleaning) 컴포넌트(912)를 더 포함하는 하나 이상의 컴퓨터 판독가능 매체(900).
KR1020087023828A 2006-03-30 2007-02-21 프로세스 중심 프로그램에 대한 취소를 모델링하기 위한 방법, 시스템 및 컴퓨터 판독가능 매체 KR20080106560A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/393,357 2006-03-30
US11/393,357 US20070239498A1 (en) 2006-03-30 2006-03-30 Framework for modeling cancellation for process-centric programs

Publications (1)

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

Family

ID=38576575

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087023828A KR20080106560A (ko) 2006-03-30 2007-02-21 프로세스 중심 프로그램에 대한 취소를 모델링하기 위한 방법, 시스템 및 컴퓨터 판독가능 매체

Country Status (11)

Country Link
US (1) US20070239498A1 (ko)
EP (1) EP2013715A4 (ko)
JP (1) JP2009532759A (ko)
KR (1) KR20080106560A (ko)
CN (1) CN101416158A (ko)
AU (1) AU2007235542A1 (ko)
BR (1) BRPI0709182A2 (ko)
CA (1) CA2644336A1 (ko)
MX (1) MX2008011909A (ko)
RU (1) RU2008138715A (ko)
WO (1) WO2007117365A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170200228A1 (en) * 2004-09-22 2017-07-13 Fmr Llc Multichannel Exchange Mechanism Apparatuses, Methods and Systems
GB2423382A (en) 2005-01-27 2006-08-23 Microgen Plc Generating business process programs using a symbolic representation of operators in a graphical interface
US20060288332A1 (en) * 2005-06-21 2006-12-21 Microsoft Corporation Workflow debugger
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
US20080040702A1 (en) * 2006-04-10 2008-02-14 Tibco Software Inc. Nonlinear workflow assembly for visual programming
US8108868B2 (en) * 2007-12-18 2012-01-31 Microsoft Corporation Workflow execution plans through completion condition critical path analysis
US8181155B2 (en) * 2008-02-29 2012-05-15 Microsoft Corporation Unified expression and location framework
US9043749B2 (en) * 2008-06-16 2015-05-26 Microsoft Technology Licensing, Llc Unified and extensible asynchronous and synchronous cancelation
US9354847B2 (en) 2008-12-29 2016-05-31 Microsoft Technology Licensing, Llc Interface infrastructure for a continuation based runtime
US8307368B2 (en) * 2009-05-26 2012-11-06 Microsoft Corporation Locality-based scheduling in continuation-based runtimes
US8732596B2 (en) * 2009-12-29 2014-05-20 Microgen Aptitude Limited Transformation of hierarchical data formats using graphical rules
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
US9390135B2 (en) * 2013-02-19 2016-07-12 Oracle International Corporation Executing continuous event processing (CEP) queries in parallel
JP7429941B2 (ja) 2022-02-10 2024-02-09 Ibc一番町弁理士法人 プロセス実行システムおよびプロセス実行プログラム

Family Cites Families (97)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5220668A (en) * 1990-09-21 1993-06-15 Stratus Computer, Inc. Digital data processor with maintenance and diagnostic system
US5301320A (en) * 1991-06-28 1994-04-05 Digital Equipment Corporation Workflow management and control system
US5432933A (en) * 1992-10-27 1995-07-11 Bmc Software, Inc. Method of canceling a DB2 thread
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
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
US5784613A (en) * 1995-09-12 1998-07-21 International Busines Machines Corporation Exception support mechanism for a threads-based operating system
JP2001501752A (ja) * 1995-12-22 2001-02-06 ゼロックス コーポレイション システム状態とユーザー状態を使用して処理を支援する方法
DE19712946A1 (de) * 1996-05-30 1997-12-04 Ibm Methode zum Generieren einer Implementierung wiederverwendbarer Teile von Containern eines Workflow-Prozessmodells
US20020046072A1 (en) * 1996-06-18 2002-04-18 Toshikatsu Arai Workflow system
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
GB9623954D0 (en) * 1996-11-15 1997-01-08 Xerox Corp Systems and methods providing flexible representations of work
US5870545A (en) * 1996-12-05 1999-02-09 Hewlett-Packard Company System and method for performing flexible workflow process compensation in a distributed workflow management system
US6014673A (en) * 1996-12-05 2000-01-11 Hewlett-Packard Company Simultaneous use of database and durable store in work flow and process flow systems
US6041306A (en) * 1996-12-05 2000-03-21 Hewlett-Packard Company System and method for performing flexible workflow process execution in a distributed workflow management system
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
US6393465B2 (en) * 1997-11-25 2002-05-21 Nixmail Corporation Junk electronic mail detector and eliminator
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
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
US6430538B1 (en) * 1998-04-30 2002-08-06 Enterworks Workflow management system, method and medium with personal subflows
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
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
WO2000014618A2 (en) * 1998-08-24 2000-03-16 Fujitsu Limited Workflow system and method
US6606740B1 (en) * 1998-10-05 2003-08-12 American Management Systems, Inc. Development framework for case and workflow systems
US6279009B1 (en) * 1998-12-04 2001-08-21 Impresse Corporation Dynamic creation of workflows from deterministic models of real world processes
US6842853B1 (en) * 1999-01-13 2005-01-11 Sun Microsystems, Inc. Thread suspension system and method
US6519595B1 (en) * 1999-03-02 2003-02-11 Nms Communications, Inc. Admission control, queue management, and shaping/scheduling for flows
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
US7711950B2 (en) * 2000-03-17 2010-05-04 United States Postal Services Methods and systems for establishing an electronic account for a customer
US6918053B1 (en) * 2000-04-28 2005-07-12 Microsoft Corporation Compensation framework for long running transactions
US6799208B1 (en) * 2000-05-02 2004-09-28 Microsoft Corporation Resource manager architecture
US6845507B2 (en) * 2000-05-18 2005-01-18 Ss & C Technologies, Inc. Method and system for straight through processing
US20030033191A1 (en) * 2000-06-15 2003-02-13 Xis Incorporated Method and apparatus for a product lifecycle management process
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
WO2002029682A1 (en) * 2000-10-02 2002-04-11 International Projects Consultancy Services, Inc. Object-based workflow system and method
US7653566B2 (en) * 2000-11-30 2010-01-26 Handysoft Global Corporation Systems and methods for automating a process of business decision making and workflow
US20020073129A1 (en) * 2000-12-04 2002-06-13 Yu-Chung Wang Integrated multi-component scheduler for operating systems
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
US6910209B2 (en) * 2001-04-30 2005-06-21 Sun Microsystems, Inc. Clean thread termination
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
WO2003015000A1 (en) * 2001-08-08 2003-02-20 Trivium Systems Inc. Workflow engine for automating business processes in scalable multiprocessor computer platforms
US6895573B2 (en) * 2001-10-26 2005-05-17 Resultmaker A/S Method for generating a workflow on a computer, and a computer system adapted for performing the method
US20030177046A1 (en) * 2001-12-03 2003-09-18 John Socha-Leialoha Method and system for reusing components
US7269179B2 (en) * 2001-12-18 2007-09-11 Intel Corporation Control mechanisms for enqueue and dequeue operations in a pipelined network processor
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
US7865867B2 (en) * 2002-03-08 2011-01-04 Agile Software Corporation System and method for managing and monitoring multiple workflows
US20030233374A1 (en) * 2002-03-14 2003-12-18 Ulrich Spinola Dynamic workflow process
US20030195762A1 (en) * 2002-04-12 2003-10-16 David Gleason Automated workflow
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
US7424717B2 (en) * 2002-05-01 2008-09-09 Bea Systems, Inc. Systems and methods for business process plug-in development
US8924484B2 (en) * 2002-07-16 2014-12-30 Sonicwall, Inc. Active e-mail filter with challenge-response
US8374966B1 (en) * 2002-08-01 2013-02-12 Oracle International Corporation In memory streaming with disk backup and recovery of messages captured from a database redo stream
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
US7062537B2 (en) * 2002-11-25 2006-06-13 Microsoft Corporation Workflow services architecture
US20040148213A1 (en) * 2002-11-25 2004-07-29 Microsoft Corporation Automated workflow constraints
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
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
CA2420479A1 (en) * 2003-02-13 2004-08-13 Ibm Canada Limited - Ibm Canada Limitee Flow debugging software and method
US7423656B2 (en) * 2003-03-11 2008-09-09 National University Of Singapore Method and apparatus for generating morphing sequence
US7885847B2 (en) * 2003-05-07 2011-02-08 Sap Ag End user oriented workflow approach including structured processing of ad hoc workflows with a collaborative process engine
US7590695B2 (en) * 2003-05-09 2009-09-15 Aol Llc Managing electronic messages
US7415699B2 (en) * 2003-06-27 2008-08-19 Hewlett-Packard Development Company, L.P. Method and apparatus for controlling execution of a child process generated by a modified parent process
US8645420B2 (en) * 2003-08-05 2014-02-04 Accenture Global Services Limited Methodology framework and delivery vehicle
CA2443454A1 (en) * 2003-09-11 2005-03-11 Teamplate Inc. Data binding method in workflow system
US20050066149A1 (en) * 2003-09-22 2005-03-24 Codito Technologies Private Limited Method and system for multithreaded processing using errands
CA2442796A1 (en) * 2003-09-26 2005-03-26 Ibm Canada Limited - Ibm Canada Limitee Binding a workflow engine to a data model
ES2328924T3 (es) * 2003-10-15 2009-11-19 Canon Kabushiki Kaisha Previsualizacion y revision selectiva de documentos o esquemas que contienen datos variables.
US7548334B2 (en) * 2003-10-15 2009-06-16 Canon Kabushiki Kaisha User interface for creation and editing of variable data documents
US7554689B2 (en) * 2003-10-15 2009-06-30 Canon Kabushiki Kaisha Document layout method
US7137033B2 (en) * 2003-11-20 2006-11-14 International Business Machines Corporation Method, system, and program for synchronizing subtasks using sequence numbers
US20050289530A1 (en) * 2004-06-29 2005-12-29 Robison Arch D Scheduling of instructions in program compilation
US7890734B2 (en) * 2004-06-30 2011-02-15 Open Computing Trust I & II Mechanism for selecting instructions for execution in a multithreaded processor
JP4287799B2 (ja) * 2004-07-29 2009-07-01 富士通株式会社 プロセッサシステムおよびスレッド切り替え制御方法
US20060069596A1 (en) * 2004-09-29 2006-03-30 Microsoft Corporation Workflow hosting computing system using a collaborative application
US20060069605A1 (en) * 2004-09-29 2006-03-30 Microsoft Corporation Workflow association in a collaborative application
US20060074704A1 (en) * 2004-10-01 2006-04-06 Microsoft Corporation Framework to model cross-cutting behavioral concerns in the workflow domain
US7451432B2 (en) * 2004-10-01 2008-11-11 Microsoft Corporation Transformation of componentized and extensible workflow to a declarative format
US7464366B2 (en) * 2004-10-01 2008-12-09 Microsoft Corporation Programming interface for a componentized and extensible workflow model
GB0427133D0 (en) * 2004-12-10 2005-01-12 British Telecomm Workflow scheduler
US7493594B2 (en) * 2005-03-14 2009-02-17 Research In Motion System and method for designing component based applications
US7415049B2 (en) * 2005-03-28 2008-08-19 Axsun Technologies, Inc. Laser with tilted multi spatial mode resonator tuning element
US20090299766A1 (en) * 2008-05-30 2009-12-03 International Business Machines Corporation System and method for optimizing medical treatment planning and support in difficult situations subject to multiple constraints and uncertainties

Also Published As

Publication number Publication date
BRPI0709182A2 (pt) 2011-06-28
AU2007235542A1 (en) 2007-10-18
WO2007117365A1 (en) 2007-10-18
US20070239498A1 (en) 2007-10-11
RU2008138715A (ru) 2010-04-10
CA2644336A1 (en) 2007-10-18
EP2013715A4 (en) 2009-06-24
MX2008011909A (es) 2008-09-29
CN101416158A (zh) 2009-04-22
JP2009532759A (ja) 2009-09-10
EP2013715A1 (en) 2009-01-14

Similar Documents

Publication Publication Date Title
US20070239498A1 (en) Framework for modeling cancellation for process-centric programs
US7739135B2 (en) Asynchronous fault handling in process-centric programs
US8069439B2 (en) Framework for modeling continuations in workflows
US8024405B2 (en) Declarative model for concurrency-control across lightweight threads
US20070239505A1 (en) Abstract execution model for a continuation-based meta-runtime

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