SAP PO의 UDF(User defined function), Adapter Module, Adapter 등을 커스텀개발을 할때 사용되는 PO의 자바 패키지나 클래스를 정리해보았습니다.
SAP NetWeaver 7.5 SP 06 Process Integration의 PI Maaping and Lookup API사이트를 참고하셔서 커스텀개발을 진행하시면 좋을것 같습니다.
com.sap.engine.interfaces.messaging.api
Message
샌더나 리시버 사이에 전송되는 메시지는 헤더와 페이로드 등으로 구성되고 있으며 Message 인터페이스는 아래 헤더필드의 값을 가져올수 있습니다.Message ID, Service, Receive, Sequence ID, Correlation ID 등
MessageKey
AuditLog를 가져올때 Message 사용하여 헤더에서 가져온 값 중 Message ID와 MessageDirection로 셋팅 후에 AuditAccess.addAuditLogEntry 통해 Audit로그를 남길때 사용하고 있습니다. 일반적으로 메시지 상태에 대해 메시징시스템에서 자동으로 메모리에 로그를 남기게되며 이후에는 memory audit store에 저장된 데이터가 BC_MSG_AUDIT DB테이블에 반영되는것 같고 flushAuditLogEntries 메서드를 통해 수동으로 DB테이블에 반영이 가능한것 같습니다.Audit로그를 남길때 주의할 사항은 너무 많은 로그를 메모리에 남기게 되는경우 메모리에 남길수 있는 로그개수가 한정적이라(PO설정에 따라 다름)에 따라 삭제 작업이 빨리 진행이 되어 로그확인이 필요한경우에 못하는 상황도 발생되고 각 AP서버별 로그레벨에 따라 서버성능에 영향을 줄수도 있는것 같습니다.
SAP PO의 특정 AP서버에서 부하가 발생하는 경우, 이설정을 의심해보세요
com.sap.aii.af.service.idap
MessageIDMapper
중복 메시지를 식별하거나 해당 메시지를 추적하기 위한? 용도 인것 같은데 설명을 보고는 잘 이해는 안됩니다.다만 getMapperId()를 통해 현재 수행중인 메시지 아이디가 있는지 확인하고 없다면 그대로 로직을 이어서 실행한다음에 작업이 완료되면 해당 remove()하고 최종상태값과 함께 createIDMap() 메서드를 사용하여 매퍼를 생성할 수 있는데 중복된 작업을 방지하기 위해서 필요한 클래스인것 같습니다.
어댑터에 보면 여러 옵션이 존재하는데 그중 Exactly-Once Handling의 Persistence설정 값(Local, Database) 따라 DB의 테이블정보를 외부에서 전달해 저장된 메시지 아이디의 상태값도 업데이트가 가능할것같고 다른 테이블을 생성하여 커스텀 로직에 따라 수시로 상태값 업데이트도 가능해보입니다.
Local로 해도 해당 매퍼값을 외부에서 업데이트하고 확인할수 있는 방법이 있다면 database로 사용할 필요는 없어 보입니다.
댓글 없음:
댓글 쓰기