아웃바운드 룰

개요

아웃바운드 룰은 외부 시스템을 호출하기 위한 규칙을 정의합니다. 프로토콜별로 연결 정보, 요청/응답 메시지, 매핑 규칙 등을 설정합니다.

아웃바운드 룰의 구성 요소는 다음과 같습니다.

  • 프로토콜 및 엔드포인트 정보

  • 요청/응답 메시지 정의

  • 데이터 매핑 규칙

  • 타임아웃 및 재시도 설정

AnyLink는 다음 프로토콜을 지원합니다. 각 프로토콜별 아웃바운드 룰의 상세 설정은 해당 절을 참고합니다.

프로토콜 설명 해당 챕터

TCP

TCP/IP 소켓 통신

TCP 아웃바운드 룰

HTTP

HTTP API 호출

HTTP 아웃바운드 룰

FTP

FTP 파일 전송

FTP 아웃바운드 룰

FILE

로컬 파일 시스템 접근

FILE 아웃바운드 룰

DB

데이터베이스 쿼리 실행

DB 아웃바운드 룰

아웃바운드 룰 생성

리소스 트리에서 원하는 거래 또는 거래그룹의 컨텍스트 메뉴를 열고 [리소스 생성] > [아웃바운드 룰] 메뉴를 선택하면 나타나는 하위 메뉴에서 프로토콜 종류를 선택합니다.

워크스페이스의 탭 편집기 영역에 선택한 프로토콜의 아웃바운드룰 생성 탭이 표시되면 기본 정보와 요청/응답 메시지 정보를 입력합니다.

outbound rule create

설정이 완료되면 각 탭 하단의 [생성] 버튼을 클릭합니다.

  • ① 기본 정보 설정

    다음은 모든 프로토콜의 아웃바운드 룰 생성 시 공통으로 설정해야 하는 기본 정보입니다. (*: 필수 설정 항목)

    outbound rule create basic info
    항목 설명

    아웃바운드 룰 아이디 *

    아웃바운드 룰을 식별하기 위한 고유 ID입니다. 영문, 숫자 및 언더스코어(_)를 사용할 수 있으며, 2~32자 이내로 입력해야 합니다.

    아웃바운드 룰 이름

    아웃바운드 룰의 표시 이름입니다. 2~32자 이내로 입력해야 하며, 영문, 숫자 및 다음 특수문자를 사용할 수 있습니다.

    • 언더스코어(_), 하이픈(-), 대괄호([]), 중괄호({}), 괄호(()), 쉼표(,), 콜론(:)

    룰 타임아웃 사용

    아웃바운드 룰에 별도의 타임아웃을 설정할지 여부를 선택합니다.

    타임아웃 *

    룰 타임아웃 사용을 활성화한 경우에만 표시됩니다.

    응답 대기 시간을 밀리초(ms) 단위로 입력합니다. (최소값: 1)

    엔드포인트 (그룹)

    드롭다운 목록에서 연결할 아웃바운드 엔드포인트(그룹)를 선택합니다.

    프로토콜에 맞는 엔드포인트만 선택 가능합니다.

    설명

    아웃바운드 룰에 대한 설명을 작성합니다.

    엔드포인트가 없다면 먼저 엔드포인트를 생성해야 합니다. 엔드포인트 생성 방법은 어댑터 안내서를 참고합니다.

  • ② 요청/응답 메시지 설정

    아웃바운드 룰의 요청 및 응답 메시지를 설정합니다.

    outbound rule create messages
    항목 설명

    요청 메시지

    외부 시스템으로 전송할 메시지입니다. 여러 개의 메시지를 설정할 수 있습니다.

    응답 메시지

    외부 시스템으로부터 수신할 메시지입니다. 여러 개의 메시지를 설정할 수 있습니다.

    리소스 트리에서 원하는 메시지를 끌어 오거나, [+ 추가] 버튼을 클릭해 리소스 찾기 다이얼로그에서 원하는 메시지를 검색하여 선택합니다.

아웃바운드 룰 조회 및 수정

리소스 트리에서 원하는 아웃바운드 룰 리소스를 클릭하면 워크스페이스의 탭 편집기 영역에 해당 아웃바운드 룰 탭이 표시됩니다.

outbound rule tcp form

조회 가능한 항목에 대한 설명은 각 프로토콜별 아웃바운드 룰 생성 절을 참고합니다. 아웃바운드 룰 정보를 수정하려면 탭 하단의 [편집] 버튼을 클릭해 편집 모드로 전환합니다.

TCP 아웃바운드 룰

개요

TCP 아웃바운드 룰은 TCP/IP 소켓 통신을 통해 외부 시스템을 호출하기 위한 규칙을 정의합니다. 금융권 전문 통신과 레거시 시스템 연동 등에 주로 사용됩니다.

TCP 아웃바운드 룰 생성

리소스 트리에서 원하는 거래 또는 거래그룹의 컨텍스트 메뉴를 열고 [리소스 생성] > [아웃바운드 룰] > [TCP 생성]을 선택합니다.

outbound rule create tcp
  • ① 기본 정보 설정

    TCP 아웃바운드 룰의 기본 정보를 입력합니다. 모든 아웃바운드 룰에 공통으로 적용되는 설정 항목은 공통 설정 항목을 참고합니다.

    항목 설명

    응답 방식 *

    메시지 응답 패턴을 선택합니다.

    • Request-Reply

      요청-응답 방식입니다. 요청 메시지를 전송 후 응답 메시지를 대기합니다.

    • One-Way

      단방향 방식입니다. 요청 메시지만 전송하고 응답을 대기하지 않습니다.

    다음은 Request-Reply 방식을 사용하는 시나리오 예시입니다.

    시나리오: 금융 전문 조회
    1. 고객 정보 조회 요청 전문 전송
    2. 외부 시스템에서 처리 후 응답 전문 반환
    3. 응답 전문을 파싱하여 결과 처리

    다음은 One-Way 방식을 사용하는 시나리오 예시입니다.

    시나리오: 로그 전송
    1. 로그 데이터 전문 전송
    2. 응답 대기 없이 즉시 다음 처리 진행
  • ② 요청/응답 메시지 설정

    아웃바운드 룰의 요청 및 응답 메시지를 설정하는 방법은 요청/응답 메시지 설정을 참고합니다.

  • ③ 코릴레이션 설정

    동일한 아웃바운드 엔드포인트로 비동기 요청을 전송하고 응답을 받을 때, 요청과 응답을 매칭하기 위한 코릴레이션(상관관계) 바인딩을 설정합니다.

    코릴레이션 설정 화면은 다음 두 조건을 모두 만족할 때에만 표시됩니다.

    • 아웃바운드 룰의 응답 방식이 Request-Reply로 설정되어야 합니다.

    • 선택한 아웃바운드 엔드포인트의 동기 모드가 '비동기’로 설정되어야 합니다.

    엔드포인트가 동기 모드일 때는 요청-응답이 순차적으로 처리되므로 코릴레이션이 필요하지 않습니다.

