Anypoint Code Builder を使用した Java Module の設定

Anypoint Code Builder プロジェクトで使用する Java Module を使用してカスタム Java コードを定義します。Anypoint Code Builder を使用して Java Module を設定するには、Anypoint Code Builder で基本インテグレーションプロジェクトを作成し、ビジネスロジックを処理する Mule アプリケーションにコネクタと他のコンポーネントを追加してから、Java Module の属性を設定します。

始める前に

Anypoint Code Builder インテグレーションを作成する前に、次の作業を行う必要があります。

新しいインテグレーションプロジェクトの作成

新しいインテグレーションプロジェクトを作成する手順は、次のとおりです。

  1. IDE のアクティビティバーで、​​ (​Anypoint Code Builder​) アイコンをクリックします。

  2. [Quick Actions (クイックアクション)]​ から ​[Develop an Integration (インテグレーションを開発)]​ をクリックします。

    "[Getting started (使用開始) セクション内で強調表示されている [Develop an Integration (インテグレーションを開発)]リンク"]

  3. [Develop an Integration (インテグレーションを開発)]​ フォームに以下を入力します。

    属性

    Project Name (プロジェクト名)

    プロジェクトの一意の名前。

    この名前はタイトルおよびインテグレーションプロジェクトファイルの名前として使用されます。 たとえば、プロジェクト名が「Salesforce Integration」 (Salesforce インテグレーション) の場合、プロジェクトファイル名は ​salesforce-integration​ になります。

    Project Location (プロジェクトの場所)

    ホームディレクトリまたは作成する別のディレクトリ。インテグレーションプロジェクト用の別のディレクトリを選択するには、​[Browse (参照)]​ をクリックします。

    別のプロジェクトディレクトリ内にプロジェクトを作成しないでください。

  4. [Empty Project (空のプロジェクト)]​ または ​[Template or Example (テンプレートまたはサンプル)]​ カードを選択して、作成するプロジェクトの種別を選択します。

  5. アプリケーションの ​Mule Runtime​ および ​Java バージョン​を選択します。

  6. [Create Project (プロジェクトを作成)]​ をクリックします。

    「Develop an Integration (インテグレーションを開発)」 フローウィンドウ

新しいインテグレーションプロジェクトを作成すると、Anypoint Code Builder によりプロジェクトに ​src/main/java​ および ​/src/test/java​ フォルダーが作成されます。既存のプロジェクトの場合、これらのフォルダーを手動で作成できます。

プロジェクトへのコンポーネントの追加

コンポーネントをインテグレーションプロジェクトに追加してフローをビルドします。

  1. [Explorer]​ ビューで、目的のプロジェクトの XML ファイル (​my-project-name.xml​ など) を開きます。

  2. 開始カードで ​[Build a Flow (フローをビルド)]​ を選択して、空のフローを作成します。

    "[start from scratch (最初から開始)、[build a flow (フローをビルド)]、[build a subflow (サブフローをビルド)] オプションが表示されている開始カードが含まれるキャンバス UI"]

  3. フローの名前を変更します。

    1. [Flow (フロー)]​ をクリックします。

    2. 編集アイコンをクリックします。

      フロー名を編集する鉛筆アイコンを指し示している矢印

    3. フロー名を入力し、チェックマークをクリックします。

    4. キャンバス UI で ​​ (​[Add component (コンポーネントを追加)]​) アイコンをクリックします。

    5. [Add Component (コンポーネントを追加)]​ パネルで、検索結果からコンポーネントを検索して選択します。次の例は、​「HTTP」​の検索結果の ​Listener​ コンポーネントを示しています。

      "[Add Component (コンポーネントを追加) セクション内で強調表示されている Listener コンポーネント"]

      設定 XML ファイルで、HTTP リスナーの XML が ​<flow/>​ 要素に含まれるようになりました。次に例を示します。

      <flow name="getFlights" >
        <http:listener path="" config-ref="" doc:name="Listener" doc:id="ojzfry" />
      </flow>

コンポーネント属性の設定

