일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 배열
- SQL 튜닝
- 스프링시큐리티 로그아웃
- 친절한 SQL 튜닝
- spring 게시판 삭제
- join
- 연산자
- 식별자
- 친절한 SQL
- 객체
- 자바의정석
- 인텔리제이 Web 애플리케이션
- 반복문
- SpringSecurity 로그아웃
- SpringSecurity 로그인
- java
- @PreAuthorize("isAuthenticated()")
- 상속
- 비교 연산자
- StringBuffer
- 함수
- 예약어
- 산술 연산자
- 객체지향
- 오버로딩
- SQL튜닝
- 오버라이딩
- 이클립스 설치
- 논리 연산자
- SQL
- Today
- Total
gi_dor
[Mendix] Rapid Developer CH07 본문
교육 이벤트 일정을 설정하려고 한다 , 수동으로 세부 정보를 입력해야하는데
이벤트의 시작 날짜와 코스 기간을 기준으로 종료 날짜를 자동으로 계산해 시간을 절약하고
데이터를 일관되게 유지하고 싶다
- 마이크로 플로우를 사용해 시작날짜와 과정기간은 종료날짜를 결정한다 날짜가 선택되면 트리거가 발생해야한다
- 위젯이벤트를 사용해 수행할 수 있으며 , 위젯이벤트를 사용하면 입력위젯이 상호작용할 때 마이크로 플로우를 트리거 할수 있다. 시작날짜 입력 위젯 , 과정 선택 위젯이 필요 , 두개모두 종료 날짜를 계산한다
- 새로운 마이크로 플로우를 사용해 종료일 채우기
- TrainingEvent를 변경해 Change Object를 사용해 새로운 EndDate값을 설정한다
- Change Object 활동에서 addDays라는 함수를 사용하는 마이크로 플로우 표현식을 작성해야한다
- 해당 함수는 날짜(시작일) 에 일 수 (코스 기간) 을 더하고 새 날짜를 계산해준다
Object 필드 밑에 Commit과 Refresh in Client가 있는 것을 볼수 있다
Commit은 변경 객체의 활동이 지금당장 변경사항을 DB에 저장한다는것을 의미한다고 한다
Refresh in Client는 클라이언트 화면이 변경된 모든 데이터로 업데이트 된다는것을 의미한다고 한다.. 뭔말이야 이게..
앱에서 사용자는 계산된 종료일을 즉기 보고 싶어하기에 클라이언트를 새로 고쳐야한다
→ 커밋을 No , Refresh Yes
New 버튼을 통해 종료일 설정
날짜 계산하려면 Microflow Expressions를 사용해야 한다
CTRL + SPACE 를 사용해 Microflow 표현식을 만드는데 사용할 수 있는 모든 요소의 목록이 표시된다
addDays(날짜및시간,Integer/Long)
microflow에서 객체를 사용할 수 있는 경우 객체내부의 모든정보인 속성과 연결된 객체의 ID에 액세스할 수 있다
이것을 microflow 의 범위에 있다고 표현한다고한다
객체의 ID는 Mendix 플랫폼에서 특정 객체를 식별하는 고유 식별자
Mendix의 데이터베이스에서 각 객체가 다른 객체와 구별될 수 있도록 하는 기본 키(primary key) 역할
사용자가 만들지 않아도 알아서 만들어진다.
Microflow와 범위란?
- Microflow가 실행되는 동안, 객체와 그 안에 있는 정보(속성)를 자유롭게 사용할 수 있다.
- 이때, 그 객체에 연결된 다른 객체도 사용할 수 있다
예를 들어, 위에 그림에서 TrainingEvent(훈련 이벤트) 객체를 쓴다면- StartDate와 EndDate 같은 정보를 바로 쓸 수 있고
- TrainingEvent와 연결된 Course나 Location의 정보도 볼 수 있다
Mendix에서 애플리케이션 서버의 메모리에서 검색하는 것을 By Association retrieve
메모리에 없거나 정보가 오래되었을 수 있는 경우 대신 데이터베이스에서 정보를 검색 From Database retrieve
항상 메모리를 무시하고 데이터베이스에서 검색한다
Retrieve 를 Change 객체가 활동하기 전에 되야한다
microflow 흐름선에 Retrieve를 배치하고 데이터 소스가 By association , From database 중 하나를 선택해야한다
새로운 TrainingEvent가 생성되기에 DB에는 아직 저장되지 않았기에 메모리에 존재하기에 By Associataion을 선택한다
- $TrainingEvent/StartDate != empty
- $Course != empty
breakPoint 해제 , Change Object 수정
하루동안만 진행되는 코스는 같은날에 시작해서 끝나야한다 addDays() 는 24시간을 더하므로
이벤트에 - 1을 추가한다
- addDays($TrainingEvent/StartDate,$Course/Duration - 1)
- 이렇게 되면 1일 기간의 코스는 종료날짜를 얻기 위해 시작날짜에 + 0 이 추가되어 알맞게 계산된다
Training 주최자는 교육 이벤트에 참석한 교육생의 수를 확인하려고 한다
최대 12명의 교육생을 초대할 수 있다 , 만약 6명뿐인 교육에 12명을위한 재료를 주문하는 것은 낭비이기에
해당 요구사항을 구현하고자 한다
- 앱에서 정보를 볼수있는지확인
- 등록 수 계산을 언제 ?
- 등록 수 계
- 작업 배포 테스트
총 등록인원의 수를 Training Evnet 엔티티에 속성을 추가하려고 한다
Integer 타입으로 하며 , 저장된 속성으로 할지 , 계산된 속성으로 할지 선택
자주 변경이 이루어지지 않는 속성이기에 저장된 속성을 사용
이제 숫자가 언제 변경되는지 , 언제 계산되어 데이터베이스에 저장할지 선택해야한다
- 등록인원이 추가되거나 , 기존 등록을 삭제할 때 마다 계산되어야한다
Registration_NewEdit 페이지의 Save 버튼
메모리에 생성되었지만 아직 데이터베이스에 없는 객체를 일시적 객체라고 한다
- 첫번째 Retrive , By association , 엔티티설정 Registraion_TrainingEvent연결
- Registration이 속한 TrainingEvent에 액세스 할수 있다
- Commit Object 에 with Event를 Yes , Refresh Client 를 No로 설정
- Commit 바로 뒤에 두번째 검색 Retrive 를 설정 , 소스를 From DataBase로 설정 , Ragne는 All
- Registration 엔티티를 선택하는 방법은 MyFirstModule 하단에에있고 , 하나는 상단의 TrainingEvent 변수에 중첩되어있다
- 하단 선택시 전체 데이터베이스에있는 Registration을 가져오기에 상단 TrainingEvent에 중첩된 Registration 엔티티선택
- 등록 개체를 Counting 한다 , Aggregate list 를 추가해 세는 작업을 진행한다
- TotalNumberOfRegistration에 Count 값을 저장한다
- Aggregate List 뒤에 Chnage Object를 추가
- TrainingEvent 선택 , New → TotalNumber...속성 선택
- $Count입력
- Refresh , Commit 모두 YES
객체이벤트 핸들러
접두사
BeforeAfter
BEFORE | AFTER | |
Create | BCR | ACR |
Commit | BCO | ACO |
Rollback | BRO | ARO |
Delete | BDE | ADE |
'Tool > Mendix' 카테고리의 다른 글
[Mendix] Rapid Developer CH08 (0) | 2024.11.22 |
---|---|
Mendix ? Low-Code Platform ? 그게뭔데 (3) | 2024.11.22 |
[Mendix] Rapid Developer CH06 (0) | 2024.11.20 |
[Mendix] Rapid Developer CH05 (1) | 2024.11.20 |
[Mendix] Rapid Developer CH04 (0) | 2024.11.19 |