54
장진영, uEngine Administrator uEngine 오픈소스 프로젝트 2004-12-06 uEngine 사용자 가이드 ver 1.1 Copyleft© 2003-2004 Jinyoung Jang | 1

uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

장진영, uEngine Administrator

uEngine 오픈소스 프로젝트 2004-12-06

uEngine 사용자 가이드

ver 1.1

Copyleft© 2003-2004 Jinyoung Jang | 1

Page 2: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

소개 ...................................................................................................................................... 5

워크플로......................................................................................................................... 5

워크플로 = ‘큰 프로그래밍’...................................................................................... 5

워크플로의 구성요소................................................................................................ 7

워크플로는 일반 개발툴과 무엇이 다른가?................................................................ 8

워크플로 우산.......................................................................................................... 9

웹서비스......................................................................................................................... 9

웹서비스란 “컴퓨터가 읽고 사용할 수 있는 웹사이트”............................................ 10

웹서비스의 특징.................................................................................................... 11

웹서비스 비즈니스 전략과 유형.............................................................................. 11

웹서비스 성공의 관건과 워크플로........................................................................... 12

UEngine.............................................................................................................................. 13

워크플로의 미결 문제들................................................................................................ 13

UEngine의 설계원칙..................................................................................................... 13

컴포넌트 기반 적응형/성장형 엔진......................................................................... 14

웹서비스를 기반.................................................................................................... 14

UEngine의 개발전략..................................................................................................... 15

Bottom-Up 방식................................................................................................... 15

누군가 한번 고민하여 개발했으면 다시 반복하지 않는다......................................... 15

최소한의 기술적 이해를 요구한다 - 오픈아키텍쳐기반........................................... 15

오픈소스 전략........................................................................................................ 15

uEngine의 구성요소............................................................................................................. 16

uEngine 아키텍쳐......................................................................................................... 16

uEngine 엔진................................................................................................................ 17

uEngine 프로세스 디자이너.......................................................................................... 18

uEngine 관리자 툴........................................................................................................ 18

uEngine Enterprise Information Portal – Liferay*...................................................... 18

uEngine 업무처리기...................................................................................................... 19

uEngine 데이터베이스 어플리케이션 생성기 – metaWorks*.......................................... 19

uEngine Admin Script Console.................................................................................... 19

uEngine 기초사용법............................................................................................................. 20

설정.............................................................................................................................. 20

프로세스 디자이너 실행................................................................................................ 20

액티비티 추가하기........................................................................................................ 22

액티비티 설정하기........................................................................................................ 22

흐름 정의하기............................................................................................................... 23

Copyleft© 2003-2004 Jinyoung Jang | 2

Page 3: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

역할(Role) 선언하기..................................................................................................... 24

프로세스 변수 선언하기................................................................................................ 24

프로세스를 저장, 불러오기............................................................................................ 25

엔진으로 디플로이 하기................................................................................................ 25

프로세스 관리 (uEngine Admin Portal 접속)................................................................. 26

프로세스의 실행............................................................................................................ 26

프로세스의 모니터링..................................................................................................... 27

업무의 처리.................................................................................................................. 28

내부 프로세스 구축을 위한 uEngine..................................................................................... 28

엑셀파일을 이용한 작업 (ExcelActivity)....................................................................... 29

승인 될때까지 반복 (LoopActivity)............................................................................... 30

MSN 메신저로 작업알림 (MessengerActivity)............................................................. 32

Email로 결과 통보 (EmailActivity)............................................................................... 33

데이터베이스에 반영하기 (SQLActivity)....................................................................... 33

기업간 프로세스 구축을 위한 uEngine.................................................................................. 34

예제 프로세스: 웹서비스 기반 공급망 관리.................................................................... 34

웹서비스 액티비티들 (DiscoveryActivity, WebServiceActivity, ReceiveActivity).......35

DiscoveryActivity................................................................................................ 35

Web ServiceActivity............................................................................................ 35

ReceiveActivity.................................................................................................... 36

실행중 역할 바인딩 (RoleAssignActivity)..................................................................... 37

사용자 참여.................................................................................................................. 38

기업 어플리케이션 통합을 위한 uEngine.............................................................................. 38

어플리케이션 구축 툴로서의 uEngine................................................................................... 38

기본 작업처리기(디폴트 워크아이템핸들러) .................................................................. 38

작업처리기 추가해서 만들기.......................................................................................... 39

데이터베이스 어플리케이션 생성기 – metaworks.......................................................... 39

Metaworks 개발 방법................................................................................................... 40

Metaworks의 사용법.................................................................................................... 40

Table (metadata) XML 들의 생성......................................................................... 41

Application (metadata) XML들의 생성.................................................................. 41

default desktop 수행해보기.................................................................................. 41

어플리케이션의 수정.............................................................................................. 42

웹으로 연결........................................................................................................... 43

uEngine의 액티비티로 사용하기 – MetaworksActivity................................................. 43

컴포넌트 기반 개발 툴로서의 uEngine.................................................................................. 43

Copyleft© 2003-2004 Jinyoung Jang | 3

Page 4: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

uEngine 컴포넌트 프레임워크 – Open Kernel Framework........................................... 44

새로운 액티비티 타입의 추가......................................................................................... 45

새로운 콤플랙스 액티비티 타입의 추가.......................................................................... 50

자주 사용하는 조합은 하나의 컴포넌트로...................................................................... 54

‘비를 맞을수록 자꾸 더 커지는 우산’ – uEngine.................................................................... 54

Copyleft© 2003-2004 Jinyoung Jang | 4

Page 5: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의 상호작용으로 이루어

집니다. 이를 위해서는 다양한 종류의 비즈니스 자원들을 실시간 통합할 수 있음과 동시에 기민

하게 변화하는 기술적 성장을 따라잡을 수 있어야 합니다. uEngine은 이러한 적응성과 유연성

을 제공하는 웹서비스 기반 워크플로 엔진 입니다. uEngine의 활용분야는 기업의 Business

Process Management 뿐만 아니라 기업간 거래(B2B), 어플리케이션간의 통합(EAI)을 지원하

는 통합 비즈니스 운영체제입니다. 또한 uEngine은 GNU 철학에 근거한 오픈소스 소프트웨어

로서 개발자 정신에 기본하고 있습니다.

[노트]본 유저가이드는 uEngine version v1.0 RC-5 버전을 기준으로 작성되었습니다

이번 절에서는 uEngine의 근간인 워크플로와 웹서비스 기술 및 객체지향 프레임워크에 대해

간단히 소개하고, uEngine이 어떻게 이러한 기술들을 바탕으로 universal하고 적응성있는

BPM을 실현하는 가를 소개합니다.

워크플로

워크플로의 기본적 정의는 사람과 기계와의 작업들 즉, IT 어플리케이션들과 툴들로 이루어지

는 업무의 흐름(프로세스)을 자동화하는것입니다. 워크플로의 최초 출현배경은 주로 사무실내

직원들 간의 긴밀한 작업들 – 보험, 뱅킹, 법무 등과 같은 문서기반의 작업흐름을 자동적으로 분

배, 컨트롤해 주는 것이었으나, 최근에는 산업기계와의 연동, 기업간 거래, 기업어플리케이션과

의 통합, 기업 내부와 인터넷 포탈과의 연계등 IT, 사람, 비즈니스 파트너가 상호 협업하고 연계

되는 지점에서 접착제 역할을 수행하는 광범위한 개념으로 성장하고 있습니다.

워크플로 = ‘큰 프로그래밍’

워크플로를 한마디로 표현하자면 “업무 흐름을 모델링 툴로 그린 후, 서버에 업로드 시키면 모

델링한 업무흐름대로 개발작업없이 바로 수행시켜 주는 엔진”이라고 할 수 있습니다. 그래서 워

크플로는 일종의 큰 프로그래밍을 하는 개발툴처럼 보이기도 합니다. 아래 그림은 이러한 워크

플로의 빌드타임/런타임 개념을 설명합니다.

Copyleft© 2003-2004 Jinyoung Jang | 5

Page 6: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

그림 1. 워크플로 기반 개발 순서 (WfMC, 1995)

그림1은 워크플로 기반 개발의 전형적 순서를 보여줍니다. 크게 빌드타임(개발시간)과 런타임

(실행시간)으로 나뉘게 됩니다.

빌드타임에는 업무의 흐름을 분석, 정의하는 툴을 제공하는데 이것을 Process Definition

Tool이라고 합니다. 이 툴을 이용하여 어떤 역할의 사람이 어떤 툴을 이용해서 어떤 작업을 어

떠한 순서로 하게 된다는 것을 그림 그리듯 정의하게 됩니다. 이렇게 정의한 업무의 흐름을

Process Definition이라고 합니다.

런타임에서는 이렇게 정의된 Process Definition를 실제로 동작시킬 수 있는 Workflow

Enactment Server에 디플로이 한 후 실행시키게 됩니다. 그러면 아래 그림과 같이 프로세스 정

의를 해석하여 작업이 필요한 순간에 작업자(사람)나 IT 리소스(소프트웨어)에게 작업을 시키고

결과를 자동적으로 관리하게 됩니다.

Copyleft© 2003-2004 Jinyoung Jang | 6

Page 7: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

그림 2. 사람과 IT리소스간의 프로세스를 자동화하는 워크플로 (WfMC, 1995)

이러한 방법으로 기술을 전혀 모르는 업무 전문가도 그림을 그리듯이 ‘프로세스 정의’라는 형

식으로 업무를 정의하기만 하면 개발작업 없이 시스템이 완성되는 것입니다1.

워크플로의 구성요소

그림 3. 워크플로의 구성요소 (WfMC, 1995)

그림 3은 워크플로시스템의 구성요소를 보여줍니다. 프로세스의 설계와 동작을 위한 Process

Definition Tool과 Workflow Enactment Server, 프로세스를 관리하고 동작상황을 모니터링할

수 있는 Administration & Monitoring Tools, 작업을 직접수행하는 사용자가 수행할 업무 리스

트를 관리하고 직접 업무를 수행할 수 있는 환경인 Workflow Client Applications (또는

Work-list Handler), 또한 액티비티를 사람이 수행하는 것이 아니라 소프트웨어나 기계가 수행

할 수도 있는데 이런 경우 Invoked Application이라고 합니다. 마지막으로 다른 워크플로 시스

1 물론 여기에는 사용자가 작업할 어플리케이션들과 워크플로엔진이 연동될 수 있도록 미리 등록되어있어야 한다는 전제조건이 있습니다.

Copyleft© 2003-2004 Jinyoung Jang | 7

Page 8: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

템과 연동하여 다른 조직간에 이어진 프로세스를 수행할 수 도 있습니다2.

워크플로는 일반 개발툴과 무엇이 다른가?

처음에 언급했다시피 워크플로는 일종의 개발툴 처럼 보이기도 합니다. 하지만 다음표가 비교하

듯이 유사하지만 많은 부분에서 그 추상화 수준이 다릅니다:

일반 프로그래밍 워크플로

개발주체 설계의 경험, 사용 기술등에 대한 지식

을 가진 개발자

역할, 업무의 흐름 등에 대한 이해가 있

는 업무전문가

설계, 모델

링의 목적

구현단계를 위한 아키텍쳐, 데이터베이

스, 객체구조등의 기술적 설계

업무의 흐름, 전달되는 문서양식, 작업자

등의 고수준의 추상화된 업무설계에 집

최소 작업

의 단위

명령. 함수호출, SQL쿼리 수행등의 단

