'분류 전체보기'에 해당되는 글 539건

  1. 2005.08.08 Jython을 사용하여 Apache Derby 데이터베이스에 연결하기
  2. 2005.08.08 성공하는 기업의 비전 - 실시간 기업(Real-Time Enterprise) 구현
  3. 2005.08.08 [BPM] BPM 실행을 위한 체크포인트와 기술요소 및 성공 요소
  4. 2005.08.08 [BPM] BPM의 실행 과정과 프로세스 성과 관리
  5. 2005.08.08 [BPM] BPM의 출현 배경과 의미
  6. 2005.08.05 Give Your Business Logic a Framework with Drools
  7. 2005.08.04 Drools Spring Tutorial
  8. 2005.08.03 How does ActiveMQ compare to JBossMQ 1
  9. 2005.08.03 [svn] SVN + Eclipse Subclipse
  10. 2005.08.02 Where is BPEL 2.0 going? 1
  11. 2005.08.02 ESB vs SOA 1
  12. 2005.08.02 Mule에서의 JMS 사용을 위한 설정
  13. 2005.07.30 [사설] SOA시대의 준비1 (ServiceMix와 Mule) 3
  14. 2005.07.29 SEDA : An Architecture for Highly Concurrent Server Applications 1
  15. 2005.07.25 XML Bing 벤치 마크 결과..
  16. 2005.07.25 caching 관련 Spring Module
  17. 2005.07.25 Support for JSR-94 Rules Engines
  18. 2005.07.25 [사설] SOA 시대로의 전환, 그러나 ...
  19. 2005.07.20 Java Business Integration
  20. 2005.07.19 MDB를 사용하지 않고 Spring을 사용하는 이유..
  21. 2005.07.19 POJO Application Frameworks: Spring Vs. EJB 3.0
  22. 2005.07.19 [spring] Message-Driven POJOs
  23. 2005.07.16 JBI 1.0 Spec 1
  24. 2005.07.08 JMS 1.0.2b -> 1.1 1
  25. 2005.07.05 Java Boutique
  26. 2005.07.01 BPM 표준 언어 2
  27. 2005.07.01 [POSA] MicroKernel 의 적용 사례
  28. 2005.06.19 Persistence와 POJO: 오브젝트 및 관계형 모델의 통합
  29. 2005.05.23 [기사] ZDNet의 BPM
  30. 2005.05.23 BPM 열기 속 BAM도 관심 주목

Bob Gibson
소프트웨어 엔지니어 고문, IBM
2005년 2 월 17 일

Jython으로 프로그래밍을 하면 Python의 장점을 활용하면서 자바 패키지 및 기능들로 접근을 관리할 수 있다. Apache Derby 관계형 데이터베이스에 접근하고 이를 조작하는데 Jython이 어떻게 사용되는지 살펴본다.
Posted by 아름프로
성공하는 기업의 비전
- 실시간 기업(Real-Time Enterprise) 구현


기업의 비즈니스는 점점 더 많은 고객사와 협력업체 그리고 구매업체들이 연결되어 갈수록 복잡해 지고 있습니다. 이러한 상황에서 성공적인 기업 비즈니스를 위해서는 고객의 요구나 새로운 기회에 대한 신속한 파악 및 포착, 그리고 민첩한 대응이 절대적으로 필요합니다. 따라서 기업들은 하부조직에서부터 최고 의사결정권자에 이르기까지 모든 정보와 지식이 실시간으로 공유되는 실시간 기업(RTE; Real-Time Enterprise)으로의 변화가 무엇보다 필요합니다.



RTE란 무엇인가?


가트너 그룹은 RTE의 개념에 대해 원가 절감과 프로세스 효율화의 핵심 요인을 정보의 실시간성과 프로세스의 지연 방지로 보고 RTE를 '실시간 정보를 기초로 핵심 비즈니스 프로세스를 관리, 실행함에 있어서 여러가지 지체 현상을 지속적으로 제거함으로써 경쟁력을 극대화하는 경영방법'이라고 정의하고 있습니다.



이 정의에는 3가지의 중요한 요소가 있습니다. 첫째는 '실시간 정보'입니다. 실시간 정보라는 말을 기술적으로 풀어 보면 실시간으로 정보를 처리하고, 반응할 수 있어야 한다는 뜻입니다. 두번째는 '관리 및 실행'입니다. 즉 이전에는 IT(Information Technology; 정보 기술) 시스템을 주로 관리의 측면에서 바라 보았지만, 이제는 실행 측면에서도 신중하게 고려해야 한다는 것입니다. 그리고 마지막으로 '비즈니스 프로세스'입니다. 이는 RTE가 시스템 혹은 사람에 중점을 둔 경영방법이 아니라 기업의 핵심 프로세스에 기반을 둔 경영방법이라는 것입니다.



즉 RTE는 하나의 문제를 해결하기 위한 또 다른 기술이 아니라 비즈니스 프로세스를 향상시키고자 하는 개념입니다. RTE는 기업들이 지금껏 추구해왔던 e-비즈니스와 연계하면서 끊임없이 프로세스를 효율적으로 개선해 나가고자 하는 것을 의미합니다.



왜 RTE인가?


기업은 지금까지 '경쟁력 강화' 측면에서 IT에 대한 투자를 아끼지 않았습니다. 그러나 갈수록 경쟁이 심화되는 상황에서 최상의 IT 시스템을 갖고 있다고 하더라도 데이터가 조직, 프로세스 및 의사결정에 아무런 영향을 미치지 않는다면 쓸모가 없습니다. 또한 경영자의 입장에서 IT에 대한 투자 역시 명확한 ROI(Return on Investment; 투자 회수)와 TCO(Total Cost of Ownership; 총소유비용)에 대한 계획이 필요합니다. 이는 달리 말하면 기업이 지속적인 확장에 초점을 맞추기 보다 수익 구조 강화를 통한 기업의 내실화에 초점을 맞추기 시작했다는 것을 의미합니다.



RTE로의 변화는 ERP(Enterprise Resources Planning; 전사적 자원 관리)·DW(Data Warehouse)·CRM(Customer Relationship Management; 고객 관계 관리)·SCM(Supply Chain Management; 공급망 관리)·CMS(Content Management System; 컨텐츠 관리 시스템) 등 현재의 솔루션과는 다른 별개의 솔루션을 요구하는 것이 아니라 현재 IT 기업이 제공하는 각 서비스를 리얼타임 엔터프라이즈라는 모델과의 적합성을 유지하도록 정의하고 통합하는 것입니다. 따라서 RTE는 기업이 기존 시스템에 대한 ROI와 TCO에 대해 한결 명확한 계획을 수립할 수 있습니다.



또 비즈니스 전략 측면에서도 기업은 환경, 경쟁자 또는 소비자에게 미치는 영향에 대한 피드백과 기업이 전략적 목표를 적절히 달성하는지를 확인해 주는 실시간 정보를 획득해 대응해 나가는 것이 중요합니다. RTE로의 변화는 기업의 모든 정보를 실시간으로 처리하고 모니터링 함으로써 기업의 비즈니스 프로세스 전체에 대한 상황과 정보를 실시간으로 파악하게 됨으로써 기업이 효과적으로 변화하는 환경에 대처할 수 있도록 하고, 향후 비즈니스 전략을 수립하는데 있어서도 비즈니스 민첩성이 향상되도록 합니다.



성공하는 기업의 비전- Real Time Enterprise


RTE에 대한 개념은 최근에 등장한 개념이지만, RTE에 대한 사례는 어렵지 않게 찾아 볼 수 있습니다. 특히, 델의 최고 경영자(CEO)인 마이클 델은 1999년에 발표한 그의 저서 '다이렉트 경영(Direct from DELL)'에서 다음과 같이 다이렉트 방식에 대해 이야기하고 있습니다. "델은 불필요한 중간 단계 없이 고객에게 직접 컴퓨터를 팔고, 제조업체와 직접 거래하고, 사람들과 직접 의견을 나누었다. 우리는 그것을 "다이렉트 방식"이라고 부른다." 여기서 이야기하는 '다이렉트 방식'은 RTE의 델 버전이라고 할 수 있습니다.



시스코의 사례도 주목해 볼 필요가 있습니다. 시스코는 공장에서 제품 조립의 모든 공정을 처리하던 기존의 방식에서 반 제품을 물류업체인 페덱스(FedEX)의 물류센터에서 완전하게 조립함으로써 보다 더 빠르게 고객의 수요에 대응할 수 있는 시스템을 만들었습니다. IT 시스템은 이러한 사례들처럼 비즈니스의 변화를 빠르게 적용할 수 있어야 합니다. RTE는 비즈니스와 IT시스템이 함께 동기화되어서 변화하는 것을 의미합니다.



또 다른 사례로는 자동차회사 포드를 들 수 있습니다. 포드사는 신제품의 디자인에 걸리는 시간을 기존의 7년에서 4년으로 줄였으며 이를 통해 1년간 12억 달러의 비용을 절감할 수 있었습니다. 품질은 50% 이상 향상시킬 수 있었다고 합니다. GM에서는 디자인 시간을 18개월로 단축했는데, 이것이 가능해지기까지 시스템간의 통합이 크게 기여했음은 물론입니다.



이러한 사례들은 아직까지 기업간의 협업 시스템보다는 기업 내부의 프로세스에 관련되어 있습니다. 하지만 최근 삼성전자는 GSBN(Global Samsung Business Network)이라는 서울 본사와 해외지사는 물론 해외 협력업체들과 실시간으로 신제품정보, 구매계획을 공유하고 제품도착 예정일, 마케팅비용정산 및 통관 등의 업무도 하나의 통합사이트 에서 원스톱으로 처리할 수 있게 하는 포탈시스템을 개발 하였습니다. 이를 통해 삼성전자는 판매 경쟁력 강화를 통한 제품 판매 이익 증대는 물론 리드 타임 단축과 중복 업무 최소화를 통한 원가 절감 효과를 기대하고 있습니다.



이제 기업은 기존의 시스템이 핵심 비즈니스 프로세스를 반영하고 있는지, 고객의 요구에 실시간으로 대응하고 처리할 수 있는지, 협력사와의 빠른 정보 공유가 가능한지에 대해 검토해야 할 것입니다. 그보다 더 중요한 것은 새로운 비즈니스 기회가 생겼을 때, 얼마만큼 빠르게 대응하여 새로운 비즈니스를 창출할 수 있는가라는 문제일 것입니다. 변화에 느리게 대응한다는 것은 곧 비즈니스 기회를 잃어 버린다는 의미가 될 것입니다.




Posted by 아름프로
  
BPM(3회)

BPM 실행을 위한 체크포인트와 기술요소 및 성공 요소

-- 출처: 컴퓨터 월드
전희철
리얼웹 중앙연구소 소장
jhc@realweb21.com

연/재/목/차

1회. BPM의 출현 배경과 의미
2회. BPM의 실행 과정과 프로세스 성과 관리
3회. BPM 실행을 위한 체크포인트와 기술요소, 구현 방안(이번호)
4회. BPM에 대한 진실과 거짓, 그리고 성공요소


7. BPM 선택을 위한 주요 체크 포인트(check point)
1) BPM에 대한 목적을 명확히 하고 핵심 역량을 충분히 양성한 뒤 제품을 선정해야 한다 : BPM은 단순히 솔루션만 도입한다고 달성되는 것이 아니다. 현업의 많은 참여가 요구되며, BPM 시스템 도입 후에도 계속해서 점진적 개선을 위해 전 직원이 참여할 때, 가장 큰 효과를 거둘 수 있다. 따라서 BPM 도입을 위한 사전 준비가 철저히 되어 있을수록 빠른 시간 안에 효과를 거둘 수 있을 것이다.

2) BPM은 IT적으로 접근해서는 안 되며 비즈니스 담당자가 프로세스를 다룰 수 있도록 해야 한다 : BPM을 IT적인 시각으로 접근해서는 시스템 활용도 저하에 따른 실패 가능성이 높아지고, 현업의 참여율이 저조할 가능성이 있다. BPM은 철저히 현업 담당자가 프로세스를 직접 다룰 수 있도록 비즈니스 측면에서 접근해야 한다. IT부서는 현업을 리드하는 것이 아니라 현업의 요구 사항을 최대한 반영하는 시스템 구현을 목표로 해야 한다.

3) BPM 솔루션 제공 업체마다 BPMS의 정의가 다르며 이에 따라 제공되는 기능도 상이하므로, 목적에 맞는 제품을 선정해야 한다 : BPMS의 정의는 BPM을 표방하는 업체마다 다르므로, 제품 선정 시 가장 먼저 눈 여겨 봐야 할 부분은 솔루션 제공 업체의 ‘BPM에 대한 정의’이다. 이 정의가 현재의 비즈니스 필요성에 가장 부합되는 업체의 제품을 선정해야 한다.

4) 목적에 따라 다를 수 있으나, 일반적으로 웍플로우(Workflow) 또는 기업애플리케이션통합(EAI) 만으로는 BPM을 구현할 수 없다. 또한 웍플로우 + EAI만으로도 BPM을 구현할 수 없다. 프로세스 라이프 사이클에 걸친 기능을 지원하는지를 잘 판단해야 한다. 일부 웍플로우 업체 또는 EAI 업체는 기존의 웍플로우, EAI를 단순히 BPM으로 포장하여 제공하는 경우가 있다. BPM은 웍플로우, EAI 또는 웍플로우+ EAI 만으로 절대 구현될 수 없다. 그 이유는 웍플로우, EAI는 부분 기능이며, BPM이 표방하는 ‘프로세스의 점진적 개선’ 사이클을 그 자체로는 완성할 수 없기 때문이다. 점진적 개선은 반드시 개선 사이클이 순환되어야 하며, 이러한 프로세스 라이프 사이클을 지원하지 않을 경우 점진적 개선은 기대할 수 없다.

5) 모듈별로 제품을 구매하기 보다는, 토탈 솔루션(Total solution)을 제공하는 제품을 선택하는 것이 유리하다 : 불행하게도 현재 BPM에 대한 국제 표준은 존재하지 않는다. 어떤 면에서는 앞으로도 존재할 수 없을 가능성이 더욱 크다. 따라서 부분 기능별 제품간의 호환성이 문제가 될 수 있다. 예를 들면, 프로세스 매핑 결과가 실행 모듈로 자동 전환시킬 경우, 국제 표준이 있다면 국제 표준을 지원하는 프로세스 매핑 도구는 ‘A사’ 제품을, 실행 도구는 ‘B사’ 제품을 구매해도 호환성을 유지할 수 있으나, 현실적으로는 표준 미비로 이러한 호환성을 보장하기가 매우 어려운 실정이다. 따라서 모듈간의 호환성이 보장되는 토탈 솔루션 제공 제품을 선택하는 것이 유리하다.

6) BPM은 단위 프로세스에 대한 자동화가 아닌 전사 차원의 접근 방식이므로, 시행착오를 최소화하기 위해 적절한 컨설팅 능력과 풍부한 경험을 가진 업체를 선정하는 것이 유리하다 : BPM은 패키지 소프트웨어 도입이 아니라, 각 기업에 맞는 최적의 환경을 구현해야 하는 어려운 점이 있다. 따라서 이에 따른 전사 차원의 접근 방식 지원을 위해 풍부한 경험과 컨설팅 능력을 가진 업체 선정이 무엇보다 중요한 요소가 된다.

7) BPM은 계속 발전하는 솔루션이므로 미래 확장성을 충분히 고려해야 한다 : 현재 완벽하게 기업들의 필요를 충족시키는 BPM 솔루션은 없다고 해도 과언이 아니다. 그 이유는 BPM 자체가 계속해서 빠른 속도로 진화하고 있기 때문이다. 따라서 솔루션 선정 시 미래의 기능 보완을 충분히 보장할 수 있는 업체를 선정하는 것이 유리하다.
이 외에 BPMS가 지원하는 기능 기준의 가이드 라인(guide line)을 가트너(Gartner)에서는 다음과 같이 제안한다.

가트너 제안
1) 시스템과 시스템, 인간과 시스템보다는 인간과 인간에 관련된 업무들의 비즈니스 프로세스 흐름을 지원
2) 운영과 관리의 용이성
3) 아키텍처, 표준 그리고 플랫폼 지원 가능성
4) 성능과 확장성
5) 연계, 파트너십 등의 통합 지원성
6) 비즈니스 활동 모니터링 기능 지원
7) 비즈니스 룰 엔진 및 시뮬레이션 기능 지원 여부
8) 서비스 중심의 개발 환경 지원
9) 산업별 템플릿 제공 가능성 여부
가트너 제안을 모두 참고하기보다는 각 기업의 BPM 활용 목적에 따라 필수 기능을 첨삭해야 한다.

