KR20060087997A - 작업 흐름을 작성하고 편집하기 위한 컴퓨터 구현 방법 - Google Patents

작업 흐름을 작성하고 편집하기 위한 컴퓨터 구현 방법 Download PDF

Info

Publication number
KR20060087997A
KR20060087997A KR1020050074262A KR20050074262A KR20060087997A KR 20060087997 A KR20060087997 A KR 20060087997A KR 1020050074262 A KR1020050074262 A KR 1020050074262A KR 20050074262 A KR20050074262 A KR 20050074262A KR 20060087997 A KR20060087997 A KR 20060087997A
Authority
KR
South Korea
Prior art keywords
workflow
activity
activities
user
code
Prior art date
Application number
KR1020050074262A
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 KR20060087997A publication Critical patent/KR20060087997A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/316Aspect-oriented programming techniques
    • 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/0633Workflow analysis

Abstract

작업 흐름을 실행하는 중에 컴포넌트화된 작업 흐름 모델을 수정한다. 작업 흐름의 각각의 단계는 작업 흐름 단계 중 디자인시 측면, 컴파일시 측면, 런타임 측면을 기술하는 메타데이터를 갖는 활동으로서 모델링된다. 사용자는 사용자 인터페이스 또는 애플리케이션 인터페이스를 통해 작업 흐름을 생성하기 위해 활동들을 선택하고 배열한다. 메타데이터는 작업 흐름 내의 각각의 활동과 연관되어 있다. 작업 흐름을 실행하는 동안, 사용자는 메타데이터를 수정하여, 작업 흐름을 재컴파일하지 않고도 작업 흐름의 실행에 영향을 미친다.
컴포넌트화, 재컴파일, 작업 흐름

Description

