HOME    BRMSブログ  No.28 ディシジョン・サービスのテスト方法

BRMS徹底活用ブログ

No.28 ディシジョン・サービスのテスト方法

2018.08.21 Progress Corticon

本エントリーは株式会社アシスト様が寄稿したエントリー(https://www.ashisuto.co.jp/product/category/brms/progress_corticon/column/detail/brmstech28.html)を転載したものとなります。

No.28 ディシジョン・サービスのテスト方法(2018年8月21日)

スクラッチ開発したプログラムやWEBサービス連携機能を持つ製品など何らかのクライアント側アプリからCorticon Serverにデプロイしたディシジョン・サービスを呼び出したときに、思ったような結果が返ってこないことがあります。
原因としては以下のようなパターンが考えられます 。

これらの原因の切り分けを行う際に、クライアント側アプリのデバッグ機能を利用したり、Corticon Server側のアクセスログやデバッグログを確認したりする手法が有効です。
しかし、特に上記の(2)の各項目のようなHTTPの詳細部分の切り分けに関しては、よりプリミティブな通信テストを行うことで、速やかに原因の特定と修正を行うことができることがあるため、柔軟なHTTP通信設定が可能な別のテストツール類の使用をお勧めしています。

今回の記事では、テストツールとして、Postmanを利用してディシジョン・サービスをテストする方法を紹介します。

[記事執筆環境]
Corticon 5.6.1

準備

Postman とは、様々な設定を行ったHTTPリクエストを作成しWebサーバーに送信することができる、Webアプリケーション開発者には有名なHTTPテストツールです。もともとはGoogle Chromeの拡張機能でしたが、現在はスタンドアローンのアプリケーションとして提供されています。

ここでは、 Postman を使用して、Corticon Server (Tomcat) にデプロイされたディシジョン・サービスに対して、XMLをPOSTするSOAPテストと、JSONをPOSTするRESTテストを行います。

テストの題材として、今回は、Corticon Studioにサンプルとして含まれているプロジェクト「OrderProcessing」、およびそれをCorticon Serverにデプロイしたディシジョン・サービス「ProcessOrder」を対象にします。(※)

  • Corticon Studioへのサンプルプロジェクトのインポート方法や、Corticon Serverへのディシジョン・サービスのデプロイ方法に関しては、本記事のテーマから逸れますので割愛します。

Corticon ServerにXMLをPOSTする(SOAP)

最初にCorticon Serverに送信するXMLデータを準備します。

ここでは、Corticon Studioのテスターの機能を使用して、ひとまず正しいXMLデータを取得しそれをテストに使用します。
まずは、Corticon Studioで、プロジェクト「OrderProcessing」のテスト「Order.ert」を開きます。

<Order.ertを開いたところ>

画像1

Corticon Studioメニューの「ルールテスト」/「テストシート」/「データ」/「入力」/「要求をSOAPでエクスポート」を選択し、任意の場所に任意の名前で保存します。
保存したXMLをテキストエディタで開き、4行目の「decisionServiceName="InsertDecisionServiceName"」となっている箇所を、Corticon Serverにデプロイしたディシジョン・サービス名に修正します。ここでは「decisionServiceName="ProcessOrder"」です。

<修正後のXML(抜粋)>

画像2

本来は、このXMLデータはクライアント側アプリケーションで動的に作成されると思われます。その場合は、この後の手順ではアプリケーションからXMLを出力して使用してください。

次に、Postmanを起動し、新しいリクエストを作成する画面を表示させます。

<Postmanの新規リクエスト作成画面>

画像3

「GET」の箇所を「POST」に変更し、「Enter request URL」の箇所に「https://localhost:8080/axis/services/Corticon」と入力してください。
(Corticon Server(Tomcat)がローカルホストの8080ポートで動作している前提です。)

その下の「Headers」タブで、Keyの箇所に「SOAPAction」、Valueの箇所に「urn:Corticon」という行を追加します

<メソッドとURL, Headersタブを設定したところ>

画像4

「Header」タブを「Body」タブに切り替えて、「raw」を選択し、作成したXML全行を貼り付けます。また「raw」の右側にある「Text」を「XML (text/xml)」に切り替えます。

<BodyにXMLを貼り付け、XML (text/xml)に切り替えたところ>

画像5

ここまで設定したら、URLの右側にある「Send」ボタンを押します。
もしリクエストをここまでの手順通りに正しく設定しており、Corticon Serverとディシジョン・サービス「ProcessOrder」が正しく動作していれば、以下のようにステータス200とレスポンスXMLが表示されます。

<ステータス200とレスポンスXMLが返ってきたところ>

画像6

もし、なんらかのエラーが発生し200番以外のステータスが返ったり、200番は返ってきたもののレスポンスのXMLがおかしい場合は、リクエストの内容を確認してください。
確認するポイントはURL, HTTPヘッダ, POSTするXMLデータです。
もしそれらを全て正しく設定していても、レスポンスがおかしい場合はCorticon Server側の問題である可能性があります。

Corticon ServerにJSONをPOSTする (REST)

XML (SOAP)のときと同様に、まずはCorticon StudioでJSONデータを作成します。
Corticon Studioで、プロジェクト「OrderProcessing」のテスト「Order.ert」を開き、メニューの「ルールテスト」/「テストシート」/「データ」/「入力」/「要求をJSONでエクスポート」を選択し、任意の場所に任意の名前で保存します。保存したJSONをテキストエディタで開き、1行目の「{」のすぐ下に一行追加して、その行に「"name":"DecisionServiceName",」を記述します。DecisionServiceNameはCorticon Serverにデプロイしたディシジョン・サービス名で、ここでは「"name":"ProcessOrder",」と記述します。

<修正後のJSON (抜粋)>

画像7

ここでもSOAPの場合と同様に、本来はクライアント側アプリケーションでJSONデータを動的に作成されると思います。その場合は、この後の手順ではアプリケーションからJSONデータを出力して使用してください。

次に、Postmanを起動し、新しいリクエストを作成する画面を表示させます。

「GET」の箇所を「POST」に変更し、「Enter re request URL」の箇所に「https://localhost:8080/axis/corticon/execute」と入力してください。
SOAPのときとはURLが異なる点に注意してください。

またSOAPのときとは異なりRESTの場合は「Headers」タブでパラメータを手動で追加する必要はありません。
そのまま「Body」タブに切り替えて「raw」を選択し作成したJSONの全行を貼り付け、「raw」の右側にある「Text」を「JSON (application/json)」に切り替えます。

<メソッドとURL,  BodyにJSONを貼り付け、JSON (application/json)に切り替えたところ>

画像8

ここまで設定したら、URLの右側にある「Send」ボタンを押します。
SOAPのときと同様に、もしリクエストをここまでの手順通りに正しく設定しており、Corticon Serverとディシジョン・サービス「ProcessOrder」が正しく動作していれば、以下のようにステータス200とレスポンスJSONが表示されます。

<ステータス200とレスポンスJSONが返ってきたところ>

画像9

こちらもSOAPの場合と同様に、なんらかのエラーが発生し200番以外のステータスが返ったり、200番は返ってきたもののレスポンスのJSONがおかしい場合は、リクエストの内容を確認してください。もしリクエスト内容を全て正しく設定していても、レスポンスがおかしい場合はCorticon Server側の問題である可能性があります。

なお、注意点としては、Corticonサーバーが受け取ることができるJSONデータの文字コードはUTF-8です。
Postmanでは自動的にJSONがUTF-8で送信されますが、後述する他のツールの場合は注意してください。

まとめ

今回の記事ではテストツールとしてPostmanを紹介しましたが、同様のHTTPリクエスト設定が可能なツールであれば、他のツールでもテスト可能です。
例えばLinuxの「 wget 」コマンドでもXMLやJSONを送信してディシジョン・サービスの実行が可能です。また、SOAPやRESTに特化したテストツールとして有名な、「 SoapUI 」でもディシジョン・サービスの実行が可能です。デバッグの際には、これらのツールを活用してみてはいかがでしょうか。

著者紹介

谷列樹さん

情報基盤技術統括部 プログレス推進部

以前は、Linux系のプログラマ兼SEとして、受託請負開発などに従事していた。
また、IT系雑誌や書籍の記事執筆などにも携わった経験をもつ。
現在は、BRMS Progress Corticonの技術サポート、研修などを行う。