20120511_IBM BPM 웹서비스 생성 및 테스트

Download Report

Transcript 20120511_IBM BPM 웹서비스 생성 및 테스트

IBM BPM 조회 SQL 실행
(웹서비스 생성 및 테스트)
IBPM Ver. 7.5.1
2012.05.14
황상규
[email protected]
IBM BPM Web Service 생성 및 테스트
첫번째.. Web Service 생성 및 Operation 추가
두번째.. Integration Service 생성
(SQL Execute Statement)
세번째.. SQL Result Set을 위한 Business Object Data Type 생성
네번째.. 테스트
※ 실제로 SQL Statement를 실행시키는 Web Service 생성 및 테스트를 하기 위해서는
세번째 -> 두번째 -> 첫번째 -> 네번째의 순서대로 절차를수행하여야 한다.
(1) 프로세스 디자이너에 프로세스 디자인 권한의 사용자로 로그인 한다
※ 디폴트 설치시 Process Designer 위치 : C:\IBM\ProcessDesigner\v7.5
(2) 프로세스 디자이너의 Implementation의 우측 + 기호를 클릭하여 Integration Service
를 선택한다
※ Process Designer > Implementation > Integration Service >
(3) 생성할 Integration Service 이름을 등록한다
예제는 BPM의 나의 할일(To Do) 건수를 가져오는 조회 SQL을 실행할 것이기 때문에
“getToDoCount”라고 하였다.
※ Process Designer > Implementation > Integration Service >
(4) 생성할 Integration Service 다이어그램을 작성한다
※ Process Designer > Implementation > Integration Service > Diagram
(5) 실행 SQL을 작성할 Server Script와
SQL input/output 매핑을 위한 Nested Service 타스크를 드래그인한다
※ Process Designer > Implementation > Integration Service > Diagram
(6) 각 타스트를 더블클릭 또는 Properties의 Step에서 타스크명을 변경한다.
예제에서는 “SQL 셋팅”과 “SQL 실행”으로 설정하였다.
※ Process Designer > Implementation > Integration Service > Diagram
(7) 실행할 SQL를 입력하고, 로칼 변수에 저장한다.
ex) var sql = “select status, cnt from table”;
tw.local.sql = sql
※ .. Integration Service > Diagram > Properties > Implementation
1
2
3
(8) Nested Service 타스크 “SQL 실행”의 속성(Attached Service)을 설정한다
- Integration Service > SQL Execute Statement
※ .. Integration Service > Diagram > Properties > Implementation
1
2
3
4
5
(9) Data Mapping한다.
-Input : userId (String) / Output : RSetToDoCnt / Private : sql (String)
-InputReturn Type : RSetToDoCnt (※ 다음 페이지에 Business Type 생성 참조)
-DataSourceName : Process Server data Source” 중에 JNDI name 중 선택
※ .. Integration Service > Diagram > Properties > Data Mapping
1
2
(9-1) SQL 실행 결과(Result Set)을 저장한 Business Type을 생성한다
- status (String type)
- cnt (Integer type)
※ .. Integration Service > Diagram > Properties > Data Mapping
(9-2) IBPM 관리자 콘솔(https://<hostname>:9043/ibm/console )에 접속한다.
- 위와 같은 화면이 보이면, “이 웹 사이트를 계속 탐색합니다” 선택한다
※ IBM BPM 관리자 콘솔 접속
(9-3) 관리자 계정(tw_admin)으로 로그인한다.
※ IBM BPM 관리자 콘솔 접속 > 로그인
1
2
3
(9-4) 좌측 메뉴에서 Resources > JDBC > Data Sources 선택
name이 “Process Server data Source” 중에 JNDI name 하나를 선택한다
(ex. “jdbc/ProcessDB” )
※ IBM BPM 관리자 콘솔 > Resources > JDBC > Process Server data Source
1
(10) SQL Execute Integration Service를 테스트 한다.
우측 상단의 화살표 아이콘을 실행하면 생성한 Integration Service가 실행된다.
에러가 발생하지 않으면 다음 단계(11)로 진행한다.
※ .. Integration Service > Diagram > Properties > Data Mapping > 실행 Test
(11) 프로세스 디자이너의 Implement 우측 + 기호를 클릭하여 Web Service를 선택한다
※ Process Designer > Implementation > Web Service >
(12) 생성할 웹서비스 이름을 등록한다
ex ) “WebService”
※ Process Designer > Implementation > Web Service >
1
2
3
(13) Web Service에 Operation을 추가하고,
앞에서 생성한 To Do Count를 가져오는 Integration Service
“getToDoCnt”를 선택한다
※ Process Designer > Implementation > Web Service >
1
(14) Operation을 이름을 “getToDoCnt”로 변경해준다
※ Process Designer > Implementation > Web Service >
1
(15) Web Service 테스트한다.
Behavior의 WSDL URL을 클릭한다.
- ex) http://imbpwad:9080/teamworks/webservices/HWANG/WebService.tws?WSDL
※ Process Designer > Implementation > Web Service >
(16) Web Browser에 나타난 SOAP xml을 드래그 복사한 후 웹서버에 wsdl에 저장한다
※ Process Designer > Implementation > Web Service >
3
2
1
(17) wsdl 파일을 추가한다.
- wsdl 추가 생성 경로 : 마우스 오른쪽 클릭 > New > other.. > Web Services > WS이
- 생성한 wsdl 파일에 웹브라우저에 보이는 soap XML 파일을 복사해 추가한다.
(wsdl 파일 위에 “<?xml version="1.0" encoding="UTF-8"?>” 포함)
※ wsdl 신규 생성
1
2
(18) Web Service 테스트
- WSDL 파일 마우스 오른쪽 클릭 > Web Services > Test with Web Service Explorer
- WSDL URL 입력 > Go
- ex) WSDL URL : http://imbpwad:9080/teamworks/webservices/HWANG/WebService.tws?WSDL
※ Web Service 테스트
1
2
(19) Web Seervice Operation를 선택하고 input 파라메터를 입력한후 “Go” 버튼 클릭
※ Web Service 테스트
2
1
(20) “source”를 클릭하면 위와 같이 Request와 Response XML Source가 보여지고,
Response에 오류가 없다면 정상적으로 실행된 것이다!!
※ Web Service 테스트
WITH TODO_CNT(CNT, STATUS) as
(
SELECT COUNT(*) CNT, 'ACTIVE' AS STATUS
FROM LSW_BPD_INSTANCE PROC,
LSW_TASK TASK,
LSW_USR_XREF USR
WHERE PROC.BPD_INSTANCE_ID = TASK.BPD_INSTANCE_ID
AND TASK.USER_ID = USR.USER_ID
AND (TASK.STATUS = 11 OR TASK.STATUS = 12)
AND USR.USER_NAME = 'hwangsanggyu'
UNION ALL
SELECT COUNT(*) CNT, 'ACTIVE' AS STATUS
FROM LSW_BPD_INSTANCE PROC,
LSW_TASK TASK,
LSW_USR_XREF USR,
LSW_USR_GRP_MEM_XREF GRP
WHERE PROC.BPD_INSTANCE_ID = TASK.BPD_INSTANCE_ID
AND TASK.GROUP_ID = GRP.GROUP_ID
AND GRP.USER_ID = USR.USER_ID
AND (TASK.STATUS = 11 OR TASK.STATUS = 12)
AND USR.USER_NAME = 'hwangsanggyu'
UNION ALL
SELECT COUNT(*) CNT, 'COMPLETED' AS STATUS
FROM LSW_BPD_INSTANCE PROC,
LSW_TASK TASK,
LSW_USR_XREF USR
WHERE PROC.BPD_INSTANCE_ID = TASK.BPD_INSTANCE_ID
AND TASK.USER_ID = USR.USER_ID
AND (TASK.STATUS != 11 AND TASK.STATUS != 12)
AND USR.USER_NAME = 'hwangsanggyu'
UNION ALL
SELECT COUNT(*) CNT, 'COMPLETED' AS STATUS
FROM LSW_BPD_INSTANCE PROC,
LSW_TASK TASK,
LSW_USR_XREF USR,
LSW_USR_GRP_MEM_XREF GRP
WHERE PROC.BPD_INSTANCE_ID = TASK.BPD_INSTANCE_ID
AND TASK.GROUP_ID = GRP.GROUP_ID
AND GRP.USER_ID = USR.USER_ID
AND (TASK.STATUS != 11 AND TASK.STATUS != 12)
AND USR.USER_NAME = 'hwangsanggyu'
)
SELECT STATUS, SUM(CNT) AS TODO_CNT FROM TODO_CNT
GROUP BY STATUS
SQL 실행 결과
미처기 건수
완료 건수
처리하지 않은 To Do Count를 가져오기 위해서는
완료한 업무 건수 SQL 부분은 제외한다.
※ DB 서버 부항 경감 등을 위해 사용된 테이블에 대해서는
인덱스 설정 등 DB 튜닝을 반드시 실시한다.
※ IBM BPM Ver 7.5 with DB2에서의 To Do Count를 가져오는 SQL