위업무를 구성하는 명령

액티비티. 업무 참여자가 다른 참여자와

관련없이 수행하는 단위의 업무

데이터의

단위

문자열, 숫자형, 데이터베이스 레코드

등의 자료를 표현하기 위한 자료구조

워드문서, 송장, XML비즈니스문서 등의

엔드유저가 집적 사용하는 자료

운영과정 요구분석, 설계, 개발, 재배포 등의 단계

별 리엔지니어링.

운영중에 즉각적, 지속적으로 변화된 요

구사항을 반영, 피드백

모델

운영모니터

재설계 디플로이

피드백

시뮬레이션

즉, 워크플로는 일반 개발툴에 비해 훨씬 거시적이고 비즈니스적인 관점의 표현과 구현에 중점

을 두고 있습니다. 말하자면, ‘어플리케이션 생성기’라기 보다는 ‘업무환경 생성기’ 혹은 ‘업무

운영체제’라는 편이 보다 워크플로의 특징을 잘 설명한다고 할 수 있겠습니다.

2 이런경우를 Inter-organization Workflow라고 합니다.

Copyleft© 2003-2004 Jinyoung Jang | 8

Page 9: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

워크플로 우산

워크플로는 이러한 엔드유저 입장의 추상적 개발모델을 위한 프로세스 설계, 관리, 모니터링, 업

무환경 구현 등의 기능외에 이를 기반으로한 여러가지 상승효과를 주는 기능들을 제공합니다.

다음은 그러한 가치상승의 기능들을 나열하고 있습니다.

QoS측면: 비즈니스 프로세스의 특징상 아주 장기적으로 진행되고 결과가 누락되거나

업무가 단절되어서는 않되기 때문에 워크플로는 안전하고 견고한 비즈니스 환경을 지

원해야 합니다. 이를 위해 시스템 하부에서 트랜잭션, Fail-Over, 메시지 큐잉 (될때까

지 적절히 재시도)등의 메커니즘을 제공합니다.

B2B: 워크플로가 담당하는 비즈니스 영역은 기업 내부 뿐만아니라 외부에 걸쳐 진행될

수 있는데 이는 조직간 워크플로엔진의 연계를 통해 가능합니다.

EAI: 소프트웨어와의 통합과 안정적인 흐름제어의 특징을 지닌 워크플로는 기업 어플

리케이션의 통합을 지원하는 기능으로 활용되기도 합니다.

워크플로는 이러한 추상적 개발과 다양한 지원기능들을 통해 기민하게 변화하는 비즈니스 요구

의 변화에 일관적이고 안정적인 시스템 개발/운용 환경을 제공하는 우산과 같은 기능을 합니다.

Workflow프로세스자동화

프로세스 설계/시뮬레이션

프로세스 운영/관리프로세스 모니터링

업무환경구현자동화

문서 전달 및 결재워크리스트 관리조직도 관리인증, 권한관리

트랜잭션 안정화(메시지 큐잉)

그림 4. 워크플로 우산

웹서비스

이번절에서는 uEngine의 2번째 기술적 근간인 웹서비스에 대해서 설명합니다.

Copyleft© 2003-2004 Jinyoung Jang | 9

Page 10: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

웹서비스란 “컴퓨터가 읽고 사용할 수 있는 웹사이트”

그림 5.웹서비스는 컴퓨터가 웹을 활용할 수 있도록 고안된 환경 (Google, 2004 & Hendler,

2001)

위의 그림은 웹서비스가 무엇인지 아주 잘 설명하고 있습니다. 웹서비스는 사람의 개입없이 컴

퓨터가 어떤 웹사이트에 접속해서 자료를 공유하고 폼 전송을 통해 데이터를 전달할 수 있는 환

경입니다. 이를 위해 기존의 웹사이트를 컴퓨터가 이해할 수 있도록 HTML이 아닌 XML로 데이

터를 주고 받게 됩니다.

검색엔진

웹사이트사용자

검색 웹사이트등록, 광고

문서읽기자료 다운로드폼 전송

웹사이트의 URL

사람이 웹사이트를 활용하는 단계 컴퓨터가 웹서비스를 활용하는 단계 (IBM, 2000)

이를위해, 위의 그림에서 보듯이 사람이 웹사이트를 “검색해서 읽고 사용”하는 단계처럼 컴퓨터

가 웹서비스를 “검색 연동 호출” 할 수 있도록 표준화된 방법 3가지인 UDDI, WSDL, SOAP을 제

공합니다.

Copyleft© 2003-2004 Jinyoung Jang | 10

Page 11: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

웹서비스의 특징

상호운용가능하게 정보를 교환 (Information exchange in the interoperable way)

XML/Text와 HTTP라는 대중화되고 가벼운 기술을 활용함으로써 대부분은 운영체제와 소

형시스템에서 상호운용가능합니다.

동적 서비스 연동 및 광고 (Dynamic Service Binding & Advertizement)

웹서비스 환경에서는 통합의 대상이 되는 2개의 시스템이 사전의 기술적 합의가 없어도

UDDI검색을 통해 필요(적절)한 서비스를 검색하고 그 서비스에 대한 기술정보(WSDL)를

실시간 얻어와 바로 연동할 수 있습니다. 이 둘(UDDI와 WSDL)은 다수의 서비스에 대한 비

교 후 거래를 가능케하는 실시간 웹서비스 기반 비즈니스 전략의 핵심 도구입니다.

웹서비스 비즈니스 전략과 유형

한 종류의 서비스에 대한 다수의 제공자 (Single product and variety of suppliers)

글로벌화된 아웃소싱: 조건에 맞는 최고의 서비스와 정보로 조합된 환경을 구성할 수

있습니다. 앞으로 가격비교나 벤치마킹 사이트들은 좀더

Short-term partnership: 이익기반의 언제나 변할 수 있기 때문에 파트너 쉽의 생명주

기는 점점 더 짧아집니다.

비즈니스 랩퍼(Wrapper): “웹서비스는 사람의 관여없이 다른 기업의 시스템이 내 기업

의 시스템의 내부를 들여다 보고 서비스를 이용 할 수 있는 ‘인터넷 기반 서비스 창구’”

Database

기업내부

사용자 (사람)(고객, Buyer…)

throughWeb site

인사 재무/회계

영업

판매

throughWeb Services

Enterprise Application

Internet

거래파트너의전산시스템(컴퓨터)

그림 6. 웹서비스는 기업(조직)이 컴퓨터에게 제공하는 “서비스 창구”

현재의 기업업무에서의 인터넷의 활용은 주로 사람이 홈페이지를 열어서 그 내용을 읽은 후 거

기에 맞는 내용으로 폼을 채우고 “보내기”버튼을 클릭해서 업무를 진행한다. 이런것들을 우리

기업 내부의 전산 시스템이 자동으로 한다면 어떻겠습니까? 즉, 컴퓨터가 폼에 입력되어야 할

Copyleft© 2003-2004 Jinyoung Jang | 11

Page 12: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

내용을 자동으로 인식하고 기업 내부 시스템에 미리 저장된 데이터베이스에서 입력할 값들을

읽어서 자동으로 처리한다면 어떻겠습니까. 이러한 환경이 점차 확대되었을 때 우리는 명함에

쓰인 웹서비스 주소만 가지고 그 회사의 홈페이지 주소만 알면 이제 바로 그 회사의 전산시스템

과 연동이 가능하다면 어떻겠습니까.. 이것이 웹서비스입니다. 근대 컴퓨팅의 역사를 살펴보면

데이터 통합(data integration)과 분산 컴퓨팅의 역사라고 해도 과언이 아닙니다. 즉, 웹서비스

는 기업 내부 시스템에 갇혀있던 데이터와 서비스를 네트워크를 통해 서로 공유하여 시너지를

낼 수 있는 가장 현실적이고 대중적 기술이 될 수 있습니다.

웹서비스 성공의 관건과 워크플로

웹서비스를 통해 많은 서비스들이 공유된다면 이는 초기 인터넷의 확산처럼 엄청난 파급효과를

가져줄 것 같습니다. 웹서비스 엔드포인트의 북마크 만으로 많은 서비스들을 연계해서 새로운

서비스로 재판매할 수도 있을 것입니다 (Web Service Intermediary). 또는 이렇게 잘 된 웹서

비스들에 대한 카탈로그 서비스를 웹서비스로 제공할 수도 있을겁니다. 기업들의 아웃소싱은 거

리와 시간, 기술적 한계를 뛰어넘어 최적의 전략화가 가능해 질 것입니다.

하지만 웹서비스의 장점을 극대화하고 비즈니스 전략을 현실화 하기 위해서는 다음과 같은 2

가지 관건을 충족해야 합니다.

웹서비스간 프로세스 자동화

웹서비스들 간에 이루어지는 업무의 흐름, 즉, 기업간의 웹서비스 프로세스를 일일이 프로

그래밍에 의존해서 개발한다면 개발 비용은 둘째치고 웹서비스의 최대 장점인 JIT-통합이

란 것은 무색해 질 것입니다. 이는 “이익조건에 따라 매번 변화할 수 있는 파트너쉽”이라는

웹서비스의 전략을 반영하기에 너무 속도와 효율측면에서 부적합 할 것입니다. 따라서, 웹

서비스간의 흐름을 고수준의 툴을 통해 모델링하고 이를 곧 운영시키고 수정하며 상태를

모니터링 할 수 있는 환경이 요구됩니다. 즉, 웹서비스 운영을 위한 워크플로 개념이 필요하

다는 것입니다.

내용의 상호운영성을 위한 인간의 적절한 개입

컴퓨터가 인지능력을 따라하는 것의 한계점은 여전히 존재할 수 밖에 없습니다. 마찬가지로

WSDL을 통한 유연한 연동을 제공하는 웹서비스 또한 그 한계점은 존재합니다. 특히, 여러

가지 예외사항과 거래상황에 따른 변수를 생각해야하는 비즈니스 환경에의 웹서비스 접목

은 오히려 위험해 보이기도 합니다. 이를 해소하기 위해서는 아직은 어느정도 수준으로 각

건에 대해 사람의 개입이 필요하다는 것입니다. 즉, 데이터 타입 레벨의 상호운영성을 넘어

서 내용(시맨틱)에 대한 상호운영성의 지원이 꼭 필요합니다. 워크플로는 프로세스에 대한

인간의 개입을 중시하며 사람의 업무를 관리하고 프로세스 흐름과 데이터에 적절히 조화되

도록 하는 기능이 있습니다.

Copyleft© 2003-2004 Jinyoung Jang | 12

Page 13: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

UEngine

워크플로의 미결 문제들

앞장에서 설명한 듯이 워크플로 기반의 개발은 구현과 설계 뿐만 아니라 프로세스 관리영역에

서 까지 많은 영역에서의 개발 노력을 덜어줍니다. 하지만 이런 쉽고 효율적인 개발의 이면에 워

크플로가 아직 개발의 모든 영역에서 활용되지 못하는 다음과 같은 결정적 미결 이쓔들이 존재

합니다.

워크플로로 모든 개발의 요구를 충족할 수 있는가? (커스트마이징의 어려움)

워크플로가 개발에 필요한 아무리 많은 기능을 제공한다고 하더라도, 비즈니스 적, 기술적

요구나 변화에 따라 새로운 액티비티 유형을 추가할 필요는 반드시 생기게 됩니다. 대부분

의 워크플로 엔진들에 새로운 액티비티를 추가하는 것은 그 제품에 대한 많은 기술적 이해