8. BPM 기술 요소
8.1 프로세스 매핑(Process mapping) 기술
프로세스 매핑 기술은 업무 프로세스를 설계하고 분석하는데 사용된다. 프로세스 매핑 기술을 통해 기업의 전사 업무 프로세스를 데이터베이스화하며, 프로세스는 도식화되고, 표준화되며, 웹 상에서 공유된다. 프로세스 매핑 기술은 탑-다운(top-down), 보텀-업(bottom-up), 이벤트-드리븐(event-driven) 등 다양한 매핑 방법을 지원하며, 기존 시스템과의 연동을 통하여 업무 매뉴얼 시스템을 구성할 수 있다.
매핑 기술을 통해 프로세스 라이프 사이클을 관리하며, R & R 매트릭스(Role & Responsibility matrix)를 자동으로 생성한다. 또한 프로세스 실행을 위해 프로세스 상호간의 정합성 검증 기능도 제공하며, 프로세스 개선 안에 대한 시뮬레이션 기능을 포함하기도 한다.

8.2 웍플로우 기술
웍플로우 관리 기술은 표준화된 업무 프로세스를 강제로 실행시키고 업무 진행 상태를 가시적으로 모니터링/통제하는 기능을 제공한다. 또한 업무를 자동 공지하고, 업무와 함께 업무 수행에 필요한 정보(문서, 양식, 데이터, 애플리케이션, 지식 등)를 제공한다. 업무 수행이 완료되면, 업무 수행 결과 산출물을 타 시스템에 자동으로 집어넣고, 표준화에 의해 정의된 다음 업무를 업무 수행에 필요한 정보와 함께 업무 수행자에게 제공한다.
업무 수행 시간을 계속해서 모니터링 하므로, 업무 수행 실적 데이터를 수집할 수 있어, 사이클 타임(cycle time) 관련된 업무 프로세스 개선을 위한 기본 데이터를 제공한다.

8.3 기업애플리케이션통합(EAI) 기술
EAI는 분산된 다양한 시스템을 통합하는 기술이다. 통합 방법은 데이터 레벨에서 컴포넌트 레벨, 애플리케이션 레벨, 프로세스 레벨로 계속해서 발전하고 있다. 특히 EAI 기술은 프로세스 성과 관리를 위한 데이터를 수집하는데 매우 유용하게 사용될 수 있다. 또한 웍플로우 기술과 같이 사용하여, 정보/기간 시스템 통합에 활용될 수 있다.

8.4 웹 서비스 기술
웹 서비스 기술은 이미 가시적인 효과가 입증된 컴포넌트 기술, XML 기술에, 시스템/플랫폼 독립성을 확보할 수 있는 표준화 노력이 더해진 것으로 이미 구축되어있는 인터넷 네트웍 및 하드웨어 인프라를 그대로 활용할 수 있다는 강점을 가지고 있다. 현재까지는 일부 시범적으로 시도되고 있으나, 아직은 미성숙 단계이다. 확산의 장애가 되는 이유는 국제 표준이 계속 발전하고 있고, 웹 서비스 기반의 애플리케이션 개발 방법론 및 이에 따른 효과가 가시적으로 입증되지 못한 상태 등을 들 수 있다.

8.5 표준(Standards)
BPM의 활성화를 위한 다양한 기술들에 대한 표준화가 진행되고 있다. 표준화는 프로세스 모델링을 위한 XPDL/BPMN, 프로세스 실행 표준을 위한 Wf-XML, BPEL, 산업군 별로 진행되는 커머스넷(CommerceNet) / 로제타넷(RosettaNet), 웹 서비스 표준을 위한 SOAP/WSDL/UDDI 등 다양하게 진행되고 있다. 그러나 프로세스 모델 표준만 해도 10여개의 단체가 표준화를 진행하는 등 세계적으로 인정된 BPM의 표준은 그리 많이 진척된 상황은 아니다.

9. BPM 구현 방안
9.1 준비 단계
준비 단계는 BPM 역량 양성에 중점을 둔다. 준비 내용은
1) 경영층의 비즈니스 BPM 전략의 중요성에 대한 이해
2) 전략 전문가들의 BPM 활용방안에 대한 상세한 정의 및 분명한 목표 설정
3) 업무담당자의 효과적이며 효율적인 업무수행에 필요한 적절한 스킬 양성 등이다.
특히 BPM은 전사 차원의 접근이 예상되어 경영층의 강력한 드라이브(drive)가 필요하므로, 경영층의 BPM에 대한 이해가 필수적이라 할 수 있다.

9.2 프로세스 경영/학습 조직 구축
준비 단계를 마치면 프로세스 경영에 대한 학습 조직을 구축한다. 학습 조직 자체로 BPM의 기능에 대한 파악과 구현 후 이미지(image)를 어느 정도 가시화 시킬 수 있을 정도로 학습 조직에 대해 BPM에 대한 정보가 제공되어야 하며, 교육 및 훈련이 뒤따라야 한다.

9.3 프로세스 매핑
전략/프로세스/자원의 의존성을 명확히 파악하기 위해 전사 프로세스 매핑을 수행한다. 프로세스 매핑은 그 자체로 ROI를 크게 기대하기 힘들지만, BPM을 위한 기초를 다지는 매우 중요한 단계이다. 프로세스 매핑은 전체 종단간(end-to-end) 프로세스를 포함한 전사 업무 프로세스를 대상으로 하며, 업무 절차, 역할 분담, 업무 지침을 확립하게 된다. 기업의 상황에 따라 적절한 매핑 방법론을 결정해야 하며, BPMS에서 제공하는 도구를 활용하여 매핑 효과를 높일 수 있다.

9.4 파일럿 시스템 구축/운영
프로세스 매핑을 통해 표준화된 프로세스 중 경험과 교육적인 측면을 고려하여 소규모의 파일럿 형태로 BPMS를 적용한다. 파일럿 시스템 구축/운영 시 고려해야 할 사항은 다음과 같다.
1) BPM을 이용하여 확실한 수익을 낳을 수 있는 시험 기회
2) 중요한 전략적 투자 수익을 가져올 수 있는 소규모의 중요한 전략적 프로젝트
3) 다양한 구성요소를 경험하고 실험할 수 있는 프로젝트
4) ROI 분석, 시스템 활용도 분석
5) 시스템 문제점 및 기능 개선점 파악, 개선안 도출

9.5 전사 업무 프로세스로 적용 범위 확산
파일럿 시스템 구축/운영을 통해 기대한 효과가 가시화될 경우, BPMS를 전사 업무 프로세스로 확장한다. 단, 전사 업무 프로세스가 기업 내부의 수 천 개 프로세스 모두를 포함하는 것은 아니며, 기업의 주요 목표를 달성하기 위한 프로세스 설계에 집중하여 적용된다.
예를 들면, 프로세스 맞춤, 전체 종단간 프로세스(end-to-end process)설계, 프로세스 소유 비용 절감, 기존 시스템의 완전한 활용, 스스로 인식하고 측정하는 프로세스, 비즈니스 수준 트랜잭션, 지속적 프로세스 변화, 통합 전사 프로세스 모델링, 협업 프로세스 설계 등을 포함한 전사 확장을 적용한다.

10. BPM에 대한 진실과 거짓
1) BPM을 하려면 BPMS가 반드시 필요하다?
BPM은 ‘프로세스 개선의 기반’을 제공하는 것으로, BPM의 정의만을 놓고 보면, IT 시스템 (BPMS)이 없어도 수행할 수 있으며, 이미 10년 전부터 많은 기업들이 BPM을 수행하고 있다. 단, 최근에 BPMS의 필요성이 부각되는 것은 BPMS에 의해 체계적으로 BPM을 수행할 수 있고, BPMS에 의한 BPM 실현이 훨씬 효율적이기 때문이다. IDC에서는 현존하는 IT 시스템 중 BPMS가 가장 높은 ROI를 가지고 있다고 평가한다.

2) BPMS는 킬러 애플리케이션(killer application)으로 도입만 하면 경쟁력을 확보할 수 있다?
BPMS는 BPM 실현을 위한 하나의 IT 시스템으로 생각하면 된다. BPM을 위해 BPMS를 도입한다 해도 활용도가 떨어지거나, BPM 수행에 대한 의지가 부족할 경우, 기대하는 경쟁력 확보는 어렵게 된다. 특히 BPM은 몇몇 사람에 의해 수행되어지는 것이 아니라 전사 차원의 접근 방식이므로, 계속해서 관심을 가지고, 지속적인 개선을 수행해야만, 경쟁력을 확보할 수 있을 것이다.

3) BPMS는 툭하면 새로운 것을 던지고 사용을 강요하는 IT 업계의 또 다른 제품이다?
거대 IT 기업을 중심으로 BPMS 솔루션이 계속해서 발전된 형태로 발표(release)되고 있다. 이것은 마치 ERP나 CRM 등 유행처럼 번지는 솔루션의 한 형태로 보일 수도 있고, 특히 BPM의 기본 기능과는 거리가 있는 기능들을 BPM으로 포장하여 소비자들의 오해를 불러일으킬 소지가 있다.
결국 판단은 소비자들이 내려야 할 것이며, 솔루션 공급업체의 제공 기능을 면밀히 살펴 기업의 필요성에 가장 적합한 제품을 선정해야 할 필요가 있다.

4) 웍플로우 기술만으로 BPM을 구현할 수 있다?
웍플로우 기술은 BPMS의 필요 기능 중 일부 기능에 불과하다. 또한 웍플로우 기술만으로는 ‘점진적 개선’ 사이클을 지원하지 못한다. 따라서 웍플로우 기술만으로는 BPM을 구현할 수 없다.

5) EAI 기술만으로 BPM을 구현할 수 있다?
EAI 기술 또한 BPMS의 필요 기능 중 하나이며, EAI는 기본적으로 휴먼 인터페이스(human interface)를 제공하지 않는 백엔드(Back-end) 시스템이다. 따라서 EAI만으로는 human이 많이 포함되는 비즈니스 프로세스 관리를 할 수 없다. 또한 웍플로우와 마찬가지로 EAI 기술만으로는 ‘점진적 개선’ 사이클을 지원하지 못한다.

6) 웹 서비스는 반드시 필요한 BPM의 핵심 기술이다?
현재까지는 BPM의 발전 기능 - 프로세스 변화에 따른 IT 시스템의 신속한 적응 - 을 위해서는 웹 서비스가 가장 앞서가고 있는 실정이다. 그러나 앞서 설명한대로 웹 서비스가 확장되기 위한 걸림돌이 존재하며, 이러한 점들이 해결되었을 경우 BPM의 핵심 기술로 자리매김할 수 있을 것이다. 그러나 웹 서비스를 대체하는 다른 기술이 상용화될 가능성은 항시 존재한다.

7) 비즈니스 담당자가 프로세스를 변경하면 곧바로 시스템에 반영된다?
비즈니스 민첩성 확보를 위한 IT 지원에 대한 BPM의 희망사항이다. 향후 3~5년이 지난 후에야 실현 가능성을 판단할 수 있을 것이다. 물론 이러한 비전은 BPM이 계속 지향해야 할 방향임은 확실하다.

8) RTE를 당장 실현할 수 있다?
RTE의 두 가지 기능 중 기업 내 외부의 분산되어 있는 데이터를 실시간으로 수집, 가공하여 조직이 직면한 기회나 문제점들을 더 빨리, 더 정확하게 판단하여 신속한 의사결정을 내리도록 하는 기능은 현재의 기술로도 얼마든지 실현 가능하다. 하지만 시장 상황 변화에 따른 프로세스의 실시간 개선은 여러 가지 기술적인 문제점들을 내포하고 있다.

9) BPM을 도입하면 기존의 성과관리 시스템이 필요 없다?
BPM이 추구하는 프로세스 성과 관리는 BSC 등으로 대표되는 기능성과 관리의 목적을 실현시켜 준다. BPM의 성과 관리는 기능성과 관리를 통한 전략 실현 가능성을 훨씬 높여주고 체계적으로 관리할 수 있는 기반을 제공한다.

10) BPM은 모든 업무 프로세스를 자동화시킨다?
BPMS 특히 웍플로우에 의한 업무 프로세스 자동화는 업무의 전달 과정만을 자동화하는 것이다. 이 외에 업무 자체에 대한 자동화는 기존의 IT 개발 방식과 특별하게 다르지 않다. 다만 비즈니스 프로세스를 명시화하고, 애플리케이션에서 분리함으로써, 시스템 개발 및 유지 보수에 강점을 가지게 된다. 따라서 BPMS 도입이 모든 업무를 자동화 시키는 것은 아니다.

11. BPM 성공 요소
1) 필요성에 대한 인식 확보
BPM을 하나의 IT 경향으로 판단해서는 안 된다. 경쟁사에서 BPM을 도입한다고 해서 필요성에 대한 정확한 인식 없이 BPM을 도입할 경우 많은 시행착오를 겪을 가능성이 있다. 다양한 BPM의 기능 중 어떤 부분을 특히 필요로 하는지, 경쟁력을 갖추기 위한 핵심 개선 대상 프로세스는 어떤 것들이 있는지 등을 명확하게 판단하고 필요성에 대한 인식을 확고히 해야 한다. 필요성에 대한 인식 없이는 지속적인 개선에 많은 장애 요소가 따르게 된다.

2) CEO의 강력한 드라이브 의지
BPM은 전 직원의 참여를 전제로 하는 만큼 일부 부서의 장이나 IT쪽에서 드라이브하는 것으로는 추진력을 받기 어렵다. 또한 BPM의 효과는 단기적으로 나타나는 것보다는 최소한 몇 년에 걸쳐 장기적으로 발생하며, 시간이 흐를수록, 그 효과가 더욱 커지게 된다. 따라서 지속적인 CEO의 드라이브 의지가 매우 중요한 요소가 된다.

3) 프로세스 관리의 중요성에 대한 교육 및 학습
BPM은 전 직원이 프로세스 개선에 참여하는 것을 지향한다. 프로세스에 대한 관심을 고취시키고, 프로세스 개선을 위한 교육 및 학습을 철저하게 수행할수록 BPM을 통해 얻는 기대 효과가 커질 것이다.

4) 짧은 시간에 효과를 보려는 생각을 버려야 한다
BPM은 프로세스의 점진적 개선을 위한 시스템으로 단 기간에 효과를 내기 위한 ‘혁신’ 시스템과는 접근 방식이 다르다. 프로세스 개선은 프로세스의 사이클이 어느 정도 돌고 난 이후에야 과학적인 접근 방식에 의한 개선이 가능하므로, 적어도 2~3년의 운영 기간을 거쳐야만 전체적인 효과를 기대할 수 있다. 물론 단기적으로 기대할 수 있는 효과는 부분적으로 발생할 수 있다.

5) 최적의 구현 방안을 수립하고 실천
BPM은 프로세스, 조직, 다양한 정보 시스템, 그리고 BPM 솔루션을 통합하는 작업이므로, 타 시스템에 비해 상대적으로 복잡해질 수 있다. 따라서 BPM 프로젝트를 성공적으로 이끌기 위해서는 최적의 수행 방안을 수립하고 실천하는 것이 중요하며, 특히 BPM 솔루션을 적용하는 프로젝트에 많은 경험과 노하우를 가지고 있는 컨설팅 서비스를 제공하는 업체를 선택하는 것도 중요한 요소가 된다.

6) 최적의 솔루션을 확보하고 구현
BPMS는 목적 및 기능이 매우 다양한 솔루션이다. 따라서 기업의 BPM 도입 목적과 가장 부합되는 솔루션 선택은 매우 중요한 요소가 된다. 물론, 기존의 검증된 솔루션을 선택하는 것이 중요한 기준이 되지만, 대형 외국 업체에서 제공하는 솔루션을 무조건 선호하는 사고방식은 매우 위험하다. 특히 BPMS는 계속 발전하고 있는 솔루션이므로 솔루션 업체의 기능 발전 전략 등도 충분히 고려해야 한다.

7) 부분적인 효과라도 적용해보는 것이 필요
BPM 도입 초기 단계에서는 전사적인 효과보다는 부분적이지만, BPM의 효과를 충분히 기대할 수 있는 프로세스에 적용하는 것이 필요하다. 부분적 도입에 따른 구체적이고 핵심적인 성공사례를 구축할 경우, 전사로 자연스럽게 확장될 수 있을 것이다. 또한 초기의 부분적 운영은 전사 확산 BPM을 어떻게 효과적으로 운영할 것인가에 대한 경험 축적에 도움이 된다.