본 절에서 설명하는 아웃바운드 룰 코릴레이션은 동일한 아웃바운드 엔드포인트에서 요청-응답을 매칭합니다.

코릴레이션 바인딩

다음은 코릴레이션 설정이 필요한 경우와 그렇지 않은 경우를 정리한 표입니다.

응답 방식 엔드포인트 동기 방식 코릴레이션 설정 설명

Request-Reply

비동기

필요

비동기 통신 환경에서 요청-응답 매칭을 위해 필요

Request-Reply

동기

불필요

요청이 순차 처리되므로 불필요

One-Way

동기/비동기

불필요

응답을 수신하지 않으므로 불필요

다음과 같은 상황에서 비동기 방식으로 호출하는 엔드포인트로부터 응답을 수신합니다.

  • 다중 요청의 동시 처리

    하나의 연결에서 여러 요청이 동시에 전송되고, 응답이 요청 순서와 관계없이 도착하는 경우

  • 커넥션 풀 공유

    여러 스레드가 동일한 커넥션 풀을 공유하여 요청을 전송하는 경우

  • 비동기 응답 처리

    요청 순서와 응답 순서가 일치하지 않을 수 있는 경우

코릴레이션 바인딩은 요청 메시지의 특정 필드와 응답 메시지의 특정 필드를 기준으로 상관관계를 설정하여 요청-응답 쌍을 식별합니다.

다음은 코릴레이션을 바인딩하는 방법입니다.

  1. 바인딩할 요청 및 응답 메시지를 설정한 후 코릴레이션 설정 섹션에서 [+ 추가] 버튼을 클릭합니다.

    outbound rule select correlation message
  2. 코릴레이션 메시지 선택 다이얼로그가 표시되면, 선택한 메시지의 필드 정보를 확인한 후 바인딩할 필드를 선택합니다. 요청 필드와 응답 필드는 1:1로 매핑되어야 하며, 선택한 필드 개수가 일치하지 않으면 저장되지 않습니다.

    outbound rule select correlation field
  3. 설정이 완료되면 [확인] 버튼을 클릭합니다.

다음은 코릴레이션 바인딩의 예시입니다.

시나리오: 전문 번호로 요청-응답 매칭

요청 전문:
- 메시지: RequestMessage
- 필드: txNo (전문 번호)

응답 전문:
- 메시지: ResponseMessage
- 필드: txNo (전문 번호)

→ 요청의 txNo와 응답의 txNo가 일치하는 경우 매칭

메시지 타입별 코릴레이션 예시

다음은 메시지 타입별 코릴레이션 예시입니다.

고정 길이(Fixed-Length) 메시지

금융 전문에서 주로 사용되는 고정 길이 메시지의 코릴레이션 예시입니다.

시나리오: 금융 전문 번호 매칭 (고정 길이)

요청 전문 구조:
- 전문 번호 (txNo): offset 0, length 10

응답 전문 구조:
- 전문 번호 (txNo): offset 0, length 10

설정:
- 매칭 메시지 타입: FIXED
- 요청 필드: txNo
- 응답 필드: txNo

JSON 메시지

REST API 스타일의 JSON 메시지의 코릴레이션 예시입니다.

시나리오: REST API 요청 ID 매칭

요청 JSON:
{
  "requestId": "REQ-20250205-001",
  "data": { ... }
}

응답 JSON:
{
  "requestId": "REQ-20250205-001",
  "result": { ... }
}

설정:
- 매칭 메시지 타입: JSON
- 요청 필드: requestId
- 응답 필드: requestId

HTTP 아웃바운드 룰

개요

HTTP 아웃바운드 룰은 HTTP 프로토콜을 통해 HTTP API나 웹 서비스를 호출하기 위한 규칙을 정의합니다. 외부 HTTP API 연동 등에 사용됩니다.

HTTP 아웃바운드 룰 생성

리소스 트리에서 원하는 거래 또는 거래그룹의 컨텍스트 메뉴를 열고 [리소스 생성] > [아웃바운드 룰] > [HTTP 생성]을 선택합니다.

outbound rule create http
  • ① 기본 정보 설정

    HTTP 아웃바운드 룰의 기본 정보를 입력합니다. 모든 아웃바운드 룰에 공통으로 적용되는 설정 항목은 공통 설정 항목을 참고합니다.

    항목 설명

    응답 방식 *

    메시지 응답 패턴을 선택합니다.

    • Request-Reply

      요청-응답 방식입니다. 요청 메시지를 전송한 후 응답 메시지를 대기합니다.

    • One-Way

      단방향 방식입니다. 요청 메시지만 전송하고 응답을 대기하지 않습니다.

    HTTP 메소드 *

    HTTP 요청 메소드를 선택합니다.

    • GET: 리소스 조회를 요청합니다. URL 파라미터를 통해 데이터를 전달합니다.

    • POST: 리소스 생성을 요청합니다. 요청 본문을 포함합니다.

    • PUT: 리소스 수정을 요청합니다. 요청 본문을 포함합니다.

    • DELETE: 리소스 삭제를 요청합니다. 요청 본문은 선택적으로 포함할 수 있습니다.

사용 예시

다음은 외부 HTTP API를 호출하여 데이터를 조회 및 생성하는 시나리오의 설정 예시입니다.

데이터 조회 요청(GET) 시 설정
프로토콜: HTTP
응답 방식: Request-Reply
HTTP 메소드: GET

요청 메시지: CustomerInquiryRequest (JSON)
응답 메시지: CustomerInquiryResponse (JSON)
데이터 생성 요청(POST) 시 설정
프로토콜: HTTP
응답 방식: Request-Reply
HTTP 메소드: POST

요청 메시지: OrderCreateRequest (JSON)
응답 메시지: OrderCreateResponse (JSON)

FTP 아웃바운드 룰

개요

FTP 아웃바운드 룰은 FTP 프로토콜을 통해 원격 서버와 파일을 송수신하기 위한 규칙을 정의합니다. 파일 업로드, 다운로드, 목록 조회, 이동, 삭제 작업을 수행할 수 있습니다.

FTP 아웃바운드 룰 생성

리소스 트리에서 원하는 거래 또는 거래그룹의 컨텍스트 메뉴를 열고 [리소스 생성] > [아웃바운드 룰] > [FTP 생성]을 선택합니다.

