---
url: https://docs.ogmabox.com/ko/app/workflows.md
description: 패시브 처리, 능동 작업, 데이터 변환을 위한 재사용 가능한 Ogma 워크플로를 만듭니다.
---

# 워크플로 {#workflows}

워크플로는 캡처된 트래픽 처리, 능동 단계 실행, 데이터 변환을 위한 재사용 가능한 자동화 파이프라인입니다. 별도의 스크립트를 작성할 필요가 없습니다.

## 워크플로 유형 {#workflow-types}

| 유형 | 실행 계기 | 일반적인 용도 |
|------|-------------|------------|
| 패시브 | 새로 캡처된 트래픽 | 주목할 패턴 표시, 요청 태그 지정, 발견 사항 자동 생성. |
| 액티브 | 수동 실행 | 추가 요청 전송, 작업 연결, 다단계 테스트 실행. |
| 변환 | 테스트 입력, 변환 작업 또는 찾아 바꾸기 | JavaScript 서식 정리나 JSON 정규화 등 텍스트 또는 바이트 변환. |

패시브 워크플로는 백그라운드에서 계속 실행됩니다. 액티브 워크플로는 선택한 요청 집합에 대해 필요할 때 실행됩니다.

## 워크플로 캔버스 {#the-workflow-canvas}

**워크플로**를 열고 워크플로를 선택하여 캔버스를 엽니다.

* 노드는 중앙 패널에 표시됩니다. 각 노드에는 타입이 지정된 입력 및 출력 포트가 있습니다.
* 출력 포트에서 입력 포트로 클릭하여 끌면 연결할 수 있습니다.
* 노드를 클릭하면 오른쪽에 설정 패널이 열립니다.
* 상단 도구 모음에는 실행, 활성화/비활성화, 가져오기/내보내기 컨트롤이 있습니다.

## 노드 유형 {#node-types}

| 노드 | 설명 |
|------|-------------|
| 시작 / 종료 | 패시브, 액티브 또는 변환 워크플로 유형에 맞는 진입 및 종료 노드. |
| 조건 | 조건 분기, JS 조건 분기, HTTPQL 일치, 점검 범위 일치, 문자열 포함, 정규식 일치. |
| 인코딩 | Base64, URL, 16진수, HTML 인코딩/디코딩. |
| 서식과 해시 | JSON 압축/서식 정리, MD5, SHA-1, SHA-256. |
| 텍스트 작업 | 앞뒤 문자 제거, 결합, 분할, 찾아 바꾸기, JQ 변환, Grep 추출. |
| JavaScript | 워크플로 SDK를 사용하는 사용자 지정 로직. 트래픽 읽기, 파일 작업, 발견 사항 생성이 가능합니다. |
| 연동 | 로그, Webhook, 워크플로 호출, 요청 보내기, 찾아 바꾸기 규칙. |

실제 포트와 설정은 노드 팔레트에서 확인하세요. 그래프를 다시 연결하려고 노드를 삭제하기보다는 연결을 클릭하여 해당 링크를 조작합니다. **저장** 또는 **Ctrl+S**(macOS에서는 Command+S)로 저장합니다.

## 공유와 범위 {#sharing-and-scope}

워크플로는 기본적으로 같은 작업 공간의 프로젝트 간에 공유됩니다. 정의를 해당 프로젝트에만 유지하려면 **프로젝트별**을 켭니다. 정의를 공유한다고 각 프로젝트의 트래픽, 결과, 메모가 공유되는 것은 아닙니다. 다른 작업 공간이나 설치 환경으로 이동할 때는 워크플로 JSON을 내보내고 가져오세요.

## 실제 사용 전 테스트 {#testing-before-live-use}

패시브 및 액티브 워크플로에는 URL, 요청 원문, 응답 원문을 테스트 데이터로 입력하는 **HTTP 테스트** 섹션이 있습니다. 워크플로를 활성화하고 필드를 채운 뒤 **워크플로 테스트**를 클릭합니다. 테스트는 실행 전에 편집 내용을 저장합니다. 다른 화면으로 이동했다가 돌아와도 테스트 데이터 값은 워크플로별로 유지됩니다.

변환 워크플로에는 대신 **테스트 입력**과 출력이 있습니다. 대표적인 작은 입력부터 시작한 다음 실제 크기에 가까운 리소스로 테스트하세요. 테스트 데이터를 지정해도 임의의 JavaScript나 요청 보내기 노드가 무해해지는 것은 아닙니다. 워크플로 코드는 여전히 설정된 작업을 수행할 수 있습니다.

### JavaScript와 파일 {#javascript-and-files}

