본문 바로가기
Sql

BxM 프레임워크 이해 (레스토랑 예제)

by 헬로제이콥 2025. 7. 2.

확실하게 다시 한번 BxM의 일반적인 흐름을 아주 쉽게 설명해 드릴게요. 비유를 들어볼까요?

BxM 시스템은 마치 레스토랑과 같아요.


1. 손님 (WebSquare 화면 - xml, js)

  • 역할: 음식을 주문하는 고객입니다. 메뉴판(UI)을 보고, 원하는 음식을 선택(버튼 클릭, 데이터 입력)한 후, 주문(서버 요청)을 합니다.
  • 파일:
    • OOO.xml: 메뉴판 (화면의 디자인과 버튼, 입력창 등)
    • OOO.js: 고객이 주문을 누르면 주문서를 작성하고 주방으로 보내는 행동

2. 웨이터 (SC: Service Controller - SC_OOO.java)

  • 역할: 손님(WebSquare)의 주문(요청)을 가장 먼저 받습니다. 주문 내용을 확인하고, 어떤 요리사에게 어떤 주문을 전달해야 할지 판단합니다.
  • 하는 일:
    • "주문 들어왔습니다!" (WebSquare 요청 수신)
    • "손님은 김치찌개를 시켰네. 김치찌개 전문 요리사에게 전달해야지." (요청에 맞는 BC 호출)
    • 주문이 제대로 처리되는지 전체 과정을 지켜봅니다. (트랜잭션 관리)
  • 파일: SC_OOO.java (자바 클래스)

3. 요리사 (BC: Business Component - BC_OOO.java)

  • 역할: 웨이터(SC)에게서 주문을 받아, 실제 음식을 만드는 핵심적인 비즈니스 로직을 수행합니다. 여러 재료(데이터)를 가져와 요리(가공, 계산)합니다.
  • 하는 일:
    • "김치찌개 주문이요? 알겠습니다." (SC로부터 요청 받음)
    • "재료가 있나? 김치, 돼지고기, 두부... 창고(데이터베이스)에 있는지 식자재 담당에게 물어봐야겠다." (DBIO 호출)
    • 재료를 받아와서 레시피대로 요리합니다. (복잡한 비즈니스 로직 처리)
    • 완성된 요리를 웨이터에게 전달합니다. (SC로 결과 반환)
  • 파일: BC_OOO.java (자바 클래스)

4. 식자재 담당 (DBIO: Data Base Input/Output - OOO.dbio)

  • 역할: 요리사(BC)의 요청을 받아 창고(데이터베이스)에 가서 필요한 식자재(데이터)를 가져오거나, 새로운 식자재를 넣거나, 기존 식자재를 정리하는 일을 전담합니다. 실제 창고 담당자와 대화하는 전문가입니다.
  • 하는 일:
    • "요리사님, 김치 있어요? 돼지고기 있어요?" (BC로부터 데이터 요청)
    • "네, 창고에 있습니다. 가져다 드릴게요." (데이터베이스에서 조회/저장/수정/삭제)
    • 여기서 OOO.dbio 파일은 식자재 담당자가 창고에 가서 무엇을 어떻게 가져올지 적어둔 '식자재 목록표 + 가져오는 방법'이 적힌 문서입니다. (SQL 쿼리 정의)
  • 파일: OOO.dbio (XML 형태의 파일)

흐름 요약:

  1. **손님(WebSquare)**이 **웨이터(SC)**에게 주문합니다.
  2. **웨이터(SC)**는 주문을 **요리사(BC)**에게 전달합니다.
  3. **요리사(BC)**는 요리를 만들기 위해 **식자재 담당(DBIO)**에게 재료를 요청합니다.
  4. **식자재 담당(DBIO)**은 창고(데이터베이스)에서 재료를 가져오거나 정리하여 **요리사(BC)**에게 다시 줍니다.
  5. **요리사(BC)**는 재료로 요리를 완성하여 **웨이터(SC)**에게 줍니다.
  6. **웨이터(SC)**는 완성된 요리를 **손님(WebSquare)**에게 가져다줍니다.
  7. **손님(WebSquare)**은 받은 요리를 화면에 봅니다.

이렇게 각 역할이 나뉘어 있어서 시스템이 더 깔끔하고, 나중에 요리 방법이 바뀌거나, 창고를 옮겨도 다른 부분에 영향을 덜 주게 되는 장점이 있습니다.