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 |
リソース名 | RedmineBasicAuth |
- 右ペインにて、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項目名が読み込まれます。
※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し、プロパティペインで名前を下記のように修正します。
【送り元の設定】
- 送り元のプロパティを下記のように設定します。
変数名 | 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を選択し、プロパティペインでステップ名とリソース名を設定します。
ステップ名 | POST送信 |
リソース名 | RedmineBasicAuth |
【エラーコードの自動追加】
- REST Clientコンポーネントはxpiのコネクタビルダを使用して作られています。
- コネクタビルダで作成されたコンポーネントをはじめてプロジェクトに配置する際、エラーリポジトリにそのコンポーネントのエラーコードが自動的に追加されます。
【コネクタビルダ】 xpiの標準コネクタ以外に、ユーザ独自のコネクタを開発することができる機能UIの開発は.NET、ランタイムの開発は.NET、Java、Magic xpaのいずれかを選択可能 |
【REST Clientコンポーネントの設定】
- REST Clientコンポーネントをダブルクリックし、REST Client構成画面を開きます。
- 下記の通り設定し、「OK」ボタンを押します。
パス | /redmine/issues.json |
オペレーション | Post |
リクエスト Content Type | application/json |
要求エンコーディング | UTF-8 |
結果保存 | Variable (C.UserBlob) |
ステータスコード | C.UserCode |
メッセージ | C.UserString |
【リクエストJSONの設定】
- RequestBodyのDataBlobに変数「C.リクエストJSON」を設定します。
【REST Clientコンポーネントの画面遷移】
- REST Clientコンポーネントは初回設定時と、2回目以降の設定時で画面遷移が異なります。
【結果をMagicモニタに出力】
- ツールボックスからメッセージ保存をREST Clientの下にDrag&Dropします。
- メッセージ保存を選択し、プロパティペインでステップ名を設定します。
ステップ名 | 結果をモニタに出力 |
【結果をMagicモニタに出力】
- メッセージ保存コンポーネントをダブルクリックし、下記の通り設定します。
- フロー完成です。
【Redmineのチケットの確認】
- xpiフローを実行する前に、Redmineのチケットを確認しておきます。
- Windowsのスタートメニュー > Bitnami Redmine Stack > Launch Bitnami Redmine Stackをクリックし、表示された画面の「Access Redmine」リンクをクリックします。
- 右上の「ログイン」リンクをクリックし、プロジェクト管理者としてログインします。
ログインID | xpi |
パスワード | password |
- 左上の「プロジェクト」リンクをクリックし、表示されたページの「チケット」タブをクリックします。
- チケットが登録されていないことを確認します。
【デバッグ実行】
- メインフローである「CSV読込」フローのプロパティ「自動起動」を「Yes」に設定します。
- メニュー > デバッグxpi > デバッグ開始をクリックします。
【Magic モニタの確認】
- Magic モニタで実行状況を確認します。
【Redmineのチケットの確認】
- Redmineのチケット一覧をリロードし、チケットが登録されたことを確認します。
【デバッグ停止】
- メニュー > デバッグxpi > デバッグ停止でデバッグを停止します。