Mule Web Service Consumerを使ってみた

# はじめに
こんにちは、皆さん。今日は、一緒にMulesoftの Web Service Consumerについて掘り下げてみましょう！

 Web Service Consumerは、異なるプラットフォームや言語間でのシームレスな統合を実現し、SOAPベースのWebサービスを簡単に呼び出すことが可能です。

本記事では、Web Service Consumerを使用して、SOAP APIを呼び出す時に、その設定方法、使用例について紹介していきます。

では、始めます。
# 用途
Anypoint Connector (Web Service Consumer Connector) は、SOAP APIを呼び出して、外部ソースからデータを取得できるコンポーネントです。

# 使い方
## 接続についての設定
SOAP APIへ接続するため、Mule側は主に五つのパラメータが必要です。

**Web Service Consumer Config**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343120/2488a657-6d78-8c79-a317-8c7cd24dc9d4.png)
|  名前   | 型  |  説明   | 必須  |
|  ----  | ----  |  ----  | ----  |
| WSDL Location (WSDL の場所)  | String (文字列) | WSDL ファイルの URL (リモートまたはローカル)。  | ○ |
| Service (サービス)  | String (文字列) | サービス名。  | ○ |
| Port (ポート)  | String (文字列) | ポート名。  | ○ |
| Address (URL)  | String (文字列) | Web サービスのアドレス。  |  |

**Consume component**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343120/1d2a4972-e300-04ab-fcbc-b41f33691914.png)

|  名前   | 型  |  説明   | 必須  |
|  ----  | ----  |  ----  | ----  |
| Operation (操作)  | String (文字列) | 呼び出す Web サービス操作の名前。  | ○ |

出典：[Web Service Consumer Connector リファレンス - Mule 4](https://docs.mulesoft.com/jp/web-service-consumer-connector/1.6/web-service-consumer-reference#consume)

とは言え、そもそもWSDL、Service、Port、Address、Operationって、何？

## WSDL、Service、Port、Address、Operation
### WSDLとは？
SOAP APIのURL、パラメータのフォーマット情報などを記載されるドキュメントです。
Anypoint ExchangeにAPIのドキュメントと似ている感じ。

**構造**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343120/9cce77cf-4263-c8a2-128f-87cf0fe8ee5e.png)
参照：[Oracleホームページ](https://download.oracle.com/otn_hosted_doc/jdeveloper/1012/web_services/ws_wsdlstructure.html)

いくつか要素があるですが、今回はMuleの設定に使う要素に、集中して紹介していきたいと思います。

### definitions
WSDL文書のルート要素。

### service
機能を定義する要素。

### port

エンドポイントを定義する要素。binding要素と紐づく。

### binding

プロトコルを定義する要素であり、複数Operation要素のまとめ。

### operation

パラメータフォーマットを定義する要素。

### address

URLを定義する要素。
Web Service Consumer Configでは、WSDLの定義には不一致な値を設定することは可能です。

**service、port、binding、operation、addressの関係**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343120/663d08fa-4033-8034-3b1a-43e05e6630f1.png)
出典：[The Anatomy of WSDL](https://flylib.com/books/en/2.439.1.29/1/)


上記のように、Muleの「Web Service Consumer Config」と「Consume component」に適当な値に設定すると、SOAP APIへ接続はできているはずです。

# Web Service Consumerの使用例

今回パブリックのsoap api、[Number Conversion Service](https://www.dataaccess.com/webservicesserver/NumberConversion.wso)を呼び出して、
数字をアルファベットに変換する機能を実現してみます。

1.URLの末尾に`?wsdl`を追加することで、WSDLファイルを取得します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343120/8754a051-4624-ab46-f984-028a0b865996.png)

2.右クリックして、「名前を付けて保存」をすると、wsdlファイルがダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343120/2fc1b0be-c098-51ee-1b9e-c0bc01707857.png)

3.フローを作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343120/cd9ede9a-7580-374b-6255-271d8dd66999.png)

4.Scheduler​ 設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343120/96318af2-c84d-c5f5-0219-8eade945bcdd.png)

5.Set Variable​ 設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343120/34e1dfe6-0652-a1cc-d980-2c3e5174a166.png)

6.Transform Message​ 設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343120/fba1d065-8c66-4f31-4624-ee40e5858487.png)

7.Consume​ 操作設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343120/e5bff3cf-713e-b0eb-1de5-0e02f843931d.png)

8.Web Service Consumer Config 設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343120/29e22d9b-5b7c-b420-1d89-9c3ea741bd16.png)

9.Logger 設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343120/414791f7-06a9-6587-6b33-d8e873b1a142.png)

10.結果を確認、数字が変換されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343120/a37af3df-a936-4a38-84d4-a14af2af097e.png)

Demoリンク：
[number-conversion-service](https://github.com/qiguang-fang/mule-demo/tree/master/web-service-consumer/number-conversion-service)

最後までお読みいただきありがとうございます。気になる点があったらお知らせください。