デプロイメント環境でのフローのトリガー

logo cloud IDE Cloud IDE

logo desktop IDE Desktop IDE

これは進行中のベータリリースです。ベータ状態での Anypoint Code Builder の使用には、該当するベータサービス契約条件が適用されます。

Anypoint Code Builder IDE 内でインテグレーションまたは実装が正常に構築されたら、デスクトップ IDE またはクラウド IDE を使用しているかどうかにかかわらず、アプリケーションがローカル開発環境にデプロイされます。

通常、デプロイ済みのアプリケーションでフローの実行をトリガーするように ​HTTP 用 Anypoint Connector​ (HTTP Connector) の HTTP リスナーを設定します。フローは、Anypoint Code Builder の組み込みターミナルまたは Thunder Client などの VS Code 拡張機能からローカルにトリガーできます。

始める前に

HTTP リスナーからフローをトリガーするための URL

インテグレーションや実装を構築してデプロイメントプロセス中に IDE 内にデプロイする場合、HTTP リスナーをトリガーするために使用する URL は、リスナーが、API 仕様から生成されたスキャフォールディング済みインターフェースの設定 XML 内にあるか、スキャフォールディング済みインターフェースを実装しない設定 XML ファイル内にあるかによって異なります。

通常、HTTP リスナーを使用するアプリケーションの場合、ホストを ​0.0.0.0​ に設定し、ポートを ​8081​ に設定します。ポート ​8081​ が別のアプリケーションで使用されている場合、​8082​ などの同様のポートを使用できます。

  • スキャフォールディング済みインターフェースが​含まれない​設定 XML 内でフローをトリガーするには、IDE のターミナルで次のような URL を使用します。

    http://localhost:8081/mypath

    ポートとホストは ​<http:listener-connection/>​ 要素で定義され、エンドポイントは ​<http:listener/>​ 要素の ​path​ 属性で定義されます。

    <http:listener-config name="inbound-request"
          doc:name="Listener Config" doc:id="b5c62f">
      <http:listener-connection host="0.0.0.0" port="8081"/>
    </http:listener-config>
    <flow name="myFlow">
        <http:listener path="mypath" config-ref="inbound-request" doc:name="HTTP /flights" />
        ...
    </flow>
  • スキャフォールディング済みインターフェース内のリスナーからフローをトリガーするには、IDE のターミナルで次のような URL を使用します。

    http://localhost:8081/api/my-endpoint

    例の ​/api/my-endpoint​ に注意してください。この場合、エンドポイントはインターフェースの ​<flow/>​ 要素の ​name​ 属性内で定義され、​api​ はインターフェースの HTTP リスナーで定義されます。

    たとえば、スキャフォールディング済みインターフェースのフローでフロー (​getFlights​) を参照しているとします。

    <flow name="get:\flights:american-flights-api-config">
        <flow-ref name="getFlights"/>
        <logger level="INFO" message="get:\flights:american-flights-api-config" />
    </flow>

    また、​getFlights​ フローは実装の XML 設定ファイル内に存在するとします。

    <flow name="getFlights" >
        <set-payload value="Hello Flights!" doc:name="Set payload" doc:id="gwdsmi" />
        <logger doc:name="Logger" doc:id="dnitvb" message="#[payload]"/>
    </flow>

    このフローをトリガーする URL では、エンドポイントとして ​flights​ が使用されます。

    http://localhost:8081/api/flights

    URL の ​/flights​ エンドポイントの前に ​/api​ が追加され、インターフェースの ​<http:listener/>​ を介して要求が実行されます。一般に、リスナーは次の例のようにルーターの上に配置されます。

    <apikit:config name="american-flight-api-config"
                   api="resource::bc64acc7-41ad-43b7-9e0a-092182b03271:American-Flight-API:1.0.0:raml:zip:american-flight-api.raml"
                   outboundHeadersMapName="outboundHeaders"
                   httpStatusVarName="httpStatus" />
    <flow name="american-flight-api-main">
        <http:listener config-ref="inbound-request" path="/api/*"> (1)
            <http:response statusCode="#[vars.httpStatus default 200]">
                <http:headers>#[vars.outboundHeaders default {}]</http:headers>
            </http:response>
            <http:error-response statusCode="#[vars.httpStatus default 500]">
                <http:body>#[payload]</http:body>
                <http:headers>#[vars.outboundHeaders default {}]</http:headers>
            </http:error-response>
        </http:listener>
        <apikit:router config-ref="american-flight-api-config" /> (2)
        ...
    </flow>
    1 リスナー (​<http:listener/>​) 内で属性 ​path="/api/*"​ はスキャフォールディングプロセス中に自動的に設定されます。
    2 ルーター (​<apikit:router/>​) は設定 XML 内のスキャフォールディング済みインターフェースのリスナーの下に配置されます。

フローをトリガーする