コンポーネントをインテグレーションプロジェクトに追加したら、コンポーネント UI で属性を設定するか、XML コードエディターで直接属性を設定します。

コネクタ XML タグは、名前空間で始まり操作が続く、構文 ​namespace:operation​ に従います。たとえば、データベース用 Anypoint Connector (Database Connector) の ​Select​ 操作の場合、​<db:select/>​ となります。

コンポーネントの式 (​fx​) 項目のオートコンプリートを使用して、Core モジュールの DataWeave 関数やこの項目で使用できる他の値を選択できます。

フローのトリガーを設定する

トリガー (ソース) は、指定された条件が満たされたときにフローを開始します。コネクタに独自のソースが関連付けられている場合、コネクタ固有のトリガーを使用してフローを開始できます。各コネクタトリガーには、固有の設定があります。

このコネクタの以下のソースを設定できます。

  • [HTTP] > [Listener]

    設定されたホストとポートで要求を受信するたびにフローを開始する

  • Scheduler

    === 新しい操作の設定

Java Module の ​New​ 操作を使用して新しいクラスインスタンスを作成します。コンストラクターの識別子にクラス名とコンストラクター名が含まれます。コンストラクターは、各パラメーターの型を含む署名の詳しい説明です。

たとえば、​org.bar.Me​ クラスに属する ​Me(String name, int age)​ というコンストラクターを呼び出す場合、このメソッドの識別子は ​Me(String,int)​ になります。

Anypoint Code Builder UI で ​New​ の属性を設定する手順は、次のとおりです。

  1. キャンバスで ​[New]​ コンポーネントをクリックします。

  2. [General (一般)]​ タブで次の手順を実行します。

    1. [Class (クラス)]​ で、使用するメソッドが含まれる Java クラスを選択します。

      プロジェクトで使用可能なすべての Java クラス (作成したクラスやネイティブ Java クラスなど) を検索できます。

    2. [Constructor (コンストラクター)]​ で、使用するコンストラクターを検索して選択します。

      この項目が空白の場合、更新アイコンをクリックして入力してください。
  3. [Advanced (詳細)]​ タブを選択して、次の属性を設定します。

    UI 項目 説明 必須

    Target variable (対象変数)

    クラスインスタンスを割り当てる変数の名前。

    いいえ

    Target value (対象値)

    操作の出力を評価する式。式の結果は対象変数に保存されます。

    いいえ

    エラーのマッピング

    Mule エラー種別をマップするカスタムエラー種別。マッピングは、アプリケーションのエラーをさらに識別してグループ化するのに役立つ場合があります。この属性は、XML エディターで設定します。Mule Errorsを参照してください。

    いいえ

  4. [Input/Output (入力/出力)]​ タブを選択して、DataWeave に保存される入力変数と出力変数を絞り込んで表示します。

クラスインスタンスを追加したら、​Invoke​ 操作を設定します​。

Invoke 操作の設定

指定したクラスインスタンスを使用して引数を指定したメソッドを呼び出します。呼び出すメソッドの識別子にはクラス名とメソッド名が含まれます。