FTP 아웃바운드 룰 생성 화면은 다음과 같은 영역으로 구성됩니다. 기본 정보 및 상세 정보 영역은 고정으로 표시되며, 나머지 영역은 선택한 FTP 룰 타입에 따라 표시 여부가 달라집니다.

영역 설명

기본 정보

모든 아웃바운드 룰에 공통으로 적용되는 설정 항목입니다. 설정 방법은 공통 설정 항목을 참고합니다.

상세 정보

FTP 아웃바운드 룰 설정을 위한 추가 설정 영역입니다.

요청/응답 메시지

아웃바운드 룰의 요청 및 응답 메시지를 설정합니다. 설정 방법은 요청/응답 메시지 설정을 참고합니다.

소스/타깃

파일을 가져오는 소스 시스템과 파일을 전송하는 타깃 시스템을 설정합니다.

응답 메시지 매핑 설정

FTP 작업 결과를 응답 메시지 필드에 매핑하는 영역입니다.

명령어 실행 설정

파일 전송 전후에 FTP 명령어를 실행할 경우에 설정하는 영역입니다.

outbound rule create ftp
  • 상세 정보 설정

    항목 설명

    접속 정보

    FTP 서버에 로그인하는 사용자의 이름과 비밀번호를 설정합니다. 필드 매핑 또는 표현식으로 설정 가능합니다. 설정 방법은 필드/표현식 매핑을 참고합니다.

    FTP 서버 시스템 타입

    원격 FTP 서버의 운영체제를 선택합니다. 다음에서 선택 가능합니다.

    • 선택 안 함

    • UNIX: UNIX/Linux 계열 서버

    • WINDOWS: Windows 서버

    FTP Rule 타입 *

    FTP 작업 유형을 선택합니다. 선택한 룰 타입에 따라 요청/응답 메시지, 소스/타깃 등의 설정 구성이 달라집니다.

    • GET: 원격 서버에서 파일을 다운로드합니다.

    • PUT: 원격 서버로 파일을 업로드합니다.

    • RM: 원격 디렉터리의 파일 목록을 조회합니다.

    • MV: 원격 파일을 이동하거나 이름을 변경합니다.

    • LS: 원격 파일을 삭제합니다.

    FTP 룰 타입을 변경하면 다음 동작이 수행됩니다.

    • 유효성 검증 오류가 초기화됩니다.

    • 변경한 FTP 룰 타입에 따라 소스/타깃 대상과 설정 영역 구성이 자동으로 갱신됩니다.

  • 소스/타깃 설정

    소스 시스템은 파일을 가져오는 위치이며, 타깃 시스템은 파일을 전송하는 위치를 나타냅니다. FTP 작업 유형에 따라 소스 및 타깃 시스템의 역할이 달라질 수 있으며, 소스/타깃 설정 섹션의 제목에는 해당 역할이 괄호 안에 표시됩니다.

    다음은 소스 설정 항목에 대한 설명입니다.

    outbound rule ftp source
    항목 설명

    디렉터리 *

    소스 파일이 위치한 디렉터리 경로를 매핑합니다.

    파일 패턴 *

    처리할 파일의 패턴을 매핑합니다. 와일드카드(*, ?) 사용이 가능합니다.

    제외할 파일 패턴

    처리에서 제외할 파일의 패턴을 매핑합니다.

    최대 파일 개수 제한

    한 번에 처리할 최대 파일 개수를 제한할지 여부를 선택합니다.

    최대 파일 개수

    최대 파일 개수 제한 토글을 활성화한 경우 처리할 최대 파일 개수이며, 1 이상을 설정해야 합니다.

    최대 파일 개수 제한 토글을 활성화한 경우 반드시 설정해야 하며, 0 이하의 값을 입력하면 유효성 검증에 실패합니다.

    선택한 FTP 룰 타입에 따라 타깃 설정이 필요할 수 있습니다.

    outbound rule ftp target
    항목 설명

    디렉터리 *

    대상 파일을 저장할 디렉터리 경로를 매핑합니다. GET, PUT 타입 지정 시 필수로 설정해야 합니다.

    • GET 타입 지정 시: 로컬 서버의 다운로드 경로입니다.

    • PUT 타입 지정 시: 원격 FTP 서버의 경로입니다.

    파일 이름

    저장할 파일 이름을 매핑합니다. 미지정 시 소스 파일명을 사용합니다.

    전송 파일 타입

    파일 전송 시 사용할 전송 모드를 선택합니다.

    • ASCII: 텍스트 파일 전송 모드입니다. 줄 끝 문자가 자동으로 변환됩니다.

    • EBCDIC: EBCDIC 인코딩 텍스트 파일 전송 모드입니다.

    • BINARY: 바이너리 파일 전송 모드입니다. 파일 내용이 그대로 전송됩니다.

    • LOCAL: 로컬 바이트 크기를 지정하는 전송 모드입니다.

    이미지, 압축 파일 등 바이너리 파일 전송 시에는 BINARY 모드를 사용해야 합니다.

    FTP 룰 타입에 따라 필수로 설정해야 하는 항목이 다릅니다.
    (O: 필수, △: 조건부 필수 , -: 선택 사항)

    항목 GET PUT LS MV RM

    소스 > 디렉터리

    O

    O

    O

    O

    O

    소스 > 파일 패턴

    O

    O

    O

    O

    O

    대상 > 디렉터리

    O

    O

    -

    -

    대상 > 파일 이름

    -

    -

    -

    -

    MV 타입을 선택한 경우, 디렉터리 또는 파일 이름 중 최소 하나를 매핑해야 합니다. 두 항목이 모두 매핑되지 않으면 유효성 검증에 실패합니다.

    매핑 방식에 따라 다음과 같이 동작합니다.

    • 디렉터리만 매핑한 경우: 파일을 동일한 이름으로 다른 디렉터리로 이동합니다.

    • 파일 이름만 매핑한 경우: 동일한 디렉터리에서 파일 이름만 변경합니다.

    • 디렉터리와 파일 이름을 모두 매핑한 경우: 파일 이름을 변경하고 다른 디렉터리로 이동합니다.

  • 응답 메시지 매핑 설정

    FTP 작업 결과를 응답 메시지 필드에 매핑합니다. 응답 메시지가 1개 이상 설정된 경우에만 매핑 버튼이 활성화됩니다.

    outbound rule ftp response message
    항목 설명

    파일 이름

    처리된 파일 이름을 매핑할 필드입니다.

    파일 경로

    처리된 파일의 전체 경로를 매핑할 필드입니다.

    파일 크기

    처리된 파일의 크기를 매핑할 필드입니다.

    1. MV(이동) 또는 RM(삭제) 타입을 지정한 경우, 응답 메시지 매핑 설정 영역이 표시되지 않습니다.

    2. 응답 메시지는 여러 필드에 매핑할 수 있습니다. 여러 파일을 처리하는 경우 각 파일의 정보가 배열로 매핑됩니다.

  • FTP 명령어 실행 설정

    파일 전송 전후에 FTP 명령어를 실행할 수 있습니다.

    outbound rule ftp command
    항목 설명

    변수 설정

    FTP 명령어에서 사용할 변수를 설정합니다. 요청 메시지가 1개 이상 설정된 경우에만 활성화됩니다.

    설정할 변수 개수를 먼저 지정한 후, 각 변수에 요청 메시지 필드를 매핑합니다.

    설정할 변수 개수

    FTP 명령어에서 사용할 변수의 개수를 입력합니다. 1 이상의 값을 입력하면 변수 매핑이 활성화됩니다.

    매핑된 변수

    요청 메시지 필드를 변수에 매핑합니다.

    전송 전처리 명령

    파일 전송 전에 실행할 FTP 명령어입니다. 여러 명령어를 입력하는 경우 각 명령어를 한 줄씩 입력합니다.

    전송 후처리 명령

    파일 전송 후에 실행할 FTP 명령어입니다. 여러 명령어를 입력하는 경우 각 명령어를 한 줄씩 입력합니다.

    설정한 변수 개수만큼 모든 변수가 매핑되어야 저장이 가능합니다. 매핑되지 않은 변수가 있으면 유효성 검증에 실패합니다.

