본문 바로가기

개발일기장

사이드 프로젝트 일기 2 - 업무 시스템과 전자 결재 연동하기

회사에서 업무를 수행하다보면 요청자 측에 결재를 요청할 일이 있다.

 

예를 들어  김대리는 그룹웨어 신규 계정을 생성하기 위해 업무 요청 서비스를 통해 계정 담당자에게 계정 생성을 요청한다.

계정 담당자는 내용을 검토하고 계정 생성 전 김대리에게 전자 결재를 요청한다.

김대리는 박부장에게 상신을 요청하고 박부장은 최종 승인을 내린다.

이후 계정 담당자는 계정 생성을 진행한다.

 

이러한 업무 프로세스가 진행되려면 업무 요청 서비스/전자 결재 연동이 필요하다. 

 

몇 달 동안 고민해서 만든김에 1번, 3번 과정 구현 내용을 소개해보려고 합니다.

 

1. 메시징 서비스를 통해 결재 요청(결재 문서 생성)


 

아래와 같이 업무요청 기능으로 특정 부서에 업무 요청 양식을 보내고 요청 클릭

 

 

플랫폼개발팀 부서의 소속 인원으로 접속해보면 요청받은 업무에 아래와 같이 티켓이 존재한다.

 

 

일련의 티켓 프로세스 과정을 거치게 되면 아래와 같이 결재 요청 버튼이 활성화 된다. 여기서 결재 요청 버튼을 누르게 되면

메시징 서버에서 이를 받아 전자 결재 서버에 데이터를 생성한다.

 

 

아래는 메시징 서버가 메시지를 받아 성공적으로 처리 됐다는 내용이다. 쉽게 메시징 서비스를 통해, 전자 결재 서비스 API를 호출한 것이다.이력으로 기록되기 때문에 호출이 실패했거나 문제가 발생했다면 재호출이 가능하기도 하다.

 

 

 

메시지가 성공적으로 처리됐으니 이가연님 결재함에서 해당 결재 문서를 확인할 수 있다.

 

3. 최종 승인 시 업무 요청 서비스에 이를 알려야함


결재 문서의 상태가 변경될 때 마다 해당 결재 문서에 연동된 시스템에 해당 내용을 알려야 할 경우가 있다. 쉽게 말해 API를 호출해야 할 경우가 존재한다.

 

위 업무 요청 서비스에서는 연동 결재 최종 승인 시, 아래의 요청 부서 승인 대기 버튼에서 요청 부서 승인 완료 - 작업 시작으로 변경되어야 한다.

 

 

 

이제 최종 승인자로 지정한 이하은님으로 들어가 결재 문서를 승인한 뒤 다시, 요청 받은 티켓을 살펴보자

 

다음과 같이 요청 받은 티켓의 버튼 내용이 요청 부서 승인 완료 - 작업 시작 변경되었다.

 

 

사실 여기까지는 조금만 고생하면 구현하는데 문제가 없다. 

다만 더 큰 문제는 다음과 같다. 

1. 결재 양식마다 이러한 기능을 만들려면 결재 상태를 변경하는 API에 특정 서비스의 API를 호출하는 내용을 추가해야 한다.

2. 1번 과정을 거치려면 소스 변경이 필요하고 배포가 수반되어야 하며 연동된 결재가 많을수록 코드 유지보수 난이도가 올라간다.

 

나는 이 과정을 추상화하여 소스 레벨에 코드 추가 없이 동작하도록 구현하였다.

 

API 연동 상세 정보 모달은 만들지 않았다.(나도 좀 쉬자...ㅎ) DB에 저장된 내용으로 대신하겠다.

아래 정보를 가지고 결재 문서의 상태가 트리거 타입으로 변경되면 PATH에 해당하는 API를 호출하도록 했다. 

 

이렇게하면 문제 1,2번 과정을 생략하고 관리자 페이지에서 API 연동을 추가하여 비교적 간편하게 서비스 - 전자 결재 연동이 가능해진다.

 

고럼 이만...