와 구현 및 리펙토링 과정을 요구하게 됩니다. “이 워크플로 제품으로 프로젝트가 끝날때까

지 제한된 시간과 비용으로 모든 구현이 가능하겠는가”하는 고민이 생기게 됩니다. 이는 프

로젝트 초기나 진행중에서 발견되는 아주 큰 위험요소로 작용합니다.

워크플로로 만들어 놓으면 다음에 다른 환경에서 재활용 할 수 있는가?

앞에서와 마찬가지로 모든 패키지 성 제품이 갖고 있는 공통적인 문제라 할 수 있습니다. 특

정 제품에 맞게 만들어 놓은 어플리케이션들은 그 제품의 엔진에 의해 잘 해석되어 활용되

지만 다른 제품이나 환경에서는 다시 개발해야 하는 경우도 있습니다. 이는 프로젝트의 초

기에 워크플로를 적용할 것인가 말것인가 하는 관건이 될 수도 있습니다.

다른 종류의 워크플로 엔진과 연동이 정말 잘 되는가? (상호운영성 문제)

조직간에 워크플로의 통합, 즉, 프로세스 연계를 통한 기업간 거래 방법은 워크플로의 가장

매력적이고 파워풀한 기능이라고 할 수 있습니다. 그러나 많은 표준화 노력에도 불구하고

다른 환경, 다른 언어에서 각기 개발된 워크플로 엔진들 간의 자유로운 연계는 현실적으로

힘든 것이 사실입니다.

UEngine의 설계원칙

uEngine은 기존의 워크플로 엔진들이 가진 한계점을 뛰어넘기 위해 1)컴포넌트 프레임워크 와

2) 웹서비스를 설계원칙에 반영하고 있습니다.

Copyleft© 2003-2004 Jinyoung Jang | 13

Page 14: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

uEngine =

웹서비스 기반 통합 솔루션

워크플로 관리 시스템

컴포넌트 기반 개발 툴+

+

컴포넌트 기반 적응형/성장형 엔진

JavaBeans나 EJB에서 발견되는 Java 특유의 로직과 기술을 분리하는 컴포넌트 환경이 반영된

컴포넌트 프레임워크를 제공하여 개발자는 기능의 확장에 필요한 새로운 기능을 쉽게 추가할

수 있으며 제어권의 반전3을 통해 결과 시스템의 품질과 안정성을 보장받게 됩니다. 특히 유엔

진의 추상적 컴포넌트 개발방식은 퍼시스턴스, XML, 웹서비스, 스윙, 메시지 큐잉, EJB 등에 대

한 지식 없이 그 기능들을 개발할 수 있도록 합니다.

- 유엔진 컴포넌트 인터페이스는 다음과 같은 것들을 포함합니다: 액티비티 유형, 플로

우 유형, 액티비티 디자이너, 액티비티 뷰어(렌더러), 프로세스 언어 변환기/출력기, 워

크아이템핸들러 등.

웹서비스를 기반

uEngine으로 만든 프로세스는 그 자체로서 웹서비스가 됩니다. 이는 WSDL-SOAP의 웹서비스

의 동적 통합 (사전기술지식 없이 바로 통합)의 장점을 그대로 활용할 수 있는데, 다른 워크플로

엔진들이 웹서비스의 단순하고 쉬운 통합방법으로 uEngine의 프로세스와 연계할 수 있도록 합

니다. 또한 uEngine은 프로세스의 공개를 위한 수단만이 아니라, 웹서비스 간 프로세스 구현을

목표한 설계를 엔진개발에 반영했습니다.

- XML 기반의 프로세스 변수: uEngine은 프로세스 변수의 선언, 할당, 처리 작업을 위한

XML-type시스템을 내장하고 있습니다. 이것은 웹서비스 간의 데이터를 전달과 웹서

비스를 기반한 워크플로 리소스의 통합관리를 위한 기초를 제공합니다.

- 동적인 웹서비스 액티비티: 웹서비스의 발견, 연동, 호출 등의 동적 웹서비스를 구성할

수 있는 액티비티 타입들을 제공합니다. 이들의 조합으로 고도의 인터넷 비즈니스 환경

을 생산성있게 구축토록 도와줍니다.

- 통합자원관리: 워크플로 리소스 (IT, 사람, 비즈니스 파트너)를 웹서비스로 래핑하여 다

3 프레임워크 기반 어플리케이션의 특징인 콜백 중심의 제어 방식. 프레임워크가 등록된 컴포넌트(어플리케이션)들을 미리 정의된 프로토콜을 준수하여 역으로 호출하여 제어권을 주도하는 방식. 기존 어플리케이션이 제어권을 주도하고 라이브러리를 호출하는 방식과 다르게 제어권과 하부로직들을 프레임워크로분리해내어 설계의 재활용, 안정성/품질 향상, 하부코드의 일원화등의 여러가지 아키텍쳐적 장점을 얻을수 있음. IOC (Inversion of control)라고도 함.

Copyleft© 2003-2004 Jinyoung Jang | 14

Page 15: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

룸으로써 통합적인 자원관리를 지원합니다. 이를 통해 uEngine에 선언된 모든 리소스

는 어디서나 재활용가능한 리소스로 유지됩니다.

UEngine의 개발전략

Bottom-Up 방식

기존의 워크플로 엔진들은 많은 기능들(액티비티 유형)을 하부에 제공하여 프로세스 모델링에

필요한 모든 것을 제공하는 전략을 가지고 있습니다. 이는 top-down의 전략이라고 할 수 있습

니다. 이와 다르게 uEngine은 오히려 초기 기능을 최소화하고, 대신 기능추가를 통해 지속적으

로 기능을 누적해 갈 수 있는 컴포넌트 프레임워크의 제공에 초점을 두는 bottom-up 전략입니

다. 즉, 컴포넌트의 생산과 엔진의 재활용성 및 커스트마이징 용이성을 극대화하는 방향입니다.

누군가 한번 고민하여 개발했으면 다시 반복하지 않는다

여러분의 프로젝트에 uEngine을 적용할수록 유엔진 프레임워크에 의해 새로운 기능들은 컴포

넌트의 형식(jar파일)으로 남게됩니다. 이는 여러분이 재활용할 수 있는 컴포넌트를 공유하여 서

로간에 시너지 효과를 낼 수 있는 시작점이 됩니다. UEngine은 인터넷에 연결된 모든 개발자가

한번 작성한 컴포넌트를 서로 필요한 사람끼리 교환할 수 있는 “코드 바자회”(CSC, 2004)를 실

현할 수 있도록 하는 것을 최종 목표로 생각합니다.

최소한의 기술적 이해를 요구한다 - 오픈아키텍쳐기반

아무리 좋은 소프트웨어라도 들여다 보는데 너무 어려우면 그만큼 가용성이 떨어집니다. 더 이

상 어려운 기술을 남발하여 개발자들에게 그것들을 이해하게끔 강요하는 것은 급변하는 e-

Business 환경을 위한 경쟁력있는 툴이 아닐 것입니다. UEngine은 ‘꼭 필요한 만큼만의 기술’

과 ‘최대한 널리 알려진 기술’들만을 채용하여 ‘단순하지만 충분하게’ 구현되고 있습니다. 개발

자 여러분이 최대한 단시간에 uEngine에 대한 아키텍쳐를 이해하고 활용할 수 있게 하기 위해

이미 이해되고 공개된 아키텍쳐인 J2EE와 디자인 패턴들을 기반하고 있습니다. 이는 uEngine

을 가장 하부의 커널레벨까지 여러분이 필요한 환경에 최적화 할 수 있도록 많은 기술적 이해를

도와줄겁니다. 또한 복잡하고 잘된 UI나 기능의 초기 제공보다는 상대적으로 멋지지 않고 간단

해 보이기 까지한 커널을 유지하여 여러분이 쉽게 적용할 수 있도록 하는것에 최대한 초점을 맞

추겠다는 것입니다.

오픈소스 전략

극심하게 비싼 소프트웨어 라이센스비용은 정보시스템 프로젝트 전체예산에서 컨설팅과 개발

서비스에 대해 투자되어야 할 비용을 상대적으로 침범하게 되어, 프로젝트의 실패사례의 근원이

되기도 합니다. 이러한 결과로 말미암아, 고객사는 물론이고 개발사를 위한 것이 아닌 소프트웨

어 벤더의 오너에게 개발수익이 집중되게 되는 악순환의 고리를 형성하게 됩니다. 오픈소스 비

Copyleft© 2003-2004 Jinyoung Jang | 15

Page 16: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

즈니스 전략은 기존의 ‘SW=공산품’위주의 소프트웨어 시장 원리에서 ‘SW=서비스’라는 변화된

가치관을 제시합니다. 이는 더 이상 소스코드가 SW의 실체가 아니고 그 SW를 통해 고객이 얻

는 ‘서비스’가 SW의 실체라는 것입니다. 오픈소스는 인터넷에 소스를 공개하여 개발하는 새로

운 개발모델을 제시하고 있습니다. 이는 개발자의 개발노력의 산물인 소스코드를 공개하여 서로

필요한 것들을 가져다 쓸 수 있게 하는 방법으로 (고통 분배4) 소프트웨어 제품을 만들고 그것을

프로젝트에 활용함으로써 로열티로 빠져나가던 수익의 부분을 개발자의 권익으로 돌려 개발의

욕을 고취시키고 고객의 요구를 만족시켜 줄 수 있는 충실한 서비스로 돌려주게 한다는 전략입

니다. (보다 자세한 오픈소스의 이념과 사업적 전략에 대해서는 GNU의 “마법의 솥”을 읽어보기

를 추천합니다).

uEngine은 많은 조직에서 가능한 적은 비용으로 웹서비스와 워크플로를 기반한 개발을 시작

할 수 있게 하기 위해 모든 소프트웨어와 소스코드를 무료로 제공하는 오프소스 비즈니스 모델

을 지향합니다. 즉, uEngine을 통해 개발(SI), 컨설팅/교육과 같은 비즈니스를 하실 수 있고 또

한 uEngine의 개발에 참여하여 자신의 코드를 공유하고 타인의 코드를 다운받아 서로 교환 할

수 있습니다.

uEngine의 구성요소uEngine 아키텍쳐

Managed TransactionMessage QueuingJava Web

Start

Portlets

AxisServiceClasses(*.jws)

RDB

MSN

User Servicesor

Partner Services

EIP System

WebServices(Pre -defined

Service)

u|Engine

Email

Web

Ser

vice

Proc

ess

Desi

gner

ProcessManager

(SessionBeans)

OKF

Process Repository

(EntityBeans)

WebServiceInvoker

(MessageDrivenBean)

업무설계자

사용자

비즈니스파트너(시스템)

JBoss / TomcatAxis LiferayWSDL4J UDDI4J XGen …

XML Binding Class

RepositoryActivity type components

- JVM: JRE 1.4에서 개발/테스트 되었습니다.

- J2EE Container: J2EE의 Managed Transaction, Container-Managed Persistence

4 Pain sharing. 소프트웨어 개발에 대한 고통을 서로 공유하여 어차피 한번쯤 작성해야할 코드를 최대한공유하여 개발하는 오픈소스의 주요원리중 하나.

Copyleft© 2003-2004 Jinyoung Jang | 16

Page 17: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

의 관리된, 안정된 환경아래 운영되게 해줍니다. JBoss 3.2.1에서 테스트되었습니다.

(OKF는 J2EE의 관리된 환경과 워크플로 기능 컴포넌트들 간의 매개 역할을 하여 기술

적 이해 없이 쉽게 컴포넌트를 추가할 수 있게하는 프레임워크입니다.)

