mondegreen

[Mendix Rapid] Save 기능을 확장한 Microflow 사례 본문

Mendix/Academy 및 Docs

[Mendix Rapid] Save 기능을 확장한 Microflow 사례

앙갱 2024. 5. 29. 22:05
반응형

이 로직의 목적은 사용자가 특정 훈련과정에서 등록 버튼을 클릭할 경우, 등록 기능은 물론 해당 훈련 과정을 수강하는 등록생 수를 업데이트해서 훈련 과정 당 등록 교육생 수를 보여주고자 하는 것이다. 

위와 같이 훈련 과정 당 등록 교육생 수를 보여주기 위해 엔티티에 속성을 추가해준다.

훈련 과정 리스트에서 각 행의 등록 버튼을 클릭하면 위의 화면인 등록 팝업이 뜬다. 그리고 여기서 save 버튼을 기본 로직인 등록이 아닌 마이크로플로우를 트리거하도록 변경한다.

위 마이크로플로우는 해당 기능을 수행하기 위한 로직인데 지금까지 로직 중 가장 복잡하다. 일단 "등록"이라는 기능은 특정 "훈련 과정"의 등록이라는 제약이 있다. 이 등록 버튼으로 넘어 온 화면에서는 어떠한 TrainingEvent인지 마이크로플로우가 탐색할 수 없는 범위의 데이터를 활용해야 하는 상황이 된다. 따라서 현재 선택한 훈련과정을 연관 방식으로 검색해서 이 등록의 기능이 적용될 TrainingEvent를 찾아 참조할 수 있게 만들어야 한다. 

이후 사용자가 등록한 내용을 데이터베이스에 저장한다. 그 다음 해당 훈련과정에 총 등록된 수를 가져와야 하는데 현재 마이크로플로우 범주에는 직전의 추가한 객체만 존재하기 때문에 해당 훈련과정에 총 몇명이 등록했는지 알 수 없다. 따라서 데이터베이스에서 최종적으로 저장된 등록 교육생 수를 가져온다. 이 때 엔티티의 'Registration'이 아닌 현재 TraininEventList에 속한 Registration을 선택해주어야 우리가 의도한 현재 훈련과정의 등록 수만 추출해낼 수 있다.

그 다음 집계 리스트(aggregate list) activity를 추가하고 count 함수를 실행한다. 이 때 입력 값은 당연히 등록 수이다. 변수명이 함수명과 혼동될 여지가 있어서 아래와 같이 변수명을 변경했다.

변수명 변경

그 다음 객체 변경 activity를 추가하면 되는데 우리가 하고자 한, 특정 훈련 과정의 등록 수라는 속성에 현재 우리가 구한 RegistrationNumCount 변수를 매칭시켜주면 된다. 이후 해당 페이지를 닫는 activity를 추가해주면 끝. 아래는 이렇게 구현한 마이크로플로우가 작동한 화면이다.

확실히 시각적으로 표현되니 구현하기 깔끔하고 협업도 편리할 것 같다는 생각이 든다. 더군다나 현재 기능까지 코드를 작성하지 않고 이렇게 구현했음에 당황스럽기도 하다. 하지만 한가지... 각 activity 마다 개체를 선택할 때 로직의 흐름을 명확하게 이해하고 작업하지 않는다면 엉뚱한 결과를 낳는 시스템을 구현하게 될 것 같다. 조심 또 조심 흐름을 놓치지 않기.

반응형