Magic xpiトレーニングテキスト
14. 演習4

14.1 Basic認証を使用したPOSTフローの作成

【仕様】

  • Redmine REST APIが持つ認証方法のうち、Basic認証を使用します。
  • プロジェクト管理者が新規登録するチケットの情報をCSVファイルとして準備します。
  • REST ClientコンポーネントのPOSTメソッドを使用して、チケットを一括登録します。

 

【フロー完成イメージ】

フロー完成イメージ

 

【環境変数の設定】

  • xpiサーバ、xpiスタジオ、Magicモニタを終了させます。
  • プロジェクトごとの設定ファイルである ifs.ini をテキストエディタで編集します。

<プロジェクト配置フォルダ>\MagicxpiSample1\MagicxpiSample1\ifs.ini

環境変数の設定

[MAGIC_LOGICAL_NAMES]REDMINE_URL=http://localhost:81

[MAGIC_LOGICAL_NAMES]REDMINE_USER=xpi

[MAGIC_LOGICAL_NAMES]REDMINE_PASSWORD=password

 

【REST Clientリソースの定義】

  • メニュー > プロジェクト > 設定より設定画面を開きます。
  • 左ペインで「リソース」を選択した状態で「追加」ボタンを押し、リソースを追加します。

REST Clientリソースの定義

リソースタイプ REST Client
リソース名 RedmineBasicAuth

 

 

  • 右ペインにて、RedmineのURL、セキュリティ(認証方法)、ユーザ、パスワードを設定します。
  • 「パス」ボタンを押し、パスやパラメータを定義します。

右ペインにて、RedmineのURL、セキュリティ(認証方法)

 

サーバURL %REDMINE_URL%
セキュリティ HTTP-Basic
ユーザ %REDMINE_USER%
パスワード %REDMINE_PASSWORD%

 

【パスとパラメータの定義】

  • パスの設定画面で、下記のように設定します。

パスとパラメータの定義

パス名 /redmine/issues.json

 

【ビジネスプロセスとフローの作成】

  • ビジネスプロセスを追加し、名前を「REST」とします。
  • 追加されたフローの他に、もう1フロー追加し、それぞれのフローの名称を以下のように変更します。

ビジネスプロセスとフローの作成

 

【コンテキスト変数の定義】

  • ソリューションエクスプローラーのプロジェクト名 > リポジトリ > コンテキスト変数をダブルクリックし、コンテキスト変数を定義します。
タイプ 長さ
C.project_id Numeric 12.0
C.tracker_id Numeric 12.0
C.status_id Numeric 12.0
C.priority_id Numeric 12.0
C.assigned_to_id Numeric 12.0
C.subject Alpha 100
C.description Alpha 1000
C.リクエストJSON Blob

 

【メインフローの設定】

  • 「CSV読込」フローをダブルクリックし、フローエディタを開きます。
  • ツールボックスからデータマッパをフローエリアにDrag&Dropします。
  • データマッパーを選択し、プロパティペインでステップ名を設定します。

メインフローの設定

ステップ名 CSV読込

 

  • マッパ画面が表示されます。
  • 送り元にFlat Fileを、送り先にCall FlowをDrag&Dropし、プロパティペインで名前を下記のように修正します。

マッパ画面

 

【送り元の設定】

  • 送り元のプロパティを下記のように設定します。

送り元の設定

 

送り元タイプ File
データ送り元エンコーティング ANSI
ファイルパス EnvVal(‘currentprojectdir’)&’csv\issues.csv’

【CSV項目の読み込み】

  • 「ファイルの例」欄に「Templates\Issues.txt」を指定し「リフレッシュ」ボタンを押します。
  • 指定したファイルのCSV項目名が読み込まれます。

CSV項目の読み込み

※1 上図のように、CSV項目名をカンマで区切ったテキストファイルを準備しておくと、フラットファイルのカラム名を容易に設定できます。

※2 使用可能な文字:半角英数字、漢字、ひらがな、全角カタカナ

 

【属性の入力】

  • 「ファイルの例」で読み込めるのは項目名のみです。
  • その他の属性(ここではデータタイプとフォーマット)は手入力します。

属性の入力

データタイプ フォーマット
project_id Numeric 12
tracker_id Numeric 12
status_id Numeric 12
priority_id Numeric 12
assigned_to_id Numeric 12
subject Alpha 100
description Alpha 1000

 

 

【送り先の設定】

  • 送り先のプロパティを下記のように設定します。

送り先の設定

フロー名 POST

 

【マッピング】

  • 送り元チケットCSVの「Record」を右クリックし「全て接続」 > 「Simple」をクリックします。
  • そのまま、送り先の「POST」をクリックすると、同じ名前の項目が接続されます。

マッピング

 

【全て接続について】

  • マッパ画面のコンテキストメニュー「全て接続」には、下記の3つのオプションがあります。
  • 大文字と小文字は区別されません。
  • 送り元が変数の場合、接頭辞を含めた名前で比較されます。
  • 送り先が変数の場合、接頭辞を除去した名前で比較されます。(例.C.UserBlob → UserBlob)
