# プールルールを管理する

プールルールは、アテンプトが作成されたときにどのプールに割り当てるかを決定します。各ルールは、優先度、1 つまたは 2 つの条件、および条件に一致したアテンプトを割り当てるプールの ID で構成されます。各エンドポイントの完全なリクエストとレスポンスのスキーマについては、 [Treasure Workflow API リファレンス](/apis/workflow/pool)を参照してください。

## 前提条件

- Treasure AI アカウント管理者の権限
- [マスター API キー](/ja/products/my-settings/getting-your-api-keys)
- [プールを管理する](/ja/products/customer-data-platform/data-workbench/workflows/pool/managing-pools)の手順で作成したカスタムプールが少なくともひとつ存在すること
- リージョンに対応した Treasure Workflow API のベース URL 。全リストについては[エンドポイント](/apis/endpoints/endpoints)を参照してください。本ページの例では US エンドポイント `https://api-workflow.treasuredata.com` を使用しています。


## ルールの評価方法

アテンプトが作成されると、 Treasure Workflow はアカウントのルールを優先度順（値の小さい順から大きい順）にひとつずつ評価します。ルールが一致したとみなされるには、そのルール内のすべての条件が一致する必要があります。最初に一致したルールが採用され、アテンプトはそのルールのプールに割り当てられます。どのルールにも一致しない場合、アテンプトはデフォルトプールに割り当てられます。

一度割り当てられたアテンプトは、後からルールを更新しても割り当て先のプールが変わることはありません。

優先度は一意
同一アカウント内の 2 つのルールが同じ優先度の値を共有することはできません。優先度は 1 から 10000 の範囲で指定する必要があります。

## 条件の種類

ルールには 1 つまたは 2 つの条件を指定できます。サポートされる条件の種類を以下に示します。

### project_name

アテンプトのプロジェクト名が、指定したオペレーターを使って指定値のいずれかと一致する場合にマッチします。


```json
{
  "type": "project_name",
  "operator": "starts_with",
  "values": ["jp_", "kr_"]
}
```

サポートされるオペレーターは `starts_with` のみです。これは、プロジェクト名が `values` のいずれかの値で始まる場合に true を返します。

### workflow_name

アテンプトのワークフロー名が、指定したオペレーターを使って指定値のいずれかと一致する場合にマッチします。


```json
{
  "type": "workflow_name",
  "operator": "starts_with",
  "values": ["behavior_", "import_"]
}
```

サポートされるオペレーターは `starts_with` のみです。これは、ワークフロー名が `values` のいずれかの値で始まる場合に true を返します。

### workflow_type

アテンプトのワークフロータイプが、指定したシステムワークフロータイプのいずれかと一致する場合にマッチします。 `workflow_type` 条件は `operator` フィールドを取りません。アテンプトのワークフロータイプが `values` のいずれかの値と一致する場合に条件が満たされます。


```json
{
  "type": "workflow_type",
  "values": ["audience", "customer_journey"]
}
```

サポートされるワークフロータイプは次のとおりです。

| 値 | 説明 |
|  --- | --- |
| `ab_test` | A/B テストワークフロー |
| `audience` | Audience ワークフロー |
| `customer_journey` | Journey ワークフロー |
| `predictive_scoring` | Predictive scoring ワークフロー |
| `realtime` | Real-time 2.0 ワークフロー |
| `segment_insight` | Segment insight ワークフロー |
| `syndication` | Activation ワークフロー |


### invocation_type

アテンプトの起動タイプが指定値のいずれかと一致する場合にマッチします。 `invocation_type` 条件は `operator` フィールドを取りません。アテンプトの起動タイプが `values` のいずれかの値と一致する場合に条件が満たされます。


```json
{
  "type": "invocation_type",
  "values": ["scheduled"]
}
```

サポートされる値は次のとおりです。

- `scheduled`: アテンプトがワークフローのスケジュールによって起動された場合。
- `on_demand`: アテンプトがスケジュール以外の方法で起動された場合（たとえば、クライアントまたは Data Workbench からの API 呼び出しや、バックフィルなど）。


起動タイプは `require>` およびワークフロートリガーを通じて継承されます。アテンプト A がスケジュールによって起動され、 A が `require>` でアテンプト B を起動し、 B がワークフロートリガーでアテンプト C を起動した場合、 A 、 B 、 C のすべての起動タイプは `scheduled` になります。

## ルールを作成する


```shell
curl -X POST \
    -H 'Authorization: TD1 <api_key>' \
    -H 'Content-Type: application/json' \
    -d '{
      "priority": 30,
      "poolId": "2",
      "conditions": [
        {"type": "project_name", "operator": "starts_with", "values": ["jp_"]}
      ]
    }' \
    https://api-workflow.treasuredata.com/api/pool_rules
```

## ルールを一覧表示する


```shell
curl -H 'Authorization: TD1 <api_key>' \
    https://api-workflow.treasuredata.com/api/pool_rules
```

## ルールを取得する


```shell
curl -H 'Authorization: TD1 <api_key>' \
    https://api-workflow.treasuredata.com/api/pool_rules/<pool_rule_id>
```

## ルールを更新する


```shell
curl -X PATCH \
    -H 'Authorization: TD1 <api_key>' \
    -H 'Content-Type: application/json' \
    -d '{
      "conditions": [
        {"type": "project_name", "operator": "starts_with", "values": ["jp_", "kr_"]}
      ]
    }' \
    https://api-workflow.treasuredata.com/api/pool_rules/<pool_rule_id>
```

## ルールを削除する


```shell
curl -X DELETE \
    -H 'Authorization: TD1 <api_key>' \
    https://api-workflow.treasuredata.com/api/pool_rules/<pool_rule_id>
```

## 実例

あるアカウントに次の 3 つのルールがあるとします。


```json
// ルール A
{
  "priority": 10,
  "poolId": "34",
  "conditions": [
    {"type": "project_name", "operator": "starts_with", "values": ["jp_", "kr_"]}
  ]
}

// ルール B
{
  "priority": 20,
  "poolId": "41",
  "conditions": [
    {"type": "project_name", "operator": "starts_with", "values": ["eu_"]},
    {"type": "workflow_name", "operator": "starts_with", "values": ["campaign_"]}
  ]
}

// ルール C
{
  "priority": 30,
  "poolId": "59",
  "conditions": [
    {"type": "project_name", "operator": "starts_with", "values": ["us_"]}
  ]
}
```

Treasure Workflow は次の順序でルールを評価します。

1. ルール A は、プロジェクト名が `jp_` または `kr_` で始まる場合にマッチします。マッチしたアテンプトは ID が 34 のプールに割り当てられます。
2. ルール B は、プロジェクト名が `eu_` で始まり**かつ**ワークフロー名が `campaign_` で始まる場合にマッチします。マッチしたアテンプトは ID が 41 のプールに割り当てられます。
3. ルール C は、プロジェクト名が `us_` で始まる場合にマッチします。マッチしたアテンプトは ID が 59 のプールに割り当てられます。
4. どのルールにもマッチしない場合、アテンプトはデフォルトプールに割り当てられます。


ルール管理の操作は Premium Audit Log のイベントとして記録されます。イベント名とそれぞれが対象とする操作については [Premium Audit Log イベント](/ja/products/control-panel/security/auditlogs/premium-audit-log-events)を参照してください。

## 次のステップ

ルールを設定したら、プールが満杯になったときの動作を理解するために[アテンプトのキューイング](/ja/products/customer-data-platform/data-workbench/workflows/pool/attempt-queueing)を確認してください。