Mule 4 カスタムポリシーワークフロー

カスタムポリシーは、既存の機能を拡張または新機能を定義するために誰もが開発して API に適用できるポリシーです。

Anypoint Platform で適用できる Mule 4 の作業ポリシーを取得する現在のワークフローの構成は次のとおりです。

  1. ポリシーを開発する。

  2. ポリシーをパッケージ化する。

  3. 結果のポリシーアセットを Exchange にアップロードする。

  4. API Manager を介して任意の API にポリシーを適用する。

アーキタイプを使用したプロジェクトのセットアップ

カスタムポリシーを開発する最初のステップは、必要なファイルを使用してプロジェクトをセットアップすることです。
必要なすべてのファイルを収集する最も簡単な方法は、Maven アーキタイプを使用することです。アーキタイプにより、必要なすべてのファイルが作成されます。 次に、Maven を使用してカスタムポリシーをデプロイ可能な JAR にパッケージ化します。

現在、Maven アーキタイプは Maven 中央リポジトリで使用できないため、Maven 設定を定義して、MuleSoft のいずれかのリポジトリでアーキタイプを検索する必要があります。

この作業を行う方法の 1 つは、次のセクションを使用して Maven の ​settings.xml​ を設定することです。

 <profiles>
   <profile>
     <id>archetype-repository</id>
     <repositories>
       <repository>
         <id>archetype</id>
         <name>Mule Repository</name>
         <url>https://repository.mulesoft.org/nexus/content/repositories/public</url>
         <releases>
           <enabled>true</enabled>
           <checksumPolicy>fail</checksumPolicy>
         </releases>
         <snapshots>
           <enabled>true</enabled>
           <checksumPolicy>warn</checksumPolicy>
         </snapshots>
       </repository>
     </repositories>
   </profile>
 </profiles>

Maven が設定されたら、次の手順を実行します。

  1. カスタムポリシープロジェクトを格納する新しいディレクトリを作成します。

  2. コマンドラインでそのディレクトリに移動します。

  3. 次のコマンドを実行します。

    mvn -Parchetype-repository archetype:generate \
    -DarchetypeGroupId=org.mule.tools \
    -DarchetypeArtifactId=api-gateway-custom-policy-archetype \
    -DarchetypeVersion=1.2.0 \
    -DgroupId=${orgId} \
    -DartifactId=${policyName} \
    -Dversion=1.0.0 \
    -Dpackage=mule-policy

    置き換え:

    • ${orgId}​ を、ポリシーがアップロードされる Anypoint Platform 組織 ID に置き換えます。

      • [Access Management (アクセス管理)] > [Organization (組織)]​ から組織 ID を取得します。

        • 組織の名前をクリックします。

        • ブラウザーアドレスから UUID をコピーします。たとえば、URL から ​2a4b93c3-7899-4ea7-9374-f787744d8784​ をコピーします。

    • ${policyName}​ を、カスタムポリシーの目的の名前に置き換えます。

  4. 完了する前に、Maven から以下をセットアップするように求められます。

    • policyDescription​: ポリシーの簡単な説明。

    • policyName​: ポリシーの識別子名。

      -DencryptionSupported=true​ プロパティを渡して、暗号化をサポートするポリシーを作成できます。
      詳細は、​「カスタムポリシーの暗号化」​を参照してください。

コマンドを実行すると、プロジェクトのディレクトリは次のような構造になります。

my-custom-policy/
├── my-custom-policy.yaml
├── mule-artifact.json
├── pom.xml
└── src
   └── main
       └── mule
           └── template.xml

これらの 4 つのファイルは、作業ポリシーを設定するために必要な基本的なファイルです。

  • pom.xml

    • groupId​: アーキタイプで使用される組織 ID として定義されます。この値は、そのままにしておく必要があります。

    • mule-policy​ パッケージ化: これにより、パッケージャープラグインは正常に JAR を構築できます。

    • distributionManagement​ セクション: ユーザーの Exchange を参照するように定義されます。

    • mule-maven-plugin​: ポリシーをデプロイ可能な jar にパッケージ化します。

    • maven-deploy-plugin​: ポリシーを Exchange にアップロードするときに結果の jar と YAML の両方をデプロイするように設定されます。

  • mule-artifact.json​: mule-maven-plugin のために存在します。これは、Mule アプリケーションで必要なファイルと同じです。

  • my-custom-policy.yaml​: ポリシー設定 UI を表示します。このファイルが提供されないと、API プラットフォームの UI でポリシーを適用できません。

  • template.xml​: ポリシーの実際のロジックとポリシーの動作を定義する Mule 設定。

デフォルトでは、アーキタイプにより、返される HTTP 応答ペイロードを「Hello World!」メッセージに設定する基本的なポリシーが生成されます。それは、次の設定で実装されます。

XML 要素
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:http="http://www.mulesoft.org/schema/mule/http"
     xmlns:http-policy="http://www.mulesoft.org/schema/mule/http-policy"
     xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
              http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
              http://www.mulesoft.org/schema/mule/http-policy http://www.mulesoft.org/schema/mule/http-policy/current/mule-http-policy.xsd">

   <http-policy:proxy name="{{{policyId}}}-custom-policy"> (1)
       <http-policy:source> (2)
           <http-policy:execute-next/> (3)
           <set-payload value="Hello World!" />
       </http-policy:source>
   </http-policy:proxy>
</mule>
1 ポリシーを定義するための基本構造。 {{{policyId}}}​ は、HandleBars 変数を参照します。HandleBars は、ユーザーがより複雑なポリシーを作成できるようにするテンプレートフレームワークです。
2 インバウンド HTTP 要求を参照するソース。その他のオプションは、アウトバウンド HTTP 要求のロジックを定義するためのものです。
3 次のポリシーまたはフローを実行する必要があることを示す明示的な要素。この前に配置された要素は次のポリシーまたはフローに移動する前に実行され、この後に配置された要素は次のポリシーまたはフローから戻った後に実行されます。

これでプロジェクトが設定されたので、要件に応じてロジックを更新できます。
ポリシーエンジンは強力で、HTTP 要求や応答の変更、ログ記録、キャッシュ、調整、および Mule Runtime Engine で実行できるその他のほぼすべてのインテグレーションなどを実行できます。