작업 흐름을 작성하고 편집하기 위한 컴퓨터 구현 방법{FRAMEWORK FOR SEAMLESSLY AUTHORING AND EDITING WORKFLOWS AT DESIGNE AND RUNTIME}
도 1은 태스크 및 제어 흐름 복합 활동을 포함하는 전형적인 작업 흐름을 나타낸 도면.
도 2는 전형적인 활동 상속 트리를 나타낸 도면.
도 3은 전형적인 컴포넌트 모델을 나타낸 도면.
도 4는 전형적인 컴포넌트 모델 라이프사이클을 나타낸 도면.
도 5은 작업 흐름의 상세에 대해서는 마법사에 의존하여 작업 흐름을 작성하기 위한 상위 레벨 애플리케이션 사용자 인터페이스를 나타낸 도면.
도 6은 전형적인 작업 흐름 디자이너를 나타낸 도면.
도 7은 수신 활동 및 그에 뒤이은 전송 활동을 포함하는 조정 프로그램을 나타낸 도면.
도 8은 스케쥴 정의, 그리고 시각적 작업 흐름, 작업 흐름의 직렬화된 XOML 표현, 및 작업 흐름의 코드 비사이드(code beside) 간의 관계를 나타낸 도면.
도 9는 본 발명이 구현될 수 있는 적당한 컴퓨팅 시스템 환경의 한 예를 나타낸 블록도.
부록 A는 전형적인 활동을 기술한다.
<도면의 주요 부분에 대한 부호의 설명>
134: 시스템 메모리
132: 프로세싱 유닛
136: 시스템 버스
190: 비디오 인터페이스
본원은 2004년 10월 1일자로 출원된 미국 가특허출원 제60/615,547호의 우선권을 주장한다.
본 발명의 실시예들은 작업 흐름 모델링의 분야에 관한 것이다. 특히, 본 발명의 실시예들은 컴포넌트화되고 확장가능한 작업 흐름 모델에 관한 것이다.
기존의 시스템은 비지니스 문제를 모델링함으로써 그 비지니스 문제를 상위 레벨 작업 흐름으로 매핑하려고 한다. 그렇지만, 실세계 작업 흐름은 (a) 실행 및 모델링 복잡성, (b) 디자인시에 흐름의 구조를 숙지, (c) 정적으로 정의되거나 또는 임시적으로/동적으로(ad-hoc/dynamic) 정의됨, (d) 흐름을 그의 라이프사이클 내의 여러 지점에서 작성 및 편집하는 것의 용이성, 및 (e) 비지니스 로직과 핵심 작업 흐름 프로세스의 약한 또는 강한 연관성 등의 다양한 차원에 있어서 달라진다. 기존의 모델은 이런 모든 요소를 수용하지는 못한다.
게다가, 대부분의 기존의 작업 흐름 모델은 언어 기반 방식(예를 들어, BPEL4WS, XLANG/S 및 WSFL) 또는 애플리케이션 기반 방식에 기초한다. 언어 기반 방식은 사용자/프로그래머가 작업 흐름 프로세스를 모델링하는 것을 돕는 사전 정의된 구문의 폐집합(a closed set of predefined constructs)을 갖는 상위 레벨 작업 흐름 언어이다. 작업 흐름 언어는 사용자가 작업 흐름 모델을 구축할 수 있게 해주는 구문 폐집합에 대한 모든 시맨틱 정보를 전달한다. 그렇지만, 이 언어는 개발자에 의해 확장가능하지 않으며 작업 흐름 모델을 구성하는 프리미티브 폐집합(a closed set of primitive)을 나타낸다. 이 언어는 작업 흐름 시스템 벤더에 의해 출하된 언어 컴파일러에 의존하고 있다. 작업 흐름 시스템 제품 벤더만이 그 제품의 장래의 버전에서 일련의 새로운 구문으로 그 언어를 확장시킴으로써 그 모델을 확장시킬 수 있다. 이것은 종종 그 언어와 연관된 컴파일러의 업그레이드를 필요로 한다.
애플리케이션 기반 방식은 도메인 관련 문제(domain specific problem)를 해결하기 위해 애플리케이션 내에 작업 흐름 기능들을 갖는 애플리케이션이다. 이들 애플리케이션은 정말로 확장가능하지도 않고 또 프로그램가능 모델도 갖지 않는다.
기존의 방식에서는, 복잡성, 사전 숙지, 동적 작업 흐름, 작성의 용이, 그리고 비지니스 로직과 핵심 작업 흐름과의 관련 정도의 문제가 적절히 해소되지 않고 있다. 여러가지 부류의 작업 흐름을 모델링하기 위해 시각적 작업 흐름 디자이너를 구축하는 데 이용할 수 있는 확장가능하고 커스터마이즈가능하며(customizable) 또 재호스팅가능한 작업 흐름 디자이너 프레임워크가 존재하지 않는다. 기존의 시 스템은 사용자로 하여금 그래픽적으로 작업 흐름 프로세스를 디자인하고 또 개발자가 선택한 프로그래밍 언어로 비지니스 로직을 연관시킬 수 있게 해주는 RAD(rapid application development) 스타일 작업 흐름 디자인 경험을 제공하지 못한다. 게다가, 잉크가 지원되는(ink-enabled) 작업 흐름 디자이너가 없다.
또한, 기존의 시스템은 작업 흐름을 실행하기 위한 매끄러운 임시적이거나 동적인 편집을 제공하지 못한다. 작업 흐름 프로세스는 현실적으로 동적이고 유동적이며 그의 형태는 디자인시 전적으로 예측될 수 없다. 작업 흐름 프로세스는 구조화된 방식으로 시작되며 궁극적으로 그의 실행 수명 동안에 진화하고 변화한다. 작업 흐름 구축자가 디자인 시에 여러가지 타입의 작업 흐름 모델을 작성할 수 있을 뿐만 아니라 실행 중인 작업 흐름에 대한 임시적이거나 동적인 변경을 깔끔하게 행할 수 있게 해주는 작업 흐름 작성 프레임워크가 필요하다. 작업 흐름 프로세스가 설치되어 실행되고 있는 후에도, 비지니스 요건의 변화로 인해 어쩔 수 없이 현재 실행 중인 작업 흐름 프로세스를 변경 또는 편집해야만 하는 경우가 있다. 작업 흐름 프로세스의 런타임 작성을 제공하는 시스템이 필요하다.
게다가, 작업 흐름 프로세스는 작업 흐름 프로세스 모델의 다수의 단계들에 걸쳐 있는 횡단적이고 복잡한 관심사(cross cutting orthogonal and tangled concerns)를 처리한다. 예를 들어, 작업 흐름 프로세스의 일부는 장기 실행 중인 트랜잭션에 참여하도록 디자인되어 있는 반면, 동일 프로세스의 다른 부분은 동시 실행을 위해 디자인되어 있다. 동일 작업 흐름 프로세스의 또다른 부분은 추적(tracking)을 필요로 하는 반면, 다른 부분은 비지니스 또는 애플리케이션 레벨 예 외 처리를 한다. 작업 흐름 프로세스의 하나 이상의 부분들에 일정한 거동들을 적용할 필요가 있다.
어떤 작업 흐름 모델링 방식은 모든 예외 및 사람 개입을 비롯한 전체 비지니스 프로세스의 흐름-기반(flow-based)에 대한 완벽한 설명을 필요로 하기 때문에 비현실적이다. 이들 방식 중 어떤 것은 예외가 발생할 때 부가 기능을 제공하는 반면, 다른 방식들은 비지니스 프로세스를 모델링하는 흐름-기반 방식 대신에 오로지 제약-기반(constraint-based) 방식만을 이용한다. 기존의 시스템은 흐름-기반 방식 또는 제약-기반 방식 중 하나를 구현한다. 이러한 시스템은 너무 융통성이 없어서 많은 통상의 비지니스 상황을 모델링하지 못한다.
따라서, 이들 및 다른 단점 중 하나 이상을 해소하기 위한 컴포넌트화되고 확장가능한 작업 흐름 모델이 요망된다.
본 발명의 실시예들은 컴포넌트화된 작업 흐름 모델을 구축하기 위한 확장가능한 프레임워크를 제공한다. 특히, 작업 흐름 프로세스의 각 단계는 작업 흐름 단계의 디자인시 측면, 컴파일시 측면, 및 런타임 측면을 기술하는 관련 컴포넌트 모델을 갖는다. 게다가, 어떤 개발자라도 이들 컴포넌트를 작성함으로써 핵심 작업 흐름 모델을 확장할 수 있다. 본 발명은 고도로 형식적인 기계-대-기계 프로세스, 제약-기반의 임시적인 사람 작업 흐름, 그리고 흐름-기반 방식과 제약-기반 방식이 혼합된 작업 흐름을 비롯한 여러가지 종류의 작업 흐름의 실행을 조정하기에 충분히 유연성있고 강력한 작업 흐름 엔진을 포함한다. 작업 흐름 엔진은 활성화, 실행, 쿼리 및 실행 중인 작업 흐름에 대한 제어 기능을 가능하게 해준다. 예를 들어, 본 발명은 실행 중인 작업 흐름에 대한 임시적이고 동적인 변경을 가능하게 해준다. 작업 흐름 엔진은 서버 환경 및 클라이언트 환경 둘다를 비롯하여 다양한 호스트 환경에서 재호스팅되거나 그에 내장될 수 있다. 각각의 특정의 호스트 환경은 작업 흐름 엔진을 일련의 서비스 프로바이더들과 융합시킨다. 서비스 프로바이더들의 전체 기능들이 특정의 호스트 환경에서 실행될 수 있는 작업 흐름의 종류를 결정한다.
본 발명의 다른 실시예들은 작업 흐름 모델을 직렬화하기 위한 확장가능 조정 마크업 언어(extensible orchestration markup language, XOML) 등의 선언적 포맷(declarative format)을 제공한다. 이 선언적 포맷에 의해 사용자는 일련의 컴포넌트를 작성함으로써 작업 흐름 모델을 확장시킬 수 있다. 작업 흐름 프로세스의 여러가지 단계에 대응하는 시맨틱스(semantics)는 컴파일 시에 주어진 컴포넌트에 대한 시맨틱스를 검증하고 시행하는 활동 검증자 컴포넌트(activity validator component) 내에 캡슐화된다. 본 발명의 선언적 포맷의 실시예들은 또한 데이터를 선언하는 것 및 그 데이터를 작업 흐름 모델의 여러가지 요소들과의 연관시키는 것을 가능하게 해준다. 선언적 포맷은 작업 흐름을 통한 데이터의 변환을 지원한다. 예를 들어, 이 포맷은 작업 흐름 모델 내에 데이터베이스 또는 파일, 코드 스니펫(code snippet), 및 비지니스 규칙 등의 외부 데이터 소스를 선언적으로 표현한다.
본 발명의 실시예는 여러가지 부류의 작업 흐름을 모델링하는 그래픽/시각적 작업 흐름 디자이너를 구축하기 위한 확장가능하고 커스터마이즈가능하며 재호스팅 가능한 작업 흐름 디자이너 프레임워크를 제공한다. 본 발명의 다른 실시예는 사용자가 임의의 프로그래밍 언어에서 그래픽적으로 작업 흐름 프로세스를 디자인하고 또 비지니스 로직을 연관시킬 수 있도록 RAD(rapid application development) 스타일 작업 흐름 디자인 경험을 지원한다. 본 발명의 실시예에서, 펜과 타블릿 기술을 이용하는 잉크 지원도 제공한다. 본 발명은 사용자에 의해 작성된 작업 흐름이 내부 표현으로 변환되는 자유 형식 드로잉 화면(free form drawing surface)을 제공한다. 본 발명은 기존의 드로잉 화면 상에서의 잉크 편집(ink editing)(예를 들어, 활동의 부가/삭제) 및 기존의 작업 흐름의 잉크 주석 첨부(ink annotation)(예를 들어, 디자인 화면 상에 손으로 작성한 설명, 제안, 알림)를 통한 작업 흐름의 생성 및 수정을 지원한다.
본 발명의 또다른 실시예들은 선언적 방식으로 횡단적 거동을 포착하고 그 거동을 작업 흐름 모델의 선택된 일부분에 적용시키는 컴포넌트들을 제공한다. 본 발명의 다른 실시예들은 작업 흐름 모델의 선택된 부분을 그와 관련된 거동의 관점에서 실행한다. 본 발명의 실시예들은 작업 흐름 프로세스 모델의 다수의 단계들에 걸쳐 있는 횡단적이고 복잡한 관심사를 처리하는 프레임워크, 재사용가능한 컴포넌트, 및 언어를 제공한다.
본 발명의 한 측면에 따르면, 컴퓨터 구현 방법은 작업 흐름에 관련된 사용자 코드를 참조하여 작업 흐름을 수행한다. 컴퓨터 구현 방법은 사용자 코드를 컴파일하는 단계를 포함한다. 본 방법은 또한 컴파일되지 않은(Uncompiled) 작업 흐름과 컴파일된 사용자 코드를 포함한다. 또한, 본 방법은 컴파일된 코드로 컴파일 되지 않은 작업 흐름을 실행하는 단계를 포함한다. 본 발명은 컴파일되지 않은 작업 흐름이 실행되는 동안 사용자로 하여금 컴파일되지 않은 작업 흐름을 동적으로 수정하도록 허용하는 단계도 포함한다.
본 발명의 다른 측면에 따르면, 하나 이상의 컴퓨터 판독가능 매체는 작업 흐름에 관련된 사용자 코드를 참조하여 작업 흐름을 수행하는 컴퓨터 실행가능 컴포넌트들을 가진다. 컴포넌트들은 사용자 코드를 실행가능 객체 코드로 변환하는 컴파일러 컴포넌트를 포함한다. 또한, 컴포넌트들은 컴파일러 컴포넌트로부터의 실행가능 객체 코드로 컴파일되지 않은 작업 흐름을 실행하는 작업 흐름 컴포넌트를 포함한다. 컴포넌트들은 작업 흐름 컴포넌트가 컴파일되지 않은 작업 흐름을 실행하는 동안 사용자로 하여금 컴파일되지 않은 작업 흐름을 동적으로 수정하도록 허용하는 디자이너 컴포넌트도 포함한다.
본 발명의 또 다른 측면에 따르면, 시스템이 작업 흐름에 관련된 사용자 코드를 참조하여 작업 흐름을 수행한다. 시스템은 컴파일되지 않은 작업 흐름과 사용자 코드를 저장하고 있는 메모리 영역을 포함한다. 또한, 시스템은 메모리 영역에 저장된 사용자 코드를 컴파일하고, 컴파일된 코드로 컴파일되지 않은 작업 흐름을 실행하고, 컴파일되지 않은 작업 흐름이 실행되는 동안 사용자로 하여금 컴파일되지 않은 작업 흐름을 동적으로 수정하도록 허용하는 컴퓨터 실행가능 명령어를 실행하도록 구성된 프로세서도 포함한다.
다른 대안에서, 본 발명은 여러가지 다른 방법 및 장치를 포함할 수 있다.
다른 특징들은 부분적으로 명백하고 또 부분적으로 이후에 지적될 것이다.
도면 전체에 걸쳐 대응하는 도면 부호는 대응하는 구성요소를 나타낸다.
본 발명의 실시예들은 비지니스 프로세스 등의 프로세스를 나타내는 작업 흐름을 모델링한다. 비지니스 프로세스란 예측가능하고 반복가능한 결과를 가져오는 의존적이고 순서화된 태스크, 활동 등을 말한다. 조직의 운영 절차, 제도적인 실무 지식, 및 정보 자원을 비롯하여, 비지니스 프로세스는 정의된 비지니스 목적을 효율적이고 적시에 만족시키도록 디자인된다. 효율적인 환경에서, 계속 변화하는 회사 요구 사항을 해소하기 위해, 프로세스의 기능 컴포넌트들은 용이하게 식별, 적응 및 설치될 수 있다. 작업 흐름은 비지니스 프로세스에서의 태스크와 상호작용하는 최종 사용자의 경험이다. 태스크는 활동, 컴포넌트, 기타 등등으로서 모델링되며, 각 태스크는 사람 또는 기계에 의해 수행되는 작업 단위를 나타낸다. 일 실시예에서, 복수의 활동들이 사용자에게 제공된다. 사용자는 활동들을 선택하고 이를 조직화하여 작업 흐름을 생성한다. 생성된 작업 흐름은 비지니스 프로세스를 모델링하기 위해 실행된다. 도 1을 참조하면, 전형적인 작업 흐름(100)은 태스크들 및 제어 흐름 복합 활동들을 포함한다.
일례에서, 조정 엔진 작업 흐름 모델은 여러가지 부류의 작업 흐름의 모델링, 작성 및 실행을 지원한다. 예들로서는 주어진 문제점을 순서화된 시퀀스로 또는 일련의 비동기적인 이벤트로서 일어나는 일련의 구조화된 단계(a structured set of steps)로서 모델링하는 것이 있다. 조정 엔진은 스케쥴의 실행을 조율한다. 스케쥴은 트리 구조로 계층적으로 정렬된 일련의 조직화된 활동(an organized set of activities)이다. 실행 중인 활동의 실행 컨텍스트(execution context) 및 그 활동이 볼 수 있는 공유 데이터는 스코프(scope)에 의해 제공된다. 각각의 활동은 작업 흐름 프로세스 내의 단계들에 대한 메타데이터를 캡슐화하는 컴포넌트를 나타낸다. 활동은 작업 흐름 모델에서의 기본적인 실행 단위이며, 관련 프로퍼티, 핸들러, 제약 및 이벤트를 갖는다. 각각의 활동은 임의의 프로그래밍 언어로 사용자 코드로써 구성될 수 있다. 예를 들어, 사용자 코드는 CLR(common language runtime, 공통 언어 런타임) 언어로 작성된 비지니스 또는 애플리케이션 로직 또는 규칙을 나타낼 수 있다. 각각의 활동은 사용자 코드로 실행되면서 사전-가로채기 후크(pre-interception hook) 및 사후-가로채기 후크(post-interception hook)를 지원한다. 각각의 활동은 관련 런타임 실행 시맨틱스 및 거동(예를 들어, 상태 관리, 트랜잭션, 이벤트 처리 및 예외 처리)을 갖는다. 활동들은 다른 활동들과 상태를 공유할 수 있다. 활동들은 프리미티브 활동(primitive activity)일 수 있거나 복합 활동(composite activity)으로 그룹화될 수 있다. 프리미티브 활동, 또는 기본적인 활동은 하위구조(substructure){예컨대, 자식 활동(child activity)}를 갖지 않으며, 따라서 트리 구조에서 리프 노드(leaf node)이다. 복합 활동은 하위구조를 포함한다(예를 들면, 이것은 하나 이상의 자식 활동들의 부모가 된다).
일 실시예에서, 활동들은 3가지 유형, 즉 단순 활동(simple activity), 컨테이너 활동(container activity) 및 루트 활동(root activity)이 있다. 이 실시예에서, 모델 내에 하나의 루트 활동이 있으며, 루트 활동 내에 단순 활동 또는 컨테이너 활동이 전혀 없거나 얼마든지 있다. 컨테이너 활동은 단순 활동 또는 컨테이 너 활동을 포함할 수 있다. 전체 작업 흐름 프로세스는 상위 차원의 작업 흐름 프로세스를 구축하기 위한 활동으로서 사용될 수 있다. 게다가, 활동은 인터럽트가능(interruptible)이거나 비인터럽트가능(non-interruptible)일 수 있다. 비인터럽트가능 복합 활동은 인터럽트가능 활동을 포함하지 않는다. 비인터럽트가능 활동은 활동을 방해하는 서비스를 갖지 않는다.
조정 엔진은 일련의 전형적인 활동을 제공한다. 도 2를 참조하면, 활동 상속 트리는 전형적인 활동을 예시하고 있다. 도 2에 열거된 전형적인 활동은 부록 A에 상세히 기술되어 있다. 게다가, 어떤 사용자라도 작업 흐름 모델을 확장시키기 위해 하나 이상의 활동을 작성할 수 있다. 예를 들어, 사용자는 특정의 비지니스 문제점, 도메인, 작업 흐름 표준(예를 들어, 비지니스 프로세스 실행 언어) 또는 타겟 플랫폼에 대한 활동들을 작성할 수 있다. 조정 엔진은 예를 들어 코드, 타입 해석(type resolution) 및 타입 시스템을 분석하는 서비스들, 직렬화 및 렌더링을 위한 서비스들을 비롯하여, 활동을 작성하기 위한 풍부한 일련의 서비스를 사용자에게 제공할 수 있다.
일 실시예에서, 각각의 활동은 적어도 3개의 부분, 즉 메타데이터, 인스턴스 데이터 및 실행 로직을 갖는다. 활동의 메타데이터는 구성될 수 있는 데이터 프로퍼티를 정의한다. 예를 들어, 어떤 활동들은 활동 추상 베이스 클래스(activity abstract base class)에 정의되어 있는 일련의 공용 메타데이터를 공유할 수 있다. 각각의 활동은 이 클래스를 확장함으로써 그의 필요에 따라 그 자신의 부가의 메타데이터 프로퍼티를 선언한다.
메타데이터 프로퍼티의 값은 활동이 구성되어 있는 스케쥴의 인스턴스들 중에서 해당 활동의 모든 인스턴스들에게 공유된다. 예를 들어, 사용자가 스케쥴 A를 생성하고 그에 전송 활동(send activity)을 부가하는 경우, 전송 활동은 그의 메타데이터의 일부로서 식별 정보(예를 들어, "001")를 부여받는다. 스케쥴에 부가된 제2 전송 활동은 그 자신의 고유한 식별 정보(예를 들어, "002")를 받는다. 스케쥴 A의 다수의 인스턴스들이 생성되고 실행되면, 전송 "001"의 모든 인스턴스들이 메타데이터 값들을 공유하게 된다. 이와 반대로, 활동 인스턴스 데이터는 실행 중인 스케쥴 인스턴스 내에서 그 활동 인스턴스에 관련된 일련의 데이터를 정의한다. 예를 들어, 지연 활동(delay activity)은 지연 활동의 타임아웃 값을 나타내는 날짜 및 시각인 자신의 인스턴스 데이터에 대하여 읽기전용 프로퍼티를 부여할 수 있다. 이 값은 지연 활동이 실행되기 시작할 때 이용가능하고, 지연 활동의 매 인스턴스마다 달라질 가능성이 많다. 스케쥴의 인스턴스들과 특히 활동 및 태스크의 인스턴스들을 참조하는 것은 통상적인 일이며, "인스턴스"로만 참조가 한정되는 것은 아니다.
복합 활동은 일련의 그의 자식 활동을 또다른 요소로서 갖는다. 자식 활동은 일 실시예에서는 메타데이터로 간주된다. 조정 엔진 모델은 스케쥴의 인스턴스 내에서 이 메타데이터를 런타임 시에 처리하는 것을 명시적으로 허용한다. 실행 중인 스케쥴 인스턴스에 대한 메타데이터(활동 트리)만이 영향을 받도록 그 스케쥴의 일부인 복합 활동에 새로운 자식 활동을 부가하는 것이 가능하다.
그 다음에 도 3을 참조하면, 각각의 활동은 그 활동에 대한 컴포넌트 모델을 형성하는 일련의 관련 컴포넌트를 갖는다. 일련의 관련 컴포넌트로는 활동 실행자(activity executor), 활동 디자이너(activity designer), 활동 직렬화기(activity serializer), 활동 검증기(activity validator)(예를 들어, 시맨틱 검사기) 및 활동 코드 생성기(activity code generator)가 있다. 활동 실행자는 그 활동에 대한 실행 시맨틱스를 구현하는 무상태 컴포넌트(stateless component)이다. 활동 실행자는 활동을 구현하기 위해 그 활동의 메타데이터에 대해 작업한다. 코어 스케쥴러(core scheduler)는 활동 실행자에 서비스를 제공하기 위해 활동 실행자에 대한 서비스 프로바이더로서 기능한다.
활동 디자이너는 활동의 디자인시 시각적 표현을 시각적으로 디스플레이한다. 활동 디자이너는 디자이너 계층 구조 내의 노드이며, 테마(theme) 또는 스킨(skin)이 지정될 수 있다. 활동 디자이너는 디자인 환경(예를 들어, 애플리케이션 프로그램)에서 호스팅되고 서비스를 통해 호스트 디자인 환경과 상호작용한다. 활동 검증기는 런타임시 뿐만 아니라 컴파일시에도 활동 시맨틱스를 시행한다. 활동 검증기는 작업 흐름 모델의 컨텍스트에 대해 작용하고 환경(예를 들어, 컴파일러, 디자이너 또는 런타임)에 의해 제공되는 서비스를 사용한다. 작업 흐름의 라이프사이클 내의 여러 지점에서 검증이 행해진다. 작업 흐름의 직렬화된 표현을 생성할 때, 컴파일할 때, 및 사용자의 요청에 응답할 때 구조적 부합성 검사(structural compliance check)가 행해진다. 실행 중인 인스턴스의 활동 트리에 활동을 부가하거나 이를 교체하는 등의 런타임 동작을 안전하게 하기 위해, 시맨틱 검사는 컴파일 시에 수행된 것보다 더 엄격하게 런타임 시에 시행될 수 있다. 본 발명은 예를 들어 미리 정해진 인터페이스 요건과 부합 또는 일치하는지를 알아보기 위해 각각의 활동과 연관된 시맨틱스를 평가한다.
활동 직렬화기는 활동의 메타데이터를 직렬화하는 컴포넌트이다. 활동 직렬화기는 여러가지 모델/포맷 직렬화기로부터 호출된다. 전체 작업 흐름 모델은 확장가능 스키마(extensible schema)에 기초하여 선언적 마크업 언어(declarative markup language)로 직렬화되는데, 원하는 바에 따라 나중에 다른 작업 흐름 언어로 변환될 수 있다.
일 실시예에서, 활동에 대한 컴포넌트 모델은 컴퓨터 판독가능 매체 상에 데이터 구조로서 저장된다. 데이터 구조에서, 활동 디자이너는 활동을 시각적으로 표현하기 위한 데이터를 저장하는 이미지 필드(image field storing data)(예를 들어, 아이콘)에 의해 표현된다. 게다가, 하나 이상의 작성시 필드(author time field)는 활동과 연관된 프로퍼티, 메소드 및 이벤트를 정의하는 메타데이터를 저장한다. 활동 직렬화기는 작성시 필드에 저장된 메타데이터를 활동의 선언적 표현으로 전달하기 위한 데이터를 저장하는 직렬화기 필드에 의해 표현된다. 활동 생성기는 작성시 필드에 저장된 메타데이터와 연관된 소프트웨어 코드를 저장하는 비지니스 로직 필드에 의해 표현된다. 활동 실행자는 비지니스 로직 필드에 저장된 소프트웨어 코드를 실행하기 위한 데이터를 저장하는 실행자 필드에 의해 표현된다.
스코프(scope) 및 스케쥴
실행 중인 활동의 실행 컨텍스트 및 그 활동이 볼 수 있는 공유 데이터는 스 코프에 의해 제공된다. 스코프는 코어 활동들 중 하나이다. 스코프는 트랜잭션 시맨틱스, 에러-처리 시맨틱스, 보상, 이벤트 핸들러, 및 데이터 상태 관리를 갖는 장기 실행 서비스의 상태 및 변수들을 한데 모으기 위한 통합 구문(unifying construct)이다. 스코프는 관련 예외 및 이벤트 핸들러를 가질 수 있다. 한 실시예에서, 스코프는 트랜잭션적(transactional)이거나, 원자적(atomic)이거나, 장기 실행(long running)되거나 또는 동기화(synchronized)될 수 있다. 사용자 변수에 대한 읽기-쓰기 또는 쓰기-쓰기 액세스가 충돌하는 경우에, 병행 제어(concurrency control)가 사용자에게 제공된다. 스코프는 또한 트랜잭션 경계, 예외 처리 경계, 및 보상 경계이기도 하다. 스코프가 스케쥴 내에 내포될 수 있기 때문에, 이름이 충돌하기 않게 (스코프들이 내포되어 있을지라도) 동일한 이름을 갖는 변수, 메시지, 채널 및 상관 세트(correlation set)를 서로 다른 스코프에 선언하는 것이 가능하다.
스케쥴 내에 내포된 스코프는 그 스케쥴의 컨텍스트 내에서만 실행가능하다. 스케쥴은 애플리케이션(예를 들어, 독립적인 실행가능 엔티티)으로서 또는 라이브러리(예를 들어, 다른 스케쥴로부터 호출되기 위한 것임)로서 컴파일될 수 있다. 라이브러리로서 컴파일되는 모든 스케쥴은 다른 스케쥴 내부로부터 호출될 수 있는 새로운 활동 타입을 효과적으로 구성한다. 스케쥴의 메타데이터는 파라미터의 선언을 포함한다.
스케쥴이 개발되면, 개발된 스케쥴의 인스턴스들이 실행될 수 있다. 스케쥴인스턴스를 활성화 및 제어하는 프로세스는 조정 엔진이 내장되어 있는 호스트 환 경의 함수이다. 조정 엔진은 스케쥴을 테스트하는 데 사용될 수 있는 실속형 "단순 호스트"를 제공한다. 게다가, 조정 엔진은 서비스 환경(즉, 호스트)과 상호작용하기 위해 엔진 및 외부 애플리케이션에 의해 똑같이 사용되는 "서비스 프로바이더" 모델(예를 들어, 애플리케이션 프로그래밍 인터페이스)의 표준화를 촉진하는 활성화 서비스(activation service)를 제공한다. 활성화 서비스는 선택적으로 파라미터를 전달하여 특정 스케쥴 타입의 스케쥴 인스턴스를 생성한다. 그 스케쥴 인스턴스는 기본적으로 실행 중인 스케쥴 인스턴스에 대한 프록시이며, 그 인스턴스를 고유하게 식별해주는 식별자, 그 스케쥴의 메타데이터(활동 트리)에 대한 참조, 및 인스턴스를 정지(suspend), 재개(resume) 및 종료(terminate)시키는 메소드를 포함한다. 활성화 서비스는 또한 주어진 스케쥴 인스턴스 식별자에 기초하여 스케쥴 인스턴스를 찾는 것을 지원한다.
코드- 비사이드 (Code-Beside)
스코프 활동(scope activity)은 스코프 활동에 대한 비지니스 로직을 포함하는 관련 코드-비사이드 클래스를 가질 수 있다. 스케쥴은 그 자체가 스코프이기 때문에, 스케쥴도 역시 코드-비사이드 클래스를 가질 수 있다. 스케쥴 내에 내포된 어떤 스코프라도 역시 그 자신의 코드-비사이드 클래스를 가질 수 있다. 스코프 내에 내포된 활동들은 그들의 공유된 데이터 상태 및 비지니스 로직에 대한 컨테이너로서 기능하는 스코프의 코드-비사이드 클래스를 공유한다. 예를 들어, 코드 활동에 대한 메타데이터는 코드-비사이드 내에 특정 서명을 갖는 메소드에 대한 참조를 포함한다. 다른 예에서, 전송 활동에 대한 메타데이터는 특정 서명의 코드 -비사이드 메소드에 대한 선택적인 참조(optional reference)와 메시지 선언 및 채널 선언에 대한 필수적인 참조(mandatory reference)를 포함한다.
코드-비사이드의 전형적인 사용으로는, 변수, 메시지, 채널 및 상관 세트의 선언, in/out/ref 파라미터의 선언, 부가적인 커스텀 프로퍼티의 선언, 전송될 메시지의 선언, 수신된 메시지의 처리, 부울 값을 반환하는 코드로 표현된 규칙의 구현, 지역적으로 정의된 변수의 처리, 활동 메타데이터 및 인스턴스 데이터의 읽기, 활동 인스턴스 데이터의 쓰기(예를 들어, 실행될 활동에 관한 프로퍼티를 설정하기), 이벤트의 발생, 예외 던짐, 내포된 스코프 및 스케쥴 호출 경계를 넘는 것을 비롯하여 실행 중인 스케쥴 인스턴스의 활동 트리에서 활동의 계층 구조를 열거(enumerate)하거나 네비게이션하기(navigate), 새로운 활동들을 실행 중인 스케쥴 인스턴스 내의 복합 활동에 부가, 실행 중인 스케쥴 인스턴스 내의 활동들과 연관된 선언적 규칙들을 변경, 및 다른 실행 중인 스케쥴 인스턴스에 대한 참조 및 처리를 획득하는 것이 있다.
도 4를 참조하면, 블록도가 전형적인 컴포넌트 모델 라이프사이클을 예시한다. 사용자는 작업 흐름에 관련된 사용자 코드를 참조하여 작업 흐름을 수행하기 위해 하나 이상의 컴퓨터 판독가능 매체에 저장된 컴퓨터 실행가능 컴포넌트들과 상호작용한다. 컴퓨터 실행가능 컴포넌트들은 컴파일러 컴포넌트(402), 작업 흐름 컴포넌트(404), 디자이너 컴포넌트(406), 및 인터페이스 컴포넌트(408)를 포함한다. 인터페이스 컴포넌트(408)는 사용자로부터 사용자 코드를 수신한다. 컴파일러 컴포넌트(402)는 사용자 코드를 실행가능 객체 코드로 컴파일하거나 그렇지 않 으면 변환한다. 작업 흐름 컴포넌트(404)는 컴파일러 컴포넌트(402)로부터의 실행가능 객체 코드로 컴파일되지 않은 작업 흐름을 실행한다. 디자이너 컴포넌트(406)는 사용자로 하여금 컴파일되지 않은 작업 흐름을 동적으로 수정하도록 허용한다. 즉, 디자이너 컴포넌트(406)는 작업 흐름 컴포넌트(404)가 컴파일되지 않은 작업 흐름을 실행하는 동안 사용자로 하여금 컴파일되지 않은 작업 흐름을 수정하도록 허용한다. 또한, 본 발명은 수정된 작업 흐름을 수행하거나 실행한다. 컴파일되지 않은 작업 흐름을 실행하고 수정된 작업 흐름을 실행할 때, 그 작업 흐름을 컴파일하지 않고도 실행하는 단계를 포함한다.
일 실시예에서, 작업 흐름은 각각이 그와 연관된 활동 실행자를 갖는 복수의 활동들을 포함한다. 이런 실시예에서, 작업 흐름 컴포넌트(404)는 각각의 활동에 대한 활동 실행자를 실행함으로써(예컨대, 컴파일된 사용자 코드를 참조하여) 컴파일되지 않은 작업 흐름을 실행한다. 일 실시예에서, 하나 이상의 컴퓨터 판독가능 매체는 본 명세서에 기술된 방법을 수행하는 컴퓨터 실행가능 명령어를 가진다.
도 4에 도시된 바와 같은 시스템은 작업 흐름에 관련된 사용자 코드를 참조하여 작업 흐름을 수행한다. 구체적으로는, 본 시스템은 컴파일되지 않은 작업 흐름과 사용자 코드를 저장하는 메모리 영역을 포함한다. 또한, 시스템은 메모리 영역에 저장된 사용자 코드를 컴파일하고, 컴파일된 코드로 컴파일되지 않은 작업 흐름을 실행하고, 컴파일되지 않은 작업 흐름이 실행되는 동안 사용자로 하여금 컴파일되지 않은 작업 흐름을 동적으로 수정하도록 허용하는 컴퓨터 실행가능 명령어를 실행하도록 구성된 프로세서를 포함한다. 도 4의 하드웨어, 소프트웨어, 및 전형 적인 시스템은 메모리 영역에 저장된 사용자 코드를 컴파일하는 전형적인 수단, 컴파일된 코드로 컴파일되지 않은 작업 흐름을 실행하는 전형적인 수단, 및 컴파일되지 않은 작업 흐름이 실행되는 동안 사용자로 하여금 컴파일되지 않은 작업 흐름을 동적으로 수정하도록 허용하는 전형적인 수단을 구성한다.
작업 흐름 스텐실(workflow stencil)
작업 흐름 스텐실(예를 들어, 작업 흐름 템플릿 또는 활동 패키지)은 루트 활동 및 일련의 활동들을 포함한다. 스텐실은 도메인(domain) 및/또는 호스트 특정된(host specific) 것일 수 있다. 전자의 예로는 구조화된 작업 흐름 스텐실, 사람 작업 흐름 스텐실, 및 비구조화된 작업 흐름 스텐실이 있다. 어떤 스텐실은 아마도 특정의 호스트 환경에서 함께 동작하도록 디자인된 하나 이상의 루트를 포함하는 일련의 활동으로서 "닫혀" 있을 수 있다. 다른 스텐실들은 다양한 정도로 "열려" 있을 수 있다. 스텐실은 그의 확장 사항(extensibility point)을 정의한다. 예를 들어, 개발자는 CustomRoot 및 새로운 추상 CustomActivity를 작성하고, CustomRoot와 CustomActivity로부터 파생되는 임의의 활동이 더해진 패키지를 선언한다.
전형적인 BPEL 또는 XLANG/S 스텐실은 이하의 특성을 갖는, 즉 상태 관리 및 트랜잭션에 참여하고, 관련 이벤트 및 예외 핸들러를 가지며, 계약 우선 모델(contract first model)을 지원하고, 분석 가능하고 또 잘 정의된 활성화 및 종료 거동을 갖는 루트 활동을 포함한다. 전형적인 스텐실은 또한 일련의 메시징 관련 활동(예를 들어, Send 및 Receive 및 그의 변형(variant)) 및 Scope, Loop, Condition, Listen 및 Throw 등의 다른 구조화된 활동을 포함한다.
전형적인 Halifax 스텐실은 이하의 특성을 갖는, 즉 묵시적인 상태 관리, 관련 예외 핸들러(0-n), 이벤트 기반 모델을 지원하고, 잘 정의된 활성화 거동을 가지며, 또 미정의된 종료를 갖는 루트 활동을 포함한다. 루트 활동은 0-n EventDriven 활동을 포함한다. 각각의 EventDriven 활동은 Halifax Action을 나타낸다. 각각의 EventDriven 활동은 관련 상태 관리 프로토콜을 가지며 원자적 스코프(atomic scope) 내에서 실행된다.
디자이너 프레임워크 (사용자 인터페이스)
조정 엔진은 여러가지 부류의 작업 흐름 모델을 위지위그(WYSWYG) 방식으로 디자인하기 위한 프레임워크를 제공한다. 예를 들어, 도 5를 참조하면, 작업 흐름을 작성하기 위한 상위 레벨 애플리케이션 사용자 인터페이스는 작업 흐름의 상세에 대해 마법사에 의존한다. 프레임워크는 개발자가 시각적인 작업 흐름 디자이너를 작성할 수 있게 해주는 일련의 서비스 및 거동을 포함한다. 이들 서비스는 작업 흐름 프로세스를 렌더링하는 효율적인 방법, 그 흐름을 드로잉하기 위한 잉크/태블릿에 대한 지원, 및 실행 취소/재실행, 드래그/드롭, 잘라내기/복사/붙여넣기, 줌(zoom), 펜(pan), 찾기/바꾸기, 북마크(bookmark), 장식, 검증 오류에 대한 스마트 태그(smart tag), 활동들에 대한 유효 드롭-타겟 지시자(valid drop-target indicator), 자동 레이아웃(auto layout), 쪽번호 보기(view pagination), 네비게이션 마커(navigation marker), 드래그 지시자(drag indicator), 머리말/꼬리말을 갖는 인쇄 및 미리보기 등의 디자이너 동작을 지원한다. 이러한 사용자 인터페이 스를 통해, 태스크 및 제어 흐름 복합 활동(예를 들어, 순차(sequential), 병렬(parallel) 및 조건부(conditional))을 포함하는 간단한 작업 흐름이 구성될 수 있다. 규칙 상세(예를 들어, 조건부 분기 논리, while 루프 논리) 또는 데이터 흐름 상세(예를 들어, 태스크 A의 출력이 태스크 B에 입력됨)를 위해 코드 입력(또는 기존의 컴파일된 코드에 대한 의존)이 필요하지 않다. 스케쥴(규칙 및 데이터흐름을 포함함)의 직렬화된 표현은 코드-비사이드가 필요하지 않은 어떤 시나리오의 경우에서는 독자적(self-contained)이고 완벽하다.
본 발명의 디자이너 프레임워크를 사용하면, 본 발명의 조정 엔진은 시각적 방식으로 소프트웨어 코드를 작업 흐름 모델과 연관되도록 지원하는 RAD(rapid application development) 스타일의 시각적 작업 흐름 디자이너를 포함한다. 작업 흐름 내의 각 활동은 관련 활동 디자이너를 갖는다. 각각의 활동 디자이너는 프레임워크 서비스의 관점에서 작성된다. 본 발명의 프레임워크는 또한 시각적 디자이너 모델을 포함한다. 시각적 디자이너 모델은 작업 흐름 모델에 기술되어 있는 관계(relationship)를 통해 서로 링크되어 있는 일련의 활동 디자이너를 포함한다. 도 6은 전형적인 작업 흐름 디자이너를 예시한 것이다. 본 발명은 실시간으로 사용자 코드를 작업 흐름 모델로 라운드 트립핑(round-tripping)하는 것을 가능하게 해주는 "코드-비사이드(Code-Beside)", "코드-위드인(Code-Within)" 및 "코드-온리(Code-Only)"를 비롯하여 코드를 작업 흐름 모델과 연관시키는 여러가지 모드를 포함한다. 본 발명은 또한 사용자가 작업 흐름을 구축하는 동안 실시간 시맨틱 에러를 제공한다.
한 실시예에서, 본 발명은 디자이너 프레임워크 사용자 인터페이스에서의 복수의 활동을 식별해주는 패키지를 사용자에게 제공한다. 본 발명은 또한 제공된 활동들의 계층적 구성 및 그 중 선택된 것을 사용자로부터 수신한다. 본 발명은 작업 흐름의 영속적 표현을 생성하기 위해 수신된 활동들을 직렬화한다. 본 발명은 또한 작업 흐름 내의 복수의 활동 중 하나에 연관된 비지니스 로직을 나타내는 소프트웨어 코드를 사용자로부터 수신한다. 본 발명은 또한 연관된 하나 이상의 시맨틱스를 갖는 사용자 정의된 활동을 수신할 수 있다. 본 발명은 미리 정의된 인터페이스 요건에 부합하는지를 알아내기 위해 시맨틱스를 평가하기 위한 시맨틱 검사기(semantic checker) 또는 검증기를 포함한다. 시맨틱스가 미리 정의된 인터페이스 요건에 부합하는 경우, 본 발명은 사용자 정의된 활동을 복수의 활동 중 하나로서 제공한다. 본 발명은 또한 하나 이상의 바이너리 파일을 생성하기 위해 소프트웨어 코드를 컴파일한다. 예를 들어, 본 발명은 직렬화된 작업 흐름 표현 및 소프트웨어 코드를, 작업 흐름의 실행가능 표현을 포함하는 단일 어셈블리로 컴파일한다. 본 발명은 생성된 작업 흐름을 실행한다. 일 실시예에서, 하나 이상의 컴퓨터 판독가능 매체가 이 방법을 수행하는 컴퓨터 실행가능 명령어들을 갖는다.
조정 엔진 디자이너는 사용자가 다른 생성된 스케쥴과 고차적 스케쥴(higher order schedule) 자신을 사용하여, 고차적 스케쥴을 재귀적으로 작성할 수 있게 해준다. 스케쥴의 인라인 확장(inline expansion)은 사용자가 스케쥴 내용을 인라인 방식으로 보고 그 내용을 잘라내기 또는 복사할 수 있게 해준다. 스케쥴의 인라인 확장을 가능하게 하고 또 스케쥴을 읽기 전용으로 만들기 위해, 인라인 스케쥴을 위한 별도의 디자인 화면 및 디자이너 호스트가 생성된다. 게다가, 복합 스케쥴 디자이너는 그 자신의 계층 구조를 갖는다. 디자이너가 사용자에 의해 확장될 때 호출된 스케쥴이 로드되어 디스플레이된다. 일 실시예에서, 활동이 디자인 화면 상에서 드롭되거나 복사될 때 디자이너가 축소(collapse)된다. 프로퍼티는 호출측 활동 디자이너와 호스팅된 스케쥴의 루트 디자이너를 연관(chain)시킨다. 이하의 함수는 디자이너로부터 활동을 부가하거나 제거하는 것을 방지한다.
internal static bool AreAllComponentsInWritableContext(ICollection components)
internal static bool IsContextReadOnly(IServiceProvider serviceProvider)
하부 구조가, 활동이 삽입되고 있는 컨텍스트가 쓰기가능(writable)인지를 검사하기 위해 이들 함수를 호출한다. 호스팅된 디자이너의 경우, 이들 함수는 false를 반환한다. 게다가, 프로퍼티는 수정되지 못하게 되어 있다. 다른 함수들은 적절한 컴포넌트들로부터 활동 디자이너를 페치(fetch)한다.
internal static ServiceDesigner GetSafeRootDesigner(IServiceProvider serviceProvider)
internal static ICompositeActivityDesigner GetSafeParentDesigner(object obj)
internal static IActivityDesigner GetSafeDesigner(object obj)
일례에서, 사용자는 스케쥴을 생성하고 이를 활동으로서 컴파일한다. 성공 적인 컴파일이면, 스케쥴은 도구 상자에 나타난다. 사용자는 컴파일된 스케쥴을 사용하도록 요구되는 경우 그 스케쥴을 열거나 생성한다. 사용자는 컴파일된 스케쥴을 도구 상자로부터 드래그하여 드롭한다. 축소된 스케쥴 디자이너가 디자인 화면 상에 보여진다. 사용자가 드롭된 컴파일된 스케쥴의 내용을 보기를 원하는 경우, 사용자는 호출된 스케쥴의 내용을 읽기 전용 상태에서 인라인 방식으로 보여주기 위해 스케쥴 디자이너를 확장시킨다. 호출된 스케쥴의 인라이닝(inlining)은 사용자로 하여금 서로 다른 스케쥴 디자이너들 간을 전환하지 않고도 호출된 스케쥴을 볼 수 있게끔 해준다. 이 특징은 기존의 스케쥴을 재사용함으로써 고차적 스케쥴을 작성하는 개발자들에게 유용하다.
테마/ 스킨을 사용하는 디자이너 프레임워크 커스텀화의 지원
디자이너 프레임워크를 사용하여 작성된 작업 흐름 디자이너는 작업 흐름 테마를 사용하여 커스터마이즈될 수 있다. 이것들은 디자이너의 다양한 측면을 선언적으로 기술하는 XML(extensible markup language, 확장 가능 마크업 언어) 파일일 수 있다. 작업 흐름 디자이너는 활동들을 확장하기 위해 파트너들에 대한 마법사 지원을 제공한다. 작업 흐름 디자이너에 의해 지원되는 전형적인 사용자 인터페이스 특징으로는, 실행 취소/재실행, 드래그/드롭, 잘라내기/복사/붙여넣기, 줌, 팬, 찾기/바꾸기, 북마크, 장식, 검증 에러에 대한 스마트 태그, 활동들에 대한 유효 드롭-타겟 지시자, 자동 레이아웃, 쪽번호 보기, 네비게이션 마커, 드래그 지시자, 머리말/꼬리말을 갖는 인쇄 및 미리보기, 그리고 문서 개요 통합을 포함하지만, 이에 한정되는 것은 아니다. 작업 흐름 디자이너는 XML 메타데이터를 사용하여 디자 이너의 룩앤필(look and feel)을 커스터마이즈할 수 있게 해주는 커스텀 디자이너 테마/스킨을 지원한다. 작업 흐름 디자이너는 백그라운드 컴파일을 지원한다. 일례에서, 스케쥴을 디자인하는 동안 검증 에러에 대한 스마트 태그 및 스마트 동작이 제공된다. 작업 흐름 디자이너는 임의의 컨테이너(예를 들어, 애플리케이션 프로그램, 쉘, 기타 등등)에서 호스팅될 수 있다.
전형적인 조정 엔진 프로그램은 수신 활동 및 그에 뒤이은 전송 활동을 포함한다. 프로세스는 메시지를 수신하고 그 메시지를 전송한다. 사용자는 "Hello World"라는 프로젝트를 생성하고 그 프로젝트에 조정 아이템(orchestration item)을 부가한다. 사용자는 이어서 디자인 화면 상에서 스코프 활동을 드래그 및 드롭한다. 그 다음에, 사용자는 수신 활동 및 그에 뒤이은 전송 활동을 스코프 상으로 드롭한다. 도 7은 디자이너에서의 작업 흐름(700)을 결과적으로 예시한 것이다. 각각의 활동 디자이너는 객체 모델에 관한 사용자 인터페이스 표현을 제공한다. 개발자는 객체 모델을 직접 프로그램하고 활동들에 관한 프로퍼티를 설정하거나 디자이너를 사용할 수 있다. 조정 엔진 디자이너는 개발자로 하여금 도구 상자로부터 활동을 선택하고 이를 디자이너 화면 내로 드래그할 수 있게 해준다. 활동이 이미 스케쥴 내에 배치었으나 이동할 필요가 있는 경우, 개발자는 그 활동을 (그 위에서 클릭함으로써) 선택하여 이동해야 할 스케쥴의 영역으로 드래그할 수 있다. 개발자가 드래그 및 드롭을 하는 동안 콘트롤 키를 누르고 있는 경우, 선택된 활동들의 복사본이 만들어진다.
능동 배치(active placement)는 가능한 드롭 지점(타겟)을 디자인 화면 상에 시각적 지시자로서 제공한다. 자동 스크롤링도 역시 드래그 및 드롭의 컨텍스트에 참여한다. 대규모 스케쥴을 처리할 때, 현재 뷰 포트(view port)에 있지 않은 디자이너의 영역들로의 네비게이션은 배치될 스케쥴의 영역으로 활동을 드래그함으로써 액세스가능하다.
드래그 및 드롭은 동일한 프로젝트 내의 스케쥴들에 걸쳐 지원되고 또 동일한 솔루션으로 다른 프로젝트 내의 스케쥴들에 걸쳐서도 지원된다. 활동이 디자이너 화면 상으로 배치된 후에, 개발자는 그 활동을 구성한다. 각각의 활동은 유효한 스케쥴이 되기 위해 개발자에 의해 구성된 일련의 프로퍼티를 갖는다. 이들 프로퍼티는 프로퍼티 브라우저에서 편집가능하다. 각각의 활동은 프로퍼티 브라우저에서 볼 수 있는 프로퍼티가 어느 것인지를 제어한다. 개발자가 여러가지 활동을 구성하는 것을 돕기 위해, 디자이너는 다양한 대화 상자 또는 "하위-디자이너"를 제공한다. 대화 상자들 각각은 활동들의 여러가지 프로퍼티를 위해 호출된다.
조정 엔진은 도구 상자에 제공된 활동들을 커스터마이즈할 수 있다. 개발자가 커스텀 활동 또는 스케쥴을 생성할 때, 최종 결과는 어셈블리이다. 대화 상자를 사용하여, 개발자는 어셈블리 위치로 브라우징하여 그 어셈블리가 조정 엔진 활동으로서 나타나게 만들기 위해 그 어셈블리를 선택할 수 있다. 다른 대안으로서, 개발자는 그 어셈블리를 조정 엔진 설치 경로에 배치할 수 있고 그 어셈블리는 조정 엔진 활동으로서 존재하게 된다.
애플리케이션 프로그래밍 인터페이스(API)
다른 실시예에서, 본 발명은 여러가지 작업 흐름 동작을 수행하는 애플리케 이션 프로그래밍 인터페이스(API)를 제공한다. 본 발명은 작업 흐름을 작성하는 디자인 애플리케이션 프로그래밍 인터페이스를 포함한다. 디자인 애플리케이션 프로그래밍 인터페이스는 작업 흐름을 작성하는 수단 및 작업 흐름을 생성하기 위해 활동들 중 하나 이상을 선택하는 수단을 포함한다. 본 발명은 또한 디자인 애플리케이션 프로그래밍 인터페이스를 통해 작성된 작업 흐름을 컴파일하는 컴파일 애플리케이션 프로그래밍 인터페이스를 포함한다. 컴파일 애플리케이션 프로그래밍 인터페이스는 작업 흐름을 직렬화하는 수단, 작업 흐름의 시각적 외관을 커스터마이즈하는 수단, 디자인 애플리케이션 프로그래밍 인터페이스를 통해 작성된 작업 흐름을 컴파일하는 수단, 및 작업 흐름을 검증하는 수단을 포함한다.
본 발명은 또한 작업 흐름 내의 활동들 각각에 타입을 연관시키는 타입 프로바이더 애플리케이션 프로그래밍 인터페이스도 포함한다. 타입 프로바이더 애플리케이션 프로그래밍 인터페이스는 작업 흐름 내의 활동들 각각에 그 타입을 연관시키는 수단을 포함한다.
하나 이상의 애플리케이션 프로그래밍 인터페이스는 작업 흐름을 작성하는 전형적인 수단, 작업 흐름을 생성하기 위해 활동들 중 하나 이상을 선택하는 전형적인 수단, 작업 흐름을 직렬화하는 전형적인 수단, 작업 흐름의 시각적 외관을 커스터마이즈하는 전형적인 수단, 작업 흐름을 검증하는 전형적인 수단, 작업 흐름을 컴파일하는 전형적인 수단, 및 작업 흐름 내의 활동들 각각과 어떤 타입을 연관시키는 전형적인 수단을 구성한다.
활동 실행 프레임워크
스케쥴 및 스코프를 제외하고, 엔진은 활동들을 추상 엔티티로서 간주하며 임의의 특정 활동의 특정 데이터 또는 시맨틱스를 알지 못한 채로 활동들의 실행을 단순히 조정한다. 일 실시예에서, 활동의 실행 동안에 4개의 엔티티, 즉 활동 그 자체, 실행 중인 활동의 부모 활동, 실행 중인 활동을 포괄하는 스코프, 및 조정 엔진이 상호작용한다. 각각의 엔티티는 서로 다른 기능을 갖는다.
활동의 실행 메소드(execute method)가 그의 활동 조정자(activity coordinator)에게 완료 신호를 보내지 않고 복귀하는 경우, 그 활동이 논리적 대기 상태(logical waiting state)에 있다고 말한다. 이러한 활동은 조정 엔진에 의해 취소되거나 계속된다(예를 들어, 활동이 기다리고 있는 아이템 또는 이벤트가 이용가능하게 되거나 발생하면, 엔진은 그 활동에게 이것을 통지한다).
논리적 대기 상태에 들어가지 않는 어떤 활동들은 절대로 취소될 수 없다. 예로서 전송 활동 및 코드 활동이 있는데 왜냐하면 이들은 외부 이벤트 또는 신청(subscriptions)에 대한 아무런 요구도 없이 실행되기 때문이다. 쓰레드를 건네받으면(즉, 그 실행 메소드가 조정 엔진에 의해 호출되면), 이들 활동은 완료될 때까지 동작한다. 조정 엔진은 이들을 취소시킬 기회를 결코 부여받지 못하는데 그 이유는 그 활동들이 완료 신호를 보낼 때까지 쓰레드를 반환하지 않기 때문이다.
조정 엔진 런타임(orchestration engine runtime)은 활동들이 어느 조정 엔진 상에서 실행되는지에 관한 이벤트를 트리거하기 위해 규칙들을 사용한다. 조정 엔진 디자이너는 이벤트를 트리거하기 위해 런타임 시에 사용자가 연관된 규칙들을 평가할 수 있는 기능을 제공한다. 조정 엔진 디자이너는 확장성 아키텍처 (extensibility architecture)를 제공함으로써 사용자가 여러가지 타입의 규칙 기술을 사용할 수 있게 해준다. 디자이너는 사용된 규칙 기술의 타입을 모른다.
일 실시예에서, 디자이너는 규칙을 활동과 연관시키기 위한 방법으로서 부울 표현식 핸들러를 지원한다. 이것은 사용자 코드 파일에서 사용자가 true 또는 false 값을 반환하는 메소드를 작성하며, 그 값에 기초하여 규칙이 트리거되는 것을 의미한다. 현재 Info Agent 및 BRE(Business Rules Engine)를 비롯하여 규칙을 평가하는 데 사용될 수 있는 다수의 기술이 있다. 이를 달성하기 위해, 디자이너는 규칙 기술 개발자가 디자이너에서 커스텀 사용자 인터페이스를 호스팅할 수 있게 해주는 확장성 아키텍처를 포함한다. 디자이너는 커스텀 사용자 인터페이스 작성자에게 코드 명령문 컬렉션(code statement collection)의 형태로 규칙을 직렬화하는 방법을 제공한다. 디자이너는 코드 명령문 컬렉션이 그 안에 삽입되어 있는 사용자 코드 파일에서 부울 핸들러를 발행한다. 조정 엔진은 규칙 작성자(rule writer)에 의해서도 사용될 수 있는 디폴트 사용자 인터페이스를 포함한다. 규칙 기술 프로바이더는 커스텀 규칙 선언을 생성, 커스텀 규칙 선언에 연관된 사용자 인터페이스 타입 에디터를 작성, 규칙 사용자 인터페이스를 호스팅하기 위해 커스텀 사용자 인터페이스를 생성, 및 저장 시에 코드 명령문을 생성함으로써 조정 엔진 디자이너에 규칙들을 부가한다.
일례에서, 사용자는 규칙이 첨부될 필요가 있는 활동 디자이너를 선택하고, 프로퍼티 브라우저에서 규칙 프로퍼티를 찾아내어 드롭 다운으로 "RuleExpressionHandler"를 선택하며(이에 의해 "Statements" 프로퍼티가 사용자 인터페이스에서 규칙 프로퍼티(Rule Property) 아래쪽에 나타남), "Statements" 프로퍼티에서 사용자 코드 메소드 이름을 지정하고, 규칙 관련 사용자 인터페이스를 호스팅하게 될 대화 상자를 호출하기 위해 사용자 인터페이스 타입 에디터를 호출하며, 새로운 서술식 행(predicate row)을 생성하고 이들을 함께 그룹화함으로써 대화 상자에서 규칙을 정의한다. 사용자 인터페이스는 사용자 코드 파일에서 메소드를 발행한다. 메소드 이름은 프로퍼티 브라우저에서 사용자에 의해 지정된 것과 동일할 것이다. 규칙을 생성하는 것과 동등한 코드 명령문이 규칙에 대한 사용자 코드 메소드에 삽입된다.
실행 중의 메시징
실행 중인 작업 흐름에서, 스케쥴로 전송되는 메시지는 특정의 스케쥴 인스턴스를 위한 것이다. 예를 들어, 구매 주문 #123에 대한 송장은 그 구매 주문의 발원지인(예를 들어, 그 주문을 내보냈던) 동일한 스케쥴 인스턴스로 다시 보내져야만 한다. 인바운드 메시지를 적절한 스케쥴 인스턴스와 매칭시키기 위해, 메시지 및 스케쥴 인스턴스는 상관 세트(correlation set)를 공유한다. 상관 세트는 단일값 상관 세트(single-valued correlation set)일 수 있으며, 이는 메시지 내의 식별자 필드가 스케쥴 인스턴스에 의해 보유된 동일한 유형의 식별자와 매칭됨을 의미한다. 다중 프로퍼티 상관 세트(multi-property correlation set)도 또한 가능하며, 데이터베이스 테이블에서의 다중 컬럼 일차키(multi-column primary key)와 유사하다.
스케쥴 인스턴스에 의해 보유된 상관 세트 값은 스케쥴 인스턴스가 메시지를 내보내거나(예를 들어, 값은 아웃바운드 구매 주문의 식별자 필드로부터 가져올 수 있음) 메시지를 수신할 때 초기화된다. 이 상관 세트 값은 그러면 그 스케쥴 인스턴스의 상태의 일부이다. 차후의 인바운드 메시지가 도착할 때, 스케쥴 인스턴스 상태 내에 보유된 상관 세트 값은 예상된 타입의 인바운드 메시지에 의해 보유된 식별자와 매칭된다. 일치가 발견되면, 상관 세트는 충족되고 메시지는 스케쥴 인스턴스로 전달된다.
상관 세트의 구현이 조정 엔진 및 호스트 환경의 함수이지만, 일 실시예에서 사용자는 스케쥴 인스턴스가 제대로 동작하도록 상관 세트를 선언한다. 다른 실시예에서, 어떤 활동들(예를 들어, SendRequest/ReceiveResponse 활동 및 ReceiveRequest/SendResponse 활동)은 사용자와 무관하게 상관 세트를 설정한다. 상관 세트가 적절히 초기화되고 준수되도록 하기 위해 광범위한 검증 검사가 전송 및 수신 활동에 의해 수행된다.
실행 중인 작업 흐름의 동적 편집
조정 엔진은 다양한 타입의 작업 흐름을 작성(이어서 시각화 및 실행)하기 위한 프레임워크를 제공한다. 예로는 이벤트-조건-동작(event-condition-action, ECA) 스타일 작업 흐름 또는 구조화된 흐름 또는 규칙 구동 흐름이 있다. 게다가, 작업 흐름이 모델링된 방식에 상관없이, 프레임워크는 사용자가 작업 흐름 프로세스를 재컴파일할 필요없이 디자인 시에 또는 작업 흐름 프로세스가 실행되고 있을 때조차도 작업 흐름을 동일한 방식으로 작성 또는 편집할 수 있게 해준다. 프레임워크는 사용자가 고충실도로 런타임시 표현과 디자인시 표현 간을 라운드 트리핑할 수 있게 해준다. 임시적인 변경은 런타임 시에 프로세스 모델에 행해진 변경이다. 사용자는 그의 스케쥴 모델에 대한 실행 중인 인스턴스를 요청하여 그 모델을 변경할 수 있다. 예를 들어, 사용자는 일괄적으로 활동을 부가, 제거 또는 교체하고, 이어서 일괄 처리된 변경을 수용 또는 롤백할 수 있다. 일 실시예에서, 모델은 업데이트 후에 검증된다. 본 발명의 많은 작업 흐름 시나리오에서, "디자인시 작성"과 "런타임시 실행" 간의 구별이 모호해지거나 심지어 구별이 되지 않는다.
스케쥴 인스턴스는 그 인스턴스들의 스케쥴 타입에 대해 정의된 활동 타입 (메타데이터) 트리를 다른 인스턴스들과 공유한다. 그렇지만, 어떤 스케쥴 인스턴스라도 실행되기 시작하였으면 새로운 활동의 부가 또는 선언적 규칙의 조작을 통해 동작 중에 변경될 수 있다. 이러한 수정된 스케쥴 인스턴스를 받아서 새로운 스케쥴 타입으로 "다른 이름으로 저장(save as)"하거나 또는 보다 일반적으로는 그 인스턴스로부터 직렬화된 표현을 간단히 복원하는 것이 가능하다. 즉, 실행 중인 스케쥴 인스턴스는 직렬화된 다음에 임의의 디자이너(예를 들어, 작성 환경) 또는 런타임 시각화 도구로 보내질 수 있다.
게다가, 고급 개발자가 스케쥴를 완전히 소프트웨어 코드로서 작성하는 것도 가능하다. 스케쥴 타입을 직접 작성하기 위해, 개발자는 단순히 스케쥴에 대한 코드-비사이드 클래스 내의 소프트웨어 코드에 InitializeScheduleModel이라고 하는 정적 메소드를 포함하고 이 메소드에 [ScheduleCreator] 속성을 갖도록 표시를 한다. 일 실시예에서, 정적 메소드는 파라미터를 갖지 않으며 스케쥴(Schedule) 객체를 반환한다. 도우미 직렬화된 파일(companion serialized file)이 없지만, 스 케쥴의 직렬화된 표현이 생성된 스케쥴 객체로부터 복원될 수 있다. 이것은 스케쥴이 단일 소프트웨어 코드 파일을 사용하여 개발될 수 있으나, 그 파일에 대해 검증 검사는 수행될 수 없음을 의미한다. 조정 엔진 컴파일은 스케쥴 타입의 바탕을 이루는 활동 트리의 구조적 및 시맨틱 유효성을 보장한다. 다른 실시예에서, 컴파일 및 검증은 실행되는 실제 타입을 생성하기 위해 내부적으로 실행되지만, 어떤 코드 입력도 필요하지 않다. 스케쥴 타입 컴파일은 초경량 프로세스가 되는데 그 이유는 컴파일시 객체 모델로부터 런타임시 객체 모델로의 변환이 없기 때문이다. 기본적으로, 컴파일은 단순히 스케쥴의 객체 모델 표현을 코드-비사이드와 결합하여 새로운 타입을 생성하는 것이다. 일 실시예에서, 컴파일된 코드-비사이드가 객체 모델 내의 활동들에 의해 요구되는 것과 일치하는 경우나 코드-비사이드가 컴파일된 형태(어셈블리)로 이미 존재하는 경우는 특정 스케쥴을 위해 기본적으로 어떤 코드-비사이드도 전혀 제공할 필요가 없다. .
직렬화된 스케쥴을 컴파일할 때, 스케쥴에 대한 코드-비사이드로서 효과적으로 기능하는 기존의 컴파일된 타입을 가리키는 것이 가능하다. 이 컴파일된 타입의 파생형(dervative)이 생성되고, 새로운 스케쥴을 나타내는 고유한 타입이 생성되도록 보장하기 위해 이 새로운 타입은 코드-비사이드로서 기능한다.
직렬화 아키텍처
직렬화 하부구조는 조정 엔진 활동 트리를 직렬화하는 모듈형(modular), 포맷 중립형(format neutral) 및 용이하게 확장가능한 메카니즘을 제공한다. 특히, 호출자(예를 들어, 애플리케이션 프로그램 또는 사용자)는 직렬화 관리자에게 객체 (또는 활동) A에 대한 직렬화기를 요청한다. 객체 A의 타입의 메타데이터 속성은 객체 A를 요청된 타입의 직렬화기에 바인딩시킨다. 호출자는 이어서 직렬화기가 객체 A를 직렬화하도록 요청한다. 객체 A의 직렬화기는 이어서 객체 A를 직렬화한다. 직렬화 동안에 만나게 되는 각 객체에 대해, 직렬화기는 직렬화 관리자에게 부가적인 직렬화기들을 요청한다. 직렬화의 결과가 호출자에게 반환된다.
조정 엔진 컴포넌트 모델에서의 모든 활동은 직렬화에 참여할 수 있다. 일 실시예에서, 직렬화기 컴포넌트는 활동 클래스 자체의 일부는 아니다. 그 대신에, 이 컴포넌트는 그 활동과 연관된 클래스의 직렬화기 속성에 주석을 첨부함으로써 지정된다. 직렬화기 속성은 그 활동 타입의 객체들을 직렬화하는 데 사용되는 클래스를 가리킨다. 다른 실시예에서, 활동 타입에 대한 프로바이더 컴포넌트는 활동에 의해 제공된 디폴트 직렬화기를 오버라이드한다.
디자이너 직렬화는 메타데이터, 직렬화기, 및 직렬화 관리자에 기초하고 있다. 메타데이터 속성은 직렬화기에 타입을 관련시키는데 사용된다. "bootstrapping(부트스트래핑)" 속성은 직렬화기를 갖지 않는 타입들에게 직렬화기를 제공하는 객체를 설치하는데 사용될 수 있다. 직렬화기는 특정 타입 또는 일정 범위의 타입들을 어떻게 직렬화하는지를 알고 있는 객체이다. 각각의 데이터 포맷에 대한 베이스 클래스가 있다. 예를 들어, 객체를 XML로 어떻게 변환하는지를 알고 있는 XmlSerializer 베이스 클래스가 있을 수 있다. 본 발명은 임의의 특정의 직렬화 포맷에 독립적인 일반적인 아키텍처이다. 직렬화 관리자는 객체 그래프를 직렬화하는데 사용되는 다양한 직렬화기 모두에 대한 정보 저장소를 제공하는 객체 이다. 예를 들어, 50개의 객체의 그래프는 모두가 그 자신을 출력을 생성하는 50개의 서로 다른 직렬화기를 가질 수 있다. 직렬화 관리자는 이들 직렬화기가 필요한 경우 서로 통신하는 데에도 사용될 수 있다.
일 실시예에서, 객체가 주어진 타입에 대한 직렬화기를 제공할 기회를 부여받는 경우, 일반 객체 메타데이터를 사용하는 직렬화기에 결합된 직렬화 프로바이더의 사용은 콜백 메카니즘을 제공한다. 직렬화 관리자는 AddSerializationProvider 등의 메소드를 통해 직렬화 프로바이더를 부여받는다. 직렬화 프로바이더는 DefaultSerializationProviderAttribute 등의 속성을 직렬화기에 부가함으로써 직렬화 관리자에 자동적으로 부가될 수 있다.
일 실시예에서, 포맷은 이하의 규칙에 의해 좌우된다. 즉, 객체는 xml 엘리먼트로서 직렬화되고, 객체의 프로퍼티는 단순 프로퍼티(simple property)(예를 들어, xml 속성으로서 직렬화됨) 또는 복합 프로퍼티(complex property)(자식 엘리먼트로서 직렬화됨)으로서 분류되고, 객체의 자식 객체는 자식 엘리먼트로서 직렬화된다. 자식 객체의 정의는 객체마다 다라질 수 있다. 이하의 예는 while 활동의 직렬화이며, 이는 그의 자식 객체 중 하나로서 Send 활동을 갖는다.
<While ID=""while1>
<ConditionRule>
<CodeExpressionRuleDeclaration>
<Expression Name="whileCondition"/>
</CodeExpressionRuleDeclaration>
</ConditionRule>
<Send HasTypedChannel="True" ID="send1">
<Message Name="msg1" Type="System.UInt32"/>
<OnBeforeSend Name="onBeforeSend1"/>
<TypeChannel Type="System.Collections.IList"
Operation="AddIndex" Name="Foo"/>
</Send>
</While>
직렬화를 위해 사용된 언어가 XOML인 실시예에서, 각각의 XOML 엘리먼트는 스케쥴이 컴파일될 때 그 각자의 객체에 대해 직렬화된다. 객체는 단순 타입(simple type) 및 복합 타입(complex type) 모두를 포함한다. 각각의 활동의 XOML 표현과 그의 작성 객체 모델로의 매핑에 대해서는 다음에 기술된다. XOML의 직렬화는 프리미티브(Primitive) 활동과 복합(Composite) 활동에 있어서 서로 다르다.
프리미티브 활동에 대한 단순 타입은 활동 타입에 관한 속성으로서 직렬화된다. 프리미티브 활동에 대한 복합 타입은 자식 엘리먼트로서 직렬화된다. 예로서, 여기에 Send 활동의 XOML 표현이 있다.
<Send ID="send1" HasTypedChannel="False">
<Message Name="message1" Type="System.String"/>
<UntypedChannel Name="c1"/>
</Send>
프리미티브 타입 직렬화와 유사한 방식으로, 복합 활동에 대한 단순 타입은 활동 타입에 관한 속성으로서 직렬화된다. 그렇지만, 정의에 의해, 복합 활동은 내포된 활동을 캡슐화한다. 각각의 내포된 활동은 또다른 자식 엘리먼트로서 직렬화된다. 예로서, 여기에 While 활동의 XOML 표현이 있다.
<While ID="while1">
<ConditionRule>
<CodeExpressionRule>
<Expression Name="test"/>
</CodeExpressionRule>
</ConditionRule>
</While>
프로세스/작업 흐름 뷰와 직렬화된 표현 간에 밀접한 관계가 존재한다. 도 8은 스케쥴 정의, 및 시각적 작업 흐름, 작업 흐름의 직렬화된(예를 들어, XOML) 표현, 그리고 작업 흐름의 코드 비사이드 사이의 관계를 나타낸 것이다. 어느 한 표현으로 작성할 때, 상대편에 변화를 가져오게 된다. 따라서, 활동(또는 복합 활동인 경우 그의 구성 부분)에 대한 XOML을 수정하는 것은 개발자가 둘 사이에서 전환할 때 프로세스/작업 흐름 뷰에 직접 반영된다. 그 역도 역시 마찬가지이다. 프로세스/작업 흐름 뷰에서 활동을 수정하면 그 결과 XOML 내에 적절한 수정이 있게 된다. 예로서, 프로세스/작업 흐름 뷰에서 활동을 삭제하면 그 결과 동일한 활동에 대한 XOML 내의 XML 엘리먼트가 제거된다. 프로세스/작업 흐름 뷰와 코드 비 사이드 사이에도 역시 라운드 트리핑이 일어난다.
XOML 코드의 생성 동안, XOML 정의가 사전 정의된 인터페이스 요건에 부합하지 않는 경우, 위반하는 XML 엘리먼트에는 밑줄이 그어지거나 또는 다른 방식으로 개발자에게 시각적으로 식별된다. 개발자가 프로세스 뷰로 전환하면, 개발자는 XOML 내에 에러가 있음을 경고받으며, 디자이너는 개발자가 위반하는 엘리먼트를 클릭하여 그로 네비게이션될 수 있는 링크를 제공한다. 이 동일한 에러는 작업창(task pane)에 나타나며, 그 에러의 더블 클릭 시, 개발자는 XOML 내에 위반하는 엘리먼트로 이동된다.
XOML 파일로부터 활동 트리를 생성( 역직렬화 )
일 실시예에서, CreateEditorInstance() 함수는 DesignSurface 객체를 생성한 다음에 DesignSurface 객체로의 BeginLoad() 함수를 호출하여 실제 로더 객체를 그 안으로 전달하며, 이는 궁극적으로 DesignerLoader() 함수에 대한 BeginLoad() 호출로 종료된다. PerformLoad() 함수는 텍스트 버퍼 객체를 읽어서 이를 조정 엔진 컴포넌트 모델 계층 구조로 역직렬화한다. 본 발명은 이 계층 구조를 살펴보고 비쥬얼 스튜디오 내의 컴포넌트를 로드하기 위해 그 활동들을 디자인 화면 내에 삽입한다.
본 발명은 또한 계층 구조를 추적하기 위해 XOML 파일에 대한 변화에 주목하고 또 비쥬얼 스튜디오 캐쉬 내의 값들을 업데이트하기 위해 아이템 식별자 변화에 주목한다. 2차 문서 데이터 리스트(secondary document data list)는 조정 엔진 디자이너가 작업하고 있는 사용자에게는 보이지 않는 2차 문서의 리스트를 포함한 다. 예를 들어, 사용자가 코드 비사이드 파일을 열지 않고, 사용자가 조정 엔진 디자이너를 변경하려는 경우, 그 변경은 코드 비사이드 파일에 행해진다. 이 파일이 사용자에게는 보이지 않기 때문에, 그 파일은 2차 문서로서 유지된다. XOML 파일이 저장될 때마다, 2차 문서는 자동으로 저장된다. 이들 파일 중 한 파일의 이름이 변하거나 그 파일이 삭제되면, 본 발명은 대응하는 2차 문서 객체를 그에 따라 업데이트한다.
객체 트리에 대한 전형적인 역직렬화 가이드라인은 다음과 같다. xml 엘리먼트가 먼저 부모 객체의 프로퍼티로서 취급된다. 부모 객체가 그 엘리먼트의 태그명을 갖는 프로퍼티를 갖지 않는 경우, 그 엘리먼트는 부모 객체의 자식 객체로서 취급된다. xml 속성은 부모 객체에 관한 단순 프로퍼티로서 취급된다.
상기 직렬화된 코드를 사용하는 전형적인 역직렬화에서, <While> 엘리먼트는 xml 네임스페이스 정보를 사용하여 생성되는 객체로서 취급된다. <ConditionRule> 엘리먼트는 While 활동의 프로퍼티로서 취급된다. <CodeExpressionRuleDeclaration> 엘리먼트는 객체로서 취급되며 그의 값이 ConditionRule 프로퍼티에 적용된다. <Send> 엘리먼트는 먼저 While 활동의 프로퍼티로서 시도되지만, 'While' 활동은 이름 'Send'를 갖는 프로퍼티를 갖지 않으며, 따라서 <Send> 엘리먼트는 객체로서 취급되어 while 활동의 자식 활동으로서 취급된다. <Message> 엘리먼트는 Send 활동의 프로퍼티로서 취급된다. Send에 관한 Message 프로퍼티가 읽기 전용이기 때문에, Message 엘리먼트의 내용(contents)은 Message 객체의 내용으로서 간주된다. 유사한 규칙이 <OnBeforeSend> 엘리먼트 및 <TypedChannel> 엘리먼트의 역직렬화에 적용된다.
이하의 조건 하에서, 즉 XOML 코드가 제대로 작성되지 않은 경우, XomlDocument이 XOML 코드에서 첫번째 엘리먼트가 아닌 경우, 및 XOML 코드에서의 첫번째 활동이 역직렬화될 수 없는 경우, XOML 역직렬화는 결정적으로 실패하게 된다. 개발자는 에러 메시지를 제공받게 되며, 이 에러 메시지를 사용하여 개발자는 XOML 뷰로부터 프로세스/작업 흐름 뷰로 전환할 때 위반하는 XML 엘리먼트로 네비게이션할 수 있다.
조정 엔진 디자이너의 호스팅
디자이너 프레임워크는 어떤 애플리케이션 프로그램에서도 호스팅될 수 있다. 이것은 제3의 애플리케이션이 작업 흐름을 그의 개별적인 환경에서 렌더링하는데 아주 유용한 특징이다. 이것은 또한 제3자가 디자인 화면을 재호스팅 및 커스터마이즈함으로써 조정 엔진 디자이너 곳곳에서 도구를 개발할 수 있게 해준다. 본 발명의 프레임워크는 호스팅측 컨테이너 애플리케이션이 에디터 및/또는 텍스트 버퍼 등의 일련의 서비스를 제공할 것으로 기대한다.
디자이너를 재호스팅함에 있어서의 제1 단계는 로더 및 디자인 화면을 생성하는 것이다. 로더는 XOML 파일을 로드하는 일과 활동을 유지하는 디자이너 호스트 하부구조를 구축하는 일을 맡고 있다. 디자인 화면은 그 안에 디자이너 호스트 하부구조를 유지하며 디자인 화면을 호스팅 및 그와 상호작용하기 위한 서비스를 제공한다. 디자인 화면은 서비스 프로바이더 뿐만 아니라 서비스 컨테이너로서 기능한다. 일례에서, 이하의 코드는 XOML 문서를 로드하고 활동을 그 안에 유지하는 디자이너 호스트를 구축하기 위해 실행된다.
this.loader.XomlFile = filePath;
if(this.surface.IsLoaded == false)
this.surface.BeginLoad(this.loader);
이하의 서비스들은 디자이너에서 여러가지 함수를 가능하게 해준다. ISelectionService 함수는 선택된 객체들을 유지한다. IToolboxService 함수는 도구 상자와의 상호작용을 관리한다. IMenuCommandService 함수는 메뉴와의 상호작용을 관리한다. ITypeProvider 함수는 타입 시스템(type system)을 가능하게 해준다. 게다가, 진보된 디자이너 특징을 가능하게 해주기 위해 디자이너 호스팅 환경에 의해 제공되는 부가의 서비스가 있을 수 있다.
타입 시스템은 본 발명의 컴포넌트 모델 프레임워크 내의 컴포넌트이다. 디자이너가 프로젝트 시스템 내에서 호스팅될 때, TypeProvider 객체는 프로젝트마다 생성된다. 프로젝트 내의 어셈블리 참조(assembly reference)는 타입 프로바이더(type provider)로 푸시(push)된다. 게다가, 프로젝트 내의 사용자 코드 파일들은 파싱되고 단일의 코드 컴파일 단위(code compile unit)가 생성되어 타입 프로바이더로 푸시된다. 또한, 본 발명은 타입들이 타입 시스템에서 변경되게 할 수 있는 프로젝트 시스템 내의 이벤트들에 주목하고 그 변경에 응답하여 타입들을 재로드하기 위해 타입 프로바이더에 대한 적절한 호출을 행한다.
실행 취소/재실행(undo/redo)
스케쥴을 생성하고 제대로 구축한 후에, 개발자는 일련의 수행된 동작들을 롤백하고자 할 수 있다. 본 발명의 실행 취소 및 재실행 함수는 어느 활동이 직접 영향을 받았는지를 보여주는 시각적 피드백을 제공한다. 예를 들어, 활동에 관한 프로퍼티 변경을 실행 취소시키려면, 영향을 받은 활동이 선택하게 된다. 다수의 객체의 삭제를 실행 취소시켜서, 관련된 모든 객체들이 스케쥴로 복원되도록 할 때 그 모든 객체들을 선택하게 된다. 실행 취소/재실행은 다른 분야의 많은 애플리케이션에걸쳐 사용되는 공통적인 특징이며, 그의 의미는 잘 알려져 있다. 조정 엔진 디자이너에서, 실행 취소/재실행 아이템은 저장(Save)과 동시에 제거(purge)되지 않는다. 또한, 실행 취소/재실행은 개발자가 뷰들 사이를 전환할 때 프로세스/작업 흐름 뷰, XOML 뷰에서 또한 코드 비사이드에서 수행될 수 있다.
실행 취소/재실행은 프로세스/작업 흐름 뷰에서 이하의 동작, 즉 활동 드래그 및 드롭(예를 들어, 활동을 도구 상자로부터 디자인 화면으로 드래그, 활동을 스케쥴의 한 부분에서 다른 부분으로 이동, 및 활동을 한 디자이너로부터 다른 디자이너로 이동), 활동의 구성(예를 들어, 활동에 대한 프로퍼티를 지정), 및 잘라내기/복사/붙여넣기/삭제에 대하여 제공된다.
일 실시예에서, 직렬화된 뷰(예를 들어, XOML 뷰)는 텍스트 에디터의 표준 실행취소/재실행 동작을 제공하는 XML 에디터이다. 본 발명의 디자이너는 프로세스/작업 흐름 뷰에서 변경이 행해지고 이어서 직렬화된 뷰에서 실행취소되면 직렬화된 코드가 상실될 것임을 알려주는 피드백을 개발자에게 제공한다. 개발자가 프로세스/작업 흐름 뷰에서 스케쥴의 일부분을 구축하고, 직렬화된 뷰로 전환한 다음에 실행취소/재실행 동작을 수행하기로 결정하면, 경고가 나타나게 된다.
전형적인 운영 환경
도 9는 컴퓨터(130) 형태의 범용 컴퓨팅 장치의 일례를 나타낸 것이다. 본 발명의 일 실시예에서, 컴퓨터(130) 등의 컴퓨터는 본 명세서에 예시되고 기술된 다른 도면들에서 사용하기에 적합하다. 컴퓨터(130)는 하나 이상의 프로세서 또는 프로세싱 유닛(132) 및 시스템 메모리(134)를 갖는다. 예시된 실시예에서, 시스템 버스(136)는 시스템 메모리(134)를 비롯한 여러가지 시스템 컴포넌트들을 프로세서(132)에 연결시킨다. 버스(136)는 메모리 버스 또는 메모리 콘트롤러를 비롯한 몇가지 유형의 버스 구조 중 임의의 것, 주변 장치 버스, AGP(accelerated graphics port) 및 다양한 버스 아키텍처 중 임의의 것을 사용하는 프로세서 또는 로컬 버스 중 하나 이상을 나타낸다. 예로서, 이러한 아키텍처는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 메자닌 버스라고도 하는 PCI(Peripheral Component Interconnect) 버스를 포함하나, 이에만 한정되지는 않는다.
컴퓨터(130)는 일반적으로 적어도 어떤 형태의 컴퓨터 판독가능 매체를 갖는다. 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체 둘다를 포함하는 컴퓨터 판독가능 매체는 컴퓨터(130)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함하나, 이에만 한정되지 않는다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등의 정보를 저장하기 위한 임의의 방 법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함한다. 예를 들어, 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 원하는 정보를 저장하는 데 사용될 수 있고 컴퓨터(130)에 의해 액세스될 수 있는 임의의 다른 매체를 포함한다. 통신 매체는 일반적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 기타 데이터를 반송파 또는 기타 전송 메카니즘 등의 변조된 데이터 신호에 구현한 것이며, 임의의 정보 전달 매체를 포함한다. 당업자라면 변조된 데이터 신호를 잘 알고 있으며, 하나 이상의 특성을 그 신호에 실린 정보를 부호화하는 방식으로 설정 또는 변경시킨 신호를 의미한다. 유선 네트워크 또는 유선에 의한 직접 연결과 같은 유선 매체와, 음향, RF, 적외선, 및 기타 무선 매체 등의 무선 매체가 통신 매체의 예들이다. 상기의 임의의 것들을 조합한 것도 역시 컴퓨터 판독가능 매체의 범위 내에 포함된다.
시스템 메모리(134)는 분리형 및/또는 비분리형, 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 예시된 실시예에서, 시스템 메모리(134)는 판독 전용 메모리(ROM)(138) 및 랜덤 액세스 메모리(RAM)(140)를 포함한다. 시동 중과 같은 때에 컴퓨터(130) 내의 구성요소들 간의 정보의 전달을 돕는 기본적인 루틴을 포함하는 기본 입출력 시스템(142)(BIOS)은 일반적으로 ROM(138)에 저장된다. RAM(140)은 일반적으로 프로세싱 유닛(132)이 즉각적으로 액세스가능하고 및/또는 현재 그에 의해 처리되고 있는 데이터 및/또는 프로그램 모듈을 포 함한다. 예로서, 도 9는 운영 체제(144), 애플리케이션 프로그램(146), 기타 프로그램 모듈(148), 및 프로그램 데이터(150)를 예시하고 있으나, 이에만 한정되지 않는다.
컴퓨터(130)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 예를 들어, 도 9는 비분리형, 비휘발성 자기 매체로부터 판독하거나 그에 기록하는 하드 디스크 드라이브(154)를 예시하고 있다. 도 9는 또한 분리형, 비휘발성 자기 디스크(158)로부터 판독하거나 그에 기록하는 자기 디스크 드라이브(156), 및 CD-ROM 또는 기타 광학 매체 등의 분리형, 비휘발성 광학 디스크(162)로부터 판독하거나 그에 기록하는 광디스크 드라이브(160)를 도시하고 있다. 전형적인 운영 환경에서 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD, 디지털 비디오 테이프, 고체 상태 RAM, 고체 상태 ROM, 및 기타 등등을 포함하지만, 이에 한정되는 것은 아니다. 하드 디스크 드라이브(154), 자기 디스크 드라이브(156) 및 광학 디스크 드라이브(160)는 일반적으로 인터페이스(166) 등의 비휘발성 메모리 인터페이스에 의해 시스템 버스(136)에 연결된다.
앞서 논의되고 도 9에 예시된 드라이브 또는 다른 대용량 저장 장치 및 그와 관련된 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장을 컴퓨터(130)에 제공한다. 도 9에서, 예를 들어 하드 디스크 드라이브(154)는 운영 체제(170), 애플리케이션 프로그램(172), 기타 프로그램 모듈(174), 및 프로그램 데이터(176)를 저장하는 것으로 예시되어 있다. 유의 할 점은 이들 컴포넌트가 운영 체제(144), 애플리케이션 프로그램(146), 기타 프로그램 모듈(148), 및 프로그램 데이터(150)와 동일할 수도 있고 서로 다를 수도 있다는 것이다. 운영 체제(170), 애플리케이션 프로그램(172), 기타 프로그램 모듈(174), 및 프로그램 데이터(176)는 최소한 이들이 다른 복사본이라는 것을 예시하기 위해 여기서는 다른 번호가 부여되어 있다.
사용자는 키보드(180) 및 포인팅 장치(182)(예를 들어, 마우스, 트랙볼, 펜, 또는 터치 패드) 등의 입력 장치 또는 입력 인터페이스 선택 장치를 통해 명령 및 정보를 컴퓨터(130)에 입력할 수 있다. 다른 입력 장치(도시 생략)으로는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 또는 기타 등등이 있을 수 있다. 이들 및 다른 입력 장치는 시스템 버스(136)에 연결되어 있는 사용자 입력 인터페이스(184)를 통해 프로세싱 유닛(132)에 연결되지만, 병렬 포트, 게임 포트, 또는 USB(Universal Serial Bus) 등의 다른 인터페이스 및 버스 구조에 의해 연결될 수도 있다. 모니터(188) 또는 다른 유형의 디스플레이 장치도 역시 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(136)에 연결된다. 모니터(188) 이외에, 컴퓨터는 종종 출력 장치 인터페이스(도시 생략)을 통해 연결될 수 있는 프린터 및 스피커 등의 다른 주변 출력 장치(도시 생략)를 포함한다.
컴퓨터(130)는 원격 컴퓨터(194) 등의 하나 이상의 원격 컴퓨터로의 논리적 연결을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(194)는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있으며, 일반적으로 컴퓨터(130)와 관련하여 전술한 구성요소들 대부분 또는 그 전부를 포함한다. 도 9에 도시한 논리적 연결은 근거리 통신망(LAN)(196) 및 광역 통신망(WAN)(198)을 포함하지만, 다른 네트워크를 포함할 수 있다. LAN(196) 및/또는 WAN(198)은 유선 네트워크, 무선 네트워크, 이들의 조합일 수 있다. 이러한 네트워킹 환경은 사무실, 기업 규모의 컴퓨터 네트워크, 인트라넷, 및 전세계 컴퓨터 네트워크(예를 들어, 인터넷)에서 흔한 것이다.
지역 네트워킹 환경에서 사용되는 경우, 컴퓨터(130)는 네트워크 인터페이스(186) 또는 어댑터를 통해 LAN(196)에 연결된다. 광역 네트워킹 환경에서 사용되는 경우, 컴퓨터(130)는 일반적으로 인터넷 등의 WAN(198)을 통해 통신을 설정하는 모뎀(178) 또는 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(178)은 사용자 입력 인터페이스(184) 또는 기타 적절한 메카니즘을 통해 시스템 버스(136)에 연결된다. 네트워크화된 환경에서, 컴퓨터(130)와 관련하여 도시된 프로그램 모듈 또는 그의 일부분은 원격 메모리 저장 장치(도시 생략)에 저장될 수 있다. 예로서, 도 9는 원격 애플리케이션 프로그램(192)을 그 메모리 장치에 존재하는 것으로 예시하고 있으나 이에만 한정되지 않는다. 도시된 네트워크 연결은 전형적인 것으로서 컴퓨터들 사이에 통신 링크를 설정하는 다른 수단이 사용될 수 있다.
일반적으로, 컴퓨터(130)의 데이터 프로세서는 컴퓨터의 여러가지 컴퓨터 판독가능 저장 매체에 서로 다른 시점에 저장된 명령어들에 의해 프로그램될 수 있다. 프로그램 및 운영 체제는 일반적으로 예를 들어 플로피 디스크 또는 CD-ROM으로 배포된다. 그로부터, 프로그램 및 운영 체제는 컴퓨터의 보조 기억 장치에 설 치 또는 로드된다. 실행 시에, 이들은 적어도 부분적으로 컴퓨터의 전자적인 주기억 장치에 로드된다. 본 명세서에 기술된 본 발명은 이들 및 다른 여러가지 유형의 컴퓨터 판독가능 저장 매체가 마이크로프로세서 또는 다른 데이터 프로세서와 연계하여 이하에 기술되는 단계들을 구현하기 위한 명령어 또는 프로그램을 포함하는 경우 이러한 매체를 포함한다. 본 발명은 본 명세서에 기재된 방법 및 기술에 따라 프로그램되어 있는 컴퓨터 그 자체도 포함한다.
설명을 위해, 운영 체제 등의 프로그램 및 다른 실행가능 프로그램 컴포넌트는 본 명세서에서 별개의 블록으로서 예시되어 있다. 그렇지만, 이러한 프로그램 및 컴포넌트는 다양한 시점에서 컴퓨터의 서로 다른 저장 컴포넌트에 존재하며 또 컴퓨터의 데이터 프로세서(들)에 의해 실행된다는 것을 잘 알 것이다.
컴퓨터(130)를 비롯하여 전형적인 컴퓨팅 시스템 환경과 관련하여 기술되어 있지만, 본 발명은 수많은 다른 범용 또는 전용 컴퓨팅 시스템 환경 또는 구성에서 동작한다. 컴퓨팅 시스템 환경은 본 발명의 사용 또는 기능의 범위에 관한 어떤 제한을 가하려는 것이 아니다. 게다가, 컴퓨팅 시스템 환경은 전형적인 운영 환경에서 예시된 컴포넌트들의 임의의 것 또는 조합에 관하여 어떤 의존관계 또는 요구사항을 갖는 것으로 해석되어서는 안된다. 본 발명에서 사용하기에 적합한 공지의 컴퓨팅 시스템, 환경, 및/또는 구성의 예들은 퍼스널 컴퓨터, 서버 컴퓨터, 핸드-헬드 또는 랩톱 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그램가능 가전 제품, 휴대 전화, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템 또는 장치 중 임의의 것을 포함하는 분산 컴퓨팅 환경, 및 기 타 등등을 포함하지만, 이에 한정되는 것은 아니다.
본 발명은 하나 이상의 컴퓨터 또는 다른 장치에 의해 실행되는 프로그램 모듈 등의 컴퓨터 실행가능 명령어의 일반적인 관점에서 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정의 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 및 데이터 구조를 포함하지만 이에 한정되는 것은 아니다. 본 발명은 또한 태스크들이 통신 네트워크를 통해 링크되어 있는 원격 프로세싱 장치들에 의해 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 비롯한 로컬 및 원격 컴퓨터 저장 매체 둘다에 위치될 수 있다.
소프트웨어 아키텍처의 관점에서의 인터페이스는 소프트웨어 모듈, 컴포넌트, 코드 부분 또는 다른 컴퓨터 실행가능 명령어 시퀀스를 포함한다. 인터페이스는 예를 들어 제1 모듈 대신에 컴퓨팅 태스크를 수행하는 제2 모듈을 액세스하는 제1 모듈을 포함한다. 제1 및 제2 모듈은 일례에서 운영 체제에 의해 제공된 것 등의 애플리케이션 프로그래밍 인터페이스(API), COM(component object model, 컴포넌트 객체 모델) 인터페이스(예를 들어, 피어-투-피어 애플리케이션 통신을 위한 것임), 및 XMI(extensible markup language metadata interchange format, XML 메타데이터 교환 포맷) 인터페이스(예를 들어, 웹 서비스간의 통신을 위한 것임)를 포함한다.
인터페이스는 J2EE(Java 2 Platform Enterprise Edition), COM, 또는 DCOM(distributed COM) 예에서와 같은 밀접하게 결합된 동기적 구현(tightly coupled, synchronous implementation)일 수 있다. 다른 대안으로서 또는 그에 부가하여, 인터페이스는 웹 서비스에서와 같은 느슨하게 결합된 비동기적 구현(loosely coupled, asynchronous implementation)일 수 있다[예를 들어, SOAP(simple object access protocol, 단순 객체 액세스 프로토콜)을 사용함]. 일반적으로, 인터페이스는 이하의 특성, 즉 밀접하게 결합, 느슨하게 결합, 동기적, 및 비동기적의 임의의 조합을 포함한다. 게다가, 인터페이스는 표준 프로토콜(standard protocol), 독점적 프로토콜(proprietary protocol), 또는 표준 프로토콜과 독점적 프로토콜의 임의의 조합에 부합한다.
본 명세서에 기술된 인터페이스는 모두 단일 인터페이스의 일부이거나 개별적 인터페이스들로서 또는 그들의 임의 조합으로서 구현될 수 있다. 인터페이스는 기능을 제공하기 위해 지역적으로 또는 원격적으로 실행될 수 있다. 게다가, 인터페이스는 본 명세서에 예시되거나 기술된 것보다 더 많거나 더 적은 기능을 포함할 수 있다.
본 명세서에 예시되고 기술된 방법의 실행 또는 수행의 순서는 달리 언급하고 있지 않는 한 필수적인 것은 아니다. 즉, 본 방법의 구성요소들은 달리 언급하지 않는 한 임의의 순서로 수행될 수 있으며, 본 방법은 본 명세서에 개시된 것보다 더 많거나 더 적은 구성요소들을 포함할 수 있다. 예를 들어, 특정의 구성요소를 다른 구성요소보다 이전에, 그와 동시에 또는 그 이후에 실행 또는 수행하는 것은 본 발명의 범위 내에 속하는 것으로 본다.
본 발명의 구성요소 또는 본 발명의 실시예(들)를 소개할 때, 이, 그, 저, 및 상기 등의 관형사는 하나 이상의 구성요소가 있음을 의미하기 위한 것이다. 용어 "구성하는", "포함하는", 및 "갖는"은 포함적 의미를 위한 것으로서 열거된 구성요소 이외에 부가의 구성요소가 있을 수 있음을 의미한다.
상기의 관점에서, 본 발명의 몇 가지 목적이 달성되고 다른 유익한 결과가 얻어짐을 알 수 있다.
본 발명의 범위를 벗어나지 않고 상기 구성, 제품, 및 방법에 여러가지 변경이 행해질 수 있기 때문에, 상기 설명에 포함되고 첨부 도면에 도시된 모든 것들은 예시적인 것으로 해석되어야 하며 한정적 의미로 해석되어서는 안된다.
부록 A
전형적인 활동 및 그의 전형적인 구현
전형적인 활동으로는 다음과 같은 것, 즉 Send, SendRequest, SendResponse, Receive, ReceiveRequest, ReceiveResponse, Code, Delay, Fault, Suspend, Terminate, InvokeSchedule, InvokeSchedules, InvokeWebService, DotNetEventSource, DotNetEventSink, Sequence, Parallel, While, ConditionalBranch, Conditional, Constrained, ConstrainedActivityGroup(CAG), EventDriven, Listen, EventHandlers, ExceptionHandler, ExceptionHandlers, Compensate, CompensationHandler, Scope, 및 Schedule이 있다.
전형적인 활동들 각각은 그와 연관된 메타데이터를 가진다. 메타데이터는 활동과 연관된 직렬화기에 의해 작업 흐름의 선언적 표현으로 전달된다. 예를 들면, 메타데이터는 선택적인 코드-비사이드 메소드와 선택적인 상관 세트 컬렉션을 포함할 수 있다.
Send 활동들
조정 엔진은 메시지를 전송하기 위한 3개의 활동(예컨대, Send, SendRequest, 및 SendResponse)을 제공하며, 그 각각은 서로 다른 사용 사례(use case)에 대처한다. 게다가, 3개의 활동이 어떤 메타데이터를 공유하기 때문에, 추상 베이스 클래스(abstract base class)가 정의되고 셋 모두의 상위 클래스(superclass)로서 사용된다.
Receive 활동들
조정 엔진은 메시지를 수신하기 위한 3개의 활동(예컨대, Receive, ReceiveRequest, 및 ReceiveResponse)을 제공하며, 그 각각은 서로 다른 사용 사례에 대처한다. 게다가, 3개의 활동이 어떤 메타데이터를 공유하기 때문에, 추상 베이스 클래스(abstract base class)가 정의되고 셋 모두의 상위 클래스(superclass)로서 사용된다.
Code
Code 활동은 메타데이터에 지시된 코드-비사이드 메소드를 실행한다.
Delay
Delay 활동은 DataTime 값을 생성하기 위해 그의 필수적인 코드-비사이드 메소드를 실행한다. Delay 활동은 내부적으로 그의 인스턴스 데이터에 관한 TimeoutValue 프로퍼티를 이 값으로 설정한다. DateTime이 과거인 경우, Delay는 즉각 완료된다. 그렇지 않은 경우, 타이머가 기동될 때 통지를 받도록 Delay는 타이머 신청(timer subscription)을 설정한다. 타이머가 기동될 때, Delay가 통지 되고 완료된다.
Fault
Fault 활동은 Exception 객체를 생성하기 위해 그의 필수적인 코드-비사이드 메소드를 실행한다. 그 다음에, 이런 예외를 던진다.
Suspend
Suspend 활동은 현재의 스케쥴 인스턴스를 정지시킨다.
Terminate
Terminate 활동은 현재의 스케쥴 인스턴스를 종료시킨다.
InvokeSchedule
InvokeSchedule 활동은 스케쥴을 호출한다.
InvokeWebService
프록시 클래스를 통해 웹 서비스를 호출하고, 지정된 파라미터를 전달 및 수신한다.
DotNetEventSink
이전에 호출된 스케쥴 인스턴스에 의해 지정된 이벤트가 발생되었다는 통지를 기다리면서 블록킹한다.
DotNetEventSource
지정된 이벤트를 발생시키고 즉각 실행을 종료한다.
Sequence
Sequence 활동은 순서화된 방식으로 한번에 하나씩 일련의 자식 활동의 실행을 조정한다.
Parallel
Paralle 활동은 일련의 자식 활동을 병행하여 실행한다.
While
자식 활동을 반복적으로 실행한다.
ConditionalBranch
Sequence 시맨틱스에 따라 자식 활동을 실행한다.
Conditional
Conditional 활동은 일련의 순서화된 ConditionalBranch 활동을 포함한다.
Constrained
Constrained 활동이 CAG에 의해 실행되도록 지시받은 경우, Constrained 활동은 단지 자신이 래핑하고 있는 활동을 실행할 뿐이다.
CAG (Constrained Activity Group)
CAG가 실행될 때, CAG는 자식 활동들의 인에이블 및 디스에이블 제약의 평가에 기초하여 그 활동들을 실행(및 재실행)한다.
Task
하나 이상의 주체(principal)에 의해 수행되는 외부 작업 단위를 모델링한다.
EventDriven
그의 실행이 "이벤트" 활동에 의해 트리거되는 활동을 래핑한다.
Listen
n개의 자식 EventDriven 활동 중 하나를 조건부로 실행한다.
EventHandlers
EventHandlers 활동은 단지 관련 스코프가 사용하기 위한 일련의 EventDriven 활동을 보유한다.
ExceptionHandler
스코프에 대한 catch 블록(catch block)을 나타내는 메타데이터로 활동을 래핑한다.
ExceptionHandlers
일련의 순서화된 ExceptionHandlers 활동들을 래핑한다.
Compensate
완료된 자식 스코프를 보상한다.
CompensationHandler
스코프에 대한 보상 핸들러로서 정의된 자식 활동을 래핑한다.
Scope
스코프는 트랜잭션 경계, 예외 처리 경계, 보상 경계, 이벤트 처리 경계, 및 메시지, 변수, 상관 세트, 및 채널 선언(즉, 공유 데이터 상태)에 대한 경계이다. Scope 내의 활동들의 실행은 순차적이고, Sequence로 스코프가 구성될 때, constraind 활동이 명시적으로 순서가 정해진다.
Schedule
Schedule은 조정 엔진이 실행하는 유일한 상위 레벨 활동이다.
Composite 활동
제어 흐름을 가능하게 해주는 복합 활동 타입은 Sequence, Parallel, Constrained Activity Group, Conditional, While, Listen이 있다. 그 밖에, Scope 및 Schedule도 그 안에 활동들의 암시적인 시퀀스를 갖는 컨테이너로서 기능하는 복합 활동 타입이다.

