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

logo cloud IDE Cloud IDE

logo desktop IDE Desktop IDE

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

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 プロジェクトの最初のブレークポイントでアプリケーションの実行が停止することを確認します。

    debug stop at flow ref

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

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

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

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

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

    debugger stop set variable
  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 (停止)]​ ボタンをクリックします。

    debugger stop
  2. American Flights アプリケーションのデプロイに進みます。