- 웹서비스 컨테이너: Apache Axis와 잘 연동되어 있습니다. Axis는 웹서비스 호출 을

위한 툴을 제공할 뿐만 아니라 프로세스 정의를 웹서비스로 공개/호스팅 합니다.

- Portlet을 통한 Process 관리 툴의 제공: Process 관리 권한, 사용자 워크리스트, 포탈

화면 등을 위해 관리 화면들을 Portlet으로 제공합니다. 이는 다른 종류의 포탈엔진에

서도 재활용할 수 있고 위치이동, 개인화 등이 쉽도록 해줍니다. UEngine 배포 버전은

오픈소스로 제공되는 EIP(Enterprise Information Portal)시스템인 ‘Liferay’와 통합되

어 있습니다.

- Java Web Start를 통한 웹에서의 활용: 웹 브라우저에서 스윙으로 만들어진 프로세스

디자이너를 직접 사용할 수 있도록 합니다.

- JMS(Java Messaging Service) Provider: Jboss에 내장된 Jboss MQ를 사용합니다.

- Database Server: 보존메커니즘을 위해 EJB 엔티티 빈을 활용하기 때문에 기본적으로

는 DB에 비종속적입니다. DB 서버는 기본적으로 Jboss에 내장된 오픈소스 데이터베이

스인 Hypersonic 을 사용하고 있습니다.

uEngine 엔진

장기간에 이어지는 비즈니스 프로세스를 안정적이게

처리하기 위한 uEngine의 Workflow Enactment

Server입니다. J2EE와 JMS (Java Messaging

Service)에 기반한 “보장된 트랙잭션과 메시지 전달

”은 다양한 비즈니스 리소스들을 유연하고 믿을 수

있게 연계시켜 줍니다.

Copyleft© 2003-2004 Jinyoung Jang | 17

Page 18: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

uEngine 프로세스 디자이너

- 블록형식의 안정된 디자인 유지

- XML기반의 확장적 프로세스

변수 선언

- 다양한 웹서비스 연동 액티비티

제공

- 새로운 액티비티의 쉬운 추가

- WSDL, UDDI, BPEL4WS 지원

uEngine 관리자 툴

- 작업소요시간, duedate등 모니터링

- 흐름컨트롤

- 프로세스 변수값의 변경

uEngine Enterprise Information Portal – Liferay*

사용자(엔드유저)가 Single Sign-on하

여 자신의 업무를 리스트를 관리하고

작업을 할 수 있는 공간.

[노트] ‘Liferay’는 uEngine의 portlet

들을 관리해주는 오픈소스 EIP솔루션

입니다.

Copyleft© 2003-2004 Jinyoung Jang | 18

Page 19: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

uEngine 업무처리기

W i n d o w D o c u m e n ts

C u s to m J S P p a g e s

A u to -g e n e ra te d D B a p p lic a tio n s

작업자가 업무를 직접 처리하

기 위한 화면으로 기본적으로

Window 문서들 (MS office등)

과 Database 어플리케이션,

새로 만든 JSP페이지등을 사

용가능합니다.

uEngine 데이터베이스 어플리케이션 생성기 – metaWorks*

설계된 DB테이블만 있으면 데이터베

이스 기반 어플리케이션을 자동생성해

주는 프레임워크

uEngine Admin Script Console

고급 사용자나 개발자가 개발단계나

워크플로에 간단한 정보를 얻어낼 때

개발 작업없이 자바스크립트로 인터

페이스 할 수 있도록 제공된 툴입니

다. 데이터베이스에서 SQL*Plus같은

존재라고 생각할 수 있습니다.

Copyleft© 2003-2004 Jinyoung Jang | 19

Page 20: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

uEngine 기초사용법이번장에서는 uEngine의 가장 기본적인 활용을 위한 설치 및 사용법에 대해 개략적으로 설명합

니다.

설정

1. uEngine project site (www.uengine.org 또는 uengine.sourforge.net)에서 uEngine

version v1.0 Beta / standalone 버전을 다운로드 받습니다.

2. 받은 파일의 압축을 해제하면 다음과 같은 디렉토리를 얻게됩니다.

3. was/bin 디렉토리에 포함된 run.bat를 실행시킨다.

[노트] 다른 WAS에 deploy하기 위한 고급설정은 uEngine사이트를 참조하십시오

[노트] uEngine은 JRE v1.4 이상에서 테스트 되었습니다. 만약 정상적으로 서버가 구동되지 않

는다면 Run.bat의 맨 앞에 다음을 추가하십시오:

set JAVA_HOME=<jre1.4혹은 jdk1.4의 위치>

프로세스 디자이너 실행

먼저 was/bin 디렉토리에 포함된 run.bat (혹은 run.sh)를 실행시켜 uEngine 서버를 구동시킵

니다. 다음과 같은 메시지가 나올때까지 기다립니다:

Copyleft© 2003-2004 Jinyoung Jang | 20

디렉토리 주요 파일 설명demo 데모 프로세스 및 문서 파일들doc 설치 및 사용자 가이드, “apidoc”에는 javadoc이 제공됨lib 클라이언트 실행을 위한 라이브러리metaworks 데이터베이스 개발툴인 metaworks 디렉토리src uengine 소스파일들

/build.xml: ant툴로 사용할 수 있는 여러가지 명령들을 제공was 기본 WAS로 제공된 JBoss 디렉토리was/bin/run.bat or run.sh: JBoss실행을 위한 스크립트was/server/default/deploy/uengine.jar uEngine 엔진 바이너리was/server/default/deploy/uengine.jar/org/uengine/uengine.properties

uEngine 설정파일. 이 파일을 열어서 몇 가지 설정을 맞추어주어야 합니다.

was/server/default/deploy/uengine-web.war uEngine 웹어플리케이션들(JSP)was/server/default/deploy/uengine-web.war/wih 몇가지 작업처리기(워크아이템 핸들러) 종류들이 하부에 디

렉토리로 제공됩니다.

Page 21: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

http://localhost:8082에 접속하면 다음과 같은 화면이 나타납니다.

id: [email protected]/ password: test로 로그인 한 후 포털 페이지가 뜨면 “Processes”탭을

클릭합니다. 그러면 다음과 같은 프로세스 관리자 화면이 뜨게 됩니다. “Process Definition”프

레임에 있는 “start” 프로세스 정의 “v2”를 클릭합니다. 그러면 기본 프로세스 정의가 보입니

다. 프로세스 다이어그램 밑에 있는 “Edit”버튼을 클릭하면 이를 편집하는 프로세스 디자이너가

Java Web Start를 통해 그림과 같이 실행됩니다.

Copyleft© 2003-2004 Jinyoung Jang | 21

Page 22: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

1

23

[노트] 처음 실행시에는 Java Web Start가 이 어플리케이션을 다운로드 하고 실행할 것인지를

물어보게 됩니다.

액티비티 추가하기

프로세스 디자이너의 왼쪽 패널을 보면 여러 개의 액티비티 타입들이 배치되어 있습니다. 그 중

에서 ‘WebServiceActivity’버튼을 클릭하면 오른쪽의 프로세스 다이어그램에 추가가 되는 것

을 보게 됩니다.

액티비티의 설정이 완료되지 않은 상태이면 화면에서와 같이 액티비티의 박스가 붉은색(에러)

혹은 녹색(경고)으로 표시됩니다.

액티비티 설정하기

추가된 액티비티 버튼을 더블클릭 해보십시오 다음과 같은 액티비티 설정창이 뜹니다. 화면과

같이 설정한 후 확인 하십시오.

Copyleft© 2003-2004 Jinyoung Jang | 22

Page 23: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

Role: 이 작업을 수행할 작업자(혹은 웹서비스,

시스템, 비즈니스 파트너)

Name: 이 액티비티의 이름. 즉, 이 작업의 명칭,

단계. 예) 수주입력

TracingTag: 전체 프로세스 상에서 이 액티비

티의 위치를 나타내는 태그값. 수정불가

흐름 정의하기

액티비티간의 흐름을 정의하기 위해서는 ‘SequenceActivity', 'AllActivity', 'SwitchActivity'

and 'LoopActivity'같은 ‘콤플렉스 액티비티’들을 사용합니다. 예를 들어서 AllActivity는 몇 개

의 액티비티들을 병렬로 수행하는 동작을 합니다. 액티비티 패널에서 AllActivity를 클릭하여

추가한 후에 아래 화면과 같이 기존에 추가해놓았던 WebService Activity들을 끌어다 놓아 보

십시오. 병렬로 배치되면서 추가됩니다. 추가된 액티비티들간의 위치를 변경하려면 끌어다 놓기

를 계속하시면 됩니다.

또한 콤플랙스 액티비티 내에 콤플렉스 액티비티를 자식으로 추가할 수도있습니다. 이런방법

으로 모든형태의 흐름을 나타낼 수 있습니다.

[노트] 다른 워크플로 엔진들은 주로 액티비티간의 흐름을 위해 트랜지션의 개념을 이용해서

액티비티들을 화살표로 연결시켜 흐름을 지정할 수 있게 합니다. 이는 좀더 직관적인 모델링을

지원하지만 추후 실행시에 여러가지 교착상태, 흐름멈춤 등의 흐름제어의 문제를 야기 하기 쉽

습니다. UEngine의 블록형식의 프로세스 디자인은 애초에 이러한 문제를 발생시키지 않는 제

Copyleft© 2003-2004 Jinyoung Jang | 23

Page 24: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

어흐름을 보장하는 효과를 줍니다. 이는 프로그래밍언어에서 Goto문의 사용과 흐름제어구문(if,

for, while..)의 사용의 차이점으로 생각할 수 있습니다.

역할(Role) 선언하기

각 액티비티의 수행주체를 ‘역할(Role)’이라는 개념을 통해 선언한 후에 실행시점에 실제 수행

자를 지정할 수 있도록 합니다. 가령 문서결재 프로세스의 경우 ‘작성자’와 ‘검토자’가 역할이

될 수 있습니다. 역할을 선언하기 위해서 프로세스 디자이너의 오른쪽 하단에 위치한 작은 역할

패널을 클릭합니다.

역할의 이름을 몇 개 추가해주고 역할 창을 닫습니다 ([노트]현재 영문만 사용가능합니다). 그

후에 추가해놓은 웹서비스 액티비티의 설정창을 다시 열면 추가된 역할을 선택하여 지정할 수

있습니다.

프로세스 변수 선언하기

액티비티간에 정보를 전달하기 위한 수단으로 프로세스 변수라는 개념을 사용합니다. 이는 프로

그래밍언어에서 변수와 같다고 생각하면 됩니다. 프로세스 변수를 선언하기 위해서 역할 창의

왼쪽에 있는 프로세스 변수 패널을 클릭합니다. 프로세스 변수는 문자열, 숫자, 불린등의

Copyleft© 2003-2004 Jinyoung Jang | 24

Page 25: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

Primitive타입과 자바오브젝트, XML을 지원합니다.

프로세스를 저장, 불러오기

모델링 작업중이거나 완료된 프로세스 정의를 파일로 저장하고 불러올 수 있습니다. 상단메뉴의

File에서 Save/Load를 사용합니다.

엔진으로 디플로이 하기

프로세스 모델링이 완료되면 서버에 올려서 동작시킬 수 있습니다. 서버에 올리는 작업을 ‘디플