Anypoint Code Builder UI で ​Invoke​ の属性を設定する手順は、次のとおりです。

  1. キャンバスで ​[Invoke]​ コンポーネントをクリックします。

  2. [General (一般)]​ タブで次の手順を実行します。

    1. メソッドを呼び出すためのクラス​インスタンス​を選択します。

      この値は ​New​ 操作に割り当てられる対象変数です。

    2. [Class (クラス)]​ で、使用するメソッドが含まれる Java クラスを選択します。

      プロジェクトで使用可能なすべての Java クラス (作成したクラスやネイティブ Java クラスなど) を検索できます。

    3. [Method (メソッド)]​ で、使用するメソッドを検索して選択します。

      クラスの静的メソッドのみが表示されます。

      この項目が空白の場合、更新アイコンをクリックして入力してください。
  3. [Advanced (詳細)]​ タブを選択して、次の属性を設定します。

    UI 項目 説明 必須

    Output MIME type (出力 MIME タイプ)

    このコンポーネントで出力されるペイロードの MIME タイプ。

    いいえ

    パラメーター

    リーダープロパティのキー-値ペアとして ​[Output MIME type (出力 MIME タイプ)]​ 属性の値に追加されるパラメーター。複数のキーと値のペアが許可されます。

    いいえ

    Output encoding (出力エンコード)

    このコンポーネントで出力されるペイロードのエンコード。

    いいえ

    Target variable (対象変数)

    操作の出力を保存する変数の名前。

    いいえ

    Target value (対象値)

    操作の出力を評価する式。式の結果は対象変数に保存されます。

    いいえ

    エラーのマッピング

    Mule エラー種別をマップするカスタムエラー種別。マッピングは、アプリケーションのエラーをさらに識別してグループ化するのに役立つ場合があります。この属性は、XML エディターで設定します。Mule Errorsを参照してください。

    いいえ

  4. [Input/Output (入力/出力)]​ タブを選択して、DataWeave に保存される入力変数と出力変数を絞り込んで表示します。

Invoke Static 操作の設定

指定した引数で静的メソッドを呼び出します。

Anypoint Code Builder UI で ​Invoke Static​ の属性を設定する手順は、次のとおりです。

  1. キャンバスで ​[Invoke Static]​ コンポーネントをクリックします。

  2. [General (一般)]​ タブで次の手順を実行します。

    1. [Class (クラス)]​ で、使用するメソッドが含まれる Java クラスを選択します。

      プロジェクトで使用可能なすべての Java クラス (作成したクラスやネイティブ Java クラスなど) を検索できます。

    2. [Method (メソッド)]​ で、使用するメソッドを検索して選択します。

      クラスの静的メソッドのみが表示されます。

      この項目が空白の場合、更新アイコンをクリックして入力してください。
  3. [Advanced (詳細)]​ タブを選択して、次の属性を設定します。

    UI 項目 説明 必須

    Output MIME type (出力 MIME タイプ)

    このコンポーネントで出力されるペイロードの MIME タイプ。

    いいえ

    パラメーター

    リーダープロパティのキー-値ペアとして ​[Output MIME type (出力 MIME タイプ)]​ 属性の値に追加されるパラメーター。複数のキーと値のペアが許可されます。

    いいえ

    Output encoding (出力エンコード)

    このコンポーネントで出力されるペイロードのエンコード。

    いいえ

    Target variable (対象変数)

    操作の出力を保存する変数の名前。

    いいえ

    Target value (対象値)

    操作の出力を評価する式。式の結果は対象変数に保存されます。

    いいえ

    エラーのマッピング

    Mule エラー種別をマップするカスタムエラー種別。マッピングは、アプリケーションのエラーをさらに識別してグループ化するのに役立つ場合があります。この属性は、XML エディターで設定します。Mule Errorsを参照してください。

    いいえ

  4. [Input/Output (入力/出力)]​ タブを選択して、DataWeave に保存される入力変数と出力変数を絞り込んで表示します。

Validate Type 操作の設定

クラスインスタンスが、​Validate Type​ 操作を使用する想定されるクラス (​instanceof​) のインスタンスであることを確認します。

Anypoint Code Builder UI で ​Validate Type​ の属性を設定する手順は、次のとおりです。

  1. キャンバスで ​[Validate type]​ コンポーネントをクリックします。

  2. [General (一般)]​ タブで次の手順を実行します。

    1. インスタンスが所属する ​[Class (クラス)]​ を選択します。

    2. 検証するクラス​インスタンス​の名前を入力します。

    3. [Accept subtypes (サブタイプの受け入れ)]​ を選択して、クラスのサブタイプを受け入れます。

      クラスインスタンスのクラスが同じである必要がある場合は、このオプションをオフにします。

Java クラスの作成