8) 프로세스 매핑은 BPM의 초석이다.
BPM을 구축할 때 간과할 수 있는 부분이 프로세스 매핑이다. 프로세스 매핑을 수행하지 않은 상태에서 BPM을 수행하는 경우에는 마치 기초 공사를 하지 않은 건물과 같다. 특히 부분적으로 적용되는 파일럿 프로젝트의 경우에 매핑을 생략하는 경우가 있어, 파일럿 성공 후 전사로 확장하는 경우 심각한 어려움을 겪을 수 있다. BPM의 효과를 충분히 검토하기 위해, 또한 BPM이 적용되는 단계별 변화를 경험하기 위해서도 비록 파일럿 프로젝트라 할지라도 프로세스 매핑은 반드시 수행되어야 한다.

Posted by 아름프로
강좌 │ BPM(2회)

BPM의 실행 과정과 프로세스 성과 관리

--출처: 컴퓨터 월드
전희철
리얼웹 중앙연구소 소장
jhc@realweb21.com


연/재/목/차

1회. BPM의 출현 배경과 의미
2회. BPM의 실행 과정과 프로세스 성과 관리(이번호)
3회. BPM 실행을 위한 체크포인트와 기술요소, 구현 방안
4회. BPM에 대한 진실과 거짓, 그리고 성공요소

5. BPM을 활용한 비즈니스 프로세스 통제 방법

5.1 점진적 개선 사이클
BPM의 핵심 기능은 ‘프로세스의 점진적 개선’이다. ‘점진적 개선’은 항상 어떤 사이클(cycle)을 가지고 있어야 한다. 퀄리티 컨트롤(Quality control)의 대가인 데밍(Deming)이 주창하여 점진적 개선에 오랫동안 사용되어 왔던 데밍 휠(Deming Wheel)이 BPMS에 적용될 수 있다. Deming Wheel은 plan-do-check-act(PDCA)의 순환구조를 갖고 있다. 변형이 있을 수 있으나 BPM은 프로세스에 대한 매핑->실행->모니터링/측정/통제->개선의 라이프 사이클을 가지며, 각 단계에서 <그림 1>과 같은 여러 가지 다양한 도구와 방법론을 사용하게 된다.

5.2 Plan - 프로세스 매핑
프로세스는 기업 내부의 소중한 지적 자산임에도 불구하고 많은 경우 명확하게 표현되어 공유되지 않고 있다. 프로세스 매핑이란 기본적으로 ‘기업 내부의 업무 프로세스를 명확하게 표현하여 사내/외 공통 지식화하는 작업’이다. BPM에서는 <그림 2>와 같이 프로세스 매핑을 통해 ‘전략’, ‘자원’과 ‘프로세스’의 의존성(Dependency)을 명확하게 표현하고 가시화한다. 프로세스 매핑을 위해 다양한 도구와 방법론들이 존재하며 이러한 것들은 현재의 ‘As-Is’ 프로세스를 도출/표현하는데 가장 적합한 도구가 된다. BPM은 현 프로세스를 파악하고 점진적으로 개선하는 방법이므로 프로세스 매핑은 BPM의 필수 과정이다.
프로세스 혁신 프로그램과는 달리 BPM은 수백 내지 수천 개에 달하는 기업 내부 전체(holistic, end-to-end) 프로세스가 개선 대상이므로 매핑 도구는 각 기업 특성에 맞는 최적화된 표준 언어(standard language)와 검색, 도식화 기능 및 매핑 방법론을 제공해야 한다.

프로세스 매핑을 통해 명확하게 표현된 프로세스 지식은 다양한 방법을 통해 분석되어 정형화/표준화 될 수 있다. 또한 프로세스 분석을 통해 불합리하거나 비효율적인 프로세스는 쉽게 개선될 수 있다. 분석 단계에서 ‘베스트 프랙티스(best practice)’를 활용하여 실적 데이터 없이 ‘투비(to-be)’프로세스 도출 및 개선 로드맵(roadmap)을 작성할 수도 있다.

5.3 Do - 프로세스 실행
프로세스 매핑에 의해 표준화된 프로세스는 정의된 그대로 실행되어져야 한다. 표준 프로세스 정의대로 업무가 수행되지 않을 경우, 프로세스 개선 노력은 체계적으로 수행되기 어려우며 따라서 개선 결과에 대한 예측이 매우 불확실해진다.
그러나 필자의 경험에 의하면 - 조직 문화에 따라 다르겠지만 - 표준화된 프로세스가 정의된 대로 실행되는 경우는 60%~70% 정도 밖에는 되지 않는다. 웍플로우 관리 시스템 (WfMS)은 프로세스 실행 측면에서 많은 도움을 줄 수 있다. WfMS는 미리 정해진 업무 절차에 따라 업무를 자동 공지하는 기능을 가지고 있으므로 표준화된 프로세스 정의대로 업무를 수행하도록 해준다. 또한 실행되고 있는 업무 프로세스가 실무자들에게 부적합한 경우가 쉽게 발견되므로 현업 담당자들 모두가 참여하는 프로세스의 점진적 개선을 도모할 수 있다.
WfMS는 프로세스가 진행되는 과정을 쉽게 모니터링 할 수 있는 기능을 제공하므로, 인적 자원 관리를 원활하게 할 수 있도록 해준다. 예를 들면, 개인별 업무 목록이 공유될 수 있고, 개인/조직별 지연 업무 상황, 업무 수행 기간, 프로세스 사이클 타임(cycle time)에 대한 정보 등도 기본 기능으로 제공하고 있다.

5.4 Check - 프로세스성과 관리
업무가 진행되는 동안 업무 진행 상태를 모니터링 할 수 있어야 한다. 이러한 모니터링을 통해 업무 프로세스가 계획한 대로 정상적으로(timely) 진행되고 있는지, 목표치를 달성하고 있는지가 파악되고 만일 문제가 예측되거나 발생할 경우 이에 대한 통제를 하게 된다.
통제에는 인적/물적 자원 관리, 위험 요소 관리를 포함할 수 있다. 웍플로우 관리 시스템, 전사애플리케이션통합(EAI), 비즈니스 액티비티 모니터링(BAM : Business Activity Monitoring) 등 여러 가지 도구를 사용하여 프로세스를 모니터링/통제할 수 있다. 프로세스 성과 관리를 위한 모니터링은 실시간으로 수행하며, <그림 3>과 같이 다양한 사용자 인터페이스를 제공해야 한다.

프로세스는 항상 어떤 목적을 가지고 있어야 한다. 역으로 목적이 없는 프로세스는 가치가 없는 프로세스로 관리의 대상이 될 수 없다. 프로세스의 평가는 프로세스의 측정(performance measu rement)으로부터 출발한다.
프로세스는 목적을 가지고 있으며, 목적 달성을 위한 정량적인 목표치를 설정할 수 있어야 하고, 프로세스 수행 평가는 목표치를 기준으로 판단하게 된다. 기업 내의 BPM 환경을 정착시키기 위해 프로세스 평가는 반드시 필요하며, 이러한 실적 데이터는 프로세스 개선의 기본 데이터가 된다. 사이클 타임(Cycle time), KPI 등이 프로세스 측정에 사용된다.

5.5 Act - 프로세스 개선
프로세스 개선에 있어 BPM의 가장 큰 특징은 기업의 전략을 프로세스 개선에 적용한다는 점이다. 기능 중심이 아닌 프로세스 중심의 사고는 기업의 전략을 축으로 기업의 목표 달성을 거시적인 관점에서 바라볼 수 있게 한다. 따라서 BPM은 정량적 데이터를 기반으로 어떤 프로세스의 어느 부분이 개선되어야 하는가를 판단할 수 있는 근거를 제공하게 된다. 단, ‘어떻게’ 개선되어야 하는가에 대한 해답을 BPM 시스템에서 제공하는 것은 매우 어려우며 이 부분은 앞으로도 많은 연구가 필요할 것이다.

■ 프로세스 측정 : 프로세스 모니터링을 통한 프로세스 성과 관련 데이터는 축적되어 통계 처리 절차를 거치게 된다. 예를 들어 사이클 타임(cycle time)의 경우, 업무/프로세스 실행 시간에 대한 평균과 표준 편차, 실행 빈도수 등을 측정하게 된다. 마찬가지로 프로세스 수행에 의한 KPI 지표도 정량적 데이터에 근거하여 측정, 가공된다.

■ 프로세스 분석 : 실행되는 프로세스의 성과 지표는 모니터링을 통해 계속 측정되며 실행 도중 통제를 받게 된다. 측정 결과는 적절한 분석 도구를 사용하여 분석한다. 프로세스 성과 지표와 관련해서는 비즈니스 성과 지표와 프로세스 성과 지표와의 상관관계 분석을 통하여, 사이클 타임과 관련해서는 Critical Path Method (CPM), Probabilistic CPM(PERT) 등을 통해 분석을 수행할 수 있다.

■ 프로세스 선정 : 프로세스 분석 결과를 활용하여 개선 프로세스를 선정한다. 개선 프로세스는 기업의 KPI에 가장 큰 영향을 미친 프로세스를 중심으로 선택되며 프로세스와 KPI의 alignment 자료 및 선정될 프로세스가 타 KPI에 미치는 영향 등을 면밀히 분석하게 된다. 개선 프로세스 선정은 기본적으로 기업 전략 실현에 문제점을 발생시킨 프로세스를 최우선으로 고려하게 된다.

■ 프로세스 개선 : 선정된 프로세스에 대해 자원 재분배, 벤치마킹(benchmarking), 브레인스토밍(brainstorming), 프로세스 재구성 등을 통해 개선안을 도출한다. 개선안은 실행 전에, 성과 분석을 통해 얻은 결과를 활용하여 관련 KPI에 미치는 영향을 미리 예측해야 한다. 또한 프로세스 개선에 필요한 비용이 개선 효과보다 낮은지를 검증하여 프로세스 개선에 따른 ROI 및 효과를 사전에 면밀히 검토해야 한다. 프로세스 사이클 타임과 관련하여 개선된 프로세스는 실행되기 전에 시뮬레이션 등을 통한 검증 절차를 거치게 된다.


6. 성과 관리와 프로세스 성과 관리

6.1 기능성과 관리방법의 문제점
균형성과관리(BSC : Balanced Scorecard)의 창시자인 R. Kaplan과 D. Norton은 지난 10년 동안 BSC를 도입한 기업들의 90%가 성과 관리 시스템의 최대 목표인 ‘전략 실행’에 실패하고 있다고 자인했다. 그들은 BSC의 ‘전략 실행’ 실패 원인을 비전 공유 실패, 부적절한 보상 체계, 자원 투입의 부적절, 전략 관리의 실패 등 네 가지로 규명했다. 과연 상기한 네 가지 실패 원인만을 제거한다면, 전략 경영이 성공할 수 있을 것인가?
BSC 컨설턴트들은 또 다른 관점에서 문제점을 제시한다. BSC를 통한 전략 경영의 실패 원인은 업무 절차, 업무 지침, 책임 소재 등이 불명확한 조직의 특성 때문이라고 규명하고 있다. 이에 따라 성과 관리 시스템에 의해 성과를 평가받는 개인 또는 부서의 이기주의도 실패의 원인이 될 뿐 아니라, 성과 지표간의 명확한 균형을 이루는 것은 사실상 불가능해, 성과 지표간의 충돌(conflict)을 해소하는 부분도 실패의 원인이 된다.
또한 BPM의 관점에서 보면, BSC는 성과지표만을 모니터링 할 뿐 액션 플랜(action plan)이나 이니셔티브의 실행에 대한 통제는 미흡한 것으로 여겨진다. 즉, 전략 실현을 위한 프로세스 실행 전략이나 방법 부재가 시스템적인 측면에서 장애 요소가 되고 있다는 것이다.

6.2 프로세스 성과관리
프로세스 성과 관리는 전략 목표 달성을 위한 핵심 프로세스를 선정하고 해당 프로세스에 대한 KPI를 도출하는 것으로 출발한다. 선택된 프로세스는 조직 단위의 하부프로세스(subprocess)로 분할되어 각 하부프로세스의 KPI를 도출하고 각 하부프로세스를 구성하는 액티비티(activity)의 KPI를 도출하는 단계별 목표 구성을 만든다.
예를 들면, ‘시장 점유율 10% 증대’라는 전략 목표가 설정되면, 시장 점유율 확대를 위해 가장 중요한 프로세스인 ‘신제품 개발 프로세스’를 선정하고 해당 프로세스의 목표 (개발 기간을 1년에서 10개월로 단축) 를 설정한다. ‘신제품 개발 프로세스’는 ‘기획, 설계, 시제품 개발, 공정 개발, 테스트’ 등의 하부프로세스들로 구성될 것이며, 목표 개발기간 10개월은 각 하부프로세스의 목표로 분할될 것이다. 그리고 각 하부프로세스의 목표는 하부프로세스를 구성하는 업무 레벨의 목표로 할당된다.
이러한 계층화(casc ading)는 전략 목표를 업무 레벨(job level)의 목표로 자연스럽고, 과학적인 방법으로 전환시키며, 각 레벨의 KPI는 개인-조직-프로세스의 단계별로 모니터링 되고 통제된다.

6.3 프로세스 성과 관리를 통한 기능성과 관리
포춘(Fortune)지는 1999년 실패한 CEO의 70%는 전략의 부재나 전략이 나빠서가 아니라, 전략 실행에 실패한 것이라는 자료를 보도했다. 조금은 부족한 전략을 실행하는 것이, 뛰어난 전략을 실행하지 못하는 것보다는 훨씬 낫다. BPM을 통한 프로세스 성과 관리는 BSC의 부족한 부분 (전략의 실행) 을 보완한다. BPM을 통해 프로세스 성과가 관리되면, BSC를 통한 전략 실현이 자연스럽게 실행되는 것이다.
또한 프로세스 성과 관리 지표를 프로세스-조직-개인 레벨로 통제하는 것은 BSC 성과 지표의 결과를 예측하는 예측 지표로 활용될 수 있다. 프로세스는 그 자체가 하나의 과정이라 볼 수 있으므로, 프로세스-조직-개인 레벨별 프로세스 성과 지표의 결과는 BSC의 성과 지표를 미리 예측하고 통제할 수 있도록 해준다. 여기에서 BSC의 성과 지표가 선행 지표건 후행 지표건 관계없이 선행/후행 지표의 값을 사전에 예측하여 통제할 수 있다는 것이다.
예를 들면, ‘시장 점유율 10% 증대’라는 목표는 ‘제품 개발 기간’이라는 KPI로 전환되며, 각 조직/개인별로 업무 진행 기간이 할당될 것이다. ‘제품 기획’ 프로세스의 할당 기간이 2개월로 할당되었는데, 만일 2개월을 넘어 3개월로 지연될 경우, 책임 소재가 명확해지고, 또한 남은 기간 동안 더욱 더 목표치를 통제하지 않을 경우 ‘시장 점유율 10% 증대’의 목표는 달성되기 어렵다는 것이 쉽게 예측될 것이다.
Posted by 아름프로
BPM의 출현 배경과 의미

-- 출처: 컴퓨터 월드
전희철
리얼웹 중앙연구소 소장
jhc@realweb21.com

연/재/목/차
1회. BPM 출현 배경(이번호)
2회. IT Evolutions에서의 BPM
3회. RTE와 BPM
4회. BPM Impact와 Enterprise


1. BPM의 출현 배경
비즈니스 프로세스 경영(BPM)의 출현 배경은 ▲21세기 들어 급격하게 변화하는 기업 외부의 환경과 ▲이에 따른 비즈니스 요구(business needs) ▲비즈니스 요구와 IT 사이에 해결되지 못했던 갭(gap) ▲프로세스 경영 기술의 발전 ▲IT 기술의 발전 등이 복합적으로 작용하였다.