필드/표현식 매핑

FTP 아웃바운드 룰의 각 설정값은 메시지 필드 매핑 또는 표현식으로 동적으로 설정할 수 있습니다.

설정 영역에서 매핑 추가 버튼(mapping button)을 클릭하면, 필드 매핑 또는 표현식을 설정할 수 있는 매핑 다이얼로그가 표시됩니다.

outbound rule ftp mapping dialogue

필드 매핑은 왼쪽 Source 영역에서 소스 메시지의 필드를 선택하고 오른쪽 Target 영역에서 매핑할 항목을 선택한 후 도구 모음에서 매핑 추가 버튼을 클릭합니다. 소스 메시지의 필드를 선택하면 Source 영역 하단에 해당 필드 정보가 표시됩니다.

표현식 매핑은 Target 영역에서 매핑할 항목을 선택한 후 도구 모음에서 표현식 추가 버튼(mapping expression button)을 클릭합니다. 중앙 하단의 Expression 영역이 활성화되면 설정할 표현식을 입력합니다.

설정이 완료되면 화면 오른쪽 하단의 [확인] 버튼을 클릭합니다.

사용 예시

파일 다운로드 (GET)

원격 서버에서 파일을 다운로드하는 시나리오의 설정 예시입니다.

프로토콜: FTP
FTP Rule 타입: GET
타임아웃: 60000ms (60초)

소스 > 디렉터리: /remote/data
소스 > 파일 패턴: *.csv
대상 > 디렉터리: /local/download

전송 파일 타입: BINARY

파일 업로드 (PUT)

로컬 파일을 원격 서버로 업로드하는 시나리오의 설정 예시입니다.

프로토콜: FTP
FTP Rule 타입: PUT
타임아웃: 120000ms (120초)

소스 > 디렉터리: /local/outgoing
소스 > 파일 패턴: report_*.pdf
대상 > 디렉터리: /remote/reports

전송 파일 타입: BINARY
최대 파일 개수 제한: 사용
최대 파일 개수: 10

파일 목록 조회 (LS)

원격 서버 디렉터리의 파일 목록을 조회하는 시나리오의 설정 예시입니다.

프로토콜: FTP
FTP Rule 타입: LS
타임아웃: 10000ms (10초)

소스 > 디렉터리: /remote/data
소스 > 파일 패턴: *

응답 매핑 > 파일 이름: 응답 메시지의 fileList 필드

파일 이동 (MV)

원격 파일을 다른 디렉터리로 이동하는 시나리오의 설정 예시입니다.

프로토콜: FTP
FTP Rule 타입: MV
타임아웃: 30000ms (30초)

소스 > 디렉터리: /remote/incoming
소스 > 파일 패턴: processed_*.dat
대상 > 디렉터리: /remote/archive

FILE 아웃바운드 룰

개요

FILE 아웃바운드 룰은 로컬 파일 시스템에 접근하여 파일을 읽거나 쓰기 위한 규칙을 정의합니다. 배치 처리, 파일 기반 데이터 교환 등에 사용됩니다.

FILE 아웃바운드 룰 생성

리소스 트리에서 원하는 거래 또는 거래그룹의 컨텍스트 메뉴를 열고 [리소스 생성] > [아웃바운드 룰] > [FILE 생성]을 선택합니다.

outbound rule create db
  • ① 기본 정보 설정

    모든 아웃바운드 룰에 공통으로 적용되는 설정 항목입니다. 설정 방법은 공통 설정 항목을 참고합니다.

  • ② 요청/응답 메시지 설정

    아웃바운드 룰의 요청 및 응답 메시지를 설정합니다. 설정 방법은 요청/응답 메시지 설정을 참고합니다.

  • ③ 상세 옵션 설정

    FILE 아웃바운드 룰의 상세 옵션을 설정합니다. 상세 옵션 영역은 파일 룰 타입 설정에 따라 설정 항목의 구성이 달라집니다.

    항목 설명

    파일 룰 타입 *

    FILE 작업 유형입니다.

    • READ: 파일을 읽습니다.

    • WRITE: 파일을 기록합니다.

    READ 타입 선택 시 옵션 설정은 READ 타입 상세 옵션 설정을, WRITE 타입 선택 시 옵션 설정은 WRITE 타입 상세 옵션 설정을 참고합니다.

READ 타입 상세 옵션 설정

파일 룰 타입을 READ로 선택한 경우의 상세 옵션 화면입니다.

outbound rule file read advanced options
항목 설명

파일 경로 *

파일이 위치한 디렉터리 경로를 매핑합니다.

파일 이름 *

처리할 파일 이름을 매핑합니다. 와일드카드(*, ?) 사용이 가능합니다.

읽기 제외할 파일 패턴

처리에서 제외할 파일의 패턴을 매핑합니다.

하위 폴더 조회 여부

하위 디렉터리의 파일도 포함할지 여부를 선택합니다. 다음 중에서 선택 가능합니다.

  • 조회

  • 조회 안 함

  • <매핑으로 선택>

파일 인코딩

파일의 인코딩 설정입니다. 다음 중에서 선택 가능합니다.

  • UTF-8

  • UTF-16

  • ISO-8859-1

  • US-ASCII

  • <매핑으로 선택>