Simple 完全一致
Fuzzy あいまい検索(下記の優先順でマッピングされる)

1.完全一致

2.前方一致

3.後方一致

4.部分一致

1:1 上から順々にマッピングされる

 

【サブフローの設定】

  • 「POST」フローをダブルクリックし、フローエディタを開きます。
  • ツールボックスからデータマッパをフローエリアにDrag&Dropします。
  • データマッパーを選択し、プロパティペインでステップ名を設定します。

サブフローの設定

ステップ名 リクエストJSON作成

 

  • マッパ画面が表示されます。
  • 送り元にVariableを、送り先にJSONをDrag&Dropし、プロパティペインで名前を下記のように修正します。

送り元にVariableを、送り先にJSONをDrag&Drop

 

【送り元の設定】

  • 送り元のプロパティを下記のように設定します。

送り元の設定

 

変数名 C.assigned_to_id
C.description
C.priority_id
C.project_id
C.status_id
C.subject
C.tracker_id

 

【送り先の設定】

  • 送り先のプロパティを下記のように設定します。

送り先の設定

 

JSONスキーマファイル Schema\Issue.json
送り先タイプ Variable
変数 C.リクエストJSON

 

 

 

 

 

 

 

 

【マッピング】

  • 同じ名前の項目を手作業でマッピングします。
  • 送り元が変数の場合、接頭辞を含めた名前で比較されるため、全て接続は使えません。

マッピング

 

【REST Clientの配置】

  • ツールボックスからREST Clientをデータマッパの下にDrag&Dropします。
  • REST Clientを選択し、プロパティペインでステップ名とリソース名を設定します。

REST Clientの配置

 

ステップ名 POST送信
リソース名 RedmineBasicAuth

 

【エラーコードの自動追加】

  • REST Clientコンポーネントはxpiのコネクタビルダを使用して作られています。
  • コネクタビルダで作成されたコンポーネントをはじめてプロジェクトに配置する際、エラーリポジトリにそのコンポーネントのエラーコードが自動的に追加されます。

エラーコードの自動追加

 

【コネクタビルダ】
xpiの標準コネクタ以外に、ユーザ独自のコネクタを開発することができる機能UIの開発は.NET、ランタイムの開発は.NET、Java、Magic xpaのいずれかを選択可能

 

【REST Clientコンポーネントの設定】

  • REST Clientコンポーネントをダブルクリックし、REST Client構成画面を開きます。
  • 下記の通り設定し、「OK」ボタンを押します。

REST Clientコンポーネントの設定

 

パス /redmine/issues.json
オペレーション Post
リクエスト Content Type application/json
要求エンコーディング UTF-8
結果保存 Variable (C.UserBlob)
ステータスコード C.UserCode
メッセージ C.UserString

 

【リクエストJSONの設定】

  • RequestBodyのDataBlobに変数「C.リクエストJSON」を設定します。

リクエストJSONの設定

 

【REST Clientコンポーネントの画面遷移】

  • REST Clientコンポーネントは初回設定時と、2回目以降の設定時で画面遷移が異なります。

REST Clientコンポーネントの画面遷移

 

【結果をMagicモニタに出力】

  • ツールボックスからメッセージ保存をREST Clientの下にDrag&Dropします。
  • メッセージ保存を選択し、プロパティペインでステップ名を設定します。

結果をMagicモニタに出力

 

ステップ名 結果をモニタに出力

 

【結果をMagicモニタに出力】

  • メッセージ保存コンポーネントをダブルクリックし、下記の通り設定します。

結果をMagicモニタに出力

 

  • フロー完成です。

フロー完成

 

【Redmineのチケットの確認】

  • xpiフローを実行する前に、Redmineのチケットを確認しておきます。
  • Windowsのスタートメニュー > Bitnami Redmine Stack > Launch Bitnami Redmine Stackをクリックし、表示された画面の「Access Redmine」リンクをクリックします。

Redmineのチケットの確認

 

  • 右上の「ログイン」リンクをクリックし、プロジェクト管理者としてログインします。

「ログイン」リンクをクリック

 

ログインID xpi
パスワード password

 

 

  • 左上の「プロジェクト」リンクをクリックし、表示されたページの「チケット」タブをクリックします。

「プロジェクト」リンクをクリック

 

  • チケットが登録されていないことを確認します。

チケットが登録されていない

 

【デバッグ実行】

  • メインフローである「CSV読込」フローのプロパティ「自動起動」を「Yes」に設定します。
  • メニュー > デバッグxpi > デバッグ開始をクリックします。

デバッグ実行

 

【Magic モニタの確認】

  • Magic モニタで実行状況を確認します。

Magic モニタの確認

 

【Redmineのチケットの確認】

  • Redmineのチケット一覧をリロードし、チケットが登録されたことを確認します。

Redmineのチケットの確認

 

【デバッグ停止】

  • メニュー > デバッグxpi > デバッグ停止でデバッグを停止します。

デバッグ停止

14.2 アクセスキーを使用したGETフローの作成

