DataSpiderでAgileWorksにつないでみた(2/2)（DataSpider設定編）

## はじめに
こんにちは！すぎもんです:grinning:

DataSpiderでAgileWorksにつないでみた、の第二弾になります。
[前回の記事](https://qiita.com/sugimon/items/cd147e06130231246025)で、AgileWorksのAPIを使う準備はできましたので、今回はDataSpider設定を進めていきます。

前回の記事↓↓↓↓↓
[DataSpiderでAgileWorksにつないでみた(1/2)（アドオン開発編）](https://qiita.com/sugimon/items/cd147e06130231246025)の続きになります。
引き続き本記事も、最後まで読んでいただけたら嬉しいです！

## DataSpiderの設定（POST実行処理）

新規でプロジェクトとスクリプトを作成します。
また、スクリプト内のロジックで使える「スクリプト変数」も作成します。
デザイナの上部メニューから[スクリプト変数新規作成]のメニューアイコンを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/9fd1aeaa-511a-4179-21d0-fccb3f8deda7.png)
スクリプト変数は下記の通りで2つ作成します。

　　変数名　：　`docId`
　　変数型　：　`文字列`
　　値　　　：　`20`（書類ID）　※前記事のAgileWorks設定参照

　　変数名　：　`formCode`
　　変数型　：　`文字列`
　　値　　　：　`keiyaku_form`（フォームコード）　※前記事のAgileWorks設定参照

次にDataSpiderのデザイナ右側にあるツールパレットから「ネットワーク」-「REST」-「post実行」のアイコンを、デザイナ上にドラッグ＆ドロップして設定画面を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/129919dc-0045-2204-5196-48c95e273a1b.png)

まず「必須設定」タブの設定です。接続先のテキストボックスを選択して、追加を選択します。この「接続先」は、RESTで接続する先のURLを設定することになります。「パス」の値は、「接続先」で設定したURLの後ろに付加され、最終的なendpointになります。

今回は以下のように設定しました。

　　名前　：　`AgileWorks接続用`
　　URL　 ：　`http://{AgileWorksServieBusサーバ}:7501/dss-test`
　　パス　：　`/testGetDocInfo/`

接続先の設定内の「接続テスト」を押下すると、入力されているURLがDataSpiderと通信ができるか、を確認することができます。OKであれば「接続先」が正しく設定されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/c5aa5057-741a-6fc1-e449-f536bd8bd25c.png)
下記のように設定しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/d3aaec79-3e83-d685-4dc0-a4eeaca25cb4.png)

::: note info 
「パス」の値は、APIの最終的なendpointの内、「接続先」に設定したURL値の後ろ（残り）の部分です。AgileWorksServiceBus（以降、ASB）設定で作成したサービスルートのコードになります。
:::

次に、「リクエスト設定」タブの設定は下記の通りです。

ここでは、クエリパラメータ以外のリクエストデータをどのように扱うか指定します。
ASBを介したリクエストは、クエリパラメータを使用せず、body部にJSONデータをセットします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/64548ed3-0641-02a5-0dfb-5885d411ea25.png)
最後に、「レスポンス設定」タブです。
ここでは、レスポンスをどのように扱うかの設定を行います。

今回は、レスポンスの内容を閲覧するだけなので、データ出力形式を「ファイル」にして、ファイルパスには、簡易的に「/data/agileworks_response.json」と設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/c351e674-a767-cb4a-3a99-406a99fe88d8.png)

:::note info
ファイルパスは、Dataspiderのdataディレクトリからの相対パスです。
:::
以上で、POST実行処理の設定は完了です。

## DataSpiderの設定（マッピング設定）
引き続き、マッピングの設定を行います。

DataSpiderのデザイナ右側にあるツールパレットから「変換」-「基本」-「マッピング」のアイコンを、デザイナ上にドラッグ＆ドロップします。下記のウィンドウが表示されますので、「プロセスフローとデータフローを引く」を選んでOKを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/fe58f896-1d49-6dc2-f89c-ac20ec0a1ca2.png)
マッピング設定画面を開き、作成したスクリプト変数「docId」と「formCode」を、Json形式でリクエストデータとしてマッピングします。

:::note info 
マッピング項目は、[前回記事](url)でAsbCallRequestModelの引数bodyからの取得対象「docId（書類ID）」と「formCode（フォームコード）」です。
:::

出力先のマッピング対象は、「execute_http_post」を右クリックして「ルート要素の追加」から属性及び子要素を追加して作成しました。スキーマファイルを別途用意して読み込んで設定も可能です。

マッピングは、スクリプト変数の「docId」を出力先の「execute_http_post」の「docId」にドラッグ＆ドロップします。スクリプト変数「formCode」も、同様です。
`スクリプト変数「docId」`と、`「execute_http_postのdocId」`
`スクリプト変数「formCode」`と、`「execute_http_postのformCode」`

最後に、「文字列定数」を使って、type属性へのマッピングをします。
ツールパレットから「文字列」-「基本」-「単一行文字列定数」をMapper内にドラッグ＆ドロップして、文字列定数「object」と「string」を作成します。

下記の通り、それぞれを線でつなぎます。
`文字列定数「object」`と、`「rootのtype属性」`
`文字列定数「string」`と、`「docIdのtype属性」`
`文字列定数「string」`と、`「formCodeのtype属性」`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/564516d9-c369-e71c-c951-24cec6eaabb2.png)
これでマッピング完了です。

## デバック実行
完成スクリプトはこちらです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/dce00031-9f63-06e2-5225-df0ee0ac2052.png)

デバック実行してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/169b0ce9-ba12-ca07-7911-4ddb998f36f7.png)

実行後に、DataSpider内のエクスプローラを開き、dataディレクトリを確認します。
「agileworks_response.json」が作成されていることが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/adb0fc51-ee7a-ec92-39ed-49d5c151d6e2.png)

中身に書類の情報が入っていれば成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/0d1485a5-4639-86e2-e28d-a6fd286423ff.png)


## 最後に
今回は、「DataSpiderでAgileWorksにつないでみた（DataSpider設定編）」でした。
前回記事[DataSpiderでAgileWorksにつないでみた(1/2)（アドオン開発編）](https://qiita.com/sugimon/items/cd147e06130231246025)の続きでしたが、皆さん、いかがでしたでしょうか？

今回は、REST接続をして書類IDなどの「条件を固定値」にして「書類情報を取得」しました。この条件をWebAPI側で「条件を変数値」にすることで、より汎用性のある連携が可能になりそうですね。
DataSpider設定編となる本記事の内容は、他サービスとのREST API連携でも参考になる内容だと思います！是非、皆さんの何かのご参考になれば幸いです。

今回やってみたPOST実行による「情報取得」は、まずは第一歩です。ワークフローの中には、ユーザー情報や処理の日時情報など、業務改善に使えそうな情報がたくさんあります。今回取得した情報以外の情報もDataSpiderのPOST実行で取得できます。
日々の業務の中に埋もれた情報を拾い上げ、その情報をどう「活用」していくかが重要であり、難しくもあり、一番の考えどころですよね。DataSpiderと繋いだその先の「データ活用」をどうするのか、是非ご自身の業務の中でもDataSpiderを試してみて体感してみてください。

関連して、DataSpiderの処理アイコンをどう使えばいいのか、そんなことがわかるTips記事も今後書いていきたいと思います！日々の業務で学んだり思いついた開発Tipsなどを今後も投稿していきます！

お読みいただきありがとうございました。それでは、また！