Anypoint Code Builder のターミナルを使用して、IDE 内でローカルにデプロイされたインテグレーションまたは実装プロジェクトの HTTP リスナーを介してフローをトリガーします。この手順は、デスクトップ IDE またはクラウド IDE 内の Mule アプリケーションを対象とします。

この手順の例は、IDE のターミナルから ​curl​ コマンドを使用してフローをトリガーする方法を示しています。また、VS Code のサードパーティ拡張機能である Thunder Client を使用して、同じ URL でフローをトリガーすることもできます。セキュリティ上の理由で、Advanced REST クライアントや Postman などの外部 REST クライアントでは、クラウド IDE にデプロイされたプロジェクトに要求を送信することはできません。

フローのトリガーを試行する前に​HTTP リスナーからフローをトリガーするための URL​を確認し、​始める前に​の前提条件を満たしていることを確認します。

  1. Mule アプリケーションを起動する前に、リスナーへの接続が成功していることを確認します。

    設定 XML で、HTTP リスナー設定 (​<http:listener-config/>​) の上にある ​[Test Connection (接続をテスト)]​ をクリックします。

    • テストが成功すると、​「Connection is valid (接続は有効です)」​というメッセージが表示されます。

    • 接続に失敗した場合は、接続が失敗したことを示すエラーメッセージが表示されます。​[Test Connection (接続をテスト)]​ をクリックしたときにアプリケーションが実行中の場合、エラーメッセージ​「Invalid Connection Got status code: 500 when trying to resolve a Mule Runtime operation. Reason: 'Internal Server Error.​ (Mule Runtime 操作を解決しようとしたときに、無効な接続で状況コード 500 を取得しました。理由: 内部サーバーエラー。)」が表示されます。

  2. [Run and Debug (実行とデバッグ)] パネルを開きます。

    手順を表示
    • アクティビティバーの ​​ (​Run and Debug (実行とデバッグ)​) アイコンをクリックする。

    • キーボードショートカットを使用する。

      • Mac: Cmd+Shift+d

      • Windows: Ctrl+Shift+d

    • デスクトップ IDE で、​[View (表示)]​ > ​[Run (実行)]​ を選択する。

    • クラウド IDE で、​​ (メニュー) アイコンをクリックし、​[View (表示)]​ > ​[Run (実行)]​ を選択する。

  3. [Debug Mule Application (Mule アプリケーションをデバッグ)]​ の ​​ (​Start Debugging (F5) (デバッグを開始 (F5))​) アイコンをクリックします。

    または、​[Start Debugging (F5) (デバッグを開始 (F5))]​ アイコンが存在しない場合は、次の手順を実行します。

    1. [Run and Debug (実行とデバッグ)]​ をクリックします。

    2. [Select debugger (デバッガーを選択)]​ ドロップダウンメニューが表示された場合は、​[Mule XML Debugger (Mule XML デバッガー)]​ を選択してデバッグセッションを開始します。

      [Run and Debug (実行とデバッグ)] ボタンと [Mule Xml Debugger (Mule XML デバッガー)] メニュー項目

      アプリケーションが正常にデプロイされると、出力パネルに ​DEPLOYED​ ログメッセージが表示されます。

      **********************************************************************
      *              - - + DOMAIN + - -               * - - + STATUS + - - *
      **********************************************************************
      * default                                       * DEPLOYED           *
      **********************************************************************
  4. IDE から、コンソールのターミナルウィンドウを開きます。

    • デスクトップ IDE で、​[View (表示)]​ > ​[Terminal (ターミナル)]​ を選択する。

    • クラウド IDE で、​​ (メニュー) アイコンをクリックし、​[Terminal (ターミナル)]​ > ​[New Terminal (新規ターミナル)]​ を選択する。

    • いずれかの IDE で、Ctrl キーを押してからバッククォートキー (`) を押す。

  5. IDE のターミナルで、使用するシェルの名前 (PowerShell (Windows 用)、Bash (​bash​)、Z shell (Mac 用の ​zsh​) など) をクリックします。

    または、ターミナルで ​[+]​ アイコンをクリックして新しいコマンドプロンプトを開きます。

  6. コマンドプロンプトで ​curl​ コマンドを入力してフローをトリガーします。

    • インターフェース内に存在しない HTTP リスナーからフローをトリガーするには、次のような URL で ​curl​ を使用します。

      $ curl localhost:8081/mypath

      0.0.0.0​ の代わりに ​localhost​ を使用します。エンドポイントのトリガーについての​詳細​を参照してください。

      成功したら、コマンドによって応答が返されます。

    • スキャフォールディング済みインターフェースに存在する HTTP リスナーからフローをトリガーするには、次のような URL で ​curl​ を使用します。

      $ curl http://localhost:8081/api/mypath2

      0.0.0.0​ の代わりに ​localhost​ を使用して、ルーターの前のリスナー​パス​ (ほとんどのスキャフォールディング済みインターフェースで ​api​) とエンドポイント (​mypath2​ など) を URL に追加します。エンドポイントのトリガーについての​詳細​を参照してください。