American Flights アプリケーションのデバッグ

進行中のベータリリース​: クラウド IDE は進行中のベータリリースです。ベータ状態での Anypoint Code Builder の使用には、IDE で入手できる、該当するベータサービス契約条件が適用されます。

American Flights のインターフェースと実装をデバッグします。

コンポーネントを追加する

デバッグを容易にするには、Set Variable コンポーネントと Logger コンポーネントを American Flights 実装に追加します。

  1. 実装ファイル (​implementation.xml​) を開きます。

  2. [Query Flights (フライトを照会)]​ という名前の Database Select 操作 (​<db:select/>​) の後に Set Variable コンポーネントを追加します。

  3. 設定 XML で次の ​<set-variable/>​ 設定を指定します。

    <set-variable value="#[payload]"
         doc:name="Set variable Payload"
         variableName="databasePayload" />
  4. Set Variable コンポーネントの後に、次の設定を含む Logger コンポーネントを追加します。

    <logger doc:name="Log Payload" message="#[
        %dw 2.0
        output application/json
        ---
        payload]" />
    完全な実装 XML 例を表示するには、クリックしてください。
    <flow name="getFlights">
        <logger doc:name="Logger" doc:id="ahcnzm" />
        <db:select doc:name="Query Flights" doc:id="pvuqsc" config-ref="Database_Config" >
            <db:sql>
                <![CDATA[Select * FROM american]]>
            </db:sql>
        </db:select>
    
        <set-variable value="#[payload]" doc:name="Set variable Payload"
             variableName="databasePayload" doc:id="vtptsr" />  (1)
    
        <ee:transform doc:name="Transform Message" doc:id="uniqueId" >
            <ee:message >
                <ee:set-payload >
                    <![CDATA[
                    %dw 2.0
                    output application/json
                    ---
                    payload map ( payload01 , indexOfPayload01 ) -> {
                      ID: payload01.ID,
                      code: (payload01.code1 default "") ++ (payload01.code2 default ""),
                      price: payload01.price default 0,
                      departureDate: payload01.takeOffDate as String default "",
                      origin: payload01.fromAirport default "",
                      destination: payload01.toAirport default "",
                      emptySeats: payload01.seatsAvailable default 0,
                      plane: {
                        "type": payload01.planeType default "",
                        totalSeats: payload01.totalSeats default 0
                      }
                    }
                    ]]>
                </ee:set-payload>
            </ee:message>
        </ee:transform>
    
    <logger doc:name="Log Payload" message="#[
        %dw 2.0
        output application/json
        ---
        payload]" /> (1)
    
    </flow>
    1 Set Variable コンポーネント
    2 Logger コンポーネント
  5. ブレークポイントを追加する​に進みます。

    アプリケーションの実行を一時停止するブレークポイントのセットアップ方法を確認します。

ブレークポイントを追加する

American Flights プロジェクトにブレークポイントを追加する手順は、次のとおりです。

  1. American Flights プロジェクトの​インターフェース​ (​interface.xml​) を開きます。

  2. アクティビティバーで ​[Run and Debug (実行およびデバッグ)]​ アイコンを選択します。

    run and debug
  3. 実装 (​interface.xml​) で、​<flow-ref/>​ コンポーネントが含まれる行にブレークポイントを追加します。

    add breakpoint

    または、F9 を使用して行にブレークポイントを追加します。

  4. American Flights プロジェクトの実装ファイル (​implementation.xml​) を開き、ブレークポイントを ​<db:select/>​ および ​<set-variable/>​ コンポーネントに追加します。

  5. すべてのブレークポイントが ​[Breakpoints (ブレークポイント)]​ パネルにリストされるようになりました。

    breakpoints panel
  6. デバッグセッションを開始する​に進みます。

    デバッグセッションを実行し、アプリケーションの実行中にさまざまなポイントでメッセージと変数を調べます。

デバッグセッションを開始する

  1. [Run and Debug (実行およびデバッグ)]​ メニューから、​[Debug Mule Application (Mule アプリケーションをデバッグ)]​ をクリックします。

    start debugging

    IDE でアプリケーションがパッケージ化され、新しいターミナルが開きます。このターミナルでアプリケーションを埋め込み Mule Runtime Engine にデプロイします。

    packaged and running terminals
  2. American Flights アプリケーションをテストする​に進みます。

American Flights アプリケーションをテストする

デバッグセッションが開始されたら、次の手順を実行します。

  1. IDE から、コンソールのターミナルウィンドウを開きます。

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

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

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

  2. ターミナルで ​curl​ コマンドを使用して、実装ではなく​インターフェース​ (​interface.xml​) のリスナーに対して GET 要求を実行します。

    > curl http://localhost:8081/api/flights

    インターフェースのリスナーの URI にある ​/api/flight​ に注意してください。この手順の詳細は、​「フローをトリガーする」​を参照してください。

  3. American Flights プロジェクトの最初のブレークポイントでアプリケーションの実行が停止することを確認します。

    ブレークポイントでのフローの停止

    ブレークポイントはインターフェースファイル (​interface.xml​) に配置されています。

  4. デバッグツールバーで ​[Step Over (ステップオーバー)]​ ボタンをクリックして、​implementation.xml​ の ​<db:select/>​ 要素にある次のブレークポイントまで実行を継続します。

  5. [Run and Debug (実行およびデバッグ)]​ サイドバーの ​[Variables (変数)]​ パネルにブレークポイントでの Mule イベントに関する情報が提供されていることを確認します。

    実行が停止する設定 XML ファイルのブレークポイント
  6. デバッグツールバーで ​[Step Over (ステップオーバー)]​ ボタンをクリックして、​<set-variable/>​ 要素にある次のブレークポイントまで実行を継続します。

  7. [Variables (変数)]​ パネルで ​[Mule Message (Mule メッセージ)]​ > ​[Payload (ペイロード)]​ に移動して、データベース応答がフライトデータの配列になっていることを確認します。

    ペイロードのフライトデータの配列
  8. 監視式を追加する​に進みます。

