본문 바로가기
IBM - old/IBM BPM

[BPM]IBM BPM 의 Task 관리 및 연결을 담당하는 Event Manager 에 대한 설명

by freeman98 2017. 2. 2.

안녕하세요 이정운 입니다.


이번에 모고객사 때문에 IBM BPM 의 핵심 컴포넌트인 Event Manager 에 대해서 동작 방식이랑 구조등을 확인해봤습니다.


간단히만 말씀드리면 BPD 에서 수행되는 Task 의 경우는 Event Manager(EM) 을 통해서 관리 및 연결(예:Task 완료후 다음 Task 할당등) 을 트랜잭션을 통해서 수행하므로 Task 수행 로직에서 굉장히 중요한 부분을 담당하고 있습니다.


이에 제가 알게된 내용을 정리해서 공유드리오니 참고하시기 바라겠습니다.



Event Manager in IBM BPM

Maintaining and monitoring IBM Business Process Manager Event Manager
https://www.ibm.com/support/knowledgecenter/en/SSFPJS_8.5.5/com.ibm.wbpm.admin.doc/topics/maintaining_event_manager.html



Event Manager(EM)는 IBM BPM 제품을 구동하는 핵심 요소입니다.  하단에 첨부한 BPMReplayOnHoldEMTasks  문서에 명시되어 있지만 UnderCover Agent (UCA) 호출, BPD (Business Process Definition) 실행, BPD 시스템 태스크 구현 호출 및 BPD 타이머 이벤트 호출과 같은 다양한 측면이 포함되어 있으며 결국 해당 작업들은 EM 을 통해서 작업을 수행할 수 있습니다. 

이를 간략하게 설명하면, 사용자 Task 가 완료되면 Task 상태가 업데이트되고 동일한 트랜잭션에서 EM 작업이 생성되어 EM 테이블에 저장됩니다. EM 구성에 따라 시스템 부하 등 EM 작업이 EM 에 의해 새 트랜잭션에서 선택되고 BPD의 다음 활동이 실행됩니다. 따라서 적어도 개념적으로 모든 것은 불일치를 피하기 위해 명확한 트랜잭션 방식으로 처리됩니다.

Hold(보류) 중인 EM 작업이 있는지 확인하려면 "BPMReplayOnHoldEMTasks" 명령을 사용하고 "-getNumberOfTasks true" 를 매개 변수로 지정하면 됩니다. 이것이 BPD가 멈춘 것처럼 보이는 이유인지 여부를 확인하는 데 매우 중요한 정보입니다.

BPMReplayOnHoldEMTasks command
https://www.ibm.com/support/knowledgecenter/en/SSFPJS_8.5.5/com.ibm.wbpm.ref.doc/topics/rref_bpmreplayonholdemtasks.html

wsadmin -conntype SOAP -port 21115(BPM 서버의 SOAP port) -host localhost -user admin -password admin -lang jython

AdminTask.BPMReplayOnHoldEMTasks('[-getNumberOfTasks true]')



현재 보류중인 개별 또는 모든 EM 작업을 삭제할 수있는 방법은 별도로 제공되는 것이 없습니다. 만약 해당 부분이 필요하다면, PMR과 L3 팀의 도움을 받아 clear 방법에 대한 구체적인 지침을 제공해야합니다. 작업을 다시 시도 할 때 예외가 발생하는 이유는 여러 가지가 있을 수 있지만 다음과 같은 경우를 생각할 수 있습니다. L2 에서 업데이트 된 것과 같이 트랜잭션 복구가 발생하지 않았으므로 일부 테이블의 일부 행을 lock 상태로 유지하는 보류중인 트랜잭션이 Oracle에 여전히 존재 할 수 있습니다. 일단 WAS가 트랜잭션 복구를 수행할 수 있다면 트랜잭션을 롤백하고 그 일부로 tx가 보유한 각각의 lock 을 해제 할 것으로 기대됩니다.(그렇기 위해서는 사전에 Oracle 에서 해당 권한 부여 필요 - 하단의 링크 참고)

Recovering from failed transaction recovery
https://www.ibm.com/developerworks/community/blogs/aimsupport/entry/recovering_from_failed_transaction_recovery_websphere_application_server?lang=en

As user SYS, run the following commands on your Oracle server:

 grant select on pending_trans$ to public;
 grant select on dba_2pc_pending to public;
 grant select on dba_pending_transactions to public;
 grant execute on dbms_system to <user>;

다만, 일반적으로 Task 가 완료되었지만 후속 Task 가 작성되지 않은 BPD가 있는지(예 : SQL 조회를 통해) 점검 할 수 있는 방법은 없습니다. 이는 BPD 엔진의 내부 설계를 기반으로합니다.

추가적으로 IBM BPM 의 Process Admin 콘솔에서 바로 Event Manager 의 상태를 모니터링 하거나 오류를 재처리 할 수도 있습니다.



해당 내용 참고하시기 바라며 이만 줄이도록 하겠습니다.


추가적으로 참고할만한 링크

Moving stuck IBM Business Process Manager tokens right along
https://www.ibm.com/developerworks/community/blogs/WebSphere_Process_Server/entry/bpm_stuck_tokens?lang=en

Using the REST API Tester to manage orphan tokens in IBM Business Process Manager V8
http://www.ibm.com/developerworks/bpm/bpmjournal/1409_ahuja/1409_ahuja.html



댓글