OSWorkflow는 기본적인 engine과 workflow를 위한 framework 그리고 간단한 desgin tool을 제공한다. 그밖에 아래부분이 제공된다.
- Quartz를 이용한 스케줄러
- EJB 를 이용한 remote기능
- Spring연동기능
'H'사적용 예
'H'사에서 사용한 OSWorkflow자체 기능은 아래와 같다.
- Workflow Engine (JDBC 기반 persistency)
- Swing 기반 Workflow Designer (Java Web Start 이용)
- 몇가지 기본적인 function 과 condition들
'H'사에서 추가 구현한 부분은 아래와 같다.
- JMS Quere 를 이용한 Async 처리 : Asnyc 처리에 대한 자체적인 기능이 전혀 없다..--;;
- Function 실행중 에러가 발생했을 때 trouble ticket 생성 : 요구사항에 따라 추가 구현
- 업무처리를 위한 function 및 condition 들 구현(가능한 공통적으로 사용할 수 있도록 function작성)
- Process 정의에 대한 version 관리기능 구현 : 상용적용을 위해서 필요하나 지원 안됨. 프로세스이름에 자체적으로 날자와 일련번호를 추가하도록 구현함.
- Design Tool에 EJB를 통해 Process Definition을 DB에 저장할수 있는 기능 구현.(기본기능은 파일에 저장)
- Design Tool에 자동 실행 step 과 수동 실행 step 에 대한 색구분 추가
- Process 조회 및 데이터 조회, 프로세스 수동 실행을 위한 화면 구현 : 모든 화면은 자체적으로 구현해야함. example에 간단한 화면 구현은 제공해주고 있음.
'H'사 구현시 겪은 문제점(Workflow 문제는 아님.. oracle의 RAC와 blob 처리시간에 따른 문제)
- Workflow 는 프로세스 데이터를 PropertySet이라는 Opensymphony Component를 사용하고 있다. 이는 key, value 형식으로 값을 설정만해주면 모두 데이터를 db에 저장하게 된다. db access횟수를 줄이기 위해 우리는 Map 데이터를 통채로 blob으로 저장하는 방식을 선택했다. 한 step에서 데이터를 blob 으로 저장하고 다음 step을 async 처리를 위해 JMS queueing을 하는 경우 다음 step 에서 db connection 을 동일한 DB에서 가져올 경우 문제가 없지만 RAC에 묶여 있는 다른 DB에서 가져올경우 이전 step에서 저장한 데이터를 찾지 못하는 증상이 발생.
- 조치: Connection Pool 을 load balancing을 안쓰고 High availability를 사용하여 WAS1->DB1, WAS2->DB2를 기본으로 사용하도록 하자 문제가 해결되었음.
'H'사 적용 화면
Comments (0)
You don't have permission to comment on this page.