로이(deploy)’라고 하며 파일메뉴에서 ‘Deploy to Server’메뉴를 선택합니다. 선택 후에는 다음

과 같은 화면이 뜨고 이미 디플로이 되지 않은 프로세스 정의 이름으로 선언해야 합니다.

만약 위 화면이 뜨지 않고 다음과 같은 메시지가 뜨면 프로세스 정의가 완전하지 않다는 오류입

니다. 오류를 완전히 해결한 후에 다시 디플로이 하십시오.

Copyleft© 2003-2004 Jinyoung Jang | 25

Page 26: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

프로세스 관리 (uEngine Admin Portal 접속)

성공적으로 디플로이가 되었다면 uEngine admin portal (http://localhost:8082)에서 다음과

같이 디플로이된 프로세스정의들을 확인하실 수 있습니다.

프로세스의 실행

디플로이한 프로세스 정의에 해당하는 프로세스를 직접 작업자를 지정하여 시작시킬 수 있습니

다. 프로세스를 시작 시키기 위해서는 프로세스 정의 화면의 ‘initiate’버튼을 클릭합니다. 실제

작업자를 지정하기 위한 폼이 아래와 같이 뜨게 됩니다.

Copyleft© 2003-2004 Jinyoung Jang | 26

Page 27: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

화면에서 보는것 처럼 각 작업자에 대한 웹서비스 엔드포인트(시스템인 경우) 및 전자우편 주소

(사람인 경우)를 입력하고 'initiate' 버튼을 클릭합니다. 성공적으로 시작되면 화면에 그 프로세

스에 대한 인스턴스 ID가 출력됩니다. 이렇게 시작된 프로세스의 한 건을 ‘프로세스 인스턴스’라

고 부릅니다.

프로세스의 모니터링

동작중인 프로세스 인스턴스들은 admin portal의 왼쪽 하단 프레임에 나타나게 되고 그 링크를

클릭하면 프로세스의 흐름, 프로세스 변수 값등의 상태를 보여줍니다.

Copyleft© 2003-2004 Jinyoung Jang | 27

Page 28: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

업무의 처리

프로세스가 진행되면서 각 역할에 지정된 작업자가 그 액티비티를 수행하게 됩니다. UEngine

Workitem handler는 각 사용자에게 작업의 리스트를 관리하고 직접 그 작업을 수행하는 환경

을 제공합니다.

현재 지원되는 작업환경은 MS Word, Excel 등의 윈도우 문서등과 JSP페이지로 연결된 작업환

경등이 제공됩니다. 또한 개발자는 workitem handler확장 방법을 통해서 작업환경을 추가할

수있습니다.

내부 프로세스 구축을 위한 uEngine이번장에서는 기업 내부에서의 문서를 기반으로 한 프로세스를 구축하는 예제를 설명합니다. 본

예제를 테스트 하기 예제 프로세스정의들이 포함된 demo 디렉토리내에 ‘판매보고.Bean’을 오

픈하십시오. 다음과 같은 프로세스 흐름이 보여집니다.

업무의 내용은 영업 진행 후 수주건에 대한 기술팀, 관리팀, 최고경영자까지 이어지는 검토과정

을 자동화하는 것입니다. 작업의 방법은 수주계획을 작성한 엑셀파일을 주고받음으로써 이루어

Copyleft© 2003-2004 Jinyoung Jang | 28

Page 29: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

지며 최고 경영자가 승인을 할때까지 내용이 수정되어야 영업현황에 반영됩니다.

엑셀파일을 이용한 작업 (ExcelActivity)

가장 먼저 이루어지는 액티비티로 ‘영업 수주입력’ 액티비티를 더블클릭하면 다음화면과 같이

속성이 보입니다.

DocumentFile: 사용자가 작업할 엑셀파일

의 URL.

TemplateDocumentFile: 프로세스 변수에

반영할 때 참조할 템플릿 엑셀파일

UploadFTPAddress,

UploadFTPDirectory, FTPid, FTPpw: 작

업후 파일을 올릴 FTP 주소, 디렉토리, 아

이디, 패스워드

SavingFileName: 사용자의 작업 후 FTP

서버에 저장될 파일 이름

현재 TemplateDocumentFile과 DocumentFile에 설정된 URL에는 다음과 같은 엑셀파일을 만

들어 놓아야 합니다. 이 파일은 sales_report.xls라는 파일로 제공됩니다.

Copyleft© 2003-2004 Jinyoung Jang | 29

Page 30: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

내용을 살펴보면 내용이 채워질 부분에 <%~%>표시가 된 부분들이 있습니다. 이는 프로세스

변수에서 내용을 가져와서 채워넣거나 작업이 끝난 후 사용자가 입력한 excel내 cel 값을 반영

하도록 표시를 해놓는 것입니다. 표시방법은 다음과 같습니다.

<%=변수명%> : 셀의 내용을 프로세스 변수에 있는 값으로 채웁니다.

<%=*변수명%> : 셀의 내용을 변수값으로 채우고 또한 작업후의 변경된 값을 변수

에 다시 반영합니다.

<%->변수명%> : 이것이 표시된 셀의 왼쪽에 있는 값을 변수값으로 반영합니다.

주로 왼쪽셀에 어떤 계산식이 표시야 할 때 사용됩니다.

[노트] 템플릿 파일을 따로 요구하는 이유는 이 대치표시를 참조하기 위함입니다.

승인 될때까지 반복 (LoopActivity)

CEO의 승인이 있을 때 까지 수주계획서를 수정하도록 하기 위해 수주입력부터 CEO검토까지를

반복하도록 LoopActivity로 처리되어있습니다. 다이어그램에서 표시를 더블클릭하면 다음의

반복조건이 설정되어 있습니다.

Copyleft© 2003-2004 Jinyoung Jang | 30

Page 31: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

LoopingCondition: 반복하게될 조건식.

조건식은 현재 자바스크립트로 작성해야

합니다.

[노트]추후 UI를 제공할 계획입니다.

현재 반복조건식으로 다음과 같이 “프로세스 변수 approved가 ‘N’ 값인 동안”으로 설정되어 있

습니다.

importPackage(Packages.org.uEngine.kernel);

return new Evaluate("approved", "N");

And, Or 조건 또는 크다, 작다와 같은 표현은 다음과 같이 할 수 있습니다.

importPackage(Packages.org.uEngine.kernel);

return new And(

new Evaluate("approved", "N", “>”),

new Evaluate("customer", "LG"),

new Or(

new Evaluate("customer", "LG"),

new Evaluate("customer", "LG"

)

);

[잠깐] 조건 입력 후 꼭 조건입력창 밑에 있는 ‘Eval’버튼을 클릭하셔야 조건식이 입력됩니다.

* 다음은 기업 내부의 프로세스 구현에 좋은 몇가지 유용한 액티비티들을 더 소개합니다.

Copyleft© 2003-2004 Jinyoung Jang | 31

Page 32: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

MSN 메신저로 작업알림 (MessengerActivity)

MSN 메신저로 신규작업건에 대한 작업요청을 uEngine이 메시징할 수 있습니다. 액티비티 패

널에서 ‘MessengerActivity’를 클릭하신 후 적절한 위치 (작업수행직전)에 삽입하고 다음과 같

이 설정합니다.

Contents: 메시지 내용

액티비티 이름인 ‘Name’을 제외한 그외의

내용들은 그대로 두십시오. [노트] 자동생

성된 입력창이기 때문에 입력할 필요 없거

나 입력불가능한 내용도 현재는 같이 뜹니

다.

입력의 예:

<%=projectName%>에 대한 수주건 검토 작업이 1건 있습니다. 담당자는 <%

=personInCharge%>이며, 조속히 작업바랍니다.

예처럼 내용중에 대치표시를 통해서 프로세스 변수의 내용을 반영하도록 할 수 있습니다. 자세

한 대치구문은 다음과 같습니다.

<%=프로세스 변수명%> : 지정된 프로세스 변수의 값으로 대치

Copyleft© 2003-2004 Jinyoung Jang | 32

Page 33: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

<%=Instance.InstanceId%>: 현재의 프로세스 인스턴스 ID값

<%=Activity.TracingTag%>: 현재 액티비티 scope 값

[노트] Instance.<>과 Activity.<>의 값은 리플렉션을 통해 evaluate되므로 직접

ActivityInstance.java와 Activity.java를 열어보면 어떤 값들을 참조할 수 있는 지 알

수 있습니다.

Email로 결과 통보 (EmailActivity)

마찬가지로 Email로 작업된 내용의 통보 등을 할 수 있습니다.

title: 메일 제목

content: 메일 내용

[노트] MessengerActivity는 EmailActivity

를 상속하고 있으며 메시징하는 부분에서만 다

른 메커니즘을 사용토록 되어있습니다. 그래서

사용법은 MessengerActivity와 거의 같습니다.

[노트] uEngine은 웹서비스 기반의 워크플로 엔진이기 때문에 직접 액티비티 로직을 처리하는

코드를 최대한 담지 않게 설계되었습니다. 그 중 EmailActivity와 MessengerActivity는 각각

메시징을 위해 미리정의된 웹서비스를 호출합니다. 이는 배포된 uEngine의 ‘axis.war’ Web

App 디렉토리에 미리 디플로이 되어있습니다. 따라서 이 두 액티비티를 위한 SMTP주소와 사

용할 메신저 아이디는 그 웹서비스의 구현소스를 수정해서 지정해주어야합니다. 초기값으로

SMTP는 localhost로 되어 있습니다. 자세한 사항은 uEngine사이트를 참조하십시오.

데이터베이스에 반영하기 (SQLActivity)

작업이 끝난 후 엑셀에 저장된 내용이 데이터베이스에 반영될 수 있다면 추후 관리나 검색에 아

주 편리할 겁니다. 또한 내부 ERP 같은 시스템에 바로 반영할 수 도 있겠습니다. UEngine에서

는 이를 위해 JDBC로 SQL을 수행할 수 있는 SQLActivity를 제공합니다.

Copyleft© 2003-2004 Jinyoung Jang | 33

Page 34: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

SqlStmt: 수행될 SQL 문장

ConnectionString: 연결할 DB

connection 명

UserId: 연결 DB의 id

Password: 연결 DB의 password

DriverClass: 연결 DB의 JDBC

driver class 명

insert문이나 update문을 사용할 수 있으며 select를 통해 얻은 값을 프로세스 변수에 반영하는

것은 아직 구현되지 않았습니다.

[노트] uEngine은 최대한 여러분이 쉽게 이해할 수 있게 하기위해 최대한 액티비티의 구현을

단순하게 하여 배포하고 있습니다. 즉, 완전한 기능의 제공이라기보다 액티비티 추가의 예를 보

여주는 성격이 큽니다. SQLActivity.java파일을 열어보면 아주 쉽습니다. <컴포넌트 기반 개발

방법으로의 uEngine>장을 참조하셔서 여러기능을 추가해 보십시오.

기업간 프로세스 구축을 위한 uEngine이번 장에서는 웹서비스를 기반으로 한 동적인 기업간 프로세스 구현을 설명합니다. 예제로서

제공되는 프로세스는 웹서비스를 동적으로 검색, 비교후 연동하며 중간에 검토과정을 통해서 사

람의 의사를 반영하기도 합니다. 이 예제는 uEngine 배포파일에 포함되어 있습니다.

예제 프로세스: 웹서비스 기반 공급망 관리

uEngine에 미리 디플로이 되어있는 프로세스 중에서 ‘Supply Chain’ 폴더의 프레세스들 중에 “

운송”프로세스를 열어봅니다.

Copyleft© 2003-2004 Jinyoung Jang | 34

Page 35: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

그림 7. uEngine 배포판에 예제로 제공되는 웹서비스 기반 SCM프로세스

웹서비스 액티비티들 (DiscoveryActivity, WebServiceActivity, ReceiveActivity)

uEngine은 웹서비스의 발견 및 연동, 호출, 결과 반영을 위해 DiscoveryActivity,

WebServiceActivity, ReceiveActivity의 3가지 액티비티 타입을 제공합니다. 먼저 각각의 액

티비티 타입의 설정 방법은 다음과 같습니다.

DiscoveryActivity

어떤 택소노미(분류)를 입력하면 UDDI를 통해 웹서비스를 검색해서 프로세스 변수에 저장해 줍

니다. 결과값을 저장할 프로세스 변수는 ‘SearchResult’ 타입으로 선언해야 합니다.

Taxonomy: 검색할 분류의 값이 든 프로세스 변수를 지정

Output: 검색한 결과가 입력될 프로세스 변수를 지정

(본 액티비티는 아직 구현되지 않았습니다)

Web ServiceActivity

웹서비스를 호출하는 액티비티입니다.

Copyleft© 2003-2004 Jinyoung Jang | 35

Page 36: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

PortType: 웹서비스 포트타입명

OperationName: 웹서비스 오퍼레이션 명

Parameters: 웹서비스 호출을 위한 파라미터들.

각각 값이 반영될 프로세스 변수를 지정해 줍니

다.

Output: 호출 결과 값을 담을 프로세스 변수 지정.

[노트] 현재는 실시간으로 웹서비스 호출을 위한 스텁 클래스의 생성이 이루어 지지 않습니다.

대신 axis의 툴을 이용해 스텁을 생성하여 uEngine의 library디렉토리에 저장해주어합니다

(Axis 툴의 사용법에 대한 한글문서를 uEngine사이트에서 다운로드 받아 보실 수 있습니다).

생성한 스텁을 uEngine에 디플로이하는 명령은 다음과 같습니다:

ant deploy2UEngine –Dparam.serviceName=<서비스 명>

ReceiveActivity

비동기식 서비스 즉, 서비스를 요청하고 시간이 경과한 후에 결과를 받을 수 있는 경우일 때, (예

를 들어 사람이 작업을 해서 결과를 돌려주는 서비스일 경우) 웹서비스에서는 주로 다시 웹서비

스를 통해서 결과를 받는 메커니즘을 사용합니다. UEngine은 ‘ReceiveActivity’를 통해 그 결

과를 웹서비스로 받아들일 수 있습니다.

Message: 결과를 얻을 메시지명. 나중에

이 이름으로 오퍼레이션 명을 만듭니다.

Output: 받아온 값이 저장될 프로세스 변

수. 이 변수의 타입을 읽어들여 웹서비스

파라미터를 만듭니다.

Copyleft© 2003-2004 Jinyoung Jang | 36

Page 37: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

프로세스를 웹서비스로 공개

이를 위해서는 프로세스 디플로이 시에 필히 axis에 디플로이하는 작업을 해주어야 합

니다. 만약 프로세스를 웹서비스로는 공개해 놓지 않았다면 프로세스 디자이너에서

‘generate service class’ 메뉴를 선택하여 디플로이 해 주십시오. 이는 다음과 같은

웹서비스 서비스 클래스를 생성하여 “jws”파일로 Axis의 서비스 디렉토리에 곧 저장

됩니다. Axis는 이 서비스클래스를 컴파일하여 곧 웹서비스를 시작시킵니다.

import org.uengine.webservice.*;

public class purchase_proc_v4_WebService extends org.uengine.webservice.ProcessWebService{

public purchase_proc_v4_WebService(){}

public void onReceive_order_result(String instanceId) throws Exception{

_sendMessage(new Object[]{instanceId, "Receive order result"});

}

}

상대편 서비스에서는 어디로 호출하는가

디플로이 된 웹서비스는 “http://host:8082/axis/<생성된 클래스명>”의 식으로 접근

가능하며 “http://host:8082/axis/<생성된 클래스명>?wsdl”을 통해 서비스 정의를 참

조할 수 있습니다. 이를 참조하여 상대편 서비스는 uEngine의 프로세스와 연동합니다.

실행중 역할 바인딩 (RoleAssignActivity)

프로세스가 흐르는 과정중에 서비스 제공자를 선정혹은 변경 할 수 있게하기 위해

‘RoleAssignActivity’를 제공합니다.

Role: 바인딩할 역할

VariableForURI: 역할할 웹서비스 엔

드포인트 URI(혹은 사람의 mail주소)

를 담고 있는 프로세스 변수

Copyleft© 2003-2004 Jinyoung Jang | 37

Page 38: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

사용자 참여

본 프로세스는 자동적으로 검색된 웹서비스들을 사람의 검토과정을 한번 더 거쳐서 최적의 제

공자를 선택할 수 있게 제공합니다. 사용자는 uEngine Enterprise Portal에 접속하여 자신에게

추가된 작업내용을 확인 후 검토과정을 처리합니다.

기업 어플리케이션 통합을 위한 uEngine<TODO>

어플리케이션 구축 툴로서의 uEngineuEngine은 큰 프로그래밍 뿐만 아니라 사용자가 직접 작업하는 단위화면을 구현하는 “작은 프

로그래밍”도 지원합니다. ‘기본 작업처리기’는 사용자를 위한 기본 웹 어플리케이션을 자동으로

생성해 주고 이를 약간 수정하여 새로운 작업처리기를 추가할 수 있습니다. 또한 ‘metaworks’

툴은 데이터베이스 어플리케이션을 쉽게 생성할 수 있는 프레임워크를 제공합니다. 이 툴들을

조합하여 개발하면 사용자 어플리케이션 개발의 생산성이 상당히 높여집니다.

기본 작업처리기(디폴트 워크아이템핸들러)

사람에 의해 이루어 지는 액티비티 1건을 워크아이템이라고 하며 uEngine은 워크아이템을 사

용자가 어떤 작업을 위한 입력 프로세스 변수을 받아들여 출력 프로세스 변수의 형식으로 결과

값을 만들어 낸다는 것으로 정의합니다. 이는 사람의 작업과 시스템에 의한 작업을 일관적으로

바라보게 합니다. 만약 사람이 하는 작업이 단순한 한 결과를 돌려주는 것이 아니라 다양한 DB

에 접근하여 처리하는 작업이라 할 지라도 그 결과를 대변하는 키 값 만을 결과로 생각합니다

(프로세스 변수는 액티비티간에 정보를 전달하는 용도로만 사용하시기 바랍니다. 퍼포먼스를

보장할 수 없기 때문에 데이터를 저장하는 공간으로 활용해서는 안됩니다).

워크아이템Input Output

데이터베이스 반영작성된 문서 등..

작업한 XML 문서작업한 키값작성된 문서의 위치..

작업할 XML문서작업을 위한 키값작성할 문서의 위치..

그림 8. 워크아이템은 입력과 출력이 있는 사람의 작업

이러한 일관적인 인터페이스는 작업환경의 자동생성을 가능케 합니다. 기본 작업처리기는 리플

렉션을 통해 처리해야 할 변수와 결과로 돌려주어야 할 변수의 타입을 표시/입력할 수 있는 기

본적인 웹 UI를 생성하여 제공합니다. 다음은 그 예를 보여줍니다.

Copyleft© 2003-2004 Jinyoung Jang | 38

Page 39: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

입 력프 로 세 스 변 수 의 값 을to S tr in g ( ) 으 로 e v a lu a te

출 력프 로 세 스 변 수 의 타 입 을리 플 렉 션 하 여 입 력 폼 생 성

[노트]기본작업처리기는 uengine-web/wih/wihDefaultTemplate에 구현되어 있습니다. 이 폴

더의 이름이 워크아이템 핸들러 이름이 됩니다. HumanActivity의 tool속성에 입력하면 그 핸들

러를 사용한 작업 건이 됩니다.

작업처리기 추가해서 만들기

기본작업처리기 폴더를 복사해서 새로운 디렉토리로 만든 후, JSP소스에 자바스크립트, JSP 스

크립트등을 추가/수정하여 목적에 맞는 추가 작업처리기를 만들어 낼 수 있습니다. 기본으로 제

공된 UI를 최대한 활용하여 특화할 부문만 개발하게 되므로 효율적인 방법이 될 수 있습니다.

데이터베이스 어플리케이션 생성기 – metaworks

metaworks는 “metadata-oriented database framework”의 줄임말로 데이터베이스에서 추출

한 메타데이터를 기반하여 SQL, UI, Web, EJB 등의 개발을 자동화 하는 프레임워크입니다.

Metaworks는 기존의 RAD툴, legacy modernizer 등이 채택하는 소스 생성방식이 아닌 객체지

향프레임워크와 컴포넌트 생성기입니다. 이는 기존의 아키텍쳐없이 하드코드를 발생시키는 툴

들과 달리 잘 설계된 디자인 패턴들을 바탕으로 재활용성, 확장성, 관리 효율 등이 우수한 컴포

넌트를 생성합니다. 예를 들어 중앙에 메터데이터만 바꾸면 연결된 기술적 구현들이 한꺼번에

일관적으로 반영됩니다. 거기에 metaworks 특유의 개발방법론인‘Customization from default

application’, ‘JIT UI personalization’등은 개발의 속도와 비용절감을 최대한으로 끌어올려줄

것입니다.

Copyleft© 2003-2004 Jinyoung Jang | 39

Page 40: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

Select

Database

DeleteUpdate

Insert

SQLs

Validation

EJBEntityBeans*

User Interaction

Form generation

Web

Swing Metadata

[노트] Metaworks는 uEngine과 sister project이며 독자적으로 동작할 수 있습니다. 보다 자

세한 설명은 www.uEngine.org/metaworks를 참조하시기 바랍니다.

Metaworks 개발 방법

Metaworks를 기반해서 다음과 같은 단계로 어플리케이션을 개발합니다.

1. 데이터베이스에서 테이블, 필드, 관계등의 메터데이터를 추출하여 xml로 생성

2. 그 데이터베이스 내의 테이블들의 기본적 처리(Create/Read/Update/Delete, form

generation, user interaction, validation, error control등…)를 위한 ‘default

application’을 생성 (xml로 직렬화됨)

3. UI Type, field Label, size등을 xml파일을 열어서 변경 설정

4. 설정으로 할 수 없는 프로그래밍이 필요한 부분은 적절한 서브클래스를 생성해서 컴포

넌트 교체

5. 3,4 단계 혹은 처음부터 반복하여 어플리케이션 완성

각 단계에서 생성시키는 xml파일들은 모두 프레임워크내의 객체를 xml를 직렬화한 것이므로

결국은 일종의 컴포넌트라고 볼 수 있습니다. 이는 편집과정을 거쳐 UI설정, 특화된 SQL등이

반영되며 실행시에 다시 역직렬화되어 metaworks 컴포넌트 프레임워크내에서 불려져 작용하

게 됩니다.

Metaworks의 사용법

현재 metaworks는 아키텍쳐적으로 여러 데이터베이스들을 지원할 수 있지만 현재는 Oracle만

지원합니다. 모든 metaworks의 컴포넌트 생성 관련툴은 아직 GUI가 제공되지 않고 ant 명령을

통해 제공됩니다.

설명은 모두 Oracle의 기본 예제 데이터베이스인 scott계정을 이용하여 이루어질 것입니다.

Copyleft© 2003-2004 Jinyoung Jang | 40

Page 41: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

Table (metadata) XML 들의 생성

가장 처음의 단계는 이미 설계되어 있는 데이터베이스에서 메터데이터를 얻어와 Table 객체로

만들어야 합니다. 이 작업을 위해서 target <generateTable>을 제공합니다.

ant generateTable –Dparam.connStr=jdbc:oracle:thin:@localhost:1521:pongsor2 –Dparam.userId=scott –

Dparam.password=tiger –Dparam.projectName=legacyERP

위와 같이 데이터베이스 설정과 프로젝트명을 입력해서 실행시키면 tables/legacyERP 디렉토

리아래 scott계정 내에 들어있는 테이블이름들로 된 xml이 생기게 됩니다. 각 파일들을 열어보

면 그 테이블의 필드내용, 키 값, 다른 테이블과의 관계 등이 저장되어 있음을 알 수 있습니다.

나중에 적절히 이 값들을 변경하여 어플리케이션에 반영할 수 있습니다.

Application (metadata) XML들의 생성

이제 생성된 테이블 정보들을 바탕으로 이를 기본적으로 입력,조회,수정,삭제할 수 있는 기본 어

플리케이션 (default application)을 생성할 수 있습니다. 이를 위해 target

<generateApplications>를 제공합니다.

ant generateApplications –Dparam.projectName=legacyERP

위와 같이 프로젝트명을 입력해서 실행시키면 application/legacyERP 디렉토리아래 각 테이블

이름들로 된 xml이 생기게 됩니다. 각 파일들은 각 테이블을 위한 어플리케이션 객체들이며 이

를 열어보면 어떤 클래스를 이용하고 어떤 설정들로 수행할 것인지가 저장되어 있습니다.

default desktop 수행해보기

ant target <defaultDesktop>으로 제공되는 ‘기본 데스크탑’은 생성된 어플리케이션들을 열어

서 테스트해 볼 수 있는 기본 구현을 해놓은 MDI환경입니다.

Copyleft© 2003-2004 Jinyoung Jang | 41

Page 42: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

왼쪽에는 사용할 수 있는 어플리케이션의 목록이 배치되고 그 중 한 어플리케이션을 클릭하면

오른쪽에서 처럼 내부 프레임으로 어플리케이션이 launch됩니다. 기본 데스크탑은 일종의 템플

릿이며 여러분이 직접 소스를 수정해서 요구에 맞도록 수정해서 사용하면 됩니다.

어플리케이션의 수정

이미 생성된 기본 어플리케이션들의 기능만으로도 대부분의 작업들을 할 수 있지만 좀더 조작

이 편하고 고객의 요구에 밀접한 어플리케이션을 제공하기 위해 커스트마이징 작업을 할 수 있

습니다. Metaworks 커스트마이징은 몇가지 수준을 두어 생산성과 Customizability를 조율할

수 있도록 합니다.

Customization level 1: 메타데이터의 수정 (Table xml의 수정)

필드 레이블, 입력 사이즈, 입력 방법, 검증방법, 관계설정 등이며 이 변경은 이 테이블

을 참조하는 모든 리소스(어플리케이션)에 동시에 반영됩니다.

Customization level 2: Application XML의 수정 (설정수준)

어플리케이션에만 영향을 미치며 어플리케이션 명, 종류, 초기 로딩 데이터 값, 퍼포먼

스등을 위한 특화된 SQL문 등을 설정할 수 있습니다.

Customization level 3: 없던 컴포넌트를 추가하여 어플리케이션 클래스명 교체

기존에 제공된 어플리케이션들의 설정만으로 요구하는 기능이 제공되지 않을 때

DefaultApplication을 상속 혹은 가장 근접한 어플리케이션 컴포넌트를 상속하여 새

어플리케이션 컴포넌트를 등록한다. 프로그래밍 가능하므로 어떤 기능이든 구현해 넣

을 수 있다.

자세한 커스트마이징 방법은 metaworks 프로젝트 사이트를 참조하시고 여기서는 간단히 필드

레이블과 입력 방법의 수정 (level1), 없던 어플리케이션으로 변경(level3) 부분에 대한 예제를

제공하겠습니다.

<TODO>

Copyleft© 2003-2004 Jinyoung Jang | 42

Page 43: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

이는 “최대한 기본적인 설정으로 구현을 마치고 특화할 부분만 손을 댄다”라는 전략입니다.

웹으로 연결

이렇게 자동개발된 metaworks application은 Java Web Start를 통해서 웹환경에서 바로 사용

할 수 있습니다. UEngine에서는 metaworks application을 위한 work item handler를 제공합

니다 (uengine-web.war/wih/applicationHandler 에서 찾으실 수 있습니다. Work item

hadler의 추가에 대해서는 []장을 참조하시기 바랍니다). Metaworks로 어플리케이션을 생성하

고 테스트를 완료했으면 여러분이 생성한 메타데이터들을 네트워크로 참조하여 metaworks가

동작할 수 있도록 tables, applications디렉토리를 uengine-web.war/wih/applicationHandler

에 복사해 주어야 합니다.

uEngine의 액티비티로 사용하기 – MetaworksActivity

Metaworks의 데모를 위해 ‘metaworks.Bean’ 프로세스 정의를 제공하고 있습니다.

프로세스는 Oracle 테스트 계정에서 제공되는 테이블인 ‘SALES’와 ‘BONUS’를 관리하는 두 단

계의 액티비티로 이루어집니다. 각 액티비티 설정을 보면 ApplicationName에 metaworks에서

생성한 어플리케이션 명을 지정해주고 있습니다. 실행시에는 업무처리기에 metaworks default

desktop이 Java Web Start로 구동되어 사용할 어플리케이션을 제공합니다.

컴포넌트 기반 개발 툴로서의 uEngineuEngine은 지속적으로 새로운 액티비티 타입을 추가시켜 확장할 수 있는 컴포넌트 프레임워크

를 기반하고 있습니다. 이러한 특징은 한번 프로젝트에 한번 반영된 경험을 컴포넌트의 형식으

로 누적되게 하는 효과를 줌으로써 다른 개발자가 한번 경험한 시행착오와 개발작업을 다시 반

복하지 않도록 하고 생산성과 품질을 동시에 확보하게 합니다.

Copyleft© 2003-2004 Jinyoung Jang | 43

Page 44: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

uEngine 특유의 컴포넌트식 개발방법과 워크플로의 검증된 분석/개발 방법론은 안정되고 보

장된 컴포넌트 기반 개발 방법론이 됩니다. 이는 다른 컴포넌트 기반 개발 방법론들과 유사하지

만 워크플로의 비즈니스 프로세스 우선의 시각에서 컴포넌트가 개발될 수 있도록 유도하게 됩

니다. 즉, 워크플로라는 효율적이고 검증된 개발 방법론에 입각하여 컴포넌트를 형식화하게 되

므로 좀더 비즈니스 환경에 재활용 가능폭이 넓은 컴포넌트를 생산하게 된다는 것입니다.

UEngine의 하부에는 Open Kernel Framework(이하 OKF)을 기반하고 있습니다. 이를 바탕

으로 컴포넌트를 추가하면 Design, deploy, enact, monitor 단계에 이어지는 워크플로 생명주

기 상의 시스템적인 지원이 이루어집니다. 이는 개발자에게 새로운 기능을 추가하기 위한 일관

적인 가이드라인이 되며 시스템이 안정되게 운영될 수 있도록 합니다.

다음과 같은 경우가 새로운 컴포넌트를 추가할 예시 상황입니다.

- 새로운 시스템과의 연동을 위한 컴포넌트: 예를 들어 SAP ERP와의 연동을 위한

‘SAPActivity’같은 것이 필요할 경우

- 기존에 만들어놓은 자바 클래스를 워크플로의 액티비티로 만들어 쓰고 싶은 경우

- 자주 사용되는데도 불구하고 개발자가 각각 만들어쓰게 되는 공통 컴포넌트

uEngine 컴포넌트 프레임워크 – Open Kernel Framework

아래 UML은 OKF의 전반적인 위임형식의 동작 과정을 보여주고 있습니다.

ActivityTypeProcess Designer Admin PortalEnactment Server

1 : ()2 : ()

3 : ()

4 : ()

5 : ()

6 : ()7 : ()

8 : ()9 : DB ()

10 : ()

11 : ()

12 : ()

Object6 : ActivityInstance

13 : ()

14 : ()

15 : UI ()

그림 9. ‘로직에 대한 위임’ 스타일의 Open Kernel Framework 동작

워크플로 생명주기에 필요한 Design, Validation, Monitoring, Viewing, Persistence,

Copyleft© 2003-2004 Jinyoung Jang | 44

Page 45: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

Execution control과 같은 작업들은 프레임워크의 커널(kernel; hot-spot)이 주도해서 동작시

키게 되고 동작과정에서 필요한 ActivityType에 액티비티 수행과 관련된 속성과 로직을 호출해

서 관리하는 형식입니다. 이는 어플리케이션 로직과 워크플로 시스템 로직간의 분리를 이루어

상호연관성을 최소화합니다. 이를 통해 개발자는 속성을 작성하는 형식과 각 상황에 따른 로직

을 인터페이스 형식에 맞추어 구현만 해주면 관련기술에 대한 지식없이도 안정되고 자동 관리

되는 환경에 새로운 액티비티를 추가할 수 있게됩니다.

다음은 그러한 액티비티 타입 컴포넌트의 객체 모델을 보여주고 있습니다. 이 모델은 이미 잘

알려진 ‘Composite Pattern’를 확장한 모델입니다.

Activity

ComplexActivity

+child activit ies

All Switch While Sequence

AssignExcelWebService ….

...

Simple Activity Types

Complex Activity types

Open Kernel Framework

그림 10. uEngine의 액티비티 컴포넌트 객체 구조

이러한 ‘내용과 그릇을 동일시’하는 객체모델은 블록 형식의 흐름모델을 잘 저장할 수 있도록 설

계되었으며, 단순 액티비티 (수행로직만 담는) 뿐만 아니라 콤플렉스 액티비티 (액티비티간 흐

름로직을 갖는) 또한 추가하기 쉽도록 합니다. 이는 또한 OKF전반에 걸쳐 여러가지 컴포넌트의

추가를 쉽고 간결하게 이룰 수 있는 좋은 기반이 됩니다. (OKF및 Composite Pattern에 대한

참고자료를 uEngine사이트에서 더 많이 찾으실 수 있습니다)

또한 컴포넌트 구조로 자바빈즈의 setter/getter형식을 따르고 있어, 리플렉션을 통한 디자인

타임 지원을 가능케합니다. 즉, uEngine Process Designer는 일종의 Bean-box와 같은 방식으

로 동작하여 자바빈즈형식으로 된 액티비티 타입을 편집할 수 있는 폼을 자동 생성하고 값을 지

정해 줍니다. 개발자는 AWT나 스윙과 같은 기술을 몰라도 이 형식만 따라서 액티비티 타입을

만들면 됩니다.

새로운 액티비티 타입의 추가

자, 그러면 실제로 새로운 액티비티 타입을 추가해 봅시다. 다음은 SQL문장을 수행하는 액티비

티로 uEngine에 이미 내장되어 제공되는 액티비티 타입입니다.

package org.uengine.kernel; //이 패키지명으로 정의하셔야 합니다.

Copyleft© 2003-2004 Jinyoung Jang | 45

Page 46: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

import java.sql.*;

import javax.sql.*;

import org.uEngine.contexts.TextContext;

import java.io.*;

public class SQLActivity extends DefaultActivity{ //DefaultActivity를 상속하여 만듭니다.

//Activity 속성의 정의 /////////////////////////////

//----------------------------------------------------------

// 각 속성은 자바빈즈 스타일로 setter/getter를 만들어주도록 합니다.

// 이를 통해 디자이너와 모니터가 리플렉션을 통해 자동적으로 접근할 수 있습니다.

TextContext sqlStmt;

public TextContext getSqlStmt(){

return sqlStmt;

}

public void setSqlStmt(TextContext value){

sqlStmt = value;

}

String connectionString;

public String getConnectionString(){

return connectionString;

}

public void setConnectionString(String value){

connectionString = value;

}

String userId;

public String getUserId(){

return userId;

}

public void setUserId(String value){

Copyleft© 2003-2004 Jinyoung Jang | 46

Page 47: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

userId = value;

}

String password;

public String getPassword(){

return password;

}

public void setPassword(String value){

password = value;

}

String driverClass;

public String getDriverClass(){

return driverClass;

}

public void setDriverClass(String value){

driverClass = value;

}

//Activity constructor declarations /////////////////////////////

//---------------------------------------------------------------

// 디자이너가 인스턴스를 자동생성하기 위해

// 액티비티의 빈 파라미터로 된 생성자를 만들어 주어야 합니다.

public SQLActivity(){

super("SQL activity");

setDriverClass("org.hsqldb.jdbcDriver");

setConnectionString("jdbc:hsqldb:hsql://localhost:1701");

setUserId("sa");

setPassword("");

}

//Instance property declarations ////////////////////////////////

//---------------------------------------------------------------

Copyleft© 2003-2004 Jinyoung Jang | 47

Page 48: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

// In the initiation process of the activity, this method is first passed with the ActivityInstance object.

// Activity component allocates their instance repository by implementing this method.

public ActivityInstance createInstance(ActivityInstance instanceInCreating) throws Exception{

super.createInstance(instanceInCreating);

//Make a space to store the instance property for result log

instanceInCreating.set(getTracingTag(), "resultLog", "");

return instanceInCreating;

}

//Activity logic declarations ///////////////////////////////////

//---------------------------------------------------------------

// The activity's logic should be implemented here.

// When the framework calls this method, it passes the ActivityInstance object containing the process instance data

public void executeActivity(ActivityInstance instance) throws Exception{

Class.forName(getDriverClass());

Connection con = DriverManager.getConnection(getConnectionString(), getUserId(), getPassword());

PreparedStatement prepStmt = con.prepareStatement(getSqlStmt().parse(this, instance));

//prepStmt.executeUpdate();

ResultSet rs = prepStmt.executeQuery();

if(rs.next()){

ByteArrayOutputStream resultLog = null;

try{

ResultSetMetaData rmeta=rs.getMetaData();

for(int i=1; i<=rmeta.getColumnCount(); i++){

String fieldName = new String(rmeta.getColumnName(i));

instance.set("", fieldName, (Serializable)rs.getObject(fieldName));

Copyleft© 2003-2004 Jinyoung Jang | 48

Page 49: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

}

}catch(Exception e){

...

e.printStackTrace(new PrintStream(resultLog));

}

if(resultLog!=null)

instance.set(getTracingTag(), "resultLog", resultLog.toString());

}

prepStmt.close();

//When the activity is successfully completed, programmer should explicitly notify that.

//it because the end of 'executeActivity' method does not always means the

//completion of the activity. for example, human activity.

fireComplete(instance);

}

//Instance information provider /////////////////////////////////

//---------------------------------------------------------------

// When the administration tool need to get the activity status, this method is invoked.

public Map getActivityDetails(ActivityInstance inst){

Hashtable details = (Hashtable)super.getActivityDetails(inst);

details.put("actual executed SQL", );

return details;

}

}

이렇게 새로운 액티비티를 만들어 컴파일 하고 또한 이 액티비티를 대변할 아이콘 이미지를 액

티비티 이름과 동일하게 만들어 이미지 디렉토리에 저장해줍니다. 프로세스 디자이너를 다시 구

동시키면 다음과 같이 사용할 수 있도록 추가됩니다.

Copyleft© 2003-2004 Jinyoung Jang | 49

Page 50: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

또한 모니터링 때는 다음과 같이 화면이 제공됩니다.

<monitor image>

새로운 콤플랙스 액티비티 타입의 추가

여러분이 액티비티간의 흐름(혹은 그것들에 대한 관리)에 대한 로직을 작성할 수 있는 콤플렉스

액티비티를 추가할 일은 거의 없을 것입니다. 대부분의 흐름은 이미 제공된 Sequence, All,

Switch 액티비티들의 조합으로 모두 나타낼 수 있기 때문입니다. 이 절에서는 간단하게 이 내용

을 다루도록 하겠습니다. 단순 액티비티가 ‘DefaultActivity’를 상속했지만 콤플렉스액티비티는

‘ComplexActivity’를 상속합니다. ComplexActivity에는 자식으로 추가되는 액티비티들에 대

한 접근이 가능합니다. 단순 액티비티가 executeActivity에 직접수행할 로직이 들어가는 반면

콤플렉스 액티비티는 각 자식 액티비티들의 흐름을 컨트롤 하는 관리로직이 들어가게 됩니다.

package org.uengine.kernel;

import java.util.*;

public class SwitchActivity extends ComplexActivity{

//각 자식 액티비티들에 대한 조건

Condition [] conditions;

public Condition[] getConditions(){

return conditions;

}

Copyleft© 2003-2004 Jinyoung Jang | 50

Page 51: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

public void setConditions(Condition[] value){

conditions = value;

}

Activity defaultActivity;

public Activity getDefaultActivity(){

Vector childs = getChildActivities();

defaultActivity = (Activity)childs.elementAt(childs.size()-1);

return defaultActivity;

}

public SwitchActivity(){

super();

setName("Switch");

}

protected void executeActivity(ActivityInstance instance) throws Exception{

boolean bMatchEvenOnlyOnce = false;

int i=0;

Vector childActivities = getChildActivities();

for(Enumeration enum = childActivities.elements(); enum.hasMoreElements(); ){

Activity child = (Activity)enum.nextElement();

if(!enum.hasMoreElements()) break;

if(conditions[i]==null)

throw new UEngineException("Condition must be specified.", "Some of

conditions need to evaluate the transition is empty.");

if(conditions[i].isMet(instance, "")){

bMatchEvenOnlyOnce = true;

queueActivity(child, instance);

}

Copyleft© 2003-2004 Jinyoung Jang | 51

Page 52: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

i++;

}

if(!bMatchEvenOnlyOnce){

queueActivity(getDefaultActivity(), instance);

}

}

protected void onEvent(String command, ActivityInstance instance, Object payload) throws Exception{

//자식이 완료되었다는 통보가 오면 스위치 액티비티도 완료

if(command.equals(CHILD_DONE)){

fireComplete(instance);

}else

super.onEvent(command, instance, null);

}

//디자이너가 검증할 때 사용됨.

public ValidationContext validate(){

ValidationContext validationContext = super.validate();

if(getChildActivities()!= null)

if(getConditions()==null || getChildActivities().size() != getConditions().length){

validationContext.add(getActivityLabel()+" all of conditions for each child activity must be

specified." );

}

return validationContext;

}

}

콤플렉스 액티비티의 디자인 커스트마이징은 아이콘 파일의 추가만으로 가능한 단순 액티비티

보다 조금 더 복잡합니다. 다음과 같이 디자이너 컴포넌트도 같이 생성해 주어야 합니다.

// <SwitchActivityDesigner.java>

package org.uengine.processdesigner;

Copyleft© 2003-2004 Jinyoung Jang | 52

Page 53: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

import org.uengine.kernel.*;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.util.*;

public class SwitchActivityDesigner extends AllActivityDesigner{

public SwitchActivityDesigner(){

super();

}

protected void initialize(){

super.initialize();

//기존 디자이너 컴포넌트의 앞에 스위치 아이콘 만 끼움

add(new ActivityLabel("switchActivity"), 0);

}

}

또한 모니터링 때 화면에 보여질 Viewer를 다음과 같이 만들 수 있습니다.

package org.uengine.admin.viewers;

import org.uengine.kernel.*;

import java.util.*;

public class SwitchActivityViewer extends AllActivityViewer{

public StringBuffer render(Activity activity, ActivityInstance, Hashtable options){

StringBuffer sb = super.render();

sb.insert(0, "<img src=images/SwitchActivity.gif>");

return sb;

}

}

[노트]보다 자세한 뷰어 및 디자이너 컴포넌트의 추가 방법은 uEngine 사이트를 참조하십시오.

Copyleft© 2003-2004 Jinyoung Jang | 53

Page 54: uEngine 사용자 가이드uengine.sourceforge.net/files/uengine_user_guide.pdf · 소개 요즘의 e-비즈니스 환경은 웹서비스와 같은 네트워크 어플리케이션들의

자주 사용하는 조합은 하나의 컴포넌트로

<TODO>

‘비를 맞을수록 자꾸 더 커지는 우산’ – uEngineuEngine은 BPM(워크플로)의 추상적이고 목표지향적인 개발방법론을 통해 기업내 작은 업무환

경의 구축에서 기업 외부에 이르는 기업간 거래, 어플리케이션의 통합의 영역까지 쉽고 확장적

이게 지원합니다. 또한 빠르게 성장하고 있는 웹서비스를 쉽고 빠르게 통합하고 서비스의 재조

합으로 새로운 서비스(프로세스)를 제공할 수 도 있는 실시간 인터넷 비즈니스 환경입니다.

내부의 플러그인식 컴포넌트 설계는 기민하게 성장, 변화하는 기술들을 지속적으로 반영해 갈

수 있는 유연한 환경을 제공합니다. 이 성장형의 시스템을 바탕으로 많은 프로젝트에 적용되어

컴포넌트가 추가될수록 점점 코딩이 필요했던 개발영역을 워크플로 기반 개발로 자동화시켜 갈

것입니다. 이는 언젠가 ‘코드 한줄 없는 개발’이라는 BPM의 이상을 실현해 줄 것입니다. 기존의

BPMS들이 프로세스 운영과 개발에 필요한 많은 노력을 덜어주고 안정적인 환경을 제공하는 “

큰 우산”을 지향 한다면 uEngine은 프로젝트에 진행될수록 기능이 추가되어 더욱 좋은 환경으

로 성장하는 “비를 맞을수록 커져가는 우산”을 지향합니다. 언젠가 uEngine은 어떠한 환경도

따라잡을 수 없는 정말 ‘좋은 우산’이 될 것입니다.

지금, ‘비를 맞으면 계속 좋아지는 우산’, uEngine 속으로 들어오십시오!

ReferencesCSC. Computer Sciences Corporation (2004). “Open Source: Open for Business”, Leading Edge Forum

Report 2004, from http://www.csc.com/features/2004/uploads/LEF_OPENSOURCE.pdf

Hendler, J., Agents and the Semantic Web, IEEE Intelligent Systems, March/April, 2001IBM Corp. (2000). Web Services Conceptual Architecture (WSCA 1.0). http://www.ibm.com

WfMC. Workflow Management Coalition (1995). The Workflow Reference Model: Document Number

TC00-1003, from http://www.wfmc.org.

http://www.uengine.org

http://uengine.sourforge.net

Copyleft© 2003-2004 Jinyoung Jang | 54