1.1 외부 환경 변화
기업을 둘러싼 경영 환경의 주요 변화는 고객 중심, 경쟁 심화, 시장 변화 가속, 기업간 협업 가속화 측면에서 살펴볼 수 있다.
먼저, 고객 중심. 시장과 경제의 주도권이 생산자로부터 소비자에게로 넘어가게 되어, 이제 고객은 왕이 아니라 무자비한 독재자가 되었다. 많은 지식과 정보를 인터넷과 같은 매체를 통하여 쉽고 빠르게 취득한 소비자들은 제품의 질을 포함한 기업의 서비스에 이르기까지 막강한 권력을 휘두르고 있다. 이제는 고객이 요구하는 제품을 만들어 내는 것 뿐 아니라 ‘고객이 원하는 것을 언제, 어디서, 어떻게 만족스럽게 제공하는가 하는 것’을 찾아내고 실행하는 것이 마케팅의 중요한 관건이 되었다.
둘째, 경쟁 심화. 시간, 공간을 뛰어 넘는 무한 경쟁의 시대에서 기업은 살아남아야 한다. 과거에 기업들은 제품을 최초로 출시하거나(faster), 최상의 품질을 제공하거나(better), 비용에 대한 리더십을 확보하거나(cheaper)하는 3개의 영역 중 하나의 영역을 경쟁 우위 방안으로 삼아 왔다. 경쟁의 오랜 역사를 통해 얻은 경험들 가운데는 한 기업이 세 가지 중에서 최대 두 개 까지만 우위에 설 수 있다는 인식이 있었다.
그러나 이러한 인식은 1970~1980년대의 일본 기업들에 의해 무너졌고, 그들은 세 가지 모두에서 경쟁 우위를 점할 수 있는 능력을 보여주었다. 무한 경쟁의 시대에서는 이 세 가지 영역을 모두 확보해야만 경쟁력을 확보할 수 있는데, 최근 이 세 가지 기준에 ‘서비스’라는 새로운 차원이 추가되고 있다.
셋째, 시장 변화 가속. 최근의 시장 변화는 세계화(globalization)와 상품화(commoditization)의 가속화로 인해 제품에서 제품 서비스로의 이동이 확대되고 있다. 이러한 시장의 변화는 불과 몇 년 사이에 일어났고 이러한 변화에 대한 예측조차 어려울 정도로 변화에 가속이 붙어있다. 국내만 하더라도, 시장 개방 속도가 점점 빨라지고 있어 불과 몇 년 전만해도 드물게 보이던 외산 승용차가 몇 대에 한 대꼴로 보이기도 하고, 일본 가요와 영화가 어느새 많이 친숙해져 있는 상태가 되어버렸다. 소비자의 선택 영역이 급격하게 늘어난 반면, 국내 기업들은 점점 더 치열한 경쟁 상태에서 살아남아야 하는 난제에 봉착해 있다.
소비자들은 제품을 구매하는 것뿐 아니라 제품의 라이프 사이클을 통한 서비스를 요구하고 있다. 단순히, 기업이 그러한 서비스를 제공하지 못할 경우, 소비자들은 원하는 서비스를 제공하는 다른 기업을 찾아 떠나게 된다.
넷째, 기업간 협업 가속화. 최근의 시장 경제의 변화 중 하나는 산업화 경제 시대에서 네트웍 경제로 넘어가고 있는 것이다. 네트웍 경제의 중심에는 관계성의 확대가 경제적 필수 요소가 된다. 기업들이 제품과 서비스를 조합하여 종합적 해법을 제공하기 위해서는 완전한 가치 사슬을 새롭게 개발하고 개척해야 한다. 이제는 더 이상 기업 대 기업의 게임이 아니며, 가치 사슬 대 가치 사슬의 경쟁이 되었다. 가치 사슬을 구성하는 프로세스의 획득, 집합, 조합을 위한 프로세스가 기업이 고객들에게 총체적 해법을 제공하는 새로운 방법이며, 시장의 기존 공룡들을 붕괴시키고 새로운 시장으로 잠입하는 방법이 되고 있다.

1.2 비즈니스 요구(Business Needs)
시장 상황의 변화와 경쟁 심화에 따라 기업은 경쟁력을 확보하고 변화에 따른 빠른 적응력을 키워나가는 것이 필수적인 상황이다.
CEO 입장에서 보면, 변화에 잘 적응하는 기업을 만드는 것이 매우 중요한 요소로 인식되고 있다. IBM에서 2004년 전세계 주요 경제/산업 분야의 CEO 456명을 대상으로 한 설문조사 결과(‘2004년 글로벌 CEO 연구’)에 따르면, “새로운 성장을 위해, 향후 5년 안에 기업을 보다 대응력 있도록 변화시켜야 한다”고 응답한 CEO가 90% 이상이었다. 그러나 “변화하는 경제상황에 자신의 기업이 잘 대응하고 있다”고 대답한 CEO는 단 13%에 불과했다. 이러한 예는 “변화에 잘 적응하는 기업을 만드는 것이 당면 과제”임을 잘 인식하고 있지만, 기업의 민첩성과 유연성을 확보하는 데는 실패하고 있음을 보여주고 있다.
CEO들이 겪고 있는 또 다른 어려운 점은 기업의 전략 실현이다. 마치 군대와 같이 일사 분란하게 전략을 실현하기를 바라지만, 전략 실현은 CEO의 의지와는 관계없이 실현하기 매우 어려운 것도 사실이다. 이러한 점을 극복하기 위해 전략 실현을 위한 시스템의 필요성이 대두되고 있고, 이에 따른 동적인 자원 최적화가 요구되고 있다. 전략을 실현하고 자원을 최적화하는 것은 BPM의 프로세스 관리와 밀접한 관계가 있다. 전략 실현을 위한 정교한 시스템을 제공하고 프로세스 관리를 통해 경쟁력을 확보하도록 지원하는 BPM은 현재까지 알려진 경쟁력 확보 방안 중 가장 효율적인 방법으로 인식되고 있다.
1.3. 비즈니스 요구와 IT 사이의 갭(Gap)
기업의 생존 전략으로 민첩성(agility)이 주요 이슈로 부각됨에도 불구하고, 기존의 IT 하부구조는 오히려 비즈니스 요구에 따른 민첩성 확보에 걸림돌이 되고 있다. 이런 상황이 발생하게 된 가장 큰 원인은, 기존의 IT 하부구조가 비즈니스 요구를 적시에 수용할 수 있는 만큼의 능력을 갖고 있지 않다는 것이다.
예를 들어, 전형적인 PI(Process Innovation) 프로젝트를 살펴보면, 기업 내부의 프로세스를 재설계하고 이에 따른 시스템을 설계, 구현, 타 시스템과 통합, 테스트하는데 소요되는 시간이 적게는 수개월에서 몇 년씩 소요되는 경우가 대부분이다. 구현 후 몇 년 사용하다가 외부 환경에 의한 변화에 적응하기 위해 또 다시 같은 작업을 반복하게 된다.
과거와 같이 시장 환경의 변화가 미미한 경우에는 이런 방법이 효과적일지 모르나, 시장 상황 변화가 가속화되고 있는 현재 시점에서, 이와 같은 시간적인 지연은 비즈니스 담당자는 물론 기업의 목표를 실현하는데 많은 걸림돌이 되고 있다. 심지어 시스템을 구현하고 있는 도중에 시장 변화에 따른 프로세스 변화의 요구가 얼마든지 바뀔 수도 있는 것이다. 이러한 비즈니스와 IT의 갭을 최소화하고 나아가 완전히 제거하려는 것이 BPM이 지향하는 기능중의 하나이다.
1.4. 프로세스 경영 기술 발전
프로세스 관리에 대한 기술은 1980년대 말부터 급격하게 발전하게 된다. <그림 1>은 프로세스 관리 기술이 어떻게 발전해왔는지를 잘 나타낸다.

BPR(Business Process Re-engineering)/PI
1980년대 말, 미국을 중심으로 적용되어왔던 BPR/PI는 프로세스의 중요성을 인식시키고, 우월한 프로세스 관리를 통한 경쟁력 확보라는 명제를 던져주었다. 그러나 그것은 너무나 많은 수작업과 큰 고통이 수반되는 것으로 판명되었다. 그 이유는 IT 기술의 미성숙으로 인해 시스템은 복잡한 프로세스를 지원할 수 없었고, 그 자체는 프로세스 관리에 대한 지원도 많은 한계가 있었다.

패키지 소프트웨어(Package softwares)
BPR/PI의 개념을 확산시키기에는 기존의 IT 개발 방법과 솔루션이 너무 비싸고, 오랜 기간이 걸린다는 문제점에 봉착하게 된다. 이러한 점을 해결하기 위한 하나의 수단으로 성공사례(best practices)에 기반을 둔 패키지 소프트웨어가 등장하게 된다. 대표적인 것이 SAP, 오라클 등의 전사적자원관리(Enterprise Resource Planning : ERP) 시스템이다.
이러한 패키지 소프트웨어는 핵심 프로세스를 내장하고 있어 빠르게 기업의 프로세스를 정립하고 데이터 중심의 자원을 관리하는데 효율적이었으나, 한 번 구축된 시스템 내부의 프로세스를 변경하기가 매우 어렵다는 단점을 가지고 있다. 즉 변화하는 시장 환경에 적응하기 위한 민첩성을 가질 수 없었다. 또 기업의 프로세스는 각 기업이 발전시켜나가야 할 경쟁력임에도 불구하고 경쟁사와 똑같은 패키지를 도입할 경우, 경쟁사와 똑같은 프로세스를 소유하게 되어 프로세스 개선을 통한 경쟁력 확보에 오히려 걸림돌이 되고 있다.

웍플로우(Workflow) 관리 시스템
1990년도 말부터 널리 사용되기 시작한 웍플로우 시스템은 IT 기술에서의 프로세스 관리를 한 차원 높이게 된다. 웍플로우 시스템의 가장 중요한 특징 중의 하나는 기존의 패키지 소프트웨어에 내장되어 있는 프로세스를 애플리케이션으로부터 별도로 분리하여 관리하고자 하는 노력이었다. 웍플로우 관리 시스템은 그 자체로 BPM을 하기에는 많은 한계를 가지고 있으나, BPM으로의 프로세스 관리 기법 전환에 큰 역할을 하였다. 실제로 웍플로우 시스템은 BPM의 한 구성 요소로 자리잡고 있다.

프로세스 매핑
유연한 프로세스 처리와 업무 수행 결과에 대한 분석을 위해 기업의 프로세스를 도식화하고 관리할 수 있는 프로세스 매핑 도구가 출현하였다. 이러한 도구들은 프로세스 도출 단계에서 비즈니스의 다양한 관점을 통합할 수 있게 하고, 프로세스 청사진을 수정, 유지할 수 있게 하며, 보고서를 작성할 수 있도록 해 주었다.
또한 프로세스 관리를 위한 시뮬레이션, 분석 기능도 일부 제공하게 된다. 그러나 매핑 도구 자체만으로는 프로세스를 실행시킬 수 없었고, 구성된 청사진을 현재 운영중인 IT 시스템과 같은 속도로 진화시킬 수 있는 기능이 없었다.

BPM
BPM은 BPR/PI가 목적으로 삼고 있었던, 그러나 실패해왔던 프로세스 중심의 경영을 실현시키는 방법이다. 다만 접근 방식에 있어서 급격한 변화에 따른 위험 요소를 최소화시키고, 과학적인 방법에 의한 점진적 개선을 추구한다. 점진적 개선을 위한 도출-실행-통제/분석-개선의 사이클을 완성시키며, 프로세스 개선 노력은 측정되고 분석될 수 있어 IT 투자 대비 효율을 매우 구체적으로 평가할 수 있도록 해준다. 저변에는 프로세스 매핑 기술과 웍플로우 기술을 가지고 있으며, 패키지 소프트웨어들에 의해 딱딱하게 굳어있는 프로세스를 별도로 분리하고 관리해 기업의 유연성과 민첩성을 확보할 수 있도록 해준다.

1.5. BPM을 구성하는 IT 기술 발전
BPM을 구성하는 IT의 목표 기능은 크게 ▲환경 변화에 대한 유연성/민첩성/투명성 제고와 ▲사람/시스템/기업 환경 등의 자원 활동을 가시화하고 전략 목표에 따라 통제하는 두 가지로 볼 수 있다.
BPM 기능은 특별히 새로운 IT 기술에 의존하는 것이 아니라 충분히 성숙되어 그 효과가 입증된 기존 기술의 조합을 통하여 구현될 수 있다. BPM 기술의 핵심 구성 요소는 프로세스 매핑 기술, 웍플로우 관리 기술, 기업애플리케이션통합(Enterprise Application Integration : EAI) 기술, 웹 서비스(Web service) 기술 등을 포함한다. 그 중, 프로세스 매핑 기술, 웍플로우 관리 기술, EAI 기술 등은 이미 성숙 단계에 있고, 웹 서비스 기술은 마이크로소프트, IBM 등 대형 소프트웨어 공급업체들의 지원으로 초기 확산 단계에 있다.

2. IT Evolutions에서의 BPM
BPM을 구성하는 IT 기술의 발전 추세는 <그림 2>와 같다. BPM은 BPM을 위한 특별한 기술이 존재하는 것이 아니라, IT 발전 추세에 따라 같이 발전하는 기술이며, 여러 가지 필요한 기술의 적절한 조합을 통하여 BPM을 실현하게 된다.

2.1 추상화(Abstraction)의 가속화
소프트웨어 프로그램의 개발 언어나 개발 방법은 계속해서 추상화를 추구하고 있다. 1970년대의 ‘구조화된 절차적 언어(Structured Procedural language)’는 데이터 추상화(data abstraction)를, 1980년대의 객체지향 프로그래밍(Object Oriented Programming : OOP)은 데이터 추상화에 행위 추상화(behavior abstraction)를 포함시키게 된다.
CORBA, DCOM, EJB 등으로 대표되는 컴포넌트(component) 기술은 1990년대에 이르러 발전하기 시작하였다. 컴포넌트 기술은 OOP의 개념을 발전시켜 데이터, 행위를 포함할 뿐만 아니라 분산 시스템 환경에서도 작동할 수 있는 높은 수준의 추상화(high level abstraction)를 제공하게 된다. 그러나 컴포넌트 기술은 시스템/플랫폼에 종속적이어서 이기종간의 호환성이 보장되지 않았다. 이런 점을 보완하기 위해 2000년대 들어, 시스템/플랫폼 독립적인 높은 수준의 추상화를 제공하는 웹 서비스 기술이 각광을 받고 있다. 시스템/플랫폼에 독립적일 뿐 아니라, 소프트웨어 에이전트(software agent)간의 협업, 지능까지도 추상화시킨 멀티 에이전트(multi-agent) 시스템은 현존하는 개념 중 가장 추상화가 높은 수준으로 웹 서비스 이후에 필요성이 대두될 것으로 예상된다.

2.2 애플리케이션에서 기능 분리
애플리케이션 측면에서 보면, 항상 사용되는 공통 기능 또는 요소에 대한 객체화가 추진되고 있다. 단적인 사례가 데이터베이스 관리 시스템(DBMS)일 것이다. DBMS가 나오기 이전에, 모든 응용 프로그램들이 계층형 데이터베이스를 응용 프로그램 내부에 두고 있었다. 데이터량이 증가하고, 데이터간의 관계가 분명해짐에 따라, 기업은 여러 응용 시스템의 데이터를 공유할 수 있는 표준 기반의 DBMS를 구축하게 된다. 현재 대부분의 기업용 애플리케이션은 DBMS를 기본으로 사용하고 있다.
현재 대부분의 응용 프로그램 또는 패키지 소프트웨어들은 프로세스를 내부에 두고 있다. 그러나 프로세스를 체계적으로 관리하고 변화하는 프로세스에 대해 민첩하게 적응하기 위해서는, 응용 프로그램에서 데이터를 분리한 것과 마찬가지로, 프로세스도 분리하여 관리할 필요가 있을 것이다. 이러한 점에서 웍플로우 관리 시스템은 선도적인 역할을 담당해왔다. 프로세스를 명확하게 표현하고 응용 프로그램에서 프로세스를 분리하여 관리함으로써, 프로세스 실행에 관한 정보를 자동으로 추출, 프로세스 및 자원을 공유할 수 있도록 하였다. BPM에서는 웍플로우 관리 시스템의 장점을 모두 받아들이고 있지만, 웍플로우 관리 시스템보다는 훨씬 더 명확하게 프로세스를 표현하고 프로세스의 라이프사이클 관리까지를 포함하는 포괄적인 관리 방안을 제시한다.

2.3 프로세스 표준(Process standards)
프로세스 표준은 산업별 표준(vertical standards)에서 범용 표준(horizontal standards)으로 발전하고 있다.
BPR이 성행하면서 산업별로 기업의 프로세스 최적화 노력의 일환으로, 성공사례(best practices) - 예를 들면 ▲소매업의 CPFR (Collaboration Planning, Forecasting and Replenishment) ▲금융업의 STP(Straight Through Processing) ▲통신업의 TMFORUM (Tele-Management Forum) ▲제조업의 STEP(Standards for the Exchange of Product data model) ▲보험업/의료업의 HPIAA ▲제약업의 GAMP(Good Automated Manufacturing Practices) ▲은행업의 바젤자본협약(Basel Capital Accord) 등 - 를 만들기 위한 노력이 계속되어왔다.
이후 전자상거래가 활성화되면서, 기업간의 협업을 지원하기 위해 전자산업의 로제타넷(RosettaNet), 반도체산업의 SCOR(Supply Chain Operations Reference-model), 전자상거래 기준인 커머스넷(CommerceNet) 등이 표준화 과정을 거쳤다.
한편, 근래에는 산업군별로 제정된 프로세스 표준들에 반해, 적용 산업군을 특화시키지 않은 범용 표준(horizontal standards), 즉 BPEL(Business Process Execution Language for Web service)이나 BPML(Business Process Modeling Language), BPMN(Business Process Modeling Notation) 등이 포괄적인(generic) 프로세스의 표준들로 제정되기 시작한다.