워크플로 JavaScript는 Ogma SDK와 호환되는 `fs`/`path` 가져오기를 지원합니다. 파일 작업에는 `sdk.fs.readFile`, `writeFile`, `appendFile`, `exists`, `readDir`, `mkdir`, `unlink`를 사용하고 플랫폼에 맞는 경로에는 `sdk.path`를 사용합니다. 이는 Ogma 보조 기능이며 Node.js 표준 라이브러리 전체가 아닙니다.

리소스 내보내기 도구에서는 `response.getBody().toText()`를 읽고, `sdk.path.join`으로 대상 경로를 정하고, 상위 디렉터리를 만듭니다. 기존 파일을 덮어쓰지 않으려면 `sdk.fs.exists`를 확인하세요. 실행 전에 파일시스템 경로를 검토하세요. 워크플로 파일시스템 보조 기능은 Ogma 호스트에서 실행되며, 플러그인의 전용 디렉터리를 사용하는 `sdk.fs`와 다릅니다. 그 별도 런타임은 [플러그인 SDK](../plugins/README.md#sdk-fs)를 참조하세요.

## 워크플로 가져오기 {#importing-a-workflow}

1. 워크플로 도구 모음에서 **가져오기**를 클릭합니다.
2. JSON 워크플로 파일을 선택합니다.
3. 캔버스에 워크플로가 열립니다. 활성화 전에 노드 설정을 확인하세요.
4. 워크플로를 저장합니다.

내보낸 워크플로 JSON 파일은 Ogma 설치 환경 간에 공유하거나 버전 관리에 저장할 수 있습니다.

## 캡처 기록에 워크플로 실행 {#running-a-workflow-on-captured-history}

액티브 워크플로는 이전에 캡처한 요청에 다시 실행할 수 있습니다.

1. 워크플로를 엽니다.
2. **기록에 실행**을 클릭합니다.
3. 기록 스캔 대화 상자에서 필요하면 HTTPQL 필터를 입력하여 워크플로가 처리할 요청을 제한합니다.
4. **실행**을 클릭합니다.

일치 항목 수를 검토하고 작업을 시작합니다. 진행 상황과 오류는 스캔 작업에 표시되며, 로깅이 켜져 있으면 실행 기록에도 표시됩니다. 패시브 워크플로는 과거 트래픽 처리를 위해 **기록 스캔**과 **요청에 다시 실행**을 제공합니다.

주목할 소수의 리소스에는 HTTP 기록 행을 하나 이상 선택하고 마우스 오른쪽 버튼으로 클릭한 뒤 **워크플로로 보내기**에서 활성화된 액티브 워크플로를 선택합니다. 정의를 변경하거나 전체 기록을 처리하지 않고 선택한 항목을 전달할 수 있습니다.

기록 스캔 필터 입력란 옆의 **AI** 버튼은 자연어 설명에서 HTTPQL 표현식을 생성합니다.

## 워크플로 실행과 결과 {#workflow-runs-and-results}

실행 세부 정보가 필요하면 워크플로 설정의 **로깅 활성화**를 켭니다. 찾아 바꾸기 변환을 포함하여 패시브, 액티브, 변환 워크플로에 적용됩니다. 꺼져 있어도 처리는 실행되지만 실행/단계 로그를 추가하지 않습니다. 문제를 진단하려면 다시 켜고 테스트를 반복하세요.

* 실행을 클릭하면 노드별 단계 출력을 확인할 수 있습니다.
* 오류가 발생한 노드는 강조 표시됩니다.
* 실행 중 생성된 발견 사항은 [발견 사항](./findings.md) 화면에 표시됩니다.
* 실행 중 추출된 변수는 단계 상세 패널에서 확인할 수 있습니다.

**모두 지우기**는 선택한 워크플로의 저장된 실행 기록을 삭제합니다. 디버깅 증거를 유지해야 하면 지우기 전에 로그를 다운로드하세요. 로그에는 스크립트 본문 전체 같은 큰 출력이 저장될 수 있으므로 대량 변환에서는 필요하지 않으면 꺼 두세요.

## 패시브 워크플로 활성화 {#enabling-a-passive-workflow}

1. 워크플로를 엽니다.
2. 캔버스 설정이 완전한지 확인합니다(필수 포트 중 연결되지 않은 포트가 없어야 합니다).
3. 도구 모음의 **활성화**를 켭니다.

활성화된 패시브 워크플로는 새 트래픽을 자동 처리합니다. 비활성화하면 삭제하지 않고 일시 중지할 수 있습니다.

## 관련 페이지 {#related-pages}

* [발견 사항](./findings.md)
* [환경](./environment.md)
* [HTTPQL과 StreamQL](../reference/httpql.md)
