4. OData(V2) サービスのエンティティ操作¶
4.1. チュートリアル¶
このチュートリアルが終了すると、次のような事ができます。
- OData(V2) サービスのエンティティを操作する。
- 登録
- 参照
- 更新
- 削除
4.1.1. ゴールの説明¶
このチュートリアルでは、以下で公開されている OData(V2) リファレンスサービスを利用し、製品エンティティの操作を行います。
エンティティの登録
- エンティティを登録するユーザ定義タスクを作成します。
- 動作確認のためのフロー定義を作成します。
- 動作確認を行います。
エンティティの取得
- エンティティを取得するユーザ定義タスクを作成します。
- 動作確認のためのフロー定義を作成します。
- 動作確認を行います。
シングルエンティティの取得
- シングルエンティティを取得するユーザ定義タスクを作成します。
- 動作確認のためのフロー定義を作成します。
- 動作確認を行います。
エンティティの更新
- エンティティを更新するユーザ定義タスクを作成します。
- 動作確認のためのフロー定義を作成します。
- 動作確認を行います。
エンティティの削除
- エンティティを削除するユーザ定義タスクを作成します。
- 動作確認のためのフロー定義を作成します。
- 動作確認を行います。
このような順番で OData(V2) サービスのエンティティの操作方法や作業の流れを説明します。
4.1.2. 準備¶
チュートリアルの準備に書かれている準備が行われていることを確認してください。
4.1.3. エンティティの登録¶
IM-LogicDesignerのユーザ定義タスクを作成します。作成するのは「OData(V2)定義」です。
後述の「メソッド」を「POST」として作成することで OData サービスのエンティティの登録を行うようにします。
4.1.3.1. OData(V2)定義の作成¶
intra-mart Accel Platform にテナント管理者またはLogicDesigner管理者でログインします。
「サイトマップ」→「LogicDesigner」→「OData(V2)定義新規作成」を開きます。
「サービスURL」に「https://services.odata.org/V2/(S(im_odata))/OData/OData.svc」を設定します。
コラム
本チュートリアルでは必要ありませんが、利用する OData サービス に認証がかけられている場合、必要に応じて「認証種別」を「BASIC認証」または「OAuth認証」に設定し、認証情報を設定してください。コラム
OData サービスが独自のリクエストヘッダで認証を行う場合、以下のようにリクエストヘッダを追加して認証情報を設定してください。- リクエストヘッダ名に独自のリクエストヘッダ名を設定(上記画像では「Authorization」を設定)
- リクエストヘッダ値に認証情報を設定(上記画像では「my custom authorization」を設定)
「エンティティセット名」の横にあるリロードアイコンをクリックします。
「エンティティセット名」に「Products」を選択します。
「メソッド」に「POST」を選択します。
「入力/返却値取得」の横にある「取得」ボタンをクリックします。
その他の項目は以下のように入力してください。
ユーザ定義ID ODataV2Post ユーザ定義名 ODataV2Post ユーザカテゴリID SampleCategory 「登録」ボタンをクリックします。
確認ダイアログで「OK」ボタンをクリックします。
これで「OData(V2)定義」の作成は終了です。
4.1.3.2. フロー定義の作成¶
続いてフロー定義の作成を行います。
「サイトマップ」→「LogicDesigner」→「フロー定義」を開きます。
「新規作成」リンクをクリックし、「ロジックフロー定義編集」画面を表示します。
「入出力設定」リンクをクリックし、「入力」に次のような項目を追加し、「決定」ボタンをクリックします。
キー名 型 ID integer Name string Description string ReleaseDate calendar DiscontinuedDate calendar Rating integer Price bigdecimal ロジックフロー定義編集画面のデザイナに、先ほど作成した「ODataV2Post」タスクを追加し、「開始」「終了」と接続します。
「ODataV2Post」タスクをクリックし、「マッピング設定」ボタンをクリックします。
「入力」の各項目と、「ODataV2Post」の各項目を紐づけ、「決定」ボタンをクリックします。
「新規保存」リンクをクリックし、新規保存ダイアログを表示します。ダイアログに次のような内容を入力し「決定」ボタンをクリックします。
フロー定義ID ODataV2Post フロー定義名 標準 ODataV2Post フローカテゴリID SampleCategory 「確認」ダイアログで「決定」ボタンをクリックします。
4.1.3.3. 動作確認¶
最後に動作確認を行います。 IM-LogicDesigner のデバッグ機能を使ってフローを実行し、OData サービスにエンティティが作成されることを確認します。
「ODataV2Post」フローの「編集」アイコンをクリックします。
「ロジックフロー定義編集」画面の「デバッグ」リンクをクリックします。
「ロジックフロー定義のデバッグ」画面の「実行」リンクをクリックします。
「デバッグの実行」ダイアログが表示されるので、次のように入力し「実行」ボタンをクリックし、「確認」ダイアログで「決定」ボタンをクリックします。
ID 9 Name テスト(Name) Description テスト(Description) ReleaseDate 2016-12-01T10:00:00Z DiscontinuedDate 2017-12-01T10:00:00Z Rating 100 Price 1000 これで、OData サービスにエンティティが作成されました。
本当に作成されたかどうかを確認します。
ブラウザから「https://services.odata.org/V2/(S(im_odata))/OData/OData.svc/Products」にアクセスします。
フローのデバッグ画面で入力した値でエンティティが作成されていることを確認できます。
4.1.4. エンティティの取得¶
次に、 エンティティを参照する IM-LogicDesigner のユーザ定義タスクを作成します。作成するのは「OData(V2)定義」です。
「メソッド」を「GET」として作成することで OData サービスのエンティティの取得を行うようにします。
4.1.4.1. OData(V2)定義の作成¶
エンティティの登録の 1 から 5 までの手順を繰り返してください。
「メソッド」に「GET」を選択します。
「クエリオプション」の横にある「追加」アイコンをクリックし、以下のクエリオプションを追加します。
- 「クエリオプション名」を「$orderby」
- 「クエリオプション値」を「ID」
コラム
「$orderby」に「ID」を指定することで、IDでソートされた結果を取得する事が出来ます。クエリオプションの詳細については以下のドキュメントを参照してください。「入力/返却値取得」の横にある「取得」ボタンをクリックします。
その他の項目は以下のように入力してください。
ユーザ定義ID ODataV2Get ユーザ定義名 ODataV2Get ユーザカテゴリID SampleCategory 「登録」ボタンをクリックします。
確認ダイアログで「OK」ボタンをクリックします。
これで「OData(V2)定義」の作成は終了です。
4.1.4.2. フロー定義の作成¶
続いてフロー定義の作成を行います。
「サイトマップ」→「LogicDesigner」→「フロー定義」を開きます。
「新規作成」リンクをクリックし、「ロジックフロー定義編集」画面を表示します。
ロジックフロー定義編集画面のデザイナに、先ほど作成した「ODataV2Get」タスクと、「繰り返し開始」「繰り返し終了」「ログ出力」タスクを追加し、「開始」「終了」と接続します。
「定数設定」リンクをクリックし、次のような項目を追加し、「決定」ボタンをクリックします。
「定数ID」を「el」
「定数値」を以下
ID:${im_startLoop1.item.ID} ReleaseDate:${im_startLoop1.item.ReleaseDate} DiscontinuedDate:${im_startLoop1.item.DiscontinuedDate} Rating:${im_startLoop1.item.Rating} Price:${im_startLoop1.item.Price}
「繰り返し開始」タスクをクリックし、「繰り返し対象」に「ODataV2Get1/data」を設定します。
「ログ出力」タスクをクリックし、「マッピング設定」ボタンをクリックし、次のように各項目を紐づけ、「決定」ボタンをクリックします。
「新規保存」リンクをクリックし、新規保存ダイアログを表示します。ダイアログに次のような内容を入力し「決定」ボタンをクリックします。
フロー定義ID ODataV2Get フロー定義名 標準 ODataV2Get フローカテゴリID SampleCategory 「確認」ダイアログで「決定」ボタンをクリックします。
これでフロー定義の作成が終了です。
4.1.4.3. 動作確認¶
最後に動作確認を行います。 IM-LogicDesigner のデバッグ機能を使ってフローを実行し、OData サービスのデータが取得されることを確認します。
「ODataV2Get」フローの「編集」アイコンをクリックします。
「ロジックフロー定義編集」画面の「デバッグ」リンクをクリックします。
「ロジックフロー定義のデバッグ」画面の「実行」リンクをクリックします。
「デバッグの実行」ダイアログが表示されるので、「実行」ボタンをクリックし、「確認」ダイアログで「決定」ボタンをクリックします。
以下のログが出力されます。
[INFO] j.c.i.f.l.e.g.OutputLogTask - [] ID:0 ReleaseDate:java.util.GregorianCalendar[time=694224000000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=1992,MONTH=0,WEEK_OF_YEAR=1,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=1,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=0,DST_OFFSET=0] DiscontinuedDate: Rating:4 Price:2.5 [INFO] j.c.i.f.l.e.g.OutputLogTask - [] ID:1 ReleaseDate:java.util.GregorianCalendar[time=812505600000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=1995,MONTH=9,WEEK_OF_YEAR=40,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=274,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=0,DST_OFFSET=0] DiscontinuedDate: Rating:3 Price:3.5 [INFO] j.c.i.f.l.e.g.OutputLogTask - [] ID:2 ReleaseDate:java.util.GregorianCalendar[time=970358400000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2000,MONTH=9,WEEK_OF_YEAR=41,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=275,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=0,DST_OFFSET=0] DiscontinuedDate: Rating:3 Price:20.9 [INFO] j.c.i.f.l.e.g.OutputLogTask - [] ID:3 ReleaseDate:java.util.GregorianCalendar[time=1128124800000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2005,MONTH=9,WEEK_OF_YEAR=40,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=274,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=0,DST_OFFSET=0] DiscontinuedDate:java.util.GregorianCalendar[time=1159660800000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2006,MONTH=9,WEEK_OF_YEAR=40,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=274,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=0,DST_OFFSET=0] Rating:3 Price:19.9 [INFO] j.c.i.f.l.e.g.OutputLogTask - [] ID:4 ReleaseDate:java.util.GregorianCalendar[time=1041724800000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2003,MONTH=0,WEEK_OF_YEAR=2,WEEK_OF_MONTH=2,DAY_OF_MONTH=5,DAY_OF_YEAR=5,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=0,DST_OFFSET=0] DiscontinuedDate: Rating:3 Price:22.99 [INFO] j.c.i.f.l.e.g.OutputLogTask - [] ID:5 ReleaseDate:java.util.GregorianCalendar[time=1154649600000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2006,MONTH=7,WEEK_OF_YEAR=31,WEEK_OF_MONTH=1,DAY_OF_MONTH=4,DAY_OF_YEAR=216,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=0,DST_OFFSET=0] DiscontinuedDate: Rating:3 Price:22.8 [INFO] j.c.i.f.l.e.g.OutputLogTask - [] ID:6 ReleaseDate:java.util.GregorianCalendar[time=1162684800000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2006,MONTH=10,WEEK_OF_YEAR=45,WEEK_OF_MONTH=2,DAY_OF_MONTH=5,DAY_OF_YEAR=309,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=0,DST_OFFSET=0] DiscontinuedDate: Rating:3 Price:18.8 [INFO] j.c.i.f.l.e.g.OutputLogTask - [] ID:7 ReleaseDate:java.util.GregorianCalendar[time=1163548800000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2006,MONTH=10,WEEK_OF_YEAR=46,WEEK_OF_MONTH=3,DAY_OF_MONTH=15,DAY_OF_YEAR=319,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=3,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=0,DST_OFFSET=0] DiscontinuedDate: Rating:3 Price:35.88 [INFO] j.c.i.f.l.e.g.OutputLogTask - [] ID:8 ReleaseDate:java.util.GregorianCalendar[time=1210204800000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2008,MONTH=4,WEEK_OF_YEAR=19,WEEK_OF_MONTH=2,DAY_OF_MONTH=8,DAY_OF_YEAR=129,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=0,DST_OFFSET=0] DiscontinuedDate: Rating:3 Price:1088.8 [INFO] j.c.i.f.l.e.g.OutputLogTask - [] ID:9 ReleaseDate:java.util.GregorianCalendar[time=1480586400000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2016,MONTH=11,WEEK_OF_YEAR=49,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=336,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=10,HOUR_OF_DAY=10,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=0,DST_OFFSET=0] DiscontinuedDate:java.util.GregorianCalendar[time=1512122400000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2017,MONTH=11,WEEK_OF_YEAR=48,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=335,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=10,HOUR_OF_DAY=10,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=0,DST_OFFSET=0] Rating:100 Price:1000
ブラウザから「https://services.odata.org/V2/(S(im_odata))/OData/OData.svc/Products」にアクセスします。
ブラウザに表示されるデータと、出力されたログの内容が一致することが確認できます。
4.1.5. シングルエンティティの取得¶
次に、 シングルエンティティを参照する IM-LogicDesigner のユーザ定義タスクを作成します。作成するのは「OData(V2)定義」です。
「メソッド」を「GET」、「シングルエンティティ」を選択することで OData サービスのシングルエンティティの取得を行うようにします。
4.1.5.1. OData(V2)定義の作成¶
エンティティの登録の 1 から 5 までの手順を繰り返してください。
「メソッド」に「GET」を選択します。
「メソッド」の横にある「シングルエンティティ」を選択します。
「入力/返却値取得」の横にある「取得」ボタンをクリックします。
その他の項目は以下のように入力してください。
ユーザ定義ID ODataV2GetSingle ユーザ定義名 ODataV2GetSingle ユーザカテゴリID SampleCategory 「登録」ボタンをクリックします。
確認ダイアログで「OK」ボタンをクリックします。
これで「OData(V2)定義」の作成は終了です。
4.1.5.2. フロー定義の作成¶
続いてフロー定義の作成を行います。
「サイトマップ」→「LogicDesigner」→「フロー定義」を開きます。
「新規作成」リンクをクリックし、「ロジックフロー定義編集」画面を表示します。
ロジックフロー定義編集画面のデザイナに、先ほど作成した「ODataV2GetSingle」タスクと「ログ出力」タスクを追加し、「開始」「終了」と接続します。
「入出力設定」リンクをクリックし、「入力」に次のような項目を追加し、「決定」ボタンをクリックします。
キー名 型 ID integer 「定数設定」リンクをクリックし、次のような項目を追加し、「決定」ボタンをクリックします。
「定数ID」を「el」
「定数値」を以下
ID:${ODataV2GetSingle1.data.ID} ReleaseDate:${ODataV2GetSingle1.data.ReleaseDate} DiscontinuedDate:${ODataV2GetSingle1.data.DiscontinuedDate} Rating:${ODataV2GetSingle1.data.Rating} Price:${ODataV2GetSingle1.data.Price}
「ODataV2GetSingle」タスクをクリックし、「マッピング設定」ボタンをクリックし、次のように各項目を紐づけ、「決定」ボタンをクリックします。
「ログ出力」タスクをクリックし、「マッピング設定」ボタンをクリックし、次のように各項目を紐づけ、「決定」ボタンをクリックします。
「新規保存」リンクをクリックし、新規保存ダイアログを表示します。ダイアログに次のような内容を入力し「決定」ボタンをクリックします。
フロー定義ID ODataV2GetSingle フロー定義名 標準 ODataV2GetSingle フローカテゴリID SampleCategory 「確認」ダイアログで「決定」ボタンをクリックします。
これでフロー定義の作成が終了です。
4.1.5.3. 動作確認¶
最後に動作確認を行います。 IM-LogicDesigner のデバッグ機能を使ってフローを実行し、OData サービスのデータが取得されることを確認します。
「ODataV2GetSingle」フローの「編集」アイコンをクリックします。
「ロジックフロー定義編集」画面の「デバッグ」リンクをクリックします。
「ロジックフロー定義のデバッグ」画面の「実行」リンクをクリックします。
「デバッグの実行」ダイアログが表示されるので、次のように入力し「実行」ボタンをクリックし、「確認」ダイアログで「決定」ボタンをクリックします。
ID 7 以下のログが出力されます。
[INFO] j.c.i.f.l.e.g.OutputLogTask - [] ID:7 ReleaseDate:java.util.GregorianCalendar[time=1163548800000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2006,MONTH=10,WEEK_OF_YEAR=46,WEEK_OF_MONTH=3,DAY_OF_MONTH=15,DAY_OF_YEAR=319,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=3,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=0,DST_OFFSET=0] DiscontinuedDate: Rating:3 Price:35.88
ブラウザから「https://services.odata.org/V2/(S(im_odata))/OData/OData.svc/Products(7)」にアクセスします。
ブラウザに表示されるデータと、出力されたログの内容が一致することが確認できます。
4.1.6. エンティティの更新¶
次に、 エンティティを更新する IM-LogicDesigner のユーザ定義タスクを作成します。作成するのは「OData(V2)定義」です。
「メソッド」を「PUT」または「MERGE」として作成することで OData サービスのエンティティの更新を行うようにします。
コラム
「PUT」と「MERGE」はどちらもエンティティの更新を行いますが、「PUT」は入力プロパティの更新を行い、入力プロパティに与えられなかったプロパティは初期値に更新されます。これとは逆に「MERGE」では入力プロパティに与えられたプロパティの更新のみ行い、入力プロパティに与えられなかったプロパティは更新されません。
本チュートリアルでは「メソッド」に「MERGE」を指定してエンティティの更新を行います。
4.1.6.1. OData(V2)定義の作成¶
エンティティの登録の 1 から 5 までの手順を繰り返してください。
「メソッド」に「MERGE」を選択します。
「入力/返却値取得」の横にある「取得」ボタンをクリックします。
その他の項目は以下のように入力してください。
ユーザ定義ID ODataV2Merge ユーザ定義名 ODataV2Merge ユーザカテゴリID SampleCategory 「登録」ボタンをクリックします。
確認ダイアログで「OK」ボタンをクリックします。
これで「OData(V2)定義」の作成は終了です。
4.1.6.2. フロー定義の作成¶
続いてフロー定義の作成を行います。
「サイトマップ」→「LogicDesigner」→「フロー定義」を開きます。
「新規作成」リンクをクリックし、「ロジックフロー定義編集」画面を表示します。
ロジックフロー定義編集画面のデザイナに、先ほど作成した「ODataV2Merge」タスクを追加し、「開始」「終了」と接続します。
「入出力設定」リンクをクリックし、「入力」に次のような項目を追加し、「決定」ボタンをクリックします。
キー名 型 ID integer ReleaseDate calendar Rating integer Price bigdecimal 「ODataV2Merge」タスクをクリックし、「マッピング設定」ボタンをクリックし、次のように各項目を紐づけ、「決定」ボタンをクリックします。
「新規保存」リンクをクリックし、新規保存ダイアログを表示します。ダイアログに次のような内容を入力し「決定」ボタンをクリックします。
フロー定義ID ODataV2Merge フロー定義名 標準 ODataV2Merge フローカテゴリID SampleCategory 「確認」ダイアログで「決定」ボタンをクリックします。
これでフロー定義の作成が終了です。
4.1.6.3. 動作確認¶
最後に動作確認を行います。 IM-LogicDesigner のデバッグ機能を使ってフローを実行し、OData サービスのデータが更新されることを確認します。
「ODataV2Merge」フローの「編集」アイコンをクリックします。
「ロジックフロー定義編集」画面の「デバッグ」リンクをクリックします。
「ロジックフロー定義のデバッグ」画面の「実行」リンクをクリックします。
「デバッグの実行」ダイアログが表示されるので、次のように入力し「実行」ボタンをクリックし、「確認」ダイアログで「決定」ボタンをクリックします。
ID 3 ReleaseDate 2016-12-01T10:00:00Z Rating 100 Price 1000 これで、OData サービスのエンティティが更新されました。
本当に作成されたかどうかを確認します。
ブラウザから「https://services.odata.org/V2/(S(im_odata))/OData/OData.svc/Products(3)」にアクセスします。
フローのデバッグ画面で入力した値でエンティティが更新されていることを確認できます。
コラム
更新処理では、キープロパティを変更することはできません。コラム
入力データとして与えられた「ReleaseDate」「Rating」「Price」プロパティが更新され、入力データに与えられなかった「DiscontinuedDate」プロパティは更新されていないことが確認できます。メソッドに「PUT」を指定した場合、入力データとして与えられた「ReleaseDate」「Rating」「Price」プロパティは同様に更新されますが、入力データに与えられなかった「DiscontinuedDate」プロパティは初期値に更新されます。
4.1.7. エンティティの削除¶
最後に、エンティティを削除する IM-LogicDesignerのユーザ定義タスクを作成します。作成するのは「OData(V2)定義」です。
「メソッド」を「DELETE」として作成することで OData サービスのエンティティの削除を行うようにします。
4.1.7.1. OData(V2)定義の作成¶
エンティティの登録の 1 から 5 までの手順を繰り返してください。
「メソッド」に「DELETE」を選択します。
「入力/返却値取得」の横にある「取得」ボタンをクリックします。
その他の項目は以下のように入力してください。
ユーザ定義ID ODataV2Delete ユーザ定義名 ODataV2Delete ユーザカテゴリID SampleCategory 「登録」ボタンをクリックします。
確認ダイアログで「OK」ボタンをクリックします。
これで「OData(V2)定義」の作成は終了です。
4.1.7.2. フロー定義の作成¶
続いてフロー定義の作成を行います。
「サイトマップ」→「LogicDesigner」→「フロー定義」を開きます。
「新規作成」リンクをクリックし、「ロジックフロー定義編集」画面を表示します。
ロジックフロー定義編集画面のデザイナに、先ほど作成した「ODataV2Delete」タスクを追加し、「開始」「終了」と接続します。
「入出力設定」リンクをクリックし、「入力」に次のような項目を追加し、「決定」ボタンをクリックします。
キー名 型 ID integer 「ODataV2Delete」タスクをクリックし、「マッピング設定」ボタンをクリックし、次のように各項目を紐づけ、「決定」ボタンをクリックします。
「新規保存」リンクをクリックし、新規保存ダイアログを表示します。ダイアログに次のような内容を入力し「決定」ボタンをクリックします。
フロー定義ID ODataV2Delete フロー定義名 標準 ODataV2Delete フローカテゴリID SampleCategory 「確認」ダイアログで「決定」ボタンをクリックします。
これでフロー定義の作成が終了です。
4.1.7.3. 動作確認¶
最後に動作確認を行います。 IM-LogicDesigner のデバッグ機能を使ってフローを実行し、OData サービスのデータが削除されることを確認します。
「ODataV2Delete」フローの「編集」アイコンをクリックします。
「ロジックフロー定義編集」画面の「デバッグ」リンクをクリックします。
「ロジックフロー定義のデバッグ」画面の「実行」リンクをクリックします。
「デバッグの実行」ダイアログが表示されるので、次のように入力し「実行」ボタンをクリックし、「確認」ダイアログで「決定」ボタンをクリックします。
ID 8 ブラウザから「https://services.odata.org/V2/(S(im_odata))/OData/OData.svc/Products(8)」にアクセスします。
以下のように表示され、ID=8 のエンティティが削除され存在しないことが確認できます。
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"> <code/> <message xml:lang="en-US">Resource not found for the segment 'Products'.</message> </error>
4.1.8. まとめ¶
以上で OData(V2) サービスのエンティティ操作のチュートリアルはすべて完了です。
これまでのチュートリアルを通して、以下のことを学びました。
- OData(V2) サービスのエンティティを操作する。
- 登録
- 参照
- 更新
- 削除
次章 OData(V4) サービスのエンティティ操作では、OData(V4) サービスのエンティティを操作するチュートリアルを用意しています。