Flag 파일 타입

파일 처리 완료를 나타내는 Flag 파일 설정입니다.

  • NONE: Flag 파일을 사용하지 않습니다. (기본값)

  • Extension: 특정 확장자를 가진 Flag 파일을 사용합니다. 설정 시 확장자를 지정해야 합니다. (예: .done, .flag)

  • File Name: 특정 파일 이름의 Flag 파일을 사용합니다. 설정 시 파일 이름을 매핑해야 합니다.

Flag 파일 타입을 Extension 또는 File Name으로 선택한 경우 빈 값을 입력하면 유효성 검증에 실패합니다.

데이터 모드

파일의 데이터 처리 방식을 지정합니다.

  • BULK: 파일 전체 내용을 메시지 필드에 매핑합니다.

  • INFO: 파일 내용은 읽지 않고 파일 정보만 조회합니다. 파일의 경로, 이름, 크기, 인코딩 정보를 조회할 수 있습니다.

  • SKIP: 파일 내용 처리를 건너뛰고 후처리(이동, 삭제 등)만 수행합니다.

파일 처리 순서

여러 파일을 처리할 때 처리 순서를 지정합니다.

  • 시스템에서 읽어오는 대로: 별도의 정렬 없이 시스템에서 읽어오는 순서대로 처리합니다. (기본값)

  • 이름: 파일 이름을 기준으로 정렬합니다.

  • 수정일: 파일 수정 날짜를 기준으로 정렬합니다.

정렬

'파일 처리 순서' 필드를 이름 또는 수정일로 선택한 경우 정렬 방향을 지정합니다.

  • 오름차순

  • 내림차순

최대 읽기 파일 수

파일을 읽을 때 한 번에 처리할 최대 파일 수를 입력합니다.

파일 읽을 방법

데이터 모드가 BULK인 경우에만 표시됩니다. 파일 내용을 어떻게 읽을지 설정합니다.

  • Data Object: 파일의 전체 내용을 읽어 출력 메시지의 지정된 필드에 저장합니다.

  • Attachment: 파일 내용을 메시지의 첨부로 추가합니다.

추가 실행

파일 처리 완료 후 수행할 동작을 지정합니다.

  • 설정 안 함: 아무 동작도 수행하지 않습니다. (기본값)

  • 삭제: 파일을 삭제합니다.

  • 이동: 파일을 다른 디렉터리로 이동합니다.

  • 이동 후 파일 이름 변경: 파일을 다른 디렉터리로 이동하고 이름을 변경합니다.

  • 파일 이름 뒤에 확장자 추가: 파일에 확장자를 추가합니다. (예: .done)

  • 파일 이름 변경: 파일 이름을 변경합니다.

응답 메시지 매핑

FILE 작업 결과를 응답 메시지 필드에 매핑합니다.

  • 파일 경로: 처리된 파일의 전체 경로를 매핑할 필드입니다.

  • 파일 이름: 처리된 파일 이름을 매핑할 필드입니다.

  • 파일 인코딩: 파일의 인코딩 정보를 매핑할 필드입니다.

  • 파일 내용: 파일 내용을 매핑할 필드입니다. (READ-BULK 모드에서만 설정)

  • 파일 크기: 파일 크기를 매핑할 필드입니다. (READ-INFO 모드에서만 설정)

응답 메시지 매핑 버튼은 응답 메시지가 1개 이상 설정되어 있어야 활성화됩니다.

'추가 실행' 필드에서 다음 동작을 선택한 경우 처리 후 동작 파라미터를 설정해야 합니다. 파라미터는 필드 매핑 또는 표현식으로 동적으로 설정할 수 있습니다.

동작 파라미터 설명

이동

이동할 대상 디렉터리 경로를 매핑합니다.

이동 후 파일 이름 변경

이동할 대상 디렉터리와 새 파일 이름을 매핑합니다. (경로/파일 이름 형식)

파일 이름 뒤에 확장자 추가

추가할 확장자를 매핑합니다. (예: .done)

파일 이름 변경

새 파일 이름을 매핑합니다.

READ 타입 상세 옵션 설정 예시

다음은 Flag 파일 타입을 Extension으로 지정하고, 확장자를 .done으로 설정한 경우의 예시입니다.

데이터 파일: data_20250205.csv
Flag 파일: data_20250205.csv.done

다음은 데이터 모드를 Skip으로 선택하고, 처리 후 동작을 이동으로 설정한 경우의 예시입니다.

시나리오: 파일 이동만 수행
데이터 모드: Skip
추가 실행: 이동
처리 후 동작 파라미터: /archive

→ 파일 내용은 읽지 않고 /archive 디렉터리로 이동만 수행
WRITE 타입 상세 옵션 설정

파일 룰 타입을 WRITE로 선택한 경우의 상세 옵션 화면입니다. READ 타입과 공통된 설정 항목은 READ 타입 상세 옵션 설정을 참고합니다.

outbound rule file write advanced options
항목 설명

데이터 모드

파일의 데이터 처리 방식을 지정합니다.

  • BULK(자동 설정됨): 메시지 필드의 전체 내용을 파일에 저장합니다.

쓰기 모드

파일 쓰기의 동작 방식을 선택합니다.

  • 이어 쓰기: 기존 파일에 내용을 추가합니다.

  • 덮어 쓰기: 기존 파일을 덮어씁니다.

기존 파일 삭제 여부

'쓰기 모드’를 덮어 쓰기로 지정 시, 기존 파일을 삭제할지 여부를 선택합니다.

  • 삭제: 쓰기 전 기존 파일을 삭제합니다.

  • 보존: 기존 파일을 삭제하지 않고 덮어 씁니다. (기본값)

파일 가져올 방법

데이터 모드가 BULK인 경우에만 표시됩니다. 파일에 쓸 내용을 어떻게 가져올지 설정합니다.

  • Data Object: 입력 메시지의 지정된 필드 값을 읽어 파일에 씁니다.

  • Attachment: 입력 메시지의 첨부 파일에서 데이터를 가져와 파일로 저장합니다.

필드/표현식 매핑

FILE 아웃바운드 룰의 각 설정값은 메시지 필드 매핑 또는 표현식으로 동적으로 설정할 수 있습니다.

필드 매핑

메시지의 특정 필드 값을 사용합니다.

항목 설명

매핑 타입

FIELD

메시지 UID

참조할 메시지의 UID입니다.

메시지 필드 ID

참조할 필드의 ID입니다.

표현식 매핑

표현식을 사용하여 값을 동적으로 생성합니다.

항목 설명

매핑 타입

EXPRESSION

표현식

값을 생성하는 표현식입니다.

표현식 예시
# 날짜 기반 디렉터리
/data/backup/${date:yyyyMMdd}

