[멘딕스] Refresh in client란?

Martin the dog·2023년 11월 20일
1
post-thumbnail

어? 왜 안 나오지?

Data grid 1에서 제공하는 기본 Add 버튼만으로는 커스텀한 로직을 수행할 수 없다. 다음과 같은 상황을 가정해보자.

예시

고객사는 다양한 과일을 취급하는 회사이다. 주문을 생성하는 그리드에서 주문을 추가할 때 Quantity와 가격을 10, 1000으로 설정해주고자 한다. 해당 요구사항이 반영된 화면과 Microflow는 다음과 같다.

그리드에서 추가 버튼을 누를시 Production Object를 만들어주고 Root Object와 Association을 맺어주어 Grid에 나오게 해주었다.

하지만 결과는?

나오지 않는다. 그럼 Microflow가 작동 안한걸까?

정상적으로 작동한다.

왜 나오지 않을까?

멘딕스 Data 이해하기

Read

멘딕스는 Client Side 렌더링을 한다.
Data grid에서 다음 사진에 나오는 과정을 통해 화면에 데이터를 출력한다.

Runtime Server를 통해 DB에 접근해 데이터를 받아와 Mendix Client를 통해 화면에 출력한다.

그런데 우리가 한 것은 Create이다. Create일때는 어떻게 작동할까?

Create

멘딕스 Client에서 Object 생성을 Server에 요청하면 Object를 생성하여 이를 Client에 전달한다. Mendix CLient에서는 전달받은 Object에 필요한 작업을 하여 Runtime Server에 Save, Commit 요청을 통해 Database에 반영한다.

물론! 위 시나리오는 Persistent Entity일때 해당되는 시나리오이며 예시에서 사용되는 Entity들은 Non-persistent Entity이기 때문에 Client에서 바로 Object가 생성된다.

Non-Persistent Entity가 무조건 Client에서 생성되지는 않는다. 다음 3가지 경우중 하나를 충족하면 Runtime Server를 통해 Object가 생성된다.
1. Entity에 Event Handler가 있는 경우
2. Attribute들중 하나의 값 설정 방식이 Calculated로 설정되어 있는 경우
3. Read-only Attribute가 하나라도 있을 경우

보이는 것 처럼 Create에는 화면을 다시 Update하는 Action이 없다. 그렇다면 어떻게 해줘야 할까?

Refresh in client

바로 Microflow Action 옵션중 하나인 Refresh in client를 이용하는 것이다.
Mendix Document에서 설명하고 있는 설명은 다음과 같다.

This setting defines whether data sources are rerun after data is committed to the database.
/중간생략/
If set to Yes, the object is refreshed across the client, which includes reloading the relevant data sources.

쉽게 말하면 Refresh 할 Entity와 관련된 모든 List Widget의 Data source를 가져오는 로직 수행을 다시 한다는 뜻이다.

위 사진속 Refresh in client의 의미는 새로 생성된 Production Entity List를 Data source로 하는 Datagrid의 Retrieve logic을 다시 수행한다는 의미이다.

결과는?

완벽하다!

Refresh in client in Nanoflow!

Nanoflow에서는 Refresh in client 옵션이 없다. 대신 Commit시 Refresh in client가 자동으로 함께 작동한다.

또한 Nanoflow Common에서 제공하는 Refresh object와 Refresh Entity Activity가 있다. Refresh Entity는 Refresh in client와 같다고 생각하면 된다.
Refresh object는 해당 파라미터로 넘어온 object만 Refresh 해준다.

profile
Happy Developer

3개의 댓글

comment-user-thumbnail
2024년 7월 5일

저는 왜 Edit Data source 에서 Association관계 엔티티를 선택했을때 Production/root 이런식으로 안보일까요 ?

path 지정을 어떻게 하는지 궁금합니다 ㅠ

1개의 답글