アプリケーションフローで使用するメソッドが含まれる Java クラスを作成します。プロジェクトに作成するクラスは、Anypoint Code Builder ワークスペースの他のプロジェクトでは使用できません。

  1. Anypoint Code Builder プロジェクトの ​src/main/java​ の下に ​com.me​ という新しい Java パッケージを作成します。

  2. TaxCalculator.java​ という新しい Java クラスを作成し、実装を追加します。次に例を示します。

    package com.me;
    
    public class TaxCalculator {
    
        private Double percentBaseTax = 7.0;
    
        public Double calculateTax(Double price, Integer percentAdditionalTax) {
            return price * (this.percentBaseTax + percentAdditionalTax) / 100;
        }
    
        public Boolean isTaxFree(Double price) {
            if (price < 10) {
                return true;
            }
            return false;
        }
    }

このコードの例には 2 つのメソッドがあります。

  • calculateTax​。​price​ および ​percentAdditionalTax​ パラメーターを受け取ります。

  • isTaxFree​。​price​ パラメーターを受け取ります。

HTTP トリガーを設定する

  1. キャンバス UI で ​[Listener]​ コンポーネントをクリックします。

  2. 必要に応じて、編集アイコンをクリックして ​Listener​ コンポーネントの名前を変更します。

  3. コネクタの設定ファイルを選択するか、フローの外部の XML に HTTP 設定を追加します。次に例を示します。

    <mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns:http="http://www.mulesoft.org/schema/mule/http"
    	xmlns:java="http://www.mulesoft.org/schema/mule/java" 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/java http://www.mulesoft.org/schema/mule/java/current/mule-java.xsd">
      <http:listener-config name="HTTP_listener_config">
        <http:listener-connection host="0.0.0.0" port="8081" />
      </http:listener-config>
      <flow name="name1">
        <http:listener path="/calculatePath" config-ref="HTTP_listener_config" doc:name="Listener" doc:id="511e4743-a5ed-4e74-8174-ead32ff575ea" allowedMethods="POST" />
      </flow>
    </mule>
  4. [General (一般)]​ タブの ​[Path (パス)]​ 項目に​「/calculateTax」​と入力します。

  5. [Advanced (詳細)]​ タブで ​[Allowed methods (許可されるメソッド)]​ を ​POST​ に設定します。

新しいクラスインスタンスを作成する

この例で使用するメソッドは非静的のため、新しいクラスインスタンスを作成する必要があります。

  1. キャンバスで ​[New]​ コンポーネントをクリックします。

  2. [General (一般)]​ タブで次の手順を実行します。

    1. 使用するメソッドが含まれる ​[Class (クラス)]​ を選択します。この場合は ​com.me.TaxCalculator​ です。

    2. 使用する ​[Method (メソッド)]​ を選択します。この場合は ​TaxCalculator()​ です。

      この項目が空白の場合、更新アイコンをクリックして入力してください。
  3. [Advanced (詳細)]​ タブで、新しいクラスインスタンスを ​taxCalculator​ という対象変数に割り当てます。

    コードは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:java="http://www.mulesoft.org/schema/mule/java" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" 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/java http://www.mulesoft.org/schema/mule/java/current/mule-java.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/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">

  <http:listener-config name="HTTP_Listener_config">
    <http:listener-connection host="0.0.0.0" port="8081" />
  </http:listener-config>

  <flow name="java1">
    <http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/calculateTax" allowedMethods="POST"/>
    <java:new class="com.me.TaxCalculator" constructor="TaxCalculator()" target="taxCalculator" />
  </flow>
</mule>

Invoke 操作を追加する

メソッドを呼び出すには、​Invoke​ 操作を追加します。

  1. キャンバスで ​[Invoke]​ コンポーネントをクリックします。

  2. [General (一般)]​ タブで次の手順を実行します。

    1. メソッドを呼び出すためのクラス​インスタンス​として​「#[vars.taxCalculator]」​と入力します。

    2. 使用するメソッドが含まれる ​[Class (クラス)]​ を選択します。この場合は ​com.me.TaxCalculator​ です。

    3. 使用する ​[Method (メソッド)]​ を選択します。この場合は ​calculateTax(java.lang.Double,java.lang.Integer)​ です。

      表示されているメソッドは標準の非静的 Java メソッドと、作成したメソッドです。

  3. [Advanced (詳細)]​ タブで、Invoke 操作を ​taxResult​ という対象変数に割り当てます。

  4. XML エディターで Java 引数を DataWeave 式として追加します。

    <java:args>#[{
            arg0: payload:price,
            arg1: payload:percentAdditionalTax
          }]</java:args>