【仕様】

  • Redmine REST APIが持つ認証方法のうち、アクセスキーを使用します。
  • プロジェクトメンバー(Magic Taro)が自分にアサインされたチケット情報を取得します。
  • REST ClientコンポーネントのGETメソッドを使用してXML形式でチケット情報を保存します。

 

【フロー完成イメージ】

フロー完成イメージ

 

【アクセスキーの確認】

  • Redmineの個人設定ページでAPIアクセスキーを確認します。

アクセスキーの確認

 

【環境変数の設定】

  • xpiサーバ、xpiスタジオ、Magicモニタを終了させます。
  • プロジェクトごとの設定ファイルである ifs.ini をテキストエディタで編集します。

   <プロジェクト配置フォルダ>\MagicxpiSample1\MagicxpiSample1\ifs.ini

環境変数の設定

 

 

【REST Clientリソースの定義】

  • メニュー > プロジェクト > 設定より設定画面を開きます。
  • 左ペインで「リソース」を選択した状態で「追加」ボタンを押し、リソースを追加します。

REST Clientリソースの定義

 

リソースタイプ REST Client
リソース名 RedmineAccessKey

 

  • 右ペインにて、RedmineのURLを設定します。
  • 「パス」ボタンを押し、パスやパラメータを定義します。

RedmineのURLを設定

サーバURL %REDMINE_URL%
セキュリティ None

 

【パスとパラメータの定義】

  • パスの設定画面で、下記のように設定します。

パスとパラメータの定義

 

パス名 /redmine/issues.xml
パラメータ key
assigned_to_id

 

 

【フローの追加】

  • 「REST」ビジネスプロセスにフローを追加し、名前を「GET」に変更します。

フローの追加

 

【コンテキスト変数】

  • ソリューションエクスプローラーのプロジェクト名 > リポジトリ > コンテキスト変数をダブルクリックし、コンテキスト変数を定義します。
タイプ 長さ
C.担当者ID Alpha 30

 

【フローの設定】

  • 「GET」フローをダブルクリックし、フローエディタを開きます。
  • ツールボックスからFlow DataをフローエリアにDrag&Dropします。
  • Flow Dataを選択し、プロパティペインでステップ名を設定します。

フローの設定

 

ステップ名 担当者IDセット

 

 

  • 「Add」ボタンで一行追加し、コンテキスト変数「C.担当者ID」の値を「5」に設定します。

「Add」ボタンで一行追加

 

アクション タイプ データタイプ Encoding 更新式
Update Context C.担当者ID Alpha Ansi 5

 

【RedmineにおけるユーザーIDの確認方法】

  • Redmineの管理 > ユーザー > developer1(Magic Taro)をクリックします。
  • URLを見ると、Magic TaroのIDが「5」であることが確認できます。

RedmineにおけるユーザーIDの確認方法

 

【REST Clientの配置】

  • ツールボックスからREST ClientをFlow Dataの下にDrag&Dropします。
  • REST Clientを選択し、プロパティペインでステップ名とリソース名を設定します。

REST Clientの配置

 

ステップ名 GET送信
リソース名 RedmineAccessKey

 

【REST Clientコンポーネントの設定】

  • REST Clientコンポーネントをダブルクリックし、REST Client構成画面を開きます。
  • 下記の通り設定し、「パラメータ」ボタンを押します。

REST Clientコンポーネントの設定

 

パス /redmine/issues.xml
オペレーション Get
レスポンス Content Type application/xml
結果保存 Variable (C.UserBlob)
ステータスコード C.UserCode
メッセージ C.UserString

 

【パラメータの設定】

  • クエリパラメータ「key」の値として環境変数「REDMINE_ACCESSKEY」をセットします。
  • クエリパラメータ「assigned_to_id」の値として変数「C.担当者ID」をセットします。

パラメータの設定

 

  • パラメータの設定が終わったら、構成画面で「OK」ボタンを押します。
  • マッパ画面が表示されますが、特に何も設定しません。

構成画面で「OK」ボタン

 

【結果XMLをファイルに出力】

  • ツールボックスからファイル管理をREST Clientの下にDrag&Dropします。
  • ファイル管理を選択し、プロパティペインでステップ名を設定します。

結果XMLをファイルに出力

 

ステップ名 XML出力

 

  • ファイル管理コンポーネントをダブルクリックします。
  • 「追加」ボタンで「Write File」メソッドを追加し、右ペインで下記のように設定します。

ファイル管理コンポーネント

 

対象ファイル名 EnvVal (‘currentprojectdir’)&

‘Output\MyIssueList.xml’

エンコーディング Keep existing
データ C.UserBlob

 

  • フロー完成です。

フロー完成

 

【フローデバッグ】

  • ソリューションエクスプローラで「GET」フローを右クリックし、デバッグします。

フローデバッグ

 

【Magic モニタの確認】

  • Magic モニタで実行状況を確認します。

Magic モニタの確認

 

【ファイルの確認】

  • Outputフォルダに、MyIssueList.xmlが作成されていることを確認します。
  • メニュー > デバッグxpi > デバッグ停止でデバッグを停止します。

ファイルの確認