Claims (20)

  1. 작업 흐름에 관련된 사용자 코드를 참조하여 상기 작업 흐름을 수행하는 컴퓨터 구현 방법으로서,
    상기 사용자 코드를 컴파일하는 단계,
    상기 컴파일된 코드로 컴파일되지 않은 작업 흐름을 실행하는 단계, 및
    상기 컴파일되지 않은 작업 흐름이 실행되는 동안, 사용자로 하여금 상기 컴파일되지 않은 작업 흐름을 동적으로 수정하도록 허용하는 단계
    를 포함하는 컴퓨터 구현 방법.
  2. 제1항에 있어서,
    상기 작업 흐름은 각각이 그와 연관된 활동 실행자를 갖는 복수의 활동들을 포함하고, 상기 컴파일된 코드로 상기 컴파일되지 않은 작업 흐름을 실행하는 상기 단계는 상기 컴파일된 사용자 코드를 참조하여 상기 복수의 활동들 각각에 대한 상기 활동 실행자를 실행하는 단계를 포함하는
    컴퓨터 구현 방법.
  3. 제1항에 있어서,
    수정된 상기 작업 흐름을 수행하는 단계를 더 포함하는 컴퓨터 구현 방법.
  4. 제1항에 있어서,
    수정된 상기 작업 흐름을 실행하는 단계를 더 포함하는 컴퓨터 구현 방법.
  5. 제4항에 있어서,
    상기 컴파일되지 않은 작업 흐름을 실행하는 단계와 상기 수정된 작업 흐름을 실행하는 단계는 상기 작업 흐름을 컴파일하지 않고도 실행되는 단계를 포함하는
    컴퓨터 구현 방법.
  6. 제1항에 있어서,
    상기 사용자 코드는 상기 작업 흐름을 실행하는데 영향을 미치는 하나 이상의 비지니스 규칙들을 나타내는 컴퓨터 구현 방법.
  7. 제1항에 있어서,
    임의 사용자로부터 상기 사용자 코드를 수신하는 단계를 더 포함하는 컴퓨터 구현 방법.
  8. 제1항에 있어서,
    상기 작업 흐름은 복수의 활동들을 포함하고, 상기 사용자 코드를 컴파일하는 단계는 상기 복수의 활동들 각각에 연관된 사용자 코드를 컴파일하는 단계를 포 함하는
    컴퓨터 구현 방법.
  9. 제1항에 있어서,
    상기 컴파일되지 않은 작업 흐름을 실행하는 단계는 데드락 검출 및 병행 제어(deadlock detection and concurrency control)를 시행하는 단계를 포함하는
    컴퓨터 구현 방법.
  10. 제1항에 있어서,
    하나 이상의 컴퓨터 판독가능 매체는 제1항의 방법을 수행하는 컴퓨터 실행가능 명령어를 갖는
    컴퓨터 구현 방법.
  11. 작업 흐름에 관련된 사용자 코드를 참조하여 상기 작업 흐름을 수행하는 컴퓨터 실행가능 컴포넌트들을 갖는 하나 이상의 컴퓨터 판독가능 매체로서,
    상기 컴포넌트들은
    상기 사용자 코드를 실행가능 객체 코드로 변환하는 컴파일러 컴포넌트,
    상기 컴파일러 컴포넌트로부터의 상기 실행가능 객체 코드로 컴파일되지 않은 작업 흐름을 실행하는 작업 흐름 컴포넌트, 및
    상기 작업 흐름 컴포넌트가 상기 컴파일되지 않은 작업 흐름을 실행하는 동 안 사용자로 하여금 상기 컴파일되지 않은 작업 흐름을 동적으로 수정하도록 허용하는 디자이너 컴포넌트를 포함하는
    컴퓨터 판독가능 매체
  12. 제11항에 있어서,
    상기 작업 흐름 컴포넌트는 또한 상기 수정된 작업 흐름을 실행하는
    컴퓨터 판독가능 매체.
  13. 제12항에 있어서,
    상기 작업 흐름 컴포넌트는 상기 작업 흐름을 컴파일하지 않고도 상기 컴파일되지 않은 작업 흐름과 수정된 상기 작업 흐름을 실행하는
    컴퓨터 판독가능 매체.
  14. 제11항에 있어서,
    임의 사용자로부터 상기 사용자 코드를 수신하는 인터페이스 컴포넌트를 더 포함하는
    컴퓨터 판독가능 매체.
  15. 제11항에 있어서,
    상기 작업 흐름은 각각이 그와 연관된 활동 실행자를 갖는 복수의 활동들을 포함하고, 상기 작업 흐름 컴포넌트는 상기 복수의 활동들 각각에 대해 활동 실행자를 실행함으로써 상기 컴파일되지 않은 작업 흐름을 실행하는
    컴퓨터 판독가능 매체.
  16. 작업 흐름에 관련된 사용자 코드를 참조하여 상기 작업 흐름을 수행하는 시스템으로서,
    컴파일되지 않은 작업 흐름과 사용자 코드를 저장하는 메모리 영역, 및
    이하 동작을 위한 컴퓨터 실행가능 명령어를 실행하도록 구성된 프로세서-
    상기 이하 동작은
    상기 메모리 영역에 저장된 상기 사용자 코드를 컴파일하고,
    상기 컴파일된 사용자 코드로 상기 컴파일되지 않은 작업 흐름을 실행하고,
    상기 컴파일되지 않은 작업 흐름이 실행되는 동안 상기 사용자로 하여금 상기 컴파일되지 않은 작업 흐름을 동적으로 수정하도록 허용하는 것임-
    를 포함하는 시스템.
  17. 제16항에 있어서,
    상기 작업 흐름은 각각이 그와 연관된 활동 실행자를 갖는 복수의 활동들을 포함하고, 상기 프로세서는 상기 활동들 각각에 대해 상기 활동 실행자를 실행함으로써 상기 컴파일되지 않은 작업 흐름을 실행하도록 구성되는 시스템.
  18. 제16항에 있어서,
    상기 메모리 영역에 저장된 상기 사용자 코드를 컴파일하는 수단을 더 포함하는 시스템.
  19. 제18항에 있어서,
    상기 컴파일된 코드로 상기 컴파일되지 않은 작업 흐름을 실행하는 수단을 더 포함하는 시스템.
  20. 제19항에 있어서,
    상기 컴파일되지 않은 작업 흐름이 실행되는 동안 상기 사용자로 하여금 상기 컴파일되지 않은 작업 흐름을 동적으로 수정하도록 허용하는 수단을 더 포함하는 시스템.