# 날짜 기반 파일 이름
report_${date:yyyyMMdd}.csv

요청 메시지를 삭제하면 해당 메시지를 Source로 참조하던 매핑 룰이, 응답 메시지를 삭제하면 해당 메시지를 Target으로 참조하던 매핑 룰이 자동으로 초기화됩니다.

사용 예시

파일 읽기 (BULK 모드)

다음은 파일의 전체 내용을 읽어 메시지 필드에 매핑하는 시나리오의 설정 예시입니다.

프로토콜: FILE
FILE 룰 타입: READ
타임아웃: 30000ms (30초)

파일 경로: /data/incoming
파일 이름: data_*.json
데이터 모드: Bulk

처리 후 동작: 이동
처리 후 동작 파라미터: /data/processed

응답 파일 내용: 응답 메시지의 content 필드
응답 파일 이름: 응답 메시지의 fileName 필드

파일 정보 조회 (INFO 모드)

다음은 파일 목록과 파일 정보만 조회하는 시나리오의 설정 예시입니다.

프로토콜: FILE
FILE 룰 타입: READ
타임아웃: 10000ms (10초)

파일 경로: /data/reports
파일 이름: *.csv
하위 폴더 조회 여부: 조회
데이터 모드: Info

파일 처리 순서: 수정일
정렬: 내림차순

응답 파일 경로: 응답 메시지의 filePath 필드
응답 파일 이름: 응답 메시지의 fileName 필드
응답 파일 크기: 응답 메시지의 fileSize 필드

파일 이동 (Skip 모드)

다음은 파일의 내용 처리를 건너뛰고 파일 이동만 수행하는 시나리오의 설정 예시입니다.

프로토콜: FILE
FILE 룰 타입: READ
타임아웃: 10000ms (10초)

파일 경로: /data/temp
파일 이름: *.log
데이터 모드: Skip

처리 후 동작: 이동
처리 후 동작 파라미터: /data/archive/${date:yyyyMMdd}

파일 쓰기

다음은 메시지 필드의 내용을 파일에 저장하는 시나리오의 설정 예시입니다.

프로토콜: FILE
FILE 룰 타입: WRITE
타임아웃: 30000ms (30초)

파일 경로: /data/outgoing
파일 이름: report_${date:yyyyMMdd}.csv
데이터 모드: Bulk

파일 쓰기 모드: 덮어 쓰기
기존 파일 삭제 여부: 삭제

요청 파일 내용: 요청 메시지의 reportData 필드

DB 아웃바운드 룰

개요

DB 아웃바운드 룰은 데이터베이스에 SQL 쿼리를 실행하기 위한 규칙을 정의합니다. SELECT, INSERT, UPDATE, DELETE 등의 SQL 쿼리를 실행하고 실행 결과를 메시지에 매핑할 수 있습니다.

DB 아웃바운드 룰 생성

리소스 트리에서 원하는 거래 또는 거래그룹의 컨텍스트 메뉴를 열고 [리소스 생성] > [아웃바운드 룰] > [DB 생성]을 선택합니다.

DB 아웃바운드 룰 생성 화면은 [DB 아웃바운드 룰] 탭과 [룰 SQL] 탭으로 구성됩니다. 설정 정보를 입력하고 탭 하단의 [생성] 버튼을 클릭합니다.

outbound rule create db

다음은 [DB 아웃바운드 룰] 탭의 화면 구성입니다.

  • 기본 정보 설정

    모든 아웃바운드 룰에 공통으로 적용되는 설정 항목입니다. 설정 방법은 공통 설정 항목을 참고합니다.

  • 요청/응답 메시지 설정

    아웃바운드 룰의 요청 및 응답 메시지를 설정합니다. 설정 방법은 요청/응답 메시지 설정을 참고합니다.

다음은 [룰 SQL] 탭의 화면 구성입니다.

outbound rule create db rule sql
  • ① SQL 에디터

    SQL 쿼리를 작성하고 SQL 실행 결과를 메시지 필드에 매핑할 수 있습니다. 최소 1개의 SQL이 작성되어야 하며, 여러 개의 SQL을 순차적으로 실행할 수 있습니다.

    SQL 쿼리를 작성하는 방법은 SQL 작성을 참고합니다.

    SQL 쿼리가 작성되지 않으면 아웃바운드 룰이 올바르게 동작하지 않습니다.

    버튼 설명

    [출력 매핑]

    SQL 실행 결과를 메시지 필드에 매핑합니다. 주로 SELECT 쿼리에서 사용됩니다.

    매핑 방법은 SQL 출력 매핑을 참고합니다.

    [문법 체크]

    문법 검증 및 자동 정렬이 수행됩니다. Ctrl + S을 눌러도 동일하게 수행됩니다.

    하단의 자동 정렬 체크박스를 해제하면 문법 오류 검사만 수행합니다. 문법 검증은 선택한 데이터베이스 종류를 기준으로 수행되며, 현재 MariaDB, MySQL, PostgreSQL을 지원합니다.

  • ② 입력 스키마

    [DB 아웃바운드 룰] 탭에서 설정한 요청 메시지의 필드가 표시됩니다. 요청 메시지 필드를 SQL 에디터로 드래그 앤 드롭하여 매핑 소스 컬럼으로 사용할 수 있습니다.

SQL 작성

SQL 에디터에서 작성할 수 있습니다.

다음은 지원되는 SQL 쿼리와 각 쿼리의 수행 결과입니다.

쿼리 설명

SELECT

데이터를 조회합니다. 결과를 응답 메시지에 매핑합니다.

INSERT

데이터를 삽입합니다. 영향받은 행 수를 반환합니다.

UPDATE

데이터를 수정합니다. 영향받은 행 수를 반환합니다.

DELETE

데이터를 삭제합니다. 영향받은 행 수를 반환합니다.

다음은 SQL SELECT 쿼리의 작성 예시입니다.

SELECT customer_id, customer_name, email
FROM customers
WHERE status = 'ACTIVE'

SQL 출력 매핑

SQL 실행 결과를 응답 메시지에 매핑하려면 SQL 에디터에서 [출력 매핑] 버튼을 클릭합니다. [출력 매핑] 버튼은 다음 조건을 모두 만족할 때만 활성화됩니다.

  • 응답 메시지가 1개 이상 설정되어 있어야 합니다.

  • SQL 쿼리에서 출력 가능한 필드가 존재해야 합니다.

SQL 문법 오류가 있는 경우에도 [출력 매핑] 버튼이 비활성화됩니다.

SQL 쿼리를 작성 및 실행 후 [출력 매핑] 버튼을 클릭하면 매핑 다이얼로그가 표시됩니다.