3. 실시간기업(Realtime Enterprise)과 BPM
3.1 실시간기업(RTE)
RTE에 관한 여러 가지 정의가 내려질 수 있지만, 최근 가트너 그룹에서 재정립한 RTE 구성 핵심 기능은 다음의 두 가지로 요약될 수 있다.
1) 기업 내·외부에 분산되어 있는 데이터를 실시간으로 수집, 가공하여 조직이 직면한 기회나 문제점들을 더 빨리, 더 정확하게 판단하여 신속한 의사 결정을 내리도록 하는 기능
2) 빠르게 변화할 가능성이 존재하는 핵심 비즈니스 프로세스 관리와 실행에 있어서의 지연을 제거하고 프로세스를 계속해서 최적화하는 기능.

3.2 RTE 실현을 위한 BPM의 역할
BPMS(Business Process Management System)는 RTE의 핵심 기능 중 두 번째 기능을 직접 지원하는 하부 시스템을 제공한다. BPMS가 지향하는 기술을 사용하여 프로세스, 조직, IT 인프라 전반에 걸쳐 유연성과 민첩성을 향상시켜 RTE 실현을 지원한다. 많은 분석가들은 RTE 실현을 위해 BPMS가 가장 효과적이라고 믿고 있다. BPMS는 RTE의 첫 번째 기능을 간접적으로 지원한다. 특히 업무 프로세스 자동화 시스템 지원에 의해 업무가 진행되는 정확한 시점에 정보를 수집할 수 있어 업무 진행 결과가 아닌 업무 진행 과정에서의 문제점들을 좀 더 빠르게 파악할 수 있고, 시스템 통합 기능을 활용하여 분산되어 있는 시스템의 데이터를 적시에 활용할 수 있도록 해준다.

4. BPM Impact와 Enterprise
4.1 BPM 효과
전략 실행 지원
기업의 전략 목표가 적절히 실행되고 있는지 여부를 한눈에 파악하고 통제한다. 전략 목표에 따른 행동 계획(action plan)이나 목표를 이루기 위한 프로세스 실행 상태를 실시간으로 모니터링하고 전략 목표대로 실행되지 않을 경우, 통제할 수 있는 기능을 제공한다. BPMS는 프로세스 중심의 전략경영 프레임웍을 지원하여 기존의 전략 실현을 위한 성과 관리 시스템을 보완하고, 프로세스 성과관리를 통해 기능성과를 사전에 예측하여 전략 목표 달성을 지원한다.

민첩성 확보
외부 환경의 변화로 인한 전략 목표 수정 및 이에 따른 프로세스 변화, 자원 최적화 등을 민첩하게 지원한다. 기업의 단기, 중기, 장기에 따른 전략 변화, 또는 불확실성에서 기인하는 전략의 동적인 변화, 법률 및 규제에 따른 변화 등과 같은 외부 환경 변화에 적응할 수 있도록 기업의 프로세스는 계속 최적화 되어야 하며, BPMS는 이러한 프로세스 변화에 따른 민첩성을 확보할 수 있는 프레임웍을 제공한다.

경영 투명성 확보
BPMS의 도입을 통해 전사 자원의 현황을 실시간으로 조회할 수 있다. 이에 따라 전사의 업무 흐름 현황과 문제점을 실시간으로 한눈에 파악할 수 있어 경영의 투명성을 확보할 수 있다. 표준화된 프로세스에 따라 업무를 적시에 수행하게 되고 실행 중 발생하는 문제점들이 실시간으로 노출되므로 사전 예측 및 통제가 가능하게 된다.

프로세스 개선에 따른 경쟁력 확보
표준화된 프로세스대로 실행하여 문제점이 발생할 경우, 축적된 프로세스 성과 지표 값을 분석하여 개선점을 찾아내고 해당 프로세스를 개선한다. 계속해서 문제가 발생하는, 또는 전략 목표 실행에 부적합한 프로세스에 대해서는 BPMS가 제공하는 프레임웍과 도구들을 활용하여 지속적으로 프로세스를 개선하게 된다. 또한 BPMS는 개선된 프로세스의 기대효과를 정량적으로 제공하게 되며, 개선 프로세스를 신속하게 적용시킬 수 있는 기반을 제공한다.

비즈니스-IT 갭 최소화
BPMS가 추구하는 방향은 IT 담당자가 아닌 비즈니스 담당자들이 프로세스를 직접 관리할 수 있도록 하는 것이다. 비즈니스 요구에 따른 변화를 IT가 기술적인 문제로, 또는 시간, 비용적인 문제로 수용하지 못하는 경우를 없애고, 프로세스의 변화를 IT 시스템이 즉각적으로 수용할 수 있도록 하는 것이다. 현재 시점에서 이러한 BPMS의 최종 목표를 당장 실현하기는 어려운 점들이 있지만, 현존하는 BPMS를 도입할 경우, 새로운 시스템 개발 기간은 30%정도 단축되며, 기존 개발 방식 대비 15% 정도의 ROI 개선 효과가 있다고 알려져 있다.

4.2 예상되는 변화
기업의 전략 실현 기반 확보
많은 기업들은 전략 실현을 위해 균형성과 관리(Balanced Scorecard : BSC) 등의 성과 관리 시스템을 도입하여 운영하고 있으나, 성과 관리 시스템을 통한 전략 실현은 많은 문제점들을 가지고 있어, 90%는 실패하고 있는 실정이다. BPMS는 성과 관리 시스템을 통해 전략을 실현할 수 있도록 여러 가지 방안을 제시하고 있다.
BPMS가 추구하는 기업의 전략 실현 방안은 ▲프로세스 표준화를 통해 업무 절차와 책임 소재, 업무 규정 등을 명확하게 표현, 공유하고, ▲표준화된 프로세스를 강제로 실행시켜 투명성을 확보하며, ▲전략 실현을 위한 핵심 프로세스의 진행 상황을 실시간으로 모니터링 및 통제한다. 또 ▲프로세스 성과 지표의 모니터링을 통해 전략 목표 실현 가능성을 사전에 예측하여 문제점을 해결하며, ▲실적 데이터를 근거로 과학적인 방법을 통해 문제점들을 분석하여 원인을 규명하고, ▲목표 실현에 문제점이 노출된 프로세스를 빠르게 개선하여 적용할 수 있도록 하는 것이다.
이러한 방안들을 통해 기업은 전략을 실현할 수 있는 체계적인 성과 관리 시스템을 갖추게 된다. BPM시스템을 확보하면, 기업의 현황을 웹을 통해 항시 모니터링 할 수 있게 된다. 전략 목표 실행이 어떻게 진행되고 있는지, 문제점들이 무엇인지, 통제가 필요한 부분이 어떤 것인지, 현재 프로세스의 진행 상황으로 볼 때 전략 목표치가 어느 정도 달성될 수 있는지 등, 기업의 임원을 포함한 전 직원에게 필요한 정보들이 적시에 제공 되어, 기업 전략과 성과 관리 시스템에 대한 관심도가 높아짐은 물론, 예외 사항 발생에 대해 신속한 대응을 할 수 있게 된다.

표준 프로세스 실행에 따른 업무 생산성 및 업무 수준(quality) 향상
2000년 현재 국내의 제조업 부가가치 노동생산성은 미국을 제외한 선진국과 거의 대등한 수준이다. 그러나 서비스업 부가가치 노동생산성은 다른 선진국의 절반 수준으로, 같은 서비스를 제공하기 위해 선진국보다 두 배의 인력이 필요한 실정이다. 국내 서비스업 부가가치 노동생산성이 낮은 이유는 여러 가지가 있을 수 있으나, 서비스 업종의 프로세스 관리 미흡도 큰 원인이 된다(상대적으로 제조업은 공정 관리를 통한 생산 프로세스 관리 수준이 선진국에 접근해있다).
BPMS을 통한 표준 업무 프로세스의 정립만으로도 10%~40%의 생산성 증대 효과를 기대할 수 있다. BPMS를 도입하면, 업무 담당자들은 일시적으로 불편함을 느낄 수 있다. 예를 들면, 예전까지 수행해 왔던 업무 절차가 달라질 수도 있고, 커뮤니케이션 통로(communication channel)가 웹으로 일원화되어 생소한 기업 문화의 변화를 겪을 수도 있다. 그러나 업무 프로세스 자동화에 따른 기대 효과를 생각하면 이러한 변화에 대한 일시적 불편은 아주 사소한 것이다. BPMS 도입에 따른 업무 프로세스 자동화를 통해 업무 전달 과정이 자동화 되고, 프로세스 중심의 IT 시스템 통합이 구현될 경우, 생산성은 최소 30% 증대되며, 작업 오류도 50% 이상 줄어들게 된다.

기능 중심적(Function-oriented) 사고를 프로세스 중심적(process-oriented) 사고로 전환
BPMS에 있어 프로세스 최적화의 목적은 기업 전략 실현에 따른 경쟁력의 확보에 있다. 또한 기업의 경쟁력 향상은 단일 프로세스 최적화(Optimize) 차원이 아닌 전사적인 관점에서 프로세스를 최적화해야 한다. BPMS의 도입은 임직원들에게 기능 위주의 사고방식에서 프로세스 중심의 사고로의 전환을 가능하게 한다.
기존의 기능(조직) 위주의 사고방식은 기업의 전체적인 관점이 아니라 기능 중심으로 사고하고 행동하여, 하나의 조직 내부에서 프로세스와 자원의 최적화를 지향하게 된다. 예를 들면, 영업 부서는 영업에 필요한 부분만을 최적화하며, 생산 부서에서는 생산목표 (초과)달성을 위해 모든 노력을 기울이게 된다. 그렇다면, 각 기능의 최적화가 과연 기업 전체의 최적화를 의미하는가? 당연히 답은 ‘아니다’일 것이다. 각 기능의 최적화가 전체 최적화가 되기 위한 전제 조건은 각 기능의 목적이 하나로 일치되어 있을 경우에만 가능하다. 각 기능의 목적간에 충돌(conflict)이 생기면, 개별 기능 최적화는 절대로 전체 기능 최적화가 되지 못하며, 한 기능의 최적화는 다른 기능이 최적화 되지 못하게 한다(Pareto optimality). 이러한 ‘functional silo’는 조직 경영 관점에서 많은 문제점을 던지고 있다.
BPMS의 도입을 통해 전 직원은 프로세스의 중요성, 특히 cross-functional한 엔드투엔드(end-to-end) 프로세스의 중요성을 인식하게 되어, 고객 중심적이고, 목표 지향적이며, 전체적인 관점에서 업무를 수행하게 되는 관점을 가지게 된다. 예를 들면, 개별 기능의 최적화 보다는 기업의 전략 목표 실현을 우선순위에 두고 업무를 수행하게 되는 것이다. 이러한 프로세스 중심 사고방식의 고취는 단순히 교육이나 일시적인 프로그램을 통해서 이루어 질 수 있는 것이 아니며, BPMS에서 기반을 제공하는 프로세스 중심의 성과 관리 시스템에 의해 체계적으로 이루어지고 생활화 되어야 한다.

자원 관리의 최적화
자원의 재배치, 신규 투자, 구조 조정 등, 기업들은 수시로 자원 관리를 최적화하기 위해 노력하고 있다. BPMS는 이러한 자원 관리를 최적화하기 위한 많은 정보를 제공한다. 프로세스 매핑을 통하여 보면 업무 수준까지의 role & responsibility matrix(R & R matrix)를 구성할 수 있다. R & R matrix를 조직과 연계시키면, 조직 개편을 위한 업무와 role의 구성이 가시화된다.
가시화된 업무와 role, 조직의 관계는 체계적인 조정 방안을 수립하는데 많은 도움이 된다. 표준 업무 프로세스를 실행시키면, 자연스럽게 프로세스의 병목현상(bottleneck)이 발견되고 업무 사이클 타임(Cycle Time)이 중요한 프로세스인 경우에는 분석을 통해 병목 현상을 해소할 수 있는 방안을 BPMS가 제공한다. 또한 프로세스 실행 결과로 전략 실현에 문제점이 조기 발견되므로, 동적인 자원의 재배치를 구성할 수 있도록 해준다.
BPMS 자체가 자원을 최적화하지는 못하지만, BPMS 기반에 제공하는 정보들을 활용하여, 기존의 방식과는 차원이 다른, 과학적인 방법에 근거한 자원 최적화를 도모할 수 있다.

전 직원이 참여하는 프로세스 개선
전 직원이 프로세스에 대한 이해도가 증진되어 고객 중심, 전략 목표 중심, 전체적인 뷰(view)를 가지게 되고, 불합리하거나 비효율적인 프로세스에 대한 개선 제안을 하게 된다. 이에 따른 프로세스 개선 효과는 비용으로 예측하기 힘들 정도일 것이며, 경쟁사 대비 경쟁력을 자연스럽게 확보할 수 있다. 이런 CPI(Continuous Process Improvement)는 6-시그마(Sigma)의 프로세스 개선 프로젝트와도 많은 관련을 맺고 있는데, 일본 도요타(Toyota)의 개선제안(Kaizen Teian) 운동의 핵심적 부분과 그 괘를 같이 한다.

Posted by 아름프로
Give Your Business Logic a Framework with Drools
by Paul Browne
08/03/2005


Most web and enterprise Java applications can be split into three parts: a front end to talk to the user, a service layer to talk to back-end systems such as databases, and business logic in between. While it is now common practice to use frameworks for both front- and back-end requirements (e.g., Struts, Cocoon, Spring, Hibernate, JDO, and Entity Beans), there is no standard way of structuring business logic. Frameworks like EJB and Spring do this at a high level, but don't help us in organizing our code. Wouldn't it would be great if we could replace messy, tangled if...then statements with a framework that gave us the same benefits of configurability, readability, and reuse that we already enjoy in other areas? This article suggests using the Drools rules engine as a framework to solve the problem.

.....
자세한 것은 링크 참조..
Posted by 아름프로
Spring에 Drools도 얻을 수 있네요.
참으로 기특(!) 합니다.  ^^
Posted by 아름프로

There are some similarities between the two; they both support JMS 1.1 and run inside JBoss 4.x.



However ActiveMQ does offer some specific differences and advantages (at least from our perspective)




            
  • ActiveMQ works great in any JVM not just inside the JBoss application server

  •         
  • ActiveMQ supports distributed destinations across networks

  •         
  • ActiveMQ supports reliable connections with configurable automatic reconnection

  •         
  • ActiveMQ has great Spring Support

  •         
  • ActiveMQ supports Composite Destinations, Ajax, REST, Jabber and has complete support for Advisory Message support

  •         
  • ActiveMQ is very fast; often 10x faster than JBossMQ. Send us an email to dev at logicblaze.com and we can send you a performance report. If you're not convinced by performance reports - try running our open source JMS performance benchmark youself.

Posted by 아름프로

[svn] SVN + Eclipse Subclipse

2005. 8. 3. 09:53
CVS대체 SVN + Eclipse 통합
에 관한 내용입니다.
최근 오픈 소스중에는 cvs대신 svn을 사용하는 것들이 늘어가긴하네요.
(예, ibatis)
Posted by 아름프로

Where is BPEL 2.0 going?


I am commenting here the WS-BPEL working
draft 4/23/04 which is publicly available on
the OASIS web site
.


It looks like the BPEL working group is
moving ahead with its plan to focus BPEL on B2B relationships. It
can be applied in one of two ways, a BPEL process can define:



  • "a business protocol role, using the
    notion of abstract process".

  • "an executable business process, i.e.
    the logic and state of the process determine the nature and
    sequence of the Web Service interactions conducted at each
    business partner, and thus the interaction protocols".



One of the BPEL goals is to "lower the cost
in establishing cross-enterprise automated business processes".


I guess I am very confused by these
statements. After working for four years on ebXML, and being the
editor of the ebXML Business Process Specification Schema module, I
cannot but wonder how BPEL can be used in B2B scenarios. So
problably the best way to continue my commentary is to take an
example, say a simple RFQ/Order/Payment collaboration between a
buyer and a supplier. I have taken an example that is simple but non
trivial like the so many examples used to illustrate BPEL.




(Click to enlarge)


This example is using
BPMN
and details 3 main components of the overall process. The
private process of the buyer, the private process of the supplier
and collaboration between the buyer, the supplier, the bank and the
credit check organization. The private process starts and as part of
its "GetQuote" activity it sends an RFQ document to the supplier
(this is when the collaboration starts). When the supplier receives
this document it dispatches it to its ProcessRFQ activity. This
activity is invoking the PrepareQuote activity which is actually an
activity performed by a user. As part of the activity, the user
invokes the ManageAccount activity which is in charge of creating a
customer record if the customer is unknown and in all cases to
perform a credit check with a partner agency. If all goes well, a
quote is returned to the processRFQ activity which forward it to the
customer. If the customer likes the quote, its process stipulates
that it will start the SendOrder activity which creates and send an
order relative to the quote. When the order is received by the
supplier, it dispatches to the processRFQ activity, which ends at
this point, and initiate the processOrder activity which notifies
the IssueInvoice activity which sends an invoice as a response to
the order. And so on...