KR1020050074262A 2004-10-01 2005-08-12 작업 흐름을 작성하고 편집하기 위한 컴퓨터 구현 방법 KR20060087997A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US61554704P 2004-10-01 2004-10-01
US60/615,547 2004-10-01
US11/047,275 2005-01-31
US11/047,275 US7565640B2 (en) 2004-10-01 2005-01-31 Framework for seamlessly authoring and editing workflows at design and runtime

Publications (1)

Publication Number Publication Date
KR20060087997A true KR20060087997A (ko) 2006-08-03

Family

ID=35241281

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050074262A KR20060087997A (ko) 2004-10-01 2005-08-12 작업 흐름을 작성하고 편집하기 위한 컴퓨터 구현 방법

Country Status (4)

Country Link
US (1) US7565640B2 (ko)
EP (1) EP1643429A1 (ko)
JP (1) JP5710852B2 (ko)
KR (1) KR20060087997A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009006064A3 (en) * 2007-06-29 2009-02-26 Microsoft Corp Declarative workflow designer

Families Citing this family (167)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7073168B2 (en) * 2001-12-06 2006-07-04 Microsoft Corporation Customizing binary content files
EP1465069B1 (en) * 2003-04-01 2017-01-25 Sap Se Method and computer system for activation of source files
US7707543B2 (en) * 2004-11-24 2010-04-27 Siemens Aktiengesellschaft Architecture for a computer-based development environment with self-contained components and a threading model
US7848942B2 (en) * 2004-12-28 2010-12-07 Sap Aktiengesellschaft Distribution of integrated business process models
US8527938B2 (en) * 2005-06-21 2013-09-03 The Boeing Company Worklet modeling
US7681178B1 (en) * 2005-07-22 2010-03-16 Adobe Systems Incorporated Cascading style sheets (CSS) prototype pointer chaining in object-oriented environment
US8522194B2 (en) 2005-12-30 2013-08-27 Sap Ag Software modeling
US20070156500A1 (en) * 2005-12-30 2007-07-05 Wilfried Merkel Architectural design for sell from stock application software
US8327319B2 (en) 2005-12-30 2012-12-04 Sap Ag Software model process interaction
US8316344B2 (en) 2005-12-30 2012-11-20 Sap Ag Software model deployment units
US8402426B2 (en) * 2005-12-30 2013-03-19 Sap Ag Architectural design for make to stock application software
US8660904B2 (en) 2005-12-30 2014-02-25 Sap Ag Architectural design for service request and order management application software
US8407664B2 (en) 2005-12-30 2013-03-26 Sap Ag Software model business objects
US8448137B2 (en) 2005-12-30 2013-05-21 Sap Ag Software model integration scenarios
US8380553B2 (en) 2005-12-30 2013-02-19 Sap Ag Architectural design for plan-driven procurement application software
US20070156550A1 (en) * 2005-12-30 2007-07-05 Der Emde Martin V Architectural design for cash and liquidity management application software
US8370794B2 (en) 2005-12-30 2013-02-05 Sap Ag Software model process component
US8326703B2 (en) 2005-12-30 2012-12-04 Sap Ag Architectural design for product catalog management application software
US8321831B2 (en) 2005-12-30 2012-11-27 Sap Ag Architectural design for internal projects application software
US8396731B2 (en) 2005-12-30 2013-03-12 Sap Ag Architectural design for service procurement application software
US8676617B2 (en) 2005-12-30 2014-03-18 Sap Ag Architectural design for self-service procurement application software
US7716634B2 (en) * 2006-01-19 2010-05-11 Medseek Inc. System and method for building and modifying software applications
US8438119B2 (en) 2006-03-30 2013-05-07 Sap Ag Foundation layer for services based enterprise software architecture
US8326702B2 (en) 2006-03-30 2012-12-04 Sap Ag Providing supplier relationship management software application as enterprise services
US8442850B2 (en) 2006-03-30 2013-05-14 Sap Ag Providing accounting software application as enterprise services
US8396761B2 (en) 2006-03-30 2013-03-12 Sap Ag Providing product catalog software application as enterprise services
US8396749B2 (en) 2006-03-30 2013-03-12 Sap Ag Providing customer relationship management application as enterprise services
US8538864B2 (en) 2006-03-30 2013-09-17 Sap Ag Providing payment software application as enterprise services
US8321832B2 (en) * 2006-03-31 2012-11-27 Sap Ag Composite application modeling
US8312416B2 (en) 2006-04-13 2012-11-13 Sap Ag Software model business process variant types
US8396736B2 (en) * 2006-04-21 2013-03-12 Process Assets, Llc Systems and methods for providing documentation having succinct communication with scalability
US7774744B2 (en) * 2006-04-26 2010-08-10 Sap Ag Using relatedness information for programming
US7971182B1 (en) * 2006-05-09 2011-06-28 Vmware, Inc. Application environment specifications for provisioning application specific runtime environments using undefined symbols
US8181150B2 (en) * 2006-05-12 2012-05-15 The Mathworks, Inc. System and method for synchronized workflow management
US8555247B2 (en) * 2006-10-13 2013-10-08 International Business Machines Corporation Systems and methods for expressing temporal relationships spanning lifecycle representations
US8271941B2 (en) * 2006-10-31 2012-09-18 International Business Machines Corporation Method and apparatus for representing and configuring flexible and extensible presentation patterns
US20080109467A1 (en) * 2006-11-03 2008-05-08 Microsoft Corporation Data entity centric approach for designing workflows
US8640086B2 (en) * 2006-12-29 2014-01-28 Sap Ag Graphical user interface system and method for presenting objects
US9311082B2 (en) 2006-12-29 2016-04-12 Sap Se System and method for processing graph objects
WO2008095742A1 (en) 2007-02-09 2008-08-14 International Business Machines Corporation Migration of process instances
US20080301631A1 (en) * 2007-03-01 2008-12-04 The Boeing Company Human transparency paradigm
US8731998B2 (en) * 2007-03-01 2014-05-20 Sap Ag Three dimensional visual representation for identifying problems in monitored model oriented business processes
US20080218532A1 (en) * 2007-03-08 2008-09-11 Microsoft Corporation Canvas-like authoring experience atop a layout engine
US20100293027A1 (en) * 2007-04-12 2010-11-18 Eric Denis Du Fosse Workflow engine for media production and distribution
CA2628991C (en) * 2007-04-13 2017-08-22 X2O Media Inc. A method for automating digital signage applications using intelligent self-configuring objects and smart templates
JP5234720B2 (ja) * 2007-04-26 2013-07-10 日本電信電話株式会社 プロセスモデル作成装置、方法及びそのプログラム
US8904341B2 (en) * 2007-04-30 2014-12-02 Hewlett-Packard Development Company, L.P. Deriving grounded model of business process suitable for automatic deployment
US8347263B1 (en) * 2007-05-09 2013-01-01 Vmware, Inc. Repository including installation metadata for executable applications
US8577937B1 (en) 2007-05-09 2013-11-05 Vmware, Inc. Repository including exclusion list
US11262996B2 (en) 2007-05-09 2022-03-01 Vmware, Inc. Repository including exclusion list
US10997531B2 (en) * 2007-09-11 2021-05-04 Ciambella Ltd. System, method and graphical user interface for workflow generation, deployment and/or execution
US20090070121A1 (en) * 2007-09-11 2009-03-12 Jean-Baptiste Leonelli System, Method And Graphical User Interface For Workflow Generation, Deployment And/Or Execution
US8484611B2 (en) 2007-10-15 2013-07-09 International Business Machines Corporation Method and system for simplified assembly of information processing applications
US7827127B2 (en) * 2007-10-26 2010-11-02 Microsoft Corporation Data scoping and data flow in a continuation based runtime
CN101946257A (zh) * 2007-12-20 2011-01-12 惠普开发有限公司 建模基于计算机的业务过程以及模拟操作
US20110004564A1 (en) * 2007-12-20 2011-01-06 Jerome Rolia Model Based Deployment Of Computer Based Business Process On Dedicated Hardware
US20100262558A1 (en) * 2007-12-20 2010-10-14 Nigel Edwards Incorporating Development Tools In System For Deploying Computer Based Process On Shared Infrastructure
CN101946261A (zh) * 2007-12-20 2011-01-12 惠普开发有限公司 基于计算机的业务过程的自动化模型产生
WO2009082388A1 (en) * 2007-12-20 2009-07-02 Hewlett-Packard Development Company, L.P. Modelling computer based business process for customisation and delivery
US8447657B2 (en) 2007-12-31 2013-05-21 Sap Ag Architectural design for service procurement application software
US8510143B2 (en) 2007-12-31 2013-08-13 Sap Ag Architectural design for ad-hoc goods movement software
US8671034B2 (en) 2007-12-31 2014-03-11 Sap Ag Providing human capital management software application as enterprise services
US8401936B2 (en) 2007-12-31 2013-03-19 Sap Ag Architectural design for expense reimbursement application software
US8671032B2 (en) 2007-12-31 2014-03-11 Sap Ag Providing payment software application as enterprise services
US8315900B2 (en) 2007-12-31 2012-11-20 Sap Ag Architectural design for self-service procurement application software
US8671033B2 (en) 2007-12-31 2014-03-11 Sap Ag Architectural design for personnel events application software
US8312426B2 (en) * 2008-01-07 2012-11-13 International Business Machines Corporation Method and system for simplified service composition in web environment
US8245122B2 (en) * 2008-01-08 2012-08-14 International Business Machines Corporation Method and system for modeling user requests, applications and components used in dynamic application assembly
US8239828B2 (en) * 2008-01-08 2012-08-07 International Business Machines Corporation Method of recovering from software failures using replanning
US8341598B2 (en) 2008-01-18 2012-12-25 Microsoft Corporation Declartive commands using workflows
US8640149B2 (en) * 2008-03-26 2014-01-28 International Business Machines Corporation Method and apparatus for dynamic web service composition and invocation
US8949140B2 (en) * 2008-04-21 2015-02-03 International Business Machines Corporation Method and system for dynamic software reconfiguration triggered by component- or system- initiated events
US8898624B2 (en) * 2008-05-05 2014-11-25 International Business Machines Corporation Method and apparatus for simplified assembly of parametric information processing applications
US9417931B2 (en) * 2008-06-24 2016-08-16 Microsoft Technology Licensing, Llc Unified metadata for external components
US20090320007A1 (en) * 2008-06-24 2009-12-24 Microsoft Corporation Local metadata for external components
US8776038B2 (en) 2008-08-07 2014-07-08 Code Systems Corporation Method and system for configuration of virtualized software applications
US8434093B2 (en) 2008-08-07 2013-04-30 Code Systems Corporation Method and system for virtualization of software applications
US20100050153A1 (en) * 2008-08-21 2010-02-25 Clevest Solutions Inc. Method and system of editing workflow logic and screens with a gui tool
US20100049568A1 (en) * 2008-08-21 2010-02-25 Clevest Solutions Inc. System and Method for an Extensible Workflow Management
US8327332B2 (en) 2008-09-02 2012-12-04 Microsoft Corporation Seamless debugging among different application views
US8326706B2 (en) 2008-09-18 2012-12-04 Sap Ag Providing logistics execution application as enterprise services
US8380549B2 (en) 2008-09-18 2013-02-19 Sap Ag Architectural design for embedded support application software
US8401928B2 (en) 2008-09-18 2013-03-19 Sap Ag Providing supplier relationship management software application as enterprise services
US8386325B2 (en) 2008-09-18 2013-02-26 Sap Ag Architectural design for plan-driven procurement application software
US8315926B2 (en) 2008-09-18 2012-11-20 Sap Ag Architectural design for tax declaration application software
US8595077B2 (en) 2008-09-18 2013-11-26 Sap Ag Architectural design for service request and order management application software
US8374896B2 (en) 2008-09-18 2013-02-12 Sap Ag Architectural design for opportunity management application software
US8321250B2 (en) 2008-09-18 2012-11-27 Sap Ag Architectural design for sell from stock application software
US8352338B2 (en) 2008-09-18 2013-01-08 Sap Ag Architectural design for time recording application software
US8818884B2 (en) 2008-09-18 2014-08-26 Sap Ag Architectural design for customer returns handling application software
US20100082497A1 (en) * 2008-09-18 2010-04-01 Sap Ag Providing Foundation Application as Enterprise Services
US8584084B2 (en) * 2008-11-12 2013-11-12 Autodesk, Inc. System for library content creation
US8099480B1 (en) * 2008-11-25 2012-01-17 Google Inc. Scalable workflow design for automated service management
US8321308B2 (en) 2008-12-03 2012-11-27 Sap Ag Architectural design for manual invoicing application software
US8401908B2 (en) 2008-12-03 2013-03-19 Sap Ag Architectural design for make-to-specification application software
US8311904B2 (en) 2008-12-03 2012-11-13 Sap Ag Architectural design for intra-company stock transfer application software
US8738476B2 (en) 2008-12-03 2014-05-27 Sap Ag Architectural design for selling standardized services application software
US8321306B2 (en) 2008-12-03 2012-11-27 Sap Ag Architectural design for selling project-based services application software
US8671035B2 (en) 2008-12-11 2014-03-11 Sap Ag Providing payroll software application as enterprise services
US8091016B2 (en) * 2008-12-18 2012-01-03 Microsoft Corporation Visually manipulating instance collections
US8230357B2 (en) * 2008-12-18 2012-07-24 Microsoft Corporation Visually processing instance data
US8543975B2 (en) * 2008-12-18 2013-09-24 Microsoft Corporation Behavior-first event programming model
US20100223557A1 (en) * 2009-02-28 2010-09-02 Adam Kenney Method and system for workflow integration
US8683432B2 (en) * 2009-03-20 2014-03-25 Microsoft Corporation Providing execution context in continuation based runtimes
US20100262451A1 (en) * 2009-04-14 2010-10-14 The Boeing Company Simplified Approach for Service Composition and Orchestration
US8949772B1 (en) * 2009-06-01 2015-02-03 Amazon Technologies, Inc. Dynamic model based software application development
US8667329B2 (en) * 2009-09-25 2014-03-04 Ab Initio Technology Llc Processing transactions in graph-based applications
US8473905B1 (en) * 2009-09-30 2013-06-25 Emc Corporation Managing user interface characteristics in displaying data storage systems information
US8484619B2 (en) * 2009-11-05 2013-07-09 Microsoft Corporation Multi-view debugging
US8954958B2 (en) * 2010-01-11 2015-02-10 Code Systems Corporation Method of configuring a virtual application
US8370156B1 (en) * 2010-01-20 2013-02-05 The Mathworks, Inc. Editing suggestions in different formalisms
US8959183B2 (en) 2010-01-27 2015-02-17 Code Systems Corporation System for downloading and executing a virtual application
US9104517B2 (en) 2010-01-27 2015-08-11 Code Systems Corporation System for downloading and executing a virtual application
US9229748B2 (en) 2010-01-29 2016-01-05 Code Systems Corporation Method and system for improving startup performance and interoperability of a virtual application
US8484610B2 (en) * 2010-03-17 2013-07-09 Microsoft Corporation Workflow execution model
US8763009B2 (en) 2010-04-17 2014-06-24 Code Systems Corporation Method of hosting a first application in a second application
US8452717B2 (en) 2010-04-27 2013-05-28 Hewlett-Packard Development Company, L.P. Presenting an interactive guidance structure in a collaborative environment
US8782106B2 (en) 2010-07-02 2014-07-15 Code Systems Corporation Method and system for managing execution of virtual applications
US8732094B2 (en) 2010-07-30 2014-05-20 Hewlett-Packard Development Company, L.P. Enforcement of security requirements for a business model
US9021015B2 (en) * 2010-10-18 2015-04-28 Code Systems Corporation Method and system for publishing virtual applications to a web server
US9209976B2 (en) 2010-10-29 2015-12-08 Code Systems Corporation Method and system for restricting execution of virtual applications to a managed process environment
KR101711218B1 (ko) * 2010-11-23 2017-03-13 엘지전자 주식회사 복수의 컨텐츠 제공자로부터 제공되는 서비스를 제공/수신하기 위한 방법 및 그 방법을 이용한 시스템 및 장치
US9003318B2 (en) * 2011-05-26 2015-04-07 Linden Research, Inc. Method and apparatus for providing graphical interfaces for declarative specifications
US9395959B2 (en) 2011-12-09 2016-07-19 Microsoft Technology Licensing, Llc Integrated workflow visualization and editing
CN104126186B (zh) * 2011-12-23 2019-07-19 爱尔斯特里普Ip控股有限责任公司 开发用于计算设备的多平台应用的系统和方法
US9519879B1 (en) * 2012-08-24 2016-12-13 Tibco Software Inc. Just in time compilation (JIT) for business process execution
US9286032B2 (en) 2013-03-15 2016-03-15 International Business Machines Corporation Automated software composition
CN105247548B (zh) * 2013-05-21 2019-09-10 思杰系统有限公司 基于应用的协作工作空间系统中的用户定义工作流
US9579573B2 (en) 2013-06-10 2017-02-28 Pixel Press Technology, LLC Systems and methods for creating a playable video game from a three-dimensional model
US9370721B2 (en) * 2013-06-10 2016-06-21 Pixel Press Technology, LLC Systems and methods for creating a playable video game from a static model
US10363486B2 (en) 2013-06-10 2019-07-30 Pixel Press Technology, LLC Smart video game board system and methods
US9032363B2 (en) * 2013-08-19 2015-05-12 Red Hat, Inc. Providing a user interface library for building web-based applications
WO2015095322A1 (en) * 2013-12-17 2015-06-25 The Cleveland Clinic Foundation Logic flow generator system and method
US9170786B1 (en) 2013-12-20 2015-10-27 Emc Corporation Composable context menus
US10466872B1 (en) 2013-12-20 2019-11-05 Open Text Corporation Composable events for dynamic user interface composition
US9529572B1 (en) 2013-12-20 2016-12-27 Emc Corporation Composable application session parameters
US9851951B1 (en) 2013-12-20 2017-12-26 Emc Corporation Composable action flows
US9756147B1 (en) 2013-12-20 2017-09-05 Open Text Corporation Dynamic discovery and management of page fragments
US9286034B2 (en) * 2014-01-23 2016-03-15 Apple Inc. Application dataflow aware property and bindings
US20150235154A1 (en) * 2014-02-19 2015-08-20 Clemens UTSCHIG Computerized method and system and method to provide business process & case modeling and execution of business processes and activities
CN104317944B (zh) * 2014-10-31 2018-07-06 上海实方软件有限公司 一种基于公式的时间戳动态调整并发控制方法
US9448769B1 (en) * 2015-03-30 2016-09-20 International Business Machines Corporation Employing code overlays to facilitate software development
US9311083B1 (en) * 2015-04-10 2016-04-12 CypressX LLC Machine interface configuration system for coerced inconsistencies on different machine platforms
US9934026B2 (en) * 2015-06-23 2018-04-03 Microsoft Technology Licensing, Llc Workflow generation and editing
US10073881B2 (en) 2015-07-21 2018-09-11 Autodesk, Inc. Platform for authoring, storing, and searching workflows
CN108369514B (zh) * 2015-07-31 2023-01-06 慧咨环球有限公司 用于可执行内容和可执行内容流创建的系统和方法
US10203939B2 (en) * 2015-10-30 2019-02-12 Sap Se Method and system for parameter model framework
US9508052B1 (en) * 2015-12-08 2016-11-29 International Business Machines Corporation Generating client applications for business processes management engines
WO2018170079A1 (en) 2017-03-14 2018-09-20 Ciambella Ltd. Method and apparatus for automatically generating and incorporating code in development environments
WO2018226621A1 (en) * 2017-06-05 2018-12-13 Umajin Inc. Methods and systems for an application system
US11922564B2 (en) 2017-06-05 2024-03-05 Umajin Inc. Generative content system that supports location-based services and methods therefor
US11954486B2 (en) 2017-06-05 2024-04-09 Umajin Inc. Location tracking system and methods
US11726822B2 (en) 2017-06-05 2023-08-15 Umajin Inc. Systems and methods for providing digital twin-enabled applications
US11188390B2 (en) 2017-06-05 2021-11-30 Umajin Inc. Method for configuring a server kit by a server management system
CN107703902B (zh) * 2017-11-22 2023-12-12 安图实验仪器(郑州)有限公司 可视化的机械控制时序编排和调度系统
US11055134B2 (en) 2017-11-30 2021-07-06 International Business Machines Corporation Performing an action on a composite of software instances
US10331421B2 (en) * 2017-11-30 2019-06-25 International Business Machines Corporation Execution of a composite template to provision a composite of software service instances
US10331419B2 (en) * 2017-11-30 2019-06-25 International Business Machines Corporation Creating composite templates for service instances
US10754626B2 (en) * 2018-11-30 2020-08-25 Shopify Inc. Visual and code views in a process workflow user interface
US10452360B1 (en) * 2019-03-19 2019-10-22 Servicenow, Inc. Workflow support for dynamic action input
FR3097672A1 (fr) * 2019-06-21 2020-12-25 Aava Mobile Sas Système d’applications de service pour terminaux de paiement
CN111260204A (zh) * 2020-01-13 2020-06-09 同济大学 业务流程设计缺陷的检测方法、可读存储介质及终端
US11348019B2 (en) 2020-08-06 2022-05-31 Cisco Technology, Inc. Advanced workflow based self-serve automation system
US11886867B2 (en) 2020-11-12 2024-01-30 International Business Machines Corporation Workflow patching
US20220222106A1 (en) * 2020-11-23 2022-07-14 Precise.ly, Inc. Automatic run suspension management
US11436044B2 (en) 2020-11-23 2022-09-06 Precise.ly, Inc. Asynchronous inter-run coordination management
WO2024063781A1 (en) * 2022-09-23 2024-03-28 Rakuten Mobile, Inc. Workflow management method, system and computer program product with dynamic workflow creation