SELECT 쿼리를 실행한 경우 조회된 컬럼과 함께 Row Count 필드가 표시됩니다. Row Count 필드는 조회된 행(row) 수입니다.

outbound rule db select mapping field

INSERT, UPDATE, DELETE 쿼리를 실행한 경우 Affected Count, Success Count 필드가 표시됩니다.

outbound rule db mapping field

Affected Count 필드는 SQL 실행으로 영향받은 행 수입니다. 실행 결과에 따라 0 이상의 값이 반환됩니다. Success Count 필드는 성공적으로 실행된 SQL 수입니다.

SQL이 성공적으로 실행되었는지 여부는 Success Count를 기준으로, 실제로 변경된 행이 있는지 여부는 Affected Count를 기준으로 판단합니다.

SELECT 쿼리는 Row Count 필드만, INSERT, UPDATE, DELETE 쿼리는 Affected Count, Success Count 필드만 출력 매핑에 사용할 수 있습니다.

출력 매핑은 모든 SQL 쿼리에서 선택 사항입니다. SELECT 쿼리는 조회 결과를 응답 메시지에 매핑하지 않으면 조회된 데이터를 사용할 수 없으므로 설정을 권장합니다.

Affected Count가 0인 경우

SQL이 정상적으로 실행되더라도 Affected Count는 0으로 반환될 수 있으며, 이는 오류가 아닙니다. Success Count가 1이면 SQL은 정상적으로 실행된 것입니다.

다음과 같은 경우에는 Affected Count가 0으로 반환될 수 있습니다.

  • UPDATE / DELETE 쿼리 실행 시 WHERE 조건에 일치하는 행이 없는 경우

  • CREATE, DROP, ALTER, TRUNCATE 등의 DDL 구문 (행 단위 처리가 아니므로 항상 0을 반환)

  • MySQL / MariaDB에서 INSERT IGNORE 실행 시 삽입 대상이 모두 중복 키인 경우

DB 타입별 Affected Count 기준

Affected Count는 SQL 실행으로 영향을 받은 행 수를 의미합니다. 데이터베이스의 종류에 따라 Affected Count를 계산하는 기준이 다릅니다.

Affected Count의 의미는 데이터베이스 종류에 따라 다를 수 있으므로, 동일한 SQL이라도 DB 타입에 따라 결과 값이 다르게 나타날 수 있습니다.

  • MySQL / MariaDB - UPDATE 쿼리

    MySQL 및 MariaDB는 기본적으로 WHERE 조건에 일치하는 행 수를 Affected Count로 반환합니다. 따라서 실제로 값이 변경되지 않은 경우에도 Affected Count에 포함될 수 있습니다.

    반면, Oracle 및 PostgreSQL은 실제로 값이 변경된 행 수를 반환합니다.

    벤더 Affected Count 기준

    Oracle / PostgreSQL

    실제로 값이 변경된 행 수

    MySQL / MariaDB

    WHERE 조건에 일치하는 행 수 (값 변경 여부와 무관)

  • MySQL / MariaDB - INSERT 쿼리

    다음은 MySQL / MariaDB에서 INSERT 계열 쿼리 실행 시 Affected Count의 반환 기준입니다.

    구문 Affected Count 이유

    INSERT …​ ON DUPLICATE KEY UPDATE
    (값 변경 발생)

    2

    내부적으로 기존 행 삭제 후 다시 삽입된 것으로 처리됩니다. (DELETE + INSERT)

    REPLACE INTO (기존 행 교체)

    2

    내부적으로 기존 행 삭제 후 다시 삽입됩니다. (DELETE + INSERT)

    INSERT …​ ON DUPLICATE KEY UPDATE
    (값 변경 없음)

    0

    실제 데이터 변경이 없으므로 0이 반환됩니다.

  • MySQL / MariaDB - JDBC 드라이버 동작

    MariaDB 및 MySQL JDBC 드라이버는 기본적으로 실제 변경된 행 수가 아닌 조건에 일치하는 행 수를 반환할 수 있습니다.

    이로 인해 INSERT …​ ON DUPLICATE KEY UPDATE 실행 시 값 변경이 없더라도 Affected Count가 0이 아닌 1로 반환될 수 있습니다.

    실제 데이터 변경 여부를 기준으로 판단하려면 JDBC URL에 다음 옵션을 추가해야 합니다.

    useAffectedRows=true

    다음은 JDBC URL에 옵션을 추가한 예시입니다.

    jdbc:mariadb://host:port/database?useAffectedRows=true

SQL 출력 매핑 예시

다음은 SQL 실행 결과의 각 컬럼을 응답 메시지 필드에 매핑하는 예시입니다.

SQL 결과 컬럼          →  응답 메시지 필드
-----------------          -----------------
customer_id           →  customerId
customer_name         →  customerName
email                 →  email
registration_date     →  registrationDate
단일 행 결과

SELECT 실행 결과가 단일 행인 경우 각 컬럼 값이 해당 필드에 직접 매핑됩니다.

SQL: SELECT customer_id, customer_name FROM customers WHERE id = '${CustomerSearchRequest/id}'

결과:
| customer_id | customer_name |
|-------------|---------------|
| C001        | 홍길동        |

매핑 결과:
{
  "customerId": "C001",
  "customerName": "홍길동"
}
다중 행 결과

SELECT 실행 결과가 여러 행인 경우 배열로 매핑됩니다.

SQL: SELECT order_id, order_date FROM orders WHERE customer_id = '${OrderSearchRequest/customerId}'

결과:
| order_id | order_date |
|----------|------------|
| ORD001   | 2025-02-01 |
| ORD002   | 2025-02-03 |
| ORD003   | 2025-02-05 |

매핑 결과 (배열 필드인 경우):
{
  "orders": [
    {"orderId": "ORD001", "orderDate": "2025-02-01"},
    {"orderId": "ORD002", "orderDate": "2025-02-03"},
    {"orderId": "ORD003", "orderDate": "2025-02-05"}
  ]
}
다중 쿼리

여러 개의 SQL을 순차적으로 실행할 수 있습니다.

다음은 다중 쿼리 실행 예시입니다.

-- SQL #0: 고객 정보 조회
SELECT customer_id, customer_name
FROM customers
WHERE customer_id = '${CustomerInfoRequest/customerId}'

-- SQL #1: 주문 목록 조회
SELECT order_id, order_date, total_amount
FROM orders
WHERE customer_id = '${CustomerInfoRequest/customerId}'
ORDER BY order_date DESC

-- SQL #2: 적립 포인트 조회
SELECT point_balance
FROM customer_points
WHERE customer_id = '${CustomerInfoRequest/customerId}'

