KR101907701B1 - 통합된 워크플로우와 데이터베이스 트랜잭션 - Google Patents

통합된 워크플로우와 데이터베이스 트랜잭션 Download PDF

Info

Publication number
KR101907701B1
KR101907701B1 KR1020127033802A KR20127033802A KR101907701B1 KR 101907701 B1 KR101907701 B1 KR 101907701B1 KR 1020127033802 A KR1020127033802 A KR 1020127033802A KR 20127033802 A KR20127033802 A KR 20127033802A KR 101907701 B1 KR101907701 B1 KR 101907701B1
Authority
KR
South Korea
Prior art keywords
workflow
database
transaction
data structure
engine
Prior art date
Application number
KR1020127033802A
Other languages
English (en)
Other versions
KR20130116165A (ko
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 KR20130116165A publication Critical patent/KR20130116165A/ko
Application granted granted Critical
Publication of KR101907701B1 publication Critical patent/KR101907701B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling

Landscapes

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

Abstract

워크플로우와 데이터베이스를 통합하기 위한 컴퓨터로 구현되는 방법 및 시스템이 제공된다. 프로그램을 포함하는 컴퓨터로 판독 가능한 저장매체가 또한 제공된다. 컴퓨터로 구현되는 방법은 데이터베이스에 저장된 데이터 구조체를 하나 이상의 워크플로우 프로세스들에 할당하는 단계를 포함한다. 컴퓨터로 구현되는 방법은 또한 데이터 구조체가 새로운 레코드로 채워지는 것에 응답하여 워크플로우의 인스턴스를 자동 생성하는 단계를 포함한다.

Description

통합된 워크플로우와 데이터베이스 트랜잭션{INTEGRATED WORKFLOW AND DATABASE TRANSACTIONS}
본 발명은 일반적으로는 비즈니스 프로세스 관리(BPM: Business Process Management) 및 워크플로우 관리(Workflow Management), 컴퓨터 소프트웨어 산업, 및 관계형 데이터베이스 기술에 관한 것이다.
대부분의 비즈니스 애플리케이션들은 오라클 DB2 또는 마이크로소프트 SQL 서버와 같은 관계형 데이터베이스에서 실행한다. 비즈니스 프로세스 관리(BPM)("워크플로우 관리"라고도 함)는 급속히 발전하는 개념으로서, 과업(task)을 완료함에 있어서 프로세스 중심의 접근을 형성하기 위해 조직들에 의해 채택되고 있다. BPM 솔루션을 구현하는 여러 소프트웨어 솔루션들은 독립형 소프트웨어로서 또는 데이터베이스, 운영체제, 및 응용 프로그램 인터페이스(API: Application Programmatic Interfaces), 공통선 인터페이스(CLI: Common Line Interfaces), 및 n층 아키텍처(n-tier architecture) 내 다른 인터페이스들을 사용한 제3자 소프트웨어와 같은 다른 소프트웨어 플랫폼들과 조합하여 작동한다. 다수의 BPM 솔루션들은 문서, 이미지, 및 이메일 관리 시스템들로부터 진화되었으며, 이것들 모두는, 소재(subject matter)("문서", "파일", "이메일", 또는 "레코드")가 생성될 때, 프로세스가 상기 소재를 시작부터 끝까지 제어하는 개념을 중심으로 한다. 데이터베이스와 워크플로우를 통합하려는 시도는 특정 비즈니스 요구들에 대한 맞춤 솔루션으로서 상이한 소프트웨어 플랫폼들의 헐거운 커플링(loose coupling)을 포함하고 있다.
다음 요약과 상세한 설명은 본보기로서 설명을 위한 것이며 특허청구범위에 주장된 것과 같은 본 발명에 대해 추가 설명을 제공하기 위한 것임을 이해해야 한다. 다음 요약과 상세한 설명은 각각에서 설명되는 특정 특징들에 본 발명의 범위를 한정하거나 제한하는 것을 의도하지 않는다.
어떤 실시예에서, 개시된 실시예들은 여기서 설명된 특징들 중 하나 이상을 포함할 수 있다.
본 발명의 일 실시예에서, 컴퓨터로 구현된 방법이 제공된다. 컴퓨터로 구현된 방법은 데이터베이스에 저장된 데이터 구조체를 하나 이상의 워크플로우 프로세스에 할당하는 단계를 포함한다. 컴퓨터로 구현된 방법은 또한 상기 데이터 구조체가 새로운 레코드로 채워지는(populated)의 것에 응답하여 워크플로우 인스턴스(instance)를 자동 생성하는 단계를 포함한다.
본 발명의 또 다른 실시예에서, 프로세서에서 실행될 때, 동작을 수행하는 프로그램을 포함하는 컴퓨터로 판독 가능한 저장매체가 제공된다. 상기 동작은 데이터베이스에 저장된 데이터 구조체를 하나 이상의 워크플로우 프로세스에 할당하는 것을 포함한다. 상기 동작은 또한 상기 데이터 구조체가 새로운 레코드로 채워지는 것에 응답하여 워크플로우 인스턴스(instance)를 자동 생성하는 것을 포함한다.
본 발명의 또 다른 실시예에서, 시스템이 제공된다. 상기 시스템은 프로세서, 및 프로그램을 포함하는 메모리를 포함하고, 상기 프로그램은, 상기 프로세서에 의해 실행될 때, 동작을 수행하도록 구성된다. 상기 동작은 데이터베이스에 저장된 데이터 구조체를 하나 이상의 워크플로우 프로세스에 할당하는 것을 포함한다. 상기 동작은 또한 상기 데이터 구조체가 새로운 레코드로 채워지는 것에 응답하여 상기 하나 이상의 워크플로우의 인스턴스(instance)를 자동 생성하는 것을 포함한다.
본 발명의 전술한 특징 및 목적과 기타 특징 및 목적을 본 명세서를 통해서 명백하게 알 수 있다.
본 발명은 첨부된 도면과 함께 아래 상세한 설명을 참조함으로써 이해될 수 있으며, 도면에서 참조번호의 맨 좌측 숫자(들)는 각각의 참조번호들이 나타나는 첫 도면을 표시한다.
도 1은 본 발명의 일 실시예에 있어서 모범적인 컴퓨팅 환경을 도시하는 블록도이도,
도 2는 본 발명의 일 실시예에 있어서 워크플로우 엔진의 모범적인 구현의 블록도이고,
도 3은 본 발명의 일 실시예에 있어서 모범적인 베이스 테이블(base table) 및 서브-테이블(sub-tables)의 블록도이고,
도 4는 본 발명의 일 실시예에 있어서 워크플로우 프로세스를 설계하고 관리하기 위한 그래픽 사용자 인터페이스 화면을 도시하고,
도 5는 본 발명의 일 실시예에 있어서 DB 트랜잭션(database transcations)과 워크플로우 트랜잭션 사이의 관계를 보여주는 2개 테이블의 블록도이고,
도 6은 본 발명의 일 실시예에 있어서 워크플로우 엔진을 활성화시키고 프로세스 설계를 생성하는 흐름도를 도시하고,
도 7은 본 발명의 일 실시예에 있어서 데이터베이스-워크플로우 통합 트랜잭션을 수행하기 위한 흐름도를 도시하고,
도 8은 본 발명의 일 실시예에 있어서 워크플로우만의 트랜잭션을 수행하기 위한 흐름도를 도시하고,
도 9는 본 발명의 일 실시예에 있어서 워크플로우 트랜잭션과 관련된 워크폴로우 이벤트를 수행하기 위한 흐름도를 도시하고,
도 10은 본 발명의 일 실시예에 있어서 워크플로우 트랜잭션에서 서비스 브로커(Service Broker)를 사용하여 워크플로우 이벤트를 수행하기 위한 흐름도를 도시한다.
본 발명은 다양한 변경 및 대체 형태가 있을 수 있지만, 특정 실시예들이 도면에서 예시로서 도시되었고 본 명세서에서 상세히 설명된다. 그러나 본 명세서의 특정 실시예들의 설명은 본 발명을 개시된 특정 형태들에 한정하려는 의도는 아니며, 오히려, 첨부된 청구항들에 의해 정의된 본 발명의 사상 및 범위 내에 속하는 모든 변경, 균등물, 및 대체물들을 포함하는 것이다.
이하에서는 본 발명의 실시예들을 설명한다. 명확성을 위해, 실제 구현의 모든 특징들이 본 명세서에서 설명되지는 않는다. 물론 어떤 그와 같은 실제 구현의 개발에서, 구현에 따라 달라질 수 있는, 시스템-관련된 및 비즈니스-관련된 제약사항들과 같은 개발자의 특정 목표를 달성하기 위해 다수의 구현에 국한된 결정들이 이루어질 수 있음을 인식해야 할 것이다. 또한, 그와 같은 개발 노력은 복잡하고 시간이 소요되지만, 그럼에도 불구하고 본 발명의 편익을 갖는 당업자들을 위해 착수하는 일과일 수 있다.
이제 본 발명의 실시예들이 첨부된 도면을 참조하여 설명될 것이다. 단지 설명을 목적으로 그리고 당업자에게 잘 알려진 상세를 가지고 개시된 주제를 모호하게 하지 않도록 다양한 구조체, 연결, 시스템 및 디바이스들이 개략적으로 도면에 도시되어 있다. 그럼에도 불구하고, 첨부된 도면들은 본 발명의 실시예들을 설명하고 기술하기 위해 포함된다. 여기서 사용된 단어들 및 어구들은 관련 기술분야의 당업자들에 의한 상기 단어들 및 어구들의 이해와 일치하는 의미를 갖는 것으로 이해되고 해석되어야 한다. 용어 또는 어구의 특별한 정의, 즉 당업자들에 의해 이해되는 보통의 관례적인 의미와 상이한 정의는 본 명세서에서 상기 용어 또는 어구의 일관성 있는 용법에 함축하는 것으로 의도되지 않는다. 용어 또는 어구는 특별한 의미, 즉 당업자에 의해 이해되는 것과 다른 의미를 갖는 것으로 의도되는 정도까지, 그와 같은 특별한 정의는 상기 용어 또는 어구의 특별한 정의를 직접적으로 및 모호하지 않게 제공하는 정의 방식으로 본 명세서에서 명시적으로 제시될 것이다.
본 발명의 일 실시예는, 예를 들면 도 1에 도시되고 이하에 설명된 컴퓨팅 환경(100)과 같은 컴퓨터 시스템에서 사용을 위한 프로그램 제품으로서 구현된다. 프로그램 제품의 프로그램(들)은 상기 실시예들의 (여기서 설명되는 방법들을 포함하는) 기능들을 정의하고 다양한 신호-저장 매체에 포함될 수 있다. 실례가 되는 신호-저장 매체는: (i) 쓰기 금지된 저장 매체(예컨대, CD-ROM 드라이브에 의해 판독 가능한 CD-ROM 디스크와 같은 컴퓨터 내의 읽기 전용 메모리 장치)에 영구적으로 저장된 정보; (ⅱ) 쓰기 가능한 저장 매체(예컨대, 디스켓 드라이브 또는 하드-디스크 드라이브 내의 플로피 디스크)에 저장된 변경 가능한 정보; 및 (ⅲ) 무선 통신을 포함하여 컴퓨터 또는 전화 네트워크와 같은 통신 매체에 의해 컴퓨터에 전달된 정보를 포함하며 이에 한정되지 않는다. 후자의 실시예는 구체적으로 인터넷 또는 다른 네트워크로부터 다운로드 한 정보를 포함한다. 그와 같은 신호-저장 매체는 본 발명의 기능들을 지시하는 컴퓨터로 판독 가능한 명령들을 수행할 때 본 발명의 실시예들을 나타낸다.
일반적으로, 본 발명의 실시예들을 구현하기 위해 실행된 루틴(routine)들은 운영체제(OS), 특정 애플리케이션, 데이터베이스, 컴포넌트, 프로그램, 모듈 오브젝트 또는 명령들의 시퀀스의 부분일 수 있다. 본 발명의 컴퓨터 프로그램은 통상 네이티브(native) 컴퓨터에 의해 기계 판독 가능한 형식인 실행 가능한 명령들로 번역되는 다수의 명령들을 포함한다. 또한, 프로그램들은 프로그램 근방에 위치하거나 메모리 또는 저장 장치 내에서 발견되는 변수들 및 데이터 구조체들을 포함한다. 또한, 이후에 설명되는 다양한 프로그램들은 프로그램들이 본 발명의 특정 실시예에서 구현되는 애플리케이션에 기초하여 식별될 것이다. 그러나, 이후에 나오는 어떤 특정한 프로그램 용어는 단지 편의상 사용되는 것이고, 따라서 본 발명은 그와 같은 용어에 의해 식별되거나 함축된 어떤 특정 애플리케이션에서만 오로지 사용되는 것으로 제한되지 않는다는 것을 인식해야 한다. 이와 관련하여, HTML, XML, SQL, .NET, C# 등과 같은 특별한 정의 언어 및 프로그래밍 언어에 대한 참조는 단지 실례일 뿐이다. 본 발명은 네트워크 자원 콘텐츠를 정의하기 위해 사용된 특정 스키마(schema) 또는 언어에 관계없이 널리 적용 가능할 것으로 생각된다.
도 1은 본 발명의 일 실시예에 있어서 모범적인 컴퓨팅 환경(100)을 보여주는 블록도를 도시한다. 일반적으로, 컴퓨팅 환경(100)은 클라이언트(예컨대, 사용자) 컴퓨터(102) 및 서버 컴퓨터(104)를 포함한다. 클라이언트 컴퓨터(102) 및 서버 컴퓨터(104)는 동일한 컴퓨터 시스템의 구성요소이거나 인터넷과 같은 네트워크(106)를 통해 연결될 수 있다.
도면에서, 클라이언트 컴퓨터(102)는 버스(116)를 통해 메모리(110), 저장장치(112), 및 네트워크 인터페이스(114)에 연결된 중앙처리유닛(CPU)(108)을 포함한다. CPU(108)는 단일 CPU, 복수 CPU, 복수의 프로세싱 코어를 갖는 단일 CPU 등을 대표한다. 저장장치(112)는 클라이언트 컴퓨터(102)가 사용할 애플리케이션 프로그램 및 데이터를 저장한다. 저장장치(112)의 예는 하나 이상의 하드-디스크 드라이브, 플래시 메모리 장치, 광학 미디어 등을 포함한다. 클라이언트 컴퓨터(102)는 네트워크 인터페이스(114)를 통해 데이터 통신 네트워크(106)(예컨대, 그 자체가 인터넷과 같은 다른 네트워크들에 연결되는 LAN(local area network))에 연결될 수 있다. 메모리(110)는 RAM, 비휘발성 또는 백업 메모리(예컨대, 프로그래머블 또는 플래시 메모리, ROM 등)를 포함하는 메모리 장치들 중 하나이거나 또는 이것들의 조합일 수 있다. 예를 들면, 클라이언트 컴퓨터(102)의 메모리(110)는 클라이언트 컴퓨터(102)에서 실행되는 하드웨어 및 소프트웨어를 관리하기 위해 사용되는 운영체제(118)를 저장한다. 도면에서, 메모리(110)는 또한 브라우저 프로그램(120)을 포함하며, 이것은 CPU(108)에 의해 실행될 때 다양한 서버들 사이에서의 내비게이션(navigation)을 하고 하나 이상의 서버들(예컨대, 서버 컴퓨터(104))에서 네트워크 주소를 찾는 것을 지원한다.
클라이언트 컴퓨터(102)는 하나 이상의 디스플레이 유닛(122), 입력장치(124), 출력장치(126), 및 주변장치(128)들에 연결될 수 있다. 입력장치(124)는 키보드, 마우스, 트랙-볼(track-ball), 스타일러스(stylus), 마우스 패드, 마우스 버튼, 조이스틱, 스캐너 등 중에서 어느 하나일 수 있다. 출력장치(126)는 모니터, 플로터(plotter), 프린터, 복사기 또는 다른 출력장치 중 어느 하나일 수 있다. 주변장치(128)는 컴퓨터와 접속될 수 있는 장치라면 어떤 것이라도 가능하다: 즉, 물리적 디지털 미디어에 읽기 및/또는 쓰기가 가능한 CD/DVD 드라이브, USB 드라이브, 집(Zip) 드라이브, 외장 플로피 드라이브, 외장 하드 드라이브, 전화 및/또는 광대역 모뎀, 라우터/게이트웨이, 액세스 포인트 등.
클라이언트 컴퓨터(102)와 마찬가지로, 서버 컴퓨터(104)는 CPU(130), 메모리(132), 네트워크 인터페이스 장치(134), 및 저장장치(136)를 포함할 수 있고, 버스(138)에 의해 연결된다. 메모리(132)는 서버 컴퓨터(104)에 위치되는 필요 프로그램 및 데이터 구조체들을 보관하는데 충분히 큰 RAM(random access memory)일 수 있다. 도면에서, 메모리(132)는 서버 컴퓨터(104)에서 실행되는 소프트웨어 및 하드웨어를 관리하기 위해 사용되는 운영체제(142)를 저장한다. 예를 들면, 메모리(132)는 또한 클라이언트 컴퓨터(102)로부터의 요청에 서비스하도록 설정된 http(hypertext transfer protocol) 서버(144)를 포함한다. 예를 들면, http 서버(144)는 서버 컴퓨터(104)에 위치하는 전자적 자원(예컨대, HTML 문서, 네트워크 정보 등)에 대한 액세스 요청에 응답할 수 있다. 메모리(132)는 또한 데이터베이스 애플리케이션 조회 등에 대한 액세스 요청에 응답하는 DB 서버(143)를 포함할 수 있다. 그러나 당업자는, DB 서버(143) 또는 http 서버(144)가 단지 예시적인 것이고 본 발명의 실시예가 알려진 프로토콜과 알려지지 않은 프로토콜 모두에 적응될 수 있음을 인식할 것이다. http 서버(144)의 프로그래밍 및 데이터 구조체들은 동작 동안에 필요에 따라 CPU(130)에 의해 액세스되고 실행될 수 있다. 서버 컴퓨터(104)는 네트워크 인터페이스 장치(134)(예컨대, 아나로그 모뎀, 유선 네트워크 카드, 또는 무선 네트워크 장치)를 사용하여 네트워크(106)에 접속할 수 있다.
일 실시예에서, 사용자들은 GUI(graphical user interface)를 사용하여 서버 컴퓨터(104)와 상호작용할 수 있다. 특정 실시예에서, GUI 내용은 클라이언트 컴퓨터(102)에 접속된 디스플레이 유닛(122)에 브라우저(120)를 사용하여 렌더링되는 HTML 문서(즉, 웹 페이지)들을 포함할 수 있다. 일 실시예에서, 상기 웹 페이지들은 다양한 비즈니스 프로세스(즉, 워크플로우)의 수행을 사용자가 설계, 조작(manipulation), 실행 및 감시할 수 있도록 하는 페이지들을 포함할 수 있다.
DB 서버(143)는 복수의 데이터베이스(1451, 1452)를 포함할 수 있다. 데이터베이스(1451)는 워크플로우 엔진(146)을 호스팅(hosting)할 수 있다. 워크플로우 엔진(146)은 데이터베이스(들)에 관련된 작업 활동들을 제어하기 위해 워크플로우를 모델링하는(예컨대, 프로세스, 상태, 과업(task), 동작(action), 이벤트(event), 규칙을 정의함) 능력을 (예컨대, GUI를 통해서) 제공하도록 설정된 소프트웨어 애플리케이션을 포함할 수 있다. 데이터베이스(1451, 1452)는 SQL 쿼리를 사용하여 조회되는 관계형 데이터베이스(1451) 또는 XML 쿼리를 사용하여 조회되는 XML 데이터베이스(1452)를 포함할 수 있다. 그러나 본 발명은 어떤 특정 물리적 데이터베이스 저장 메커니즘에 한정되지 않으며 현재 알려져 있거나 알려지지 않은 그와 같은 다른 메커니즘에도 용이하게 확대 적용될 수 있다. 데이터베이스(1451, 1452)는 서버 시스템에 내재하는 것으로 도시되어 있지만, 데이터베이스(1451, 1452)는 서버 컴퓨터(104)의 외부 저장장치(예컨대, 저장장치(136))에 위치하거나, 네트워크(106)를 통해 액세스될 수도 있다.
이제 도 2를 참조하면, 본 발명의 일 실시예에 있어서 워크플로우 엔진(146)의 모범적인 구현의 다이그램이 도시되어 있다. 워크플로우 엔진(146)은 데이터베이스(1451)에 위치한다. 데이터베이스(1451)는 데이터베이스 서버(143) 내에 위치한다. 도면에서, 워크플로우 프로세스 설계자(204), 비즈니스 소프트웨어 애플리케이션(206), 데이터베이스 쿼리 툴(207), 데이터베이스 리포팅 툴(208) 및 다른 데이터베이스 툴(209)은 데이터베이스(1451)에 접속된다. 데이터베이스(1451, 1452)는 로지컬 유닛에 관계되며 여기서 데이터, 프로시저, 및 보안은 하나 이상의 관련된 애플리케이션들이 사용할 수 있도록 분리된다. 데이터베이스 서버(143)는 또한 외부 시스템(1481, 1482)들에 접속되며, 이것들은 데이터베이스(1451) 내 프로그램 가능한 특징들의 사용을 통해 및/또는 데이터베이스 서버(143) 내 가용한 소프트웨어 특징들 또는 O/S(142)의 가용한 특징들의 사용을 통해 직접 제어되거나 조정(orchestration)되는 제3자 시스템들일 수 있다(도 1 참조). 일 실시예에서, 당해 기술분야에서 알려져 있는 많은 주요 데이터베이스 서버들에서 가용한 서비스 브로커 특징(도시되지 않음)들은 조정을 위해 사용된다.
조정은 복잡한 컴퓨터 시스템들, 미들웨어, 및 서비스들의 자동 정렬, 코디네이션, 및 관리를 지칭한다. 조정 동작에서, 과업을 수행하기 위해 함께 작동하는 헐겁게 연결된 시스템들 사이에서 메시지들이 교환된다. 예를 들면, 어떤 주소로 제품을 배송하라는 메시지가 제3자 배송회사에 송신될 수 있다. 배송회사는 독립적으로 배송을 수행하고 요청자에게 운송 상세를 확인한다. 배송을 요청한 회사는 배송 물류에 대해 상관하지 않으며, 배송 회사는 배송 목적을 상관하지 않는다. 메시지들이 2개의 회사 시스템들 사이에 단순히 교환되어 독립적인 방식으로 배송 과업을 수행한다.
프로세스 설계부(204)는 사용자가 (예컨대, 브라우저(120)에 의해 제공된 GUI를 통해(도 1 참조)) 워크플로우 프로세스를 생성하고 수정하는 것을 가능하게 한다. GUI를 사용하면, 사용자는 워크플로우 프로세스를 정의, 편집, 리뷰, 및 관리할 수 있다. 워크플로우 프로세스가 프로세스 설계자(204)에 의해 생성될 때, 데이터베이스(1451) 내 테이블(또는 데이터 구조체)은 프로세스를 위한 제어 테이블("베이스 테이블")로서 정의된다. 베이스 테이블 내로의 데이터의 유입은 워크플로우 엔진(146)을 기동시킨다. 베이스 테이블로 유입하는 데이터의 인스턴스(instance)(테이블의 레코드)는 워크플로우의 인스턴스를 개시한다. 베이스 테이블은 2개 이상 프로세스를 위한 제어 테이블일 수 있으며, 따라서 베이스 테이블로 유입하는 데이터의 인스턴스는 각 프로세스에 하나씩 워크플로우의 다수의 인스턴스를 개시할 수 있다. 다시말하면, 워크플로우 트랜잭션(들)은 베이스 테이블에 대한 데이터베이스 트랜잭션의 일부로서 개시된다.
일반적으로, 워크플로우는 프로세스, 상태, 및 전이(transition) 3개의 기본 엘리먼트(elements)들을 포함한다. 워크플로우 프로세스는 과업을 완료하기 위한 작업의 흐름의 시퀀스이다. 상기 흐름은 프로세스 레지스터(204)에 의해 설정된 조건들에 따라 상이한 지점들에서 상이한 경로를 취할 수 있다. 큰 과업은 다수의 상호연결된 서브-프로세스들로 논리적으로 분할될 수 있다. 상태는 워크플로우 프로세스 내 휴지 단계이다. 전이는 한 상태로부터 다른 상태로 워크플로우 인스턴스를 이동시키는 동작이다. 전이는 구체적인 사용자 동작이거나 사용자에 의해 설정된 특정 조건들에 기초한 자동적인 흐름이다. GUI를 사용하면, 사용자는 모델링되고 있는 워크플로우의 관련된 전이들과 상태들을 정의할 수 있다. 일 실시예에서, 워크플로우는 고 수준 흐름도로서 모델링될 수 있으며(도 4 참조), 이것에 의해 사용자는 활동들을 프로세스로서 논리적으로 설명하는 것이 가능하다. 일 실시예에서, 사용자는 아이콘들의 "끌어다 놓기(drag and drop)"을 수행함으로써 흐름도를 생성할 수 있다. 프로세스 설계자(204)는 워크플로우 엔진(146)과 상호작용한다. 모든 워크플로우 프로세스 정의("워크플로우 메타데이터")는 데이터베이스(1451)에 데이터로서 저장된다.
애플리케이션(206)은 상기 소프트웨어가 지원하도록 설계되는 비즈니스를 거래하기 위한 비즈니스 애플리케이션이다. 예를 들면, 우편 주문 동작을 위한 고객 주문 관리 애플리케이션용 소프트웨어는 비즈니스 애플리케이션이다. 비즈니스 애플리케이션은 주문을 생성하고, 배송 주문을 내고, 및 고객에 비용을 청구하는 화면을 구비할 수 있다. 그와 같은 애플리케이션은 워크플로우 능력을 구비하거나 구비하지 않고 구성될 수 있다. 워크플로우 능력이 없는 애플리케이션은 1452에서와 같이 데이터베이스 내에 워크플로우 엔진(146)을 갖지 않을 것이다. 워크플로우-활성화된 애플리케이션은 임의의 소프트웨어 애플리케이션과 같이, 그러나 워크플로우 엔진(146)으로부터 추가의 제어를 가지고 작동한다. 상기 애플리케이션은, 애플리케이션(206)이 워크플로우 엔진(146)과 상호작용하고 워크플로우 특징들을 이용하는 워크플로우-인식 애플리케이션으로 향상될 수 있다. 예를 들면, 워크플로우-향상된 애플리케이션은 모든 공개 주문들의 워크플로우 상태(들)을 보여줄 수 있다. 워크플로우-향상된 애플리케이션은 사용자에게 과업을 위임하고 우선순위를 부여할 수 있다. 워크플로우-향상된 애플리케이션은 또한 어떤 사용자가 무엇을 할 수 있는지 제어하고 사용자들 사이에 코디네이션을 수행할 수 있다.
전술한 바와 같이, 워크플로우 엔진(146)은 데이터베이스(1451) 내에 위치하고 데이터베이스(1451) 및 데이터베이스 서버(143)와 통합된다. 상기 통합은 워크플로우 엔진(146)을 데이터베이스(1451)의 데이터베이스 레이어 내에 위치하는 프로그램들로서 구현함으로써 달성된다. 이와 같은 통합은 새로운 데이터가 데이터베이스(1451)에 삽입될 때, 또는 데이터가 수정되고 및/또는 삭제될 때 워크플로우 프로세스를 제어하는 능력을 워크플로우 엔진(146)에 제공한다. 상기 통합은 데이터베이스 기능의 투명한 사용(즉, 워크플로우 엔진(146)의 존재를 인식하지 못하고)을 제공한다. 그러나 상기 통합은 워크플로우 제어를 포함한다. 워크플로우 프레세스들은 데이터베이스(1451) 내에 위치하는 베이스 테이블의 데이터에 대한 변경과 함께 예시되고, 안내되고, 및 제어된다. 애플리케이션(206), 데이터베이스 쿼리 툴(207), 데이터베이스 리포팅 툴(208), 및 다수의 다른 데이터베이스 툴(209)에 의한 데이터베이스(1451) 내 데이터에 대한 임의의 변경은 자동으로 측정되고 워크플로우 엔진(146)에 의해 제어된다. 상기 통합은 데이터베이스(1451) 레이어 내의 워크플로우 엔진(146)의 이음매 없는(seamless) 구현을 제공한다.
워크플로우 엔진(146)은 워크플로우 프로세스의 생성 및 관리를 제공하고, 워크플로우의 모델들을 해석하고, 및 워크플로우 실행을 관리한다. 워크플로우 엔진(146)은 또한 흐름의 경로를 설정하고 활동들을 동기화하고, 활동들에 자원을 할당하고, 개인들에게 통지하고, 이벤트 및 애플리케이션을 호출하고, 데이터 및 문서를 애플리케이션과 개인들에게 전송하고, 사용자 보안과 특권을 제어하고, 다양한 워크플로우 인스턴스의 다양한 상태의 정보를 유지하고, 및 워크플로우 트랜잭션들의 로그(log)를 유지한다.
이제 도 3을 참조하면, 본 발명의 일 실시예에 있어서 모범적인 베이스 테이블 및 서브-테이블들의 블록 다이어그램이 도시되어 있다. 일반적으로, 비즈니스, 조직, 엔터티(entity) 등에 대한 데이터는 적당한 데이터베이스(1451, 1452) 내의 여러 개의 관련된 테이블(302, 304, 306)에 저장될 수 있다. 하나의 그와 같은 테이블은 베이스 테이블(302)이며, 이것은 통상 복수의 행을 포함하고, 각각의 행은 레코드를 포함한다. 주문 관리 애플리케이션의 상황에 베이스 테이블을 적용하면, 베이스 테이블 내 각각의 레코드는 상기 애플리케이션을 사용하여 수행된 주문을 나타낼 수 있다. 도면에서, 각각의 레코드는 수행된 각각의 주문의 주문 식별 번호를 포함할 수 있다. 베이스 테이블(302)은 N개의 관련 서브-테이블(302, 304)을 가질 수 있다. 각각의 서브 테이블(302, 304)은 수행된 각각의 주문에 대한 추가 정보를 포함할 수 있다. 도면에서, 서브 테이블(304)은 수행된 각 주문에 대한 고객의 이름을 포함하고, 서브 테이블(306)은 각 주문에 대해 구입된 항목의 수량을 포함한다. 일 실시예에서, 워크플로우는 베이스 테이블(302)에 새로운 레코드가 삽입될 때 개시된다. 이와 같이 베이스 테이블(302)의 각각의 행은 또한 워크플로우 프로세스의 발생을 나타낼 수 있다(예컨대, 워크플로우에 의해 정의된 것과 같은 주문 관리 프로세스). 애플리케이션(206)은 베이스 테이블(302)(또는 하나의 그것의 서브 테이블(304, 306)) 내에 저장된 데이터를 생성하거나 수정하도록 설정될 수 있다. 애플리케이션(206)은 사용자 인터페이스를 사용하여 데이터 입력 또는 수정, 보고 기능 제공 등을 수행한다.
워크플로우는 또한 내부 및 외부 시스템(1481, 1482)과 관련될 수 있다. 예를 들어, 빈번한 구매 고객에게 포인트가 적립되는 비즈니스 모델을 고려해보자. 이 경우에, 포인트가 적립되는 단골 고객 적립 포인트 시스템은 내부 시스템일 수 있다. 그러나 데이터베이스(1452)를 사용하는 상이한 애플리케이션이다. 또 다른 예로서, 고객 주문의 생산자 직송을 위해 제3자 배송 회사가 사용될 수 있다. 배송 회사 시스템(예컨대, 외부 시스템(1481, 1482)에 배송 세부사항이 통지된다. 배송 회사는 배송 과업을 수행하고 확인 세부사항을 송신한다. 내부 및 외부 시스템들과의 상호작용은 워크플로우 이벤트를 통해서 완성된다. 워크플로우 이벤트들은 임의의 프로그램 언어(예컨대, C#, Java 등)를 사용하여 스크립트(scripts)에 지정될 수 있다. 상기 이벤트 스크립트는 통합 데이터베이스-워크플로우 트랜잭션의 일부로서 또는 단지 워크플로우 트랜잭션의 일부로서 워크플로우 엔진(146)에 의해 실행될 수 있다. 이벤트들은 적절한 위치에서, 예를 들면, 상태에 진입하거나, 상태를 퇴장할 때, 또는 사용자가 동작을 수행할 때에 실행되도록 설정될 수 있다. 이벤트들은 파일들을 생성하고, 다른 시스템들 및/또는 애플리케이션들에서 동작을 개시하고, 이메일 통지를 송신하는 것 등을 포함하지만, 이에 한정되지 않는다.
이제 도 4를 참조하면, 본 발명의 일 실시예에 있어서 워크플로우 프로세스(404)를 설계하고 관리하기 위한 그래픽 사용자 인터페이스(GUI) 화면(402)이 도시되어 있다. 설명의 목적으로, 도시된 워크플로우 프로세스(404)는 주문 관리 프로세스에 대한 것이다. 도면에서, 주문 관리 프로세스는 복수의 상태, 즉 시작(406), 주문 진행중(Order in Progress)(408), 배송된 주문(Shipped Order) (410), 청구된 주문(Invoiced Order)(412), 및 종료(414)를 포함할 수 있다. 상태들(406, 408, 410, 412, 414)은 복수의 전이들, 즉 주문 제출(Place Order)(416), 배송(Shipped)(418), 청구(Invoiced)(420), 취소(Cancelled)(422), 및 완료(424)에 의해 서로 접속될 수 있다. 워크플로우 프로세스(404)는 구매자가 (예를 들면, 웹 양식을 통해) 제품에 대해 주문을 낼 때 주문 진행중 상태(408)로 진입하도록 설정될 수 있다. 예를 들면, 만일 주문이 취소되면(예컨대, 공급자에 의해) 워크플로우 프로세스(404)는 주문 진행중 상태(408)로부터 종료 상태(414)로 취소 전이(422)를 통해 전이한다. 이 경우에, 공급자는 주문이 취소될 때 이벤트를 개시하는 사용자 양식(user form)을 이용할 수 있으며, 이것은 워크플로우가 취소 전이(422)를 추종하게 한다. 그러나 만일 제품이 배송되면, 워크플로우 프로세스(404)는 주문 진행중 상태(408)로부터 배송된 주문 상태(410)로 전이한다. 이 경우에, 사용자 양식은 주문이 배송될 때 워크플로우가 배송 전이(418)를 수행하도록 상호작용을 개시한다. (예컨대, 사용자 양식을 사용하여) 주문에 대해 청구서 발행(invoicing)을 하면, 워크플로우 프로세스(404)는 배송된 주문 상태(410)로부터 청구 전이(420)를 경유하여 청구된 주문 상태(412)로 전이한다. 주문을 완료하면, 청구된 주문 상태는 완료 전이(424)를 경유하여 종료 상태로 전이한다.
상태들(406, 408, 410, 412, 414) 및 전이들(416, 418, 320, 422, 424)은 상태들(426) 내의 아이콘들과 전이 박스(428) 내의 아이콘들을 사용하여 상태들 및 전이들을 끌어다 놓음으로써 워크플로우(402)의 일부로서 구현될 수 있다.
전술한 바와 같이, 워크플로우 프로세스(404)는 데이터베이스(1451, 1452) 내 베이스 테이블에 저장된 데이터와 관련된다. 일 실시예에서, 사용자는 데이터베이스 선택 버튼(430)을 사용하여 적절한 데이터베이스(1451, 1452)를 선택할 수 있다. 상기 실시예를 사용하면, 주문 관리 프로세스를 위한 워크플로우 프로세스(404)는 베이스 테이블 선택 버튼(432)를 사용하여 생성될 수 있으며, 이것은 주문 정보(예컨대, 주문 식별 번호)를 포함하는 베이스 테이블(302)(도 3 참조)을 관련시킨다. 주문(워크플로우 인스턴스)들은 주문 처리 애플리케이션(206), 쿼리 툴, 또는 어떤 다른 대등한 애플리케이션을 포함하는 다양한 툴들에 의해 생성될 수 있다. 워크플로우 인스턴스들은 사용되는 툴에 관계없이 생성된다.
일 실시예에서, 베이스 테이블(302)을 워크플로우 프로세스에 관련시키는 동안에, 워크플로우 엔진(146)은 베이스 테이블에 테이블 레벨 트리거들을 생성한다. 이와 같은 트리거들은 워크플로우 엔진(146)에 대해 게이트웨이로서 작동한다. 한 레코드가 베이스 테이블에 추가, 갱신, 및 삭제될 때, 워크플로우 엔진(146)은 테이블 트리거들을 통해 제어를 얻는다. 워크플로우 엔진(146)이 제어를 획득하는 경우, 워크플로우 엔진(146)은 레코드의 일차 키(primary key)를 사용하여 레코드를 식별하고 워크플로우 트랜잭션을 완료한다. 이와 같이, 워크플로우 트랜잭션은 데이터베이스 트랜잭션의 일부로서 완료된다. 베이스 테이블(302)에 새로운 주문에 대한 레코드가 삽입될 때, 워크플로우 프로세스(404)의 인스턴스가 이 주문을 위해 자동으로 생성된다. 이 경우에, 워크플로우 프로세스(404)가 개시될 때, 베이스 테이블(302)에 새롭게 수행된 주문이 삽입되면 시작 상태(406)로부터 주문 진행중 상태(408)로 자동으로 및/또는 조건부로 전이하도록 구성될 수 있다.
일단 사용자가 원하는 워크플로우 프로세스(404)를 설계하면, 워크플로우 능력은 기존의 또는 새로운 애플리케이션(예컨대, 웹-기반 주문 제출 애플리케이션) 내에 병합될 수 있다. 예를 들면, 사용자는 (예컨대, 마이크로소프트 Visual Basic.NET을 사용하여) 웹 양식을 생성하고 상기 웹 양식을 데이터베이스(1451, 1452)와 관련시킬 수 있다. 브라우저(122)를 사용하면, 복수의 웹 양식이 생성될 수 있고, 각각은 상이한 목적을 갖는다. 예를 들면, 하나의 특별한 웹 양식이 제품에 대한 주문을 제출하기 위해 사용될 수 있다. 이를 테면, 웹 양식은 주문에 관한 정보를 수신하는 다양한 필드들을 포함할 수 있다(예컨대, 배송 주소, 비용청구 주소, 제품 명칭, 수량 등). 사용자가 양식을 제출할 때, 새로-제출된 주문을 나타내는 엔트리(entry)가 생성된 워크플로우 프로세스(404)를 위해 선택된 동일한 베이스 테이블(302) 내에 생성된다. 따라서, 일단 엔트리가 베이스 테이블(302) 내에 생성되면, 워크플로우 프로세스 인스턴스는 이 주문에 대해 자동으로 생성될 수 있다. 워크플로우 인스턴스는 상기 프로세스에 대해 설정된 조건들에 기초하여 생성되거나 생성되지 않을 수 있다. 예를 들면, 상기 조건은 우편 주문에 대해서만 워크플로우를 생성하도록 설정되고 매장 구매로부터의 주문에 대해서는 생성하지 않도록 설정될 수 있다. 한 행이 생성될 때, 주문 제출 전이 역시 개시될 수 있다. 따라서, 시작 상태(406)는 주문 진행중 상태(408)로 전이한다. 워크플로우의 인스턴스는 베이스 테이블의 일차 키 또는 고유 키에 의해 식별된다. 테이블의 일차 키는 테이블의 행에 대한 고유 식별자이다. 워크플로우 엔진(146)은 복수의 테이블들을 포함하는 자신의 데이터 저장소의 베이스 테이블(들)에 각각의 레코드의 상태 정보를 독립적으로 유지한다. 예를 들면 워크플로우 엔진(146)은 현재 ORDER_ID = 0001(일차 키)이 주문 진행중 상태(408)에 있다는 정보를 갖는다.
생성될 수 있는 또 다른 타입의 양식은 주문 조달 및 배송 양식이며, 이것은 제품의 공급자에 의해 사용될 수 있다. 공급자는 이 양식을 사용하여 주문을 취소하거나 주문된 제품을 조달한다(즉, 주문을 배송함). 상기 양식이 제출되면, 워크플로우 엔진(406)에 통지하여 워크플로우 프로세스(404)를 주문 진행중 상태(408)로부터 적절한 상태로 이동시키는 이벤트를 개시할 수 있다. 예를 들어, 만일 공급자가 주문을 취소하면, 취소 전이 이벤트가 개시되어, 워크플로우 프로세스(404)를 주문 진행중 상태(408)로부터 종료 상태(414)로 이동시킨다. 일 실시예에서, 주문 조달 및 배송 양식이 제출되면, 워크플로우 엔진(146)에 지시하여 워크플로우(404)를 주문 진행중 상태(408)로부터 종료 상태(414)로 이동시키는 취소 전이(422)의 수행을 나타내는 기능이 호출될 수 있다. 한편, 만일 공급자가 주문을 실행하면, 배송 전이(418)이 개시되어, 워크플로우 프로세스(404)를 주문 진행중 상태(408)로부터 배송된 주문 상태(410)로 이동시킨다. 일 실시예에서, 주문 실행 및 배송 양식이 제출되면, 워크플로우 엔진(146)에 지시하여 워크플로우(404)를 주문 진행중 상태(408)로부터 배송된 주문 상태(410)로 이동시키는 기능이 호출될 수 있다.
베이스 테이블의 레코드와 베이스 테이블의 데이터는 워크플로우 엔진(146)과 독립적이다. 일 실시예에서, 워크플로우 엔진(146)은 베이스 테이블에 어떤 데이터가 입력될 수 있는지에 대해 말하지 않는다. 이 경우에, 워크플로우 엔진(146)은 일차 키를 사용하여 베이스 테이블의 레코드들의 상태 정보를 독립적으로 안내하고 감시한다. 상태 정보는 워크플로우 엔진(146) 데이터 저장소 내에 분리하여 저장된다. 베이스 테이블 데이터로부터 워크플로우 데이터를 분리함으로써, 애플리케이션(206)과 데이터베이스(1451)는 워크플로우와 독립하여 투명하게 행동한다. 그러나 워크플로우의 완전한 기능성은 워크플로우 엔진(146)에 의해 제공된다.
워크플로우 엔진(146)은 현재 프로세스(408, 410, 412)의 상태들 중 임의의 상태에 있는 베이스 테이블의 레코드들에 대해 작동한다. 시작 상태(406)와 종료 상태(414)는 과도기 상태이고 베이스 테이블 레코드는 이 상태에서 "머무르지(rest)" 않을 수 있다. 베이스 테이블 레코드가 종료 상태(414)에 도달하면, 레코드는 워크플로우 큐로부터 제거되고, 워크플로우 엔진(146)은 레코드를 추적하는 것을 중지한다. 종료 상태에 도달하면, 주문은 완료되고(또는 취소되고) 이 주문에 대해서는 추가의 작업이 요구되지 않는다. 베이스 테이블은 완료된 주문에 대한 데이터를 계속해서 갖는다. 베이스 테이블 데이터는 애플리케이션(206)의 제어하에 잔류한다. 또 다른 실시예에서, 베이스 테이블의 일차 키와 상기 레코드가 있어야 하는 현재 상태를 사용하여 워크플로우 엔진(146)에 "복귀(reinstate)" 요청을 함으로써 완료된 주문을 워크플로우 내로 다시 가져오는 것도 가능하다.
베이스 테이블 레코드의 데이터가 애플리케이션(206), 또는 쿼리 툴(207), 또는 다른 데이터베이스 툴(209)들에 의해 갱신될 때, 일차 키 외의 레코드 데이터의 변경은 워크플로우 인스턴스에 영향을 주지 않을 것이다. 일 실시예에서, 워크플로우 엔진(206)은 상기 레코드가 워크플로우에서 활동적이라면(예컨대, 레코드의 현재 상태가 408, 410 또는 412에 있다면) 일차 키를 갱신하지 못하게 하는데, 이는 일차 키가 현재 상태를 추적하기 위해 워크플로우 엔진에서 사용되기 때문이다. 또 다른 실시예에서, 워크플로우 엔진(146)은 변경된 데이터베이스 일차 키와 매칭을 위해 워크플로우 인스턴스 키를 자동으로 조정하고, 그에 의해 일차 키에 대한 갱신을 허용한다. 사용된 접근법에 관계없이, 레코드는 제한 없이 갱신되고, 워크플로우 엔진(146)으로부터의 제한된 간섭을 받으면서 애플리케이션(206)에 대해 완전한 독립을 제공한다.
베이스 테이블 레코드가 애플리케이션(206), 쿼리 툴(207), 또는 다른 데이터 베이스 툴(209)들을 통해 삭제될 때, 워크플로우 엔진(146)은 레코드의 일차 키를 조사하고 또한 일차 키가 워크플로우에서 여전히 활동적이라면(예컨대, 레코드의 현재 상태가 408, 410, 또는 412라면) 워크플로우 큐로부터 일차 키를 삭제한다.
베이스 테이블 삽입은 워크플로우 인스턴스 및 트랜잭션을 개시한다. 그러나 베이스 테이블 레코드를 변경하지 않는 다수의 후속적인 워크플로우 트랜잭션들이 있을 수 있다. 워크플로우 트랜잭션들은 한 상태로부터 다른 상태로 변경이 있을 때 일어난다.
전술한 설명은 도 5에 요약되어 있다. 이제 도 5를 참조하면, 데이터베이스와 워크플로우 트랜잭션들 사이의 관계를 보여주는 2개의 테이블(502, 504)의 블록도가 도시되어 있다. 테이블(502)은 워크플로우 트랜잭션에 대한 데이터베이스의 영향을 보여준다. 테이블(504)은 데이터베이스에 대한 워크플로우 트랜잭션의 영향을 보여준다. 테이블(502)에서, 베이스 테이블에 대한 데이터베이스 트랜잭션은 워크플로우 트랜잭션을 개시한다. 예를 들어, 만일 데이터베이스 트랜잭션이 삽입 트랜잭션이라면, 그리고 베이스 테이블 조건이 만족되면 삽입 트랜잭션은 워크플로우 트랜잭션에서 수행된다. 만일 데이터베이스 트랜잭션이 베이스 테이블의 일차 키에 대한 갱신 트랜잭션이라면, 데이터베이스 트랜잭션은 실패할 수밖에 없다. 그러나 만일 갱신 트랜잭션이 일차 키에 대한 것이 아니라면, 워크플로우 트랜잭션에 대한 영향은 없을 것이다. 만일 데이터베이스 트랜잭션이 삭제 트랜잭션이라면, 대응하는 레코드의 일차 키 역시 워크플로우로부터 삭제된다.
그러나, 테이블(504)에 도시된 바와 같이, 워크플로우 트랜잭션(예컨대, 삽입, 갱신, 또는 삭제 트랜잭션)은 베이스 테이블에 대한 어떤 데이터베이스 트랜잭션도 생성하지 않는다. 이것은 데이터베이스-기반 애플리케이션 개발의 아키텍처에서 아무런 변경 없이 기존의 또는 새로운 비즈니스 애플리케이션 내에 워크플로우 엔진(146)의 간섭이 최소화되도록 한다.
또 다른 실시예에서, 통합 데이터베이스-워크플로우 트랜잭션은 데이터베이스-지연된(database-deferred) 워크플로우 트랜잭션으로서 구현될 수 있다. 데이터베이스 트랜잭션 관점에서, 한 행이 테이블에 삽입될 때, 데이터베이스 엔진은 보통 행 레벨 잠금을 설정하거나 테이블 레벨 잠금을 설정한다. 잠금 구현은 데이터베이스에 따라 변한다. 트리거들(워크플로우 엔진(146)에 의해 생성된)은 합리적인 성능을 유지하기 위해 아주 신속하게 실행될 수 있다. 트리거들은 수백 또는 수천의 주문들을 병렬로 입력하는 것을 허용하기에 충분히 빠를 수 있다. 본 발명의 다수의 실시예들은 내부 및 외부 시스템(148)들과의 통합을 허용한다. 이와 같은 통합은 데이터베이스 트랜잭션이 느려지거나 다른 시스템들로부터의 응답을 무한정 기다려야 할 가능성을 갖는다. 또한, 한 상태로부터 다른 상태로의 흐름은 한 루프의 여러 개의 상태들을 자동으로 순환하도록 설정될 수 있으며, 다수의 워크플로우 서브-프로세스들은 자동으로 생성될 수 있다. 그와 같은 긴 흐름들은 시스템을 봉쇄하여 전체 시스템을 느리게 할 수 있다. 다수의 데이터베이스 구현들은 내재된 레벨 트리거들에 대해 제약사항을 가질 수 있으며 여러 단계들의 내재된 긴 자동 흐름을 방지할 수 있다. 이 문제들은 일반적으로 우수한 워크플로우 프로세스 설계에 의해 극복될 수 있다. 테이블(502, 504)을 참조하면, 데이터베이스-워크플로우 통합 트랜잭션은 삽입 및 삭제 데이터베이스 트랜잭션에 관련이 있을 수 있다. 대부분의 데이터베이스 시스템들은 이 트랜잭션들을 위한 행 레벨 잠금을 제공하며 다른 사용자들(예컨대, 다른 주문 트랜잭션들)은 잠금되거나 느려질 것 같지 않다. 그러나 내재된 데이터베이스 트랜잭션 레벨에 대한 제한이 없어질 가능성이나 외부 시스템들을 수반하는 트랜잭션을 무한정 대기할 가능성 등이 존재한다. 그와 같은 문제들은 데이터베이스-지연된(database-deferred) 워크플로우 트랜잭션에 의해 극복될 수 있다.
데이터베이스-지연된 워크플로우 메커니즘을 구현하기 위해, 워크플로우 엔진(146)은 서비스 브로커 또는 서비스 지향 아키텍처(SOA)(도시되지 않음)를 사용할 수 있다. 서비스 브로커 또는 SOA 구현은 당해 기술분야에서 알려진 다수의 최신 데이터베이스들에서 가용하다. 이것은 과업을 독립시키고 비-잠금(non-locking) 방식으로 독립적으로 과업을 완료하는 능력을 제공한다. 워크플로우 엔진(146)이 데이터베이스 트랜잭션으로부터 제어를 수신할 때, 워크플로우 엔진(146)은 워크플로우 트랜잭션의 일부 또는 전부를 서비스 브로커에 위임하는 것을 선택적으로 선택할 수 있다. 서비스 브로커에 위임한 후, 워크플로우 엔진(146)은 워크플로우 트랜잭션이 대기중이거나 완료된 데이터베이스 엔진에 신호를 보낼 수 있고, 그 다음에 데이터베이스 엔진은 데이터베이스 트랜잭션이 완료될 수 있게 하고, 그에 의해 모든 데이터베이스 잠금을 해제한다. 그러나, 워크플로우 엔진(146)은 워크플로우 트랜잭션을 대기중으로 표시하고 베이스 테이블이 다른 상태로 이동되는 것을 방지한다. 서비스 브로커가 작업을 성공적으로 완료하고 워크플로우 엔진(146)에 통지할 때, 워크플로우 엔진(146)은 추가의 워크플로우 트랜잭션들을 위해 이 레코드에 대한 잠금을 해제한다. 만일 서비스 브로커가 작업을 완료하는데 실패하면(예컨대, 외부 시스템(148)들이 도달할 수 없음), 서비스 브로커는 기다렸다 재시도할 수 있다. 어떤 조건하에서는, (이 실패한 데이터베이스-워크플로우 트랜잭션에 관련된) 이전에 완료된 데이터베이스 트랜잭션은, 초기 데이터베이스 트랜잭션이 일어나지 않은 것과 같은 레벨까지, 프로그램적으로 수준이 낮아질 수 있다.
이제 도 6을 참조하면, 본 발명의 일 실시예에 있어서, 워크플로우를 위한 데이터베이스를 활성화시키고 워크플로우 프로세스를 생성하는 흐름도가 도시되어 있다. 동작들은 단계 602에서 시작하며, 이 단계에서 워크플로우와 함께 사용될 데이터베이스가 선택된다. 단계 604에서, 데이터베이스는 워크플로우를 위해 이미 활성화되었는지 여부를 판정하기 위해 확인된다. 만일 데이터베이스가 이미 활성화되어 있으면, 데이터베이스 내에 저장된 베이스 테이블이 단계 608의 프로세스를 위해 선택된다. 이것은 베이스 테이블에 대한 새로운 프로세스를 생성한다(예컨대, 도 4에 도시된 것과 같은 시작 상태(406)). 상기 프로세스는 그 다음에 단계 610에서 다수의 상태들, 전이들, 종료 상태들, 조건들, 이벤트들, 보안 등에 의해 향상된다. 만일 단계 604에서 데이터베이스가 워크플로우를 위해 활성화되지 않은 것으로 판정되면, 워크플로우 능력은 설치된 워크플로우 엔진(146)에 의해 활성화된다.
이제 도 7을 참조하면, 본 발명의 일 실시예에 있어서, 데이터베이스-워크플로우 통합 트랜잭션들에 대한 흐름도가 도시되어 있다. 도 7은 도 5의 테이블(502)에 도시된 트랜잭션들을 세부적으로 설명하는 흐름도이다. 상기 흐름도는 베이스 테이블에 대해 개시된 데이터베이스 트랜잭션을 가지고 가능한 데이터베이스-워크플로우 통합 트랜잭션을 도시한다. 흐름도는 삽입, 갱신 및/또는 삭제 데이터베이스 트랜잭션을 위해 워크플로우 엔진(146)에 의해 조사되는 단계 702에서와 같이 데이터베이스 트랜잭션으로 시작한다. 단계 704에서, 데이터베이스 트랜잭션이 레코드 삽입 트랜잭션이라고 판정한 후, 데이터베이스 트랜잭션이 워크플로우 인스턴스를 생성하기 위한 조건을 충족시키는지 판정된다. 만일 조건을 충족하면, 워크플로우 인스턴스가 단계 708에서 생성되고 단계 710에서 워크플로우 엔진(146)에 의해 상기 레코드 삽입 데이터베이스 트랜잭션을 진행하도록 신호전송된다. 만일 조건을 충족하지 않으면, 워크플로우 인스턴스가 단계 706에서 생성되지 않고, 단계 710에서 워크플로우 엔진(146)에 의해 데이터베이스 삽입 트랜잭션을 진행하도록 신호전송된다.
단계 712에서, 데이터베이스 트랜잭션이 레코드 갱신 트랜잭션으로 판정된 후, 데이터베이스 트랜잭션은 상기 갱신이 레코드의 일차 키를 포함하는지 판정하기 위해 확인된다. 만일 일차 키가 갱신되는 경우라면, 레코드가 워크플로우 인스턴스를 갖고 있는지 판정하기 위해 단계 714에서 추가로 확인된다. 만일 워크플로우 인스턴스가 일차 키에 존재하면, 워크플로우 엔진(146)은 데이터베이스 엔진에 신호를 보내 단계 716의 트랜잭션을 중지시킨다. 워크플로우 엔진(146)이 일차 키를 가지고 워크플로우 인스턴스를 추적하기 때문에, 일차 키는 갱신될 수 없다. 또 다른 실시예에서, 워크플로우 엔진(146)은 변경된 데이터베이스 일차 키와 매칭을 위해 워크플로우 인스턴스 키를 자동으로 조정한다(흐름도에 도시되지 않음). 만일 일차 키 필드들이 갱신되지 않거나, 상기 레코드가 워크플로우에 없으면, 워크플로우 엔진(146)은 데이터베이스에 신호를 보내 단계 718에서 데이터베이스 트랜잭션을 허용하고 완료할 수 있도록 한다.
이제 도 8을 참조하면, 본 발명의 일 실시예에 있어서, 워크플로우 트랜잭션을 위한 흐름도가 도시되어 있다. 도 8은 도 5의 테이블(504)에 도시된 트랜잭션들을 세부적으로 도시하는 흐름도이다. 이 흐름도는 베이스 테이블에 대한 데이터베이스 트랜잭션에 의해 개시되지 않는 가능한 워크플로우 트랜잭션을 도시한다. 단계 802에서, 워크플로우 인스턴스(804)는 현재 워크플로우에 없는 베이스 테이블에 존재하는 레코드를 사용하여 생성될 수 있다. 이것은 작업 레코드(예컨대, 주문)가 워크플로우를 재수행하기 위해 복귀될 때 가능하다. 예를 들어, 올바르지 않게 실행된 고객 주문은 재실행을 위해 워크플로우에 복귀될 수 있다. 단계 806에서, 삽입 트랜잭션 동안에, 워크플로우 엔진(146)은 사용자에 의해 정의된 것과 같은 복귀된 상태로 흐른다.
단계 808에서, 갱신 트랜잭션 동안에, 워크플로우 인스턴스는 갱신된다. 워크플로우 인스턴스를 갱신할 때, 한 상태는 사용자 또는 머신(machine)이 전이를 수행할 때 다른 상태로 이동된다. 단계 810에서, 워크플로우 엔진(146)은 전이를 확인하고 다음 상태가 종료 상태인지 판정한다. 만일 다음 상태가 종료 상태인 것으로 판정되면, 워크플로우 인스턴스는 단계 812에서 삭제된다. 워크플로우 인스턴스의 삭제는 데이터베이스 베이스 테이블 레코드에 영향을 주지 않는다. 데이터는 베이스 테이블에 유지된다. 상기 레코드에 대한 워크플로우 인스턴스가 없다면, 대기중인 작업이 있다는 신호를 보낸다. 만일 다음 상태가 종료 상태가 아니라면, 워크플로우 인스턴스의 현재 상태는 단계 814에서 다음 상태로 갱신된다.
단계 816에서, 삭제 전이 동안에, 워크플로우 인스턴스는 삭제된다. 워크플로우 인스턴스를 삭제할 때, 베이스 테이블로부터의 레코드가 제거된다.
이제 도 9를 참조하면, 본 발명의 일 실시예에 있어서, 워크플로우 트랜잭션 내 한 이벤트를 위한 흐름도가 도시되어 있다. 워크플로우 엔진(146)에서, 주문이 주문 진행중 상태(408)로부터 "배송(Shipped)(418)" 전이를 사용하여 "배송된 주문(410)"으로 진행할 때, 복수의 워크플로우 이벤트들이 실행될 수 있다. 배송 전이(418)는 사용자 또는 시스템에 의해 개시될 수 있다. 샘플 이벤트(922, 924, 926)에서, 이벤트들은 임의의 내부 또는 외부 시스템(148)에서 코드를 실행하기 위해 임의의 프로그램 언어로 작성된 프로그래밍 코드를 나타낸다. 이러한 흐름에서, 종료 시(On Exit) 타입 이벤트(922)가 존재하고 주문 진행중 상태(408)를 종료할 때 실행될 수 있다. 수행 시(On Perform) 타입 이벤트(924)가 존재하고 배송 전이(418)가 수행될 때 실행될 수 있다. "진입 시(On Enter) 타입 이벤트(926)가 존재하고 배송된 주문 상태(410)로 진입할 때 실행될 수 있다. 예를 들면, 이벤트(926)는 주문의 수신자에게 배송 통지를 보내기 위해 동기 방식으로 이메일 서버(940)에 통신한다(928). 성공적인 전이를 수행할 때, 워크플로우 인스턴스는 한 상태를 떠나서 다른 상태로 진입한다: 따라서, 이 실시예에서 3개 이벤트 모두는 922, 924, 926의 순서로 실행될 수 있다. 워크플로우 이동에 있어서 구성될 수 있는 이벤트들의 타입은 여러 가지가 있을 수 있다. 더 많은 세분화 및 환경에는 많은 이벤트 타입들이 제공된다.
이제 도 10을 참조하면, 본 발명의 일 실시예에 있어서, 워크플로우 트랜잭션 내 이벤트들과 함께 서비스 브로커의 사용을 위한 흐름도가 도시되어 있다. 이 흐름은 서비스 브로커(1030)가 워크플로우 엔진(146)과 이메일 서버(940) 사이에 중개자로서 사용되는 점 외에는 도 9와 동일하다. 이벤트(1026)는 위임 메시지가 이메일 서버(940)에 의해 실제로 승인되는지 기다리지 않고 이메일을 송신하기 위해 상기 위임 메시지를 가지고 데이터베이스(145)에 위치하는 서비스 브로커(1030)에 통신하는(1028) 점에서 '926'과 상이하다. 서비스 브로커(1030)는 이메일 서버(940)와 통신하고, 이메일 서버(940)로부터 응답을 얻고 다시 워크플로우 엔진(146)에 통신한다(1034). 이 방법의 이점은 만일 이메일 서버가 일시적으로 고장난 경우 데이터베이스-워크플로우 트랜잭션의 데이터베이스 트랜잭션 컴포넌트가 기다릴 필요가 없다는 것이다. 워크플로우 트랜잭션은 서비스 브로커가 작업을 완료할 때까지 기다려야 할 수 있다. 이것은 워크플로우 이벤트들을 사용하여 시스템의 어떤 전체적인 감속(slowdown) 또는 봉쇄(lock down)을 제거한다.
전술한 실시예들은 당업자에게 명백한 것과 같이 상기 상세히 설명된 애플리케이션들을 위해서만이 아니라 넓은 범위의 응용성을 가질 수 있음이 고려될 수 있다는 것을 알아야 한다.
전술한 특정 실시예들은 단지 설명을 위한 것이며, 본 발명은 당업자에게 명백한 상이하지만 균등한 방식으로 수정되고 실시될 수 있다. 또한, 청구범위에 기재된 것 외의 다른 제한이 여기서 설명된 구성 또는 설계의 상세에 대해 의도되지 않는다. 그러므로 전술한 특정 실시예들은 변경 또는 수정될 수 있고 모든 그와 같은 변경은 본 발명의 범위 및 사상에 포함되는 것임은 명백하다.
따라서, 본 발명의 보호 범위는 아래의 특허청구범위에 제시된다.

Claims (23)

  1. 컴퓨터로 구현되는 방법으로서,
    워크플로우 엔진을 포함하는 데이터베이스에 저장된 데이터 구조체를 하나 이상의 워크플로우 프로세스에 할당하는 단계; 및
    새로운 레코드로 데이터 구조체를 파퓰레이팅하는 통합 데이터베이스-워크플로우 트랜잭션의 일부로서 상기 워크플로우 엔진을 통해 하나 이상의 워크플로우 프로세스 중 적어도 하나의 인스턴스를 생성하는 과정 및 통합 데이터베이스-워크플로우 레코드 삭제 트랜잭션의 일부로서 하나 이상의 워크플로우 프로세스 중 적어도 하나의 인스턴스를 제거하는 과정 중 적어도 하나의 과정을 실행하는 단계를 포함하고,
    새로운 레코드로 데이터 구조체를 파퓰레이팅하는 것의 일부로서, 상기 워크플로우 엔진은 하나 이상의 테이블 레벨 트리거를 통해 데이터베이스 트랜잭션을 제어하고, 워크플로우 스텝을 실행하고, 상기 데이터베이스 트랜잭션을 위한 데이터베이스가 종료되거나 실패되도록 시그널링하고,
    상기 레코드 삭제 트랜잭션의 일부로서 상기 워크플로우 엔진은 상기 테이블 레벨 트리거를 거쳐 상기 데이터베이스 트랜잭션을 제어하고, 워크플로우 스텝을 실행하고, 상기 데이터베이스 트랜잭션이 종료되거나 실패되도록 시그널링하는, 방법.
  2. 제 1 항에 있어서,
    상기 하나 이상의 워크플로우 프로세스에 애플리케이션을 할당하는 단계를 추가로 포함하고,
    상기 애플리케이션은 상기 데이터 구조체에서 조작(operations)을 수행하는, 방법.
  3. 제 1 항에 있어서,
    상기 데이터 구조체는 복수의 행(rows)을 포함하는 베이스 테이블이고,
    각각의 행은 하나 이상의 워크플로우 프로세스의 인스턴스를 나타내는, 방법.
  4. 삭제
  5. 제 3 항에 있어서,
    워크플로우 트랜잭션은 상기 데이터 구조체에 레코드를 삽입, 갱신 또는 삭제할 때 상기 하나 이상의 트리거의 활성화 시에 완료되는, 방법.
  6. 프로세서에서 실행될 때, 컴퓨터가 조작을 실행하도록 하는 프로그램을 기록한 컴퓨터로 판독 가능한 비일시적 기록매체에 있어서, 상기 조작은,
    워크플로우 엔진을 포함하는 데이터베이스에 저장된 데이터 구조체를 하나 이상의 워크플로우 프로세스에 할당하는 조작; 및
    새로운 레코드로 데이터 구조체를 파퓰레이팅하는 통합 데이터베이스-워크플로우 트랜잭션의 일부로서 상기 워크플로우 엔진을 통해 하나 이상의 워크플로우 프로세스 중 적어도 하나의 인스턴스를 생성하는 작업 및 통합 데이터베이스-워크플로우 레코드 삭제 트랜잭션의 일부로서 하나 이상의 워크플로우 프로세스의 인스턴스를 제거하는 작업 중 적어도 하나의 작업을 실행하는 조작을 포함하고,
    상기 워크플로우 엔진은 테이블 레벨 트리거를 통해 데이터베이스 트랜잭션을 제어하고, 워크플로우 스텝을 실행하고, 상기 데이터베이스 트랜잭션을 위한 데이터베이스가 종료되거나 실패되도록 시그널링하고,
    상기 레코드 삭제 트랜잭션의 일부로서 상기 워크플로우 엔진은 상기 테이블 레벨 트리거를 거쳐 상기 데이터베이스 트랜잭션을 제어하고, 워크플로우 스텝을 실행하고, 상기 데이터베이스 트랜잭션이 종료되거나 실패되도록 시그널링하는, 프로그램을 기록한 컴퓨터로 판독 가능한 비일시적 기록매체.
  7. 제 6 항에 있어서,
    상기 조작은
    상기 하나 이상의 워크플로우 프로세스에 애플리케이션을 할당하는 조작을 추가로 포함하고,
    상기 애플리케이션은 상기 데이터 구조체에서 조작을 수행하는, 컴퓨터로 판독 가능한 비일시적 기록매체.
  8. 제 6 항에 있어서,
    상기 데이터 구조체는 복수의 행(rows)을 포함하는 베이스 테이블이고,
    각각의 행은 하나 이상의 워크플로우 프로세스 중 전부 또는 일부의 워크플로우 프로세스의 인스턴스를 나타내는, 컴퓨터로 판독 가능한 비일시적 기록매체.
  9. 삭제
  10. 제 8 항에 있어서,
    워크플로우 트랜잭션은 상기 데이터 구조체에 레코드를 삽입, 갱신, 또는 삭제할 때 상기 하나 이상의 트리거의 활성화 시에 완료되는, 컴퓨터로 판독 가능한 비일시적 기록매체.
  11. 프로세서, 및
    데이터베이스를 저장하는 메모리를 포함하고,
    상기 데이터베이스는 워크플로우 엔진을 구비하고,
    상기 메모리는 프로그램을 구비하고,
    상기 프로그램은, 상기 프로세서에 의해 실행될 때,
    데이터베이스에 저장된 데이터 구조체를 하나 이상의 워크플로우 프로세스에 할당하는 조작; 및
    새로운 레코드로 데이터 구조체를 파퓰레이팅하는 통합 데이터베이스-워크플로우 트랜잭션의 일부로서 상기 하나 이상의 워크플로우 프로세스의 인스턴스를 생성하는 작업 및 통합 데이터베이스-워크플로우 레코드 삭제 트랜잭션의 일부로서 하나 이상의 워크플로우 프로세스의 인스턴스를 제거하는 작업 중 적어도 하나의 작업을 실행하는 조작을 포함하고,
    새로운 레코드로 데이터 구조체를 파퓰레이팅하는 것의 일부로서, 상기 워크플로우 엔진은 테이블 레벨 트리거를 통해 데이터베이스 트랜잭션을 제어하고, 워크플로우 스텝을 실행하고, 상기 데이터베이스 트랜잭션을 위한 데이터베이스가 종료되거나 실패되도록 시그널링하고,
    통합 데이터베이스-워크플로우 레코드 삭제 트랜잭션의 일부로서, 상기 워크플로우 엔진은 상기 테이블 레벨 트리거를 거쳐 상기 데이터베이스 트랜잭션을 제어하고, 워크플로우 스텝을 실행하고, 상기 데이터베이스 트랜잭션이 종료되거나 실패되도록 시그널링하는, 시스템.
  12. 제 11 항에 있어서,
    상기 프로그램은
    상기 하나 이상의 워크플로우 프로세스에 애플리케이션을 할당하는 조작을 추가로 수행시키고,
    상기 애플리케이션은 상기 데이터 구조체에서 조작을 수행하는, 시스템.
  13. 제 11 항에 있어서,
    상기 데이터 구조체는 복수의 행(rows)을 구비하는 베이스 테이블이고,
    각각의 행은 하나 이상의 워크플로우 프로세스의 전부 또는 일부의 워크플로우 프로세스의 인스턴스를 나타내는, 시스템.
  14. 삭제
  15. 삭제
  16. 제 13 항에 있어서,
    워크플로우 트랜잭션은 상기 데이터 구조체에 레코드를 삽입, 갱신 또는 삭제할 때 상기 하나 이상의 트리거의 활성화 시에 완료되는, 시스템.
  17. 제 11 항에 있어서,
    하나 이상의 데이터베이스 프런트-엔드(front-end) 애플리케이션 툴은 상기 워크플로우 엔진의 존재의 인식 없이 작동하는, 시스템.
  18. 제 11 항에 있어서,
    애플리케이션과 데이터베이스 프런트-엔드 애플리케이션 툴 중 적어도 하나는 워크플로우 엔진 응용 프로그램 인터페이스(API: Application Programmatic Interface)를 사용하여 상기 워크플로우 엔진의 인식을 가지고 동작하는, 시스템.
  19. 제 11 항에 있어서,
    상기 워크플로우 엔진은 하나 이상의 이벤트 타입을 생성하고,
    상기 하나 이상의 이벤트 타입 각각은 워크플로우 동작(movement) 타입을 나타내고,
    상기 워크플로우 동작 타입 각각은 하나 이상의 워크플로우 엘리먼트와 관련 있고,
    상기 하나 이상의 워크플로우 엘리먼트 각각은 하나 이상의 데이터베이스와 관련된 프로그램 코드를 실행하고, 그에 의해 통합된 워크플로우 및 데이터베이스 트랜잭션을 제공하는, 시스템.
  20. 제 19 항에 있어서,
    상기 메모리는 통합 데이터베이스-지연된(database-deferred) 워크플로우 트랜잭션의 실행 및 촉진 중 적어도 하나를 실시하는 서비스 지향 아키텍처(SOA: Service Oriented Architecture)와 서비스 브로커(Service Broker) 중 적어도 하나를 추가로 포함하는, 시스템.
  21. 제 1 항에 있어서,
    상기 워크플로우 프로세스는 상기 데이터구조체 내의 테이터에 대한 변경으로 제어되는, 방법.
  22. 제 1 항에 있어서,
    상기 데이터 구조체 내의 레코드에 대한 임의의 변경은 상기 워크플로우 엔진에 의해 자동으로 측정되고 제어되는, 방법.
  23. 삭제
KR1020127033802A 2010-06-04 2011-05-31 통합된 워크플로우와 데이터베이스 트랜잭션 KR101907701B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US35183910P 2010-06-04 2010-06-04
US61/351,839 2010-06-04
US13/115,090 US10078674B2 (en) 2010-06-04 2011-05-24 Integrated workflow and database transactions
US13/115,090 2011-05-24
PCT/US2011/038531 WO2011153130A2 (en) 2010-06-04 2011-05-31 Integrated workflow and database transactions

Publications (2)

Publication Number Publication Date
KR20130116165A KR20130116165A (ko) 2013-10-23
KR101907701B1 true KR101907701B1 (ko) 2018-12-07

Family

ID=45065269

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127033802A KR101907701B1 (ko) 2010-06-04 2011-05-31 통합된 워크플로우와 데이터베이스 트랜잭션

Country Status (11)

Country Link
US (2) US10078674B2 (ko)
EP (1) EP2577525A4 (ko)
JP (1) JP2013530464A (ko)
KR (1) KR101907701B1 (ko)
CN (2) CN110222106A (ko)
AU (2) AU2011261618A1 (ko)
CA (1) CA2800821C (ko)
MX (1) MX2012014165A (ko)
RU (1) RU2012157753A (ko)
WO (1) WO2011153130A2 (ko)
ZA (1) ZA201208817B (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10074114B2 (en) 2010-12-13 2018-09-11 Oracle International Corporation Order management system with order change management
US20140280300A1 (en) * 2013-03-15 2014-09-18 Aktiebolaget Skf Guided data collection management system
CN103156645B (zh) * 2013-03-18 2015-04-01 飞依诺科技(苏州)有限公司 超声诊断设备的工作流自定制方法及装置
US9088562B2 (en) * 2013-09-09 2015-07-21 International Business Machines Corporation Using service request ticket for multi-factor authentication
WO2015047015A1 (ko) 2013-09-30 2015-04-02 주식회사 휴이노 혈압을 실시간으로 모니터링하기 위한 시스템
CN103577973B (zh) * 2013-11-01 2019-07-16 金蝶软件(中国)有限公司 工作流任务的处理方法及装置
CN103617066B (zh) * 2013-12-16 2016-08-24 中国农业银行股份有限公司 一种工作流引擎及其实现方法
US11580472B2 (en) * 2015-05-14 2023-02-14 Palantir Technologies Inc. Systems and methods for state machine management
US10387944B2 (en) 2015-10-07 2019-08-20 Oracle International Corporation Management of revisions on revisions of orders
CN105447680A (zh) * 2015-11-20 2016-03-30 上海携程商务有限公司 基于工作流的订单处理方法及系统
KR101996151B1 (ko) * 2017-12-13 2019-07-03 충북대학교 산학협력단 워크플로우 시스템에서의 테이블 네이밍 장치 및 방법
CN108389018B (zh) * 2018-03-02 2021-09-03 侨益物流股份有限公司 一种智能化大宗商品物流管理系统
CN108629534A (zh) * 2018-04-09 2018-10-09 侨益物流股份有限公司 一种基于bpm自动化技术的大宗商品物流管理系统
WO2020117681A1 (en) 2018-12-03 2020-06-11 Salesforce.Com, Inc. Automated operations management for computer systems
US20200211090A1 (en) * 2018-12-28 2020-07-02 Evolutive Labs Co., Ltd. Computer-implemented method, computing device and apparatus for executing workflow of processing orders
US10868751B2 (en) * 2019-01-31 2020-12-15 Saudi Arabian Oil Company Configurable system for resolving requests received from multiple client devices in a network system
CN110968408B (zh) * 2019-11-13 2023-04-07 泰康保险集团股份有限公司 一种执行流移除方法、装置、电子设备及存储介质
US11714689B2 (en) * 2020-08-18 2023-08-01 Plaid Inc. System and method for managing user interaction flows within third party applications
US11080636B1 (en) 2020-11-18 2021-08-03 Coupang Corp. Systems and method for workflow editing
KR102569415B1 (ko) * 2020-12-14 2023-08-22 주식회사 파워테스크 워크플로우 생성을 위한 서비스 플랫폼 시스템 및 워크플로우 생성 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009532791A (ja) * 2006-04-07 2009-09-10 インターナショナル・ビジネス・マシーンズ・コーポレーション 顧客が設定可能なワークフローシステム

Family Cites Families (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69719269T2 (de) * 1996-08-01 2003-10-30 Ibm Absicherung der Unteilbarkeit für eine Ansammlung von transaktionellen Arbeitsschritten in einem Arbeitsflussverwaltungssystem
US6078982A (en) * 1998-03-24 2000-06-20 Hewlett-Packard Company Pre-locking scheme for allowing consistent and concurrent workflow process execution in a workflow management system
JP2003528358A (ja) * 1998-08-24 2003-09-24 富士通株式会社 ワークフローシステムおよび方法
JP2000172770A (ja) 1998-12-07 2000-06-23 Hitachi Ltd システム間連携装置および方法
US20010046209A1 (en) * 1998-12-31 2001-11-29 David N. Glassman Database workflow for multimedia networking and voip
US7055098B2 (en) * 1999-02-19 2006-05-30 Lucent Technologies Inc. Dynamic display of data item evaluation
WO2001003037A2 (en) 1999-07-01 2001-01-11 Microsoft Corporation Workflow method and system
JP2001216143A (ja) * 2000-02-02 2001-08-10 Hitachi Ltd アプリケーション統合のための連携方法
WO2001061948A1 (en) * 2000-02-16 2001-08-23 Synhrgy Hr Technologies, Inc. Improved database access system
US7503033B2 (en) * 2000-04-28 2009-03-10 Microsoft Corporation Model for business workflow processes
US6918053B1 (en) * 2000-04-28 2005-07-12 Microsoft Corporation Compensation framework for long running transactions
US6625602B1 (en) * 2000-04-28 2003-09-23 Microsoft Corporation Method and system for hierarchical transactions and compensation
KR20010110097A (ko) 2000-06-03 2001-12-12 포만 제프리 엘 작업흐름-관리-시스템에서의 보관 방법
US20020062241A1 (en) * 2000-07-19 2002-05-23 Janet Rubio Apparatus and method for coding electronic direct marketing lists to common searchable format
US20020161840A1 (en) * 2001-02-20 2002-10-31 Willcox William J. Adapter for interfacing with a workflow engine
US6847974B2 (en) 2001-03-26 2005-01-25 Us Search.Com Inc Method and apparatus for intelligent data assimilation
US7065566B2 (en) 2001-03-30 2006-06-20 Tonic Software, Inc. System and method for business systems transactions and infrastructure management
US8412746B2 (en) 2001-05-25 2013-04-02 International Business Machines Corporation Method and system for federated querying of data sources
US7043714B2 (en) * 2001-06-28 2006-05-09 International Business Machines Corporation Method, system, and program for using objects in data stores during execution of a workflow
US7069536B2 (en) * 2001-06-28 2006-06-27 International Business Machines Corporation Method, system, and program for executing a workflow
US7100147B2 (en) * 2001-06-28 2006-08-29 International Business Machines Corporation Method, system, and program for generating a workflow
US7047535B2 (en) * 2001-07-30 2006-05-16 International Business Machines Corporation Method, system, and program for performing workflow related operations using an application programming interface
KR100414406B1 (ko) * 2001-08-09 2004-01-14 주식회사 핸디소프트 문서 버전 관리가 가능한 워크플로우 시스템 및 이를이용한 문서 버전 관리 방법
US7447644B2 (en) * 2001-09-12 2008-11-04 Siemens Medical Solutions Usa, Inc. System and user interface for processing healthcare related event information
US8914807B2 (en) * 2001-09-28 2014-12-16 International Business Machines Corporation Method, system, and program for generating a program capable of invoking a flow of operations
US20030074342A1 (en) * 2001-10-11 2003-04-17 Curtis Donald S. Customer information management infrastructure and methods
US7403878B2 (en) * 2001-10-18 2008-07-22 International Business Machines Corporation Using nodes for representing hyper-edges in process models
US7155720B2 (en) * 2001-10-26 2006-12-26 Hewlett-Packard Development Company, L.P. Dynamic task assignment in workflows
WO2003044718A2 (en) * 2001-11-19 2003-05-30 Delphion, Inc. Integrated intellectual asset management system and method
US20030177046A1 (en) * 2001-12-03 2003-09-18 John Socha-Leialoha Method and system for reusing components
US7519976B2 (en) * 2002-05-01 2009-04-14 Bea Systems, Inc. Collaborative business plug-in framework
US7533008B2 (en) 2002-08-19 2009-05-12 General Electric Capital Corporation System and method for simulating a discrete event process using business system data
AU2003290678B2 (en) * 2002-11-08 2009-12-24 Arbitration Forums, Inc. A system and process for electronic subrogation, inter-organization workflow management, inter-organization transaction processing and optimized web-baser user interaction
US7213037B2 (en) * 2003-01-13 2007-05-01 I2 Technologies Us, Inc. Master data management system for centrally managing cached data representing core enterprise reference data maintained as locked in true state read only access until completion of manipulation process
US20040216084A1 (en) * 2003-01-17 2004-10-28 Brown Albert C. System and method of managing web content
US7584474B2 (en) * 2003-02-25 2009-09-01 Bea Systems, Inc. Systems and methods for transaction chaining
US8700753B2 (en) 2003-03-28 2014-04-15 Denis L. Bagsby Distributed computer system for telecommunications operational support
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
US8265979B2 (en) * 2003-06-17 2012-09-11 International Business Machines Corporation Automatic generation of process models
US8782020B2 (en) * 2003-11-18 2014-07-15 Oracle International Corporation Method of and system for committing a transaction to database
US7213022B2 (en) 2004-04-29 2007-05-01 Filenet Corporation Enterprise content management network-attached system
US7472341B2 (en) * 2004-11-08 2008-12-30 International Business Machines Corporation Multi-user, multi-timed collaborative annotation
US7665093B2 (en) * 2004-12-22 2010-02-16 Microsoft Corporation Synchronization of runtime and application state via batching of workflow transactions
US7603363B2 (en) * 2005-01-05 2009-10-13 Microsoft Corporation Systems and methods for controlling transaction participation for groups of steps in a workflow
US20060206538A1 (en) * 2005-03-09 2006-09-14 Veazey Judson E System for performing log writes in a database management system
US7949551B2 (en) * 2005-04-06 2011-05-24 International Business Machines Corporation Processing of compensation scopes in workflow management systems
US20070150480A1 (en) * 2005-04-11 2007-06-28 Hans Hwang Service delivery platform
US20070156487A1 (en) * 2005-12-29 2007-07-05 Microsoft Corporation Object model on workflow
JP4839088B2 (ja) 2006-01-11 2011-12-14 株式会社リコー ワークフロー管理システム
CN101055639A (zh) 2006-04-14 2007-10-17 武汉群胜科技有限公司 银行信贷业务处理系统
US20080263051A1 (en) 2007-04-20 2008-10-23 Transport Labor Contract/Leasing Inc. System for management of a professional employment organization using best suited heterogeneous systems
CN101295375A (zh) 2007-04-29 2008-10-29 国际商业机器公司 工作流实现方法和系统
US7747899B2 (en) * 2007-06-26 2010-06-29 Microsoft Corporation Providing mapping fault processing
US8825713B2 (en) 2007-09-12 2014-09-02 Red Hat, Inc. BPM system portable across databases
US20090089078A1 (en) * 2007-09-28 2009-04-02 Great-Circle Technologies, Inc. Bundling of automated work flow
US10002161B2 (en) * 2008-12-03 2018-06-19 Sap Se Multithreading and concurrency control for a rule-based transaction engine
CN101714231A (zh) * 2009-11-20 2010-05-26 广东金宇恒科技有限公司 一种不基于过程模型的自由工作流管理方法及系统
US8935570B2 (en) * 2012-07-18 2015-01-13 Sungard Availability Services, Lp Automating infrastructure workflows as atomic transactions

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009532791A (ja) * 2006-04-07 2009-09-10 インターナショナル・ビジネス・マシーンズ・コーポレーション 顧客が設定可能なワークフローシステム

Also Published As

Publication number Publication date
US10078674B2 (en) 2018-09-18
KR20130116165A (ko) 2013-10-23
AU2011261618A1 (en) 2013-01-10
RU2012157753A (ru) 2014-07-20
JP2013530464A (ja) 2013-07-25
CN102934111A (zh) 2013-02-13
WO2011153130A3 (en) 2012-03-08
CA2800821C (en) 2020-07-28
MX2012014165A (es) 2013-09-26
US20180357244A1 (en) 2018-12-13
CA2800821A1 (en) 2011-12-08
US20110302132A1 (en) 2011-12-08
AU2016203499A1 (en) 2016-06-23
ZA201208817B (en) 2014-01-29
CN110222106A (zh) 2019-09-10
US10565223B2 (en) 2020-02-18
EP2577525A2 (en) 2013-04-10
EP2577525A4 (en) 2016-12-28
WO2011153130A2 (en) 2011-12-08
AU2016203499B2 (en) 2018-05-31

Similar Documents

Publication Publication Date Title
KR101907701B1 (ko) 통합된 워크플로우와 데이터베이스 트랜잭션
US6920456B2 (en) Method, system, and program for maintaining information in database tables and performing operations on data in the database tables
US7069536B2 (en) Method, system, and program for executing a workflow
US9946989B2 (en) Management and notification of object model changes
US8578278B2 (en) Dynamic user interface content adaptation and aggregation
US8954927B2 (en) Management of objects within a meta-data repository
JP4571636B2 (ja) サービス指向ビジネスフレームワークのサービス管理
US20070288891A1 (en) Meta-data driven implementation of business objects and their transactional behavior
US20140019934A1 (en) Generation framework for mapping of object models in a development environment
US20160217423A1 (en) Systems and methods for automatically generating application software
JP2009532791A (ja) 顧客が設定可能なワークフローシステム
US9513874B2 (en) Enterprise computing platform with support for editing documents via logical views
JP2006528800A (ja) 自己記述型ビジネスオブジェクト
US11468229B2 (en) Describing changes in a workflow based on changes in structured documents containing workflow metadata
US20160092818A1 (en) Method and system for implementing an adaptive data governance system
JP2006507550A (ja) エンティティをアスペクトパターン中の一般機能で接続する方法およびコンピュータシステム
US20060064671A1 (en) Creating and using a building block
US9766909B2 (en) Sequencing of business object logic extensions to ensure data consistency across layers
US20230237032A1 (en) On-demand ingestion of records from a staging storage into a primary database
US20240086409A1 (en) Techniques for pre-assignment validation of data managed by a data processing system
Pánek OpenSource software for business process implementation
Claesson et al. Development of support web applications in. NET For Visit Technology Group

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right