If you want to see the details of one
activity, please see figure 2.


Now, as you can see here, there are several
concepts that ARE NOT supported by BPEL:



  • Of course the notion of activities
    performed by a user

  • the notion of independent activities,
    everything in a BPEL is a web service operation, not "an
    activity", i.e. a unit of work

  • the notion of activities interacting
    together two-by-two. One the supplier side, BPEL requires for
    instance two BPEL definitions, one to support the interaction
    between processRFQ and CreateQuote on one side and CreateQuote
    and ManageUser on the other side

  • On the B2B front, BPEL cannot
    efficiently represent the choreography of the collaboration
    independently of the abstract behavior of each party (See
    collaboration in blue)

  • It cannot represent either the
    multiparty collaboration featured above, where a credit check is
    performs on initiation of the Order/Invoice operation (i.e. when
    the request is sent and before the Invoice is returned). BPEL
    can only represent multiparty collaboration that have a "center"
    of control. We are back to the Ariba/CommerceOne days with some
    B2B agent in the middle. We all know how successful was that
    model.


Now, on the "EAI" front (BPEL does
not claim clearly that space but some vendors like Collaxa view as a
domain of application of BPEL), BPEL is not much more efficient than
on the business process or B2B collaboration space. If I completely agree with Collaxa
on the fact that EAI is a good domain of application for BPEL, BPEL is
still missing the capability of transformation so useful in that
space. In the example above, for instance I cannot say that the
order document consumed by my ProcessQuote activity is actually a
transformed version of the order document sent by the buyer. These
kinds of transformation are done "by hand" with the assign/copy
activity. BPEL is so entrenched in B2B now that when you try to apply BPEL to EAI
you realize that every message based activity (send receive and
invoke) have a "partnerLink", ... but in EAI there is no partner,
just components. So if you now have a private process linking your
B2B interface to your back end systems you are left with this
dilemma that some activities must have a partnerLink while other don't.


Nothing has fundamentally changed compared
to my previous analysis of BPEL.


So where does this leaves us? I have been
arguing for sometime that BPEL is a programming language that let us
write business logic that can be part of a business process. In the
example above, the processRFQ or manageAccount, or sendOrder/processOrder
activities are all (web) services that manage a given business
entity (RFQ, Account, Order). The lifecycle of these services is
long running itself as the business processes they participate in.
Typically this business logic is very hard to write, debug,
maintain. Most technologies like Java/J2EE or .NET/COM+ have never
been designed for that purpose. All message handling is done as hoc.
It looks like that some people understand this since IBM and BEA
(and Collaxa way before them) has come up with the concept of
BPEL-J.


So a service would look like this:




src="bpel_2_0_files/image002.gif" v:shapes="_x0000_s1025">


This service is "orchestrated" and can
easily be described in BPEL (without partnerLinks). The business
process itself is not an orchestration but a choreography. This
concept is now supported by WS-CDL and
its authors, and I think to a certain extend by
BPMN
.


Unfortunately, by pushing BPEL in the wrong
direction, the working groups and editors will achieve nothing: the
B2B model supported by BPEL will not be able to compete with the one
proposed by WS-CDL and ebXML BPSS, while the at the same time, we
would still be waiting for an "orchestration" language that no one
else is working on. I have my little idea of the politics behind all
this but it is kind of sad that after working for 5 years on the
problem (XLang was announced in the spring of 1999) we never left
the starting blocks, as I said before, BPEL represents how we
thought (I thought) about Business Processes 5 years ago. In five
years, we've got five years behind.


Jean-Jacques Dubray 6/13/04


 


 

Posted by 아름프로

ESB vs SOA

2005. 8. 2. 16:00

ESB vs SOA


I also would like to add some precisions on the differences between ESB (Enterprise Service Bus)
and SOA. There
is a fundamental difference between EAI (and the web service enabled EAI, a.k.a.
ESB) and SOA. EAI relies on a "common information model", with a
central EAI manager, onto which enterprise systems are bolted via
connectors (be it web services, JCA or anything else). The bus represents both
the common information model and the EAI manager. In an ESB, connected systems are not in control, the EAI manager is.
ESB is not SOA. SOA requires a registry onto
which peers registers and find other peers. In a SOA, every peer is at the same
level, there is no center of control, nothing in the middle, therefore no need
for a common
information model. Peers are not defined by their "contract" but
rather by how they interact with each other (i.e. collaborate via a message
choreography). To answer Collaxa's question, IMHO, Indigo is not an ESB, it
is a true SOA framework, just like TME's
GAIA or SUN's

JXTA project. (Please
take a look at figure 7 of the BCM introduction
). ESB can be viewed as a very
particular case of SOA, a special kind of fabric if you will, but it is
certainly not the only fabric possible. 


Another aspect that few people seem to be grasping at the moment is that for building SOAs
we need the
notion of "service domains" (no, this is not the same thing as
Scopes, since scopes have always a context associated to them). This notion is natural as soon as we
think of a company boundary (which will be its own service domain), but the
concept is also useful at a lower level of granularity. It greatly simplifies
problems like management, security, ... but also offer an extra level of
decoupling. WS-CAF is going a bit in this direction with the concept of
coordination, but it stops short of providing "domain level" logic, it
rather relies on well defined composition of web services packaged in a
"composite application".

Posted by 아름프로

This page descibes the specifics for setting up various Jms Servers in Mule. For more information about all Mule Jms configuration go here.


The following Jms server configurations are described -



If you have configuration for a Jms server not listed here or there is a mistake on this page please raise a jira to get the document updated. Thanks.










JMS Endpoint URIs and JNDI destinations

Some JNDI implementations treat dot (.) and forward slash symbols differently in destination names, so jms://order/incoming may not be the same as jms://order.incoming, but the former will not give you the order/incoming destination, but incoming. If you are dealing with such a server (JBoss is known to behave this way), here is a trick to help you:




jms:////order/incoming




See Mule Endpoint URIs for reference. and JmsEndpointTestCase for some more examples.













The following are just examples and configuration values will change depending on your application environment.





ActiveMQ


To configure a default embedded broker.




<connector name="jmsConnector" className="org.mule.providers.jms.JmsConnector">
<properties>
<property name="specification" value="1.1"/>
<property name="connectionFactoryJndiName" value="ConnectionFactory"/>
<property name="jndiInitialFactory"
value="org.activemq.jndi.ActiveMQInitialContextFactory"/>
<map name="connectionFactoryProperties">
<property name="brokerURL" value="vm://localhost"/>
<property name="brokerXmlConfig"
value="classpath:/org/mule/test/activemq-config.xml"/>
</map>
</properties>
</connector>



The specification property tells Mule to use the Jms 1.1 specification, which is the specification ActiveMQ supports. To disable queue persistence, you'll need to specify it in ActiveMQ configuration file (see below).











You can pass in any provider specific configuration using the connectionFactoryProperties property on the JmsConnector. These will get set on the ConnectionFactory implementation.






To configure ActiveMQ on a specific brokerUrl or from an ActiveMQ configuration file use the following (Spring version)




mule-config.xml

<!-- Give this container a name in case you have more than one container,
e.g. Spring, Plexus, JNDI, EJB, etc. You can safely omit it if you
don't have these requirements.
-->
<container-context className="org.mule.extras.spring.SpringContainerContext"
name="spring">
<properties>
<property name="configFile" value="classpath:/org/mule/test/activemq-spring.xml"/>
</properties>
</container-context>

