diff --git a/src/components/designer/es-modeling/testTerminals/EventStormingTestTerminal.vue b/src/components/designer/es-modeling/testTerminals/EventStormingTestTerminal.vue index 3467c584..dfe1c8ad 100644 --- a/src/components/designer/es-modeling/testTerminals/EventStormingTestTerminal.vue +++ b/src/components/designer/es-modeling/testTerminals/EventStormingTestTerminal.vue @@ -7,6 +7,7 @@ import ESActionsUtil from "../../modeling/generators/es-ddl-generators/modules/E import TokenCounterTest from "../../modeling/generators/utils/TokenCounter/TokenCounterTest"; import ESValueSummaryGeneratorTest from "../../modeling/generators/es-generators/ESValueSummaryGenerator/ESValueSummaryGeneratorTest"; import ESValueSummarizeWithFilterTest from "../../modeling/generators/es-generators/helpers/ESValueSummarizeWithFilter/ESValueSummarizeWithFilterTest"; +import { getEsValue } from "../../modeling/generators/es-generators/mocks"; export default { name: "es-test-terminal", @@ -1036,6 +1037,9 @@ export default { }, async _TempTest() { + console.log(getEsValue("librarySevice")) + console.log(getEsValue("librarySevice", ['remainOnlyBoundedContext'])) + console.log(getEsValue("librarySevice", ['remainOnlyAggregate'])) } } } diff --git a/src/components/designer/modeling/generators/es-generators/ESValueSummaryGenerator/ESValueSummaryGenerator.js b/src/components/designer/modeling/generators/es-generators/ESValueSummaryGenerator/ESValueSummaryGenerator.js index 99d0f211..80452a8d 100644 --- a/src/components/designer/modeling/generators/es-generators/ESValueSummaryGenerator/ESValueSummaryGenerator.js +++ b/src/components/designer/modeling/generators/es-generators/ESValueSummaryGenerator/ESValueSummaryGenerator.js @@ -8,33 +8,11 @@ const { TokenCounter } = require("../../utils") * @description EventStorming 모델의 요약 정보를 생성하고 관리하는 클래스입니다. * 주어진 컨텍스트에 따라 EventStorming 요소들을 분석하고 토큰 제한에 맞춰 요약된 정보를 생성합니다. * - * @class - * @extends {FormattedJSONAIGenerator} - * - * @property {string[]} checkInputParamsKeys - 필수 입력 파라미터 키 목록 - * @property {string[]} progressCheckStrings - 진행 상태 확인을 위한 문자열 목록 - * @property {ESAliasTransManager} esAliasTransManager - ES 별칭 변환 관리자 - * - * @constructor - * @param {Object} client - 클라이언트 설정 객체 - * @param {Object} client.input - 입력 파라미터 - * @param {string} client.input.context - 분석 컨텍스트 - * @param {Object} client.input.esValue - EventStorming 모델 데이터 - * @param {string[]} client.input.keysToFilter - 필터링할 키 목록 - * @param {number} client.input.maxTokens - 최대 토큰 수 제한 - * @param {string} client.input.tokenCalcModel - 토큰 계산 모델 - * - * @throws {Error} id 속성이 keysToFilter에 포함된 경우 - * - * @see FormattedJSONAIGenerator - * @see ESAliasTransManager - * @see ESValueSummarizeWithFilter - * - * @example + * @example 전달된 이벤트 스토밍 모델에 대해서 최대 토큰 이내의 요약정보 얻기 * const generator = new ESValueSummaryGenerator({ * input: { * context: "도서 관련 커맨드 생성 작업을 수행해야 함", - * esValue: libraryEsValue, + * esValue: getEsValue("librarySevice"), * keysToFilter: [], * maxTokens: 800, * tokenCalcModel: "gpt-4o" @@ -52,11 +30,6 @@ const { TokenCounter } = require("../../utils") * }); * * generator.generate(); - * - * @note - * - id 속성은 정렬에 사용되므로 필터링할 수 없습니다 - * - 토큰 제한에 맞춰 자동으로 요약 정보가 조정됩니다 - * - 요약된 정보는 JSON 형식으로 제공됩니다 */ class ESValueSummaryGenerator extends FormattedJSONAIGenerator{ constructor(client){ diff --git a/src/components/designer/modeling/generators/es-generators/ESValueSummaryGenerator/ESValueSummaryGeneratorTest.js b/src/components/designer/modeling/generators/es-generators/ESValueSummaryGenerator/ESValueSummaryGeneratorTest.js index 055fd0eb..c012a4f4 100644 --- a/src/components/designer/modeling/generators/es-generators/ESValueSummaryGenerator/ESValueSummaryGeneratorTest.js +++ b/src/components/designer/modeling/generators/es-generators/ESValueSummaryGenerator/ESValueSummaryGeneratorTest.js @@ -1,12 +1,12 @@ const ESValueSummaryGenerator = require("./ESValueSummaryGenerator") -const { libraryEsValue } = require("./mocks"); const { ESValueSummarizeWithFilter } = require("../helpers") const ESAliasTransManager = require("../../es-ddl-generators/modules/ESAliasTransManager") const { TokenCounter } = require("../../utils") +const { getEsValue } = require("../mocks") class ESValueSummaryGeneratorTest { static async test(esValue=null) { - if(!esValue) esValue = JSON.parse(JSON.stringify(libraryEsValue)); + if(!esValue) esValue = getEsValue("librarySevice"); const esAliasTransManager = new ESAliasTransManager(esValue) diff --git a/src/components/designer/modeling/generators/es-generators/ESValueSummaryGenerator/mocks.js b/src/components/designer/modeling/generators/es-generators/ESValueSummaryGenerator/mocks.js deleted file mode 100644 index 89ba81eb..00000000 --- a/src/components/designer/modeling/generators/es-generators/ESValueSummaryGenerator/mocks.js +++ /dev/null @@ -1,5385 +0,0 @@ -export const libraryEsValue = { - "elements": { - "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741": { - "_type": "org.uengine.modeling.model.BoundedContext", - "aggregates": [ - { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - } - ], - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "description": "'도서 관리' 화면에서는 새로운 도서를 등록하고 현재 보유한 도서들의 상태를 관리할 수 있어야 해. 도서 등록 시에는 도서명, ISBN, 저자, 출판사, 카테고리 정보를 입력받아야 해. ISBN은 13자리 숫자여야 하고 중복 확인이 필요해. 카테고리는 소설/비소설/학술/잡지 중에서 선택할 수 있어야 해. 등록된 도서는 처음에 '대출가능' 상태가 되고, 이후 대출/반납 상황에 따라 '대출중', '예약중' 상태로 자동으로 변경되어야 해. 도서가 훼손되거나 분실된 경우 '폐기' 처리가 가능해야 하며, 폐기된 도서는 더 이상 대출이 불가능해야 해. 각 도서별로 대출 이력과 상태 변경 이력을 조회할 수 있어야 하고, 이를 통해 도서의 대출 현황과 상태 변화를 추적할 수 있어야 해.", - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741", - "elementView": { - "_type": "org.uengine.modeling.model.BoundedContext", - "height": 590, - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741", - "style": "{}", - "width": 560, - "x": 650, - "y": 450 - }, - "gitURL": null, - "hexagonalView": { - "_type": "org.uengine.modeling.model.BoundedContextHexagonal", - "height": 350, - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741", - "style": "{}", - "width": 350, - "x": 235, - "y": 365 - }, - "members": [], - "name": "BookManagement", - "displayName": "도서 관리", - "oldName": "", - "policies": [], - "portGenerated": null, - "preferredPlatform": "template-spring-boot", - "preferredPlatformConf": {}, - "rotateStatus": false, - "tempId": "", - "templatePerElements": {}, - "views": [], - "definitionId": "163972132_es_9c3424a86507b5056f7433e4cbbf6f4a" - }, - "85c498d4-39ed-5546-59b8-8eaaf33cffc8": { - "_type": "org.uengine.modeling.model.BoundedContext", - "aggregates": [ - { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - } - ], - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "description": "'대출/반납' 화면에서는 회원이 도서를 대출하고 반납하는 것을 관리할 수 있어야 해. 대출 신청 시에는 회원번호와 이름으로 회원을 확인하고, 대출할 도서를 선택해야 해. 도서는 도서명이나 ISBN으로 검색할 수 있어야 해. 대출 기간은 7일/14일/30일 중에서 선택할 수 있어. 만약 대출하려는 도서가 이미 대출 중이라면, 예약 신청이 가능해야 해. 대출이 완료되면 해당 도서의 상태는 자동으로 '대출중'으로 변경되어야 해. 대출 현황 화면에서는 현재 대출 중인 도서들의 목록을 볼 수 있어야 해. 각 대출 건에 대해 대출일, 반납예정일, 현재 상태(대출중/연체/반납완료)를 확인할 수 있어야 하고, 대출 중인 도서는 연장이나 반납 처리가 가능해야 해. 도서가 반납되면 자동으로 해당 도서의 상태가 '대출가능'으로 변경되어야 해. 만약 예약자가 있는 도서가 반납되면, 해당 도서는 '예약중' 상태로 변경되어야 해.", - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8", - "elementView": { - "_type": "org.uengine.modeling.model.BoundedContext", - "height": 726, - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8", - "style": "{}", - "width": 560, - "x": 1235, - "y": 518 - }, - "gitURL": null, - "hexagonalView": { - "_type": "org.uengine.modeling.model.BoundedContextHexagonal", - "height": 350, - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8", - "style": "{}", - "width": 350, - "x": 235, - "y": 365 - }, - "members": [], - "name": "LoanManagement", - "displayName": "대출/반납 관리", - "oldName": "", - "policies": [], - "portGenerated": 8080, - "preferredPlatform": "template-spring-boot", - "preferredPlatformConf": {}, - "rotateStatus": false, - "tempId": "", - "templatePerElements": {}, - "views": [], - "definitionId": "163972132_es_9c3424a86507b5056f7433e4cbbf6f4a" - }, - "554241df-8091-4819-87d3-8fa38d18deaa": { - "aggregateRoot": { - "_type": "org.uengine.modeling.model.AggregateRoot", - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": true, - "name": "bookId", - "nameCamelCase": "bookId", - "namePascalCase": "BookId", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "title", - "nameCamelCase": "title", - "namePascalCase": "Title", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "isbn", - "nameCamelCase": "isbn", - "namePascalCase": "Isbn", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "author", - "nameCamelCase": "author", - "namePascalCase": "Author", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "publisher", - "nameCamelCase": "publisher", - "namePascalCase": "Publisher", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Category", - "isCopy": false, - "isKey": false, - "name": "category", - "nameCamelCase": "category", - "namePascalCase": "Category", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "nameCamelCase": "status", - "namePascalCase": "Status", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "entities": { - "elements": { - "0a22d0ce-0f1d-80fa-42b3-19647aa41149": { - "_type": "org.uengine.uml.model.Class", - "id": "0a22d0ce-0f1d-80fa-42b3-19647aa41149", - "name": "Book", - "namePascalCase": "Book", - "nameCamelCase": "book", - "namePlural": "Books", - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": true, - "name": "bookId", - "displayName": "", - "nameCamelCase": "bookId", - "namePascalCase": "BookId", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "title", - "displayName": "", - "nameCamelCase": "title", - "namePascalCase": "Title", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "isbn", - "displayName": "", - "nameCamelCase": "isbn", - "namePascalCase": "Isbn", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "author", - "displayName": "", - "nameCamelCase": "author", - "namePascalCase": "Author", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "publisher", - "displayName": "", - "nameCamelCase": "publisher", - "namePascalCase": "Publisher", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Category", - "isCopy": false, - "isKey": false, - "name": "category", - "displayName": "", - "nameCamelCase": "category", - "namePascalCase": "Category", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "displayName": "", - "nameCamelCase": "status", - "namePascalCase": "Status", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - } - ], - "operations": [], - "elementView": { - "_type": "org.uengine.uml.model.Class", - "id": "0a22d0ce-0f1d-80fa-42b3-19647aa41149", - "x": 200, - "y": 200, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 120, - "fieldH": 90, - "methodH": 30 - }, - "selected": false, - "relations": [], - "parentOperations": [], - "relationType": null, - "isVO": false, - "isAbstract": false, - "isInterface": false, - "isAggregateRoot": true, - "parentId": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "e029780c-da79-3641-c1f3-8e45ebd5bfb7": { - "_type": "org.uengine.uml.model.enum", - "id": "e029780c-da79-3641-c1f3-8e45ebd5bfb7", - "name": "Category", - "displayName": "도서 카테고리", - "nameCamelCase": "category", - "namePascalCase": "Category", - "namePlural": "categories", - "elementView": { - "_type": "org.uengine.uml.model.enum", - "id": "e029780c-da79-3641-c1f3-8e45ebd5bfb7", - "x": 700, - "y": 456, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 50 - }, - "selected": false, - "items": [ - { - "value": "NOVEL" - }, - { - "value": "NONFICTION" - }, - { - "value": "ACADEMIC" - }, - { - "value": "MAGAZINE" - } - ], - "useKeyValue": false, - "relations": [] - }, - "3abb79e5-1456-e11b-560b-1483b5807a68": { - "_type": "org.uengine.uml.model.enum", - "id": "3abb79e5-1456-e11b-560b-1483b5807a68", - "name": "Status", - "displayName": "도서 상태", - "nameCamelCase": "status", - "namePascalCase": "Status", - "namePlural": "statuses", - "elementView": { - "_type": "org.uengine.uml.model.enum", - "id": "3abb79e5-1456-e11b-560b-1483b5807a68", - "x": 950, - "y": 456, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 50 - }, - "selected": false, - "items": [ - { - "value": "AVAILABLE" - }, - { - "value": "BORROWED" - }, - { - "value": "RESERVED" - }, - { - "value": "DISCARDED" - } - ], - "useKeyValue": false, - "relations": [] - } - }, - "relations": {} - }, - "operations": [] - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "name": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741", - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "commands": [], - "description": null, - "id": "554241df-8091-4819-87d3-8fa38d18deaa", - "elementView": { - "_type": "org.uengine.modeling.model.Aggregate", - "id": "554241df-8091-4819-87d3-8fa38d18deaa", - "x": 650, - "y": 450, - "width": 130, - "height": 400 - }, - "events": [], - "hexagonalView": { - "_type": "org.uengine.modeling.model.AggregateHexagonal", - "id": "554241df-8091-4819-87d3-8fa38d18deaa", - "x": 0, - "y": 0, - "subWidth": 0, - "width": 0 - }, - "name": "Book", - "displayName": "도서", - "nameCamelCase": "book", - "namePascalCase": "Book", - "namePlural": "books", - "rotateStatus": false, - "selected": false, - "_type": "org.uengine.modeling.model.Aggregate" - }, - "f8dc3056-6183-539a-7f20-68681ddcc8a2": { - "aggregateRoot": { - "_type": "org.uengine.modeling.model.AggregateRoot", - "fieldDescriptors": [ - { - "className": "Long", - "isCopy": false, - "isKey": true, - "name": "loanId", - "nameCamelCase": "loanId", - "namePascalCase": "LoanId", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Member", - "isCopy": false, - "isKey": false, - "name": "member", - "nameCamelCase": "member", - "namePascalCase": "Member", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Integer", - "isCopy": false, - "isKey": false, - "name": "loanPeriod", - "nameCamelCase": "loanPeriod", - "namePascalCase": "LoanPeriod", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "loanStatus", - "nameCamelCase": "loanStatus", - "namePascalCase": "LoanStatus", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "loanDate", - "nameCamelCase": "loanDate", - "namePascalCase": "LoanDate", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDueDate", - "nameCamelCase": "returnDueDate", - "namePascalCase": "ReturnDueDate", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "loanDuration", - "nameCamelCase": "loanDuration", - "namePascalCase": "LoanDuration", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "BookId", - "isCopy": false, - "isKey": false, - "name": "bookId", - "nameCamelCase": "bookId", - "namePascalCase": "BookId", - "displayName": "", - "referenceClass": "Book", - "isOverrideField": true, - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "entities": { - "elements": { - "30397330-2606-86f2-57f4-bf677bae16dc": { - "_type": "org.uengine.uml.model.Class", - "id": "30397330-2606-86f2-57f4-bf677bae16dc", - "name": "Loan", - "namePascalCase": "Loan", - "nameCamelCase": "loan", - "namePlural": "Loans", - "fieldDescriptors": [ - { - "className": "Long", - "isCopy": false, - "isKey": true, - "name": "loanId", - "displayName": "", - "nameCamelCase": "loanId", - "namePascalCase": "LoanId", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Member", - "isCopy": false, - "isKey": false, - "name": "member", - "displayName": "", - "nameCamelCase": "member", - "namePascalCase": "Member", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Integer", - "isCopy": false, - "isKey": false, - "name": "loanPeriod", - "displayName": "", - "nameCamelCase": "loanPeriod", - "namePascalCase": "LoanPeriod", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "loanStatus", - "displayName": "", - "nameCamelCase": "loanStatus", - "namePascalCase": "LoanStatus", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "loanDate", - "displayName": "", - "nameCamelCase": "loanDate", - "namePascalCase": "LoanDate", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDueDate", - "displayName": "", - "nameCamelCase": "returnDueDate", - "namePascalCase": "ReturnDueDate", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "loanDuration", - "displayName": "", - "nameCamelCase": "loanDuration", - "namePascalCase": "LoanDuration", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "BookId", - "isCopy": false, - "isKey": false, - "name": "bookId", - "nameCamelCase": "bookId", - "namePascalCase": "BookId", - "displayName": "", - "referenceClass": "Book", - "isOverrideField": true, - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "operations": [], - "elementView": { - "_type": "org.uengine.uml.model.Class", - "id": "30397330-2606-86f2-57f4-bf677bae16dc", - "x": 200, - "y": 200, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 120, - "fieldH": 90, - "methodH": 30 - }, - "selected": false, - "relations": [], - "parentOperations": [], - "relationType": null, - "isVO": false, - "isAbstract": false, - "isInterface": false, - "isAggregateRoot": true, - "parentId": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "09ee5a03-4449-1bde-3705-35c2ca198880": { - "_type": "org.uengine.uml.model.vo.Class", - "id": "09ee5a03-4449-1bde-3705-35c2ca198880", - "name": "Member", - "displayName": "회원", - "namePascalCase": "Member", - "nameCamelCase": "member", - "fieldDescriptors": [ - { - "className": "String", - "isKey": false, - "label": "- memberId: String", - "name": "memberId", - "nameCamelCase": "memberId", - "namePascalCase": "MemberId", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isKey": false, - "label": "- name: String", - "name": "name", - "nameCamelCase": "name", - "namePascalCase": "Name", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "operations": [], - "elementView": { - "_type": "org.uengine.uml.model.vo.address.Class", - "id": "09ee5a03-4449-1bde-3705-35c2ca198880", - "x": 700, - "y": 152, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 170, - "fieldH": 150, - "methodH": 30 - }, - "selected": false, - "parentOperations": [], - "relationType": null, - "isVO": true, - "relations": [], - "groupElement": null, - "isAggregateRoot": false, - "namePlural": "Members", - "isAbstract": false, - "isInterface": false - }, - "bfdf118a-ad46-c0e3-2ae4-d0372b9d8361": { - "_type": "org.uengine.uml.model.enum", - "id": "bfdf118a-ad46-c0e3-2ae4-d0372b9d8361", - "name": "LoanStatus", - "displayName": "대출 상태", - "nameCamelCase": "loanStatus", - "namePascalCase": "LoanStatus", - "namePlural": "loanStatuses", - "elementView": { - "_type": "org.uengine.uml.model.enum", - "id": "bfdf118a-ad46-c0e3-2ae4-d0372b9d8361", - "x": 700, - "y": 456, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 50 - }, - "selected": false, - "items": [ - { - "value": "BORROWED" - }, - { - "value": "OVERDUE" - }, - { - "value": "RETURNED" - } - ], - "useKeyValue": false, - "relations": [] - }, - "8c1b2fee-54a7-b460-486a-1453593fac3f": { - "_type": "org.uengine.uml.model.enum", - "id": "8c1b2fee-54a7-b460-486a-1453593fac3f", - "name": "LoanDuration", - "displayName": "대출 기간 옵션", - "nameCamelCase": "loanDuration", - "namePascalCase": "LoanDuration", - "namePlural": "loanDurations", - "elementView": { - "_type": "org.uengine.uml.model.enum", - "id": "8c1b2fee-54a7-b460-486a-1453593fac3f", - "x": 950, - "y": 456, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 50 - }, - "selected": false, - "items": [ - { - "value": "7_DAYS" - }, - { - "value": "14_DAYS" - }, - { - "value": "30_DAYS" - } - ], - "useKeyValue": false, - "relations": [] - }, - "498f116f-796f-fa99-d9a2-a2f257761c80": { - "_type": "org.uengine.uml.model.vo.Class", - "id": "498f116f-796f-fa99-d9a2-a2f257761c80", - "name": "BookId", - "displayName": "", - "namePascalCase": "BookId", - "nameCamelCase": "bookId", - "fieldDescriptors": [ - { - "className": "String", - "isKey": true, - "label": "- bookId: String", - "name": "bookId", - "nameCamelCase": "bookId", - "namePascalCase": "BookId", - "displayName": "", - "referenceClass": "Book", - "isOverrideField": true, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isKey": false, - "label": "- isbn: String", - "name": "isbn", - "nameCamelCase": "isbn", - "namePascalCase": "Isbn", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "operations": [], - "elementView": { - "_type": "org.uengine.uml.model.vo.address.Class", - "id": "498f116f-796f-fa99-d9a2-a2f257761c80", - "x": 950, - "y": 152, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 170, - "fieldH": 150, - "methodH": 30 - }, - "selected": false, - "parentOperations": [], - "relationType": null, - "isVO": true, - "relations": [ - "9c545fdc-cddf-9cbb-e621-60b6aec1c837" - ], - "groupElement": null, - "isAggregateRoot": false, - "namePlural": "BookIds", - "isAbstract": false, - "isInterface": false - }, - "7c0b178b-e639-d076-551b-a6e54231343a": { - "_type": "org.uengine.uml.model.enum", - "id": "7c0b178b-e639-d076-551b-a6e54231343a", - "name": "Category", - "displayName": "도서 카테고리", - "nameCamelCase": "category", - "namePascalCase": "Category", - "namePlural": "categories", - "elementView": { - "_type": "org.uengine.uml.model.enum", - "id": "7c0b178b-e639-d076-551b-a6e54231343a", - "x": 1200, - "y": 456, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 50 - }, - "selected": false, - "items": [ - { - "value": "NOVEL" - }, - { - "value": "NONFICTION" - }, - { - "value": "ACADEMIC" - }, - { - "value": "MAGAZINE" - } - ], - "useKeyValue": false, - "relations": [ - "9c545fdc-cddf-9cbb-e621-60b6aec1c837" - ] - } - }, - "relations": { - "9c545fdc-cddf-9cbb-e621-60b6aec1c837": { - "name": "Category", - "id": "9c545fdc-cddf-9cbb-e621-60b6aec1c837", - "_type": "org.uengine.uml.model.Relation", - "sourceElement": { - "_type": "org.uengine.uml.model.vo.Class", - "id": "498f116f-796f-fa99-d9a2-a2f257761c80", - "name": "BookId", - "displayName": "", - "namePascalCase": "BookId", - "nameCamelCase": "bookId", - "fieldDescriptors": [ - { - "className": "String", - "isKey": true, - "label": "- bookId: String", - "name": "bookId", - "nameCamelCase": "bookId", - "namePascalCase": "BookId", - "displayName": "", - "referenceClass": "Book", - "isOverrideField": true, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isKey": false, - "label": "- isbn: String", - "name": "isbn", - "nameCamelCase": "isbn", - "namePascalCase": "Isbn", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "operations": [], - "elementView": { - "_type": "org.uengine.uml.model.vo.address.Class", - "id": "498f116f-796f-fa99-d9a2-a2f257761c80", - "x": 950, - "y": 152, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 170, - "fieldH": 150, - "methodH": 30 - }, - "selected": false, - "parentOperations": [], - "relationType": null, - "isVO": true, - "relations": [ - "9c545fdc-cddf-9cbb-e621-60b6aec1c837" - ], - "groupElement": null, - "isAggregateRoot": false, - "namePlural": "BookIds", - "isAbstract": false, - "isInterface": false - }, - "targetElement": { - "_type": "org.uengine.uml.model.enum", - "id": "7c0b178b-e639-d076-551b-a6e54231343a", - "name": "Category", - "displayName": "도서 카테고리", - "nameCamelCase": "category", - "namePascalCase": "Category", - "namePlural": "categories", - "elementView": { - "_type": "org.uengine.uml.model.enum", - "id": "7c0b178b-e639-d076-551b-a6e54231343a", - "x": 1200, - "y": 456, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 50 - }, - "selected": false, - "items": [ - { - "value": "NOVEL" - }, - { - "value": "NONFICTION" - }, - { - "value": "ACADEMIC" - }, - { - "value": "MAGAZINE" - } - ], - "useKeyValue": false, - "relations": [ - "9c545fdc-cddf-9cbb-e621-60b6aec1c837" - ] - }, - "from": "498f116f-796f-fa99-d9a2-a2f257761c80", - "to": "7c0b178b-e639-d076-551b-a6e54231343a", - "selected": false, - "relationView": { - "id": "9c545fdc-cddf-9cbb-e621-60b6aec1c837", - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "from": "498f116f-796f-fa99-d9a2-a2f257761c80", - "to": "7c0b178b-e639-d076-551b-a6e54231343a", - "needReconnect": true - }, - "sourceMultiplicity": "1", - "targetMultiplicity": "1", - "relationType": "Association", - "fromLabel": "", - "toLabel": "" - } - } - }, - "operations": [] - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "name": "85c498d4-39ed-5546-59b8-8eaaf33cffc8", - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "commands": [], - "description": null, - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2", - "elementView": { - "_type": "org.uengine.modeling.model.Aggregate", - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2", - "x": 1235, - "y": 525, - "width": 130, - "height": 550 - }, - "events": [], - "hexagonalView": { - "_type": "org.uengine.modeling.model.AggregateHexagonal", - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2", - "x": 0, - "y": 0, - "subWidth": 0, - "width": 0 - }, - "name": "Loan", - "displayName": "대출", - "nameCamelCase": "loan", - "namePascalCase": "Loan", - "namePlural": "loans", - "rotateStatus": false, - "selected": false, - "_type": "org.uengine.modeling.model.Aggregate" - }, - "5afcf0dc-5c3b-f67a-d273-fab421febc20": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "5afcf0dc-5c3b-f67a-d273-fab421febc20", - "elementView": { - "angle": 0, - "height": 116, - "id": "5afcf0dc-5c3b-f67a-d273-fab421febc20", - "style": "{}", - "width": 100, - "x": 744, - "y": 250, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "title", - "nameCamelCase": "title", - "namePascalCase": "Title", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "isbn", - "nameCamelCase": "isbn", - "namePascalCase": "Isbn", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "author", - "nameCamelCase": "author", - "namePascalCase": "Author", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "publisher", - "nameCamelCase": "publisher", - "namePascalCase": "Publisher", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Category", - "isCopy": false, - "isKey": false, - "name": "category", - "nameCamelCase": "category", - "namePascalCase": "Category", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "nameCamelCase": "status", - "namePascalCase": "Status", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "5afcf0dc-5c3b-f67a-d273-fab421febc20", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "BookCreated", - "displayName": "도서 등록됨", - "nameCamelCase": "bookCreated", - "namePascalCase": "BookCreated", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "visibility": "public" - }, - "a82665ee-dc60-21db-a491-8fffbc623007": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "a82665ee-dc60-21db-a491-8fffbc623007", - "elementView": { - "angle": 0, - "height": 116, - "id": "a82665ee-dc60-21db-a491-8fffbc623007", - "style": "{}", - "width": 100, - "x": 744, - "y": 380, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "previousStatus", - "nameCamelCase": "previousStatus", - "namePascalCase": "PreviousStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "currentStatus", - "nameCamelCase": "currentStatus", - "namePascalCase": "CurrentStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "changeDate", - "nameCamelCase": "changeDate", - "namePascalCase": "ChangeDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "reason", - "nameCamelCase": "reason", - "namePascalCase": "Reason", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "a82665ee-dc60-21db-a491-8fffbc623007", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "BookStatusChanged", - "displayName": "도서 상태 변경됨", - "nameCamelCase": "bookStatusChanged", - "namePascalCase": "BookStatusChanged", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "visibility": "public" - }, - "fcdfa519-b23b-a129-296b-90b34d98a7db": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "BookCreated" - ], - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "controllerInfo": { - "method": "POST" - }, - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "title", - "nameCamelCase": "title", - "namePascalCase": "Title", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "isbn", - "nameCamelCase": "isbn", - "namePascalCase": "Isbn", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "author", - "nameCamelCase": "author", - "namePascalCase": "Author", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "publisher", - "nameCamelCase": "publisher", - "namePascalCase": "Publisher", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Category", - "isCopy": false, - "isKey": false, - "name": "category", - "nameCamelCase": "category", - "namePascalCase": "Category", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "description": null, - "id": "fcdfa519-b23b-a129-296b-90b34d98a7db", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 116, - "id": "fcdfa519-b23b-a129-296b-90b34d98a7db", - "style": "{}", - "width": 100, - "x": 556, - "y": 250, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "fcdfa519-b23b-a129-296b-90b34d98a7db", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "CreateBook", - "displayName": "도서 등록", - "nameCamelCase": "createBook", - "namePascalCase": "CreateBook", - "namePlural": "createBooks", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "POST" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist", - "examples": [ - { - "given": [ - { - "type": "Aggregate", - "name": "Book", - "value": { - "bookId": null, - "title": null, - "isbn": null, - "author": null, - "publisher": null, - "category": "N/A", - "status": "N/A" - } - } - ], - "when": [ - { - "type": "Command", - "name": "CreateBook", - "value": { - "title": "해리 포터", - "isbn": "1234567890123", - "author": "J.K. 롤링", - "publisher": "문학사", - "category": "NOVEL" - } - } - ], - "then": [ - { - "type": "Event", - "name": "BookCreated", - "value": { - "title": "해리 포터", - "isbn": "1234567890123", - "author": "J.K. 롤링", - "publisher": "문학사", - "category": "NOVEL", - "status": "AVAILABLE" - } - } - ] - } - ], - "visibility": "public" - }, - "ae7bd270-ac8c-7103-9866-c3e1867c019a": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "BookStatusChanged" - ], - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "controllerInfo": { - "method": "PUT", - "apiPath": "changebookstatus" - }, - "fieldDescriptors": [ - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "nameCamelCase": "status", - "namePascalCase": "Status", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "reason", - "nameCamelCase": "reason", - "namePascalCase": "Reason", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "description": null, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 116, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "style": "{}", - "width": 100, - "x": 556, - "y": 380, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "ChangeBookStatus", - "displayName": "도서 상태 변경", - "nameCamelCase": "changeBookStatus", - "namePascalCase": "ChangeBookStatus", - "namePlural": "changeBookStatuses", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "PUT" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist", - "examples": [ - { - "given": [ - { - "type": "Aggregate", - "name": "Book", - "value": { - "bookId": "BOOK-001", - "title": "해리 포터", - "isbn": "1234567890123", - "author": "J.K. 롤링", - "publisher": "문학사", - "category": "NOVEL", - "status": "AVAILABLE" - } - } - ], - "when": [ - { - "type": "Command", - "name": "ChangeBookStatus", - "value": { - "status": "BORROWED", - "reason": "사용자가 대출" - } - } - ], - "then": [ - { - "type": "Event", - "name": "BookStatusChanged", - "value": { - "previousStatus": "AVAILABLE", - "currentStatus": "BORROWED", - "changeDate": "2024-03-20T00:00:00Z", - "reason": "사용자가 대출" - } - } - ] - }, - { - "given": [ - { - "type": "Aggregate", - "name": "Book", - "value": { - "bookId": "BOOK-002", - "title": "1984", - "isbn": "9876543210123", - "author": "조지 오웰", - "publisher": "문학사", - "category": "NOVEL", - "status": "BORROWED" - } - } - ], - "when": [ - { - "type": "Command", - "name": "ChangeBookStatus", - "value": { - "status": "AVAILABLE", - "reason": "사용자가 반납" - } - } - ], - "then": [ - { - "type": "Event", - "name": "BookStatusChanged", - "value": { - "previousStatus": "BORROWED", - "currentStatus": "AVAILABLE", - "changeDate": "2024-03-21T00:00:00Z", - "reason": "사용자가 반납" - } - } - ] - }, - { - "given": [ - { - "type": "Aggregate", - "name": "Book", - "value": { - "bookId": "BOOK-003", - "title": "데미안", - "isbn": "1122334455667", - "author": "헤르만 헤세", - "publisher": "문학사", - "category": "NOVEL", - "status": "AVAILABLE" - } - } - ], - "when": [ - { - "type": "Command", - "name": "ChangeBookStatus", - "value": { - "status": "RESERVED", - "reason": "사용자가 예약" - } - } - ], - "then": [ - { - "type": "Event", - "name": "BookStatusChanged", - "value": { - "previousStatus": "AVAILABLE", - "currentStatus": "RESERVED", - "changeDate": "2024-03-22T00:00:00Z", - "reason": "사용자가 예약" - } - } - ] - }, - { - "given": [ - { - "type": "Aggregate", - "name": "Book", - "value": { - "bookId": "BOOK-004", - "title": "호밀밭의 파수꾼", - "isbn": "9988776655443", - "author": "제롬 데이비드 샐린저", - "publisher": "문학사", - "category": "NOVEL", - "status": "AVAILABLE" - } - } - ], - "when": [ - { - "type": "Command", - "name": "ChangeBookStatus", - "value": { - "status": "DISCARDED", - "reason": "오래된 도서 폐기" - } - } - ], - "then": [ - { - "type": "Event", - "name": "BookStatusChanged", - "value": { - "previousStatus": "AVAILABLE", - "currentStatus": "DISCARDED", - "changeDate": "2024-03-23T00:00:00Z", - "reason": "오래된 도서 폐기" - } - } - ] - } - ], - "visibility": "public", - "oldName": "ChangeBookStatus" - }, - "739e4179-c302-708b-a3e7-09878dca9a29": { - "_type": "org.uengine.modeling.model.View", - "id": "739e4179-c302-708b-a3e7-09878dca9a29", - "visibility": "public", - "name": "BookHistory", - "oldName": "", - "displayName": "도서 이력", - "namePascalCase": "BookHistory", - "namePlural": "bookHistories", - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "description": null, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "fieldDescriptors": [ - { - "_type": "org.uengine.model.FieldDescriptor", - "name": "id", - "className": "Long", - "nameCamelCase": "id", - "namePascalCase": "Id", - "isKey": true - } - ], - "queryParameters": [ - { - "className": "String", - "isCopy": false, - "isKey": true, - "name": "historyId", - "nameCamelCase": "historyId", - "namePascalCase": "HistoryId", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "changeDate", - "nameCamelCase": "changeDate", - "namePascalCase": "ChangeDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "nameCamelCase": "status", - "namePascalCase": "Status", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "userId", - "nameCamelCase": "userId", - "namePascalCase": "UserId", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "queryOption": { - "apiPath": "", - "useDefaultUri": true, - "multipleResult": true - }, - "controllerInfo": { - "url": "" - }, - "elementView": { - "_type": "org.uengine.modeling.model.View", - "id": "739e4179-c302-708b-a3e7-09878dca9a29", - "x": 556, - "y": 510, - "width": 100, - "height": 116, - "style": "{}", - "z-index": 999 - }, - "editingView": false, - "dataProjection": "query-for-aggregate", - "createRules": [ - { - "_type": "viewStoreRule", - "operation": "CREATE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null, - "operator": "=" - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "updateRules": [ - { - "_type": "viewStoreRule", - "operation": "UPDATE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null, - "operator": "=" - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "deleteRules": [ - { - "_type": "viewStoreRule", - "operation": "DELETE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "rotateStatus": false, - "definitionId": "" - }, - "65f57c13-6e15-18af-9892-1d47a205fba1": { - "_type": "org.uengine.modeling.model.View", - "id": "65f57c13-6e15-18af-9892-1d47a205fba1", - "visibility": "public", - "name": "BookDetails", - "oldName": "", - "displayName": "도서 상세정보", - "namePascalCase": "BookDetails", - "namePlural": "bookDetails", - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "description": null, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "fieldDescriptors": [ - { - "_type": "org.uengine.model.FieldDescriptor", - "name": "id", - "className": "Long", - "nameCamelCase": "id", - "namePascalCase": "Id", - "isKey": true - } - ], - "queryParameters": [ - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "title", - "nameCamelCase": "title", - "namePascalCase": "Title", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "isbn", - "nameCamelCase": "isbn", - "namePascalCase": "Isbn", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "author", - "nameCamelCase": "author", - "namePascalCase": "Author", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "publisher", - "nameCamelCase": "publisher", - "namePascalCase": "Publisher", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Category", - "isCopy": false, - "isKey": false, - "name": "category", - "nameCamelCase": "category", - "namePascalCase": "Category", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "nameCamelCase": "status", - "namePascalCase": "Status", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "queryOption": { - "apiPath": "", - "useDefaultUri": true, - "multipleResult": false - }, - "controllerInfo": { - "url": "" - }, - "elementView": { - "_type": "org.uengine.modeling.model.View", - "id": "65f57c13-6e15-18af-9892-1d47a205fba1", - "x": 556, - "y": 640, - "width": 100, - "height": 116, - "style": "{}", - "z-index": 999 - }, - "editingView": false, - "dataProjection": "query-for-aggregate", - "createRules": [ - { - "_type": "viewStoreRule", - "operation": "CREATE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null, - "operator": "=" - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "updateRules": [ - { - "_type": "viewStoreRule", - "operation": "UPDATE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null, - "operator": "=" - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "deleteRules": [ - { - "_type": "viewStoreRule", - "operation": "DELETE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "rotateStatus": false, - "definitionId": "" - }, - "bc3d714f-e3f8-943e-b35d-976bb0f1bd0f": { - "_type": "org.uengine.modeling.model.Actor", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "description": null, - "id": "bc3d714f-e3f8-943e-b35d-976bb0f1bd0f", - "elementView": { - "_type": "org.uengine.modeling.model.Actor", - "height": 100, - "id": "bc3d714f-e3f8-943e-b35d-976bb0f1bd0f", - "style": "{}", - "width": 100, - "x": 475, - "y": 250 - }, - "innerAggregate": { - "command": [], - "event": [], - "external": [], - "policy": [], - "view": [] - }, - "name": "Admin", - "oldName": "", - "rotateStatus": false, - "displayName": "" - }, - "1ff02715-95b2-38ce-7a08-1d9744801560": { - "_type": "org.uengine.modeling.model.Actor", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "description": null, - "id": "1ff02715-95b2-38ce-7a08-1d9744801560", - "elementView": { - "_type": "org.uengine.modeling.model.Actor", - "height": 100, - "id": "1ff02715-95b2-38ce-7a08-1d9744801560", - "style": "{}", - "width": 100, - "x": 475, - "y": 380 - }, - "innerAggregate": { - "command": [], - "event": [], - "external": [], - "policy": [], - "view": [] - }, - "name": "Admin", - "oldName": "", - "rotateStatus": false, - "displayName": "" - }, - "e724b611-05fb-9b1c-1c85-156db2a5a928": { - "_type": "org.uengine.modeling.model.Actor", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "description": null, - "id": "e724b611-05fb-9b1c-1c85-156db2a5a928", - "elementView": { - "_type": "org.uengine.modeling.model.Actor", - "height": 100, - "id": "e724b611-05fb-9b1c-1c85-156db2a5a928", - "style": "{}", - "width": 100, - "x": 475, - "y": 510 - }, - "innerAggregate": { - "command": [], - "event": [], - "external": [], - "policy": [], - "view": [] - }, - "name": "Admin", - "oldName": "", - "rotateStatus": false, - "displayName": "" - }, - "d9ef505f-9ac6-27f9-e8c4-f9b2136a20cb": { - "_type": "org.uengine.modeling.model.Actor", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "description": null, - "id": "d9ef505f-9ac6-27f9-e8c4-f9b2136a20cb", - "elementView": { - "_type": "org.uengine.modeling.model.Actor", - "height": 100, - "id": "d9ef505f-9ac6-27f9-e8c4-f9b2136a20cb", - "style": "{}", - "width": 100, - "x": 475, - "y": 640 - }, - "innerAggregate": { - "command": [], - "event": [], - "external": [], - "policy": [], - "view": [] - }, - "name": "Admin", - "oldName": "", - "rotateStatus": false, - "displayName": "" - }, - "78937fb4-354e-7c45-ea1f-a9604081b75b": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "elementView": { - "angle": 0, - "height": 116, - "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "style": "{}", - "width": 100, - "x": 1329, - "y": 250, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "memberId", - "nameCamelCase": "memberId", - "namePascalCase": "MemberId", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "loanDuration", - "nameCamelCase": "loanDuration", - "namePascalCase": "LoanDuration", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "loanDate", - "nameCamelCase": "loanDate", - "namePascalCase": "LoanDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDueDate", - "nameCamelCase": "returnDueDate", - "namePascalCase": "ReturnDueDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "loanStatus", - "nameCamelCase": "loanStatus", - "namePascalCase": "LoanStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "LoanCreated", - "displayName": "대출 생성", - "nameCamelCase": "loanCreated", - "namePascalCase": "LoanCreated", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "visibility": "public" - }, - "efa0739f-ad74-5be2-0d5f-27a167cdc711": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "efa0739f-ad74-5be2-0d5f-27a167cdc711", - "elementView": { - "angle": 0, - "height": 116, - "id": "efa0739f-ad74-5be2-0d5f-27a167cdc711", - "style": "{}", - "width": 100, - "x": 1329, - "y": 380, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "extensionDuration", - "nameCamelCase": "extensionDuration", - "namePascalCase": "ExtensionDuration", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "newReturnDueDate", - "nameCamelCase": "newReturnDueDate", - "namePascalCase": "NewReturnDueDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "efa0739f-ad74-5be2-0d5f-27a167cdc711", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "LoanExtended", - "displayName": "대출 연장됨", - "nameCamelCase": "loanExtended", - "namePascalCase": "LoanExtended", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "visibility": "public" - }, - "ac75186c-693b-322d-9554-c112044993f4": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "ac75186c-693b-322d-9554-c112044993f4", - "elementView": { - "angle": 0, - "height": 116, - "id": "ac75186c-693b-322d-9554-c112044993f4", - "style": "{}", - "width": 100, - "x": 1329, - "y": 510, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDate", - "nameCamelCase": "returnDate", - "namePascalCase": "ReturnDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "nextStatus", - "nameCamelCase": "nextStatus", - "namePascalCase": "NextStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "ac75186c-693b-322d-9554-c112044993f4", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "LoanReturned", - "displayName": "대출 반납됨", - "nameCamelCase": "loanReturned", - "namePascalCase": "LoanReturned", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "visibility": "public" - }, - "83df6bbe-e74e-3765-06a7-c79af07cb94d": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "LoanCreated" - ], - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "controllerInfo": { - "method": "POST", - "apiPath": "/createloan" - }, - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "memberId", - "nameCamelCase": "memberId", - "namePascalCase": "MemberId", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "loanDuration", - "nameCamelCase": "loanDuration", - "namePascalCase": "LoanDuration", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "loanDate", - "nameCamelCase": "loanDate", - "namePascalCase": "LoanDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDueDate", - "nameCamelCase": "returnDueDate", - "namePascalCase": "ReturnDueDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "description": null, - "id": "83df6bbe-e74e-3765-06a7-c79af07cb94d", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 116, - "id": "83df6bbe-e74e-3765-06a7-c79af07cb94d", - "style": "{}", - "width": 100, - "x": 1141, - "y": 250, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "83df6bbe-e74e-3765-06a7-c79af07cb94d", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "CreateLoan", - "displayName": "대출 신청", - "nameCamelCase": "createLoan", - "namePascalCase": "CreateLoan", - "namePlural": "createLoans", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "POST" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist", - "examples": [ - { - "given": [ - { - "type": "Aggregate", - "name": "Loan", - "value": { - "loanId": null, - "member": { - "memberId": "MEMBER-001", - "name": "홍길동" - }, - "loanPeriod": null, - "loanStatus": "N/A", - "loanDate": null, - "returnDueDate": null, - "loanDuration": "N/A", - "bookId": { - "bookId": "BOOK-001", - "isbn": "9781234567890" - } - } - } - ], - "when": [ - { - "type": "Command", - "name": "CreateLoan", - "value": { - "memberId": "MEMBER-001", - "loanDuration": "7_DAYS", - "loanDate": "2023-11-01", - "returnDueDate": "2023-11-08" - } - } - ], - "then": [ - { - "type": "Event", - "name": "LoanCreated", - "value": { - "memberId": "MEMBER-001", - "loanDuration": "7_DAYS", - "loanDate": "2023-11-01", - "returnDueDate": "2023-11-08", - "loanStatus": "BORROWED" - } - } - ] - } - ], - "visibility": "public", - "oldName": "CreateLoan" - }, - "b524c993-e776-e8fe-2fb9-4654540d48fe": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "LoanExtended" - ], - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "controllerInfo": { - "method": "PUT" - }, - "fieldDescriptors": [ - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "extensionDuration", - "nameCamelCase": "extensionDuration", - "namePascalCase": "ExtensionDuration", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "description": null, - "id": "b524c993-e776-e8fe-2fb9-4654540d48fe", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 116, - "id": "b524c993-e776-e8fe-2fb9-4654540d48fe", - "style": "{}", - "width": 100, - "x": 1141, - "y": 380, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "b524c993-e776-e8fe-2fb9-4654540d48fe", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "ExtendLoan", - "displayName": "대출 연장", - "nameCamelCase": "extendLoan", - "namePascalCase": "ExtendLoan", - "namePlural": "extendLoans", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "PUT" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist", - "examples": [ - { - "given": [ - { - "type": "Aggregate", - "name": "Loan", - "value": { - "loanId": 1001, - "member": { - "memberId": "MEMBER-001", - "name": "홍길동" - }, - "loanPeriod": 7, - "loanStatus": "BORROWED", - "loanDate": "2023-11-01", - "returnDueDate": "2023-11-08", - "loanDuration": "7_DAYS", - "bookId": { - "bookId": "BOOK-001", - "isbn": "9781234567890" - } - } - } - ], - "when": [ - { - "type": "Command", - "name": "ExtendLoan", - "value": { - "extensionDuration": "7_DAYS" - } - } - ], - "then": [ - { - "type": "Event", - "name": "LoanExtended", - "value": { - "extensionDuration": "7_DAYS", - "newReturnDueDate": "2023-11-15" - } - } - ] - } - ], - "visibility": "public" - }, - "1179f8d5-304f-fc47-74d8-4f93b8129008": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "LoanReturned" - ], - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "controllerInfo": { - "method": "PUT" - }, - "fieldDescriptors": [], - "description": null, - "id": "1179f8d5-304f-fc47-74d8-4f93b8129008", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 116, - "id": "1179f8d5-304f-fc47-74d8-4f93b8129008", - "style": "{}", - "width": 100, - "x": 1141, - "y": 510, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "1179f8d5-304f-fc47-74d8-4f93b8129008", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "ReturnLoan", - "displayName": "대출 반납", - "nameCamelCase": "returnLoan", - "namePascalCase": "ReturnLoan", - "namePlural": "returnLoans", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "PUT" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist", - "examples": [ - { - "given": [ - { - "type": "Aggregate", - "name": "Loan", - "value": { - "loanId": 1001, - "member": { - "memberId": "MEMBER-001", - "name": "홍길동" - }, - "loanPeriod": 7, - "loanStatus": "BORROWED", - "loanDate": "2023-11-01", - "returnDueDate": "2023-11-08", - "loanDuration": "7_DAYS", - "bookId": { - "bookId": "BOOK-001", - "isbn": "9781234567890" - } - } - } - ], - "when": [ - { - "type": "Command", - "name": "ReturnLoan", - "value": {} - } - ], - "then": [ - { - "type": "Event", - "name": "LoanReturned", - "value": { - "returnDate": "2023-11-07", - "nextStatus": "AVAILABLE" - } - } - ] - } - ], - "visibility": "public" - }, - "ba4cf08a-138b-f78c-6beb-137aa4ce6c53": { - "_type": "org.uengine.modeling.model.View", - "id": "ba4cf08a-138b-f78c-6beb-137aa4ce6c53", - "visibility": "public", - "name": "LoanStatus", - "oldName": "", - "displayName": "대출 상태", - "namePascalCase": "LoanStatus", - "namePlural": "loanStatuses", - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "description": null, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "fieldDescriptors": [ - { - "_type": "org.uengine.model.FieldDescriptor", - "name": "id", - "className": "Long", - "nameCamelCase": "id", - "namePascalCase": "Id", - "isKey": true - } - ], - "queryParameters": [ - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "loanDate", - "nameCamelCase": "loanDate", - "namePascalCase": "LoanDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDueDate", - "nameCamelCase": "returnDueDate", - "namePascalCase": "ReturnDueDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "loanStatus", - "nameCamelCase": "loanStatus", - "namePascalCase": "LoanStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "queryOption": { - "apiPath": "", - "useDefaultUri": true, - "multipleResult": true - }, - "controllerInfo": { - "url": "" - }, - "elementView": { - "_type": "org.uengine.modeling.model.View", - "id": "ba4cf08a-138b-f78c-6beb-137aa4ce6c53", - "x": 1141, - "y": 640, - "width": 100, - "height": 116, - "style": "{}", - "z-index": 999 - }, - "editingView": false, - "dataProjection": "query-for-aggregate", - "createRules": [ - { - "_type": "viewStoreRule", - "operation": "CREATE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null, - "operator": "=" - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "updateRules": [ - { - "_type": "viewStoreRule", - "operation": "UPDATE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null, - "operator": "=" - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "deleteRules": [ - { - "_type": "viewStoreRule", - "operation": "DELETE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "rotateStatus": false, - "definitionId": "" - }, - "c0299480-37ae-dc00-eafe-8b423d09e34a": { - "_type": "org.uengine.modeling.model.View", - "id": "c0299480-37ae-dc00-eafe-8b423d09e34a", - "visibility": "public", - "name": "LoanDetails", - "oldName": "", - "displayName": "대출 세부 정보", - "namePascalCase": "LoanDetails", - "namePlural": "loanDetails", - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "description": null, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "fieldDescriptors": [ - { - "_type": "org.uengine.model.FieldDescriptor", - "name": "id", - "className": "Long", - "nameCamelCase": "id", - "namePascalCase": "Id", - "isKey": true - } - ], - "queryParameters": [ - { - "className": "Member", - "isCopy": false, - "isKey": false, - "name": "memberDetails", - "nameCamelCase": "memberDetails", - "namePascalCase": "MemberDetails", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "loanDate", - "nameCamelCase": "loanDate", - "namePascalCase": "LoanDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDueDate", - "nameCamelCase": "returnDueDate", - "namePascalCase": "ReturnDueDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "loanStatus", - "nameCamelCase": "loanStatus", - "namePascalCase": "LoanStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Integer", - "isCopy": false, - "isKey": false, - "name": "extensions", - "nameCamelCase": "extensions", - "namePascalCase": "Extensions", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "createdAt", - "nameCamelCase": "createdAt", - "namePascalCase": "CreatedAt", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "lastModifiedAt", - "nameCamelCase": "lastModifiedAt", - "namePascalCase": "LastModifiedAt", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "queryOption": { - "apiPath": "", - "useDefaultUri": true, - "multipleResult": false - }, - "controllerInfo": { - "url": "" - }, - "elementView": { - "_type": "org.uengine.modeling.model.View", - "id": "c0299480-37ae-dc00-eafe-8b423d09e34a", - "x": 1141, - "y": 770, - "width": 100, - "height": 116, - "style": "{}", - "z-index": 999 - }, - "editingView": false, - "dataProjection": "query-for-aggregate", - "createRules": [ - { - "_type": "viewStoreRule", - "operation": "CREATE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null, - "operator": "=" - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "updateRules": [ - { - "_type": "viewStoreRule", - "operation": "UPDATE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null, - "operator": "=" - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "deleteRules": [ - { - "_type": "viewStoreRule", - "operation": "DELETE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "rotateStatus": false, - "definitionId": "" - }, - "c057a98f-46c0-406f-e1ef-9038a557fd9a": { - "_type": "org.uengine.modeling.model.Actor", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "description": null, - "id": "c057a98f-46c0-406f-e1ef-9038a557fd9a", - "elementView": { - "_type": "org.uengine.modeling.model.Actor", - "height": 100, - "id": "c057a98f-46c0-406f-e1ef-9038a557fd9a", - "style": "{}", - "width": 100, - "x": 1060, - "y": 250 - }, - "innerAggregate": { - "command": [], - "event": [], - "external": [], - "policy": [], - "view": [] - }, - "name": "회원", - "oldName": "", - "rotateStatus": false, - "displayName": "" - }, - "d0141724-e51b-ddf3-3c84-c245b9846a65": { - "_type": "org.uengine.modeling.model.Actor", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "description": null, - "id": "d0141724-e51b-ddf3-3c84-c245b9846a65", - "elementView": { - "_type": "org.uengine.modeling.model.Actor", - "height": 100, - "id": "d0141724-e51b-ddf3-3c84-c245b9846a65", - "style": "{}", - "width": 100, - "x": 1060, - "y": 380 - }, - "innerAggregate": { - "command": [], - "event": [], - "external": [], - "policy": [], - "view": [] - }, - "name": "회원", - "oldName": "", - "rotateStatus": false, - "displayName": "" - }, - "354b804b-3689-6240-d6ae-c78607e2bb89": { - "_type": "org.uengine.modeling.model.Actor", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "description": null, - "id": "354b804b-3689-6240-d6ae-c78607e2bb89", - "elementView": { - "_type": "org.uengine.modeling.model.Actor", - "height": 100, - "id": "354b804b-3689-6240-d6ae-c78607e2bb89", - "style": "{}", - "width": 100, - "x": 1060, - "y": 510 - }, - "innerAggregate": { - "command": [], - "event": [], - "external": [], - "policy": [], - "view": [] - }, - "name": "회원", - "oldName": "", - "rotateStatus": false, - "displayName": "" - }, - "67f61a87-74f8-a9ea-6a9e-5a605e1a25d4": { - "_type": "org.uengine.modeling.model.Actor", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "description": null, - "id": "67f61a87-74f8-a9ea-6a9e-5a605e1a25d4", - "elementView": { - "_type": "org.uengine.modeling.model.Actor", - "height": 100, - "id": "67f61a87-74f8-a9ea-6a9e-5a605e1a25d4", - "style": "{}", - "width": 100, - "x": 1060, - "y": 640 - }, - "innerAggregate": { - "command": [], - "event": [], - "external": [], - "policy": [], - "view": [] - }, - "name": "회원", - "oldName": "", - "rotateStatus": false, - "displayName": "" - }, - "e17a9268-9129-caea-2c8f-2849d2c9e063": { - "_type": "org.uengine.modeling.model.Actor", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "description": null, - "id": "e17a9268-9129-caea-2c8f-2849d2c9e063", - "elementView": { - "_type": "org.uengine.modeling.model.Actor", - "height": 100, - "id": "e17a9268-9129-caea-2c8f-2849d2c9e063", - "style": "{}", - "width": 100, - "x": 1060, - "y": 770 - }, - "innerAggregate": { - "command": [], - "event": [], - "external": [], - "policy": [], - "view": [] - }, - "name": "회원", - "oldName": "", - "rotateStatus": false, - "displayName": "" - }, - "dcfad35d-4305-25a5-993d-9426931c4ee6": { - "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "description": "도서 대출 후 상태를 '대출중'으로 변경", - "elementView": { - "height": 116, - "width": 100, - "x": 425, - "y": 240, - "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "style": "{}", - "_type": "org.uengine.modeling.model.Policy" - }, - "fieldDescriptors": [], - "hexagonalView": { - "height": 20, - "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "style": "{}", - "subWidth": 100, - "width": 20, - "_type": "org.uengine.modeling.model.PolicyHexagonal" - }, - "isSaga": false, - "name": "UpdateLoanBookStatusPolicy", - "displayName": "대출 도서 상태 변경", - "nameCamelCase": "updateLoanBookStatusPolicy", - "namePascalCase": "UpdateLoanBookStatusPolicy", - "namePlural": "updateLoanBookStatusPolicies", - "oldName": "", - "rotateStatus": false, - "_type": "org.uengine.modeling.model.Policy" - }, - "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0": { - "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "description": "도서 반납 후 상태를 '대출가능'으로 변경", - "elementView": { - "height": 116, - "width": 100, - "x": 425, - "y": 472, - "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "style": "{}", - "_type": "org.uengine.modeling.model.Policy" - }, - "fieldDescriptors": [], - "hexagonalView": { - "height": 20, - "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "style": "{}", - "subWidth": 100, - "width": 20, - "_type": "org.uengine.modeling.model.PolicyHexagonal" - }, - "isSaga": false, - "name": "ReturnBookStatusPolicy", - "displayName": "반납 도서 상태 변경", - "nameCamelCase": "returnBookStatusPolicy", - "namePascalCase": "ReturnBookStatusPolicy", - "namePlural": "returnBookStatusPolicies", - "oldName": "", - "rotateStatus": false, - "_type": "org.uengine.modeling.model.Policy" - } - }, - "relations": { - "8e86c434-1dae-0ebd-04ae-b81e3646d927": { - "_type": "org.uengine.modeling.model.Relation", - "name": "", - "id": "8e86c434-1dae-0ebd-04ae-b81e3646d927", - "sourceElement": { - "aggregateRoot": { - "_type": "org.uengine.modeling.model.AggregateRoot", - "fieldDescriptors": [ - { - "className": "Long", - "isCopy": false, - "isKey": true, - "name": "loanId", - "nameCamelCase": "loanId", - "namePascalCase": "LoanId", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Member", - "isCopy": false, - "isKey": false, - "name": "member", - "nameCamelCase": "member", - "namePascalCase": "Member", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Integer", - "isCopy": false, - "isKey": false, - "name": "loanPeriod", - "nameCamelCase": "loanPeriod", - "namePascalCase": "LoanPeriod", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "loanStatus", - "nameCamelCase": "loanStatus", - "namePascalCase": "LoanStatus", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "loanDate", - "nameCamelCase": "loanDate", - "namePascalCase": "LoanDate", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDueDate", - "nameCamelCase": "returnDueDate", - "namePascalCase": "ReturnDueDate", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "loanDuration", - "nameCamelCase": "loanDuration", - "namePascalCase": "LoanDuration", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "entities": { - "elements": { - "30397330-2606-86f2-57f4-bf677bae16dc": { - "_type": "org.uengine.uml.model.Class", - "id": "30397330-2606-86f2-57f4-bf677bae16dc", - "name": "Loan", - "namePascalCase": "Loan", - "nameCamelCase": "loan", - "namePlural": "Loans", - "fieldDescriptors": [ - { - "className": "Long", - "isCopy": false, - "isKey": true, - "name": "loanId", - "displayName": "", - "nameCamelCase": "loanId", - "namePascalCase": "LoanId", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Member", - "isCopy": false, - "isKey": false, - "name": "member", - "displayName": "", - "nameCamelCase": "member", - "namePascalCase": "Member", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Integer", - "isCopy": false, - "isKey": false, - "name": "loanPeriod", - "displayName": "", - "nameCamelCase": "loanPeriod", - "namePascalCase": "LoanPeriod", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "loanStatus", - "displayName": "", - "nameCamelCase": "loanStatus", - "namePascalCase": "LoanStatus", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "loanDate", - "displayName": "", - "nameCamelCase": "loanDate", - "namePascalCase": "LoanDate", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDueDate", - "displayName": "", - "nameCamelCase": "returnDueDate", - "namePascalCase": "ReturnDueDate", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "loanDuration", - "displayName": "", - "nameCamelCase": "loanDuration", - "namePascalCase": "LoanDuration", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - } - ], - "operations": [], - "elementView": { - "_type": "org.uengine.uml.model.Class", - "id": "30397330-2606-86f2-57f4-bf677bae16dc", - "x": 200, - "y": 200, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 120, - "fieldH": 90, - "methodH": 30 - }, - "selected": false, - "relations": [], - "parentOperations": [], - "relationType": null, - "isVO": false, - "isAbstract": false, - "isInterface": false, - "isAggregateRoot": true, - "parentId": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "09ee5a03-4449-1bde-3705-35c2ca198880": { - "_type": "org.uengine.uml.model.vo.Class", - "id": "09ee5a03-4449-1bde-3705-35c2ca198880", - "name": "Member", - "displayName": "회원", - "namePascalCase": "Member", - "nameCamelCase": "member", - "fieldDescriptors": [ - { - "className": "String", - "isKey": false, - "label": "- memberId: String", - "name": "memberId", - "nameCamelCase": "memberId", - "namePascalCase": "MemberId", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isKey": false, - "label": "- name: String", - "name": "name", - "nameCamelCase": "name", - "namePascalCase": "Name", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "operations": [], - "elementView": { - "_type": "org.uengine.uml.model.vo.address.Class", - "id": "09ee5a03-4449-1bde-3705-35c2ca198880", - "x": 700, - "y": 152, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 170, - "fieldH": 150, - "methodH": 30 - }, - "selected": false, - "parentOperations": [], - "relationType": null, - "isVO": true, - "relations": [], - "groupElement": null, - "isAggregateRoot": false, - "namePlural": "Members", - "isAbstract": false, - "isInterface": false - }, - "bfdf118a-ad46-c0e3-2ae4-d0372b9d8361": { - "_type": "org.uengine.uml.model.enum", - "id": "bfdf118a-ad46-c0e3-2ae4-d0372b9d8361", - "name": "LoanStatus", - "displayName": "대출 상태", - "nameCamelCase": "loanStatus", - "namePascalCase": "LoanStatus", - "namePlural": "loanStatuses", - "elementView": { - "_type": "org.uengine.uml.model.enum", - "id": "bfdf118a-ad46-c0e3-2ae4-d0372b9d8361", - "x": 700, - "y": 456, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 50 - }, - "selected": false, - "items": [ - { - "value": "BORROWED" - }, - { - "value": "OVERDUE" - }, - { - "value": "RETURNED" - } - ], - "useKeyValue": false, - "relations": [] - }, - "8c1b2fee-54a7-b460-486a-1453593fac3f": { - "_type": "org.uengine.uml.model.enum", - "id": "8c1b2fee-54a7-b460-486a-1453593fac3f", - "name": "LoanDuration", - "displayName": "대출 기간 옵션", - "nameCamelCase": "loanDuration", - "namePascalCase": "LoanDuration", - "namePlural": "loanDurations", - "elementView": { - "_type": "org.uengine.uml.model.enum", - "id": "8c1b2fee-54a7-b460-486a-1453593fac3f", - "x": 950, - "y": 456, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 50 - }, - "selected": false, - "items": [ - { - "value": "7_DAYS" - }, - { - "value": "14_DAYS" - }, - { - "value": "30_DAYS" - } - ], - "useKeyValue": false, - "relations": [] - } - }, - "relations": {} - }, - "operations": [] - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "name": "85c498d4-39ed-5546-59b8-8eaaf33cffc8", - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "commands": [], - "description": null, - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2", - "elementView": { - "_type": "org.uengine.modeling.model.Aggregate", - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2", - "x": 1235, - "y": 450, - "width": 130, - "height": 400 - }, - "events": [], - "hexagonalView": { - "_type": "org.uengine.modeling.model.AggregateHexagonal", - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2", - "x": 0, - "y": 0, - "subWidth": 0, - "width": 0 - }, - "name": "Loan", - "displayName": "대출", - "nameCamelCase": "loan", - "namePascalCase": "Loan", - "namePlural": "loans", - "rotateStatus": false, - "selected": false, - "_type": "org.uengine.modeling.model.Aggregate" - }, - "targetElement": { - "aggregateRoot": { - "_type": "org.uengine.modeling.model.AggregateRoot", - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": true, - "name": "bookId", - "nameCamelCase": "bookId", - "namePascalCase": "BookId", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "title", - "nameCamelCase": "title", - "namePascalCase": "Title", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "isbn", - "nameCamelCase": "isbn", - "namePascalCase": "Isbn", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "author", - "nameCamelCase": "author", - "namePascalCase": "Author", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "publisher", - "nameCamelCase": "publisher", - "namePascalCase": "Publisher", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Category", - "isCopy": false, - "isKey": false, - "name": "category", - "nameCamelCase": "category", - "namePascalCase": "Category", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "nameCamelCase": "status", - "namePascalCase": "Status", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "entities": { - "elements": { - "0a22d0ce-0f1d-80fa-42b3-19647aa41149": { - "_type": "org.uengine.uml.model.Class", - "id": "0a22d0ce-0f1d-80fa-42b3-19647aa41149", - "name": "Book", - "namePascalCase": "Book", - "nameCamelCase": "book", - "namePlural": "Books", - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": true, - "name": "bookId", - "displayName": "", - "nameCamelCase": "bookId", - "namePascalCase": "BookId", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "title", - "displayName": "", - "nameCamelCase": "title", - "namePascalCase": "Title", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "isbn", - "displayName": "", - "nameCamelCase": "isbn", - "namePascalCase": "Isbn", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "author", - "displayName": "", - "nameCamelCase": "author", - "namePascalCase": "Author", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "publisher", - "displayName": "", - "nameCamelCase": "publisher", - "namePascalCase": "Publisher", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Category", - "isCopy": false, - "isKey": false, - "name": "category", - "displayName": "", - "nameCamelCase": "category", - "namePascalCase": "Category", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "displayName": "", - "nameCamelCase": "status", - "namePascalCase": "Status", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - } - ], - "operations": [], - "elementView": { - "_type": "org.uengine.uml.model.Class", - "id": "0a22d0ce-0f1d-80fa-42b3-19647aa41149", - "x": 200, - "y": 200, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 120, - "fieldH": 90, - "methodH": 30 - }, - "selected": false, - "relations": [], - "parentOperations": [], - "relationType": null, - "isVO": false, - "isAbstract": false, - "isInterface": false, - "isAggregateRoot": true, - "parentId": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "e029780c-da79-3641-c1f3-8e45ebd5bfb7": { - "_type": "org.uengine.uml.model.enum", - "id": "e029780c-da79-3641-c1f3-8e45ebd5bfb7", - "name": "Category", - "displayName": "도서 카테고리", - "nameCamelCase": "category", - "namePascalCase": "Category", - "namePlural": "categories", - "elementView": { - "_type": "org.uengine.uml.model.enum", - "id": "e029780c-da79-3641-c1f3-8e45ebd5bfb7", - "x": 700, - "y": 456, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 50 - }, - "selected": false, - "items": [ - { - "value": "NOVEL" - }, - { - "value": "NONFICTION" - }, - { - "value": "ACADEMIC" - }, - { - "value": "MAGAZINE" - } - ], - "useKeyValue": false, - "relations": [] - }, - "3abb79e5-1456-e11b-560b-1483b5807a68": { - "_type": "org.uengine.uml.model.enum", - "id": "3abb79e5-1456-e11b-560b-1483b5807a68", - "name": "Status", - "displayName": "도서 상태", - "nameCamelCase": "status", - "namePascalCase": "Status", - "namePlural": "statuses", - "elementView": { - "_type": "org.uengine.uml.model.enum", - "id": "3abb79e5-1456-e11b-560b-1483b5807a68", - "x": 950, - "y": 456, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 50 - }, - "selected": false, - "items": [ - { - "value": "AVAILABLE" - }, - { - "value": "BORROWED" - }, - { - "value": "RESERVED" - }, - { - "value": "DISCARDED" - } - ], - "useKeyValue": false, - "relations": [] - } - }, - "relations": {} - }, - "operations": [] - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "name": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741", - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "commands": [], - "description": null, - "id": "554241df-8091-4819-87d3-8fa38d18deaa", - "elementView": { - "_type": "org.uengine.modeling.model.Aggregate", - "id": "554241df-8091-4819-87d3-8fa38d18deaa", - "x": 650, - "y": 450, - "width": 130, - "height": 400 - }, - "events": [], - "hexagonalView": { - "_type": "org.uengine.modeling.model.AggregateHexagonal", - "id": "554241df-8091-4819-87d3-8fa38d18deaa", - "x": 0, - "y": 0, - "subWidth": 0, - "width": 0 - }, - "name": "Book", - "displayName": "도서", - "nameCamelCase": "book", - "namePascalCase": "Book", - "namePlural": "books", - "rotateStatus": false, - "selected": false, - "_type": "org.uengine.modeling.model.Aggregate" - }, - "from": "f8dc3056-6183-539a-7f20-68681ddcc8a2", - "to": "554241df-8091-4819-87d3-8fa38d18deaa", - "relationView": { - "id": "8e86c434-1dae-0ebd-04ae-b81e3646d927", - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "from": "f8dc3056-6183-539a-7f20-68681ddcc8a2", - "to": "554241df-8091-4819-87d3-8fa38d18deaa", - "needReconnect": true, - "value": "[[1170,524],[944,524],[944,456],[715,456]]" - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.RelationHexagonal", - "from": "f8dc3056-6183-539a-7f20-68681ddcc8a2", - "id": "8e86c434-1dae-0ebd-04ae-b81e3646d927", - "needReconnect": true, - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "to": "554241df-8091-4819-87d3-8fa38d18deaa", - "value": null - }, - "sourceMultiplicity": "1", - "targetMultiplicity": "1", - "displayName": "" - }, - "abdff6e1-deb4-4dea-426c-3c0b32661397": { - "_type": "org.uengine.modeling.model.Relation", - "name": "", - "id": "abdff6e1-deb4-4dea-426c-3c0b32661397", - "sourceElement": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "BookCreated" - ], - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "controllerInfo": { - "method": "POST" - }, - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "title", - "nameCamelCase": "title", - "namePascalCase": "Title", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "isbn", - "nameCamelCase": "isbn", - "namePascalCase": "Isbn", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "author", - "nameCamelCase": "author", - "namePascalCase": "Author", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "publisher", - "nameCamelCase": "publisher", - "namePascalCase": "Publisher", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Category", - "isCopy": false, - "isKey": false, - "name": "category", - "nameCamelCase": "category", - "namePascalCase": "Category", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "description": null, - "id": "fcdfa519-b23b-a129-296b-90b34d98a7db", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 115, - "id": "fcdfa519-b23b-a129-296b-90b34d98a7db", - "style": "{}", - "width": 100, - "x": 556, - "y": 250, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "fcdfa519-b23b-a129-296b-90b34d98a7db", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "CreateBook", - "displayName": "도서 등록", - "nameCamelCase": "createBook", - "namePascalCase": "CreateBook", - "namePlural": "createBooks", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "POST" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist" - }, - "targetElement": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "5afcf0dc-5c3b-f67a-d273-fab421febc20", - "elementView": { - "angle": 0, - "height": 115, - "id": "5afcf0dc-5c3b-f67a-d273-fab421febc20", - "style": "{}", - "width": 100, - "x": 744, - "y": 250, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "title", - "nameCamelCase": "title", - "namePascalCase": "Title", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "isbn", - "nameCamelCase": "isbn", - "namePascalCase": "Isbn", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "author", - "nameCamelCase": "author", - "namePascalCase": "Author", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "publisher", - "nameCamelCase": "publisher", - "namePascalCase": "Publisher", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Category", - "isCopy": false, - "isKey": false, - "name": "category", - "nameCamelCase": "category", - "namePascalCase": "Category", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "nameCamelCase": "status", - "namePascalCase": "Status", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "5afcf0dc-5c3b-f67a-d273-fab421febc20", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "BookCreated", - "displayName": "도서 등록됨", - "nameCamelCase": "bookCreated", - "namePascalCase": "BookCreated", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - } - }, - "from": "fcdfa519-b23b-a129-296b-90b34d98a7db", - "to": "5afcf0dc-5c3b-f67a-d273-fab421febc20", - "relationView": { - "id": "abdff6e1-deb4-4dea-426c-3c0b32661397", - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "from": "fcdfa519-b23b-a129-296b-90b34d98a7db", - "to": "5afcf0dc-5c3b-f67a-d273-fab421febc20", - "needReconnect": true, - "value": "[[606,252],[694,252]]" - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.RelationHexagonal", - "from": "fcdfa519-b23b-a129-296b-90b34d98a7db", - "id": "abdff6e1-deb4-4dea-426c-3c0b32661397", - "needReconnect": true, - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "to": "5afcf0dc-5c3b-f67a-d273-fab421febc20", - "value": null - }, - "sourceMultiplicity": "1", - "targetMultiplicity": "1", - "displayName": "" - }, - "347c91c4-3478-cef4-4493-208a8a50dafb": { - "_type": "org.uengine.modeling.model.Relation", - "name": "", - "id": "347c91c4-3478-cef4-4493-208a8a50dafb", - "sourceElement": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "BookStatusChanged" - ], - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "controllerInfo": { - "method": "PUT" - }, - "fieldDescriptors": [ - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "nameCamelCase": "status", - "namePascalCase": "Status", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "reason", - "nameCamelCase": "reason", - "namePascalCase": "Reason", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "description": null, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 115, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "style": "{}", - "width": 100, - "x": 556, - "y": 380, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "ChangeBookStatus", - "displayName": "도서 상태 변경", - "nameCamelCase": "changeBookStatus", - "namePascalCase": "ChangeBookStatus", - "namePlural": "changeBookStatuses", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "PUT" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist" - }, - "targetElement": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "a82665ee-dc60-21db-a491-8fffbc623007", - "elementView": { - "angle": 0, - "height": 115, - "id": "a82665ee-dc60-21db-a491-8fffbc623007", - "style": "{}", - "width": 100, - "x": 744, - "y": 380, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "previousStatus", - "nameCamelCase": "previousStatus", - "namePascalCase": "PreviousStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "currentStatus", - "nameCamelCase": "currentStatus", - "namePascalCase": "CurrentStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "changeDate", - "nameCamelCase": "changeDate", - "namePascalCase": "ChangeDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "reason", - "nameCamelCase": "reason", - "namePascalCase": "Reason", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "a82665ee-dc60-21db-a491-8fffbc623007", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "BookStatusChanged", - "displayName": "도서 상태 변경됨", - "nameCamelCase": "bookStatusChanged", - "namePascalCase": "BookStatusChanged", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - } - }, - "from": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "to": "a82665ee-dc60-21db-a491-8fffbc623007", - "relationView": { - "id": "347c91c4-3478-cef4-4493-208a8a50dafb", - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "from": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "to": "a82665ee-dc60-21db-a491-8fffbc623007", - "needReconnect": true, - "value": "[[606,380],[694,380]]" - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.RelationHexagonal", - "from": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "id": "347c91c4-3478-cef4-4493-208a8a50dafb", - "needReconnect": true, - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "to": "a82665ee-dc60-21db-a491-8fffbc623007", - "value": null - }, - "sourceMultiplicity": "1", - "targetMultiplicity": "1", - "displayName": "" - }, - "295dd65b-874b-00ae-910f-8eba75db08f1": { - "_type": "org.uengine.modeling.model.Relation", - "name": "", - "id": "295dd65b-874b-00ae-910f-8eba75db08f1", - "sourceElement": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "LoanCreated" - ], - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "controllerInfo": { - "method": "POST" - }, - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "memberId", - "nameCamelCase": "memberId", - "namePascalCase": "MemberId", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "loanDuration", - "nameCamelCase": "loanDuration", - "namePascalCase": "LoanDuration", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "loanDate", - "nameCamelCase": "loanDate", - "namePascalCase": "LoanDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDueDate", - "nameCamelCase": "returnDueDate", - "namePascalCase": "ReturnDueDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "description": null, - "id": "83df6bbe-e74e-3765-06a7-c79af07cb94d", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 115, - "id": "83df6bbe-e74e-3765-06a7-c79af07cb94d", - "style": "{}", - "width": 100, - "x": 1141, - "y": 250, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "83df6bbe-e74e-3765-06a7-c79af07cb94d", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "CreateLoan", - "displayName": "대출 신청", - "nameCamelCase": "createLoan", - "namePascalCase": "CreateLoan", - "namePlural": "createLoans", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "POST" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist" - }, - "targetElement": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "elementView": { - "angle": 0, - "height": 115, - "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "style": "{}", - "width": 100, - "x": 1329, - "y": 250, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "memberId", - "nameCamelCase": "memberId", - "namePascalCase": "MemberId", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "loanDuration", - "nameCamelCase": "loanDuration", - "namePascalCase": "LoanDuration", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "loanDate", - "nameCamelCase": "loanDate", - "namePascalCase": "LoanDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDueDate", - "nameCamelCase": "returnDueDate", - "namePascalCase": "ReturnDueDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "loanStatus", - "nameCamelCase": "loanStatus", - "namePascalCase": "LoanStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "LoanCreated", - "displayName": "대출 생성", - "nameCamelCase": "loanCreated", - "namePascalCase": "LoanCreated", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - } - }, - "from": "83df6bbe-e74e-3765-06a7-c79af07cb94d", - "to": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "relationView": { - "id": "295dd65b-874b-00ae-910f-8eba75db08f1", - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "from": "83df6bbe-e74e-3765-06a7-c79af07cb94d", - "to": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "needReconnect": true, - "value": "[[1191,252],[1279,252]]" - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.RelationHexagonal", - "from": "83df6bbe-e74e-3765-06a7-c79af07cb94d", - "id": "295dd65b-874b-00ae-910f-8eba75db08f1", - "needReconnect": true, - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "to": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "value": null - }, - "sourceMultiplicity": "1", - "targetMultiplicity": "1", - "displayName": "" - }, - "2f10ed41-ab75-4f4d-68ab-526c59d76ee2": { - "_type": "org.uengine.modeling.model.Relation", - "name": "", - "id": "2f10ed41-ab75-4f4d-68ab-526c59d76ee2", - "sourceElement": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "LoanExtended" - ], - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "controllerInfo": { - "method": "PUT" - }, - "fieldDescriptors": [ - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "extensionDuration", - "nameCamelCase": "extensionDuration", - "namePascalCase": "ExtensionDuration", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "description": null, - "id": "b524c993-e776-e8fe-2fb9-4654540d48fe", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 115, - "id": "b524c993-e776-e8fe-2fb9-4654540d48fe", - "style": "{}", - "width": 100, - "x": 1141, - "y": 380, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "b524c993-e776-e8fe-2fb9-4654540d48fe", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "ExtendLoan", - "displayName": "대출 연장", - "nameCamelCase": "extendLoan", - "namePascalCase": "ExtendLoan", - "namePlural": "extendLoans", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "PUT" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist" - }, - "targetElement": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "efa0739f-ad74-5be2-0d5f-27a167cdc711", - "elementView": { - "angle": 0, - "height": 115, - "id": "efa0739f-ad74-5be2-0d5f-27a167cdc711", - "style": "{}", - "width": 100, - "x": 1329, - "y": 380, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "extensionDuration", - "nameCamelCase": "extensionDuration", - "namePascalCase": "ExtensionDuration", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "newReturnDueDate", - "nameCamelCase": "newReturnDueDate", - "namePascalCase": "NewReturnDueDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "efa0739f-ad74-5be2-0d5f-27a167cdc711", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "LoanExtended", - "displayName": "대출 연장됨", - "nameCamelCase": "loanExtended", - "namePascalCase": "LoanExtended", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - } - }, - "from": "b524c993-e776-e8fe-2fb9-4654540d48fe", - "to": "efa0739f-ad74-5be2-0d5f-27a167cdc711", - "relationView": { - "id": "2f10ed41-ab75-4f4d-68ab-526c59d76ee2", - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "from": "b524c993-e776-e8fe-2fb9-4654540d48fe", - "to": "efa0739f-ad74-5be2-0d5f-27a167cdc711", - "needReconnect": true, - "value": "[[1191,380],[1279,380]]" - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.RelationHexagonal", - "from": "b524c993-e776-e8fe-2fb9-4654540d48fe", - "id": "2f10ed41-ab75-4f4d-68ab-526c59d76ee2", - "needReconnect": true, - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "to": "efa0739f-ad74-5be2-0d5f-27a167cdc711", - "value": null - }, - "sourceMultiplicity": "1", - "targetMultiplicity": "1", - "displayName": "" - }, - "20476c5e-0541-5f9d-d188-02fce5fe93cd": { - "_type": "org.uengine.modeling.model.Relation", - "name": "", - "id": "20476c5e-0541-5f9d-d188-02fce5fe93cd", - "sourceElement": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "LoanReturned" - ], - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "controllerInfo": { - "method": "PUT" - }, - "fieldDescriptors": [], - "description": null, - "id": "1179f8d5-304f-fc47-74d8-4f93b8129008", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 115, - "id": "1179f8d5-304f-fc47-74d8-4f93b8129008", - "style": "{}", - "width": 100, - "x": 1141, - "y": 510, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "1179f8d5-304f-fc47-74d8-4f93b8129008", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "ReturnLoan", - "displayName": "대출 반납", - "nameCamelCase": "returnLoan", - "namePascalCase": "ReturnLoan", - "namePlural": "returnLoans", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "PUT" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist" - }, - "targetElement": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "ac75186c-693b-322d-9554-c112044993f4", - "elementView": { - "angle": 0, - "height": 115, - "id": "ac75186c-693b-322d-9554-c112044993f4", - "style": "{}", - "width": 100, - "x": 1329, - "y": 510, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDate", - "nameCamelCase": "returnDate", - "namePascalCase": "ReturnDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "nextStatus", - "nameCamelCase": "nextStatus", - "namePascalCase": "NextStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "ac75186c-693b-322d-9554-c112044993f4", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "LoanReturned", - "displayName": "대출 반납됨", - "nameCamelCase": "loanReturned", - "namePascalCase": "LoanReturned", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - } - }, - "from": "1179f8d5-304f-fc47-74d8-4f93b8129008", - "to": "ac75186c-693b-322d-9554-c112044993f4", - "relationView": { - "id": "20476c5e-0541-5f9d-d188-02fce5fe93cd", - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "from": "1179f8d5-304f-fc47-74d8-4f93b8129008", - "to": "ac75186c-693b-322d-9554-c112044993f4", - "needReconnect": true, - "value": "[[1191,512],[1279,512]]" - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.RelationHexagonal", - "from": "1179f8d5-304f-fc47-74d8-4f93b8129008", - "id": "20476c5e-0541-5f9d-d188-02fce5fe93cd", - "needReconnect": true, - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "to": "ac75186c-693b-322d-9554-c112044993f4", - "value": null - }, - "sourceMultiplicity": "1", - "targetMultiplicity": "1", - "displayName": "" - }, - "e20354ba-41ff-5f16-f2e2-40459087191e": { - "_type": "org.uengine.modeling.model.Relation", - "name": "", - "id": "e20354ba-41ff-5f16-f2e2-40459087191e", - "sourceElement": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "elementView": { - "angle": 0, - "height": 115, - "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "style": "{}", - "width": 100, - "x": 1329, - "y": 250, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "memberId", - "nameCamelCase": "memberId", - "namePascalCase": "MemberId", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "loanDuration", - "nameCamelCase": "loanDuration", - "namePascalCase": "LoanDuration", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "loanDate", - "nameCamelCase": "loanDate", - "namePascalCase": "LoanDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDueDate", - "nameCamelCase": "returnDueDate", - "namePascalCase": "ReturnDueDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "loanStatus", - "nameCamelCase": "loanStatus", - "namePascalCase": "LoanStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "LoanCreated", - "displayName": "대출 생성", - "nameCamelCase": "loanCreated", - "namePascalCase": "LoanCreated", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - } - }, - "targetElement": { - "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "description": "도서 대출 후 상태를 '대출중'으로 변경", - "elementView": { - "height": 115, - "width": 100, - "x": 437, - "y": 380, - "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "style": "{}", - "_type": "org.uengine.modeling.model.Policy" - }, - "fieldDescriptors": [], - "hexagonalView": { - "height": 20, - "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "style": "{}", - "subWidth": 100, - "width": 20, - "_type": "org.uengine.modeling.model.PolicyHexagonal" - }, - "isSaga": false, - "name": "UpdateLoanBookStatusPolicy", - "displayName": "대출 도서 상태 변경", - "nameCamelCase": "updateLoanBookStatusPolicy", - "namePascalCase": "UpdateLoanBookStatusPolicy", - "namePlural": "updateLoanBookStatusPolicies", - "oldName": "", - "rotateStatus": false, - "_type": "org.uengine.modeling.model.Policy" - }, - "from": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "to": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "relationView": { - "id": "e20354ba-41ff-5f16-f2e2-40459087191e", - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "from": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "to": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "needReconnect": true, - "value": "[[1328,192],[1328,136],[424,136],[424,182]]" - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.RelationHexagonal", - "from": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "id": "e20354ba-41ff-5f16-f2e2-40459087191e", - "needReconnect": true, - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "to": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "value": null - }, - "sourceMultiplicity": "1", - "targetMultiplicity": "1", - "displayName": "" - }, - "78a22ec0-5533-0df2-f8be-c8492487e98d": { - "_type": "org.uengine.modeling.model.Relation", - "name": "", - "id": "78a22ec0-5533-0df2-f8be-c8492487e98d", - "sourceElement": { - "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "description": "도서 대출 후 상태를 '대출중'으로 변경", - "elementView": { - "height": 115, - "width": 100, - "x": 437, - "y": 380, - "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "style": "{}", - "_type": "org.uengine.modeling.model.Policy" - }, - "fieldDescriptors": [], - "hexagonalView": { - "height": 20, - "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "style": "{}", - "subWidth": 100, - "width": 20, - "_type": "org.uengine.modeling.model.PolicyHexagonal" - }, - "isSaga": false, - "name": "UpdateLoanBookStatusPolicy", - "displayName": "대출 도서 상태 변경", - "nameCamelCase": "updateLoanBookStatusPolicy", - "namePascalCase": "UpdateLoanBookStatusPolicy", - "namePlural": "updateLoanBookStatusPolicies", - "oldName": "", - "rotateStatus": false, - "_type": "org.uengine.modeling.model.Policy" - }, - "targetElement": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "BookStatusChanged" - ], - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "controllerInfo": { - "method": "PUT" - }, - "fieldDescriptors": [ - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "nameCamelCase": "status", - "namePascalCase": "Status", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "reason", - "nameCamelCase": "reason", - "namePascalCase": "Reason", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "description": null, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 115, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "style": "{}", - "width": 100, - "x": 556, - "y": 380, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "ChangeBookStatus", - "displayName": "도서 상태 변경", - "nameCamelCase": "changeBookStatus", - "namePascalCase": "ChangeBookStatus", - "namePlural": "changeBookStatuses", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "PUT" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist" - }, - "from": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "to": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "relationView": { - "id": "78a22ec0-5533-0df2-f8be-c8492487e98d", - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "from": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "to": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "needReconnect": true, - "value": "[[424,298],[424,380],[506,380]]" - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.RelationHexagonal", - "from": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "id": "78a22ec0-5533-0df2-f8be-c8492487e98d", - "needReconnect": true, - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "to": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "value": null - }, - "sourceMultiplicity": "1", - "targetMultiplicity": "1", - "displayName": "" - }, - "a4abefcb-3ab3-c3d3-f730-4abb61c7073a": { - "_type": "org.uengine.modeling.model.Relation", - "name": "", - "id": "a4abefcb-3ab3-c3d3-f730-4abb61c7073a", - "sourceElement": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "ac75186c-693b-322d-9554-c112044993f4", - "elementView": { - "angle": 0, - "height": 115, - "id": "ac75186c-693b-322d-9554-c112044993f4", - "style": "{}", - "width": 100, - "x": 1329, - "y": 510, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDate", - "nameCamelCase": "returnDate", - "namePascalCase": "ReturnDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "nextStatus", - "nameCamelCase": "nextStatus", - "namePascalCase": "NextStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "ac75186c-693b-322d-9554-c112044993f4", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "LoanReturned", - "displayName": "대출 반납됨", - "nameCamelCase": "loanReturned", - "namePascalCase": "LoanReturned", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - } - }, - "targetElement": { - "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "description": "도서 반납 후 상태를 '대출가능'으로 변경", - "elementView": { - "height": 115, - "width": 100, - "x": 437, - "y": 380, - "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "style": "{}", - "_type": "org.uengine.modeling.model.Policy" - }, - "fieldDescriptors": [], - "hexagonalView": { - "height": 20, - "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "style": "{}", - "subWidth": 100, - "width": 20, - "_type": "org.uengine.modeling.model.PolicyHexagonal" - }, - "isSaga": false, - "name": "ReturnBookStatusPolicy", - "displayName": "반납 도서 상태 변경", - "nameCamelCase": "returnBookStatusPolicy", - "namePascalCase": "ReturnBookStatusPolicy", - "namePlural": "returnBookStatusPolicies", - "oldName": "", - "rotateStatus": false, - "_type": "org.uengine.modeling.model.Policy" - }, - "from": "ac75186c-693b-322d-9554-c112044993f4", - "to": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "relationView": { - "id": "a4abefcb-3ab3-c3d3-f730-4abb61c7073a", - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "from": "ac75186c-693b-322d-9554-c112044993f4", - "to": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "needReconnect": true, - "value": "[[1379,512],[1436,512],[1436,604],[424,584],[424,530]]" - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.RelationHexagonal", - "from": "ac75186c-693b-322d-9554-c112044993f4", - "id": "a4abefcb-3ab3-c3d3-f730-4abb61c7073a", - "needReconnect": true, - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "to": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "value": null - }, - "sourceMultiplicity": "1", - "targetMultiplicity": "1", - "displayName": "" - }, - "9f52f8ae-8acb-3af4-2c26-d11e0f3b9f2f": { - "_type": "org.uengine.modeling.model.Relation", - "name": "", - "id": "9f52f8ae-8acb-3af4-2c26-d11e0f3b9f2f", - "sourceElement": { - "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "description": "도서 반납 후 상태를 '대출가능'으로 변경", - "elementView": { - "height": 115, - "width": 100, - "x": 437, - "y": 380, - "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "style": "{}", - "_type": "org.uengine.modeling.model.Policy" - }, - "fieldDescriptors": [], - "hexagonalView": { - "height": 20, - "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "style": "{}", - "subWidth": 100, - "width": 20, - "_type": "org.uengine.modeling.model.PolicyHexagonal" - }, - "isSaga": false, - "name": "ReturnBookStatusPolicy", - "displayName": "반납 도서 상태 변경", - "nameCamelCase": "returnBookStatusPolicy", - "namePascalCase": "ReturnBookStatusPolicy", - "namePlural": "returnBookStatusPolicies", - "oldName": "", - "rotateStatus": false, - "_type": "org.uengine.modeling.model.Policy" - }, - "targetElement": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "BookStatusChanged" - ], - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "controllerInfo": { - "method": "PUT" - }, - "fieldDescriptors": [ - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "nameCamelCase": "status", - "namePascalCase": "Status", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "reason", - "nameCamelCase": "reason", - "namePascalCase": "Reason", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "description": null, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 115, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "style": "{}", - "width": 100, - "x": 556, - "y": 380, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "ChangeBookStatus", - "displayName": "도서 상태 변경", - "nameCamelCase": "changeBookStatus", - "namePascalCase": "ChangeBookStatus", - "namePlural": "changeBookStatuses", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "PUT" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist" - }, - "from": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "to": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "relationView": { - "id": "9f52f8ae-8acb-3af4-2c26-d11e0f3b9f2f", - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "from": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "to": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "needReconnect": true, - "value": "[[424,414],[424,380],[506,380]]" - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.RelationHexagonal", - "from": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "id": "9f52f8ae-8acb-3af4-2c26-d11e0f3b9f2f", - "needReconnect": true, - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "to": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "value": null - }, - "sourceMultiplicity": "1", - "targetMultiplicity": "1", - "displayName": "" - } - }, - "basePlatform": null, - "basePlatformConf": {}, - "toppingPlatforms": [], - "toppingPlatformsConf": {}, - "scm": { - "tag": null, - "org": null, - "repo": null, - "forkedOrg": null, - "forkedRepo": null - }, - "version": 3, - "k8sValue": { - "elements": {}, - "relations": {} - } -} \ No newline at end of file diff --git a/src/components/designer/modeling/generators/es-generators/helpers/ESValueSummarizeWithFilter/ESValueSummarizeWithFilter.js b/src/components/designer/modeling/generators/es-generators/helpers/ESValueSummarizeWithFilter/ESValueSummarizeWithFilter.js index 1f2c6e38..e7297dc9 100644 --- a/src/components/designer/modeling/generators/es-generators/helpers/ESValueSummarizeWithFilter/ESValueSummarizeWithFilter.js +++ b/src/components/designer/modeling/generators/es-generators/helpers/ESValueSummarizeWithFilter/ESValueSummarizeWithFilter.js @@ -156,30 +156,30 @@ The approximate structure is as follows. /** * 주어진 이벤트스토밍에서 위치 데이터등을 제외한 핵심 정보들만 추출해서 LLM에게 입력 데이터로 제공 - * keysToFilter: 일부 경우에는 properties와 같은 구체적인 속성들이 불필요할 수 있음. 이런 경우에 제외시킬 키값을 배열로 전달 + * keysToExcludeFilter: 일부 경우에는 properties와 같은 구체적인 속성들이 불필요할 수 있음. 이런 경우에 제외시킬 키값을 배열로 전달 * ex) id: 모든 id 속성을 미포함, boundedContext.id: boundedContext의 id 속성을 미포함 * esAliasTransManager: Id값을 별칭으로 바꿔서 UUID를 제거해서, 패턴 기반의 LLM의 성능을 향상 */ - static getSummarizedESValue(esValue, keysToFilter=[], esAliasTransManager=null){ + static getSummarizedESValue(esValue, keysToExcludeFilter=[], esAliasTransManager=null){ const boundedContexts = Object.values(esValue.elements) .filter(element => element && element._type === 'org.uengine.modeling.model.BoundedContext') let summarizedBoundedContexts = boundedContexts.map(boundedContext => this.getSummarizedBoundedContextValue( - esValue, boundedContext, keysToFilter, esAliasTransManager + esValue, boundedContext, keysToExcludeFilter, esAliasTransManager ) ) return { - deletedProperties: keysToFilter, + deletedProperties: keysToExcludeFilter, boundedContexts: summarizedBoundedContexts } } - static getSummarizedBoundedContextValue(esValue, boundedContext, keysToFilter=[], esAliasTransManager=null) { + static getSummarizedBoundedContextValue(esValue, boundedContext, keysToExcludeFilter=[], esAliasTransManager=null) { const getConditionalValue = (keys, value) => { - return !this._checkKeyFilters(keysToFilter, keys) ? value : {} + return !this._checkKeyFilters(keysToExcludeFilter, keys) ? value : {} } @@ -197,7 +197,7 @@ The approximate structure is as follows. ...getConditionalValue( ["actors", "boundedContext.actors"], { actors: this.getSummarizedActorValue( - esValue, boundedContext, keysToFilter, esAliasTransManager + esValue, boundedContext, keysToExcludeFilter, esAliasTransManager )} ), ...getConditionalValue( @@ -205,16 +205,16 @@ The approximate structure is as follows. { aggregates: boundedContext.aggregates .map(aggregate => esValue.elements[aggregate.id]) .map(aggregate => this.getSummarizedAggregateValue( - esValue, boundedContext, aggregate, keysToFilter, esAliasTransManager + esValue, boundedContext, aggregate, keysToExcludeFilter, esAliasTransManager )) } ) } } - static getSummarizedActorValue(esValue, boundedContext, keysToFilter=[], esAliasTransManager=null) { + static getSummarizedActorValue(esValue, boundedContext, keysToExcludeFilter=[], esAliasTransManager=null) { const getConditionalValue = (keys, value) => { - return !this._checkKeyFilters(keysToFilter, keys) ? value : {} + return !this._checkKeyFilters(keysToExcludeFilter, keys) ? value : {} } const getUniqueActors = (actors, property) => { @@ -245,18 +245,18 @@ The approximate structure is as follows. } - if(!this._checkKeyFilters(keysToFilter, ["name", "actors.name"])) + if(!this._checkKeyFilters(keysToExcludeFilter, ["name", "actors.name"])) return getUniqueActors(actors, "name") - if(!this._checkKeyFilters(keysToFilter, ["id", "actors.id"])) + if(!this._checkKeyFilters(keysToExcludeFilter, ["id", "actors.id"])) return getUniqueActors(actors, "id") return actors } - static getSummarizedAggregateValue(esValue, boundedContext, aggregate, keysToFilter=[], esAliasTransManager=null) { + static getSummarizedAggregateValue(esValue, boundedContext, aggregate, keysToExcludeFilter=[], esAliasTransManager=null) { const getConditionalValue = (keys, value) => { - return !this._checkKeyFilters(keysToFilter, keys) ? value : {} + return !this._checkKeyFilters(keysToExcludeFilter, keys) ? value : {} } return { @@ -274,34 +274,34 @@ The approximate structure is as follows. ), ...getConditionalValue( ["entities", "aggregate.entities"], - { entities: this.getSummarizedEntityValue(aggregate, keysToFilter, esAliasTransManager) } + { entities: this.getSummarizedEntityValue(aggregate, keysToExcludeFilter, esAliasTransManager) } ), ...getConditionalValue( ["enumerations", "aggregate.enumerations"], - { enumerations: this.getSummarizedEnumerationValue(aggregate, keysToFilter, esAliasTransManager) } + { enumerations: this.getSummarizedEnumerationValue(aggregate, keysToExcludeFilter, esAliasTransManager) } ), ...getConditionalValue( ["valueObjects", "aggregate.valueObjects"], - { valueObjects: this.getSummarizedValueObjectValue(aggregate, keysToFilter, esAliasTransManager) } + { valueObjects: this.getSummarizedValueObjectValue(aggregate, keysToExcludeFilter, esAliasTransManager) } ), ...getConditionalValue( ["commands", "aggregate.commands"], - { commands: this.getSummarizedCommandValue(esValue, boundedContext, aggregate, keysToFilter, esAliasTransManager) } + { commands: this.getSummarizedCommandValue(esValue, boundedContext, aggregate, keysToExcludeFilter, esAliasTransManager) } ), ...getConditionalValue( ["events", "aggregate.events"], - { events: this.getSummarizedEventValue(esValue, boundedContext, aggregate, keysToFilter, esAliasTransManager) } + { events: this.getSummarizedEventValue(esValue, boundedContext, aggregate, keysToExcludeFilter, esAliasTransManager) } ), ...getConditionalValue( ["readModels", "aggregate.readModels"], - { readModels: this.getSummarizedReadModelValue(esValue, boundedContext, aggregate, keysToFilter, esAliasTransManager) } + { readModels: this.getSummarizedReadModelValue(esValue, boundedContext, aggregate, keysToExcludeFilter, esAliasTransManager) } ) } } - static getSummarizedEntityValue(aggregate, keysToFilter=[], esAliasTransManager=null) { + static getSummarizedEntityValue(aggregate, keysToExcludeFilter=[], esAliasTransManager=null) { const getConditionalValue = (keys, value) => { - return !this._checkKeyFilters(keysToFilter, keys) ? value : {} + return !this._checkKeyFilters(keysToExcludeFilter, keys) ? value : {} } @@ -336,9 +336,9 @@ The approximate structure is as follows. return summarizedEntityValue } - static getSummarizedEnumerationValue(aggregate, keysToFilter=[], esAliasTransManager=null) { + static getSummarizedEnumerationValue(aggregate, keysToExcludeFilter=[], esAliasTransManager=null) { const getConditionalValue = (keys, value) => { - return !this._checkKeyFilters(keysToFilter, keys) ? value : {} + return !this._checkKeyFilters(keysToExcludeFilter, keys) ? value : {} } @@ -366,9 +366,9 @@ The approximate structure is as follows. return summarizedEnumerationValue } - static getSummarizedValueObjectValue(aggregate, keysToFilter=[], esAliasTransManager=null) { + static getSummarizedValueObjectValue(aggregate, keysToExcludeFilter=[], esAliasTransManager=null) { const getConditionalValue = (keys, value) => { - return !this._checkKeyFilters(keysToFilter, keys) ? value : {} + return !this._checkKeyFilters(keysToExcludeFilter, keys) ? value : {} } if(!this._isAggregateHaveElements(aggregate)) return [] @@ -406,9 +406,9 @@ The approximate structure is as follows. return summarizedValueObjectValue } - static getSummarizedCommandValue(esValue, boundedContext, aggregate, keysToFilter=[], esAliasTransManager=null) { + static getSummarizedCommandValue(esValue, boundedContext, aggregate, keysToExcludeFilter=[], esAliasTransManager=null) { const getConditionalValue = (keys, value) => { - return !this._checkKeyFilters(keysToFilter, keys) ? value : {} + return !this._checkKeyFilters(keysToExcludeFilter, keys) ? value : {} } const getOutputEvents = (element) => { @@ -473,9 +473,9 @@ The approximate structure is as follows. return summarizedCommandValue } - static getSummarizedEventValue(esValue, boundedContext, aggregate, keysToFilter=[], esAliasTransManager=null) { + static getSummarizedEventValue(esValue, boundedContext, aggregate, keysToExcludeFilter=[], esAliasTransManager=null) { const getConditionalValue = (keys, value) => { - return !this._checkKeyFilters(keysToFilter, keys) ? value : {} + return !this._checkKeyFilters(keysToExcludeFilter, keys) ? value : {} } const getRelationsForType = (esValue, sourceElement, targetType) => { @@ -544,9 +544,9 @@ The approximate structure is as follows. return summarizedEventValue } - static getSummarizedReadModelValue(esValue, boundedContext, aggregate, keysToFilter=[], esAliasTransManager=null) { + static getSummarizedReadModelValue(esValue, boundedContext, aggregate, keysToExcludeFilter=[], esAliasTransManager=null) { const getConditionalValue = (keys, value) => { - return !this._checkKeyFilters(keysToFilter, keys) ? value : {} + return !this._checkKeyFilters(keysToExcludeFilter, keys) ? value : {} } let summarizedReadModelValue = [] @@ -611,8 +611,8 @@ The approximate structure is as follows. }) } - static _checkKeyFilters(keysToFilter, valuesToCheck, onNotMatch=null) { - for(let key of keysToFilter) + static _checkKeyFilters(keysToExcludeFilter, valuesToCheck, onNotMatch=null) { + for(let key of keysToExcludeFilter) if(valuesToCheck.includes(key)) return true if(onNotMatch) onNotMatch() diff --git a/src/components/designer/modeling/generators/es-generators/helpers/ESValueSummarizeWithFilter/ESValueSummarizeWithFilterTest.js b/src/components/designer/modeling/generators/es-generators/helpers/ESValueSummarizeWithFilter/ESValueSummarizeWithFilterTest.js index fba3d1bb..b09123bf 100644 --- a/src/components/designer/modeling/generators/es-generators/helpers/ESValueSummarizeWithFilter/ESValueSummarizeWithFilterTest.js +++ b/src/components/designer/modeling/generators/es-generators/helpers/ESValueSummarizeWithFilter/ESValueSummarizeWithFilterTest.js @@ -1,11 +1,11 @@ -const libraryEsValue = require("./mocks") +const { getEsValue } = require("../../mocks") const ESAliasTransManager = require("../../../es-ddl-generators/modules/ESAliasTransManager") const ESValueSummarizeWithFilter = require("./ESValueSummarizeWithFilter") class ESValueSummarizeWithFilterTest { static async test(esValue=null) { if(!esValue) - esValue = libraryEsValue + esValue = getEsValue("librarySevice") const esAliasTransManager = new ESAliasTransManager(esValue) diff --git a/src/components/designer/modeling/generators/es-generators/helpers/ESValueSummarizeWithFilter/mocks.js b/src/components/designer/modeling/generators/es-generators/helpers/ESValueSummarizeWithFilter/mocks.js deleted file mode 100644 index 89ba81eb..00000000 --- a/src/components/designer/modeling/generators/es-generators/helpers/ESValueSummarizeWithFilter/mocks.js +++ /dev/null @@ -1,5385 +0,0 @@ -export const libraryEsValue = { - "elements": { - "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741": { - "_type": "org.uengine.modeling.model.BoundedContext", - "aggregates": [ - { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - } - ], - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "description": "'도서 관리' 화면에서는 새로운 도서를 등록하고 현재 보유한 도서들의 상태를 관리할 수 있어야 해. 도서 등록 시에는 도서명, ISBN, 저자, 출판사, 카테고리 정보를 입력받아야 해. ISBN은 13자리 숫자여야 하고 중복 확인이 필요해. 카테고리는 소설/비소설/학술/잡지 중에서 선택할 수 있어야 해. 등록된 도서는 처음에 '대출가능' 상태가 되고, 이후 대출/반납 상황에 따라 '대출중', '예약중' 상태로 자동으로 변경되어야 해. 도서가 훼손되거나 분실된 경우 '폐기' 처리가 가능해야 하며, 폐기된 도서는 더 이상 대출이 불가능해야 해. 각 도서별로 대출 이력과 상태 변경 이력을 조회할 수 있어야 하고, 이를 통해 도서의 대출 현황과 상태 변화를 추적할 수 있어야 해.", - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741", - "elementView": { - "_type": "org.uengine.modeling.model.BoundedContext", - "height": 590, - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741", - "style": "{}", - "width": 560, - "x": 650, - "y": 450 - }, - "gitURL": null, - "hexagonalView": { - "_type": "org.uengine.modeling.model.BoundedContextHexagonal", - "height": 350, - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741", - "style": "{}", - "width": 350, - "x": 235, - "y": 365 - }, - "members": [], - "name": "BookManagement", - "displayName": "도서 관리", - "oldName": "", - "policies": [], - "portGenerated": null, - "preferredPlatform": "template-spring-boot", - "preferredPlatformConf": {}, - "rotateStatus": false, - "tempId": "", - "templatePerElements": {}, - "views": [], - "definitionId": "163972132_es_9c3424a86507b5056f7433e4cbbf6f4a" - }, - "85c498d4-39ed-5546-59b8-8eaaf33cffc8": { - "_type": "org.uengine.modeling.model.BoundedContext", - "aggregates": [ - { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - } - ], - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "description": "'대출/반납' 화면에서는 회원이 도서를 대출하고 반납하는 것을 관리할 수 있어야 해. 대출 신청 시에는 회원번호와 이름으로 회원을 확인하고, 대출할 도서를 선택해야 해. 도서는 도서명이나 ISBN으로 검색할 수 있어야 해. 대출 기간은 7일/14일/30일 중에서 선택할 수 있어. 만약 대출하려는 도서가 이미 대출 중이라면, 예약 신청이 가능해야 해. 대출이 완료되면 해당 도서의 상태는 자동으로 '대출중'으로 변경되어야 해. 대출 현황 화면에서는 현재 대출 중인 도서들의 목록을 볼 수 있어야 해. 각 대출 건에 대해 대출일, 반납예정일, 현재 상태(대출중/연체/반납완료)를 확인할 수 있어야 하고, 대출 중인 도서는 연장이나 반납 처리가 가능해야 해. 도서가 반납되면 자동으로 해당 도서의 상태가 '대출가능'으로 변경되어야 해. 만약 예약자가 있는 도서가 반납되면, 해당 도서는 '예약중' 상태로 변경되어야 해.", - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8", - "elementView": { - "_type": "org.uengine.modeling.model.BoundedContext", - "height": 726, - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8", - "style": "{}", - "width": 560, - "x": 1235, - "y": 518 - }, - "gitURL": null, - "hexagonalView": { - "_type": "org.uengine.modeling.model.BoundedContextHexagonal", - "height": 350, - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8", - "style": "{}", - "width": 350, - "x": 235, - "y": 365 - }, - "members": [], - "name": "LoanManagement", - "displayName": "대출/반납 관리", - "oldName": "", - "policies": [], - "portGenerated": 8080, - "preferredPlatform": "template-spring-boot", - "preferredPlatformConf": {}, - "rotateStatus": false, - "tempId": "", - "templatePerElements": {}, - "views": [], - "definitionId": "163972132_es_9c3424a86507b5056f7433e4cbbf6f4a" - }, - "554241df-8091-4819-87d3-8fa38d18deaa": { - "aggregateRoot": { - "_type": "org.uengine.modeling.model.AggregateRoot", - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": true, - "name": "bookId", - "nameCamelCase": "bookId", - "namePascalCase": "BookId", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "title", - "nameCamelCase": "title", - "namePascalCase": "Title", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "isbn", - "nameCamelCase": "isbn", - "namePascalCase": "Isbn", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "author", - "nameCamelCase": "author", - "namePascalCase": "Author", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "publisher", - "nameCamelCase": "publisher", - "namePascalCase": "Publisher", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Category", - "isCopy": false, - "isKey": false, - "name": "category", - "nameCamelCase": "category", - "namePascalCase": "Category", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "nameCamelCase": "status", - "namePascalCase": "Status", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "entities": { - "elements": { - "0a22d0ce-0f1d-80fa-42b3-19647aa41149": { - "_type": "org.uengine.uml.model.Class", - "id": "0a22d0ce-0f1d-80fa-42b3-19647aa41149", - "name": "Book", - "namePascalCase": "Book", - "nameCamelCase": "book", - "namePlural": "Books", - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": true, - "name": "bookId", - "displayName": "", - "nameCamelCase": "bookId", - "namePascalCase": "BookId", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "title", - "displayName": "", - "nameCamelCase": "title", - "namePascalCase": "Title", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "isbn", - "displayName": "", - "nameCamelCase": "isbn", - "namePascalCase": "Isbn", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "author", - "displayName": "", - "nameCamelCase": "author", - "namePascalCase": "Author", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "publisher", - "displayName": "", - "nameCamelCase": "publisher", - "namePascalCase": "Publisher", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Category", - "isCopy": false, - "isKey": false, - "name": "category", - "displayName": "", - "nameCamelCase": "category", - "namePascalCase": "Category", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "displayName": "", - "nameCamelCase": "status", - "namePascalCase": "Status", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - } - ], - "operations": [], - "elementView": { - "_type": "org.uengine.uml.model.Class", - "id": "0a22d0ce-0f1d-80fa-42b3-19647aa41149", - "x": 200, - "y": 200, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 120, - "fieldH": 90, - "methodH": 30 - }, - "selected": false, - "relations": [], - "parentOperations": [], - "relationType": null, - "isVO": false, - "isAbstract": false, - "isInterface": false, - "isAggregateRoot": true, - "parentId": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "e029780c-da79-3641-c1f3-8e45ebd5bfb7": { - "_type": "org.uengine.uml.model.enum", - "id": "e029780c-da79-3641-c1f3-8e45ebd5bfb7", - "name": "Category", - "displayName": "도서 카테고리", - "nameCamelCase": "category", - "namePascalCase": "Category", - "namePlural": "categories", - "elementView": { - "_type": "org.uengine.uml.model.enum", - "id": "e029780c-da79-3641-c1f3-8e45ebd5bfb7", - "x": 700, - "y": 456, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 50 - }, - "selected": false, - "items": [ - { - "value": "NOVEL" - }, - { - "value": "NONFICTION" - }, - { - "value": "ACADEMIC" - }, - { - "value": "MAGAZINE" - } - ], - "useKeyValue": false, - "relations": [] - }, - "3abb79e5-1456-e11b-560b-1483b5807a68": { - "_type": "org.uengine.uml.model.enum", - "id": "3abb79e5-1456-e11b-560b-1483b5807a68", - "name": "Status", - "displayName": "도서 상태", - "nameCamelCase": "status", - "namePascalCase": "Status", - "namePlural": "statuses", - "elementView": { - "_type": "org.uengine.uml.model.enum", - "id": "3abb79e5-1456-e11b-560b-1483b5807a68", - "x": 950, - "y": 456, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 50 - }, - "selected": false, - "items": [ - { - "value": "AVAILABLE" - }, - { - "value": "BORROWED" - }, - { - "value": "RESERVED" - }, - { - "value": "DISCARDED" - } - ], - "useKeyValue": false, - "relations": [] - } - }, - "relations": {} - }, - "operations": [] - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "name": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741", - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "commands": [], - "description": null, - "id": "554241df-8091-4819-87d3-8fa38d18deaa", - "elementView": { - "_type": "org.uengine.modeling.model.Aggregate", - "id": "554241df-8091-4819-87d3-8fa38d18deaa", - "x": 650, - "y": 450, - "width": 130, - "height": 400 - }, - "events": [], - "hexagonalView": { - "_type": "org.uengine.modeling.model.AggregateHexagonal", - "id": "554241df-8091-4819-87d3-8fa38d18deaa", - "x": 0, - "y": 0, - "subWidth": 0, - "width": 0 - }, - "name": "Book", - "displayName": "도서", - "nameCamelCase": "book", - "namePascalCase": "Book", - "namePlural": "books", - "rotateStatus": false, - "selected": false, - "_type": "org.uengine.modeling.model.Aggregate" - }, - "f8dc3056-6183-539a-7f20-68681ddcc8a2": { - "aggregateRoot": { - "_type": "org.uengine.modeling.model.AggregateRoot", - "fieldDescriptors": [ - { - "className": "Long", - "isCopy": false, - "isKey": true, - "name": "loanId", - "nameCamelCase": "loanId", - "namePascalCase": "LoanId", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Member", - "isCopy": false, - "isKey": false, - "name": "member", - "nameCamelCase": "member", - "namePascalCase": "Member", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Integer", - "isCopy": false, - "isKey": false, - "name": "loanPeriod", - "nameCamelCase": "loanPeriod", - "namePascalCase": "LoanPeriod", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "loanStatus", - "nameCamelCase": "loanStatus", - "namePascalCase": "LoanStatus", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "loanDate", - "nameCamelCase": "loanDate", - "namePascalCase": "LoanDate", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDueDate", - "nameCamelCase": "returnDueDate", - "namePascalCase": "ReturnDueDate", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "loanDuration", - "nameCamelCase": "loanDuration", - "namePascalCase": "LoanDuration", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "BookId", - "isCopy": false, - "isKey": false, - "name": "bookId", - "nameCamelCase": "bookId", - "namePascalCase": "BookId", - "displayName": "", - "referenceClass": "Book", - "isOverrideField": true, - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "entities": { - "elements": { - "30397330-2606-86f2-57f4-bf677bae16dc": { - "_type": "org.uengine.uml.model.Class", - "id": "30397330-2606-86f2-57f4-bf677bae16dc", - "name": "Loan", - "namePascalCase": "Loan", - "nameCamelCase": "loan", - "namePlural": "Loans", - "fieldDescriptors": [ - { - "className": "Long", - "isCopy": false, - "isKey": true, - "name": "loanId", - "displayName": "", - "nameCamelCase": "loanId", - "namePascalCase": "LoanId", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Member", - "isCopy": false, - "isKey": false, - "name": "member", - "displayName": "", - "nameCamelCase": "member", - "namePascalCase": "Member", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Integer", - "isCopy": false, - "isKey": false, - "name": "loanPeriod", - "displayName": "", - "nameCamelCase": "loanPeriod", - "namePascalCase": "LoanPeriod", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "loanStatus", - "displayName": "", - "nameCamelCase": "loanStatus", - "namePascalCase": "LoanStatus", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "loanDate", - "displayName": "", - "nameCamelCase": "loanDate", - "namePascalCase": "LoanDate", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDueDate", - "displayName": "", - "nameCamelCase": "returnDueDate", - "namePascalCase": "ReturnDueDate", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "loanDuration", - "displayName": "", - "nameCamelCase": "loanDuration", - "namePascalCase": "LoanDuration", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "BookId", - "isCopy": false, - "isKey": false, - "name": "bookId", - "nameCamelCase": "bookId", - "namePascalCase": "BookId", - "displayName": "", - "referenceClass": "Book", - "isOverrideField": true, - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "operations": [], - "elementView": { - "_type": "org.uengine.uml.model.Class", - "id": "30397330-2606-86f2-57f4-bf677bae16dc", - "x": 200, - "y": 200, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 120, - "fieldH": 90, - "methodH": 30 - }, - "selected": false, - "relations": [], - "parentOperations": [], - "relationType": null, - "isVO": false, - "isAbstract": false, - "isInterface": false, - "isAggregateRoot": true, - "parentId": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "09ee5a03-4449-1bde-3705-35c2ca198880": { - "_type": "org.uengine.uml.model.vo.Class", - "id": "09ee5a03-4449-1bde-3705-35c2ca198880", - "name": "Member", - "displayName": "회원", - "namePascalCase": "Member", - "nameCamelCase": "member", - "fieldDescriptors": [ - { - "className": "String", - "isKey": false, - "label": "- memberId: String", - "name": "memberId", - "nameCamelCase": "memberId", - "namePascalCase": "MemberId", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isKey": false, - "label": "- name: String", - "name": "name", - "nameCamelCase": "name", - "namePascalCase": "Name", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "operations": [], - "elementView": { - "_type": "org.uengine.uml.model.vo.address.Class", - "id": "09ee5a03-4449-1bde-3705-35c2ca198880", - "x": 700, - "y": 152, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 170, - "fieldH": 150, - "methodH": 30 - }, - "selected": false, - "parentOperations": [], - "relationType": null, - "isVO": true, - "relations": [], - "groupElement": null, - "isAggregateRoot": false, - "namePlural": "Members", - "isAbstract": false, - "isInterface": false - }, - "bfdf118a-ad46-c0e3-2ae4-d0372b9d8361": { - "_type": "org.uengine.uml.model.enum", - "id": "bfdf118a-ad46-c0e3-2ae4-d0372b9d8361", - "name": "LoanStatus", - "displayName": "대출 상태", - "nameCamelCase": "loanStatus", - "namePascalCase": "LoanStatus", - "namePlural": "loanStatuses", - "elementView": { - "_type": "org.uengine.uml.model.enum", - "id": "bfdf118a-ad46-c0e3-2ae4-d0372b9d8361", - "x": 700, - "y": 456, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 50 - }, - "selected": false, - "items": [ - { - "value": "BORROWED" - }, - { - "value": "OVERDUE" - }, - { - "value": "RETURNED" - } - ], - "useKeyValue": false, - "relations": [] - }, - "8c1b2fee-54a7-b460-486a-1453593fac3f": { - "_type": "org.uengine.uml.model.enum", - "id": "8c1b2fee-54a7-b460-486a-1453593fac3f", - "name": "LoanDuration", - "displayName": "대출 기간 옵션", - "nameCamelCase": "loanDuration", - "namePascalCase": "LoanDuration", - "namePlural": "loanDurations", - "elementView": { - "_type": "org.uengine.uml.model.enum", - "id": "8c1b2fee-54a7-b460-486a-1453593fac3f", - "x": 950, - "y": 456, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 50 - }, - "selected": false, - "items": [ - { - "value": "7_DAYS" - }, - { - "value": "14_DAYS" - }, - { - "value": "30_DAYS" - } - ], - "useKeyValue": false, - "relations": [] - }, - "498f116f-796f-fa99-d9a2-a2f257761c80": { - "_type": "org.uengine.uml.model.vo.Class", - "id": "498f116f-796f-fa99-d9a2-a2f257761c80", - "name": "BookId", - "displayName": "", - "namePascalCase": "BookId", - "nameCamelCase": "bookId", - "fieldDescriptors": [ - { - "className": "String", - "isKey": true, - "label": "- bookId: String", - "name": "bookId", - "nameCamelCase": "bookId", - "namePascalCase": "BookId", - "displayName": "", - "referenceClass": "Book", - "isOverrideField": true, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isKey": false, - "label": "- isbn: String", - "name": "isbn", - "nameCamelCase": "isbn", - "namePascalCase": "Isbn", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "operations": [], - "elementView": { - "_type": "org.uengine.uml.model.vo.address.Class", - "id": "498f116f-796f-fa99-d9a2-a2f257761c80", - "x": 950, - "y": 152, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 170, - "fieldH": 150, - "methodH": 30 - }, - "selected": false, - "parentOperations": [], - "relationType": null, - "isVO": true, - "relations": [ - "9c545fdc-cddf-9cbb-e621-60b6aec1c837" - ], - "groupElement": null, - "isAggregateRoot": false, - "namePlural": "BookIds", - "isAbstract": false, - "isInterface": false - }, - "7c0b178b-e639-d076-551b-a6e54231343a": { - "_type": "org.uengine.uml.model.enum", - "id": "7c0b178b-e639-d076-551b-a6e54231343a", - "name": "Category", - "displayName": "도서 카테고리", - "nameCamelCase": "category", - "namePascalCase": "Category", - "namePlural": "categories", - "elementView": { - "_type": "org.uengine.uml.model.enum", - "id": "7c0b178b-e639-d076-551b-a6e54231343a", - "x": 1200, - "y": 456, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 50 - }, - "selected": false, - "items": [ - { - "value": "NOVEL" - }, - { - "value": "NONFICTION" - }, - { - "value": "ACADEMIC" - }, - { - "value": "MAGAZINE" - } - ], - "useKeyValue": false, - "relations": [ - "9c545fdc-cddf-9cbb-e621-60b6aec1c837" - ] - } - }, - "relations": { - "9c545fdc-cddf-9cbb-e621-60b6aec1c837": { - "name": "Category", - "id": "9c545fdc-cddf-9cbb-e621-60b6aec1c837", - "_type": "org.uengine.uml.model.Relation", - "sourceElement": { - "_type": "org.uengine.uml.model.vo.Class", - "id": "498f116f-796f-fa99-d9a2-a2f257761c80", - "name": "BookId", - "displayName": "", - "namePascalCase": "BookId", - "nameCamelCase": "bookId", - "fieldDescriptors": [ - { - "className": "String", - "isKey": true, - "label": "- bookId: String", - "name": "bookId", - "nameCamelCase": "bookId", - "namePascalCase": "BookId", - "displayName": "", - "referenceClass": "Book", - "isOverrideField": true, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isKey": false, - "label": "- isbn: String", - "name": "isbn", - "nameCamelCase": "isbn", - "namePascalCase": "Isbn", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "operations": [], - "elementView": { - "_type": "org.uengine.uml.model.vo.address.Class", - "id": "498f116f-796f-fa99-d9a2-a2f257761c80", - "x": 950, - "y": 152, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 170, - "fieldH": 150, - "methodH": 30 - }, - "selected": false, - "parentOperations": [], - "relationType": null, - "isVO": true, - "relations": [ - "9c545fdc-cddf-9cbb-e621-60b6aec1c837" - ], - "groupElement": null, - "isAggregateRoot": false, - "namePlural": "BookIds", - "isAbstract": false, - "isInterface": false - }, - "targetElement": { - "_type": "org.uengine.uml.model.enum", - "id": "7c0b178b-e639-d076-551b-a6e54231343a", - "name": "Category", - "displayName": "도서 카테고리", - "nameCamelCase": "category", - "namePascalCase": "Category", - "namePlural": "categories", - "elementView": { - "_type": "org.uengine.uml.model.enum", - "id": "7c0b178b-e639-d076-551b-a6e54231343a", - "x": 1200, - "y": 456, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 50 - }, - "selected": false, - "items": [ - { - "value": "NOVEL" - }, - { - "value": "NONFICTION" - }, - { - "value": "ACADEMIC" - }, - { - "value": "MAGAZINE" - } - ], - "useKeyValue": false, - "relations": [ - "9c545fdc-cddf-9cbb-e621-60b6aec1c837" - ] - }, - "from": "498f116f-796f-fa99-d9a2-a2f257761c80", - "to": "7c0b178b-e639-d076-551b-a6e54231343a", - "selected": false, - "relationView": { - "id": "9c545fdc-cddf-9cbb-e621-60b6aec1c837", - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "from": "498f116f-796f-fa99-d9a2-a2f257761c80", - "to": "7c0b178b-e639-d076-551b-a6e54231343a", - "needReconnect": true - }, - "sourceMultiplicity": "1", - "targetMultiplicity": "1", - "relationType": "Association", - "fromLabel": "", - "toLabel": "" - } - } - }, - "operations": [] - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "name": "85c498d4-39ed-5546-59b8-8eaaf33cffc8", - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "commands": [], - "description": null, - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2", - "elementView": { - "_type": "org.uengine.modeling.model.Aggregate", - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2", - "x": 1235, - "y": 525, - "width": 130, - "height": 550 - }, - "events": [], - "hexagonalView": { - "_type": "org.uengine.modeling.model.AggregateHexagonal", - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2", - "x": 0, - "y": 0, - "subWidth": 0, - "width": 0 - }, - "name": "Loan", - "displayName": "대출", - "nameCamelCase": "loan", - "namePascalCase": "Loan", - "namePlural": "loans", - "rotateStatus": false, - "selected": false, - "_type": "org.uengine.modeling.model.Aggregate" - }, - "5afcf0dc-5c3b-f67a-d273-fab421febc20": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "5afcf0dc-5c3b-f67a-d273-fab421febc20", - "elementView": { - "angle": 0, - "height": 116, - "id": "5afcf0dc-5c3b-f67a-d273-fab421febc20", - "style": "{}", - "width": 100, - "x": 744, - "y": 250, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "title", - "nameCamelCase": "title", - "namePascalCase": "Title", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "isbn", - "nameCamelCase": "isbn", - "namePascalCase": "Isbn", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "author", - "nameCamelCase": "author", - "namePascalCase": "Author", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "publisher", - "nameCamelCase": "publisher", - "namePascalCase": "Publisher", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Category", - "isCopy": false, - "isKey": false, - "name": "category", - "nameCamelCase": "category", - "namePascalCase": "Category", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "nameCamelCase": "status", - "namePascalCase": "Status", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "5afcf0dc-5c3b-f67a-d273-fab421febc20", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "BookCreated", - "displayName": "도서 등록됨", - "nameCamelCase": "bookCreated", - "namePascalCase": "BookCreated", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "visibility": "public" - }, - "a82665ee-dc60-21db-a491-8fffbc623007": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "a82665ee-dc60-21db-a491-8fffbc623007", - "elementView": { - "angle": 0, - "height": 116, - "id": "a82665ee-dc60-21db-a491-8fffbc623007", - "style": "{}", - "width": 100, - "x": 744, - "y": 380, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "previousStatus", - "nameCamelCase": "previousStatus", - "namePascalCase": "PreviousStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "currentStatus", - "nameCamelCase": "currentStatus", - "namePascalCase": "CurrentStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "changeDate", - "nameCamelCase": "changeDate", - "namePascalCase": "ChangeDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "reason", - "nameCamelCase": "reason", - "namePascalCase": "Reason", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "a82665ee-dc60-21db-a491-8fffbc623007", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "BookStatusChanged", - "displayName": "도서 상태 변경됨", - "nameCamelCase": "bookStatusChanged", - "namePascalCase": "BookStatusChanged", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "visibility": "public" - }, - "fcdfa519-b23b-a129-296b-90b34d98a7db": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "BookCreated" - ], - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "controllerInfo": { - "method": "POST" - }, - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "title", - "nameCamelCase": "title", - "namePascalCase": "Title", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "isbn", - "nameCamelCase": "isbn", - "namePascalCase": "Isbn", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "author", - "nameCamelCase": "author", - "namePascalCase": "Author", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "publisher", - "nameCamelCase": "publisher", - "namePascalCase": "Publisher", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Category", - "isCopy": false, - "isKey": false, - "name": "category", - "nameCamelCase": "category", - "namePascalCase": "Category", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "description": null, - "id": "fcdfa519-b23b-a129-296b-90b34d98a7db", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 116, - "id": "fcdfa519-b23b-a129-296b-90b34d98a7db", - "style": "{}", - "width": 100, - "x": 556, - "y": 250, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "fcdfa519-b23b-a129-296b-90b34d98a7db", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "CreateBook", - "displayName": "도서 등록", - "nameCamelCase": "createBook", - "namePascalCase": "CreateBook", - "namePlural": "createBooks", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "POST" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist", - "examples": [ - { - "given": [ - { - "type": "Aggregate", - "name": "Book", - "value": { - "bookId": null, - "title": null, - "isbn": null, - "author": null, - "publisher": null, - "category": "N/A", - "status": "N/A" - } - } - ], - "when": [ - { - "type": "Command", - "name": "CreateBook", - "value": { - "title": "해리 포터", - "isbn": "1234567890123", - "author": "J.K. 롤링", - "publisher": "문학사", - "category": "NOVEL" - } - } - ], - "then": [ - { - "type": "Event", - "name": "BookCreated", - "value": { - "title": "해리 포터", - "isbn": "1234567890123", - "author": "J.K. 롤링", - "publisher": "문학사", - "category": "NOVEL", - "status": "AVAILABLE" - } - } - ] - } - ], - "visibility": "public" - }, - "ae7bd270-ac8c-7103-9866-c3e1867c019a": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "BookStatusChanged" - ], - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "controllerInfo": { - "method": "PUT", - "apiPath": "changebookstatus" - }, - "fieldDescriptors": [ - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "nameCamelCase": "status", - "namePascalCase": "Status", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "reason", - "nameCamelCase": "reason", - "namePascalCase": "Reason", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "description": null, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 116, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "style": "{}", - "width": 100, - "x": 556, - "y": 380, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "ChangeBookStatus", - "displayName": "도서 상태 변경", - "nameCamelCase": "changeBookStatus", - "namePascalCase": "ChangeBookStatus", - "namePlural": "changeBookStatuses", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "PUT" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist", - "examples": [ - { - "given": [ - { - "type": "Aggregate", - "name": "Book", - "value": { - "bookId": "BOOK-001", - "title": "해리 포터", - "isbn": "1234567890123", - "author": "J.K. 롤링", - "publisher": "문학사", - "category": "NOVEL", - "status": "AVAILABLE" - } - } - ], - "when": [ - { - "type": "Command", - "name": "ChangeBookStatus", - "value": { - "status": "BORROWED", - "reason": "사용자가 대출" - } - } - ], - "then": [ - { - "type": "Event", - "name": "BookStatusChanged", - "value": { - "previousStatus": "AVAILABLE", - "currentStatus": "BORROWED", - "changeDate": "2024-03-20T00:00:00Z", - "reason": "사용자가 대출" - } - } - ] - }, - { - "given": [ - { - "type": "Aggregate", - "name": "Book", - "value": { - "bookId": "BOOK-002", - "title": "1984", - "isbn": "9876543210123", - "author": "조지 오웰", - "publisher": "문학사", - "category": "NOVEL", - "status": "BORROWED" - } - } - ], - "when": [ - { - "type": "Command", - "name": "ChangeBookStatus", - "value": { - "status": "AVAILABLE", - "reason": "사용자가 반납" - } - } - ], - "then": [ - { - "type": "Event", - "name": "BookStatusChanged", - "value": { - "previousStatus": "BORROWED", - "currentStatus": "AVAILABLE", - "changeDate": "2024-03-21T00:00:00Z", - "reason": "사용자가 반납" - } - } - ] - }, - { - "given": [ - { - "type": "Aggregate", - "name": "Book", - "value": { - "bookId": "BOOK-003", - "title": "데미안", - "isbn": "1122334455667", - "author": "헤르만 헤세", - "publisher": "문학사", - "category": "NOVEL", - "status": "AVAILABLE" - } - } - ], - "when": [ - { - "type": "Command", - "name": "ChangeBookStatus", - "value": { - "status": "RESERVED", - "reason": "사용자가 예약" - } - } - ], - "then": [ - { - "type": "Event", - "name": "BookStatusChanged", - "value": { - "previousStatus": "AVAILABLE", - "currentStatus": "RESERVED", - "changeDate": "2024-03-22T00:00:00Z", - "reason": "사용자가 예약" - } - } - ] - }, - { - "given": [ - { - "type": "Aggregate", - "name": "Book", - "value": { - "bookId": "BOOK-004", - "title": "호밀밭의 파수꾼", - "isbn": "9988776655443", - "author": "제롬 데이비드 샐린저", - "publisher": "문학사", - "category": "NOVEL", - "status": "AVAILABLE" - } - } - ], - "when": [ - { - "type": "Command", - "name": "ChangeBookStatus", - "value": { - "status": "DISCARDED", - "reason": "오래된 도서 폐기" - } - } - ], - "then": [ - { - "type": "Event", - "name": "BookStatusChanged", - "value": { - "previousStatus": "AVAILABLE", - "currentStatus": "DISCARDED", - "changeDate": "2024-03-23T00:00:00Z", - "reason": "오래된 도서 폐기" - } - } - ] - } - ], - "visibility": "public", - "oldName": "ChangeBookStatus" - }, - "739e4179-c302-708b-a3e7-09878dca9a29": { - "_type": "org.uengine.modeling.model.View", - "id": "739e4179-c302-708b-a3e7-09878dca9a29", - "visibility": "public", - "name": "BookHistory", - "oldName": "", - "displayName": "도서 이력", - "namePascalCase": "BookHistory", - "namePlural": "bookHistories", - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "description": null, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "fieldDescriptors": [ - { - "_type": "org.uengine.model.FieldDescriptor", - "name": "id", - "className": "Long", - "nameCamelCase": "id", - "namePascalCase": "Id", - "isKey": true - } - ], - "queryParameters": [ - { - "className": "String", - "isCopy": false, - "isKey": true, - "name": "historyId", - "nameCamelCase": "historyId", - "namePascalCase": "HistoryId", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "changeDate", - "nameCamelCase": "changeDate", - "namePascalCase": "ChangeDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "nameCamelCase": "status", - "namePascalCase": "Status", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "userId", - "nameCamelCase": "userId", - "namePascalCase": "UserId", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "queryOption": { - "apiPath": "", - "useDefaultUri": true, - "multipleResult": true - }, - "controllerInfo": { - "url": "" - }, - "elementView": { - "_type": "org.uengine.modeling.model.View", - "id": "739e4179-c302-708b-a3e7-09878dca9a29", - "x": 556, - "y": 510, - "width": 100, - "height": 116, - "style": "{}", - "z-index": 999 - }, - "editingView": false, - "dataProjection": "query-for-aggregate", - "createRules": [ - { - "_type": "viewStoreRule", - "operation": "CREATE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null, - "operator": "=" - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "updateRules": [ - { - "_type": "viewStoreRule", - "operation": "UPDATE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null, - "operator": "=" - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "deleteRules": [ - { - "_type": "viewStoreRule", - "operation": "DELETE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "rotateStatus": false, - "definitionId": "" - }, - "65f57c13-6e15-18af-9892-1d47a205fba1": { - "_type": "org.uengine.modeling.model.View", - "id": "65f57c13-6e15-18af-9892-1d47a205fba1", - "visibility": "public", - "name": "BookDetails", - "oldName": "", - "displayName": "도서 상세정보", - "namePascalCase": "BookDetails", - "namePlural": "bookDetails", - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "description": null, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "fieldDescriptors": [ - { - "_type": "org.uengine.model.FieldDescriptor", - "name": "id", - "className": "Long", - "nameCamelCase": "id", - "namePascalCase": "Id", - "isKey": true - } - ], - "queryParameters": [ - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "title", - "nameCamelCase": "title", - "namePascalCase": "Title", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "isbn", - "nameCamelCase": "isbn", - "namePascalCase": "Isbn", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "author", - "nameCamelCase": "author", - "namePascalCase": "Author", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "publisher", - "nameCamelCase": "publisher", - "namePascalCase": "Publisher", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Category", - "isCopy": false, - "isKey": false, - "name": "category", - "nameCamelCase": "category", - "namePascalCase": "Category", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "nameCamelCase": "status", - "namePascalCase": "Status", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "queryOption": { - "apiPath": "", - "useDefaultUri": true, - "multipleResult": false - }, - "controllerInfo": { - "url": "" - }, - "elementView": { - "_type": "org.uengine.modeling.model.View", - "id": "65f57c13-6e15-18af-9892-1d47a205fba1", - "x": 556, - "y": 640, - "width": 100, - "height": 116, - "style": "{}", - "z-index": 999 - }, - "editingView": false, - "dataProjection": "query-for-aggregate", - "createRules": [ - { - "_type": "viewStoreRule", - "operation": "CREATE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null, - "operator": "=" - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "updateRules": [ - { - "_type": "viewStoreRule", - "operation": "UPDATE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null, - "operator": "=" - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "deleteRules": [ - { - "_type": "viewStoreRule", - "operation": "DELETE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "rotateStatus": false, - "definitionId": "" - }, - "bc3d714f-e3f8-943e-b35d-976bb0f1bd0f": { - "_type": "org.uengine.modeling.model.Actor", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "description": null, - "id": "bc3d714f-e3f8-943e-b35d-976bb0f1bd0f", - "elementView": { - "_type": "org.uengine.modeling.model.Actor", - "height": 100, - "id": "bc3d714f-e3f8-943e-b35d-976bb0f1bd0f", - "style": "{}", - "width": 100, - "x": 475, - "y": 250 - }, - "innerAggregate": { - "command": [], - "event": [], - "external": [], - "policy": [], - "view": [] - }, - "name": "Admin", - "oldName": "", - "rotateStatus": false, - "displayName": "" - }, - "1ff02715-95b2-38ce-7a08-1d9744801560": { - "_type": "org.uengine.modeling.model.Actor", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "description": null, - "id": "1ff02715-95b2-38ce-7a08-1d9744801560", - "elementView": { - "_type": "org.uengine.modeling.model.Actor", - "height": 100, - "id": "1ff02715-95b2-38ce-7a08-1d9744801560", - "style": "{}", - "width": 100, - "x": 475, - "y": 380 - }, - "innerAggregate": { - "command": [], - "event": [], - "external": [], - "policy": [], - "view": [] - }, - "name": "Admin", - "oldName": "", - "rotateStatus": false, - "displayName": "" - }, - "e724b611-05fb-9b1c-1c85-156db2a5a928": { - "_type": "org.uengine.modeling.model.Actor", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "description": null, - "id": "e724b611-05fb-9b1c-1c85-156db2a5a928", - "elementView": { - "_type": "org.uengine.modeling.model.Actor", - "height": 100, - "id": "e724b611-05fb-9b1c-1c85-156db2a5a928", - "style": "{}", - "width": 100, - "x": 475, - "y": 510 - }, - "innerAggregate": { - "command": [], - "event": [], - "external": [], - "policy": [], - "view": [] - }, - "name": "Admin", - "oldName": "", - "rotateStatus": false, - "displayName": "" - }, - "d9ef505f-9ac6-27f9-e8c4-f9b2136a20cb": { - "_type": "org.uengine.modeling.model.Actor", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "description": null, - "id": "d9ef505f-9ac6-27f9-e8c4-f9b2136a20cb", - "elementView": { - "_type": "org.uengine.modeling.model.Actor", - "height": 100, - "id": "d9ef505f-9ac6-27f9-e8c4-f9b2136a20cb", - "style": "{}", - "width": 100, - "x": 475, - "y": 640 - }, - "innerAggregate": { - "command": [], - "event": [], - "external": [], - "policy": [], - "view": [] - }, - "name": "Admin", - "oldName": "", - "rotateStatus": false, - "displayName": "" - }, - "78937fb4-354e-7c45-ea1f-a9604081b75b": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "elementView": { - "angle": 0, - "height": 116, - "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "style": "{}", - "width": 100, - "x": 1329, - "y": 250, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "memberId", - "nameCamelCase": "memberId", - "namePascalCase": "MemberId", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "loanDuration", - "nameCamelCase": "loanDuration", - "namePascalCase": "LoanDuration", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "loanDate", - "nameCamelCase": "loanDate", - "namePascalCase": "LoanDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDueDate", - "nameCamelCase": "returnDueDate", - "namePascalCase": "ReturnDueDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "loanStatus", - "nameCamelCase": "loanStatus", - "namePascalCase": "LoanStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "LoanCreated", - "displayName": "대출 생성", - "nameCamelCase": "loanCreated", - "namePascalCase": "LoanCreated", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "visibility": "public" - }, - "efa0739f-ad74-5be2-0d5f-27a167cdc711": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "efa0739f-ad74-5be2-0d5f-27a167cdc711", - "elementView": { - "angle": 0, - "height": 116, - "id": "efa0739f-ad74-5be2-0d5f-27a167cdc711", - "style": "{}", - "width": 100, - "x": 1329, - "y": 380, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "extensionDuration", - "nameCamelCase": "extensionDuration", - "namePascalCase": "ExtensionDuration", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "newReturnDueDate", - "nameCamelCase": "newReturnDueDate", - "namePascalCase": "NewReturnDueDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "efa0739f-ad74-5be2-0d5f-27a167cdc711", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "LoanExtended", - "displayName": "대출 연장됨", - "nameCamelCase": "loanExtended", - "namePascalCase": "LoanExtended", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "visibility": "public" - }, - "ac75186c-693b-322d-9554-c112044993f4": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "ac75186c-693b-322d-9554-c112044993f4", - "elementView": { - "angle": 0, - "height": 116, - "id": "ac75186c-693b-322d-9554-c112044993f4", - "style": "{}", - "width": 100, - "x": 1329, - "y": 510, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDate", - "nameCamelCase": "returnDate", - "namePascalCase": "ReturnDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "nextStatus", - "nameCamelCase": "nextStatus", - "namePascalCase": "NextStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "ac75186c-693b-322d-9554-c112044993f4", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "LoanReturned", - "displayName": "대출 반납됨", - "nameCamelCase": "loanReturned", - "namePascalCase": "LoanReturned", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "visibility": "public" - }, - "83df6bbe-e74e-3765-06a7-c79af07cb94d": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "LoanCreated" - ], - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "controllerInfo": { - "method": "POST", - "apiPath": "/createloan" - }, - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "memberId", - "nameCamelCase": "memberId", - "namePascalCase": "MemberId", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "loanDuration", - "nameCamelCase": "loanDuration", - "namePascalCase": "LoanDuration", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "loanDate", - "nameCamelCase": "loanDate", - "namePascalCase": "LoanDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDueDate", - "nameCamelCase": "returnDueDate", - "namePascalCase": "ReturnDueDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "description": null, - "id": "83df6bbe-e74e-3765-06a7-c79af07cb94d", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 116, - "id": "83df6bbe-e74e-3765-06a7-c79af07cb94d", - "style": "{}", - "width": 100, - "x": 1141, - "y": 250, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "83df6bbe-e74e-3765-06a7-c79af07cb94d", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "CreateLoan", - "displayName": "대출 신청", - "nameCamelCase": "createLoan", - "namePascalCase": "CreateLoan", - "namePlural": "createLoans", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "POST" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist", - "examples": [ - { - "given": [ - { - "type": "Aggregate", - "name": "Loan", - "value": { - "loanId": null, - "member": { - "memberId": "MEMBER-001", - "name": "홍길동" - }, - "loanPeriod": null, - "loanStatus": "N/A", - "loanDate": null, - "returnDueDate": null, - "loanDuration": "N/A", - "bookId": { - "bookId": "BOOK-001", - "isbn": "9781234567890" - } - } - } - ], - "when": [ - { - "type": "Command", - "name": "CreateLoan", - "value": { - "memberId": "MEMBER-001", - "loanDuration": "7_DAYS", - "loanDate": "2023-11-01", - "returnDueDate": "2023-11-08" - } - } - ], - "then": [ - { - "type": "Event", - "name": "LoanCreated", - "value": { - "memberId": "MEMBER-001", - "loanDuration": "7_DAYS", - "loanDate": "2023-11-01", - "returnDueDate": "2023-11-08", - "loanStatus": "BORROWED" - } - } - ] - } - ], - "visibility": "public", - "oldName": "CreateLoan" - }, - "b524c993-e776-e8fe-2fb9-4654540d48fe": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "LoanExtended" - ], - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "controllerInfo": { - "method": "PUT" - }, - "fieldDescriptors": [ - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "extensionDuration", - "nameCamelCase": "extensionDuration", - "namePascalCase": "ExtensionDuration", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "description": null, - "id": "b524c993-e776-e8fe-2fb9-4654540d48fe", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 116, - "id": "b524c993-e776-e8fe-2fb9-4654540d48fe", - "style": "{}", - "width": 100, - "x": 1141, - "y": 380, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "b524c993-e776-e8fe-2fb9-4654540d48fe", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "ExtendLoan", - "displayName": "대출 연장", - "nameCamelCase": "extendLoan", - "namePascalCase": "ExtendLoan", - "namePlural": "extendLoans", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "PUT" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist", - "examples": [ - { - "given": [ - { - "type": "Aggregate", - "name": "Loan", - "value": { - "loanId": 1001, - "member": { - "memberId": "MEMBER-001", - "name": "홍길동" - }, - "loanPeriod": 7, - "loanStatus": "BORROWED", - "loanDate": "2023-11-01", - "returnDueDate": "2023-11-08", - "loanDuration": "7_DAYS", - "bookId": { - "bookId": "BOOK-001", - "isbn": "9781234567890" - } - } - } - ], - "when": [ - { - "type": "Command", - "name": "ExtendLoan", - "value": { - "extensionDuration": "7_DAYS" - } - } - ], - "then": [ - { - "type": "Event", - "name": "LoanExtended", - "value": { - "extensionDuration": "7_DAYS", - "newReturnDueDate": "2023-11-15" - } - } - ] - } - ], - "visibility": "public" - }, - "1179f8d5-304f-fc47-74d8-4f93b8129008": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "LoanReturned" - ], - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "controllerInfo": { - "method": "PUT" - }, - "fieldDescriptors": [], - "description": null, - "id": "1179f8d5-304f-fc47-74d8-4f93b8129008", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 116, - "id": "1179f8d5-304f-fc47-74d8-4f93b8129008", - "style": "{}", - "width": 100, - "x": 1141, - "y": 510, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "1179f8d5-304f-fc47-74d8-4f93b8129008", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "ReturnLoan", - "displayName": "대출 반납", - "nameCamelCase": "returnLoan", - "namePascalCase": "ReturnLoan", - "namePlural": "returnLoans", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "PUT" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist", - "examples": [ - { - "given": [ - { - "type": "Aggregate", - "name": "Loan", - "value": { - "loanId": 1001, - "member": { - "memberId": "MEMBER-001", - "name": "홍길동" - }, - "loanPeriod": 7, - "loanStatus": "BORROWED", - "loanDate": "2023-11-01", - "returnDueDate": "2023-11-08", - "loanDuration": "7_DAYS", - "bookId": { - "bookId": "BOOK-001", - "isbn": "9781234567890" - } - } - } - ], - "when": [ - { - "type": "Command", - "name": "ReturnLoan", - "value": {} - } - ], - "then": [ - { - "type": "Event", - "name": "LoanReturned", - "value": { - "returnDate": "2023-11-07", - "nextStatus": "AVAILABLE" - } - } - ] - } - ], - "visibility": "public" - }, - "ba4cf08a-138b-f78c-6beb-137aa4ce6c53": { - "_type": "org.uengine.modeling.model.View", - "id": "ba4cf08a-138b-f78c-6beb-137aa4ce6c53", - "visibility": "public", - "name": "LoanStatus", - "oldName": "", - "displayName": "대출 상태", - "namePascalCase": "LoanStatus", - "namePlural": "loanStatuses", - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "description": null, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "fieldDescriptors": [ - { - "_type": "org.uengine.model.FieldDescriptor", - "name": "id", - "className": "Long", - "nameCamelCase": "id", - "namePascalCase": "Id", - "isKey": true - } - ], - "queryParameters": [ - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "loanDate", - "nameCamelCase": "loanDate", - "namePascalCase": "LoanDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDueDate", - "nameCamelCase": "returnDueDate", - "namePascalCase": "ReturnDueDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "loanStatus", - "nameCamelCase": "loanStatus", - "namePascalCase": "LoanStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "queryOption": { - "apiPath": "", - "useDefaultUri": true, - "multipleResult": true - }, - "controllerInfo": { - "url": "" - }, - "elementView": { - "_type": "org.uengine.modeling.model.View", - "id": "ba4cf08a-138b-f78c-6beb-137aa4ce6c53", - "x": 1141, - "y": 640, - "width": 100, - "height": 116, - "style": "{}", - "z-index": 999 - }, - "editingView": false, - "dataProjection": "query-for-aggregate", - "createRules": [ - { - "_type": "viewStoreRule", - "operation": "CREATE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null, - "operator": "=" - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "updateRules": [ - { - "_type": "viewStoreRule", - "operation": "UPDATE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null, - "operator": "=" - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "deleteRules": [ - { - "_type": "viewStoreRule", - "operation": "DELETE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "rotateStatus": false, - "definitionId": "" - }, - "c0299480-37ae-dc00-eafe-8b423d09e34a": { - "_type": "org.uengine.modeling.model.View", - "id": "c0299480-37ae-dc00-eafe-8b423d09e34a", - "visibility": "public", - "name": "LoanDetails", - "oldName": "", - "displayName": "대출 세부 정보", - "namePascalCase": "LoanDetails", - "namePlural": "loanDetails", - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "description": null, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "fieldDescriptors": [ - { - "_type": "org.uengine.model.FieldDescriptor", - "name": "id", - "className": "Long", - "nameCamelCase": "id", - "namePascalCase": "Id", - "isKey": true - } - ], - "queryParameters": [ - { - "className": "Member", - "isCopy": false, - "isKey": false, - "name": "memberDetails", - "nameCamelCase": "memberDetails", - "namePascalCase": "MemberDetails", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "loanDate", - "nameCamelCase": "loanDate", - "namePascalCase": "LoanDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDueDate", - "nameCamelCase": "returnDueDate", - "namePascalCase": "ReturnDueDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "loanStatus", - "nameCamelCase": "loanStatus", - "namePascalCase": "LoanStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Integer", - "isCopy": false, - "isKey": false, - "name": "extensions", - "nameCamelCase": "extensions", - "namePascalCase": "Extensions", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "createdAt", - "nameCamelCase": "createdAt", - "namePascalCase": "CreatedAt", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "lastModifiedAt", - "nameCamelCase": "lastModifiedAt", - "namePascalCase": "LastModifiedAt", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "queryOption": { - "apiPath": "", - "useDefaultUri": true, - "multipleResult": false - }, - "controllerInfo": { - "url": "" - }, - "elementView": { - "_type": "org.uengine.modeling.model.View", - "id": "c0299480-37ae-dc00-eafe-8b423d09e34a", - "x": 1141, - "y": 770, - "width": 100, - "height": 116, - "style": "{}", - "z-index": 999 - }, - "editingView": false, - "dataProjection": "query-for-aggregate", - "createRules": [ - { - "_type": "viewStoreRule", - "operation": "CREATE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null, - "operator": "=" - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "updateRules": [ - { - "_type": "viewStoreRule", - "operation": "UPDATE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null, - "operator": "=" - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "deleteRules": [ - { - "_type": "viewStoreRule", - "operation": "DELETE", - "when": null, - "fieldMapping": [ - { - "viewField": null, - "eventField": null - } - ], - "where": [ - { - "viewField": null, - "eventField": null - } - ] - } - ], - "rotateStatus": false, - "definitionId": "" - }, - "c057a98f-46c0-406f-e1ef-9038a557fd9a": { - "_type": "org.uengine.modeling.model.Actor", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "description": null, - "id": "c057a98f-46c0-406f-e1ef-9038a557fd9a", - "elementView": { - "_type": "org.uengine.modeling.model.Actor", - "height": 100, - "id": "c057a98f-46c0-406f-e1ef-9038a557fd9a", - "style": "{}", - "width": 100, - "x": 1060, - "y": 250 - }, - "innerAggregate": { - "command": [], - "event": [], - "external": [], - "policy": [], - "view": [] - }, - "name": "회원", - "oldName": "", - "rotateStatus": false, - "displayName": "" - }, - "d0141724-e51b-ddf3-3c84-c245b9846a65": { - "_type": "org.uengine.modeling.model.Actor", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "description": null, - "id": "d0141724-e51b-ddf3-3c84-c245b9846a65", - "elementView": { - "_type": "org.uengine.modeling.model.Actor", - "height": 100, - "id": "d0141724-e51b-ddf3-3c84-c245b9846a65", - "style": "{}", - "width": 100, - "x": 1060, - "y": 380 - }, - "innerAggregate": { - "command": [], - "event": [], - "external": [], - "policy": [], - "view": [] - }, - "name": "회원", - "oldName": "", - "rotateStatus": false, - "displayName": "" - }, - "354b804b-3689-6240-d6ae-c78607e2bb89": { - "_type": "org.uengine.modeling.model.Actor", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "description": null, - "id": "354b804b-3689-6240-d6ae-c78607e2bb89", - "elementView": { - "_type": "org.uengine.modeling.model.Actor", - "height": 100, - "id": "354b804b-3689-6240-d6ae-c78607e2bb89", - "style": "{}", - "width": 100, - "x": 1060, - "y": 510 - }, - "innerAggregate": { - "command": [], - "event": [], - "external": [], - "policy": [], - "view": [] - }, - "name": "회원", - "oldName": "", - "rotateStatus": false, - "displayName": "" - }, - "67f61a87-74f8-a9ea-6a9e-5a605e1a25d4": { - "_type": "org.uengine.modeling.model.Actor", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "description": null, - "id": "67f61a87-74f8-a9ea-6a9e-5a605e1a25d4", - "elementView": { - "_type": "org.uengine.modeling.model.Actor", - "height": 100, - "id": "67f61a87-74f8-a9ea-6a9e-5a605e1a25d4", - "style": "{}", - "width": 100, - "x": 1060, - "y": 640 - }, - "innerAggregate": { - "command": [], - "event": [], - "external": [], - "policy": [], - "view": [] - }, - "name": "회원", - "oldName": "", - "rotateStatus": false, - "displayName": "" - }, - "e17a9268-9129-caea-2c8f-2849d2c9e063": { - "_type": "org.uengine.modeling.model.Actor", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "description": null, - "id": "e17a9268-9129-caea-2c8f-2849d2c9e063", - "elementView": { - "_type": "org.uengine.modeling.model.Actor", - "height": 100, - "id": "e17a9268-9129-caea-2c8f-2849d2c9e063", - "style": "{}", - "width": 100, - "x": 1060, - "y": 770 - }, - "innerAggregate": { - "command": [], - "event": [], - "external": [], - "policy": [], - "view": [] - }, - "name": "회원", - "oldName": "", - "rotateStatus": false, - "displayName": "" - }, - "dcfad35d-4305-25a5-993d-9426931c4ee6": { - "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "description": "도서 대출 후 상태를 '대출중'으로 변경", - "elementView": { - "height": 116, - "width": 100, - "x": 425, - "y": 240, - "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "style": "{}", - "_type": "org.uengine.modeling.model.Policy" - }, - "fieldDescriptors": [], - "hexagonalView": { - "height": 20, - "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "style": "{}", - "subWidth": 100, - "width": 20, - "_type": "org.uengine.modeling.model.PolicyHexagonal" - }, - "isSaga": false, - "name": "UpdateLoanBookStatusPolicy", - "displayName": "대출 도서 상태 변경", - "nameCamelCase": "updateLoanBookStatusPolicy", - "namePascalCase": "UpdateLoanBookStatusPolicy", - "namePlural": "updateLoanBookStatusPolicies", - "oldName": "", - "rotateStatus": false, - "_type": "org.uengine.modeling.model.Policy" - }, - "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0": { - "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "description": "도서 반납 후 상태를 '대출가능'으로 변경", - "elementView": { - "height": 116, - "width": 100, - "x": 425, - "y": 472, - "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "style": "{}", - "_type": "org.uengine.modeling.model.Policy" - }, - "fieldDescriptors": [], - "hexagonalView": { - "height": 20, - "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "style": "{}", - "subWidth": 100, - "width": 20, - "_type": "org.uengine.modeling.model.PolicyHexagonal" - }, - "isSaga": false, - "name": "ReturnBookStatusPolicy", - "displayName": "반납 도서 상태 변경", - "nameCamelCase": "returnBookStatusPolicy", - "namePascalCase": "ReturnBookStatusPolicy", - "namePlural": "returnBookStatusPolicies", - "oldName": "", - "rotateStatus": false, - "_type": "org.uengine.modeling.model.Policy" - } - }, - "relations": { - "8e86c434-1dae-0ebd-04ae-b81e3646d927": { - "_type": "org.uengine.modeling.model.Relation", - "name": "", - "id": "8e86c434-1dae-0ebd-04ae-b81e3646d927", - "sourceElement": { - "aggregateRoot": { - "_type": "org.uengine.modeling.model.AggregateRoot", - "fieldDescriptors": [ - { - "className": "Long", - "isCopy": false, - "isKey": true, - "name": "loanId", - "nameCamelCase": "loanId", - "namePascalCase": "LoanId", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Member", - "isCopy": false, - "isKey": false, - "name": "member", - "nameCamelCase": "member", - "namePascalCase": "Member", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Integer", - "isCopy": false, - "isKey": false, - "name": "loanPeriod", - "nameCamelCase": "loanPeriod", - "namePascalCase": "LoanPeriod", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "loanStatus", - "nameCamelCase": "loanStatus", - "namePascalCase": "LoanStatus", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "loanDate", - "nameCamelCase": "loanDate", - "namePascalCase": "LoanDate", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDueDate", - "nameCamelCase": "returnDueDate", - "namePascalCase": "ReturnDueDate", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "loanDuration", - "nameCamelCase": "loanDuration", - "namePascalCase": "LoanDuration", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "entities": { - "elements": { - "30397330-2606-86f2-57f4-bf677bae16dc": { - "_type": "org.uengine.uml.model.Class", - "id": "30397330-2606-86f2-57f4-bf677bae16dc", - "name": "Loan", - "namePascalCase": "Loan", - "nameCamelCase": "loan", - "namePlural": "Loans", - "fieldDescriptors": [ - { - "className": "Long", - "isCopy": false, - "isKey": true, - "name": "loanId", - "displayName": "", - "nameCamelCase": "loanId", - "namePascalCase": "LoanId", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Member", - "isCopy": false, - "isKey": false, - "name": "member", - "displayName": "", - "nameCamelCase": "member", - "namePascalCase": "Member", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Integer", - "isCopy": false, - "isKey": false, - "name": "loanPeriod", - "displayName": "", - "nameCamelCase": "loanPeriod", - "namePascalCase": "LoanPeriod", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "loanStatus", - "displayName": "", - "nameCamelCase": "loanStatus", - "namePascalCase": "LoanStatus", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "loanDate", - "displayName": "", - "nameCamelCase": "loanDate", - "namePascalCase": "LoanDate", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDueDate", - "displayName": "", - "nameCamelCase": "returnDueDate", - "namePascalCase": "ReturnDueDate", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "loanDuration", - "displayName": "", - "nameCamelCase": "loanDuration", - "namePascalCase": "LoanDuration", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - } - ], - "operations": [], - "elementView": { - "_type": "org.uengine.uml.model.Class", - "id": "30397330-2606-86f2-57f4-bf677bae16dc", - "x": 200, - "y": 200, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 120, - "fieldH": 90, - "methodH": 30 - }, - "selected": false, - "relations": [], - "parentOperations": [], - "relationType": null, - "isVO": false, - "isAbstract": false, - "isInterface": false, - "isAggregateRoot": true, - "parentId": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "09ee5a03-4449-1bde-3705-35c2ca198880": { - "_type": "org.uengine.uml.model.vo.Class", - "id": "09ee5a03-4449-1bde-3705-35c2ca198880", - "name": "Member", - "displayName": "회원", - "namePascalCase": "Member", - "nameCamelCase": "member", - "fieldDescriptors": [ - { - "className": "String", - "isKey": false, - "label": "- memberId: String", - "name": "memberId", - "nameCamelCase": "memberId", - "namePascalCase": "MemberId", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isKey": false, - "label": "- name: String", - "name": "name", - "nameCamelCase": "name", - "namePascalCase": "Name", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "operations": [], - "elementView": { - "_type": "org.uengine.uml.model.vo.address.Class", - "id": "09ee5a03-4449-1bde-3705-35c2ca198880", - "x": 700, - "y": 152, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 170, - "fieldH": 150, - "methodH": 30 - }, - "selected": false, - "parentOperations": [], - "relationType": null, - "isVO": true, - "relations": [], - "groupElement": null, - "isAggregateRoot": false, - "namePlural": "Members", - "isAbstract": false, - "isInterface": false - }, - "bfdf118a-ad46-c0e3-2ae4-d0372b9d8361": { - "_type": "org.uengine.uml.model.enum", - "id": "bfdf118a-ad46-c0e3-2ae4-d0372b9d8361", - "name": "LoanStatus", - "displayName": "대출 상태", - "nameCamelCase": "loanStatus", - "namePascalCase": "LoanStatus", - "namePlural": "loanStatuses", - "elementView": { - "_type": "org.uengine.uml.model.enum", - "id": "bfdf118a-ad46-c0e3-2ae4-d0372b9d8361", - "x": 700, - "y": 456, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 50 - }, - "selected": false, - "items": [ - { - "value": "BORROWED" - }, - { - "value": "OVERDUE" - }, - { - "value": "RETURNED" - } - ], - "useKeyValue": false, - "relations": [] - }, - "8c1b2fee-54a7-b460-486a-1453593fac3f": { - "_type": "org.uengine.uml.model.enum", - "id": "8c1b2fee-54a7-b460-486a-1453593fac3f", - "name": "LoanDuration", - "displayName": "대출 기간 옵션", - "nameCamelCase": "loanDuration", - "namePascalCase": "LoanDuration", - "namePlural": "loanDurations", - "elementView": { - "_type": "org.uengine.uml.model.enum", - "id": "8c1b2fee-54a7-b460-486a-1453593fac3f", - "x": 950, - "y": 456, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 50 - }, - "selected": false, - "items": [ - { - "value": "7_DAYS" - }, - { - "value": "14_DAYS" - }, - { - "value": "30_DAYS" - } - ], - "useKeyValue": false, - "relations": [] - } - }, - "relations": {} - }, - "operations": [] - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "name": "85c498d4-39ed-5546-59b8-8eaaf33cffc8", - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "commands": [], - "description": null, - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2", - "elementView": { - "_type": "org.uengine.modeling.model.Aggregate", - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2", - "x": 1235, - "y": 450, - "width": 130, - "height": 400 - }, - "events": [], - "hexagonalView": { - "_type": "org.uengine.modeling.model.AggregateHexagonal", - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2", - "x": 0, - "y": 0, - "subWidth": 0, - "width": 0 - }, - "name": "Loan", - "displayName": "대출", - "nameCamelCase": "loan", - "namePascalCase": "Loan", - "namePlural": "loans", - "rotateStatus": false, - "selected": false, - "_type": "org.uengine.modeling.model.Aggregate" - }, - "targetElement": { - "aggregateRoot": { - "_type": "org.uengine.modeling.model.AggregateRoot", - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": true, - "name": "bookId", - "nameCamelCase": "bookId", - "namePascalCase": "BookId", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "title", - "nameCamelCase": "title", - "namePascalCase": "Title", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "isbn", - "nameCamelCase": "isbn", - "namePascalCase": "Isbn", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "author", - "nameCamelCase": "author", - "namePascalCase": "Author", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "publisher", - "nameCamelCase": "publisher", - "namePascalCase": "Publisher", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Category", - "isCopy": false, - "isKey": false, - "name": "category", - "nameCamelCase": "category", - "namePascalCase": "Category", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "nameCamelCase": "status", - "namePascalCase": "Status", - "displayName": "", - "referenceClass": null, - "isOverrideField": false, - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "entities": { - "elements": { - "0a22d0ce-0f1d-80fa-42b3-19647aa41149": { - "_type": "org.uengine.uml.model.Class", - "id": "0a22d0ce-0f1d-80fa-42b3-19647aa41149", - "name": "Book", - "namePascalCase": "Book", - "nameCamelCase": "book", - "namePlural": "Books", - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": true, - "name": "bookId", - "displayName": "", - "nameCamelCase": "bookId", - "namePascalCase": "BookId", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "title", - "displayName": "", - "nameCamelCase": "title", - "namePascalCase": "Title", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "isbn", - "displayName": "", - "nameCamelCase": "isbn", - "namePascalCase": "Isbn", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "author", - "displayName": "", - "nameCamelCase": "author", - "namePascalCase": "Author", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "publisher", - "displayName": "", - "nameCamelCase": "publisher", - "namePascalCase": "Publisher", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Category", - "isCopy": false, - "isKey": false, - "name": "category", - "displayName": "", - "nameCamelCase": "category", - "namePascalCase": "Category", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - }, - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "displayName": "", - "nameCamelCase": "status", - "namePascalCase": "Status", - "_type": "org.uengine.model.FieldDescriptor", - "inputUI": null, - "options": null - } - ], - "operations": [], - "elementView": { - "_type": "org.uengine.uml.model.Class", - "id": "0a22d0ce-0f1d-80fa-42b3-19647aa41149", - "x": 200, - "y": 200, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 120, - "fieldH": 90, - "methodH": 30 - }, - "selected": false, - "relations": [], - "parentOperations": [], - "relationType": null, - "isVO": false, - "isAbstract": false, - "isInterface": false, - "isAggregateRoot": true, - "parentId": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "e029780c-da79-3641-c1f3-8e45ebd5bfb7": { - "_type": "org.uengine.uml.model.enum", - "id": "e029780c-da79-3641-c1f3-8e45ebd5bfb7", - "name": "Category", - "displayName": "도서 카테고리", - "nameCamelCase": "category", - "namePascalCase": "Category", - "namePlural": "categories", - "elementView": { - "_type": "org.uengine.uml.model.enum", - "id": "e029780c-da79-3641-c1f3-8e45ebd5bfb7", - "x": 700, - "y": 456, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 50 - }, - "selected": false, - "items": [ - { - "value": "NOVEL" - }, - { - "value": "NONFICTION" - }, - { - "value": "ACADEMIC" - }, - { - "value": "MAGAZINE" - } - ], - "useKeyValue": false, - "relations": [] - }, - "3abb79e5-1456-e11b-560b-1483b5807a68": { - "_type": "org.uengine.uml.model.enum", - "id": "3abb79e5-1456-e11b-560b-1483b5807a68", - "name": "Status", - "displayName": "도서 상태", - "nameCamelCase": "status", - "namePascalCase": "Status", - "namePlural": "statuses", - "elementView": { - "_type": "org.uengine.uml.model.enum", - "id": "3abb79e5-1456-e11b-560b-1483b5807a68", - "x": 950, - "y": 456, - "width": 200, - "height": 100, - "style": "{}", - "titleH": 50, - "subEdgeH": 50 - }, - "selected": false, - "items": [ - { - "value": "AVAILABLE" - }, - { - "value": "BORROWED" - }, - { - "value": "RESERVED" - }, - { - "value": "DISCARDED" - } - ], - "useKeyValue": false, - "relations": [] - } - }, - "relations": {} - }, - "operations": [] - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "name": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741", - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "commands": [], - "description": null, - "id": "554241df-8091-4819-87d3-8fa38d18deaa", - "elementView": { - "_type": "org.uengine.modeling.model.Aggregate", - "id": "554241df-8091-4819-87d3-8fa38d18deaa", - "x": 650, - "y": 450, - "width": 130, - "height": 400 - }, - "events": [], - "hexagonalView": { - "_type": "org.uengine.modeling.model.AggregateHexagonal", - "id": "554241df-8091-4819-87d3-8fa38d18deaa", - "x": 0, - "y": 0, - "subWidth": 0, - "width": 0 - }, - "name": "Book", - "displayName": "도서", - "nameCamelCase": "book", - "namePascalCase": "Book", - "namePlural": "books", - "rotateStatus": false, - "selected": false, - "_type": "org.uengine.modeling.model.Aggregate" - }, - "from": "f8dc3056-6183-539a-7f20-68681ddcc8a2", - "to": "554241df-8091-4819-87d3-8fa38d18deaa", - "relationView": { - "id": "8e86c434-1dae-0ebd-04ae-b81e3646d927", - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "from": "f8dc3056-6183-539a-7f20-68681ddcc8a2", - "to": "554241df-8091-4819-87d3-8fa38d18deaa", - "needReconnect": true, - "value": "[[1170,524],[944,524],[944,456],[715,456]]" - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.RelationHexagonal", - "from": "f8dc3056-6183-539a-7f20-68681ddcc8a2", - "id": "8e86c434-1dae-0ebd-04ae-b81e3646d927", - "needReconnect": true, - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "to": "554241df-8091-4819-87d3-8fa38d18deaa", - "value": null - }, - "sourceMultiplicity": "1", - "targetMultiplicity": "1", - "displayName": "" - }, - "abdff6e1-deb4-4dea-426c-3c0b32661397": { - "_type": "org.uengine.modeling.model.Relation", - "name": "", - "id": "abdff6e1-deb4-4dea-426c-3c0b32661397", - "sourceElement": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "BookCreated" - ], - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "controllerInfo": { - "method": "POST" - }, - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "title", - "nameCamelCase": "title", - "namePascalCase": "Title", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "isbn", - "nameCamelCase": "isbn", - "namePascalCase": "Isbn", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "author", - "nameCamelCase": "author", - "namePascalCase": "Author", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "publisher", - "nameCamelCase": "publisher", - "namePascalCase": "Publisher", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Category", - "isCopy": false, - "isKey": false, - "name": "category", - "nameCamelCase": "category", - "namePascalCase": "Category", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "description": null, - "id": "fcdfa519-b23b-a129-296b-90b34d98a7db", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 115, - "id": "fcdfa519-b23b-a129-296b-90b34d98a7db", - "style": "{}", - "width": 100, - "x": 556, - "y": 250, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "fcdfa519-b23b-a129-296b-90b34d98a7db", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "CreateBook", - "displayName": "도서 등록", - "nameCamelCase": "createBook", - "namePascalCase": "CreateBook", - "namePlural": "createBooks", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "POST" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist" - }, - "targetElement": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "5afcf0dc-5c3b-f67a-d273-fab421febc20", - "elementView": { - "angle": 0, - "height": 115, - "id": "5afcf0dc-5c3b-f67a-d273-fab421febc20", - "style": "{}", - "width": 100, - "x": 744, - "y": 250, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "title", - "nameCamelCase": "title", - "namePascalCase": "Title", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "isbn", - "nameCamelCase": "isbn", - "namePascalCase": "Isbn", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "author", - "nameCamelCase": "author", - "namePascalCase": "Author", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "publisher", - "nameCamelCase": "publisher", - "namePascalCase": "Publisher", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Category", - "isCopy": false, - "isKey": false, - "name": "category", - "nameCamelCase": "category", - "namePascalCase": "Category", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "nameCamelCase": "status", - "namePascalCase": "Status", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "5afcf0dc-5c3b-f67a-d273-fab421febc20", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "BookCreated", - "displayName": "도서 등록됨", - "nameCamelCase": "bookCreated", - "namePascalCase": "BookCreated", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - } - }, - "from": "fcdfa519-b23b-a129-296b-90b34d98a7db", - "to": "5afcf0dc-5c3b-f67a-d273-fab421febc20", - "relationView": { - "id": "abdff6e1-deb4-4dea-426c-3c0b32661397", - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "from": "fcdfa519-b23b-a129-296b-90b34d98a7db", - "to": "5afcf0dc-5c3b-f67a-d273-fab421febc20", - "needReconnect": true, - "value": "[[606,252],[694,252]]" - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.RelationHexagonal", - "from": "fcdfa519-b23b-a129-296b-90b34d98a7db", - "id": "abdff6e1-deb4-4dea-426c-3c0b32661397", - "needReconnect": true, - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "to": "5afcf0dc-5c3b-f67a-d273-fab421febc20", - "value": null - }, - "sourceMultiplicity": "1", - "targetMultiplicity": "1", - "displayName": "" - }, - "347c91c4-3478-cef4-4493-208a8a50dafb": { - "_type": "org.uengine.modeling.model.Relation", - "name": "", - "id": "347c91c4-3478-cef4-4493-208a8a50dafb", - "sourceElement": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "BookStatusChanged" - ], - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "controllerInfo": { - "method": "PUT" - }, - "fieldDescriptors": [ - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "nameCamelCase": "status", - "namePascalCase": "Status", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "reason", - "nameCamelCase": "reason", - "namePascalCase": "Reason", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "description": null, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 115, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "style": "{}", - "width": 100, - "x": 556, - "y": 380, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "ChangeBookStatus", - "displayName": "도서 상태 변경", - "nameCamelCase": "changeBookStatus", - "namePascalCase": "ChangeBookStatus", - "namePlural": "changeBookStatuses", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "PUT" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist" - }, - "targetElement": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "a82665ee-dc60-21db-a491-8fffbc623007", - "elementView": { - "angle": 0, - "height": 115, - "id": "a82665ee-dc60-21db-a491-8fffbc623007", - "style": "{}", - "width": 100, - "x": 744, - "y": 380, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "previousStatus", - "nameCamelCase": "previousStatus", - "namePascalCase": "PreviousStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "currentStatus", - "nameCamelCase": "currentStatus", - "namePascalCase": "CurrentStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "changeDate", - "nameCamelCase": "changeDate", - "namePascalCase": "ChangeDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "reason", - "nameCamelCase": "reason", - "namePascalCase": "Reason", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "a82665ee-dc60-21db-a491-8fffbc623007", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "BookStatusChanged", - "displayName": "도서 상태 변경됨", - "nameCamelCase": "bookStatusChanged", - "namePascalCase": "BookStatusChanged", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - } - }, - "from": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "to": "a82665ee-dc60-21db-a491-8fffbc623007", - "relationView": { - "id": "347c91c4-3478-cef4-4493-208a8a50dafb", - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "from": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "to": "a82665ee-dc60-21db-a491-8fffbc623007", - "needReconnect": true, - "value": "[[606,380],[694,380]]" - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.RelationHexagonal", - "from": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "id": "347c91c4-3478-cef4-4493-208a8a50dafb", - "needReconnect": true, - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "to": "a82665ee-dc60-21db-a491-8fffbc623007", - "value": null - }, - "sourceMultiplicity": "1", - "targetMultiplicity": "1", - "displayName": "" - }, - "295dd65b-874b-00ae-910f-8eba75db08f1": { - "_type": "org.uengine.modeling.model.Relation", - "name": "", - "id": "295dd65b-874b-00ae-910f-8eba75db08f1", - "sourceElement": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "LoanCreated" - ], - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "controllerInfo": { - "method": "POST" - }, - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "memberId", - "nameCamelCase": "memberId", - "namePascalCase": "MemberId", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "loanDuration", - "nameCamelCase": "loanDuration", - "namePascalCase": "LoanDuration", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "loanDate", - "nameCamelCase": "loanDate", - "namePascalCase": "LoanDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDueDate", - "nameCamelCase": "returnDueDate", - "namePascalCase": "ReturnDueDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "description": null, - "id": "83df6bbe-e74e-3765-06a7-c79af07cb94d", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 115, - "id": "83df6bbe-e74e-3765-06a7-c79af07cb94d", - "style": "{}", - "width": 100, - "x": 1141, - "y": 250, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "83df6bbe-e74e-3765-06a7-c79af07cb94d", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "CreateLoan", - "displayName": "대출 신청", - "nameCamelCase": "createLoan", - "namePascalCase": "CreateLoan", - "namePlural": "createLoans", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "POST" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist" - }, - "targetElement": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "elementView": { - "angle": 0, - "height": 115, - "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "style": "{}", - "width": 100, - "x": 1329, - "y": 250, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "memberId", - "nameCamelCase": "memberId", - "namePascalCase": "MemberId", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "loanDuration", - "nameCamelCase": "loanDuration", - "namePascalCase": "LoanDuration", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "loanDate", - "nameCamelCase": "loanDate", - "namePascalCase": "LoanDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDueDate", - "nameCamelCase": "returnDueDate", - "namePascalCase": "ReturnDueDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "loanStatus", - "nameCamelCase": "loanStatus", - "namePascalCase": "LoanStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "LoanCreated", - "displayName": "대출 생성", - "nameCamelCase": "loanCreated", - "namePascalCase": "LoanCreated", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - } - }, - "from": "83df6bbe-e74e-3765-06a7-c79af07cb94d", - "to": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "relationView": { - "id": "295dd65b-874b-00ae-910f-8eba75db08f1", - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "from": "83df6bbe-e74e-3765-06a7-c79af07cb94d", - "to": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "needReconnect": true, - "value": "[[1191,252],[1279,252]]" - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.RelationHexagonal", - "from": "83df6bbe-e74e-3765-06a7-c79af07cb94d", - "id": "295dd65b-874b-00ae-910f-8eba75db08f1", - "needReconnect": true, - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "to": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "value": null - }, - "sourceMultiplicity": "1", - "targetMultiplicity": "1", - "displayName": "" - }, - "2f10ed41-ab75-4f4d-68ab-526c59d76ee2": { - "_type": "org.uengine.modeling.model.Relation", - "name": "", - "id": "2f10ed41-ab75-4f4d-68ab-526c59d76ee2", - "sourceElement": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "LoanExtended" - ], - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "controllerInfo": { - "method": "PUT" - }, - "fieldDescriptors": [ - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "extensionDuration", - "nameCamelCase": "extensionDuration", - "namePascalCase": "ExtensionDuration", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "description": null, - "id": "b524c993-e776-e8fe-2fb9-4654540d48fe", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 115, - "id": "b524c993-e776-e8fe-2fb9-4654540d48fe", - "style": "{}", - "width": 100, - "x": 1141, - "y": 380, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "b524c993-e776-e8fe-2fb9-4654540d48fe", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "ExtendLoan", - "displayName": "대출 연장", - "nameCamelCase": "extendLoan", - "namePascalCase": "ExtendLoan", - "namePlural": "extendLoans", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "PUT" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist" - }, - "targetElement": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "efa0739f-ad74-5be2-0d5f-27a167cdc711", - "elementView": { - "angle": 0, - "height": 115, - "id": "efa0739f-ad74-5be2-0d5f-27a167cdc711", - "style": "{}", - "width": 100, - "x": 1329, - "y": 380, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "extensionDuration", - "nameCamelCase": "extensionDuration", - "namePascalCase": "ExtensionDuration", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "newReturnDueDate", - "nameCamelCase": "newReturnDueDate", - "namePascalCase": "NewReturnDueDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "efa0739f-ad74-5be2-0d5f-27a167cdc711", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "LoanExtended", - "displayName": "대출 연장됨", - "nameCamelCase": "loanExtended", - "namePascalCase": "LoanExtended", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - } - }, - "from": "b524c993-e776-e8fe-2fb9-4654540d48fe", - "to": "efa0739f-ad74-5be2-0d5f-27a167cdc711", - "relationView": { - "id": "2f10ed41-ab75-4f4d-68ab-526c59d76ee2", - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "from": "b524c993-e776-e8fe-2fb9-4654540d48fe", - "to": "efa0739f-ad74-5be2-0d5f-27a167cdc711", - "needReconnect": true, - "value": "[[1191,380],[1279,380]]" - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.RelationHexagonal", - "from": "b524c993-e776-e8fe-2fb9-4654540d48fe", - "id": "2f10ed41-ab75-4f4d-68ab-526c59d76ee2", - "needReconnect": true, - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "to": "efa0739f-ad74-5be2-0d5f-27a167cdc711", - "value": null - }, - "sourceMultiplicity": "1", - "targetMultiplicity": "1", - "displayName": "" - }, - "20476c5e-0541-5f9d-d188-02fce5fe93cd": { - "_type": "org.uengine.modeling.model.Relation", - "name": "", - "id": "20476c5e-0541-5f9d-d188-02fce5fe93cd", - "sourceElement": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "LoanReturned" - ], - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - }, - "controllerInfo": { - "method": "PUT" - }, - "fieldDescriptors": [], - "description": null, - "id": "1179f8d5-304f-fc47-74d8-4f93b8129008", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 115, - "id": "1179f8d5-304f-fc47-74d8-4f93b8129008", - "style": "{}", - "width": 100, - "x": 1141, - "y": 510, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "1179f8d5-304f-fc47-74d8-4f93b8129008", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "ReturnLoan", - "displayName": "대출 반납", - "nameCamelCase": "returnLoan", - "namePascalCase": "ReturnLoan", - "namePlural": "returnLoans", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "PUT" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist" - }, - "targetElement": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "ac75186c-693b-322d-9554-c112044993f4", - "elementView": { - "angle": 0, - "height": 115, - "id": "ac75186c-693b-322d-9554-c112044993f4", - "style": "{}", - "width": 100, - "x": 1329, - "y": 510, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDate", - "nameCamelCase": "returnDate", - "namePascalCase": "ReturnDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "nextStatus", - "nameCamelCase": "nextStatus", - "namePascalCase": "NextStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "ac75186c-693b-322d-9554-c112044993f4", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "LoanReturned", - "displayName": "대출 반납됨", - "nameCamelCase": "loanReturned", - "namePascalCase": "LoanReturned", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - } - }, - "from": "1179f8d5-304f-fc47-74d8-4f93b8129008", - "to": "ac75186c-693b-322d-9554-c112044993f4", - "relationView": { - "id": "20476c5e-0541-5f9d-d188-02fce5fe93cd", - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "from": "1179f8d5-304f-fc47-74d8-4f93b8129008", - "to": "ac75186c-693b-322d-9554-c112044993f4", - "needReconnect": true, - "value": "[[1191,512],[1279,512]]" - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.RelationHexagonal", - "from": "1179f8d5-304f-fc47-74d8-4f93b8129008", - "id": "20476c5e-0541-5f9d-d188-02fce5fe93cd", - "needReconnect": true, - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "to": "ac75186c-693b-322d-9554-c112044993f4", - "value": null - }, - "sourceMultiplicity": "1", - "targetMultiplicity": "1", - "displayName": "" - }, - "e20354ba-41ff-5f16-f2e2-40459087191e": { - "_type": "org.uengine.modeling.model.Relation", - "name": "", - "id": "e20354ba-41ff-5f16-f2e2-40459087191e", - "sourceElement": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "elementView": { - "angle": 0, - "height": 115, - "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "style": "{}", - "width": 100, - "x": 1329, - "y": 250, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "memberId", - "nameCamelCase": "memberId", - "namePascalCase": "MemberId", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanDuration", - "isCopy": false, - "isKey": false, - "name": "loanDuration", - "nameCamelCase": "loanDuration", - "namePascalCase": "LoanDuration", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "loanDate", - "nameCamelCase": "loanDate", - "namePascalCase": "LoanDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDueDate", - "nameCamelCase": "returnDueDate", - "namePascalCase": "ReturnDueDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "loanStatus", - "nameCamelCase": "loanStatus", - "namePascalCase": "LoanStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "LoanCreated", - "displayName": "대출 생성", - "nameCamelCase": "loanCreated", - "namePascalCase": "LoanCreated", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - } - }, - "targetElement": { - "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "description": "도서 대출 후 상태를 '대출중'으로 변경", - "elementView": { - "height": 115, - "width": 100, - "x": 437, - "y": 380, - "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "style": "{}", - "_type": "org.uengine.modeling.model.Policy" - }, - "fieldDescriptors": [], - "hexagonalView": { - "height": 20, - "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "style": "{}", - "subWidth": 100, - "width": 20, - "_type": "org.uengine.modeling.model.PolicyHexagonal" - }, - "isSaga": false, - "name": "UpdateLoanBookStatusPolicy", - "displayName": "대출 도서 상태 변경", - "nameCamelCase": "updateLoanBookStatusPolicy", - "namePascalCase": "UpdateLoanBookStatusPolicy", - "namePlural": "updateLoanBookStatusPolicies", - "oldName": "", - "rotateStatus": false, - "_type": "org.uengine.modeling.model.Policy" - }, - "from": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "to": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "relationView": { - "id": "e20354ba-41ff-5f16-f2e2-40459087191e", - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "from": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "to": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "needReconnect": true, - "value": "[[1328,192],[1328,136],[424,136],[424,182]]" - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.RelationHexagonal", - "from": "78937fb4-354e-7c45-ea1f-a9604081b75b", - "id": "e20354ba-41ff-5f16-f2e2-40459087191e", - "needReconnect": true, - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "to": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "value": null - }, - "sourceMultiplicity": "1", - "targetMultiplicity": "1", - "displayName": "" - }, - "78a22ec0-5533-0df2-f8be-c8492487e98d": { - "_type": "org.uengine.modeling.model.Relation", - "name": "", - "id": "78a22ec0-5533-0df2-f8be-c8492487e98d", - "sourceElement": { - "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "description": "도서 대출 후 상태를 '대출중'으로 변경", - "elementView": { - "height": 115, - "width": 100, - "x": 437, - "y": 380, - "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "style": "{}", - "_type": "org.uengine.modeling.model.Policy" - }, - "fieldDescriptors": [], - "hexagonalView": { - "height": 20, - "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "style": "{}", - "subWidth": 100, - "width": 20, - "_type": "org.uengine.modeling.model.PolicyHexagonal" - }, - "isSaga": false, - "name": "UpdateLoanBookStatusPolicy", - "displayName": "대출 도서 상태 변경", - "nameCamelCase": "updateLoanBookStatusPolicy", - "namePascalCase": "UpdateLoanBookStatusPolicy", - "namePlural": "updateLoanBookStatusPolicies", - "oldName": "", - "rotateStatus": false, - "_type": "org.uengine.modeling.model.Policy" - }, - "targetElement": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "BookStatusChanged" - ], - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "controllerInfo": { - "method": "PUT" - }, - "fieldDescriptors": [ - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "nameCamelCase": "status", - "namePascalCase": "Status", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "reason", - "nameCamelCase": "reason", - "namePascalCase": "Reason", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "description": null, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 115, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "style": "{}", - "width": 100, - "x": 556, - "y": 380, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "ChangeBookStatus", - "displayName": "도서 상태 변경", - "nameCamelCase": "changeBookStatus", - "namePascalCase": "ChangeBookStatus", - "namePlural": "changeBookStatuses", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "PUT" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist" - }, - "from": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "to": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "relationView": { - "id": "78a22ec0-5533-0df2-f8be-c8492487e98d", - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "from": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "to": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "needReconnect": true, - "value": "[[424,298],[424,380],[506,380]]" - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.RelationHexagonal", - "from": "dcfad35d-4305-25a5-993d-9426931c4ee6", - "id": "78a22ec0-5533-0df2-f8be-c8492487e98d", - "needReconnect": true, - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "to": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "value": null - }, - "sourceMultiplicity": "1", - "targetMultiplicity": "1", - "displayName": "" - }, - "a4abefcb-3ab3-c3d3-f730-4abb61c7073a": { - "_type": "org.uengine.modeling.model.Relation", - "name": "", - "id": "a4abefcb-3ab3-c3d3-f730-4abb61c7073a", - "sourceElement": { - "alertURL": "/static/image/symbol/alert-icon.png", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "checkAlert": true, - "description": null, - "id": "ac75186c-693b-322d-9554-c112044993f4", - "elementView": { - "angle": 0, - "height": 115, - "id": "ac75186c-693b-322d-9554-c112044993f4", - "style": "{}", - "width": 100, - "x": 1329, - "y": 510, - "_type": "org.uengine.modeling.model.Event" - }, - "fieldDescriptors": [ - { - "className": "Date", - "isCopy": false, - "isKey": false, - "name": "returnDate", - "nameCamelCase": "returnDate", - "namePascalCase": "ReturnDate", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "LoanStatus", - "isCopy": false, - "isKey": false, - "name": "nextStatus", - "nameCamelCase": "nextStatus", - "namePascalCase": "NextStatus", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "hexagonalView": { - "height": 0, - "id": "ac75186c-693b-322d-9554-c112044993f4", - "style": "{}", - "width": 0, - "x": 0, - "y": 0, - "_type": "org.uengine.modeling.model.EventHexagonal" - }, - "name": "LoanReturned", - "displayName": "대출 반납됨", - "nameCamelCase": "loanReturned", - "namePascalCase": "LoanReturned", - "namePlural": "", - "relationCommandInfo": [], - "relationPolicyInfo": [], - "rotateStatus": false, - "selected": false, - "trigger": "@PostPersist", - "_type": "org.uengine.modeling.model.Event", - "aggregate": { - "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" - }, - "boundedContext": { - "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" - } - }, - "targetElement": { - "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "description": "도서 반납 후 상태를 '대출가능'으로 변경", - "elementView": { - "height": 115, - "width": 100, - "x": 437, - "y": 380, - "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "style": "{}", - "_type": "org.uengine.modeling.model.Policy" - }, - "fieldDescriptors": [], - "hexagonalView": { - "height": 20, - "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "style": "{}", - "subWidth": 100, - "width": 20, - "_type": "org.uengine.modeling.model.PolicyHexagonal" - }, - "isSaga": false, - "name": "ReturnBookStatusPolicy", - "displayName": "반납 도서 상태 변경", - "nameCamelCase": "returnBookStatusPolicy", - "namePascalCase": "ReturnBookStatusPolicy", - "namePlural": "returnBookStatusPolicies", - "oldName": "", - "rotateStatus": false, - "_type": "org.uengine.modeling.model.Policy" - }, - "from": "ac75186c-693b-322d-9554-c112044993f4", - "to": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "relationView": { - "id": "a4abefcb-3ab3-c3d3-f730-4abb61c7073a", - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "from": "ac75186c-693b-322d-9554-c112044993f4", - "to": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "needReconnect": true, - "value": "[[1379,512],[1436,512],[1436,604],[424,584],[424,530]]" - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.RelationHexagonal", - "from": "ac75186c-693b-322d-9554-c112044993f4", - "id": "a4abefcb-3ab3-c3d3-f730-4abb61c7073a", - "needReconnect": true, - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "to": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "value": null - }, - "sourceMultiplicity": "1", - "targetMultiplicity": "1", - "displayName": "" - }, - "9f52f8ae-8acb-3af4-2c26-d11e0f3b9f2f": { - "_type": "org.uengine.modeling.model.Relation", - "name": "", - "id": "9f52f8ae-8acb-3af4-2c26-d11e0f3b9f2f", - "sourceElement": { - "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "description": "도서 반납 후 상태를 '대출가능'으로 변경", - "elementView": { - "height": 115, - "width": 100, - "x": 437, - "y": 380, - "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "style": "{}", - "_type": "org.uengine.modeling.model.Policy" - }, - "fieldDescriptors": [], - "hexagonalView": { - "height": 20, - "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "style": "{}", - "subWidth": 100, - "width": 20, - "_type": "org.uengine.modeling.model.PolicyHexagonal" - }, - "isSaga": false, - "name": "ReturnBookStatusPolicy", - "displayName": "반납 도서 상태 변경", - "nameCamelCase": "returnBookStatusPolicy", - "namePascalCase": "ReturnBookStatusPolicy", - "namePlural": "returnBookStatusPolicies", - "oldName": "", - "rotateStatus": false, - "_type": "org.uengine.modeling.model.Policy" - }, - "targetElement": { - "_type": "org.uengine.modeling.model.Command", - "outputEvents": [ - "BookStatusChanged" - ], - "aggregate": { - "id": "554241df-8091-4819-87d3-8fa38d18deaa" - }, - "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", - "boundedContext": { - "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" - }, - "controllerInfo": { - "method": "PUT" - }, - "fieldDescriptors": [ - { - "className": "Status", - "isCopy": false, - "isKey": false, - "name": "status", - "nameCamelCase": "status", - "namePascalCase": "Status", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - }, - { - "className": "String", - "isCopy": false, - "isKey": false, - "name": "reason", - "nameCamelCase": "reason", - "namePascalCase": "Reason", - "displayName": "", - "_type": "org.uengine.model.FieldDescriptor" - } - ], - "description": null, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "elementView": { - "_type": "org.uengine.modeling.model.Command", - "height": 115, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "style": "{}", - "width": 100, - "x": 556, - "y": 380, - "z-index": 999 - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.CommandHexagonal", - "height": 0, - "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "style": "{}", - "width": 0, - "x": 0, - "y": 0 - }, - "isRestRepository": false, - "name": "ChangeBookStatus", - "displayName": "도서 상태 변경", - "nameCamelCase": "changeBookStatus", - "namePascalCase": "ChangeBookStatus", - "namePlural": "changeBookStatuses", - "relationCommandInfo": [], - "relationEventInfo": [], - "restRepositoryInfo": { - "method": "PUT" - }, - "rotateStatus": false, - "selected": false, - "trigger": "@PrePersist" - }, - "from": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "to": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "relationView": { - "id": "9f52f8ae-8acb-3af4-2c26-d11e0f3b9f2f", - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "from": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "to": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "needReconnect": true, - "value": "[[424,414],[424,380],[506,380]]" - }, - "hexagonalView": { - "_type": "org.uengine.modeling.model.RelationHexagonal", - "from": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", - "id": "9f52f8ae-8acb-3af4-2c26-d11e0f3b9f2f", - "needReconnect": true, - "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", - "to": "ae7bd270-ac8c-7103-9866-c3e1867c019a", - "value": null - }, - "sourceMultiplicity": "1", - "targetMultiplicity": "1", - "displayName": "" - } - }, - "basePlatform": null, - "basePlatformConf": {}, - "toppingPlatforms": [], - "toppingPlatformsConf": {}, - "scm": { - "tag": null, - "org": null, - "repo": null, - "forkedOrg": null, - "forkedRepo": null - }, - "version": 3, - "k8sValue": { - "elements": {}, - "relations": {} - } -} \ No newline at end of file diff --git a/src/components/designer/modeling/generators/es-generators/mocks.js b/src/components/designer/modeling/generators/es-generators/mocks.js new file mode 100644 index 00000000..2afb685c --- /dev/null +++ b/src/components/designer/modeling/generators/es-generators/mocks.js @@ -0,0 +1,5425 @@ +/** + * @description 이벤트 스토밍 서비스 종류에 따라 테스트 가능한 이벤트 스토밍 값을 반환 + * + * @example 도서관 시나리오와 관련된 이벤트 스토밍 value 값을 반환 + * // 가능한 이벤트 스토밍 서비스 종류: librarySevice + * console.log(getEsValue("librarySevice")) + * + * @example command, event, view 타입 엘리먼트를 제외하고, 반환 + * // 이러한 일부 미완성된 반환은 중간 과정을 처리하는 생성기 테스트시에 유용할 수 있음 + * console.log(getEsValue("librarySevice", ['command', 'event', 'view'])) + * + * @example 템플릿 필터 키를 활용해서 BoundedContext 엘리먼트만 얻기 + * // 가능한 템플릿: remainOnlyBoundedContext, remainOnlyAggregate + * console.log(getEsValue("librarySevice", ['remainOnlyBoundedContext'])) + */ +export const getEsValue = (targetService="librarySevice", typesToExcludeFilter=[]) => { + let excludeFilterTemplate = [] + excludeFilterTemplate.remainOnlyBoundedContext = ["aggregate", "command", "event", "view", "actor", "policy"] + excludeFilterTemplate.remainOnlyAggregate = excludeFilterTemplate.remainOnlyBoundedContext.filter(type => type !== "aggregate") + + Object.keys(excludeFilterTemplate).forEach(key => { + if (typesToExcludeFilter.includes(key)) { + typesToExcludeFilter.push(...excludeFilterTemplate[key]) + } + }) + + + const targetEsValue = JSON.parse(JSON.stringify(esValues[targetService])) + const filteredElements = Object.values(targetEsValue.elements).filter(element => { + return !typesToExcludeFilter.some(type => element._type.toLowerCase().includes(type.toLowerCase())); + }); + + return { + ...targetEsValue, + elements: filteredElements + } +} + +const esValues = { + librarySevice: { + "elements": { + "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741": { + "_type": "org.uengine.modeling.model.BoundedContext", + "aggregates": [ + { + "id": "554241df-8091-4819-87d3-8fa38d18deaa" + } + ], + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "description": "'도서 관리' 화면에서는 새로운 도서를 등록하고 현재 보유한 도서들의 상태를 관리할 수 있어야 해. 도서 등록 시에는 도서명, ISBN, 저자, 출판사, 카테고리 정보를 입력받아야 해. ISBN은 13자리 숫자여야 하고 중복 확인이 필요해. 카테고리는 소설/비소설/학술/잡지 중에서 선택할 수 있어야 해. 등록된 도서는 처음에 '대출가능' 상태가 되고, 이후 대출/반납 상황에 따라 '대출중', '예약중' 상태로 자동으로 변경되어야 해. 도서가 훼손되거나 분실된 경우 '폐기' 처리가 가능해야 하며, 폐기된 도서는 더 이상 대출이 불가능해야 해. 각 도서별로 대출 이력과 상태 변경 이력을 조회할 수 있어야 하고, 이를 통해 도서의 대출 현황과 상태 변화를 추적할 수 있어야 해.", + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741", + "elementView": { + "_type": "org.uengine.modeling.model.BoundedContext", + "height": 590, + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741", + "style": "{}", + "width": 560, + "x": 650, + "y": 450 + }, + "gitURL": null, + "hexagonalView": { + "_type": "org.uengine.modeling.model.BoundedContextHexagonal", + "height": 350, + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741", + "style": "{}", + "width": 350, + "x": 235, + "y": 365 + }, + "members": [], + "name": "BookManagement", + "displayName": "도서 관리", + "oldName": "", + "policies": [], + "portGenerated": null, + "preferredPlatform": "template-spring-boot", + "preferredPlatformConf": {}, + "rotateStatus": false, + "tempId": "", + "templatePerElements": {}, + "views": [], + "definitionId": "163972132_es_9c3424a86507b5056f7433e4cbbf6f4a" + }, + "85c498d4-39ed-5546-59b8-8eaaf33cffc8": { + "_type": "org.uengine.modeling.model.BoundedContext", + "aggregates": [ + { + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" + } + ], + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "description": "'대출/반납' 화면에서는 회원이 도서를 대출하고 반납하는 것을 관리할 수 있어야 해. 대출 신청 시에는 회원번호와 이름으로 회원을 확인하고, 대출할 도서를 선택해야 해. 도서는 도서명이나 ISBN으로 검색할 수 있어야 해. 대출 기간은 7일/14일/30일 중에서 선택할 수 있어. 만약 대출하려는 도서가 이미 대출 중이라면, 예약 신청이 가능해야 해. 대출이 완료되면 해당 도서의 상태는 자동으로 '대출중'으로 변경되어야 해. 대출 현황 화면에서는 현재 대출 중인 도서들의 목록을 볼 수 있어야 해. 각 대출 건에 대해 대출일, 반납예정일, 현재 상태(대출중/연체/반납완료)를 확인할 수 있어야 하고, 대출 중인 도서는 연장이나 반납 처리가 가능해야 해. 도서가 반납되면 자동으로 해당 도서의 상태가 '대출가능'으로 변경되어야 해. 만약 예약자가 있는 도서가 반납되면, 해당 도서는 '예약중' 상태로 변경되어야 해.", + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8", + "elementView": { + "_type": "org.uengine.modeling.model.BoundedContext", + "height": 726, + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8", + "style": "{}", + "width": 560, + "x": 1235, + "y": 518 + }, + "gitURL": null, + "hexagonalView": { + "_type": "org.uengine.modeling.model.BoundedContextHexagonal", + "height": 350, + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8", + "style": "{}", + "width": 350, + "x": 235, + "y": 365 + }, + "members": [], + "name": "LoanManagement", + "displayName": "대출/반납 관리", + "oldName": "", + "policies": [], + "portGenerated": 8080, + "preferredPlatform": "template-spring-boot", + "preferredPlatformConf": {}, + "rotateStatus": false, + "tempId": "", + "templatePerElements": {}, + "views": [], + "definitionId": "163972132_es_9c3424a86507b5056f7433e4cbbf6f4a" + }, + "554241df-8091-4819-87d3-8fa38d18deaa": { + "aggregateRoot": { + "_type": "org.uengine.modeling.model.AggregateRoot", + "fieldDescriptors": [ + { + "className": "String", + "isCopy": false, + "isKey": true, + "name": "bookId", + "nameCamelCase": "bookId", + "namePascalCase": "BookId", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "title", + "nameCamelCase": "title", + "namePascalCase": "Title", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "isbn", + "nameCamelCase": "isbn", + "namePascalCase": "Isbn", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "author", + "nameCamelCase": "author", + "namePascalCase": "Author", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "publisher", + "nameCamelCase": "publisher", + "namePascalCase": "Publisher", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Category", + "isCopy": false, + "isKey": false, + "name": "category", + "nameCamelCase": "category", + "namePascalCase": "Category", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Status", + "isCopy": false, + "isKey": false, + "name": "status", + "nameCamelCase": "status", + "namePascalCase": "Status", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "entities": { + "elements": { + "0a22d0ce-0f1d-80fa-42b3-19647aa41149": { + "_type": "org.uengine.uml.model.Class", + "id": "0a22d0ce-0f1d-80fa-42b3-19647aa41149", + "name": "Book", + "namePascalCase": "Book", + "nameCamelCase": "book", + "namePlural": "Books", + "fieldDescriptors": [ + { + "className": "String", + "isCopy": false, + "isKey": true, + "name": "bookId", + "displayName": "", + "nameCamelCase": "bookId", + "namePascalCase": "BookId", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "title", + "displayName": "", + "nameCamelCase": "title", + "namePascalCase": "Title", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "isbn", + "displayName": "", + "nameCamelCase": "isbn", + "namePascalCase": "Isbn", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "author", + "displayName": "", + "nameCamelCase": "author", + "namePascalCase": "Author", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "publisher", + "displayName": "", + "nameCamelCase": "publisher", + "namePascalCase": "Publisher", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "Category", + "isCopy": false, + "isKey": false, + "name": "category", + "displayName": "", + "nameCamelCase": "category", + "namePascalCase": "Category", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "Status", + "isCopy": false, + "isKey": false, + "name": "status", + "displayName": "", + "nameCamelCase": "status", + "namePascalCase": "Status", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + } + ], + "operations": [], + "elementView": { + "_type": "org.uengine.uml.model.Class", + "id": "0a22d0ce-0f1d-80fa-42b3-19647aa41149", + "x": 200, + "y": 200, + "width": 200, + "height": 100, + "style": "{}", + "titleH": 50, + "subEdgeH": 120, + "fieldH": 90, + "methodH": 30 + }, + "selected": false, + "relations": [], + "parentOperations": [], + "relationType": null, + "isVO": false, + "isAbstract": false, + "isInterface": false, + "isAggregateRoot": true, + "parentId": "554241df-8091-4819-87d3-8fa38d18deaa" + }, + "e029780c-da79-3641-c1f3-8e45ebd5bfb7": { + "_type": "org.uengine.uml.model.enum", + "id": "e029780c-da79-3641-c1f3-8e45ebd5bfb7", + "name": "Category", + "displayName": "도서 카테고리", + "nameCamelCase": "category", + "namePascalCase": "Category", + "namePlural": "categories", + "elementView": { + "_type": "org.uengine.uml.model.enum", + "id": "e029780c-da79-3641-c1f3-8e45ebd5bfb7", + "x": 700, + "y": 456, + "width": 200, + "height": 100, + "style": "{}", + "titleH": 50, + "subEdgeH": 50 + }, + "selected": false, + "items": [ + { + "value": "NOVEL" + }, + { + "value": "NONFICTION" + }, + { + "value": "ACADEMIC" + }, + { + "value": "MAGAZINE" + } + ], + "useKeyValue": false, + "relations": [] + }, + "3abb79e5-1456-e11b-560b-1483b5807a68": { + "_type": "org.uengine.uml.model.enum", + "id": "3abb79e5-1456-e11b-560b-1483b5807a68", + "name": "Status", + "displayName": "도서 상태", + "nameCamelCase": "status", + "namePascalCase": "Status", + "namePlural": "statuses", + "elementView": { + "_type": "org.uengine.uml.model.enum", + "id": "3abb79e5-1456-e11b-560b-1483b5807a68", + "x": 950, + "y": 456, + "width": 200, + "height": 100, + "style": "{}", + "titleH": 50, + "subEdgeH": 50 + }, + "selected": false, + "items": [ + { + "value": "AVAILABLE" + }, + { + "value": "BORROWED" + }, + { + "value": "RESERVED" + }, + { + "value": "DISCARDED" + } + ], + "useKeyValue": false, + "relations": [] + } + }, + "relations": {} + }, + "operations": [] + }, + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "name": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741", + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + }, + "commands": [], + "description": null, + "id": "554241df-8091-4819-87d3-8fa38d18deaa", + "elementView": { + "_type": "org.uengine.modeling.model.Aggregate", + "id": "554241df-8091-4819-87d3-8fa38d18deaa", + "x": 650, + "y": 450, + "width": 130, + "height": 400 + }, + "events": [], + "hexagonalView": { + "_type": "org.uengine.modeling.model.AggregateHexagonal", + "id": "554241df-8091-4819-87d3-8fa38d18deaa", + "x": 0, + "y": 0, + "subWidth": 0, + "width": 0 + }, + "name": "Book", + "displayName": "도서", + "nameCamelCase": "book", + "namePascalCase": "Book", + "namePlural": "books", + "rotateStatus": false, + "selected": false, + "_type": "org.uengine.modeling.model.Aggregate" + }, + "f8dc3056-6183-539a-7f20-68681ddcc8a2": { + "aggregateRoot": { + "_type": "org.uengine.modeling.model.AggregateRoot", + "fieldDescriptors": [ + { + "className": "Long", + "isCopy": false, + "isKey": true, + "name": "loanId", + "nameCamelCase": "loanId", + "namePascalCase": "LoanId", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Member", + "isCopy": false, + "isKey": false, + "name": "member", + "nameCamelCase": "member", + "namePascalCase": "Member", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Integer", + "isCopy": false, + "isKey": false, + "name": "loanPeriod", + "nameCamelCase": "loanPeriod", + "namePascalCase": "LoanPeriod", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "LoanStatus", + "isCopy": false, + "isKey": false, + "name": "loanStatus", + "nameCamelCase": "loanStatus", + "namePascalCase": "LoanStatus", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "loanDate", + "nameCamelCase": "loanDate", + "namePascalCase": "LoanDate", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "returnDueDate", + "nameCamelCase": "returnDueDate", + "namePascalCase": "ReturnDueDate", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "LoanDuration", + "isCopy": false, + "isKey": false, + "name": "loanDuration", + "nameCamelCase": "loanDuration", + "namePascalCase": "LoanDuration", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "BookId", + "isCopy": false, + "isKey": false, + "name": "bookId", + "nameCamelCase": "bookId", + "namePascalCase": "BookId", + "displayName": "", + "referenceClass": "Book", + "isOverrideField": true, + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "entities": { + "elements": { + "30397330-2606-86f2-57f4-bf677bae16dc": { + "_type": "org.uengine.uml.model.Class", + "id": "30397330-2606-86f2-57f4-bf677bae16dc", + "name": "Loan", + "namePascalCase": "Loan", + "nameCamelCase": "loan", + "namePlural": "Loans", + "fieldDescriptors": [ + { + "className": "Long", + "isCopy": false, + "isKey": true, + "name": "loanId", + "displayName": "", + "nameCamelCase": "loanId", + "namePascalCase": "LoanId", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "Member", + "isCopy": false, + "isKey": false, + "name": "member", + "displayName": "", + "nameCamelCase": "member", + "namePascalCase": "Member", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "Integer", + "isCopy": false, + "isKey": false, + "name": "loanPeriod", + "displayName": "", + "nameCamelCase": "loanPeriod", + "namePascalCase": "LoanPeriod", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "LoanStatus", + "isCopy": false, + "isKey": false, + "name": "loanStatus", + "displayName": "", + "nameCamelCase": "loanStatus", + "namePascalCase": "LoanStatus", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "loanDate", + "displayName": "", + "nameCamelCase": "loanDate", + "namePascalCase": "LoanDate", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "returnDueDate", + "displayName": "", + "nameCamelCase": "returnDueDate", + "namePascalCase": "ReturnDueDate", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "LoanDuration", + "isCopy": false, + "isKey": false, + "name": "loanDuration", + "displayName": "", + "nameCamelCase": "loanDuration", + "namePascalCase": "LoanDuration", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "BookId", + "isCopy": false, + "isKey": false, + "name": "bookId", + "nameCamelCase": "bookId", + "namePascalCase": "BookId", + "displayName": "", + "referenceClass": "Book", + "isOverrideField": true, + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "operations": [], + "elementView": { + "_type": "org.uengine.uml.model.Class", + "id": "30397330-2606-86f2-57f4-bf677bae16dc", + "x": 200, + "y": 200, + "width": 200, + "height": 100, + "style": "{}", + "titleH": 50, + "subEdgeH": 120, + "fieldH": 90, + "methodH": 30 + }, + "selected": false, + "relations": [], + "parentOperations": [], + "relationType": null, + "isVO": false, + "isAbstract": false, + "isInterface": false, + "isAggregateRoot": true, + "parentId": "f8dc3056-6183-539a-7f20-68681ddcc8a2" + }, + "09ee5a03-4449-1bde-3705-35c2ca198880": { + "_type": "org.uengine.uml.model.vo.Class", + "id": "09ee5a03-4449-1bde-3705-35c2ca198880", + "name": "Member", + "displayName": "회원", + "namePascalCase": "Member", + "nameCamelCase": "member", + "fieldDescriptors": [ + { + "className": "String", + "isKey": false, + "label": "- memberId: String", + "name": "memberId", + "nameCamelCase": "memberId", + "namePascalCase": "MemberId", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isKey": false, + "label": "- name: String", + "name": "name", + "nameCamelCase": "name", + "namePascalCase": "Name", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "operations": [], + "elementView": { + "_type": "org.uengine.uml.model.vo.address.Class", + "id": "09ee5a03-4449-1bde-3705-35c2ca198880", + "x": 700, + "y": 152, + "width": 200, + "height": 100, + "style": "{}", + "titleH": 50, + "subEdgeH": 170, + "fieldH": 150, + "methodH": 30 + }, + "selected": false, + "parentOperations": [], + "relationType": null, + "isVO": true, + "relations": [], + "groupElement": null, + "isAggregateRoot": false, + "namePlural": "Members", + "isAbstract": false, + "isInterface": false + }, + "bfdf118a-ad46-c0e3-2ae4-d0372b9d8361": { + "_type": "org.uengine.uml.model.enum", + "id": "bfdf118a-ad46-c0e3-2ae4-d0372b9d8361", + "name": "LoanStatus", + "displayName": "대출 상태", + "nameCamelCase": "loanStatus", + "namePascalCase": "LoanStatus", + "namePlural": "loanStatuses", + "elementView": { + "_type": "org.uengine.uml.model.enum", + "id": "bfdf118a-ad46-c0e3-2ae4-d0372b9d8361", + "x": 700, + "y": 456, + "width": 200, + "height": 100, + "style": "{}", + "titleH": 50, + "subEdgeH": 50 + }, + "selected": false, + "items": [ + { + "value": "BORROWED" + }, + { + "value": "OVERDUE" + }, + { + "value": "RETURNED" + } + ], + "useKeyValue": false, + "relations": [] + }, + "8c1b2fee-54a7-b460-486a-1453593fac3f": { + "_type": "org.uengine.uml.model.enum", + "id": "8c1b2fee-54a7-b460-486a-1453593fac3f", + "name": "LoanDuration", + "displayName": "대출 기간 옵션", + "nameCamelCase": "loanDuration", + "namePascalCase": "LoanDuration", + "namePlural": "loanDurations", + "elementView": { + "_type": "org.uengine.uml.model.enum", + "id": "8c1b2fee-54a7-b460-486a-1453593fac3f", + "x": 950, + "y": 456, + "width": 200, + "height": 100, + "style": "{}", + "titleH": 50, + "subEdgeH": 50 + }, + "selected": false, + "items": [ + { + "value": "7_DAYS" + }, + { + "value": "14_DAYS" + }, + { + "value": "30_DAYS" + } + ], + "useKeyValue": false, + "relations": [] + }, + "498f116f-796f-fa99-d9a2-a2f257761c80": { + "_type": "org.uengine.uml.model.vo.Class", + "id": "498f116f-796f-fa99-d9a2-a2f257761c80", + "name": "BookId", + "displayName": "", + "namePascalCase": "BookId", + "nameCamelCase": "bookId", + "fieldDescriptors": [ + { + "className": "String", + "isKey": true, + "label": "- bookId: String", + "name": "bookId", + "nameCamelCase": "bookId", + "namePascalCase": "BookId", + "displayName": "", + "referenceClass": "Book", + "isOverrideField": true, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isKey": false, + "label": "- isbn: String", + "name": "isbn", + "nameCamelCase": "isbn", + "namePascalCase": "Isbn", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "operations": [], + "elementView": { + "_type": "org.uengine.uml.model.vo.address.Class", + "id": "498f116f-796f-fa99-d9a2-a2f257761c80", + "x": 950, + "y": 152, + "width": 200, + "height": 100, + "style": "{}", + "titleH": 50, + "subEdgeH": 170, + "fieldH": 150, + "methodH": 30 + }, + "selected": false, + "parentOperations": [], + "relationType": null, + "isVO": true, + "relations": [ + "9c545fdc-cddf-9cbb-e621-60b6aec1c837" + ], + "groupElement": null, + "isAggregateRoot": false, + "namePlural": "BookIds", + "isAbstract": false, + "isInterface": false + }, + "7c0b178b-e639-d076-551b-a6e54231343a": { + "_type": "org.uengine.uml.model.enum", + "id": "7c0b178b-e639-d076-551b-a6e54231343a", + "name": "Category", + "displayName": "도서 카테고리", + "nameCamelCase": "category", + "namePascalCase": "Category", + "namePlural": "categories", + "elementView": { + "_type": "org.uengine.uml.model.enum", + "id": "7c0b178b-e639-d076-551b-a6e54231343a", + "x": 1200, + "y": 456, + "width": 200, + "height": 100, + "style": "{}", + "titleH": 50, + "subEdgeH": 50 + }, + "selected": false, + "items": [ + { + "value": "NOVEL" + }, + { + "value": "NONFICTION" + }, + { + "value": "ACADEMIC" + }, + { + "value": "MAGAZINE" + } + ], + "useKeyValue": false, + "relations": [ + "9c545fdc-cddf-9cbb-e621-60b6aec1c837" + ] + } + }, + "relations": { + "9c545fdc-cddf-9cbb-e621-60b6aec1c837": { + "name": "Category", + "id": "9c545fdc-cddf-9cbb-e621-60b6aec1c837", + "_type": "org.uengine.uml.model.Relation", + "sourceElement": { + "_type": "org.uengine.uml.model.vo.Class", + "id": "498f116f-796f-fa99-d9a2-a2f257761c80", + "name": "BookId", + "displayName": "", + "namePascalCase": "BookId", + "nameCamelCase": "bookId", + "fieldDescriptors": [ + { + "className": "String", + "isKey": true, + "label": "- bookId: String", + "name": "bookId", + "nameCamelCase": "bookId", + "namePascalCase": "BookId", + "displayName": "", + "referenceClass": "Book", + "isOverrideField": true, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isKey": false, + "label": "- isbn: String", + "name": "isbn", + "nameCamelCase": "isbn", + "namePascalCase": "Isbn", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "operations": [], + "elementView": { + "_type": "org.uengine.uml.model.vo.address.Class", + "id": "498f116f-796f-fa99-d9a2-a2f257761c80", + "x": 950, + "y": 152, + "width": 200, + "height": 100, + "style": "{}", + "titleH": 50, + "subEdgeH": 170, + "fieldH": 150, + "methodH": 30 + }, + "selected": false, + "parentOperations": [], + "relationType": null, + "isVO": true, + "relations": [ + "9c545fdc-cddf-9cbb-e621-60b6aec1c837" + ], + "groupElement": null, + "isAggregateRoot": false, + "namePlural": "BookIds", + "isAbstract": false, + "isInterface": false + }, + "targetElement": { + "_type": "org.uengine.uml.model.enum", + "id": "7c0b178b-e639-d076-551b-a6e54231343a", + "name": "Category", + "displayName": "도서 카테고리", + "nameCamelCase": "category", + "namePascalCase": "Category", + "namePlural": "categories", + "elementView": { + "_type": "org.uengine.uml.model.enum", + "id": "7c0b178b-e639-d076-551b-a6e54231343a", + "x": 1200, + "y": 456, + "width": 200, + "height": 100, + "style": "{}", + "titleH": 50, + "subEdgeH": 50 + }, + "selected": false, + "items": [ + { + "value": "NOVEL" + }, + { + "value": "NONFICTION" + }, + { + "value": "ACADEMIC" + }, + { + "value": "MAGAZINE" + } + ], + "useKeyValue": false, + "relations": [ + "9c545fdc-cddf-9cbb-e621-60b6aec1c837" + ] + }, + "from": "498f116f-796f-fa99-d9a2-a2f257761c80", + "to": "7c0b178b-e639-d076-551b-a6e54231343a", + "selected": false, + "relationView": { + "id": "9c545fdc-cddf-9cbb-e621-60b6aec1c837", + "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", + "from": "498f116f-796f-fa99-d9a2-a2f257761c80", + "to": "7c0b178b-e639-d076-551b-a6e54231343a", + "needReconnect": true + }, + "sourceMultiplicity": "1", + "targetMultiplicity": "1", + "relationType": "Association", + "fromLabel": "", + "toLabel": "" + } + } + }, + "operations": [] + }, + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "name": "85c498d4-39ed-5546-59b8-8eaaf33cffc8", + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + }, + "commands": [], + "description": null, + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2", + "elementView": { + "_type": "org.uengine.modeling.model.Aggregate", + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2", + "x": 1235, + "y": 525, + "width": 130, + "height": 550 + }, + "events": [], + "hexagonalView": { + "_type": "org.uengine.modeling.model.AggregateHexagonal", + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2", + "x": 0, + "y": 0, + "subWidth": 0, + "width": 0 + }, + "name": "Loan", + "displayName": "대출", + "nameCamelCase": "loan", + "namePascalCase": "Loan", + "namePlural": "loans", + "rotateStatus": false, + "selected": false, + "_type": "org.uengine.modeling.model.Aggregate" + }, + "5afcf0dc-5c3b-f67a-d273-fab421febc20": { + "alertURL": "/static/image/symbol/alert-icon.png", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "checkAlert": true, + "description": null, + "id": "5afcf0dc-5c3b-f67a-d273-fab421febc20", + "elementView": { + "angle": 0, + "height": 116, + "id": "5afcf0dc-5c3b-f67a-d273-fab421febc20", + "style": "{}", + "width": 100, + "x": 744, + "y": 250, + "_type": "org.uengine.modeling.model.Event" + }, + "fieldDescriptors": [ + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "title", + "nameCamelCase": "title", + "namePascalCase": "Title", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "isbn", + "nameCamelCase": "isbn", + "namePascalCase": "Isbn", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "author", + "nameCamelCase": "author", + "namePascalCase": "Author", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "publisher", + "nameCamelCase": "publisher", + "namePascalCase": "Publisher", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Category", + "isCopy": false, + "isKey": false, + "name": "category", + "nameCamelCase": "category", + "namePascalCase": "Category", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Status", + "isCopy": false, + "isKey": false, + "name": "status", + "nameCamelCase": "status", + "namePascalCase": "Status", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "hexagonalView": { + "height": 0, + "id": "5afcf0dc-5c3b-f67a-d273-fab421febc20", + "style": "{}", + "width": 0, + "x": 0, + "y": 0, + "_type": "org.uengine.modeling.model.EventHexagonal" + }, + "name": "BookCreated", + "displayName": "도서 등록됨", + "nameCamelCase": "bookCreated", + "namePascalCase": "BookCreated", + "namePlural": "", + "relationCommandInfo": [], + "relationPolicyInfo": [], + "rotateStatus": false, + "selected": false, + "trigger": "@PostPersist", + "_type": "org.uengine.modeling.model.Event", + "aggregate": { + "id": "554241df-8091-4819-87d3-8fa38d18deaa" + }, + "boundedContext": { + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + }, + "visibility": "public" + }, + "a82665ee-dc60-21db-a491-8fffbc623007": { + "alertURL": "/static/image/symbol/alert-icon.png", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "checkAlert": true, + "description": null, + "id": "a82665ee-dc60-21db-a491-8fffbc623007", + "elementView": { + "angle": 0, + "height": 116, + "id": "a82665ee-dc60-21db-a491-8fffbc623007", + "style": "{}", + "width": 100, + "x": 744, + "y": 380, + "_type": "org.uengine.modeling.model.Event" + }, + "fieldDescriptors": [ + { + "className": "Status", + "isCopy": false, + "isKey": false, + "name": "previousStatus", + "nameCamelCase": "previousStatus", + "namePascalCase": "PreviousStatus", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Status", + "isCopy": false, + "isKey": false, + "name": "currentStatus", + "nameCamelCase": "currentStatus", + "namePascalCase": "CurrentStatus", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "changeDate", + "nameCamelCase": "changeDate", + "namePascalCase": "ChangeDate", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "reason", + "nameCamelCase": "reason", + "namePascalCase": "Reason", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "hexagonalView": { + "height": 0, + "id": "a82665ee-dc60-21db-a491-8fffbc623007", + "style": "{}", + "width": 0, + "x": 0, + "y": 0, + "_type": "org.uengine.modeling.model.EventHexagonal" + }, + "name": "BookStatusChanged", + "displayName": "도서 상태 변경됨", + "nameCamelCase": "bookStatusChanged", + "namePascalCase": "BookStatusChanged", + "namePlural": "", + "relationCommandInfo": [], + "relationPolicyInfo": [], + "rotateStatus": false, + "selected": false, + "trigger": "@PostPersist", + "_type": "org.uengine.modeling.model.Event", + "aggregate": { + "id": "554241df-8091-4819-87d3-8fa38d18deaa" + }, + "boundedContext": { + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + }, + "visibility": "public" + }, + "fcdfa519-b23b-a129-296b-90b34d98a7db": { + "_type": "org.uengine.modeling.model.Command", + "outputEvents": [ + "BookCreated" + ], + "aggregate": { + "id": "554241df-8091-4819-87d3-8fa38d18deaa" + }, + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + }, + "controllerInfo": { + "method": "POST" + }, + "fieldDescriptors": [ + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "title", + "nameCamelCase": "title", + "namePascalCase": "Title", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "isbn", + "nameCamelCase": "isbn", + "namePascalCase": "Isbn", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "author", + "nameCamelCase": "author", + "namePascalCase": "Author", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "publisher", + "nameCamelCase": "publisher", + "namePascalCase": "Publisher", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Category", + "isCopy": false, + "isKey": false, + "name": "category", + "nameCamelCase": "category", + "namePascalCase": "Category", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "description": null, + "id": "fcdfa519-b23b-a129-296b-90b34d98a7db", + "elementView": { + "_type": "org.uengine.modeling.model.Command", + "height": 116, + "id": "fcdfa519-b23b-a129-296b-90b34d98a7db", + "style": "{}", + "width": 100, + "x": 556, + "y": 250, + "z-index": 999 + }, + "hexagonalView": { + "_type": "org.uengine.modeling.model.CommandHexagonal", + "height": 0, + "id": "fcdfa519-b23b-a129-296b-90b34d98a7db", + "style": "{}", + "width": 0, + "x": 0, + "y": 0 + }, + "isRestRepository": false, + "name": "CreateBook", + "displayName": "도서 등록", + "nameCamelCase": "createBook", + "namePascalCase": "CreateBook", + "namePlural": "createBooks", + "relationCommandInfo": [], + "relationEventInfo": [], + "restRepositoryInfo": { + "method": "POST" + }, + "rotateStatus": false, + "selected": false, + "trigger": "@PrePersist", + "examples": [ + { + "given": [ + { + "type": "Aggregate", + "name": "Book", + "value": { + "bookId": null, + "title": null, + "isbn": null, + "author": null, + "publisher": null, + "category": "N/A", + "status": "N/A" + } + } + ], + "when": [ + { + "type": "Command", + "name": "CreateBook", + "value": { + "title": "해리 포터", + "isbn": "1234567890123", + "author": "J.K. 롤링", + "publisher": "문학사", + "category": "NOVEL" + } + } + ], + "then": [ + { + "type": "Event", + "name": "BookCreated", + "value": { + "title": "해리 포터", + "isbn": "1234567890123", + "author": "J.K. 롤링", + "publisher": "문학사", + "category": "NOVEL", + "status": "AVAILABLE" + } + } + ] + } + ], + "visibility": "public" + }, + "ae7bd270-ac8c-7103-9866-c3e1867c019a": { + "_type": "org.uengine.modeling.model.Command", + "outputEvents": [ + "BookStatusChanged" + ], + "aggregate": { + "id": "554241df-8091-4819-87d3-8fa38d18deaa" + }, + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + }, + "controllerInfo": { + "method": "PUT", + "apiPath": "changebookstatus" + }, + "fieldDescriptors": [ + { + "className": "Status", + "isCopy": false, + "isKey": false, + "name": "status", + "nameCamelCase": "status", + "namePascalCase": "Status", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "reason", + "nameCamelCase": "reason", + "namePascalCase": "Reason", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "description": null, + "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", + "elementView": { + "_type": "org.uengine.modeling.model.Command", + "height": 116, + "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", + "style": "{}", + "width": 100, + "x": 556, + "y": 380, + "z-index": 999 + }, + "hexagonalView": { + "_type": "org.uengine.modeling.model.CommandHexagonal", + "height": 0, + "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", + "style": "{}", + "width": 0, + "x": 0, + "y": 0 + }, + "isRestRepository": false, + "name": "ChangeBookStatus", + "displayName": "도서 상태 변경", + "nameCamelCase": "changeBookStatus", + "namePascalCase": "ChangeBookStatus", + "namePlural": "changeBookStatuses", + "relationCommandInfo": [], + "relationEventInfo": [], + "restRepositoryInfo": { + "method": "PUT" + }, + "rotateStatus": false, + "selected": false, + "trigger": "@PrePersist", + "examples": [ + { + "given": [ + { + "type": "Aggregate", + "name": "Book", + "value": { + "bookId": "BOOK-001", + "title": "해리 포터", + "isbn": "1234567890123", + "author": "J.K. 롤링", + "publisher": "문학사", + "category": "NOVEL", + "status": "AVAILABLE" + } + } + ], + "when": [ + { + "type": "Command", + "name": "ChangeBookStatus", + "value": { + "status": "BORROWED", + "reason": "사용자가 대출" + } + } + ], + "then": [ + { + "type": "Event", + "name": "BookStatusChanged", + "value": { + "previousStatus": "AVAILABLE", + "currentStatus": "BORROWED", + "changeDate": "2024-03-20T00:00:00Z", + "reason": "사용자가 대출" + } + } + ] + }, + { + "given": [ + { + "type": "Aggregate", + "name": "Book", + "value": { + "bookId": "BOOK-002", + "title": "1984", + "isbn": "9876543210123", + "author": "조지 오웰", + "publisher": "문학사", + "category": "NOVEL", + "status": "BORROWED" + } + } + ], + "when": [ + { + "type": "Command", + "name": "ChangeBookStatus", + "value": { + "status": "AVAILABLE", + "reason": "사용자가 반납" + } + } + ], + "then": [ + { + "type": "Event", + "name": "BookStatusChanged", + "value": { + "previousStatus": "BORROWED", + "currentStatus": "AVAILABLE", + "changeDate": "2024-03-21T00:00:00Z", + "reason": "사용자가 반납" + } + } + ] + }, + { + "given": [ + { + "type": "Aggregate", + "name": "Book", + "value": { + "bookId": "BOOK-003", + "title": "데미안", + "isbn": "1122334455667", + "author": "헤르만 헤세", + "publisher": "문학사", + "category": "NOVEL", + "status": "AVAILABLE" + } + } + ], + "when": [ + { + "type": "Command", + "name": "ChangeBookStatus", + "value": { + "status": "RESERVED", + "reason": "사용자가 예약" + } + } + ], + "then": [ + { + "type": "Event", + "name": "BookStatusChanged", + "value": { + "previousStatus": "AVAILABLE", + "currentStatus": "RESERVED", + "changeDate": "2024-03-22T00:00:00Z", + "reason": "사용자가 예약" + } + } + ] + }, + { + "given": [ + { + "type": "Aggregate", + "name": "Book", + "value": { + "bookId": "BOOK-004", + "title": "호밀밭의 파수꾼", + "isbn": "9988776655443", + "author": "제롬 데이비드 샐린저", + "publisher": "문학사", + "category": "NOVEL", + "status": "AVAILABLE" + } + } + ], + "when": [ + { + "type": "Command", + "name": "ChangeBookStatus", + "value": { + "status": "DISCARDED", + "reason": "오래된 도서 폐기" + } + } + ], + "then": [ + { + "type": "Event", + "name": "BookStatusChanged", + "value": { + "previousStatus": "AVAILABLE", + "currentStatus": "DISCARDED", + "changeDate": "2024-03-23T00:00:00Z", + "reason": "오래된 도서 폐기" + } + } + ] + } + ], + "visibility": "public", + "oldName": "ChangeBookStatus" + }, + "739e4179-c302-708b-a3e7-09878dca9a29": { + "_type": "org.uengine.modeling.model.View", + "id": "739e4179-c302-708b-a3e7-09878dca9a29", + "visibility": "public", + "name": "BookHistory", + "oldName": "", + "displayName": "도서 이력", + "namePascalCase": "BookHistory", + "namePlural": "bookHistories", + "aggregate": { + "id": "554241df-8091-4819-87d3-8fa38d18deaa" + }, + "description": null, + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + }, + "fieldDescriptors": [ + { + "_type": "org.uengine.model.FieldDescriptor", + "name": "id", + "className": "Long", + "nameCamelCase": "id", + "namePascalCase": "Id", + "isKey": true + } + ], + "queryParameters": [ + { + "className": "String", + "isCopy": false, + "isKey": true, + "name": "historyId", + "nameCamelCase": "historyId", + "namePascalCase": "HistoryId", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "changeDate", + "nameCamelCase": "changeDate", + "namePascalCase": "ChangeDate", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Status", + "isCopy": false, + "isKey": false, + "name": "status", + "nameCamelCase": "status", + "namePascalCase": "Status", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "userId", + "nameCamelCase": "userId", + "namePascalCase": "UserId", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "queryOption": { + "apiPath": "", + "useDefaultUri": true, + "multipleResult": true + }, + "controllerInfo": { + "url": "" + }, + "elementView": { + "_type": "org.uengine.modeling.model.View", + "id": "739e4179-c302-708b-a3e7-09878dca9a29", + "x": 556, + "y": 510, + "width": 100, + "height": 116, + "style": "{}", + "z-index": 999 + }, + "editingView": false, + "dataProjection": "query-for-aggregate", + "createRules": [ + { + "_type": "viewStoreRule", + "operation": "CREATE", + "when": null, + "fieldMapping": [ + { + "viewField": null, + "eventField": null, + "operator": "=" + } + ], + "where": [ + { + "viewField": null, + "eventField": null + } + ] + } + ], + "updateRules": [ + { + "_type": "viewStoreRule", + "operation": "UPDATE", + "when": null, + "fieldMapping": [ + { + "viewField": null, + "eventField": null, + "operator": "=" + } + ], + "where": [ + { + "viewField": null, + "eventField": null + } + ] + } + ], + "deleteRules": [ + { + "_type": "viewStoreRule", + "operation": "DELETE", + "when": null, + "fieldMapping": [ + { + "viewField": null, + "eventField": null + } + ], + "where": [ + { + "viewField": null, + "eventField": null + } + ] + } + ], + "rotateStatus": false, + "definitionId": "" + }, + "65f57c13-6e15-18af-9892-1d47a205fba1": { + "_type": "org.uengine.modeling.model.View", + "id": "65f57c13-6e15-18af-9892-1d47a205fba1", + "visibility": "public", + "name": "BookDetails", + "oldName": "", + "displayName": "도서 상세정보", + "namePascalCase": "BookDetails", + "namePlural": "bookDetails", + "aggregate": { + "id": "554241df-8091-4819-87d3-8fa38d18deaa" + }, + "description": null, + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + }, + "fieldDescriptors": [ + { + "_type": "org.uengine.model.FieldDescriptor", + "name": "id", + "className": "Long", + "nameCamelCase": "id", + "namePascalCase": "Id", + "isKey": true + } + ], + "queryParameters": [ + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "title", + "nameCamelCase": "title", + "namePascalCase": "Title", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "isbn", + "nameCamelCase": "isbn", + "namePascalCase": "Isbn", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "author", + "nameCamelCase": "author", + "namePascalCase": "Author", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "publisher", + "nameCamelCase": "publisher", + "namePascalCase": "Publisher", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Category", + "isCopy": false, + "isKey": false, + "name": "category", + "nameCamelCase": "category", + "namePascalCase": "Category", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Status", + "isCopy": false, + "isKey": false, + "name": "status", + "nameCamelCase": "status", + "namePascalCase": "Status", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "queryOption": { + "apiPath": "", + "useDefaultUri": true, + "multipleResult": false + }, + "controllerInfo": { + "url": "" + }, + "elementView": { + "_type": "org.uengine.modeling.model.View", + "id": "65f57c13-6e15-18af-9892-1d47a205fba1", + "x": 556, + "y": 640, + "width": 100, + "height": 116, + "style": "{}", + "z-index": 999 + }, + "editingView": false, + "dataProjection": "query-for-aggregate", + "createRules": [ + { + "_type": "viewStoreRule", + "operation": "CREATE", + "when": null, + "fieldMapping": [ + { + "viewField": null, + "eventField": null, + "operator": "=" + } + ], + "where": [ + { + "viewField": null, + "eventField": null + } + ] + } + ], + "updateRules": [ + { + "_type": "viewStoreRule", + "operation": "UPDATE", + "when": null, + "fieldMapping": [ + { + "viewField": null, + "eventField": null, + "operator": "=" + } + ], + "where": [ + { + "viewField": null, + "eventField": null + } + ] + } + ], + "deleteRules": [ + { + "_type": "viewStoreRule", + "operation": "DELETE", + "when": null, + "fieldMapping": [ + { + "viewField": null, + "eventField": null + } + ], + "where": [ + { + "viewField": null, + "eventField": null + } + ] + } + ], + "rotateStatus": false, + "definitionId": "" + }, + "bc3d714f-e3f8-943e-b35d-976bb0f1bd0f": { + "_type": "org.uengine.modeling.model.Actor", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + }, + "description": null, + "id": "bc3d714f-e3f8-943e-b35d-976bb0f1bd0f", + "elementView": { + "_type": "org.uengine.modeling.model.Actor", + "height": 100, + "id": "bc3d714f-e3f8-943e-b35d-976bb0f1bd0f", + "style": "{}", + "width": 100, + "x": 475, + "y": 250 + }, + "innerAggregate": { + "command": [], + "event": [], + "external": [], + "policy": [], + "view": [] + }, + "name": "Admin", + "oldName": "", + "rotateStatus": false, + "displayName": "" + }, + "1ff02715-95b2-38ce-7a08-1d9744801560": { + "_type": "org.uengine.modeling.model.Actor", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + }, + "description": null, + "id": "1ff02715-95b2-38ce-7a08-1d9744801560", + "elementView": { + "_type": "org.uengine.modeling.model.Actor", + "height": 100, + "id": "1ff02715-95b2-38ce-7a08-1d9744801560", + "style": "{}", + "width": 100, + "x": 475, + "y": 380 + }, + "innerAggregate": { + "command": [], + "event": [], + "external": [], + "policy": [], + "view": [] + }, + "name": "Admin", + "oldName": "", + "rotateStatus": false, + "displayName": "" + }, + "e724b611-05fb-9b1c-1c85-156db2a5a928": { + "_type": "org.uengine.modeling.model.Actor", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + }, + "description": null, + "id": "e724b611-05fb-9b1c-1c85-156db2a5a928", + "elementView": { + "_type": "org.uengine.modeling.model.Actor", + "height": 100, + "id": "e724b611-05fb-9b1c-1c85-156db2a5a928", + "style": "{}", + "width": 100, + "x": 475, + "y": 510 + }, + "innerAggregate": { + "command": [], + "event": [], + "external": [], + "policy": [], + "view": [] + }, + "name": "Admin", + "oldName": "", + "rotateStatus": false, + "displayName": "" + }, + "d9ef505f-9ac6-27f9-e8c4-f9b2136a20cb": { + "_type": "org.uengine.modeling.model.Actor", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + }, + "description": null, + "id": "d9ef505f-9ac6-27f9-e8c4-f9b2136a20cb", + "elementView": { + "_type": "org.uengine.modeling.model.Actor", + "height": 100, + "id": "d9ef505f-9ac6-27f9-e8c4-f9b2136a20cb", + "style": "{}", + "width": 100, + "x": 475, + "y": 640 + }, + "innerAggregate": { + "command": [], + "event": [], + "external": [], + "policy": [], + "view": [] + }, + "name": "Admin", + "oldName": "", + "rotateStatus": false, + "displayName": "" + }, + "78937fb4-354e-7c45-ea1f-a9604081b75b": { + "alertURL": "/static/image/symbol/alert-icon.png", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "checkAlert": true, + "description": null, + "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", + "elementView": { + "angle": 0, + "height": 116, + "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", + "style": "{}", + "width": 100, + "x": 1329, + "y": 250, + "_type": "org.uengine.modeling.model.Event" + }, + "fieldDescriptors": [ + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "memberId", + "nameCamelCase": "memberId", + "namePascalCase": "MemberId", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "LoanDuration", + "isCopy": false, + "isKey": false, + "name": "loanDuration", + "nameCamelCase": "loanDuration", + "namePascalCase": "LoanDuration", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "loanDate", + "nameCamelCase": "loanDate", + "namePascalCase": "LoanDate", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "returnDueDate", + "nameCamelCase": "returnDueDate", + "namePascalCase": "ReturnDueDate", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "LoanStatus", + "isCopy": false, + "isKey": false, + "name": "loanStatus", + "nameCamelCase": "loanStatus", + "namePascalCase": "LoanStatus", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "hexagonalView": { + "height": 0, + "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", + "style": "{}", + "width": 0, + "x": 0, + "y": 0, + "_type": "org.uengine.modeling.model.EventHexagonal" + }, + "name": "LoanCreated", + "displayName": "대출 생성", + "nameCamelCase": "loanCreated", + "namePascalCase": "LoanCreated", + "namePlural": "", + "relationCommandInfo": [], + "relationPolicyInfo": [], + "rotateStatus": false, + "selected": false, + "trigger": "@PostPersist", + "_type": "org.uengine.modeling.model.Event", + "aggregate": { + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" + }, + "boundedContext": { + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + }, + "visibility": "public" + }, + "efa0739f-ad74-5be2-0d5f-27a167cdc711": { + "alertURL": "/static/image/symbol/alert-icon.png", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "checkAlert": true, + "description": null, + "id": "efa0739f-ad74-5be2-0d5f-27a167cdc711", + "elementView": { + "angle": 0, + "height": 116, + "id": "efa0739f-ad74-5be2-0d5f-27a167cdc711", + "style": "{}", + "width": 100, + "x": 1329, + "y": 380, + "_type": "org.uengine.modeling.model.Event" + }, + "fieldDescriptors": [ + { + "className": "LoanDuration", + "isCopy": false, + "isKey": false, + "name": "extensionDuration", + "nameCamelCase": "extensionDuration", + "namePascalCase": "ExtensionDuration", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "newReturnDueDate", + "nameCamelCase": "newReturnDueDate", + "namePascalCase": "NewReturnDueDate", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "hexagonalView": { + "height": 0, + "id": "efa0739f-ad74-5be2-0d5f-27a167cdc711", + "style": "{}", + "width": 0, + "x": 0, + "y": 0, + "_type": "org.uengine.modeling.model.EventHexagonal" + }, + "name": "LoanExtended", + "displayName": "대출 연장됨", + "nameCamelCase": "loanExtended", + "namePascalCase": "LoanExtended", + "namePlural": "", + "relationCommandInfo": [], + "relationPolicyInfo": [], + "rotateStatus": false, + "selected": false, + "trigger": "@PostPersist", + "_type": "org.uengine.modeling.model.Event", + "aggregate": { + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" + }, + "boundedContext": { + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + }, + "visibility": "public" + }, + "ac75186c-693b-322d-9554-c112044993f4": { + "alertURL": "/static/image/symbol/alert-icon.png", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "checkAlert": true, + "description": null, + "id": "ac75186c-693b-322d-9554-c112044993f4", + "elementView": { + "angle": 0, + "height": 116, + "id": "ac75186c-693b-322d-9554-c112044993f4", + "style": "{}", + "width": 100, + "x": 1329, + "y": 510, + "_type": "org.uengine.modeling.model.Event" + }, + "fieldDescriptors": [ + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "returnDate", + "nameCamelCase": "returnDate", + "namePascalCase": "ReturnDate", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "LoanStatus", + "isCopy": false, + "isKey": false, + "name": "nextStatus", + "nameCamelCase": "nextStatus", + "namePascalCase": "NextStatus", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "hexagonalView": { + "height": 0, + "id": "ac75186c-693b-322d-9554-c112044993f4", + "style": "{}", + "width": 0, + "x": 0, + "y": 0, + "_type": "org.uengine.modeling.model.EventHexagonal" + }, + "name": "LoanReturned", + "displayName": "대출 반납됨", + "nameCamelCase": "loanReturned", + "namePascalCase": "LoanReturned", + "namePlural": "", + "relationCommandInfo": [], + "relationPolicyInfo": [], + "rotateStatus": false, + "selected": false, + "trigger": "@PostPersist", + "_type": "org.uengine.modeling.model.Event", + "aggregate": { + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" + }, + "boundedContext": { + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + }, + "visibility": "public" + }, + "83df6bbe-e74e-3765-06a7-c79af07cb94d": { + "_type": "org.uengine.modeling.model.Command", + "outputEvents": [ + "LoanCreated" + ], + "aggregate": { + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" + }, + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + }, + "controllerInfo": { + "method": "POST", + "apiPath": "/createloan" + }, + "fieldDescriptors": [ + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "memberId", + "nameCamelCase": "memberId", + "namePascalCase": "MemberId", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "LoanDuration", + "isCopy": false, + "isKey": false, + "name": "loanDuration", + "nameCamelCase": "loanDuration", + "namePascalCase": "LoanDuration", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "loanDate", + "nameCamelCase": "loanDate", + "namePascalCase": "LoanDate", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "returnDueDate", + "nameCamelCase": "returnDueDate", + "namePascalCase": "ReturnDueDate", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "description": null, + "id": "83df6bbe-e74e-3765-06a7-c79af07cb94d", + "elementView": { + "_type": "org.uengine.modeling.model.Command", + "height": 116, + "id": "83df6bbe-e74e-3765-06a7-c79af07cb94d", + "style": "{}", + "width": 100, + "x": 1141, + "y": 250, + "z-index": 999 + }, + "hexagonalView": { + "_type": "org.uengine.modeling.model.CommandHexagonal", + "height": 0, + "id": "83df6bbe-e74e-3765-06a7-c79af07cb94d", + "style": "{}", + "width": 0, + "x": 0, + "y": 0 + }, + "isRestRepository": false, + "name": "CreateLoan", + "displayName": "대출 신청", + "nameCamelCase": "createLoan", + "namePascalCase": "CreateLoan", + "namePlural": "createLoans", + "relationCommandInfo": [], + "relationEventInfo": [], + "restRepositoryInfo": { + "method": "POST" + }, + "rotateStatus": false, + "selected": false, + "trigger": "@PrePersist", + "examples": [ + { + "given": [ + { + "type": "Aggregate", + "name": "Loan", + "value": { + "loanId": null, + "member": { + "memberId": "MEMBER-001", + "name": "홍길동" + }, + "loanPeriod": null, + "loanStatus": "N/A", + "loanDate": null, + "returnDueDate": null, + "loanDuration": "N/A", + "bookId": { + "bookId": "BOOK-001", + "isbn": "9781234567890" + } + } + } + ], + "when": [ + { + "type": "Command", + "name": "CreateLoan", + "value": { + "memberId": "MEMBER-001", + "loanDuration": "7_DAYS", + "loanDate": "2023-11-01", + "returnDueDate": "2023-11-08" + } + } + ], + "then": [ + { + "type": "Event", + "name": "LoanCreated", + "value": { + "memberId": "MEMBER-001", + "loanDuration": "7_DAYS", + "loanDate": "2023-11-01", + "returnDueDate": "2023-11-08", + "loanStatus": "BORROWED" + } + } + ] + } + ], + "visibility": "public", + "oldName": "CreateLoan" + }, + "b524c993-e776-e8fe-2fb9-4654540d48fe": { + "_type": "org.uengine.modeling.model.Command", + "outputEvents": [ + "LoanExtended" + ], + "aggregate": { + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" + }, + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + }, + "controllerInfo": { + "method": "PUT" + }, + "fieldDescriptors": [ + { + "className": "LoanDuration", + "isCopy": false, + "isKey": false, + "name": "extensionDuration", + "nameCamelCase": "extensionDuration", + "namePascalCase": "ExtensionDuration", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "description": null, + "id": "b524c993-e776-e8fe-2fb9-4654540d48fe", + "elementView": { + "_type": "org.uengine.modeling.model.Command", + "height": 116, + "id": "b524c993-e776-e8fe-2fb9-4654540d48fe", + "style": "{}", + "width": 100, + "x": 1141, + "y": 380, + "z-index": 999 + }, + "hexagonalView": { + "_type": "org.uengine.modeling.model.CommandHexagonal", + "height": 0, + "id": "b524c993-e776-e8fe-2fb9-4654540d48fe", + "style": "{}", + "width": 0, + "x": 0, + "y": 0 + }, + "isRestRepository": false, + "name": "ExtendLoan", + "displayName": "대출 연장", + "nameCamelCase": "extendLoan", + "namePascalCase": "ExtendLoan", + "namePlural": "extendLoans", + "relationCommandInfo": [], + "relationEventInfo": [], + "restRepositoryInfo": { + "method": "PUT" + }, + "rotateStatus": false, + "selected": false, + "trigger": "@PrePersist", + "examples": [ + { + "given": [ + { + "type": "Aggregate", + "name": "Loan", + "value": { + "loanId": 1001, + "member": { + "memberId": "MEMBER-001", + "name": "홍길동" + }, + "loanPeriod": 7, + "loanStatus": "BORROWED", + "loanDate": "2023-11-01", + "returnDueDate": "2023-11-08", + "loanDuration": "7_DAYS", + "bookId": { + "bookId": "BOOK-001", + "isbn": "9781234567890" + } + } + } + ], + "when": [ + { + "type": "Command", + "name": "ExtendLoan", + "value": { + "extensionDuration": "7_DAYS" + } + } + ], + "then": [ + { + "type": "Event", + "name": "LoanExtended", + "value": { + "extensionDuration": "7_DAYS", + "newReturnDueDate": "2023-11-15" + } + } + ] + } + ], + "visibility": "public" + }, + "1179f8d5-304f-fc47-74d8-4f93b8129008": { + "_type": "org.uengine.modeling.model.Command", + "outputEvents": [ + "LoanReturned" + ], + "aggregate": { + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" + }, + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + }, + "controllerInfo": { + "method": "PUT" + }, + "fieldDescriptors": [], + "description": null, + "id": "1179f8d5-304f-fc47-74d8-4f93b8129008", + "elementView": { + "_type": "org.uengine.modeling.model.Command", + "height": 116, + "id": "1179f8d5-304f-fc47-74d8-4f93b8129008", + "style": "{}", + "width": 100, + "x": 1141, + "y": 510, + "z-index": 999 + }, + "hexagonalView": { + "_type": "org.uengine.modeling.model.CommandHexagonal", + "height": 0, + "id": "1179f8d5-304f-fc47-74d8-4f93b8129008", + "style": "{}", + "width": 0, + "x": 0, + "y": 0 + }, + "isRestRepository": false, + "name": "ReturnLoan", + "displayName": "대출 반납", + "nameCamelCase": "returnLoan", + "namePascalCase": "ReturnLoan", + "namePlural": "returnLoans", + "relationCommandInfo": [], + "relationEventInfo": [], + "restRepositoryInfo": { + "method": "PUT" + }, + "rotateStatus": false, + "selected": false, + "trigger": "@PrePersist", + "examples": [ + { + "given": [ + { + "type": "Aggregate", + "name": "Loan", + "value": { + "loanId": 1001, + "member": { + "memberId": "MEMBER-001", + "name": "홍길동" + }, + "loanPeriod": 7, + "loanStatus": "BORROWED", + "loanDate": "2023-11-01", + "returnDueDate": "2023-11-08", + "loanDuration": "7_DAYS", + "bookId": { + "bookId": "BOOK-001", + "isbn": "9781234567890" + } + } + } + ], + "when": [ + { + "type": "Command", + "name": "ReturnLoan", + "value": {} + } + ], + "then": [ + { + "type": "Event", + "name": "LoanReturned", + "value": { + "returnDate": "2023-11-07", + "nextStatus": "AVAILABLE" + } + } + ] + } + ], + "visibility": "public" + }, + "ba4cf08a-138b-f78c-6beb-137aa4ce6c53": { + "_type": "org.uengine.modeling.model.View", + "id": "ba4cf08a-138b-f78c-6beb-137aa4ce6c53", + "visibility": "public", + "name": "LoanStatus", + "oldName": "", + "displayName": "대출 상태", + "namePascalCase": "LoanStatus", + "namePlural": "loanStatuses", + "aggregate": { + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" + }, + "description": null, + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + }, + "fieldDescriptors": [ + { + "_type": "org.uengine.model.FieldDescriptor", + "name": "id", + "className": "Long", + "nameCamelCase": "id", + "namePascalCase": "Id", + "isKey": true + } + ], + "queryParameters": [ + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "loanDate", + "nameCamelCase": "loanDate", + "namePascalCase": "LoanDate", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "returnDueDate", + "nameCamelCase": "returnDueDate", + "namePascalCase": "ReturnDueDate", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "LoanStatus", + "isCopy": false, + "isKey": false, + "name": "loanStatus", + "nameCamelCase": "loanStatus", + "namePascalCase": "LoanStatus", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "queryOption": { + "apiPath": "", + "useDefaultUri": true, + "multipleResult": true + }, + "controllerInfo": { + "url": "" + }, + "elementView": { + "_type": "org.uengine.modeling.model.View", + "id": "ba4cf08a-138b-f78c-6beb-137aa4ce6c53", + "x": 1141, + "y": 640, + "width": 100, + "height": 116, + "style": "{}", + "z-index": 999 + }, + "editingView": false, + "dataProjection": "query-for-aggregate", + "createRules": [ + { + "_type": "viewStoreRule", + "operation": "CREATE", + "when": null, + "fieldMapping": [ + { + "viewField": null, + "eventField": null, + "operator": "=" + } + ], + "where": [ + { + "viewField": null, + "eventField": null + } + ] + } + ], + "updateRules": [ + { + "_type": "viewStoreRule", + "operation": "UPDATE", + "when": null, + "fieldMapping": [ + { + "viewField": null, + "eventField": null, + "operator": "=" + } + ], + "where": [ + { + "viewField": null, + "eventField": null + } + ] + } + ], + "deleteRules": [ + { + "_type": "viewStoreRule", + "operation": "DELETE", + "when": null, + "fieldMapping": [ + { + "viewField": null, + "eventField": null + } + ], + "where": [ + { + "viewField": null, + "eventField": null + } + ] + } + ], + "rotateStatus": false, + "definitionId": "" + }, + "c0299480-37ae-dc00-eafe-8b423d09e34a": { + "_type": "org.uengine.modeling.model.View", + "id": "c0299480-37ae-dc00-eafe-8b423d09e34a", + "visibility": "public", + "name": "LoanDetails", + "oldName": "", + "displayName": "대출 세부 정보", + "namePascalCase": "LoanDetails", + "namePlural": "loanDetails", + "aggregate": { + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" + }, + "description": null, + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + }, + "fieldDescriptors": [ + { + "_type": "org.uengine.model.FieldDescriptor", + "name": "id", + "className": "Long", + "nameCamelCase": "id", + "namePascalCase": "Id", + "isKey": true + } + ], + "queryParameters": [ + { + "className": "Member", + "isCopy": false, + "isKey": false, + "name": "memberDetails", + "nameCamelCase": "memberDetails", + "namePascalCase": "MemberDetails", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "loanDate", + "nameCamelCase": "loanDate", + "namePascalCase": "LoanDate", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "returnDueDate", + "nameCamelCase": "returnDueDate", + "namePascalCase": "ReturnDueDate", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "LoanStatus", + "isCopy": false, + "isKey": false, + "name": "loanStatus", + "nameCamelCase": "loanStatus", + "namePascalCase": "LoanStatus", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Integer", + "isCopy": false, + "isKey": false, + "name": "extensions", + "nameCamelCase": "extensions", + "namePascalCase": "Extensions", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "createdAt", + "nameCamelCase": "createdAt", + "namePascalCase": "CreatedAt", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "lastModifiedAt", + "nameCamelCase": "lastModifiedAt", + "namePascalCase": "LastModifiedAt", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "queryOption": { + "apiPath": "", + "useDefaultUri": true, + "multipleResult": false + }, + "controllerInfo": { + "url": "" + }, + "elementView": { + "_type": "org.uengine.modeling.model.View", + "id": "c0299480-37ae-dc00-eafe-8b423d09e34a", + "x": 1141, + "y": 770, + "width": 100, + "height": 116, + "style": "{}", + "z-index": 999 + }, + "editingView": false, + "dataProjection": "query-for-aggregate", + "createRules": [ + { + "_type": "viewStoreRule", + "operation": "CREATE", + "when": null, + "fieldMapping": [ + { + "viewField": null, + "eventField": null, + "operator": "=" + } + ], + "where": [ + { + "viewField": null, + "eventField": null + } + ] + } + ], + "updateRules": [ + { + "_type": "viewStoreRule", + "operation": "UPDATE", + "when": null, + "fieldMapping": [ + { + "viewField": null, + "eventField": null, + "operator": "=" + } + ], + "where": [ + { + "viewField": null, + "eventField": null + } + ] + } + ], + "deleteRules": [ + { + "_type": "viewStoreRule", + "operation": "DELETE", + "when": null, + "fieldMapping": [ + { + "viewField": null, + "eventField": null + } + ], + "where": [ + { + "viewField": null, + "eventField": null + } + ] + } + ], + "rotateStatus": false, + "definitionId": "" + }, + "c057a98f-46c0-406f-e1ef-9038a557fd9a": { + "_type": "org.uengine.modeling.model.Actor", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + }, + "description": null, + "id": "c057a98f-46c0-406f-e1ef-9038a557fd9a", + "elementView": { + "_type": "org.uengine.modeling.model.Actor", + "height": 100, + "id": "c057a98f-46c0-406f-e1ef-9038a557fd9a", + "style": "{}", + "width": 100, + "x": 1060, + "y": 250 + }, + "innerAggregate": { + "command": [], + "event": [], + "external": [], + "policy": [], + "view": [] + }, + "name": "회원", + "oldName": "", + "rotateStatus": false, + "displayName": "" + }, + "d0141724-e51b-ddf3-3c84-c245b9846a65": { + "_type": "org.uengine.modeling.model.Actor", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + }, + "description": null, + "id": "d0141724-e51b-ddf3-3c84-c245b9846a65", + "elementView": { + "_type": "org.uengine.modeling.model.Actor", + "height": 100, + "id": "d0141724-e51b-ddf3-3c84-c245b9846a65", + "style": "{}", + "width": 100, + "x": 1060, + "y": 380 + }, + "innerAggregate": { + "command": [], + "event": [], + "external": [], + "policy": [], + "view": [] + }, + "name": "회원", + "oldName": "", + "rotateStatus": false, + "displayName": "" + }, + "354b804b-3689-6240-d6ae-c78607e2bb89": { + "_type": "org.uengine.modeling.model.Actor", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + }, + "description": null, + "id": "354b804b-3689-6240-d6ae-c78607e2bb89", + "elementView": { + "_type": "org.uengine.modeling.model.Actor", + "height": 100, + "id": "354b804b-3689-6240-d6ae-c78607e2bb89", + "style": "{}", + "width": 100, + "x": 1060, + "y": 510 + }, + "innerAggregate": { + "command": [], + "event": [], + "external": [], + "policy": [], + "view": [] + }, + "name": "회원", + "oldName": "", + "rotateStatus": false, + "displayName": "" + }, + "67f61a87-74f8-a9ea-6a9e-5a605e1a25d4": { + "_type": "org.uengine.modeling.model.Actor", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + }, + "description": null, + "id": "67f61a87-74f8-a9ea-6a9e-5a605e1a25d4", + "elementView": { + "_type": "org.uengine.modeling.model.Actor", + "height": 100, + "id": "67f61a87-74f8-a9ea-6a9e-5a605e1a25d4", + "style": "{}", + "width": 100, + "x": 1060, + "y": 640 + }, + "innerAggregate": { + "command": [], + "event": [], + "external": [], + "policy": [], + "view": [] + }, + "name": "회원", + "oldName": "", + "rotateStatus": false, + "displayName": "" + }, + "e17a9268-9129-caea-2c8f-2849d2c9e063": { + "_type": "org.uengine.modeling.model.Actor", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + }, + "description": null, + "id": "e17a9268-9129-caea-2c8f-2849d2c9e063", + "elementView": { + "_type": "org.uengine.modeling.model.Actor", + "height": 100, + "id": "e17a9268-9129-caea-2c8f-2849d2c9e063", + "style": "{}", + "width": 100, + "x": 1060, + "y": 770 + }, + "innerAggregate": { + "command": [], + "event": [], + "external": [], + "policy": [], + "view": [] + }, + "name": "회원", + "oldName": "", + "rotateStatus": false, + "displayName": "" + }, + "dcfad35d-4305-25a5-993d-9426931c4ee6": { + "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + }, + "description": "도서 대출 후 상태를 '대출중'으로 변경", + "elementView": { + "height": 116, + "width": 100, + "x": 425, + "y": 240, + "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", + "style": "{}", + "_type": "org.uengine.modeling.model.Policy" + }, + "fieldDescriptors": [], + "hexagonalView": { + "height": 20, + "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", + "style": "{}", + "subWidth": 100, + "width": 20, + "_type": "org.uengine.modeling.model.PolicyHexagonal" + }, + "isSaga": false, + "name": "UpdateLoanBookStatusPolicy", + "displayName": "대출 도서 상태 변경", + "nameCamelCase": "updateLoanBookStatusPolicy", + "namePascalCase": "UpdateLoanBookStatusPolicy", + "namePlural": "updateLoanBookStatusPolicies", + "oldName": "", + "rotateStatus": false, + "_type": "org.uengine.modeling.model.Policy" + }, + "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0": { + "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + }, + "description": "도서 반납 후 상태를 '대출가능'으로 변경", + "elementView": { + "height": 116, + "width": 100, + "x": 425, + "y": 472, + "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", + "style": "{}", + "_type": "org.uengine.modeling.model.Policy" + }, + "fieldDescriptors": [], + "hexagonalView": { + "height": 20, + "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", + "style": "{}", + "subWidth": 100, + "width": 20, + "_type": "org.uengine.modeling.model.PolicyHexagonal" + }, + "isSaga": false, + "name": "ReturnBookStatusPolicy", + "displayName": "반납 도서 상태 변경", + "nameCamelCase": "returnBookStatusPolicy", + "namePascalCase": "ReturnBookStatusPolicy", + "namePlural": "returnBookStatusPolicies", + "oldName": "", + "rotateStatus": false, + "_type": "org.uengine.modeling.model.Policy" + } + }, + "relations": { + "8e86c434-1dae-0ebd-04ae-b81e3646d927": { + "_type": "org.uengine.modeling.model.Relation", + "name": "", + "id": "8e86c434-1dae-0ebd-04ae-b81e3646d927", + "sourceElement": { + "aggregateRoot": { + "_type": "org.uengine.modeling.model.AggregateRoot", + "fieldDescriptors": [ + { + "className": "Long", + "isCopy": false, + "isKey": true, + "name": "loanId", + "nameCamelCase": "loanId", + "namePascalCase": "LoanId", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Member", + "isCopy": false, + "isKey": false, + "name": "member", + "nameCamelCase": "member", + "namePascalCase": "Member", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Integer", + "isCopy": false, + "isKey": false, + "name": "loanPeriod", + "nameCamelCase": "loanPeriod", + "namePascalCase": "LoanPeriod", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "LoanStatus", + "isCopy": false, + "isKey": false, + "name": "loanStatus", + "nameCamelCase": "loanStatus", + "namePascalCase": "LoanStatus", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "loanDate", + "nameCamelCase": "loanDate", + "namePascalCase": "LoanDate", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "returnDueDate", + "nameCamelCase": "returnDueDate", + "namePascalCase": "ReturnDueDate", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "LoanDuration", + "isCopy": false, + "isKey": false, + "name": "loanDuration", + "nameCamelCase": "loanDuration", + "namePascalCase": "LoanDuration", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "entities": { + "elements": { + "30397330-2606-86f2-57f4-bf677bae16dc": { + "_type": "org.uengine.uml.model.Class", + "id": "30397330-2606-86f2-57f4-bf677bae16dc", + "name": "Loan", + "namePascalCase": "Loan", + "nameCamelCase": "loan", + "namePlural": "Loans", + "fieldDescriptors": [ + { + "className": "Long", + "isCopy": false, + "isKey": true, + "name": "loanId", + "displayName": "", + "nameCamelCase": "loanId", + "namePascalCase": "LoanId", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "Member", + "isCopy": false, + "isKey": false, + "name": "member", + "displayName": "", + "nameCamelCase": "member", + "namePascalCase": "Member", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "Integer", + "isCopy": false, + "isKey": false, + "name": "loanPeriod", + "displayName": "", + "nameCamelCase": "loanPeriod", + "namePascalCase": "LoanPeriod", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "LoanStatus", + "isCopy": false, + "isKey": false, + "name": "loanStatus", + "displayName": "", + "nameCamelCase": "loanStatus", + "namePascalCase": "LoanStatus", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "loanDate", + "displayName": "", + "nameCamelCase": "loanDate", + "namePascalCase": "LoanDate", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "returnDueDate", + "displayName": "", + "nameCamelCase": "returnDueDate", + "namePascalCase": "ReturnDueDate", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "LoanDuration", + "isCopy": false, + "isKey": false, + "name": "loanDuration", + "displayName": "", + "nameCamelCase": "loanDuration", + "namePascalCase": "LoanDuration", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + } + ], + "operations": [], + "elementView": { + "_type": "org.uengine.uml.model.Class", + "id": "30397330-2606-86f2-57f4-bf677bae16dc", + "x": 200, + "y": 200, + "width": 200, + "height": 100, + "style": "{}", + "titleH": 50, + "subEdgeH": 120, + "fieldH": 90, + "methodH": 30 + }, + "selected": false, + "relations": [], + "parentOperations": [], + "relationType": null, + "isVO": false, + "isAbstract": false, + "isInterface": false, + "isAggregateRoot": true, + "parentId": "f8dc3056-6183-539a-7f20-68681ddcc8a2" + }, + "09ee5a03-4449-1bde-3705-35c2ca198880": { + "_type": "org.uengine.uml.model.vo.Class", + "id": "09ee5a03-4449-1bde-3705-35c2ca198880", + "name": "Member", + "displayName": "회원", + "namePascalCase": "Member", + "nameCamelCase": "member", + "fieldDescriptors": [ + { + "className": "String", + "isKey": false, + "label": "- memberId: String", + "name": "memberId", + "nameCamelCase": "memberId", + "namePascalCase": "MemberId", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isKey": false, + "label": "- name: String", + "name": "name", + "nameCamelCase": "name", + "namePascalCase": "Name", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "operations": [], + "elementView": { + "_type": "org.uengine.uml.model.vo.address.Class", + "id": "09ee5a03-4449-1bde-3705-35c2ca198880", + "x": 700, + "y": 152, + "width": 200, + "height": 100, + "style": "{}", + "titleH": 50, + "subEdgeH": 170, + "fieldH": 150, + "methodH": 30 + }, + "selected": false, + "parentOperations": [], + "relationType": null, + "isVO": true, + "relations": [], + "groupElement": null, + "isAggregateRoot": false, + "namePlural": "Members", + "isAbstract": false, + "isInterface": false + }, + "bfdf118a-ad46-c0e3-2ae4-d0372b9d8361": { + "_type": "org.uengine.uml.model.enum", + "id": "bfdf118a-ad46-c0e3-2ae4-d0372b9d8361", + "name": "LoanStatus", + "displayName": "대출 상태", + "nameCamelCase": "loanStatus", + "namePascalCase": "LoanStatus", + "namePlural": "loanStatuses", + "elementView": { + "_type": "org.uengine.uml.model.enum", + "id": "bfdf118a-ad46-c0e3-2ae4-d0372b9d8361", + "x": 700, + "y": 456, + "width": 200, + "height": 100, + "style": "{}", + "titleH": 50, + "subEdgeH": 50 + }, + "selected": false, + "items": [ + { + "value": "BORROWED" + }, + { + "value": "OVERDUE" + }, + { + "value": "RETURNED" + } + ], + "useKeyValue": false, + "relations": [] + }, + "8c1b2fee-54a7-b460-486a-1453593fac3f": { + "_type": "org.uengine.uml.model.enum", + "id": "8c1b2fee-54a7-b460-486a-1453593fac3f", + "name": "LoanDuration", + "displayName": "대출 기간 옵션", + "nameCamelCase": "loanDuration", + "namePascalCase": "LoanDuration", + "namePlural": "loanDurations", + "elementView": { + "_type": "org.uengine.uml.model.enum", + "id": "8c1b2fee-54a7-b460-486a-1453593fac3f", + "x": 950, + "y": 456, + "width": 200, + "height": 100, + "style": "{}", + "titleH": 50, + "subEdgeH": 50 + }, + "selected": false, + "items": [ + { + "value": "7_DAYS" + }, + { + "value": "14_DAYS" + }, + { + "value": "30_DAYS" + } + ], + "useKeyValue": false, + "relations": [] + } + }, + "relations": {} + }, + "operations": [] + }, + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "name": "85c498d4-39ed-5546-59b8-8eaaf33cffc8", + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + }, + "commands": [], + "description": null, + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2", + "elementView": { + "_type": "org.uengine.modeling.model.Aggregate", + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2", + "x": 1235, + "y": 450, + "width": 130, + "height": 400 + }, + "events": [], + "hexagonalView": { + "_type": "org.uengine.modeling.model.AggregateHexagonal", + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2", + "x": 0, + "y": 0, + "subWidth": 0, + "width": 0 + }, + "name": "Loan", + "displayName": "대출", + "nameCamelCase": "loan", + "namePascalCase": "Loan", + "namePlural": "loans", + "rotateStatus": false, + "selected": false, + "_type": "org.uengine.modeling.model.Aggregate" + }, + "targetElement": { + "aggregateRoot": { + "_type": "org.uengine.modeling.model.AggregateRoot", + "fieldDescriptors": [ + { + "className": "String", + "isCopy": false, + "isKey": true, + "name": "bookId", + "nameCamelCase": "bookId", + "namePascalCase": "BookId", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "title", + "nameCamelCase": "title", + "namePascalCase": "Title", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "isbn", + "nameCamelCase": "isbn", + "namePascalCase": "Isbn", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "author", + "nameCamelCase": "author", + "namePascalCase": "Author", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "publisher", + "nameCamelCase": "publisher", + "namePascalCase": "Publisher", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Category", + "isCopy": false, + "isKey": false, + "name": "category", + "nameCamelCase": "category", + "namePascalCase": "Category", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Status", + "isCopy": false, + "isKey": false, + "name": "status", + "nameCamelCase": "status", + "namePascalCase": "Status", + "displayName": "", + "referenceClass": null, + "isOverrideField": false, + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "entities": { + "elements": { + "0a22d0ce-0f1d-80fa-42b3-19647aa41149": { + "_type": "org.uengine.uml.model.Class", + "id": "0a22d0ce-0f1d-80fa-42b3-19647aa41149", + "name": "Book", + "namePascalCase": "Book", + "nameCamelCase": "book", + "namePlural": "Books", + "fieldDescriptors": [ + { + "className": "String", + "isCopy": false, + "isKey": true, + "name": "bookId", + "displayName": "", + "nameCamelCase": "bookId", + "namePascalCase": "BookId", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "title", + "displayName": "", + "nameCamelCase": "title", + "namePascalCase": "Title", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "isbn", + "displayName": "", + "nameCamelCase": "isbn", + "namePascalCase": "Isbn", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "author", + "displayName": "", + "nameCamelCase": "author", + "namePascalCase": "Author", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "publisher", + "displayName": "", + "nameCamelCase": "publisher", + "namePascalCase": "Publisher", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "Category", + "isCopy": false, + "isKey": false, + "name": "category", + "displayName": "", + "nameCamelCase": "category", + "namePascalCase": "Category", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + }, + { + "className": "Status", + "isCopy": false, + "isKey": false, + "name": "status", + "displayName": "", + "nameCamelCase": "status", + "namePascalCase": "Status", + "_type": "org.uengine.model.FieldDescriptor", + "inputUI": null, + "options": null + } + ], + "operations": [], + "elementView": { + "_type": "org.uengine.uml.model.Class", + "id": "0a22d0ce-0f1d-80fa-42b3-19647aa41149", + "x": 200, + "y": 200, + "width": 200, + "height": 100, + "style": "{}", + "titleH": 50, + "subEdgeH": 120, + "fieldH": 90, + "methodH": 30 + }, + "selected": false, + "relations": [], + "parentOperations": [], + "relationType": null, + "isVO": false, + "isAbstract": false, + "isInterface": false, + "isAggregateRoot": true, + "parentId": "554241df-8091-4819-87d3-8fa38d18deaa" + }, + "e029780c-da79-3641-c1f3-8e45ebd5bfb7": { + "_type": "org.uengine.uml.model.enum", + "id": "e029780c-da79-3641-c1f3-8e45ebd5bfb7", + "name": "Category", + "displayName": "도서 카테고리", + "nameCamelCase": "category", + "namePascalCase": "Category", + "namePlural": "categories", + "elementView": { + "_type": "org.uengine.uml.model.enum", + "id": "e029780c-da79-3641-c1f3-8e45ebd5bfb7", + "x": 700, + "y": 456, + "width": 200, + "height": 100, + "style": "{}", + "titleH": 50, + "subEdgeH": 50 + }, + "selected": false, + "items": [ + { + "value": "NOVEL" + }, + { + "value": "NONFICTION" + }, + { + "value": "ACADEMIC" + }, + { + "value": "MAGAZINE" + } + ], + "useKeyValue": false, + "relations": [] + }, + "3abb79e5-1456-e11b-560b-1483b5807a68": { + "_type": "org.uengine.uml.model.enum", + "id": "3abb79e5-1456-e11b-560b-1483b5807a68", + "name": "Status", + "displayName": "도서 상태", + "nameCamelCase": "status", + "namePascalCase": "Status", + "namePlural": "statuses", + "elementView": { + "_type": "org.uengine.uml.model.enum", + "id": "3abb79e5-1456-e11b-560b-1483b5807a68", + "x": 950, + "y": 456, + "width": 200, + "height": 100, + "style": "{}", + "titleH": 50, + "subEdgeH": 50 + }, + "selected": false, + "items": [ + { + "value": "AVAILABLE" + }, + { + "value": "BORROWED" + }, + { + "value": "RESERVED" + }, + { + "value": "DISCARDED" + } + ], + "useKeyValue": false, + "relations": [] + } + }, + "relations": {} + }, + "operations": [] + }, + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "name": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741", + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + }, + "commands": [], + "description": null, + "id": "554241df-8091-4819-87d3-8fa38d18deaa", + "elementView": { + "_type": "org.uengine.modeling.model.Aggregate", + "id": "554241df-8091-4819-87d3-8fa38d18deaa", + "x": 650, + "y": 450, + "width": 130, + "height": 400 + }, + "events": [], + "hexagonalView": { + "_type": "org.uengine.modeling.model.AggregateHexagonal", + "id": "554241df-8091-4819-87d3-8fa38d18deaa", + "x": 0, + "y": 0, + "subWidth": 0, + "width": 0 + }, + "name": "Book", + "displayName": "도서", + "nameCamelCase": "book", + "namePascalCase": "Book", + "namePlural": "books", + "rotateStatus": false, + "selected": false, + "_type": "org.uengine.modeling.model.Aggregate" + }, + "from": "f8dc3056-6183-539a-7f20-68681ddcc8a2", + "to": "554241df-8091-4819-87d3-8fa38d18deaa", + "relationView": { + "id": "8e86c434-1dae-0ebd-04ae-b81e3646d927", + "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", + "from": "f8dc3056-6183-539a-7f20-68681ddcc8a2", + "to": "554241df-8091-4819-87d3-8fa38d18deaa", + "needReconnect": true, + "value": "[[1170,524],[944,524],[944,456],[715,456]]" + }, + "hexagonalView": { + "_type": "org.uengine.modeling.model.RelationHexagonal", + "from": "f8dc3056-6183-539a-7f20-68681ddcc8a2", + "id": "8e86c434-1dae-0ebd-04ae-b81e3646d927", + "needReconnect": true, + "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", + "to": "554241df-8091-4819-87d3-8fa38d18deaa", + "value": null + }, + "sourceMultiplicity": "1", + "targetMultiplicity": "1", + "displayName": "" + }, + "abdff6e1-deb4-4dea-426c-3c0b32661397": { + "_type": "org.uengine.modeling.model.Relation", + "name": "", + "id": "abdff6e1-deb4-4dea-426c-3c0b32661397", + "sourceElement": { + "_type": "org.uengine.modeling.model.Command", + "outputEvents": [ + "BookCreated" + ], + "aggregate": { + "id": "554241df-8091-4819-87d3-8fa38d18deaa" + }, + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + }, + "controllerInfo": { + "method": "POST" + }, + "fieldDescriptors": [ + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "title", + "nameCamelCase": "title", + "namePascalCase": "Title", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "isbn", + "nameCamelCase": "isbn", + "namePascalCase": "Isbn", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "author", + "nameCamelCase": "author", + "namePascalCase": "Author", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "publisher", + "nameCamelCase": "publisher", + "namePascalCase": "Publisher", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Category", + "isCopy": false, + "isKey": false, + "name": "category", + "nameCamelCase": "category", + "namePascalCase": "Category", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "description": null, + "id": "fcdfa519-b23b-a129-296b-90b34d98a7db", + "elementView": { + "_type": "org.uengine.modeling.model.Command", + "height": 115, + "id": "fcdfa519-b23b-a129-296b-90b34d98a7db", + "style": "{}", + "width": 100, + "x": 556, + "y": 250, + "z-index": 999 + }, + "hexagonalView": { + "_type": "org.uengine.modeling.model.CommandHexagonal", + "height": 0, + "id": "fcdfa519-b23b-a129-296b-90b34d98a7db", + "style": "{}", + "width": 0, + "x": 0, + "y": 0 + }, + "isRestRepository": false, + "name": "CreateBook", + "displayName": "도서 등록", + "nameCamelCase": "createBook", + "namePascalCase": "CreateBook", + "namePlural": "createBooks", + "relationCommandInfo": [], + "relationEventInfo": [], + "restRepositoryInfo": { + "method": "POST" + }, + "rotateStatus": false, + "selected": false, + "trigger": "@PrePersist" + }, + "targetElement": { + "alertURL": "/static/image/symbol/alert-icon.png", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "checkAlert": true, + "description": null, + "id": "5afcf0dc-5c3b-f67a-d273-fab421febc20", + "elementView": { + "angle": 0, + "height": 115, + "id": "5afcf0dc-5c3b-f67a-d273-fab421febc20", + "style": "{}", + "width": 100, + "x": 744, + "y": 250, + "_type": "org.uengine.modeling.model.Event" + }, + "fieldDescriptors": [ + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "title", + "nameCamelCase": "title", + "namePascalCase": "Title", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "isbn", + "nameCamelCase": "isbn", + "namePascalCase": "Isbn", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "author", + "nameCamelCase": "author", + "namePascalCase": "Author", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "publisher", + "nameCamelCase": "publisher", + "namePascalCase": "Publisher", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Category", + "isCopy": false, + "isKey": false, + "name": "category", + "nameCamelCase": "category", + "namePascalCase": "Category", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Status", + "isCopy": false, + "isKey": false, + "name": "status", + "nameCamelCase": "status", + "namePascalCase": "Status", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "hexagonalView": { + "height": 0, + "id": "5afcf0dc-5c3b-f67a-d273-fab421febc20", + "style": "{}", + "width": 0, + "x": 0, + "y": 0, + "_type": "org.uengine.modeling.model.EventHexagonal" + }, + "name": "BookCreated", + "displayName": "도서 등록됨", + "nameCamelCase": "bookCreated", + "namePascalCase": "BookCreated", + "namePlural": "", + "relationCommandInfo": [], + "relationPolicyInfo": [], + "rotateStatus": false, + "selected": false, + "trigger": "@PostPersist", + "_type": "org.uengine.modeling.model.Event", + "aggregate": { + "id": "554241df-8091-4819-87d3-8fa38d18deaa" + }, + "boundedContext": { + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + } + }, + "from": "fcdfa519-b23b-a129-296b-90b34d98a7db", + "to": "5afcf0dc-5c3b-f67a-d273-fab421febc20", + "relationView": { + "id": "abdff6e1-deb4-4dea-426c-3c0b32661397", + "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", + "from": "fcdfa519-b23b-a129-296b-90b34d98a7db", + "to": "5afcf0dc-5c3b-f67a-d273-fab421febc20", + "needReconnect": true, + "value": "[[606,252],[694,252]]" + }, + "hexagonalView": { + "_type": "org.uengine.modeling.model.RelationHexagonal", + "from": "fcdfa519-b23b-a129-296b-90b34d98a7db", + "id": "abdff6e1-deb4-4dea-426c-3c0b32661397", + "needReconnect": true, + "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", + "to": "5afcf0dc-5c3b-f67a-d273-fab421febc20", + "value": null + }, + "sourceMultiplicity": "1", + "targetMultiplicity": "1", + "displayName": "" + }, + "347c91c4-3478-cef4-4493-208a8a50dafb": { + "_type": "org.uengine.modeling.model.Relation", + "name": "", + "id": "347c91c4-3478-cef4-4493-208a8a50dafb", + "sourceElement": { + "_type": "org.uengine.modeling.model.Command", + "outputEvents": [ + "BookStatusChanged" + ], + "aggregate": { + "id": "554241df-8091-4819-87d3-8fa38d18deaa" + }, + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + }, + "controllerInfo": { + "method": "PUT" + }, + "fieldDescriptors": [ + { + "className": "Status", + "isCopy": false, + "isKey": false, + "name": "status", + "nameCamelCase": "status", + "namePascalCase": "Status", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "reason", + "nameCamelCase": "reason", + "namePascalCase": "Reason", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "description": null, + "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", + "elementView": { + "_type": "org.uengine.modeling.model.Command", + "height": 115, + "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", + "style": "{}", + "width": 100, + "x": 556, + "y": 380, + "z-index": 999 + }, + "hexagonalView": { + "_type": "org.uengine.modeling.model.CommandHexagonal", + "height": 0, + "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", + "style": "{}", + "width": 0, + "x": 0, + "y": 0 + }, + "isRestRepository": false, + "name": "ChangeBookStatus", + "displayName": "도서 상태 변경", + "nameCamelCase": "changeBookStatus", + "namePascalCase": "ChangeBookStatus", + "namePlural": "changeBookStatuses", + "relationCommandInfo": [], + "relationEventInfo": [], + "restRepositoryInfo": { + "method": "PUT" + }, + "rotateStatus": false, + "selected": false, + "trigger": "@PrePersist" + }, + "targetElement": { + "alertURL": "/static/image/symbol/alert-icon.png", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "checkAlert": true, + "description": null, + "id": "a82665ee-dc60-21db-a491-8fffbc623007", + "elementView": { + "angle": 0, + "height": 115, + "id": "a82665ee-dc60-21db-a491-8fffbc623007", + "style": "{}", + "width": 100, + "x": 744, + "y": 380, + "_type": "org.uengine.modeling.model.Event" + }, + "fieldDescriptors": [ + { + "className": "Status", + "isCopy": false, + "isKey": false, + "name": "previousStatus", + "nameCamelCase": "previousStatus", + "namePascalCase": "PreviousStatus", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Status", + "isCopy": false, + "isKey": false, + "name": "currentStatus", + "nameCamelCase": "currentStatus", + "namePascalCase": "CurrentStatus", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "changeDate", + "nameCamelCase": "changeDate", + "namePascalCase": "ChangeDate", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "reason", + "nameCamelCase": "reason", + "namePascalCase": "Reason", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "hexagonalView": { + "height": 0, + "id": "a82665ee-dc60-21db-a491-8fffbc623007", + "style": "{}", + "width": 0, + "x": 0, + "y": 0, + "_type": "org.uengine.modeling.model.EventHexagonal" + }, + "name": "BookStatusChanged", + "displayName": "도서 상태 변경됨", + "nameCamelCase": "bookStatusChanged", + "namePascalCase": "BookStatusChanged", + "namePlural": "", + "relationCommandInfo": [], + "relationPolicyInfo": [], + "rotateStatus": false, + "selected": false, + "trigger": "@PostPersist", + "_type": "org.uengine.modeling.model.Event", + "aggregate": { + "id": "554241df-8091-4819-87d3-8fa38d18deaa" + }, + "boundedContext": { + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + } + }, + "from": "ae7bd270-ac8c-7103-9866-c3e1867c019a", + "to": "a82665ee-dc60-21db-a491-8fffbc623007", + "relationView": { + "id": "347c91c4-3478-cef4-4493-208a8a50dafb", + "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", + "from": "ae7bd270-ac8c-7103-9866-c3e1867c019a", + "to": "a82665ee-dc60-21db-a491-8fffbc623007", + "needReconnect": true, + "value": "[[606,380],[694,380]]" + }, + "hexagonalView": { + "_type": "org.uengine.modeling.model.RelationHexagonal", + "from": "ae7bd270-ac8c-7103-9866-c3e1867c019a", + "id": "347c91c4-3478-cef4-4493-208a8a50dafb", + "needReconnect": true, + "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", + "to": "a82665ee-dc60-21db-a491-8fffbc623007", + "value": null + }, + "sourceMultiplicity": "1", + "targetMultiplicity": "1", + "displayName": "" + }, + "295dd65b-874b-00ae-910f-8eba75db08f1": { + "_type": "org.uengine.modeling.model.Relation", + "name": "", + "id": "295dd65b-874b-00ae-910f-8eba75db08f1", + "sourceElement": { + "_type": "org.uengine.modeling.model.Command", + "outputEvents": [ + "LoanCreated" + ], + "aggregate": { + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" + }, + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + }, + "controllerInfo": { + "method": "POST" + }, + "fieldDescriptors": [ + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "memberId", + "nameCamelCase": "memberId", + "namePascalCase": "MemberId", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "LoanDuration", + "isCopy": false, + "isKey": false, + "name": "loanDuration", + "nameCamelCase": "loanDuration", + "namePascalCase": "LoanDuration", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "loanDate", + "nameCamelCase": "loanDate", + "namePascalCase": "LoanDate", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "returnDueDate", + "nameCamelCase": "returnDueDate", + "namePascalCase": "ReturnDueDate", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "description": null, + "id": "83df6bbe-e74e-3765-06a7-c79af07cb94d", + "elementView": { + "_type": "org.uengine.modeling.model.Command", + "height": 115, + "id": "83df6bbe-e74e-3765-06a7-c79af07cb94d", + "style": "{}", + "width": 100, + "x": 1141, + "y": 250, + "z-index": 999 + }, + "hexagonalView": { + "_type": "org.uengine.modeling.model.CommandHexagonal", + "height": 0, + "id": "83df6bbe-e74e-3765-06a7-c79af07cb94d", + "style": "{}", + "width": 0, + "x": 0, + "y": 0 + }, + "isRestRepository": false, + "name": "CreateLoan", + "displayName": "대출 신청", + "nameCamelCase": "createLoan", + "namePascalCase": "CreateLoan", + "namePlural": "createLoans", + "relationCommandInfo": [], + "relationEventInfo": [], + "restRepositoryInfo": { + "method": "POST" + }, + "rotateStatus": false, + "selected": false, + "trigger": "@PrePersist" + }, + "targetElement": { + "alertURL": "/static/image/symbol/alert-icon.png", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "checkAlert": true, + "description": null, + "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", + "elementView": { + "angle": 0, + "height": 115, + "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", + "style": "{}", + "width": 100, + "x": 1329, + "y": 250, + "_type": "org.uengine.modeling.model.Event" + }, + "fieldDescriptors": [ + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "memberId", + "nameCamelCase": "memberId", + "namePascalCase": "MemberId", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "LoanDuration", + "isCopy": false, + "isKey": false, + "name": "loanDuration", + "nameCamelCase": "loanDuration", + "namePascalCase": "LoanDuration", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "loanDate", + "nameCamelCase": "loanDate", + "namePascalCase": "LoanDate", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "returnDueDate", + "nameCamelCase": "returnDueDate", + "namePascalCase": "ReturnDueDate", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "LoanStatus", + "isCopy": false, + "isKey": false, + "name": "loanStatus", + "nameCamelCase": "loanStatus", + "namePascalCase": "LoanStatus", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "hexagonalView": { + "height": 0, + "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", + "style": "{}", + "width": 0, + "x": 0, + "y": 0, + "_type": "org.uengine.modeling.model.EventHexagonal" + }, + "name": "LoanCreated", + "displayName": "대출 생성", + "nameCamelCase": "loanCreated", + "namePascalCase": "LoanCreated", + "namePlural": "", + "relationCommandInfo": [], + "relationPolicyInfo": [], + "rotateStatus": false, + "selected": false, + "trigger": "@PostPersist", + "_type": "org.uengine.modeling.model.Event", + "aggregate": { + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" + }, + "boundedContext": { + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + } + }, + "from": "83df6bbe-e74e-3765-06a7-c79af07cb94d", + "to": "78937fb4-354e-7c45-ea1f-a9604081b75b", + "relationView": { + "id": "295dd65b-874b-00ae-910f-8eba75db08f1", + "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", + "from": "83df6bbe-e74e-3765-06a7-c79af07cb94d", + "to": "78937fb4-354e-7c45-ea1f-a9604081b75b", + "needReconnect": true, + "value": "[[1191,252],[1279,252]]" + }, + "hexagonalView": { + "_type": "org.uengine.modeling.model.RelationHexagonal", + "from": "83df6bbe-e74e-3765-06a7-c79af07cb94d", + "id": "295dd65b-874b-00ae-910f-8eba75db08f1", + "needReconnect": true, + "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", + "to": "78937fb4-354e-7c45-ea1f-a9604081b75b", + "value": null + }, + "sourceMultiplicity": "1", + "targetMultiplicity": "1", + "displayName": "" + }, + "2f10ed41-ab75-4f4d-68ab-526c59d76ee2": { + "_type": "org.uengine.modeling.model.Relation", + "name": "", + "id": "2f10ed41-ab75-4f4d-68ab-526c59d76ee2", + "sourceElement": { + "_type": "org.uengine.modeling.model.Command", + "outputEvents": [ + "LoanExtended" + ], + "aggregate": { + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" + }, + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + }, + "controllerInfo": { + "method": "PUT" + }, + "fieldDescriptors": [ + { + "className": "LoanDuration", + "isCopy": false, + "isKey": false, + "name": "extensionDuration", + "nameCamelCase": "extensionDuration", + "namePascalCase": "ExtensionDuration", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "description": null, + "id": "b524c993-e776-e8fe-2fb9-4654540d48fe", + "elementView": { + "_type": "org.uengine.modeling.model.Command", + "height": 115, + "id": "b524c993-e776-e8fe-2fb9-4654540d48fe", + "style": "{}", + "width": 100, + "x": 1141, + "y": 380, + "z-index": 999 + }, + "hexagonalView": { + "_type": "org.uengine.modeling.model.CommandHexagonal", + "height": 0, + "id": "b524c993-e776-e8fe-2fb9-4654540d48fe", + "style": "{}", + "width": 0, + "x": 0, + "y": 0 + }, + "isRestRepository": false, + "name": "ExtendLoan", + "displayName": "대출 연장", + "nameCamelCase": "extendLoan", + "namePascalCase": "ExtendLoan", + "namePlural": "extendLoans", + "relationCommandInfo": [], + "relationEventInfo": [], + "restRepositoryInfo": { + "method": "PUT" + }, + "rotateStatus": false, + "selected": false, + "trigger": "@PrePersist" + }, + "targetElement": { + "alertURL": "/static/image/symbol/alert-icon.png", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "checkAlert": true, + "description": null, + "id": "efa0739f-ad74-5be2-0d5f-27a167cdc711", + "elementView": { + "angle": 0, + "height": 115, + "id": "efa0739f-ad74-5be2-0d5f-27a167cdc711", + "style": "{}", + "width": 100, + "x": 1329, + "y": 380, + "_type": "org.uengine.modeling.model.Event" + }, + "fieldDescriptors": [ + { + "className": "LoanDuration", + "isCopy": false, + "isKey": false, + "name": "extensionDuration", + "nameCamelCase": "extensionDuration", + "namePascalCase": "ExtensionDuration", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "newReturnDueDate", + "nameCamelCase": "newReturnDueDate", + "namePascalCase": "NewReturnDueDate", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "hexagonalView": { + "height": 0, + "id": "efa0739f-ad74-5be2-0d5f-27a167cdc711", + "style": "{}", + "width": 0, + "x": 0, + "y": 0, + "_type": "org.uengine.modeling.model.EventHexagonal" + }, + "name": "LoanExtended", + "displayName": "대출 연장됨", + "nameCamelCase": "loanExtended", + "namePascalCase": "LoanExtended", + "namePlural": "", + "relationCommandInfo": [], + "relationPolicyInfo": [], + "rotateStatus": false, + "selected": false, + "trigger": "@PostPersist", + "_type": "org.uengine.modeling.model.Event", + "aggregate": { + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" + }, + "boundedContext": { + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + } + }, + "from": "b524c993-e776-e8fe-2fb9-4654540d48fe", + "to": "efa0739f-ad74-5be2-0d5f-27a167cdc711", + "relationView": { + "id": "2f10ed41-ab75-4f4d-68ab-526c59d76ee2", + "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", + "from": "b524c993-e776-e8fe-2fb9-4654540d48fe", + "to": "efa0739f-ad74-5be2-0d5f-27a167cdc711", + "needReconnect": true, + "value": "[[1191,380],[1279,380]]" + }, + "hexagonalView": { + "_type": "org.uengine.modeling.model.RelationHexagonal", + "from": "b524c993-e776-e8fe-2fb9-4654540d48fe", + "id": "2f10ed41-ab75-4f4d-68ab-526c59d76ee2", + "needReconnect": true, + "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", + "to": "efa0739f-ad74-5be2-0d5f-27a167cdc711", + "value": null + }, + "sourceMultiplicity": "1", + "targetMultiplicity": "1", + "displayName": "" + }, + "20476c5e-0541-5f9d-d188-02fce5fe93cd": { + "_type": "org.uengine.modeling.model.Relation", + "name": "", + "id": "20476c5e-0541-5f9d-d188-02fce5fe93cd", + "sourceElement": { + "_type": "org.uengine.modeling.model.Command", + "outputEvents": [ + "LoanReturned" + ], + "aggregate": { + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" + }, + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + }, + "controllerInfo": { + "method": "PUT" + }, + "fieldDescriptors": [], + "description": null, + "id": "1179f8d5-304f-fc47-74d8-4f93b8129008", + "elementView": { + "_type": "org.uengine.modeling.model.Command", + "height": 115, + "id": "1179f8d5-304f-fc47-74d8-4f93b8129008", + "style": "{}", + "width": 100, + "x": 1141, + "y": 510, + "z-index": 999 + }, + "hexagonalView": { + "_type": "org.uengine.modeling.model.CommandHexagonal", + "height": 0, + "id": "1179f8d5-304f-fc47-74d8-4f93b8129008", + "style": "{}", + "width": 0, + "x": 0, + "y": 0 + }, + "isRestRepository": false, + "name": "ReturnLoan", + "displayName": "대출 반납", + "nameCamelCase": "returnLoan", + "namePascalCase": "ReturnLoan", + "namePlural": "returnLoans", + "relationCommandInfo": [], + "relationEventInfo": [], + "restRepositoryInfo": { + "method": "PUT" + }, + "rotateStatus": false, + "selected": false, + "trigger": "@PrePersist" + }, + "targetElement": { + "alertURL": "/static/image/symbol/alert-icon.png", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "checkAlert": true, + "description": null, + "id": "ac75186c-693b-322d-9554-c112044993f4", + "elementView": { + "angle": 0, + "height": 115, + "id": "ac75186c-693b-322d-9554-c112044993f4", + "style": "{}", + "width": 100, + "x": 1329, + "y": 510, + "_type": "org.uengine.modeling.model.Event" + }, + "fieldDescriptors": [ + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "returnDate", + "nameCamelCase": "returnDate", + "namePascalCase": "ReturnDate", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "LoanStatus", + "isCopy": false, + "isKey": false, + "name": "nextStatus", + "nameCamelCase": "nextStatus", + "namePascalCase": "NextStatus", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "hexagonalView": { + "height": 0, + "id": "ac75186c-693b-322d-9554-c112044993f4", + "style": "{}", + "width": 0, + "x": 0, + "y": 0, + "_type": "org.uengine.modeling.model.EventHexagonal" + }, + "name": "LoanReturned", + "displayName": "대출 반납됨", + "nameCamelCase": "loanReturned", + "namePascalCase": "LoanReturned", + "namePlural": "", + "relationCommandInfo": [], + "relationPolicyInfo": [], + "rotateStatus": false, + "selected": false, + "trigger": "@PostPersist", + "_type": "org.uengine.modeling.model.Event", + "aggregate": { + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" + }, + "boundedContext": { + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + } + }, + "from": "1179f8d5-304f-fc47-74d8-4f93b8129008", + "to": "ac75186c-693b-322d-9554-c112044993f4", + "relationView": { + "id": "20476c5e-0541-5f9d-d188-02fce5fe93cd", + "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", + "from": "1179f8d5-304f-fc47-74d8-4f93b8129008", + "to": "ac75186c-693b-322d-9554-c112044993f4", + "needReconnect": true, + "value": "[[1191,512],[1279,512]]" + }, + "hexagonalView": { + "_type": "org.uengine.modeling.model.RelationHexagonal", + "from": "1179f8d5-304f-fc47-74d8-4f93b8129008", + "id": "20476c5e-0541-5f9d-d188-02fce5fe93cd", + "needReconnect": true, + "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", + "to": "ac75186c-693b-322d-9554-c112044993f4", + "value": null + }, + "sourceMultiplicity": "1", + "targetMultiplicity": "1", + "displayName": "" + }, + "e20354ba-41ff-5f16-f2e2-40459087191e": { + "_type": "org.uengine.modeling.model.Relation", + "name": "", + "id": "e20354ba-41ff-5f16-f2e2-40459087191e", + "sourceElement": { + "alertURL": "/static/image/symbol/alert-icon.png", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "checkAlert": true, + "description": null, + "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", + "elementView": { + "angle": 0, + "height": 115, + "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", + "style": "{}", + "width": 100, + "x": 1329, + "y": 250, + "_type": "org.uengine.modeling.model.Event" + }, + "fieldDescriptors": [ + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "memberId", + "nameCamelCase": "memberId", + "namePascalCase": "MemberId", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "LoanDuration", + "isCopy": false, + "isKey": false, + "name": "loanDuration", + "nameCamelCase": "loanDuration", + "namePascalCase": "LoanDuration", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "loanDate", + "nameCamelCase": "loanDate", + "namePascalCase": "LoanDate", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "returnDueDate", + "nameCamelCase": "returnDueDate", + "namePascalCase": "ReturnDueDate", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "LoanStatus", + "isCopy": false, + "isKey": false, + "name": "loanStatus", + "nameCamelCase": "loanStatus", + "namePascalCase": "LoanStatus", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "hexagonalView": { + "height": 0, + "id": "78937fb4-354e-7c45-ea1f-a9604081b75b", + "style": "{}", + "width": 0, + "x": 0, + "y": 0, + "_type": "org.uengine.modeling.model.EventHexagonal" + }, + "name": "LoanCreated", + "displayName": "대출 생성", + "nameCamelCase": "loanCreated", + "namePascalCase": "LoanCreated", + "namePlural": "", + "relationCommandInfo": [], + "relationPolicyInfo": [], + "rotateStatus": false, + "selected": false, + "trigger": "@PostPersist", + "_type": "org.uengine.modeling.model.Event", + "aggregate": { + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" + }, + "boundedContext": { + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + } + }, + "targetElement": { + "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + }, + "description": "도서 대출 후 상태를 '대출중'으로 변경", + "elementView": { + "height": 115, + "width": 100, + "x": 437, + "y": 380, + "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", + "style": "{}", + "_type": "org.uengine.modeling.model.Policy" + }, + "fieldDescriptors": [], + "hexagonalView": { + "height": 20, + "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", + "style": "{}", + "subWidth": 100, + "width": 20, + "_type": "org.uengine.modeling.model.PolicyHexagonal" + }, + "isSaga": false, + "name": "UpdateLoanBookStatusPolicy", + "displayName": "대출 도서 상태 변경", + "nameCamelCase": "updateLoanBookStatusPolicy", + "namePascalCase": "UpdateLoanBookStatusPolicy", + "namePlural": "updateLoanBookStatusPolicies", + "oldName": "", + "rotateStatus": false, + "_type": "org.uengine.modeling.model.Policy" + }, + "from": "78937fb4-354e-7c45-ea1f-a9604081b75b", + "to": "dcfad35d-4305-25a5-993d-9426931c4ee6", + "relationView": { + "id": "e20354ba-41ff-5f16-f2e2-40459087191e", + "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", + "from": "78937fb4-354e-7c45-ea1f-a9604081b75b", + "to": "dcfad35d-4305-25a5-993d-9426931c4ee6", + "needReconnect": true, + "value": "[[1328,192],[1328,136],[424,136],[424,182]]" + }, + "hexagonalView": { + "_type": "org.uengine.modeling.model.RelationHexagonal", + "from": "78937fb4-354e-7c45-ea1f-a9604081b75b", + "id": "e20354ba-41ff-5f16-f2e2-40459087191e", + "needReconnect": true, + "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", + "to": "dcfad35d-4305-25a5-993d-9426931c4ee6", + "value": null + }, + "sourceMultiplicity": "1", + "targetMultiplicity": "1", + "displayName": "" + }, + "78a22ec0-5533-0df2-f8be-c8492487e98d": { + "_type": "org.uengine.modeling.model.Relation", + "name": "", + "id": "78a22ec0-5533-0df2-f8be-c8492487e98d", + "sourceElement": { + "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + }, + "description": "도서 대출 후 상태를 '대출중'으로 변경", + "elementView": { + "height": 115, + "width": 100, + "x": 437, + "y": 380, + "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", + "style": "{}", + "_type": "org.uengine.modeling.model.Policy" + }, + "fieldDescriptors": [], + "hexagonalView": { + "height": 20, + "id": "dcfad35d-4305-25a5-993d-9426931c4ee6", + "style": "{}", + "subWidth": 100, + "width": 20, + "_type": "org.uengine.modeling.model.PolicyHexagonal" + }, + "isSaga": false, + "name": "UpdateLoanBookStatusPolicy", + "displayName": "대출 도서 상태 변경", + "nameCamelCase": "updateLoanBookStatusPolicy", + "namePascalCase": "UpdateLoanBookStatusPolicy", + "namePlural": "updateLoanBookStatusPolicies", + "oldName": "", + "rotateStatus": false, + "_type": "org.uengine.modeling.model.Policy" + }, + "targetElement": { + "_type": "org.uengine.modeling.model.Command", + "outputEvents": [ + "BookStatusChanged" + ], + "aggregate": { + "id": "554241df-8091-4819-87d3-8fa38d18deaa" + }, + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + }, + "controllerInfo": { + "method": "PUT" + }, + "fieldDescriptors": [ + { + "className": "Status", + "isCopy": false, + "isKey": false, + "name": "status", + "nameCamelCase": "status", + "namePascalCase": "Status", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "reason", + "nameCamelCase": "reason", + "namePascalCase": "Reason", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "description": null, + "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", + "elementView": { + "_type": "org.uengine.modeling.model.Command", + "height": 115, + "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", + "style": "{}", + "width": 100, + "x": 556, + "y": 380, + "z-index": 999 + }, + "hexagonalView": { + "_type": "org.uengine.modeling.model.CommandHexagonal", + "height": 0, + "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", + "style": "{}", + "width": 0, + "x": 0, + "y": 0 + }, + "isRestRepository": false, + "name": "ChangeBookStatus", + "displayName": "도서 상태 변경", + "nameCamelCase": "changeBookStatus", + "namePascalCase": "ChangeBookStatus", + "namePlural": "changeBookStatuses", + "relationCommandInfo": [], + "relationEventInfo": [], + "restRepositoryInfo": { + "method": "PUT" + }, + "rotateStatus": false, + "selected": false, + "trigger": "@PrePersist" + }, + "from": "dcfad35d-4305-25a5-993d-9426931c4ee6", + "to": "ae7bd270-ac8c-7103-9866-c3e1867c019a", + "relationView": { + "id": "78a22ec0-5533-0df2-f8be-c8492487e98d", + "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", + "from": "dcfad35d-4305-25a5-993d-9426931c4ee6", + "to": "ae7bd270-ac8c-7103-9866-c3e1867c019a", + "needReconnect": true, + "value": "[[424,298],[424,380],[506,380]]" + }, + "hexagonalView": { + "_type": "org.uengine.modeling.model.RelationHexagonal", + "from": "dcfad35d-4305-25a5-993d-9426931c4ee6", + "id": "78a22ec0-5533-0df2-f8be-c8492487e98d", + "needReconnect": true, + "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", + "to": "ae7bd270-ac8c-7103-9866-c3e1867c019a", + "value": null + }, + "sourceMultiplicity": "1", + "targetMultiplicity": "1", + "displayName": "" + }, + "a4abefcb-3ab3-c3d3-f730-4abb61c7073a": { + "_type": "org.uengine.modeling.model.Relation", + "name": "", + "id": "a4abefcb-3ab3-c3d3-f730-4abb61c7073a", + "sourceElement": { + "alertURL": "/static/image/symbol/alert-icon.png", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "checkAlert": true, + "description": null, + "id": "ac75186c-693b-322d-9554-c112044993f4", + "elementView": { + "angle": 0, + "height": 115, + "id": "ac75186c-693b-322d-9554-c112044993f4", + "style": "{}", + "width": 100, + "x": 1329, + "y": 510, + "_type": "org.uengine.modeling.model.Event" + }, + "fieldDescriptors": [ + { + "className": "Date", + "isCopy": false, + "isKey": false, + "name": "returnDate", + "nameCamelCase": "returnDate", + "namePascalCase": "ReturnDate", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "LoanStatus", + "isCopy": false, + "isKey": false, + "name": "nextStatus", + "nameCamelCase": "nextStatus", + "namePascalCase": "NextStatus", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "hexagonalView": { + "height": 0, + "id": "ac75186c-693b-322d-9554-c112044993f4", + "style": "{}", + "width": 0, + "x": 0, + "y": 0, + "_type": "org.uengine.modeling.model.EventHexagonal" + }, + "name": "LoanReturned", + "displayName": "대출 반납됨", + "nameCamelCase": "loanReturned", + "namePascalCase": "LoanReturned", + "namePlural": "", + "relationCommandInfo": [], + "relationPolicyInfo": [], + "rotateStatus": false, + "selected": false, + "trigger": "@PostPersist", + "_type": "org.uengine.modeling.model.Event", + "aggregate": { + "id": "f8dc3056-6183-539a-7f20-68681ddcc8a2" + }, + "boundedContext": { + "id": "85c498d4-39ed-5546-59b8-8eaaf33cffc8" + } + }, + "targetElement": { + "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + }, + "description": "도서 반납 후 상태를 '대출가능'으로 변경", + "elementView": { + "height": 115, + "width": 100, + "x": 437, + "y": 380, + "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", + "style": "{}", + "_type": "org.uengine.modeling.model.Policy" + }, + "fieldDescriptors": [], + "hexagonalView": { + "height": 20, + "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", + "style": "{}", + "subWidth": 100, + "width": 20, + "_type": "org.uengine.modeling.model.PolicyHexagonal" + }, + "isSaga": false, + "name": "ReturnBookStatusPolicy", + "displayName": "반납 도서 상태 변경", + "nameCamelCase": "returnBookStatusPolicy", + "namePascalCase": "ReturnBookStatusPolicy", + "namePlural": "returnBookStatusPolicies", + "oldName": "", + "rotateStatus": false, + "_type": "org.uengine.modeling.model.Policy" + }, + "from": "ac75186c-693b-322d-9554-c112044993f4", + "to": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", + "relationView": { + "id": "a4abefcb-3ab3-c3d3-f730-4abb61c7073a", + "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", + "from": "ac75186c-693b-322d-9554-c112044993f4", + "to": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", + "needReconnect": true, + "value": "[[1379,512],[1436,512],[1436,604],[424,584],[424,530]]" + }, + "hexagonalView": { + "_type": "org.uengine.modeling.model.RelationHexagonal", + "from": "ac75186c-693b-322d-9554-c112044993f4", + "id": "a4abefcb-3ab3-c3d3-f730-4abb61c7073a", + "needReconnect": true, + "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", + "to": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", + "value": null + }, + "sourceMultiplicity": "1", + "targetMultiplicity": "1", + "displayName": "" + }, + "9f52f8ae-8acb-3af4-2c26-d11e0f3b9f2f": { + "_type": "org.uengine.modeling.model.Relation", + "name": "", + "id": "9f52f8ae-8acb-3af4-2c26-d11e0f3b9f2f", + "sourceElement": { + "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + }, + "description": "도서 반납 후 상태를 '대출가능'으로 변경", + "elementView": { + "height": 115, + "width": 100, + "x": 437, + "y": 380, + "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", + "style": "{}", + "_type": "org.uengine.modeling.model.Policy" + }, + "fieldDescriptors": [], + "hexagonalView": { + "height": 20, + "id": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", + "style": "{}", + "subWidth": 100, + "width": 20, + "_type": "org.uengine.modeling.model.PolicyHexagonal" + }, + "isSaga": false, + "name": "ReturnBookStatusPolicy", + "displayName": "반납 도서 상태 변경", + "nameCamelCase": "returnBookStatusPolicy", + "namePascalCase": "ReturnBookStatusPolicy", + "namePlural": "returnBookStatusPolicies", + "oldName": "", + "rotateStatus": false, + "_type": "org.uengine.modeling.model.Policy" + }, + "targetElement": { + "_type": "org.uengine.modeling.model.Command", + "outputEvents": [ + "BookStatusChanged" + ], + "aggregate": { + "id": "554241df-8091-4819-87d3-8fa38d18deaa" + }, + "author": "EYCl46CwWAWvpz2E1BCUpVgPIpa2", + "boundedContext": { + "id": "cca6bb4c-1e8c-9a45-b3d0-f09307ed0741" + }, + "controllerInfo": { + "method": "PUT" + }, + "fieldDescriptors": [ + { + "className": "Status", + "isCopy": false, + "isKey": false, + "name": "status", + "nameCamelCase": "status", + "namePascalCase": "Status", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + }, + { + "className": "String", + "isCopy": false, + "isKey": false, + "name": "reason", + "nameCamelCase": "reason", + "namePascalCase": "Reason", + "displayName": "", + "_type": "org.uengine.model.FieldDescriptor" + } + ], + "description": null, + "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", + "elementView": { + "_type": "org.uengine.modeling.model.Command", + "height": 115, + "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", + "style": "{}", + "width": 100, + "x": 556, + "y": 380, + "z-index": 999 + }, + "hexagonalView": { + "_type": "org.uengine.modeling.model.CommandHexagonal", + "height": 0, + "id": "ae7bd270-ac8c-7103-9866-c3e1867c019a", + "style": "{}", + "width": 0, + "x": 0, + "y": 0 + }, + "isRestRepository": false, + "name": "ChangeBookStatus", + "displayName": "도서 상태 변경", + "nameCamelCase": "changeBookStatus", + "namePascalCase": "ChangeBookStatus", + "namePlural": "changeBookStatuses", + "relationCommandInfo": [], + "relationEventInfo": [], + "restRepositoryInfo": { + "method": "PUT" + }, + "rotateStatus": false, + "selected": false, + "trigger": "@PrePersist" + }, + "from": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", + "to": "ae7bd270-ac8c-7103-9866-c3e1867c019a", + "relationView": { + "id": "9f52f8ae-8acb-3af4-2c26-d11e0f3b9f2f", + "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", + "from": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", + "to": "ae7bd270-ac8c-7103-9866-c3e1867c019a", + "needReconnect": true, + "value": "[[424,414],[424,380],[506,380]]" + }, + "hexagonalView": { + "_type": "org.uengine.modeling.model.RelationHexagonal", + "from": "f9f9ee5e-d4d1-d31b-0f2e-cef969de05b0", + "id": "9f52f8ae-8acb-3af4-2c26-d11e0f3b9f2f", + "needReconnect": true, + "style": "{\"arrow-start\":\"none\",\"arrow-end\":\"none\"}", + "to": "ae7bd270-ac8c-7103-9866-c3e1867c019a", + "value": null + }, + "sourceMultiplicity": "1", + "targetMultiplicity": "1", + "displayName": "" + } + }, + "basePlatform": null, + "basePlatformConf": {}, + "toppingPlatforms": [], + "toppingPlatformsConf": {}, + "scm": { + "tag": null, + "org": null, + "repo": null, + "forkedOrg": null, + "forkedRepo": null + }, + "version": 3, + "k8sValue": { + "elements": {}, + "relations": {} + } + } +} \ No newline at end of file diff --git a/src/components/designer/modeling/generators/utils/TokenCounter/TokenCounter.js b/src/components/designer/modeling/generators/utils/TokenCounter/TokenCounter.js index 05897f16..5ee8c34b 100644 --- a/src/components/designer/modeling/generators/utils/TokenCounter/TokenCounter.js +++ b/src/components/designer/modeling/generators/utils/TokenCounter/TokenCounter.js @@ -1,83 +1,74 @@ const { encoderMap, defaultEncoder } = require("./constants"); /** - * @description AI 모델별 텍스트 토큰화 및 토큰 수 관리를 위한 유틸리티 클래스입니다. - * 다양한 AI 모델(GPT-4, GPT-3.5 등)에 대한 토큰 수 계산, 텍스트 분할, - * 토큰 제한 관리 등의 기능을 제공합니다. + * @description AI 모델에 전송되는 텍스트의 토큰 수를 계산하고 관리하는 유틸리티 클래스입니다. + * 주요 기능으로는 토큰 수 계산, 텍스트 분할, 토큰 제한 확인 등이 있으며, + * AI 모델의 컨텍스트 크기 제한을 준수하면서 효율적인 텍스트 처리를 지원합니다. * - * @class + * @example 기본적인 토큰 수 계산 및 제한 확인 + * // 텍스트의 토큰 수를 계산하고 모델 제한을 확인 + * const text = "분석할 텍스트 내용..."; + * const tokenCount = TokenCounter.getTokenCount(text, "gpt-4"); + * const isValid = TokenCounter.isWithinTokenLimit(text, "gpt-4", 4000); + * // 주의: 모델명이 잘못되면 기본 인코더(o200k_base)가 사용됨 * - * @property {Object} encoderMap - AI 모델별 토큰화 인코더 매핑 - * - key: 모델 패턴 (정규식 문자열) - * - value: 해당 모델의 토큰화 인코더 - * - * @throws {Error} 텍스트 인코딩 과정에서 오류 발생 시 - * @throws {Error} 잘못된 입력값이 제공된 경우 - * @throws {Error} 토큰 분할 시 중복 크기가 청크 크기보다 큰 경우 - * - * @see o200k_base - 기본 토큰화 인코더 - * @see cl100k_base - GPT-4/3.5 토큰화 인코더 - * @see p50k_base - GPT-3 토큰화 인코더 - * - * @example 기본 토큰 수 계산 - * // 단일 텍스트의 토큰 수 계산 - * const text = "안녕하세요, AI의 세계에 오신 것을 환영합니다!"; - * const tokenCount = TokenCounter.getTokenCount(text, "gpt-4o"); - * console.log(tokenCount); // 예상 출력: 13 - * - * @example 텍스트 분할 및 토큰 제한 관리 - * // 긴 텍스트를 토큰 제한에 맞게 분할 - * const longText = "긴 문서의 내용..."; - * const chunks = TokenCounter.splitByTokenLimit(longText, "gpt-3.5-turbo", 1000, 100); - * - * // 토큰 제한 확인 - * const isWithin = TokenCounter.isWithinTokenLimit(text, "gpt-4o", 2000); - * - * // 토큰 제한에 맞게 텍스트 자르기 - * const truncated = TokenCounter.truncateToTokenLimit(text, "gpt-4o", 50, { - * addEllipsis: true, - * preserveSentences: true + * @example 대용량 텍스트 처리를 위한 청크 분할 + * // 긴 텍스트를 처리 가능한 크기로 분할 + * const longText = "매우 긴 문서 내용..."; + * const chunks = TokenCounter.splitByTokenLimit(longText, "gpt-4", 3000, 200); + * chunks.forEach(chunk => { + * // 각 청크 처리 로직 * }); + * // 주의: overlap 값이 너무 크면 처리 효율성이 떨어질 수 있음 * - * @note - * - 모든 메서드는 정적(static) 메서드로 제공됩니다 - * - 같은 텍스트도 AI 모델에 따라 토큰 수가 다를 수 있습니다 - * - 토큰 수 계산 시 항상 정확한 모델명을 지정해야 합니다 - * - 대용량 텍스트 처리 시 메모리 사용량에 주의가 필요합니다 - * - 텍스트 분할 시 문맥 유지를 위해 오버랩 기능을 활용할 수 있습니다 + * @example 토큰 제한에 맞춘 텍스트 축소 + * // 텍스트를 지정된 토큰 수로 제한 + * const options = { + * addEllipsis: true, // 말줄임표 추가 + * preserveSentences: true, // 문장 단위 보존 + * debug: true // 디버그 정보 출력 + * }; + * const truncated = TokenCounter.truncateToTokenLimit(text, "gpt-4", 1000, options); + * // 주의: preserveSentences 옵션으로 인해 실제 토큰 수가 요청값보다 적을 수 있음 */ class TokenCounter { /** - * @description 주어진 텍스트의 토큰 수를 계산하는 메서드입니다. - * AI 모델별로 서로 다른 토큰화 방식을 사용하여 정확한 토큰 수를 계산합니다. - * 토큰 수 제한이 있는 API 호출 전에 텍스트의 토큰 수를 미리 확인하는 데 활용할 수 있습니다. - * - * @param {string} text - 토큰 수를 계산할 텍스트 - * - 빈 문자열도 유효한 입력으로 처리됩니다 - * @param {string} model - 사용할 AI 모델명 - * - 지원 모델: gpt-4o, o1, gpt-4, gpt-3.5, gpt-3, text-davinci-002/003 등 - * - 알 수 없는 모델의 경우 기본 o200k_base 인코더가 사용됨 - * - * @returns {number} 계산된 토큰 수 - * - * @throws {Error} 텍스트 인코딩 과정에서 오류가 발생한 경우 - * - * @see TokenCounter.getTotalTokenCount - 여러 텍스트의 총 토큰 수 계산 - * @see TokenCounter.isWithinTokenLimit - 토큰 제한 확인 - * @see TokenCounter._getEncoderForModel - 모델별 인코더 선택 - * - * @example 기본 토큰 수 계산 - * const tokenCount = TokenCounter.getTokenCount("Hello, World!", "gpt-4o"); - * console.log(tokenCount); // 예: 4 - * - * @example 다양한 모델에 대한 토큰 수 계산 - * const text = "AI is transforming the world"; - * console.log(TokenCounter.getTokenCount(text, "gpt-4o")); // GPT-4 모델 기준 - * console.log(TokenCounter.getTokenCount(text, "gpt-3.5-turbo")); // GPT-3 모델 기준 + * @description 주어진 텍스트의 토큰 수를 계산합니다. 이 메소드는 AI 모델에 텍스트를 전송하기 전에 + * 텍스트가 모델의 토큰 제한을 준수하는지 확인하거나, 텍스트를 적절한 크기로 분할하기 위한 + * 기초 작업으로 사용됩니다. + * + * @example 기본적인 토큰 수 계산 + * // 텍스트의 토큰 수를 확인하여 모델 제한을 준수하는지 확인 + * const text = "안녕하세요, 이것은 예시 텍스트입니다."; + * const tokenCount = TokenCounter.getTokenCount(text, "gpt-4o"); + * console.log(`토큰 수: ${tokenCount}`); // 예상 출력: 토큰 수: 13 + * + * @example 토큰 제한 확인을 위한 활용 + * // isWithinTokenLimit 메소드에서 실제 사용되는 예시 + * const maxTokens = 100; + * const text = "긴 문서 내용..."; + * try { + * const tokenCount = TokenCounter.getTokenCount(text, "gpt-4o"); + * const isWithinLimit = tokenCount <= maxTokens; + * // 토큰 수가 제한을 초과하면 텍스트를 분할하거나 축소하는 로직 구현 + * } catch (error) { + * console.error("토큰 계산 중 오류 발생:", error); + * // 적절한 폴백(fallback) 처리 + * } * - * @note - * - 같은 텍스트라도 모델에 따라 토큰 수가 다를 수 있습니다 - * - 정확한 토큰 수 계산을 위해 올바른 모델명을 지정하는 것이 중요합니다 + * @example 텍스트 청크 분할 전 검사 + * // splitByTokenLimit 메소드에서 활용되는 예시 + * const longText = "매우 긴 문서 내용..."; + * const model = "gpt-4"; + * try { + * const totalTokens = TokenCounter.getTokenCount(longText, model); + * if (totalTokens > 1000) { + * // 텍스트가 너무 길 경우 청크로 분할 + * const chunks = TokenCounter.splitByTokenLimit(longText, model, 1000); + * } + * } catch (error) { + * // 인코더 로드 실패 또는 기타 오류 처리 + * } */ static getTokenCount(text, model) { try { @@ -90,132 +81,111 @@ class TokenCounter { } /** - * @description 여러 텍스트의 총 토큰 수를 계산하는 메서드입니다. - * 채팅 메시지나 문서 청크와 같이 여러 텍스트의 결합된 토큰 수를 확인할 때 유용합니다. - * - * @param {Array} texts - 토큰 수를 계산할 텍스트 배열 - * - 각 요소는 비어있지 않은 문자열이어야 합니다 - * - 빈 배열도 유효한 입력으로 처리됩니다 - * @param {string} model - 사용할 AI 모델명 - * - 지원 모델: gpt-4o, o1, gpt-4, gpt-3.5, gpt-3, text-davinci-002/003 등 - * - 알 수 없는 모델의 경우 기본 o200k_base 인코더가 사용됨 - * - * @returns {number} 모든 텍스트의 총 토큰 수 - * - * @throws {Error} 텍스트 인코딩 과정에서 오류가 발생한 경우 - * @throws {TypeError} texts가 배열이 아니거나, 배열 요소가 문자열이 아닌 경우 - * - * @see TokenCounter.getTokenCount - 단일 텍스트의 토큰 수 계산 - * @see TokenCounter.isWithinTokenLimit - 토큰 제한 확인 - * - * @example 채팅 메시지의 총 토큰 수 계산 - * const messages = [ - * "안녕하세요!", - * "오늘 날씨가 좋네요.", - * "산책하기 좋은 날입니다." + * @description 텍스트 배열의 총 토큰 수를 계산합니다. 이 메소드는 여러 텍스트(예: 대화 이력, 문서 묶음)의 + * 전체 토큰 수를 확인하여 모델의 컨텍스트 크기 제한을 준수하는지 검증하거나, 청크 분할 여부를 + * 결정하는 데 사용됩니다. + * + * @example 대화 이력의 토큰 수 계산 + * // 대화 이력의 전체 토큰 수를 확인하여 모델 제한을 준수하는지 검증 + * const conversations = [ + * "사용자: 안녕하세요!", + * "시스템: 안녕하세요, 무엇을 도와드릴까요?", + * "사용자: 날씨가 좋네요." * ]; - * const totalTokens = TokenCounter.getTotalTokenCount(messages, "gpt-4o"); - * console.log(totalTokens); // 예: 25 - * - * @example 문서 청크의 토큰 수 계산 - * const documentChunks = [ - * "첫 번째 문단입니다.", - * "두 번째 문단의 내용입니다.", - * "마지막 문단이 됩니다." - * ]; - * console.log(TokenCounter.getTotalTokenCount(documentChunks, "gpt-3.5-turbo")); // 예: 30 - * - * @note - * - 총 토큰 수는 각 텍스트의 토큰 수의 합으로 계산됩니다 - * - 모델에 따라 같은 텍스트도 다른 토큰 수를 가질 수 있습니다 - * - 대량의 텍스트를 처리할 때는 메모리 사용량에 주의해야 합니다 + * const totalTokens = TokenCounter.getTotalTokenCount(conversations, "gpt-4o"); + * console.log(`총 토큰 수: ${totalTokens}`); + * // 주의: 대화가 길어질수록 메모리 사용량이 증가할 수 있음 + * + * @example 문서 묶음 처리 시 에러 처리 + * // 여러 문서의 토큰 수를 계산하면서 잠재적 오류 처리 + * const documents = ["문서1 내용...", "문서2 내용...", "문서3 내용..."]; + * try { + * const totalTokens = TokenCounter.getTotalTokenCount(documents, "gpt-4o"); + * if (totalTokens > 4096) { + * // 토큰 수가 제한을 초과하면 문서를 분할하거나 요약하는 로직 구현 + * const chunks = TokenCounter.splitByTokenLimit(documents.join("\n"), "gpt-4o", 4096); + * } + * } catch (error) { + * console.error("토큰 계산 중 오류 발생:", error); + * // 개별 문서 단위로 재시도하거나 대체 처리 방안 적용 + * } */ static getTotalTokenCount(texts, model) { return texts.reduce((total, text) => total + this.getTokenCount(text, model), 0); } /** - * @description 주어진 텍스트가 지정된 토큰 제한을 초과하지 않는지 확인하는 메서드입니다. - * API 호출이나 텍스트 처리 전에 토큰 제한을 미리 확인하는 데 활용할 수 있습니다. - * - * @param {string} text - 토큰 수를 확인할 텍스트 - * - 빈 문자열도 유효한 입력으로 처리됩니다 - * @param {string} model - 사용할 AI 모델명 - * - 지원 모델: gpt-4o, o1, gpt-4, gpt-3.5, gpt-3, text-davinci-002/003 등 - * - 알 수 없는 모델의 경우 기본 o200k_base 인코더가 사용됨 - * @param {number} maxTokens - 최대 허용 토큰 수 - * - 양의 정수여야 합니다 - * - * @returns {boolean} 토큰 수가 제한 이내이면 true, 초과하면 false - * - * @throws {Error} 텍스트 인코딩 과정에서 오류가 발생한 경우 - * - * @see TokenCounter.getTokenCount - 토큰 수 계산 - * @see TokenCounter.truncateToTokenLimit - 토큰 제한에 맞게 텍스트 자르기 - * @see TokenCounter.splitByTokenLimit - 토큰 제한에 맞게 텍스트 분할 - * - * @example 기본 토큰 제한 확인 - * const text = "안녕하세요, AI의 세계에 오신 것을 환영합니다!"; - * const isWithin = TokenCounter.isWithinTokenLimit(text, "gpt-4o", 10); - * console.log(isWithin); // false - * - * @example API 호출 전 토큰 제한 확인 - * const prompt = "긴 프롬프트 텍스트..."; - * if (TokenCounter.isWithinTokenLimit(prompt, "gpt-3.5-turbo", 4096)) { - * // API 호출 진행 - * } else { - * // 텍스트 축소 또는 분할 처리 + * @description 주어진 텍스트가 지정된 토큰 제한을 초과하는지 검사합니다. 이 메소드는 AI 모델에 + * 텍스트를 전송하기 전에 토큰 제한을 준수하는지 확인하거나, 텍스트 분할 여부를 결정하는 데 + * 사용됩니다. + * + * @example 기본적인 토큰 제한 검사 + * // 텍스트가 토큰 제한을 준수하는지 확인 + * const text = "검사할 텍스트 내용"; + * const isValid = TokenCounter.isWithinTokenLimit(text, "gpt-4", 100); + * if (!isValid) { + * console.log("텍스트가 토큰 제한을 초과했습니다."); + * // 텍스트 처리 로직 구현 (예: 분할 또는 축소) * } * - * @note - * - 같은 텍스트라도 모델에 따라 토큰 수가 다를 수 있으므로 정확한 모델 지정이 중요합니다 - * - 토큰 제한 초과 시 truncateToTokenLimit 또는 splitByTokenLimit 메서드 사용을 고려하세요 + * @example API 요청 전 토큰 검증 + * // API 호출 전에 텍스트가 모델의 최대 토큰 제한을 준수하는지 확인 + * const prompt = "매우 긴 프롬프트 내용..."; + * const maxTokens = 4096; // GPT-3.5의 경우 + * try { + * if (!TokenCounter.isWithinTokenLimit(prompt, "gpt-3.5-turbo", maxTokens)) { + * // 토큰 제한 초과 시 처리 방안: + * // 1. 텍스트 축소 + * const truncated = TokenCounter.truncateToTokenLimit(prompt, "gpt-3.5-turbo", maxTokens); + * // 2. 또는 청크로 분할 + * const chunks = TokenCounter.splitByTokenLimit(prompt, "gpt-3.5-turbo", maxTokens); + * } + * // API 요청 진행 + * } catch (error) { + * console.error("토큰 검증 중 오류 발생:", error); + * // 적절한 오류 처리 + * } */ static isWithinTokenLimit(text, model, maxTokens) { return this.getTokenCount(text, model) <= maxTokens; } /** - * @description 긴 텍스트를 지정된 토큰 수로 나누어 청크(chunks)로 분할하는 메서드입니다. - * 대량의 텍스트를 AI 모델의 토큰 제한에 맞게 처리할 때 유용하며, - * 오버랩 기능을 통해 청크 간의 문맥을 유지할 수 있습니다. - * - * @param {string} text - 분할할 텍스트 - * - 빈 문자열도 유효한 입력으로 처리됩니다 - * @param {string} model - 사용할 AI 모델명 - * - 지원 모델: gpt-4o, o1, gpt-4, gpt-3.5, gpt-3, text-davinci-002/003 등 - * - 알 수 없는 모델의 경우 기본 o200k_base 인코더가 사용됨 - * @param {number} maxTokensPerChunk - 각 청크의 최대 토큰 수 - * - 양의 정수여야 합니다 - * @param {number} [overlap=0] - 연속된 청크 간에 중복될 토큰 수 - * - 문맥 유지를 위해 청크 간에 중복되는 토큰 수를 지정 - * - maxTokensPerChunk보다 작아야 합니다 - * - * @returns {Array} 분할된 텍스트 청크들의 배열 - * - * @throws {Error} overlap이 maxTokensPerChunk보다 크거나 같은 경우 - * - * @see TokenCounter.getTokenCount - 토큰 수 계산 - * @see TokenCounter.isWithinTokenLimit - 토큰 제한 확인 - * @see TokenCounter.truncateToTokenLimit - 토큰 제한에 맞게 텍스트 자르기 - * - * @example 기본 텍스트 분할 - * const longText = "긴 문서 내용..."; - * const chunks = TokenCounter.splitByTokenLimit(longText, "gpt-4o", 1000); - * chunks.forEach(chunk => { - * // 각 청크 처리 - * console.log(chunk); + * @description 긴 텍스트를 지정된 토큰 제한에 맞춰 여러 개의 청크로 분할합니다. 이 메소드는 + * 대용량 텍스트를 AI 모델의 컨텍스트 크기 제한에 맞게 처리하거나, 문서를 분석 가능한 + * 크기로 나누는 데 사용됩니다. overlap 매개변수를 통해 청크 간의 연속성을 보장할 수 있습니다. + * + * @example 기본적인 텍스트 분할 + * // 긴 문서를 4000 토큰 크기의 청크로 분할 + * const longDocument = "매우 긴 문서 내용..."; + * const chunks = TokenCounter.splitByTokenLimit(longDocument, "gpt-4", 4000); + * chunks.forEach((chunk, index) => { + * console.log(`청크 ${index + 1} 처리 중...`); + * // 각 청크에 대한 AI 처리 로직 * }); + * // 주의: 청크 크기는 모델의 최대 토큰 제한보다 작아야 함 * - * @example 오버랩을 사용한 문맥 유지 분할 - * const text = "복잡한 기술 문서..."; + * @example 오버랩을 활용한 문맥 유지 + * // 청크 간 200 토큰 오버랩을 사용하여 문맥 연속성 보장 + * const text = "긴 기술 문서 내용..."; * const chunks = TokenCounter.splitByTokenLimit(text, "gpt-3.5-turbo", 2000, 200); - * // 각 청크는 이전 청크와 200토큰이 중복되어 문맥 유지 - * - * @note - * - 오버랩을 사용하면 청크 간의 문맥은 유지되지만 총 토큰 사용량이 증가합니다 - * - 마지막 청크는 maxTokensPerChunk보다 작을 수 있습니다 - * - 모델별로 토큰화 방식이 다르므로, 동일한 텍스트도 모델에 따라 다르게 분할될 수 있습니다 + * // 각 청크는 이전 청크의 끝부분 200 토큰을 포함 + * // 주의: 오버랩이 너무 크면 처리 효율성이 떨어질 수 있음 + * + * @example 대용량 문서 처리 시 에러 처리 + * // 안전한 청크 분할 처리 + * const largeText = "대용량 문서 내용..."; + * try { + * const chunks = TokenCounter.splitByTokenLimit(largeText, "gpt-4", 3000, 100); + * if (chunks.length > 10) { + * console.warn("문서가 너무 많은 청크로 분할됨. 처리 시간이 길어질 수 있습니다."); + * } + * // 청크 순차 처리 또는 병렬 처리 로직 + * } catch (error) { + * console.error("청크 분할 중 오류 발생:", error); + * // 대체 처리 방안 적용 + * } + * // 주의: 메모리 사용량과 처리 시간을 고려하여 적절한 청크 크기 선택 */ static splitByTokenLimit(text, model, maxTokensPerChunk, overlap = 0) { if (overlap >= maxTokensPerChunk) { @@ -237,74 +207,46 @@ class TokenCounter { } /** - * @description 긴 텍스트를 지정된 토큰 제한에 맞게 잘라내는 메서드입니다. - * 텍스트의 끝에 생략 부호를 추가하고, 문장 단위로 자르는 등의 옵션을 제공합니다. - * AI 모델의 토큰 제한을 준수하면서 자연스러운 텍스트 처리가 필요할 때 사용합니다. - * - * @param {string} text - 잘라낼 텍스트 - * - 비어있지 않은 문자열이어야 합니다 - * @param {string} model - 사용할 AI 모델명 - * - 지원 모델: gpt-4o, o1, gpt-4, gpt-3.5, gpt-3, text-davinci-002/003 등 - * @param {number} maxTokens - 최대 허용 토큰 수 - * - 1 이상의 정수여야 합니다 - * @param {Object} [options] - 텍스트 자르기 옵션 - * @param {boolean} [options.addEllipsis=true] - 잘린 텍스트 끝에 '...' 추가 여부 - * @param {boolean} [options.preserveSentences=true] - 문장 단위로 자르기 여부 - * @param {boolean} [options.debug=false] - 디버그 정보 출력 여부 - * - * @returns {string} 토큰 제한에 맞게 잘린 텍스트 - * - * @throws {Error} text가 유효하지 않은 경우 - * @throws {Error} maxTokens가 1 미만인 경우 - * - * @see TokenCounter.getTokenCount - 토큰 수 계산 - * @see TokenCounter.isWithinTokenLimit - 토큰 제한 확인 - * @see TokenCounter.splitByTokenLimit - 텍스트를 여러 청크로 분할 - * - * @example 기본 텍스트 자르기 - * const longText = "이것은 매우 긴 텍스트입니다. 문장이 계속 이어집니다. 끝이 어디일까요?"; - * const truncated = TokenCounter.truncateToTokenLimit(longText, "gpt-4o", 10); - * console.log(truncated); - * // 출력: "이것은 매우 긴..." - * // 토큰 수: 10 (원본: 25) - * - * @example 고급 옵션 활용 - * const text = "첫 번째 문장입니다. 두 번째 문장입니다. 세 번째 문장입니다."; - * - * // 1. 기본 옵션 (문장 보존 + 생략 부호) - * console.log(TokenCounter.truncateToTokenLimit(text, "gpt-3.5-turbo", 15)); - * // 출력: "첫 번째 문장입니다. 두 번째 문장입니다..." - * - * // 2. 문장 보존 없이 자르기 - * console.log(TokenCounter.truncateToTokenLimit(text, "gpt-3.5-turbo", 15, { - * preserveSentences: false - * })); - * // 출력: "첫 번째 문장입니다. 두 번..." - * - * // 3. 생략 부호 없이 문장 단위로 자르기 - * console.log(TokenCounter.truncateToTokenLimit(text, "gpt-3.5-turbo", 15, { - * addEllipsis: false, - * preserveSentences: true - * })); - * // 출력: "첫 번째 문장입니다. 두 번째 문장입니다." - * - * // 4. 디버그 모드 활용 - * TokenCounter.truncateToTokenLimit(text, "gpt-3.5-turbo", 15, { - * debug: true - * }); - * // 콘솔 출력: - * // { - * // originalLength: 28, - * // truncatedLength: 15, - * // maxTokens: 15, - * // preservedSentences: true, - * // hasEllipsis: true - * // } - * - * @note - * - preserveSentences가 true일 때는 문장이 중간에 잘리지 않습니다 - * - addEllipsis 옵션 사용 시 '...'의 토큰 수도 maxTokens에 포함됩니다 - * - debug 모드에서는 원본 길이, 잘린 길이 등의 상세 정보를 확인할 수 있습니다 + * @description 주어진 텍스트를 지정된 토큰 제한에 맞게 잘라내는 메소드입니다. 이 메소드는 긴 텍스트를 + * AI 모델의 컨텍스트 크기 제한에 맞추거나, 텍스트를 적절한 길이로 축소하는 데 사용됩니다. + * 문장 단위 보존 및 말줄임표 추가 등의 옵션을 제공합니다. + * + * @example 기본적인 텍스트 자르기 + * // 텍스트를 지정된 토큰 수로 제한하고 말줄임표 추가 + * const longText = "매우 긴 문서 내용..."; + * const truncated = TokenCounter.truncateToTokenLimit(longText, "gpt-4", 100); + * console.log(truncated); + * // 주의: 기본적으로 문장 단위 보존과 말줄임표가 활성화됨 + * + * @example 고급 옵션을 활용한 텍스트 자르기 + * // 문장 보존 없이 정확한 토큰 수로 자르기 + * const text = "분석할 긴 텍스트 내용..."; + * const options = { + * addEllipsis: false, // 말줄임표 비활성화 + * preserveSentences: false, // 문장 단위 보존 비활성화 + * debug: true // 디버그 정보 출력 + * }; + * const result = TokenCounter.truncateToTokenLimit(text, "gpt-3.5-turbo", 50, options); + * // 주의: preserveSentences를 false로 설정하면 문장 중간에서 잘릴 수 있음 + * + * @example API 요청 전 텍스트 길이 조정 + * // API 요청 전에 프롬프트를 모델의 컨텍스트 제한에 맞게 조정 + * const prompt = "매우 긴 프롬프트 내용..."; + * try { + * if (!TokenCounter.isWithinTokenLimit(prompt, "gpt-4", 4000)) { + * const truncated = TokenCounter.truncateToTokenLimit(prompt, "gpt-4", 4000, { + * preserveSentences: true, // 문장 단위 보존으로 문맥 유지 + * debug: true // 잘린 내용 확인을 위한 디버그 정보 + * }); + * // API 요청 진행 + * } + * } catch (error) { + * console.error("텍스트 처리 중 오류 발생:", error); + * } + * // 주의: + * // 1. preserveSentences 옵션으로 인해 실제 토큰 수가 요청한 것보다 적을 수 있음 + * // 2. addEllipsis 옵션 사용 시 실제 사용 가능한 토큰 수가 3개 정도 감소할 수 있음 + * // 3. debug 옵션을 활용하여 실제 잘린 토큰 수 확인 권장 */ static truncateToTokenLimit(text, model, maxTokens, options = {}) { const {