다음은 위 SQL 쿼리 실행 결과를 응답 메시지 필드에 매핑하는 예시입니다.

인덱스 0 (고객 정보):
  customer_id → customerId
  customer_name → customerName

인덱스 1 (주문 목록):
  order_id → orders[].orderId
  order_date → orders[].orderDate
  total_amount → orders[].totalAmount

인덱스 2 (적립 포인트):
  point_balance → pointBalance

다중 쿼리는 단일 트랜잭션 내에서 실행됩니다. 하나의 쿼리가 실패하면 전체 트랜잭션이 롤백됩니다.

SQL 파라미터 바인딩

SQL 작성 시 요청 메시지의 필드를 파라미터로 참조하여 사용할 수 있습니다.

[룰 SQL] 탭의 입력 스키마에 표시된 요청 메시지의 필드를 SQL 에디터에 드래그 앤 드롭합니다.

요청 메시지 필드는 ${MessageId/FieldId} 형식으로 참조하며, SELECT 컬럼, WHERE 조건, VALUES 등 SQL의 다양한 위치에서 사용할 수 있습니다.

db rule sql parameter binding
구성 요소 설명

MessageId

요청 메시지의 ID이며, 실제 메시지 ID와 정확히 일치해야 합니다.

FieldId

요청 메시지 내 필드의 ID이며, 실제 필드 ID와 정확히 일치해야 합니다.

SQL 파라미터는 사용 위치에 따라 다음과 같이 입력합니다.

위치 설명

파라미터를 값(value) 으로 사용하는 경우

문자열 타입은 '${MessageId/FieldId}'와 같이 작은따옴표('')로 감싸서 사용하고, 숫자 타입(INT, LONG 등)은 따옴표 없이 사용합니다.

파라미터를 식별자(컬럼명, 테이블명 등)로 사용하는 경우

데이터 타입과 관계없이 따옴표를 사용하지 않습니다.

필드 값이 null인 경우

SQL NULL로 바인딩됩니다.

다음은 요청 메시지 필드를 SQL 파라미터로 바인딩하는 예시입니다.

SELECT order_id, order_date, total_amount
FROM orders
WHERE customer_id = '${OrderSearchRequest/customerId}'
  AND order_date >= '${OrderSearchRequest/startDate}'
  AND order_date <= '${OrderSearchRequest/endDate}'
  AND status = '${OrderSearchRequest/status}'

위 예시에서 ${OrderSearchRequest/customerId} 등의 파라미터는 실행 시점에 요청 메시지의 해당 필드 값으로 대체됩니다.

다음은 복잡한 바인딩 예시입니다.

SELECT ${OrderSearchRequest/selectCol1}, ${OrderSearchRequest/selectCol2},
       quantity, unit_price
FROM orders
WHERE customer_id = '${OrderSearchRequest/customerId}'
  AND status = '${OrderSearchRequest/status}'
  AND quantity >= ${OrderSearchRequest/minQuantity}
  AND unit_price <= ${OrderSearchRequest/maxUnitPrice}

위 예시에서 ${OrderSearchRequest/selectCol1}, ${OrderSearchRequest/selectCol2}는 컬럼명(식별자)으로 대체되므로 따옴표를 사용하지 않습니다.

사용 예시

SELECT 쿼리

데이터 조회 시나리오의 설정 예시입니다.

프로토콜: DB
타임아웃: 30000ms (30초)

SQL 에디터:
  SELECT product_id, product_name, price, stock_quantity
  FROM products
  WHERE category = '${ProductSearchRequest/category}'
    AND price <= ${ProductSearchRequest/maxPrice}
    AND stock_quantity > 0
  ORDER BY price ASC

요청 메시지: ProductSearchRequest
  - category: STRING
  - maxPrice: LONG

응답 메시지: ProductSearchResponse
  - products: OBJECT (배열)
    - productId: STRING
    - productName: STRING
    - price: LONG
    - stockQuantity: INT

출력 매핑:
  인덱스 0:
    product_id → productId
    product_name → productName
    price → price
    stock_quantity → stockQuantity

INSERT 쿼리

데이터 삽입 시나리오의 설정 예시입니다.

프로토콜: DB
타임아웃: 10000ms (10초)

SQL 에디터:
  INSERT INTO orders (
    order_id, customer_id, order_date,
    total_amount, status
  )
  VALUES (
    '${OrderCreateRequest/orderId}', '${OrderCreateRequest/customerId}',
    '${OrderCreateRequest/orderDate}', ${OrderCreateRequest/totalAmount}, 'PENDING'
  )

요청 메시지: OrderCreateRequest
  - orderId: STRING
  - customerId: STRING
  - orderDate: STRING
  - totalAmount: LONG

UPDATE 쿼리

데이터 수정 시나리오의 설정 예시입니다.

프로토콜: DB
타임아웃: 10000ms (10초)

SQL 에디터:
  UPDATE orders
  SET status = '${OrderStatusUpdateRequest/newStatus}',
      updated_at = NOW()
  WHERE order_id = '${OrderStatusUpdateRequest/orderId}'
    AND status = '${OrderStatusUpdateRequest/currentStatus}'

요청 메시지: OrderStatusUpdateRequest
  - orderId: STRING
  - currentStatus: STRING
  - newStatus: STRING

복합 트랜잭션

여러 테이블에 걸친 복합 트랜잭션 시나리오의 설정 예시입니다.

프로토콜: DB
타임아웃: 30000ms (30초)

SQL 에디터:
  -- SQL #0: 주문 생성
  INSERT INTO orders (order_id, customer_id, total_amount, status)
  VALUES ('${OrderProcessRequest/orderId}', '${OrderProcessRequest/customerId}',
          ${OrderProcessRequest/totalAmount}, 'CONFIRMED')

  -- SQL #1: 주문 상세 생성
  INSERT INTO order_items (order_id, product_id, quantity, unit_price)
  VALUES ('${OrderProcessRequest/orderId}', '${OrderProcessRequest/productId}',
          ${OrderProcessRequest/quantity}, ${OrderProcessRequest/unitPrice})

  -- SQL #2: 재고 차감
  UPDATE products
  SET stock_quantity = stock_quantity - ${OrderProcessRequest/quantity}
  WHERE product_id = '${OrderProcessRequest/productId}'

  -- SQL #3: 포인트 적립
  UPDATE customer_points
  SET point_balance = point_balance + ${OrderProcessRequest/earnedPoints}
  WHERE customer_id = '${OrderProcessRequest/customerId}'

요청 메시지: OrderProcessRequest
  - orderId: STRING
  - customerId: STRING
  - productId: STRING
  - quantity: INT
  - unitPrice: LONG
  - totalAmount: LONG
  - earnedPoints: INT