(BluePrism)ポケモン図鑑を作る ~Part10 画像URLの作成とプロセス完成編~
おむおむです。
有給休暇取得なうです。
結局会社のSlackもメールも確認してるんだけどね☆
さて、前回はSlack Skillを使用して
Slackにメッセージを送信しました。
newgraduate19-rpa.hatenablog.com
今回は、タイトルの通り
ポケモンの画像のURLを作成して、
そのほか細かいエラーハンドリングなんかをテキトーに実装して
本処理を行うプロセスを完成させようと思います!
作成するURLの確認
さて、まずは作成するURLってなんだったっけ?
というところを再度確認していきます。
詳しい内容については、Part2の記事内でご説明した通りです。
newgraduate19-rpa.hatenablog.com
つまり、https://raw.githubusercontent.com/fanzeyi/pokemon.json/master/images/{ID}.png
のように
画像URLの文字列を作成する処理を実装しよう!
というのが今回のテーマです。
0パディングする
え?そんなの計算ステージとかで
テキトーに文字列結合すればいいんじゃないの?
と思うじゃないですかぁ?
甘い!
甘すぎる!
(埼玉県ネタ、実際は上品で優しい甘さです☆)
www.jumangoku.co.jp
URLの中で使用されているIDは、
3桁になるように0パディングされているのです!
というわけで、パディング処理を追加します。
パディングを行うには、
「Utility - Strings」の「Pad Left」を使用します。
入力パラメータについては以下の通り。
Input String: パディングされる文字列。 Target Width: 何文字までパディングするか。 Padding Character: パディングする文字。
今回の場合は↓のような感じ。
Input String: [ID] Target Width: 3 Padding Character: "0"
ちなみに、データアイテム[ID]は数値型であるため、
素直に右ペインからドラッグアンドドロップしようとすると
「テキスト型のところに数値型持ってくんじゃねえよ!」と怒られます。
ぴえん。
回避するには、直接キーボードで[ID]と打ち込むか、
もしくは電卓アイコンをクリックして表示される
式の選択(式エディター)でドラッグアンドドロップすると
エラーを出さずに指定することができます。
なお、出力パラメータにはちゃんとテキスト型を指定しないと
せっかくパディングした0がサプレスされるので注意です。
ちょちょいとエラーハンドリング追加
ここまでで作成した送信用テキストと画像URLを指定して
Slack Skillを配置すれば、実処理は終了です。
あとは、エラーハンドリングを少しだけ追加しましょう。
SQL Server操作編で、指定された名前のポケモンがDB上にいなければ
IDに0を返すということを利用して、
0だった場合Business Exceptionを出すよう変更しました。
newgraduate19-rpa.hatenablog.com
こいつを復元ステージでキャッチして、
Business Exceptionの場合と、
SQL Server側のエラー(そもそも接続できないなど)とで
処理を分けるようにします。
SQL Server側のエラーは「Internal(内部)」となるので、
どうやら例外タイプで分けるとよさそうです。
例外タイプは、Blue Prism側で用意されている
例外関数「ExceptionType()」を使うと取得できます。
こいつを使って、判断ステージ内で
ExceptionType()="Business Exception"
とすることで、
例外タイプがBusiness Exceptionかそうでないかの
分岐を作成することが可能です。
あとは計算ステージで送信メッセージを
いい感じに編集してあげればOKです。
そのほかのアクション(Web API側)のものは、
例えばPoke APIを提供しているサーバが停止する、
ネットワークの不調でリクエストに失敗するなどが
主に発生すると考えられます(めったにないとは思いますが)。
この辺は、出力パラメータとして
デフォルトで用意されている
HTTP Status Codeで分けよう、と思ったのですが、、、
あえてIDを不正なものにして404エラー出してみると
いやInternalエラーかいな。。。
正常終了してHTTPステータス吐いてくれや。。。
(Ideas Portalに上げようかな)
まあこの辺はしょうがないので、
Web API処理で発生したエラーはすべてキャッチして、
例外の詳細をSlackに投げてあげます。
例外の詳細は、先ほどと同様に
例外関数の「ExceptionDetail()」を使用することで取得できます。
こいつを使って送信メッセージを更新します。
最終的にはこんな感じのフローになります。
動かしてみよう
まずは正常系。
ポケモンはピカチュウを指定します。
ぃやったぜぇぇぇ!
いやー、やはり思った通りに動いてくれると嬉しいですね。
続いて不正なポケモン名を指定した場合です。
いい感じやーん。
最後に、Web API機能でエラーが発生した場合。
ふう、長い道のりでした。
まとめ
・例外関数、めちゃ便利☆
・プロセステンプレートでも多様されてるから要チェック!
・Slack側で問題が発生した場合のエラー処理?
そんなの知ったことか!これはただのおもちゃだ!
でかい風呂につかりたい。。。
お風呂カフェ行きたいな。
ofurocafe-utatane.com