<connector name="jmsConnector" className="org.mule.providers.jms.JmsConnector">
<properties>
<property name="specification" value="1.1"/>
<!-- The container name must be the same as above in
container-context element or empty (then the first available
one will be used.
-->
<container-property name="connectionFactory"
reference="activeMqConnectionFactory"
container="spring"
</properties>
</connector>



Configure ActiveMQ from Spring:




activemq-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<bean id="activeMqConnectionFactory" class="org.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="vm://localhost"/>
<property name="brokerXmlConfig"
value="classpath:/org/mule/test/activemq-config.xml"/>
<!-- More properties you want set on ActiveMQConnectionFactory -->
</bean>
</beans>



Your ActiveMQ config is a standard one. E.g. to use in-JVM messaging without persistent queues (very useful for testing) the file will be as follows:




activemq-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//ACTIVEMQ//DTD//EN" "http://activemq.org/dtd/activemq.dtd">

<beans>
<broker>
<connector>
<serverTransport uri="vm://localhost"/>
</connector>

<persistence>
<vmPersistence/>
</persistence>
</broker>
</beans>


JBoss MQ


To configure a JBoss Jms connector for Mule use the following -




<connector name="jmsConnector" className="org.mule.providers.jms.JmsConnector">
<properties>
<property name="jndiInitialFactory"
value="org.jnp.interfaces.NamingContextFactory"/>
<property name="jndiProviderUrl" value="jnp://localhost/"/>
<property name="connectionFactoryJndiName" value="java:/ConnectionFactory"/>
</properties>
</connector>



Any provider-specific properties can be passed to the InitialContext for this connector using the jndiProviderProperties attribute. Use connectionFactoryProperties to set JBoss-specific properties on the ConnectionFactory.



OpenJms


The following example configuration describes how to configure a MUle JmsConnector for OpenJms. You will probably need to change the connectionFactoryJndiName to one that is configured from your OpenJms configuration.




<connector name="jmsConnector" className="org.mule.providers.jms.JmsConnector">
<properties>
<property name="connectionFactoryJndiName" value="QueueConnectionFactory"/>
<property name="jndiInitialFactory"
value="org.exolab.jms.jndi.InitialContextFactory"/>
<property name="jndiProviderUrl" value="tcp://localhost:3035"/>
</properties>
</connector>


UberMQ


Todo. If you are using Mule with Uber MQ please contact us with your configuration and any tips to getting Uber MQ and Mule working together. Thanks!



WebLogic Jms


The configuration shown is for Weblogic 8.1 but should work with previous versions.




<connector name="jmsConnector" className="org.mule.providers.jms.JmsConnector">
<properties>
<property name="specification" value="1.0.2b"/>
<property name="connectionFactoryJndiName"
value="yourConnectionFactory" />
<property name="jndiInitialFactory"
value="weblogic.jndi.WLInitialContextFactory"/>
<property name="jndiProviderUrl" value="t3://localhost:7001"/>
</properties>
</connector>


Oracle Advanced Queuing (AQ)


There are some tricks to getting Oracle AQ working with Mule because the AQ implementation veers from the Jms specification when creating Connection Factories. The big difference is that Oracle uses a db-centric queue model meaning that really when you create a Connection you are creating a Oracle Jdbc connection. This connector will let Mule talk via the Jms API to a queue in an oracle database without using Jndi. (oracle standard edition disables exporting a queue to a repository).
This connector can be used to send a jms message when table data changes.


The Oracle JMS Provider extends the standard Mule Jms Provider with functionality specific to Oracle's JMS implementation based on Advanced Queueing (Oracle AQ).


The javadoc for this transport provider can be found here. And the Source Xref can be found here.


The Oracle JMS Provider adds support for queues with ADT (Advanced Data Type) payloads, including Oracle's native XML data type


Unlike the standard JMS Provider, the Oracle JMS Provider does



not require a JNDI provider to use.








As of Oracle 9i, only the JMS 1.0.2b specification is supported.




Properties


In addition to the properties available for the standard Jms Provider, the Oracle JMS Provider adds the following properties:




























Property Description Default Required
url The JDBC URL for the Oracle database, for example jdbc:oracle:oci:@myhost.







The user and password may be specified in the URL itself, for example jdbc:oracle:oci:scott/tiger@myhost, in which case the (standard JMS Provider) properties username and password are not required.



  yes
multipleSessionsPerConnection Some versions of Oracle do not support more than one JMS session per connection. In this case we need to open a new connection for each session to avoid the following error:
JMS-106: Cannot have more than one open Session on a JMSConnection
false no
payloadFactory If the queue's payload is an ADT (Oracle Advanced Data Type), the appropriate payload factory must be specified in the endpoint's properties.   no


Transformers


In addition to the transformers available for the standard Jms Provider, the Oracle JMS Provider adds the following transformers, found in org.mule.vendor.oracle.jms.transformers.
























Transformer Description
StringToXMLMessage Expects a string containing properly-formed XML. Creates a JMS message whose payload is Oracle's native XML data type.
XMLMessageToDOM Expects a JMS message whose payload is Oracle's native XML data type. Returns the XML as a W3C Document (DOM).
XMLMessageToStream Expects a JMS message whose payload is Oracle's native XML data type. Returns the XML as an InputStream.
XMLMessageToString Expects a JMS message whose payload is Oracle's native XML data type. Returns the XML as a String.


The default transformers are the same as the standard JMS Provider (JMSMessageToObject and ObjectToJMSMessage).


Example Configuration


The following is an example configuration using the Oracle JMS Provider:




<mule-configuration id="TestConfiguration" version="1.0">
<connector name="oracleJmsConnector" className="org.mule.vendor.oracle.jms.OracleJmsConnector">
<properties>
<property name="url" value="jdbc:oracle:oci:@myhost" />
<property name="username" value="scott" />
<property name="password" value="tiger" />
</properties>
</connector>
<transformers>
<transformer name="StringToXMLMessage"
className="org.mule.vendor.oracle.jms.transformers.StringToXMLMessage"
returnClass="oracle.jms.AdtMessage" />
<transformer name="XMLMessageToString"
className="org.mule.vendor.oracle.jms.transformers.XMLMessageToString"
returnClass="java.lang.String" />
</transformers>
<global-endpoints>
<endpoint name="XmlQueue" address="jms://XML_QUEUE" transformers="StringToXMLMessage" />
</global-endpoints>
<model name="Test Model">
<mule-descriptor name="XML-Driven UMO" implementation="com.foo.MyUMO">
<inbound-router>
<endpoint address="jms://XML_QUEUE" transformers="XMLMessageToString">
<properties>
<property name="payloadFactory" value="oracle.xdb.XMLTypeFactory" />
</properties>
</endpoint>
</inbound-router>
</mule-descriptor>
</model>
</mule-configuration>



Refer to the unit tests for more examples on how to use the provider.


Dependencies


The Oracle JMS Provider requires the following Oracle libraries, which should be included in your Oracle installation:



  • ojdbc14.jar

  • aqapi13.jar

  • jmscommon.jar

  • xdb.jar (only required for native XML support)

  • xmlparserv2.jar (only required for native XML support)


Unit Tests


The unit tests consist of two test suites: UnitTestSuite.java and IntegrationTestSuite.java. Only the integration test suite requires a live Oracle database.
In order to run the integration tests, you must edit the settings in file src/test/java/org/mule/vendor/oracle/jms/TestConfig.java according to your Oracle database.










The tests assume that your Oracle user has sufficient privileges to create and drop queues in the database.




Roadmap (TO DO)



  • Internationalization of messages

  • Test with Oracle 10g (has only been tested with Oracle 9i)

  • Test with other ADT types (has only been tested with XMLType)

  • Test with topics (has only been tested with queues)

  • Test with Oracle JDBC Thin Driver (has only been tested with the OCI driver)

  • Add XA support



SeeBeyond


The configuration provided is for the SeeBeyond ICAN IQManager JMS Server. Note the values in [ ] (square brackets), these should be replaced by values relevant to your installation.




<connector name="jmsConnector" className="org.mule.providers.jms.JmsConnector">
<properties>
<property name="jndiInitialFactory"
value="com.stc.is.naming.NamingContextFactory"/>
<!-- port 18006 is the default, change it in the SeeBeyond designer -->
<property name="jndiProviderUrl" value="[ServerName]:18006"/>
<property name="connectionFactoryJndiName"
value="/jms/connectionfactory/queue/[LogicalHostName]_[JMS iqManager Name]" />
</properties>
</connector>



For a topic, the connectionFactoryJndiName would be /jms/connectionfactory/



topic/[LogicalHostName]_[JMS iqManager Name].


You will need the following jars and files from the Java ApiKit on your classpath:



  • com.stc.jmsis.jar

  • fscontext.jar

  • providerutil.jar

  • jms.jar

  • jta.jar

  • log4j.jar

  • log4j.properties


Thanks to Brian Kalbfus for contributing this configuration.



IBM WebSphere MQ


To configure a WebSphere MQ Jms connector for Mule use the following -




<connector name="jmsConnector" className="org.mule.providers.jms.JmsConnector">     
<properties>
<property name="specification" value="1.0.2b"/>
<property name="jndiInitialFactory" value="com.sun.jndi.fscontext.RefFSContextFactory"/>
<property name="jndiProviderUrl" value="file:///E:/wsmq_v53/bindings"/>
<property name="connectionFactoryJndiName" value="ConnectionFactory"/>
</properties>
</connector>



The specification property tells Mule to use the Jms 1.0.2b specification, which is the specification WebSphere MQ v5.3 supports.


You will also need the following jars on your classpath:



  • com.ibm.mq.jar

  • com.ibm.mqjms.jar

  • connector.jar



Spirit Wave


The following demonstrates how to configure Mule to use the SpiritWave Jms server.




<connector name="jmsConnector" className="org.mule.providers.jms.JmsConnector">
<properties>
<property name="connectionFactoryJndiName" value="ConnectionFactory"/>
<property name="jndiInitialFactory"
value="com.spirit.core.util.builder.JNDIResolver"/>
<map name="jndiProviderProperties">
<property name="messageChannels" value="tcp://localhost:50607"/>
<property name="driverName" value="SpiritWave"/>
</map>
</properties>
</connector>


Joram Jms


Using Joram with Mule is a little less straight forward that the other Jms servers if you do not have a Jndi context set up for your connections and destinations. If you have Jndi set up you can use the following-




<connector name="JMSConnector" className="org.mule.providers.jms.JmsConnector">
<properties>
<property name="connectionFactoryJndiName" value="QueueConnectionFactory"/>
<property name="specification" value="1.1"/>
<property name="jndiDestinations" value="true"/>
<property name="connectionFactoryJndiName" value="ConnectionFactory"/>
<property name="jndiInitialFactory"
value="fr.dyade.aaa.jndi2.client.NamingContextFactory"/>
<map name="jndiProviderProperties">
<property name="java.naming.factory.host" value="localhost"/>
<property name="java.naming.factory.port" value="16400"/>
</map>
</properties>
</connector>









Durable Subscribers

When using durable subscribers Mule automatically sets the Jms clientId on the connection, if not explicitly set. Joram complains if the clientId is set, so you need to tell Mule not to set it by setting the clientId on the JmsConnector to "".






If you do not have Jndi set up you need to manually create a Jndi Initial Context. You can do this by adding a Mule property factory (like the one listed below). Your configuration will look something like -




<connector name="JMSConnector" className="org.mule.providers.jms.JmsConnector">
<properties>
<property name="connectionFactoryJndiName" value="QueueConnectionFactory"/>
<property name="specification" value="1.1"/>
<property name="jndiDestinations" value="true"/>
<list name="jndiQueues">
<entry value="exception.queue"/>
</list>
<property-factory name="jndiContext" value="com.foo.joram.JoramInitialContextFactory"/>
</properties>
</connector>



The Jndi property factory class will look like the following, though you may want to add support for other Joram properties.




JoramInitialContextFactory.java

public class JoramTest implements PropertyFactory
{
public Object create(Map properties) throws Exception
{
String connectionFactoryJndiName = (String) properties.get("connectionFactoryJndiName");
if (connectionFactoryJndiName == null)
{
throw new InitialisationException(
"connectionFactoryJndiName must be set");
}
// Connecting to JORAM server:
AdminModule.connect("root", "root", 60);

//Create anonymous user if security is not required
User user = User.create("anonymous", "anonymous");
// Creating the JMS administered objects:
javax.jms.ConnectionFactory connFactory = TcpConnectionFactory.create();

// Binding objects in JNDI:
//Create Jndi Queues
javax.naming.Context jndiCtx = new javax.naming.InitialContext();
jndiCtx.bind(connectionFactoryJndiName, connFactory);
List queues = (List)properties.get("jndiQueues");
if(queues!=null) {
Queue queue;
String name;
for (Iterator iterator = queues.iterator(); iterator.hasNext();)
{
name = (String) iterator.next();
queue = (Queue) Queue.create(0);
// Setting free access to the queue:
queue.setFreeReading();
queue.setFreeWriting();
jndiCtx.bind(name, queue);
}
}

//Create Jndi Topics
List topics = (List)properties.get("jndiTopics");
if(topics!=null) {
Topic topic;
String name;
for (Iterator iterator = topics.iterator(); iterator.hasNext();)
{
name = (String) iterator.next();
topic = (Topic) Topic.create(0);
// Setting free access to the queue:
topic.setFreeReading();
topic.setFreeWriting();
jndiCtx.bind(name, topic);
}
}
AdminModule.disconnect();
return jndiCtx;
}
}




Posted by 아름프로
ServiceMix에 대해서는 아직 국내에 소개 되지 않았기에
다들 잘 모르리라 생각한다.

이 녀석은 ActiveMQ로 그래도 좀 유명한 open-source project repository인 codehaus의 JBI(Java Business Intergration)기반의 ESB(Enterprise Servcie Bus)다.
ObjectWeb에서 개발중인(아직 발표하지는 않은) Celtix도 이와 유사한
형태가 될꺼라고는 얘기되고 있기는 하지만,
현재 나온 JBI기반의 첫 오픈소스가 아닐까 싶다.

오픈소스의 BPEL 엔진으로는 쓸만한 유일한 것인 PXE도 서비스에 포함시켰고,
더욱이 Rules based 엔진인 Drools까지 장착하여 ...
최근 BI(Business Integration)쪽의 최고 통합 환경인
ESB(SOA기반) + JBI + Rules Based Engine의 모습을 전체적으로 잘 갖추고 있다.

여기에 개인적으로 매력으로 느껴지는...Spring 지원(사실, 기반이라고해도
될꺼 같다.) 과 Script 지원(Groovy)을 들 수 있다.
메시지 기반의 아래 엔진으로는 ActiveMQ를 내장하고 있기에 MOM기반의
모든 기능과 성능 또한 안정성도 믿을만 하다.

ServiceMix 자체는 아직 1.0M1 이지만, ActiveMQ와 Spring의 메시징쪽에서
왕성하게 활동하는 James Strachan가 프로젝트를 이끌고 있어.
1차 정식릴리즈가 생각보다 빨리 나오지 않을까 하는 기대를 가져본다.

---------------------------------

Mule은 이미 어느정도 알려져 있는 ESB이다.
하지만, 알려진 바처럼 Mule 단순 ESB만을 추구하는 프로젝트는 아니다.
프로젝트 참여자중에 한명인 Ross에 따르면 실제로는
Enterprise Service Network (ESN) platform라고 칭하기도 한다.
어쨌든, 현재까지는 ESB가 중요한 이슈로 떠오른 만큼 이 기반의 엔진으로
소개되고 있과, 기능 또한 훌륭하다.
구현상의 내용은 생략하더라도 알려지지 않은 큰 특징으로는..
개인적으로 관심사인 Spring통합 기능이외에 ... 이 Mule의 설계 기반에는
마틴 파울러에 Enterprise Integration Patterns(EIP Patterns)를 근간으로
하고 있고, 성능 향상차원에서의 SEDA(staged event-driven architecture)
프로세싱 모델을 이용하고 있어 ...
기본적인 기능 이외의 설계와 성능까지 많은 고려가 되었음을 알 수가 있다.
(EIP Patterns과 SEDA에 대해서는 다음 사이트를 참조하기 바란다.
http://www.eaipatterns.com/
http://www.eecs.harvard.edu/~mdw/proj/seda/
http://www.eecs.harvard.edu/~mdw/papers/seda-sosp01.pdf
개인적으로는 SEDA에 프로세싱 모델에 대해서 어떻게 구현되어 있을지가
(아직 소스 분석까진 안해봤기에) 무지하게 궁금하기도 하다. ^^ )

=====================================
두녀석은 비슷한 것을 구현하고 있기에 경쟁적인 모습을 보이지만,
ServiceMix에서는 Mule 통합이 가능하게 설계되었기에 (Spring의 위력과 매력! ^^)
Mule 이 JBI의 기반을 갖추기전까지는 (현재까지는 포함 및 개발 계획엔 없지만
검토중인 상태) ServiceMix의 JBI기반에 Mule의 서버 확장성 부분을 잘 활용하여
통합 하는 모양도 가능할 것 같다.

ServiceMix : http://servicemix.org
Mule : http://mule.codehaus.org

Posted by 아름프로
My Ph.D. thesis work at UC Berkeley focused on the development of a robust, high-performance platform for Internet services, called SEDA. The goal is to build a system capable of supporting massive concurrency (on the order of tens of thousands of simultaneous client connections) and avoid the pitfalls which arise with traditional thread and event-based approaches.

SEDA is an acronym for staged event-driven architecture, and decomposes a complex, event-driven application into a set of stages connected by queues. This design avoids the high overhead associated with thread-based concurrency models, and decouples event and thread scheduling from application logic. By performing admission control on each event queue, the service can be well-conditioned to load, preventing resources from being overcommitted when demand exceeds service capacity. SEDA employs dynamic control to automatically tune runtime parameters (such as the scheduling parameters of each stage), as well as to manage load, for example, by performing adaptive load shedding. Decomposing services into a set of stages also enables modularity and code reuse, as well as the development of debugging tools for complex event-driven applications.

Our current prototype of a SEDA-based services platform is called Sandstorm. Sandstorm is implemented entirely in Java and uses the NBIO package to provide nonblocking I/O support. Support for the JDK 1.4 java.nio package is included as well. Despite using Java, we have achieved performance that rivals (and sometimes exceeds) that of C/C++. We have also implemented a SEDA-based asynchronous SSL and TLS protocol library, called aTLS. All of this software is available for download below.

We have built a number of applications to demonstrate the SEDA framework. Haboob is a a high-performance Web server including support for both static and dynamic pages that outperforms both Apache and Flash (which are implemented in C) on a SPECWeb99-like benchmark. Other applications include a Gnutella packet router and Arashi, a Web-based email service similar to Yahoo! Mail.

The best place to start for more information is the SOSP'01 paper on SEDA and the corresponding talk slides. My Ph.D. thesis has much more information as well. If you have questions, comments, or are interested in collaborations, please feel free to contact me by e-mail (see my home page).

Posted by 아름프로
써보진 않았지만..
이 녀석 좋아보이네요.. 훔..

http://javolution.org/
Posted by 아름프로
EHCache, JCS and OSCache

http://ehcache.sourceforge.net/
http://jakarta.apache.org/jcs/
http://www.opensymphony.com/oscache/

좀 더 자세한 내용은 ...
https://springmodules.dev.java.net/
Posted by 아름프로
JSR-94 기반의 Rules Engine들입니다.
중요한 것은 두 녀석들 모두..
Spring을 지원합니다.

https://springmodules.dev.java.net/ 참조..

====================================

drools
http://drools.org/

Jess
http://herzberg.ca.sandia.gov/jess

Posted by 아름프로
말만 무성하게 많았던 SOA의 시대가 다가온듯 싶다.
한동안 말만 하도 많았기에 많은 업체나 개발자들마져
지나가는 기술과 이야기인냥, 무시하거나 잊고 살아가는게 아닌가 싶다.
현실은 그렇지 않음에도 ...

IT강국을 자부하며, 개발 만큼은 외국에 뒤지지 않는다고
많은 이들이 이야기하고 나 또한 그렇게 생각했었던 시절이 있었건만,
그도 잠깐의 꿈같은 시절의 이야기가 아닌가하는 생각이든다.

몇년에 걸쳐 표준화 진척에 관심가지고 쫓아다니고 그에 대한
솔루션 개발에 목매여 보았지만 시간이 지난 지금에 돌이켜보건데
많은 시간을 중심없이 허비하지 않았나하는 자책감 마져 드는건 왜일까...

IT강국, 동북아허브를 부르짖으며 거창하게 지원하던 ebXML기반의 허브사업도
지금에 와서는 웹서비스진형의 제품들과 BPEL의 자리매김, OASIS에서의
표준화 진척에서도 웹서비스에 밀리는거 같은 느낌마져든다.
(단, 전자거래진흥원의 계속적인 지원과 성장에는 박수를 보내고 싶다.)

BI (Business Integration)이 시장의 한 축으로 자리 잡힘으로써,
IBM, BEA, Oracle, Sun과 같은 자바 진형 뿐만이 아닌 MS까지 한시장으로
SOA라는 이름을 앞으로 접점에 다다르고 있는 현실이다.

망과 솔루션의 통합을 필두로 비지니스의 통합의 시대를 앞두고
우리내들의 발걸음은 어디에 머무르고 있는지 한번쯤 스스로 돌아봤으면 한다.

여기에서의 개발이슈들과 이슈에 따른 업계의 동향을 잘 살펴보야할 것이다.
자바만 보더라도 J2EE모든 스펙과 WebServices에 대한 지식과 기술을 담고
있어야 이 시대에 대처할 수 있을 것이다.

여기에 OOP를 넘어 SOA, AOP, DI(Dependency Injection)등의 방법론과
아키텍쳐등에도 뒤쳐지지 않아야할 것이다.

SOA에 대해서 아직도 한번 들쳐보지 않은 사람.
Sun의 JBI 스펙에 대해서 처음 들어보는 사람.
BI라는 용어가 낯설게 느껴지는 사람.
ESB라는 용어 또한 처음 들어본 사람.
IoC, DI 에 대한 공부를 미루거나 안하고 있는 사람.
AOP에 대해 접근을 미루고 있는 사람.
JDK5.0의 새로운 부분이 어떤 것인지 모르고 있는 사람.

자바진형의 엔터프라이즈쪽을 공부하거나 일하는 사람이라면
이 모든 것들에 대해서는 이제는 선택이 아닌 필수사항이 되어가고 있슴을
이야기하며 이 글을 마쳐볼까 한다.

나의 위치는 지금 어디쯤에 있을까???


Posted by 아름프로

Java Business Integration

2005. 7. 20. 00:49
JBI를 이해하기 쉽게 쓴 글입니다.
효효효..
Posted by 아름프로
MDBs must be run within an EJB container. Depending on the architecture of your app, this may be an excessive requirement, especially if you aren't use any other EJBs and do not require the features of a full-blown EJB container. Message-driven POJOs, on the other hand, can run anywhere, even (as shown here) in a simple main() method. The only requirement is an ActiveMQ message queue.


MDBs require that you implement the lifecycle methods of javax.ejb.MessageDrivenBean. Often these lifecycle methods aren't needed and are left as empty implementations. This isn't a real problem, except that it's simply unnecessary.


Although it may not be apparent from the simple HelloBean example, message-driven POJOs can take full advantage of the dependency injection and AOP support offered by Spring (including Spring's support for declarative transactions and Acegi's support for declarative security). In short, you can do anything with the POJO that you can do with any other bean in a Spring context.


The XML used to declare a message-driven POJO is slightly more verbose then for an MDB. You should, however, keep in mind that you'll only need to declare one JCAContainer bean, regardless of how many message-driven POJOs your application has.
Posted by 아름프로
POJO Application Frameworks: Spring Vs. EJB 3.0

이 결과가 어떻게 날지.. ~~ 미리 고민들 해보시죠..

개인적인 생각으로는 EJB의 사상과 Annotation 가지고는
Spring의 DI 사상과 AOP 등등++++ 에게 안될꺼 같다는...
Posted by 아름프로
POJO 로 MDB (Message Driven Bean)에서의 javax.ejb.MessageDrivenBean 를
구현하지 않아도 된다.
단, MessageListener 구현해야만 한다.

그 외에는 구현 내용은 비슷하고..
설정에 대한 부분은 링크를 참조하기 바란다.

WAS나 MOM에 종속되지 않는 솔루션 개발 가능하다...
Posted by 아름프로

JBI 1.0 Spec

2005. 7. 16. 02:45
JBI 1.0 Spec 입니다.

http://java.sun.com/integration/

에서 받을 수 있습니다.
Posted by 아름프로

JMS 1.0.2b -> 1.1

2005. 7. 8. 23:56

JavaTM Message Service 1.1


February 11, 2002

Updated March 04, 2002




Description


Maintenance
version of the JavaTM Message Service specification, version 1.1.


Specification Lead


Kate Stout,
Sun Microsystems, Inc.


Feedback


Comments should
be sent to jets-jms@sun.com


 

Rationale for proposed changes

This maintenance
release addresses the unification of the programming interfaces for the Point-to-Point
and Pub/Sub messaging domains in the Java Message Service (JMS) API. In the
existing version of the specification, the client programming model make
a strong distinction between these two domains. One consequence of domain 
separation is that actions from the Point-to-Point domain and the Pub/Sub
domain in can not be used in the same transaction.


In this proposed
domain unification of the interfaces, methods have been added to support
the ability to include PTP and Pub/Sub messaging in the same transaction.
In addition, the domain unification proposed simplifies the client programming
model, so that the client programmer can use a simplified set of APIs to create
an application.


This proposal
is





  • Fully backwards compatible;
    existing implementations will work as is.





  • Semantically compatible;
    semantic differences between the two messaging domains are retained






The scope
of a transaction in JMS is on a per Session basis. To add the ability to
work across both domains, a number of methods have been added the the javax.jms.Session
interface. Adding these methods supports the creation of javax.jms.MessageConsumers
and javax.jms.MessageProducers for either domain at the Session level, and
support  sending and receiving message from either domain within the
same Session. For example, using these proposed methods, an application can
create a transacted Session, and then receive messages from a Queue and send
messages to a Topic within the same transaction. In JMS 1.0.2b, this is not
possible.


See
Domain Unification

for details of the changes. See Examples
to get more details on how these changes could be used.



 

In addition to the interface changes for
domain unification, there are several minor specification clarifications and
enhancements are proposed. These have been detailed below in
Other Changes

.








Proposed Changes



Domain unification



The following are the changes proposed to support the unification of the
domain-specific interfaces. It is arranged by alphabetically by interface.



 

Connection


Add
methods to support domain unification:



ConnectionConsumer
createConnectionConsumer(Destination destination, String messageSelector,
ServerSessionPool sessionPool, int maxMessages) throws JMSException;



ConnectionConsumer createDurableConnectionConsumer(Topic topic,String
subscriptionName, String messageSelector, ServerSessionPool sessionPool,
int maxMessages) throws JMSException;



Session createSession(boolean transacted, int acknowledgeMode) throws
JMSException;




ConnectionFactory


Add
methods to support domain unification:




Connection createConnection() throws JMSException;



Connection createConnection(String userName, String password) throws
JMSException;




MessageProducer



Add methods to support domain unification:




Destination getDestination() throws JMSException;



void send(Message message) throws JMSException;



void send(Message message, int deliveryMode, int priority, long timeToLive)
throws JMSException;



void send(Destination destination, Message message) throws JMSException;



void send(Destination destination, Message message, int deliveryMode,
int priority, long timeToLive) throws JMSException;




Session



Add methods to support domain unification:




MessageProducer createProducer(Destination destination) throws JMSException;



MessageConsumer createConsumer(Destination destination) throws JMSException;



MessageConsumer createConsumer(Destination destination, java.lang.String
messageSelector) throws JMSException;



MessageConsumer createConsumer(Destination destination, java.lang.String
messageSelector, boolean NoLocal) throws JMSException;



TopicSubscriber createDurableSubscriber(Topic topic, java.lang.String
name) throws JMSException;



TopicSubscriber createDurableSubscriber(Topic topic, java.lang.String
name, java.lang.String messageSelector, boolean noLocal) throws JMSException;



QueueBrowser createBrowser(Queue queue) throws JMSException;



QueueBrowser createBrowser(Queue queue, String messageSelector) throws
JMSException;



Queue createQueue(String name) throws JMSException;



Topic createTopic(String name) throws JMSException;



TemporaryTopic createTemporaryTopic() throws JMSException;



TemporaryQueue createTemporaryQueue() throws JMSException;



void unsubscribe(String string name)




XAConnection



Add method to support domain unification




XASession createXASession() throws JMSException;




XAConnectionFactory



Add methods to support domain unification:




XAConnection createXAConnection() throws JMSException;



XAConnection createXAConnection(String userName, String password)
throws JMSException;




Other Changes


 



BytesMessage



Enhancement
: Add method




int getBodyLength() throws JMSException




Added to support the ability to get a body length which can be used to allocate
a bytes array.


 



Connection



Clarification
: If Connection.getExceptionListener is called, and no ExceptionListener
is registered, the JMS provider must return null.


 

MapMessage



Clarification
: For each set method, if the name parameter is null or
empty string, throw NullPointerException



Methods affected: setByte, setBytes, setChar, setDouble,
setFloat,setInt, setLong,setObject, setShort,setString



 

Message



Clarification
: For each set property method, if the property name parameter
is null or empty string, throw NullPointerException.



Methods affected: setBooleanProperty, setByteProperty, setDoubleProperty,
setFloatProperty, setIntProperty, setLongProperty, setObjectProperty, setShortProperty,
setStringProperty



 

TextMessage



Clarification
: Changed a comment that indicated that XML might become
popular to a statement that TextMessage can be used to send XML messages.


 

Session



Enhancement
: Add Method




int getAcknowledgeMode() throws JMSException




This method gets value for how messages are acknowledged. Previously there was no method to get the AcknowledgeMode value.



 



XA



Clarification:
Added a comment that the XA interfaces are primarily used
by JMS providers, and are optional.



Interfaces effected: XAConnection, XAConnectionFactory, XAQueueConnection,
XAQueueConnectionFactory, XAQueueSession, XASession, XATopicConnection, XATopicConnectionFactory,
XATopicSession


 


Examples of domain unification
of the interfaces



In this section, some code examples of common JMS client tasks are given
to show the current approach and the proposed approach.



Example 1: Setting up a connection and session




JMS 1.0.2b




JMS 1.1



 

Example
2: Creating a Message Producer to a topic




JMS 1.0.2b




JMS 1.1



 


Example
3 - Adding a Message Producer to a queue




JMS 1.0.2b




JMS 1.1





Example 1: Setting
up a connection and session.



JMS 1.0.2b



Use TopicConnectionFactory, TopicConnection and TopicSession to setup.



Context jndiContext = null;



TopicConnectionFactory topicConnectionFactory = null;



TopicConnection topicConnection = null;



TopicSession topicSession = null;



Topic topic = null;



//Create a JNDI InitialContext object if none exists yet.



jndiContext = new InitialContext();



// Look up connection factory and topic.



topicConnectionFactory = (TopicConnectionFactory)



               
jndiContext.lookup("TopicConnectionFactory");



topic = (Topic) jndiContext.lookup("StockQuoteTopic");



//Establish TopicConnection and TopicSession



topicConnection = topicConnectionFactory.createConnection();



topicSession = topicConnection.createTopicSession(false,



               
Session.AUTO_ACKNOWLEDGE);



 


JMS 1.1



Use ConnectionFactory, Connection and Session to setup.



Context jndiContext = null;



ConnectionFactory connectionFactory = null;



Connection connection = null;



Session session = null;



Topic topic = null;



// Create a JNDI InitialContext object if none exists yet.



jndiContext = new InitialContext();



// Look up connection factory and topic.



connectionFactory = (ConnectionFactory)



jndiContext.lookup("TopicConnectionFactory");



topic = (Topic) jndiContext.lookup("StockQuoteTopic");



//Establish Connection and Session



connection = connectionFactory.createConnection();



session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);



 