Family Cites Families (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5734837A (en) 1994-01-14 1998-03-31 Action Technologies, Inc. Method and apparatus for building business process applications in terms of its workflows
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
US5774661A (en) 1995-04-18 1998-06-30 Network Imaging Corporation Rule engine interface for a visual workflow builder
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
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
US6621505B1 (en) 1997-09-30 2003-09-16 Journee Software Corp. Dynamic process-based enterprise computing system and method
US6225998B1 (en) 1997-12-02 2001-05-01 Aspect Communications Visual design of workflows for transaction processing
US6115646A (en) 1997-12-18 2000-09-05 Nortel Networks Limited Dynamic and generic process automation system
US6430538B1 (en) 1998-04-30 2002-08-06 Enterworks Workflow management system, method and medium with personal subflows
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
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
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
US7133833B1 (en) 1998-10-27 2006-11-07 Netscape Communications Corporation Lightweight directory access protocol workflow management system
AU3875900A (en) 1999-03-11 2000-09-28 Paysys International, Inc. Methods and systems for developing applications and for interfacing with users
JP3767666B2 (ja) * 1999-06-25 2006-04-19 沖電気工業株式会社 ワークフロー管理システム
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
EP1277104A1 (en) 2000-03-30 2003-01-22 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
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
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
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
US7222334B2 (en) * 2001-07-24 2007-05-22 Hewlett-Packard Development Comapny, L.P. Modeling tool for electronic services and associated methods and businesses
US20030055668A1 (en) 2001-08-08 2003-03-20 Amitabh Saran Workflow engine for automating business processes in scalable multiprocessor computer platforms
US7406424B2 (en) * 2001-08-29 2008-07-29 Hewlett-Packard Development Company, L.P. Migration of a workflow system to changed process definitions
US6985939B2 (en) 2001-09-19 2006-01-10 International Business Machines Corporation Building distributed software services as aggregations of other services
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
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
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
DE10215653A1 (de) 2002-04-09 2003-11-06 Bernhard Voslamber Verfahren und Anordung zur automatischen Erzeugung von Programmcodeabschnitten sowie ein entsprechendes Computerprogrammprodukt und ein entsprechendes computerlesbares Speichermedium
EP1502218A4 (en) 2002-04-15 2005-08-17 Invensys Sys Inc METHOD AND DEVICES FOR A PROCESS-, FACTORY-, ENVIRONMENT-, ENVIRONMENT- AND COMPUTER AIDED MANUFACTURING-BASED OR OTHERWISE 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
US7272816B2 (en) 2002-07-31 2007-09-18 Sap Aktiengesellschaft Transformations between private and shared workflows
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
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
US20050066002A1 (en) 2003-07-31 2005-03-24 Arnold Teres Workflow compatible healthcare information message communication system
US7693973B2 (en) 2003-08-28 2010-04-06 International Business Machines Corporation Pluggable state meta-data processors based on meta information modeling in a service oriented architecture
CA2442796A1 (en) 2003-09-26 2005-03-26 Ibm Canada Limited - Ibm Canada Limitee Binding a workflow engine to a data model
US7093207B1 (en) 2003-11-17 2006-08-15 Kla-Tencor Technologies Corporation Data analysis flow 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
US7631291B2 (en) 2004-10-01 2009-12-08 Microsoft Corporation Declarative representation for an extensible workflow model
US8478616B2 (en) 2004-10-29 2013-07-02 FrontRange Solutions USA Inc. Business application development and execution environment
US7433887B2 (en) 2004-12-29 2008-10-07 Microsoft Corporation Method and apparatus for metadata driven business logic processing
US7493594B2 (en) 2005-03-14 2009-02-17 Research In Motion System and method for designing component based applications
US7747958B2 (en) 2005-04-18 2010-06-29 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
US7983943B2 (en) 2005-05-27 2011-07-19 Xerox Corporation Method and system for workflow process node synchronization

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009006064A3 (en) * 2007-06-29 2009-02-26 Microsoft Corp Declarative workflow designer

Also Published As

Publication number Publication date
EP1643429A1 (en) 2006-04-05
US20060074733A1 (en) 2006-04-06
JP2006107481A (ja) 2006-04-20
US7565640B2 (en) 2009-07-21
JP5710852B2 (ja) 2015-04-30

Similar Documents

Publication Publication Date Title
JP5710852B2 (ja) 設計時および実行時にワークフローを継ぎ目なくオーサリングし編集するためのフレームワーク
JP5173128B2 (ja) フローベースおよび制約ベースのワークフローをオーサリングし、実行するための統一モデル
JP5021193B2 (ja) 拡張可能ワークフローモデルの宣言的表現
KR20060087996A (ko) 작업 흐름 도메인에서 횡단적인 거동 관심사를 모델링하는컴퓨터 구현 방법
JP4806240B2 (ja) コンポーネント化された拡張可能なワークフローモデル
US7451432B2 (en) Transformation of componentized and extensible workflow to a declarative format
EP1643435A1 (en) An extensible framework for designing workflows
US8170901B2 (en) Extensible framework for designing workflows
CA2393665A1 (en) Object oriented software development tool with the ability to create or purchase new components and add them to an inventory (catalog)
Conrad et al. Temporal OCL: Meeting specification demands for business components
Driver et al. Managing embedded systems complexity with aspect-oriented model-driven engineering
Ferreira et al. Developing a reusable workflow engine
Brichau et al. Application-specific models and pointcuts using a logic metalanguage
Gudenkauf et al. Domain-specific modelling for coordination engineering with SCOPE
Wasilewski Modeling of Enterprise Portals with Domain-Specific Language
Chen et al. Extraction of BPEL Process Fragments in Eclipse BPEL Designer
Gamito Workflow modeling using UML, Declarative Tools and WEB2. 0

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