見出し画像

(BizRobo)REST Web サービス呼出(Call REST Web Service)で呼び出しているロボットでバージョンアップに伴って呼び出し先のMCのURLが変更されてしまうことへの対処方法

※以下は2020-08-13に投稿したものです。

毎日暑いですね。
お盆は某北関東の田舎に帰省したかったのですが、コロナの状況もあって親戚からも今年はやめようと言われてしまったので私は横浜市内から一歩も出ないお盆です。

さて、BizRoboでv10.7.0.4がリリースされて少し経ち、バージョンアップを検討されている方もいらっしゃるかなと思います。

今回はREST Web サービス呼出(Call REST Web Service)を使用してロボットからMC上のロボットを呼び出して使用している方向けの記事です。
MCの設定とか諸々あるのでちょっと記事が長いです。
また、細かい設定方法等は割愛しているのでご容赦ください。

すでに使用されている方はご存じの通りですが、MC上にアップロードしたロボットはAPIで呼び出して使うことができ、ロボットにはREST Web サービス呼出(Call REST Web Service)のアクションステップが用意されているため、他のロボットか呼び出して使用することも可能です。

その際、呼出先のURLを指定しますが、そのURLには呼び出すロボットがアップロードされているMCやプロジェクト名も含まれているはずです。

さて、ここで問題があります。
BizRoboをバージョンアップした際、MCのURLを変更せざるを得ないことがあります。
ということは、APIでの呼出先のURLが変わってしまい、ロボットの改修を迫られる場合があります。

バージョンアップ後のMCを別端末上にするにしても同端末上にするにしても、新バージョンのMCに完全移行するまで旧バージョンのMCを維持しようと思うと、URLを全く同一にすることはできないわけです。
これまでの環境を破棄して一気に切り替えるのであれば理論的には可能ですが、何かあったときに前のバージョンに戻せなくなるので私はおすすめできません。

そんなとき、APIで呼び出しているロボットが数個であれば全て改修するのも大した手間ではないのですが、もしそうでなくてロボットが大量にあり、しかも変数を使わずにそのまま値を打ち込んでいたとしたら…。
私なら気が狂います(笑)

では、どうしたら良いのかというと、ロボットそのものを改修するのではなく、
ロボット外部の情報を書き換えることですべてのロボットへの対応が完了できるようにします。
その方が手間が少なく、その後の修正も容易になると思います。

方法は以下2通りあります。

①MCのPassword Storeに記録した情報を参照する
②Excel等の外部ファイルに情報を記載し、その情報を参照する

Excelを読むだけの②の方法の方が簡単ではありますが、
MCのログイン情報等もロボットで使用するので、それを平文でファイルに記載しておくのはセキュリティ上どうなのかということもありますし、せっかく用意された機能があるので①の方法を使用するのが良いかなと思います。

いずれにしろ、ロボット呼び出しのURL指定時に変数を使用することは避けられません。

ではやってみましょう。

パスワードストア情報入力

まずはMCのパスワードストアに諸々の情報を入れましょう

画像1
ターゲットシステム等の名前は分かりやすければ何でも良いです。
パスワード項目だからといってパスワード以外を入れてはいけないわけではありません。
任意の文字列を入力可能です。

パスワードストアから読み出し

ロボットで設定したパスワードストアを変数に読み出します。
パスワード取得(Lookup Password)ではPassword型変数のみ使用できますので、各変数はPassword型にするようにしてください。

画像2

上記はMCのログインパスワードを取得するためのステップです。
MCでアカウント管理している場合はAPI呼出時にユーザー名とパスワードを指定するのが必須になりますが、あまりパスワードをロボットそのものに埋め込みたくないため、MCから取得しています。
(MCのログインパスワードをMCから取得するのも考えてみると面白い)

先ほど取得してきたパスワードを使ってMCのURLを取得します。
MCにあなたのURLをこっそり教えてって裏で聞いている感じです。

画像3

REST Web サービス呼出設定

REST Web サービス呼出でURLの項目をエクスプレッションにして変数と文字列を組み合わせ、呼出用のURLにします。

画像4

あくまで例なのでプロジェクト名やロボット名等どこまで変数で持ってくるかとかはそれぞれ都合の良いようにするといいと思います。
プロジェクト名やロボット名もパスワードストアに記録して持ってきても構いません。

これで忘れずにクレデンシャルの情報を設定すればAPI呼出ができるはずです。

画像5

まとめ

今回のまとめはこんな感じです。

①MC上のパスワードストアにMCのURLを記録する
②ロボット内で使用するMCのURL部分は変数として持つようにする
③ロボットからパスワードストア機能でMCから情報参照する
④「Call REST Web Service」ステップでは③で参照したURLとロボット名等をExpressionで繋げて呼出先のURLにする

上記行っておくことで、MCをバージョンアップ後、MC上のパスワードストアの情報を書き換えることで、パスワードストアを参照している全ロボットのAPI呼び出し時の対象MCが変更される。

バックアップからのリストア時でもパスワードストアの情報は維持されるため、
パスワードアクセスエントリーを再設定する必要はない。

メリット

・MC移行時のロボットの設定変更が不要
・障害発生時の対処が容易
※バージョンアップ以外にもサーバ障害時の緊急対応やサーバ本体のリプレイスによりIPアドレスやホスト名が変更になった場合でも対処が容易

デメリット

・あらかじめロボットの設定変更が必要

パスワードストアの使用方法については以下ナレッジご参考ください。

■パスワードストアの使用方法
https://knowledge.bizrobo.com/hc/ja/articles/360045147832

他にも方法はあるかもしれないので、もしこんな方法があるよーというのがありましたらご教示いただけますと幸いです。

もしよろしければサポートいただければ大変励みになります!そして晩酌代になります!