Example
2: Creating a message producer (to a topic)



Set a message producer that can send messages



JMS 1.0.2.b



Sets up a TopicPublisher and sends messages on a TopicSession



 



// Create a TopicPublisher and send a message



TopicPublisher topicPublisher = null;



topicPublisher = topicSession.createPublisher(topic);



message = topicSession.createTextMessage("A message body");



topicPublisher.publish(message);



JMS 1.1



Sets up a MessageProducer and sends messages on a Session.



// Create a Message Producer and send a message



MessageProducer messageProducer = null;



messageProducer = session.createProducer((Destination)topic);



message = session.createTextMessage("A message body");



messageProducer.send(message);



 


Example
3: Adding a Message Producer to a queue



The client programming simplification can be seen if we now try to add a
Message producer that will send messages to a Queue.


 



JMS 1.0.2b



To do this, the application must:





    Lookup QueueConnectionFactory



    Lookup Queue



    Create QueueConnection



    Create QueueSession



    Create QueueSender



    Create Message



    send message using QueueSender.send();





QueueConnectionFactory queueConnectionFactory = null;



QueueConnection queueConnection = null;



QueueSession queueSession = null;



Queue queue = null;



// Look up connection factory and queue.



queueConnectionFactory = (QueueConnectionFactory)



jndiContext.lookup("QueueConnectionFactory");



queue = (Queue) jndiContext.lookup("WorkFlowQueue");



//Establish QueueConnection and QueueSession



queueConnection = queueConnectionFactory.createQueueConnection();



queueSession = queueConnection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);



// Setup queue sender



QueueSender queueSender = null;



queueSender = queueSession.createSender(queue);



message = queueSession.createTextMessage("A message body");



queueSender.send(message);



 


JMS 1.1



By contrast, the unified model can re-use the Connection and Session that
has already been established. The additional steps are:





    Lookup Queue



    Create MessageProducer



    Create Message



    Send message using MessageProducer.send()





// Lookup Queue



queue = (Queue) jndiContext.lookup("WorkFlowQueue");



// setup Message producer



MessageProducer workFlowProducer = null;



workFlowProducer = session.createProducer((Destination)queue);



message = session.createTextMessage("A message body");



workFlowProducer.send(message);



 

 
Posted by 아름프로

Java Boutique

2005. 7. 5. 00:13
제목과 같습니다. ^^
짧게 요약 잘되어 있네요.
Posted by 아름프로
BPM 표준 언어...

◆ BPEL(Business Process Execution Language) 비즈니스 프로세스 실행 언어, 웹서비스를 사용해 비즈니스 프로세스를 조정하는 실행 언어다. BPEL은 IBM, 마이크로소프트 및 BEA에 의해 처음 제안됐으며 현재 대부분의 BPM 벤더에 의해 가장 중요한 단일 NPM 표준으로 받아들여지고 있다.
◆ BPML(Business Process Modeling Language) 비즈니스 프로세스 모델링 언어. 인텔리오(Intalio)가 도입하고 BPML.org에서 후원한 비즈니스 프로세스 모델링용 메타-언어로써 BPEL과 직접 경쟁한다. 이 표준은 일부 벤더에서 지원하지만 실질적으로 BPML은 BPEL에 의해 퇴색됐다.
◆ BPMN(Business Process Management Notation) 비즈니스 프로세스 관리 표기법. 비즈니스 프로세스를 모델링하기 위한 표준 표기법. 이 표준이 만들어진 취지는 전체 비즈니스 모델링 도구와 BPM 제품 내의 모델링 기능에 걸쳐 공통된 모델링 그래픽을 사용하자는 것이다. 그에 따라 BPMN은 다른 BPM 표준의 보완 역할을 한다.
◆ Wf-XML 오아시스(OASIS) ASAP를 기반으로 WfMC(Work-low Management Coalition)에 의해 개발된 표준으로서 BPM 엔진간에 상호운영성을 제공해 다수의 엔진에 걸쳐 장시간 실행되는 비즈니스 프로세스의 운영을 가능하게 해준다. 하지만 대부분의 벤더들은 향후 표준으로서 부적합하다고 인식하고 있다.
◆ XPDL 전체프로세스를 설명하는 비즈니스 프로세스 정의 언어로서 원래는 모델링 도구와 BPM 시스템간의 상호 교환 표준으로 고안됐다. XPDL은 여러 벤더가 자사 제품내에 프로세스 모델링, 실행 및 제어를 위해 BPM 구성요소를 통합할 때 사용된다. XPDL은 WfMC에서 지원하고 있으며 몇몇 BPM 벤더에서 채택했지만 BPEL로 대체될 것으로 보인다.
◆ JSR-94 비즈니스 규칙 엔진(BRE)을 위한 자바 런타임 API를 정의하는 자바 규격이다. 점차 많은 수의 BPM 제품이 외부 규칙 엔진과 통합되고 있는 점을 감안할 때 BPM 벤더는 JSR-94를 이용해 타사 BRE와 자사 제품을 통합할 수 있다. JSR-94는 다른 BPM 표준과 경쟁 관계가 아닌 보완 관계에 있다.
◆ JSR-168 집합, 개별화, 표시 및 보안을 위한 표준 포털 API 집합을 제공하는 자바 규칙이다. 점차 많은 수의 포털 벤더들이 이 표준을 지원하고 있으며 포털과 BPM 시스템을 통합하는데 사용할 수 있다.
Posted by 아름프로
Apache의 Geronimo
http://wiki.apache.org/geronimo/MicroKernel

Aapache의 Hivemind
http://wiki.apache.org/jakarta-hivemind/FrontPage?highlight=%28MicroKernel%29

여기에 JBoss의 Architecture에 보면..
Microkernel Layer 가 있다.
http://www.jboss.org/products/jbossas/architecture
Posted by 아름프로
Persistence와 POJO: 오브젝트 및 관계형 모델의 통합
Persistence and POJOs: Bridging the Object and Relational Worlds

~~ ^^ 좋은 내용이네요..
그냥 링크만 합니다.
Posted by 아름프로

[기사] ZDNet의 BPM

2005. 5. 23. 22:55
Posted by 아름프로
BPM(Business Process Management) 열기가 지속되고 있는 가운데 최근 BAM(Business Activity Monitoring)에 대한 관심도 높아지고 있다. BAM은 비즈니스 이벤트가 발생할 경우 이와 관련된 데이터를 실시간으로 수집하고 분석해 적절한 조치를 취할 수 있게 하는 개념이다. 이러한 BAM은 최근 BPM과 결합되는 모습이 나타나고 있으며 독자적인 시장 형성 가능성도 높은 것으로 예상되고 있다.

BAM을 통해 프로세스 전반에 걸쳐 운영 데이터를 모니터링하고, 다양한 채널을 통해 발생하는 비즈니스 이벤트의 이상 징후 등을 파악할 수 있다. 가령 주문 프로세스가 1시간 평균 100건 처리가 정상적 운영인데 이에 미치지 못할 경우 사전에 정의된 체크 요소들을 자동 점검한다든가 1일 대출 허용 금액이 100만 달러일 경우 잘못된 주문을 사전에 걸러내는 작업 등이 가능하다.
이를 통해 리스크 관리 및 수익성 관리가 가능한 것이다. 이러한 유용성에 주목해 핸디소프트를 비롯한 오라클, 웹메소드, 팁코소프트웨어와 같은 BPM 솔루션을 보유한 벤더들이 BAM 부분 강화에 적극 나서고 있다.
티맥스소프트 역시 BPM 솔루션 내에 BAM 기능을 강화해 시장 공략을 준비하고 있다.

핸디소프트는 현재 RTE연구소에서 BAM 솔루션 개발 작업을 진행하고 있으며, 상당한 의미를 부여하고 있는 것으로 알려지고 있다.
한국오라클은 BAM 솔루션으로 '오라클 인티그레이션(OracleAS Integration) BAM'을 이달 말이나 다음 달 초에 공식 발표할 계획이다. 오라클은 BPM 제품으로 "Oracle BPEL Process Manager"를 보유하고 있으며 이 두가지 제품을 묶어서 오라클 BPM 솔루션으로 제공하고 있다.
상대적으로 BAM에 대한 접근이 빨리 이뤄진 쪽이 전통적인 EAI 벤더들이다. 팁코소프트웨어는 작년 하반기부터 BAM 시장에 주목해 왔으며 현재 활발한 영업 활동에 착수했다. BAM 솔루션 ‘비즈니스 팩터 5.0’ 버전이 5월 경 출시 될 예정에 있고 이미 S전자 마케팅 부서에 BAM 사례를 확보하고 있어 기대치를 높여가고 있다. 비즈니스 팩터 5.0은 대용량과 속도를 지원하기 위해 메모리 DB가 사용된다.

웹메소드 역시 BAM 솔루션으로 옵티마이즈를 앞세워 지난해 하반기부터 시장 공략에 착수했다. 웹메소드는 BPM과 BAM을 결합해 BPO(Business Process Optimization) 패키지를 구성했으며, 작은 규모의 프로젝트를 위해서 수집 기능만으로 구성된 패키지화도 고려하고 있다.
웹메소드는 특히 사베인즈-옥슬리 법안에 대비해 BAM 솔루션이 유용하다는 점을 강조해 회계법인 공략에 주력할 계획이다. 티맥스소프트도 BPM 솔루션인 ‘비즈마스터’내에 BAM 기능을 구현했다.

이처럼 BAM은 아직까지 BPM과 밀접한 관계를 맺어가면서 시장에서 입지를 다져가고 있는 상황이다. BPM과 BAM은 서로 다른 영역을 지원하고 있음에도 불구하고 근본적인 공통점을 가지고 있어 상호 결합되어 시너지를 창출하는 방향으로 진행되고 있는 것이다. 이 둘은 비즈니스 이벤트를 중심으로 실시간으로, 능동적인 정보 제공(푸시방식)을 활용하는 공통점을 가지고 있다.
Posted by 아름프로

BLOG main image

카테고리

분류 전체보기 (539)
이야기방 (19)
토론/정보/사설 (16)
IBM Rational (9)
U-IT (0)
SOA/WS/ebXML (110)
개발방법론/모델링 (122)
J2SE (34)
J2EE (60)
DataBase (39)
Open Projects (30)
BP/표준화 (50)
Apache Projects (15)
Web/보안/OS (22)
Tools (7)
AJAX/WEB2.0 (1)
Linux/Unix (1)
영어 (0)
비공개방 (0)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

달력

«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

글 보관함

Total :
Today : Yesterday :