CRUD 거래 연결과 검증
이 문서의 결과: BOD010/BOD011/BOD012 거래 계약을 작성해 화면-거래-SQL 전체 흐름을 연결하고 검증한다.
시작 조건
- 07. dbclient SQL 계약에서
BOD010.xml,BOD011.xml,BOD012.xml을 완성했습니다. - 06. 화면 동작과 거래 연결에서 화면 JS의
transactionAction호출을 완성했습니다.
BOD011.json: 등록 거래
{
"ApplicationID": "HDS",
"ProjectID": "BOD",
"TransactionID": "BOD011",
"Services": [
{
"ServiceID": "ID01",
"Authorize": false,
"ReturnType": "Json",
"CommandType": "D",
"TransactionScope": false,
"Inputs": [
{ "ModelID": "Dynamic", "Fields": [], "Type": "Row" }
],
"Outputs": []
}
]
}
BOD012.json: 조회·수정·삭제 거래
{
"ApplicationID": "HDS",
"ProjectID": "BOD",
"TransactionID": "BOD012",
"Services": [
{
"ServiceID": "GD01",
"Authorize": false,
"ReturnType": "Json",
"CommandType": "D",
"TransactionScope": false,
"Inputs": [{ "ModelID": "Dynamic", "Fields": [], "Type": "Row" }],
"Outputs": [{ "ModelID": "Dynamic", "Fields": [], "Type": "Form" }]
},
{
"ServiceID": "UD01",
"Authorize": false,
"ReturnType": "Json",
"CommandType": "D",
"TransactionScope": false,
"Inputs": [{ "ModelID": "Dynamic", "Fields": [], "Type": "Row" }],
"Outputs": []
},
{
"ServiceID": "DD01",
"Authorize": false,
"ReturnType": "Json",
"CommandType": "D",
"TransactionScope": false,
"Inputs": [{ "ModelID": "Dynamic", "Fields": [], "Type": "Row" }],
"Outputs": []
}
]
}
전체 흐름 검증하기
세 화면과 계약이 모두 준비되면 다음 순서로 전체 흐름을 확인합니다.
BOD010.html을 열어 목록이 표시되는지 확인합니다(빈 목록이어도 오류가 없어야 합니다).BOD010에서 등록 버튼으로BOD011팝업을 열고 게시글을 저장합니다.- 팝업이 닫히고
BOD010목록이 자동으로 갱신되어 새 글이 보이는지 확인합니다. - 목록에서 상세 버튼으로
BOD012를 열어 조회·수정·삭제가 모두 정상 동작하는지 확인합니다.
데이터 맵 불일치 재현하기
일부러 화면의 syn-datafield="Board"를 syn-datafield="BoardList"로 바꾸고 다시 조회해 봅니다. 거래는 성공(네트워크 탭에서 200, 응답 본문에 데이터 있음)하지만 그리드는 비어 있는 것을 확인할 수 있습니다. 이름을 원래대로 되돌리면 다시 정상 동작합니다. 이 재현 경험이 10. 테스트와 디버깅에서 실제 장애를 진단할 때 가장 먼저 떠올려야 할 패턴입니다.
완료 조건 확인
08. transact 거래 계약의 완료 조건을 확인한 뒤 09. 확장 모듈로 이동합니다.