今回は「会議室利用予約をリスト化&会議室利用予約報告プロジェクト」の「GoogleCalendarGetコンポーネントでデータ取得、RDBDiffコンポーネントでレコードを比較する」についてご紹介します。
②GoogleCalendarGetコンポーネントでデータ取得、RDBDiffコンポーネントでレコードを比較する←今回紹介
*********************
②GoogleCalendarGetコンポーネントでデータ取得、RDBDiffコンポーネントでレコードを比較する
フローの流れ
各部署共有の会議室利用予約のGoogleカレンダーがございます。
共有のGoogleカレンダーに新規予約、予約内容更新、予約削除など会議室利用予約内容に変化がありましたら、この内容をChatWorkへ報告します。
フローの詳細説明
■Mapper1の内容
Now、DateCalcを使用して、現在より2時間前の日付を取得
SQLパラメーターのNOWへ値を代入
■GoogleCalendarGetの内容
GoogleCalendarのAllCalendarsから会議室利用予約リストを取得
条件としては、EndDateTime項目に条件を付けて、現在より2時間前以降のリストを取得
■Mapper2の内容
GoogleCalendarから取得した会議室利用予約リストをマッピングする
■RDBDiffの内容
RDBDiffで入力されたレコードとRDBのテーブルに存在する全レコードを比較し、差分のレコードを出力する
差分があったら、RDBのテーブルに差分レコード内容を更新する
■Converterの内容
Recordストリーム型からCSVストリームへ変換する
■Mapper3の内容
RDBDiffから出力した差分レコードをマッピングする
■BranchStartの内容
差分のレコード件数が存在するかを確認し、条件分岐する
$record.レコード件数=0
■RDBGETの内容
最新の会議室利用予約リストを取得
■Mapper4の内容
RDBGETの出力データをExcelOutputへマッピングする
■ExcelOutputの内容
用意されたテンプレートを使用し、Excelビルダーでレコードの追加、登録
■FilePutの内容
ExcelBuilderで使用したテンプレートファイルを更新して使用しないため、FilePutのファイルパスに出力先のパスを記入する
■Mapper5の内容
差分のレコードが存在する場合、差分レコード内容をマッピングする
■Velocityの内容
ChatWorkへ送信するためのメッセージ作成と差分レコード内容をforeachでループして取得
■Mapper6の内容
ChatWorkへ送信するためのメッセージとアップロードファイルをマッピングする
■RESTの内容
ChatWorkのapiを利用して対象roomへメッセージとファイルを送信する
基本のURLプロパティにファイルとメッセージを同時送信したいので、いかのAPIを使用
https://api.chatwork.com/v2/rooms/{room_id}/files room_idには対象のidを記入
Content-Typeにはmultipart/form-data、HTTPメソッドにはPOSTを選択
X-ChatWorkTokenには対象のAPIトークンを記入
アップロードファイルにはパラメーター名にfile、ファイルパスには対象のパス、ファイル名には対象のファイル名
■フローを実行する差分レコード件数が0であれば、フローを終了し
差分のレコードが存在する場合以下ように差分内容とリスト一覧が記載されているExcelファイルがChatwork へ送信されます。
Insertは新規予約
Updateは既存の予約内容を更新
Deleteは既存の予約内容を削除