XML コードは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:java="http://www.mulesoft.org/schema/mule/java" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" 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/java http://www.mulesoft.org/schema/mule/java/current/mule-java.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/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">

  <http:listener-config name="HTTP_Listener_config">
    <http:listener-connection host="0.0.0.0" port="8081" />
  </http:listener-config>

  <flow name="java1">
    <http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/calculateTax" allowedMethods="POST"/>
    <java:new class="com.me.TaxCalculator" constructor="TaxCalculator()" target="taxCalculator" />

    <java:invoke instance="#[vars.taxCalculator]" class="com.me.TaxCalculator" method="calculateTax(Double, Integer)" target="taxResult">
      <java:args>#[{
        arg0: payload.price,
        arg1: payload.percentAdditionalTax
      }]</java:args>
    </java:invoke>
  </flow>
</mule>

Set Payload トランスフォーマーを追加する

メッセージのペイロードを更新するには、Set Payload (​set-payload​) コンポーネントを使用します。ペイロードは、文字列リテラルまたは DataWeave 式です。

  1. キャンバス UI で ​​ (​[Add component (コンポーネントを追加)]​) アイコンをクリックします。

  2. [Add Component (コンポーネントを追加)]​ パネルで、「​Set Payload​」を検索して選択します。

  3. [Set Payload]​ コンポーネントをクリックします。

  4. [General (一般)]​ タブで、​[Value (値)]​ に「​#[vars.taxResult as String]​」と入力します。

  5. [Encoding (エンコード)]​ で ​[ISO 10646/Unicode(UTF8)]​ を選択します。

  6. [Mime type (MIME タイプ)]​ で ​[text/plain (テキスト/プレーン)]​ を選択します。

XML コードは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:java="http://www.mulesoft.org/schema/mule/java" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" 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/java http://www.mulesoft.org/schema/mule/java/current/mule-java.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/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">

  <http:listener-config name="HTTP_Listener_config">
    <http:listener-connection host="0.0.0.0" port="8081" />
  </http:listener-config>

  <flow name="java1">
    <http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/calculateTax" allowedMethods="POST"/>
    <java:new class="com.me.TaxCalculator" constructor="TaxCalculator()" target="taxCalculator" />

    <java:invoke instance="#[vars.taxCalculator]" class="com.me.TaxCalculator" method="calculateTax(Double, Integer)" target="taxResult">
      <java:args>#[{
        arg0: payload.price,
        arg1: payload.percentAdditionalTax
      }]</java:args>
    </java:invoke>

    <set-payload value="#[vars.taxResult as String]" doc:name="Set payload" doc:id="kyujdh" mimeType="text/plain" encoding="UTF-8"/>
  </flow>
</mule>

デバッグモードでアプリケーションを実行する

デバッグ条件を設定したら、デバッグセッションを実行し、各ブレークポイントで Mule アプリケーションを評価します。

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

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

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

      • Mac: Cmd+Shift+d

      • Windows: Ctrl+Shift+d

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

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

  2. [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           *
      **********************************************************************
[Run (実行)]​ > ​[Start without Debugging (デバッグなしで実行)]​ を選択すると、エラーが発生します。

Anypoint Code Builder でアプリケーションがパッケージ化され、埋め込み Mule Runtime Engine にデプロイされます。 ターミナルが開き、状況を参照できます。

ターミナルウィンドウでのデバッグの状況

ターミナルにメッセージが表示されます。ステータスバーが赤に変わり、アプリケーションが実行中であることが示されます。

デバッグツールバーのボタンを使用して、Mule アプリケーションのデバッグを制御します。