監視式を追加する

  1. [Run and Debug (実行およびデバッグ)]​ サイドバーから ​[Watch (監視)]​ パネルを開きます。

  2. パネルの ​[+]​ アイコンをクリックし、式 ​payload.^mediaType​ を追加します。

    debug add expression
  3. 実行が Transform Message コンポーネント (​<ee:transform/>​) に移動するまで ​[Step Over (ステップオーバー)]​ ボタンをクリックします。

  4. ペイロードが ​application/java​ であることに注意してください。

    tut debug mediatype java

  5. Logger コンポーネント (​<logger>​) に達するまで引き続き ​[Step Over (ステップオーバー)]​ ボタンをクリックします。

  6. ペイロードが ​application/json​ に変換されていることに注意してください。

    tut debug mediatype json
  7. デバッグツールバーの ​[Continue (続行)]​ ボタンをクリックし、アプリケーションがデータベースから REST クライアントまたはブラウザーに応答を返すことを確認します。

    完全な実装 XML 例を表示するには、クリックしてください。
    [
        {
            "ID": 1,
            "code": "rree0001",
            "price": 541,
            "departureDate": "2016-01-20T00:00:00",
            "origin": "MUA",
            "destination": "LAX",
            "emptySeats": 0,
            "plane": {
                "type": "Boeing 787",
                "totalSeats": 200
            }
        },
        {
            "ID": 2,
            "code": "eefd0123",
            "price": 300,
            "departureDate": "2016-01-25T00:00:00",
            "origin": "MUA",
            "destination": "CLE",
            "emptySeats": 7,
            "plane": {
                "type": "Boeing 747",
                "totalSeats": 345
            }
        },
        {
            "ID": 3,
            "code": "ffee0192",
            "price": 300,
            "departureDate": "2016-01-20T00:00:00",
            "origin": "MUA",
            "destination": "LAX",
            "emptySeats": 0,
            "plane": {
                "type": "Boeing 777",
                "totalSeats": 300
            }
        },
        {
            "ID": 4,
            "code": "rree1000",
            "price": 200,
            "departureDate": "2016-01-20T00:00:00",
            "origin": "MUA",
            "destination": "CLE",
            "emptySeats": 5,
            "plane": {
                "type": "Boeing 737",
                "totalSeats": 150
            }
        },
        {
            "ID": 5,
            "code": "rree1093",
            "price": 142,
            "departureDate": "2016-02-11T00:00:00",
            "origin": "MUA",
            "destination": "SFO",
            "emptySeats": 1,
            "plane": {
                "type": "Boeing 737",
                "totalSeats": 150
            }
        },
        {
            "ID": 6,
            "code": "ffee1112",
            "price": 954,
            "departureDate": "2016-01-20T00:00:00",
            "origin": "MUA",
            "destination": "CLE",
            "emptySeats": 100,
            "plane": {
                "type": "Boeing 787",
                "totalSeats": 200
            }
        },
        {
            "ID": 7,
            "code": "eefd1994",
            "price": 676,
            "departureDate": "2016-01-01T00:00:00",
            "origin": "MUA",
            "destination": "SFO",
            "emptySeats": 0,
            "plane": {
                "type": "Boeing 777",
                "totalSeats": 300
            }
        },
        {
            "ID": 8,
            "code": "ffee2000",
            "price": 300,
            "departureDate": "2016-02-20T00:00:00",
            "origin": "MUA",
            "destination": "SFO",
            "emptySeats": 30,
            "plane": {
                "type": "Boeing 737",
                "totalSeats": 150
            }
        },
        {
            "ID": 9,
            "code": "eefd3000",
            "price": 900,
            "departureDate": "2016-02-01T00:00:00",
            "origin": "MUA",
            "destination": "SFO",
            "emptySeats": 0,
            "plane": {
                "type": "Boeing 737",
                "totalSeats": 150
            }
        },
        {
            "ID": 10,
            "code": "eefd4511",
            "price": 900,
            "departureDate": "2016-01-15T00:00:00",
            "origin": "MUA",
            "destination": "LAX",
            "emptySeats": 100,
            "plane": {
                "type": "Boeing 777",
                "totalSeats": 300
            }
        },
        {
            "ID": 11,
            "code": "rree4567",
            "price": 456,
            "departureDate": "2016-01-20T00:00:00",
            "origin": "MUA",
            "destination": "SFO",
            "emptySeats": 100,
            "plane": {
                "type": "Boeing 737",
                "totalSeats": 150
            }
        }
    ]
  8. デバッグセッションを停止する​に進みます。

デバッグセッションを停止する

デバッグセッションを停止する手順は、次のとおりです。

  1. デバッグツールバーで ​[Stop (停止)]​ ボタンをクリックします。

    デバッグツールバーからのデバッグセッションの停止
  2. American Flights アプリケーションのデプロイに進みます。