Blue Prismの環境構築を0からやってみる

# はじめに
Blue Prismの導入方法について、0から実運用を意識した環境構築手順をガイドした記事があまりなかったため、今回まとめてみました。
簡単なプロセスをスケジュール実行するところまでの手順を解説しています。
ある程度、ベストプラクティスに沿って実際の運用に近い形でまとめていますので、これからBlue Prism導入を検討されている方の参考になるかと思います。

# 目次

1. Blue Prismをインストールする（今回はトライアル版を使います）
2. `Blue Prismサーバー`を構成し、起動する
3. `ランタイムリソース`（以下、RR）を起動する
4. サンプルのプロセスをインポートする
5. `認証情報`を設定する
6. `スケジュール`を設定する
7. スケジュールを起動する

# 1. Blue Prismをインストールする
以下サイトより、Blue Prismのトライアル版のインストーラーをダウンロードし、インストールします。
Blue Prismポータルにアクセスするにはユーザー登録が必要です。
（記事執筆時点ではv7.1.2が最新版です）
https://portal.blueprism.com/products/trial
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/0a019d81-634d-c7b0-9f23-c5b93f045f64.png)

`言語を選択`ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/fd19f454-aceb-089a-2cb5-31cd23ab4dbb.png)

言語を`日本語`に設定。変更して続行ボタンをクリック
元の画面に戻り、`開始する`ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/511ef52e-bc43-3fc0-1026-f787dab455ea.png)

`ライセンス契約の条件に同意します。`にチェックを入れて、`次へ`ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/0ebb2010-b9c4-6016-3858-40c8ff223cfd.png)

デフォルトの設定のまま、`インストール`ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/48a4a8a7-1ff5-b04b-f2ed-a74e16e3ad53.png)

インストールが始まります。
ユーザーアカウント制御のダイアログが表示されるので、`はい`ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/3a7b913d-17f2-4252-375e-d6ea0f700b7a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/3a3be12c-83a6-0f23-43d6-5fbfbf895aac.png)

しばらくすると、インストールが完了します。
`インストーラーを終了してBlue Prismを起動する`ボタンをクリックしましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/274bd1ea-49c5-1b21-d46a-40c656b2c5aa.png)

Blue Prismのログイン画面が表示されます。
初期ユーザー名とパスワードはともにadminですので、パスワードは適宜変更しておきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/468c2b13-f233-19cd-bcb4-c6d908a331cf.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/c9f94753-93c5-431a-2c2f-c2f083873c4f.png)

パスワードの変更が完了すると、ライセンス認証を求められます。
ポータルのユーザー登録にて登録したメールアドレス宛にライセンスファイル（拡張子が`.lic`のファイル）が添付されたメールが届いているはずなので、そのファイルをアップロードしましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/a37a5d5c-19c9-0efd-670e-61e368fbfb15.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/5f9627aa-7db6-34d5-a873-420dee99691e.png)

正常にアクティベートされると以下の画面になるはずです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/adf5c798-ff62-508e-27f7-9b3f2419381c.png)

これで設定は完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/b1fb2bf7-4a60-6f85-077b-c300b9ed656d.png)

もろもろガイドが出てきますが、`次へ`ボタンで読み飛ばしましょう。
最後のページの画面左下のチェックボックスにチェックを入れると、次回からガイドが表示されなくなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/49e7354b-089d-bd85-2cc4-8b229573d042.png)

Blue Prismの`ホーム`画面が表示されていることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/a4f76f8b-c127-c24b-4510-3a427e93122b.png)

## 1-1. 標準VBOをインポートする
Blue Prismはプロセスからオブジェクトのアクションを呼び出し、繋げていくことでフローを構成します。
オブジェクトは自作することもできますが、Excelなどのファイル操作、ワークキュー、コレクションの操作といった、よく使う基本的な処理を構成する`標準VBO（Visual Business Object）`と呼ばれる部品群があります。
開発前に事前にこれらのオブジェクトをインポートしておきましょう。

画面左上の`ファイル`タブをクリックし、`インポート` > `プロセス/オブジェクト`を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/b83ddb4c-44c4-2a63-1814-b0950a82a0a8.png)

`参照`ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/5727a261-eac6-2fe4-aeac-0daf33bd8952.png)

`C:\Program Files\Blue Prism Limited\Blue Prism Automate\VBO`直下の各XMLファイルを全選択し、`開く`ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/da3873c6-71ee-9cbc-fc97-608958f05e06.png)

`次へ`ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/e9d505df-0cc0-56df-5334-056e3973f80c.png)

プロセスログの概要画面が表示されるので、`次へ`ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/0ceb7f8f-e3de-cf25-e07c-c11ffd39dc4f.png)

全ての標準VBOがインポートされました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/1fe1a363-55d2-993e-f6c1-a7fb526b3ce1.png)

`終了`ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/4373504a-9f01-57ef-a8ac-b7971bb3e9ba.png)

`スタジオ`タブをクリックし、画面左のオブジェクトツリーから`Default`という名前のグループをクリックすると、標準VBOがインポートされていることが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/188840ae-70f6-29c0-8734-4d03e453ba4e.png)

# 2. Blue Prismサーバーを構成し、起動する
1.でBlue Prismをインストール後、ログイン画面で接続先を設定する箇所があったのですが、デフォルトの`LocalDB Connection`にしていたと思います。
Blue Prismはほぼ全ての情報をデータベース上で管理しているのですが、`LocalDB Connection`はそのデータベースに直接アクセスしていることを指します。（別のデータベースを構成し、そこにアクセスするよう変更することもできます）
ただし、この方式だと`認証情報`、`スケジュール`といった機能が使えません。
`認証情報`（対向システムへのログイン情報などセキュアな情報の格納領域）を暗号化するための暗号化キーが`Blue Prismサーバー`（以下、BPサーバー）上に保存されるためであり、`スケジュール`機能はBPサーバーサービス上で実行されるためです。

参考：https://bpdocs.blueprism.com/bp-7-1/ja-jp/helpBPServer.htm
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/74486328-1d16-fe4e-0661-a85de143febd.png)

では、BPサーバーを構成し、サービスを起動させてみましょう。

まず、BPServer.exeを起動します。
`C:\Program Files\Blue Prism Limited\Blue Prism Automate\BPServer.exe`

起動すると以下のような画面が表示されます。`新しい構成`ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/4bb10abd-96ce-6ea5-08a7-3fccefb2b347.png)

`詳細`タブ内にて、各項目を以下のように設定します。

| 項目名 | 値 |
|:-----------|:------------|
| 名前       | Default     |
| データベース接続     | LocalDB Connection      |
| 接続モード       | WCF:安全でない        |
| ホスト名またはIPアドレス       | 自端末のIPアドレス（※）       |
| ポート    | 8199     |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/4047bc0d-f476-fecf-2871-28e907e0d624.png)

次に、`キー保存`タブをクリックし、画面右上の`新規`リンクをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/9f8c0c1e-6ad5-d786-14b5-6dc9f97e3a53.png)

暗号キーの詳細画面にて、以下のように入力してください。
`キーを生成`リンクをクリックし、暗号化キーを生成しておきましょう。

| 項目名 | 値 |
|:-----------|:------------|
| スキーム名       | Default Encryption Scheme（※）     |
| メソッド     | AES-256 AesCryptoService(256 bit)      |


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/04c3bc60-9468-6b61-00a3-e5977c9f6b73.png)

（※）スキーム名は、IC（Interactive Client：インタラクティブクライアント＝開発やリソース監視を行うPCのこと）で定義された暗号化方式の名前と一致させてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/40897909-095d-f347-f923-46cc68f5e53e.png)

ここまで設定したら、画面下部の保存ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/04ce5783-96f1-793d-f85a-21c987bece8f.png)

画面下部の開始ボタンをクリックし、BPサーバーサービスを起動させます。
"Scheduler: Waiting forever"などと表示されたら起動成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/2ba6194b-4982-efc1-5503-c7a1b5921f92.png)

Blue Prismの画面に戻り、一度サインアウトしましょう。
ログイン画面にて、`接続構成`リンクをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/83a52806-d7b8-98c0-6176-251845612815.png)

画面下部の`新しい接続`ボタンをクリックし、`現在の接続`欄を以下のように設定します。

| 項目名 | 値 |
|:-----------|:------------|
| 接続名       | BPServer    |
| 接続タイプ     | Blue Prismサーバー      |
| Blue Prismサーバー        | 自端末のIPアドレス（※1）        |
| 接続モード       | WCF：安全でない（※）       |
| サーバーポート    | 8199     |

（※1）BPサーバーとして扱う端末のIPアドレスを入力してください。今回はBPサーバーとRRを同端末にしていますが、分けるのが一般的です。
（※2）`接続モード`はBPサーバー構成時の接続モードと同じものを選択してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/0ff41cfe-01b9-9736-f19d-ab6da2afc1b2.png)

テスト接続ボタンをクリックし、以下のように接続が確認できればOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/e5f34f15-bab5-cdd4-a544-5d2ec2ac7a60.png)

ログイン画面に戻り、接続先を"BPServer"としたときにユーザー名、パスワードの入力欄が活性化していれば接続OKです。
それぞれ入力し、ログインができることを確認しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/5d751dac-45df-e6f2-449f-af4ec92b7d3a.png)

# 3. ランタイムリソースを起動する
実際に作成したプロセスを稼働させるためのリソースのことを`ランタイムリソース`と呼びます。
Blue PrismをリソースPCモードで起動させることで、その端末をRRとして扱うことができます。

リソースPCモードで起動させるためには、Automate.exeを特定のスイッチで実行させればOKです。
ちなみにAutomate.exeやAutomateC.exeの各種スイッチを用いることで、コマンドラインでBlue Prismの様々な操作を行うことが可能です。
参考：[コマンドラインオプション](https://bpdocs.blueprism.com/bp-6-7/ja-jp/helpCommandLine.htm?tocpath=Blue%20Prism%E3%81%AE%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%82%A4%E3%82%B9%7C%E4%B8%8A%E7%B4%9A%E8%80%85%E5%90%91%E3%81%91%E3%83%88%E3%83%94%E3%83%83%E3%82%AF%7C_____2)

以下のようなソースのbatファイルを作っておき、スタートアップフォルダに配置しておきましょう。
```bat:runtime_setup.bat
@echo off
echo %~dp0

rem Automate.exe起動（ランタイムリソース初期設定）

echo "Automate.exeをPublicオプションで起動します。"
start "" "C:\Program Files\Blue Prism Limited\Blue Prism Automate\Automate.exe" /resourcepc /public /dbconname "BPServer" /port 8181
exit
```

エクスプローラを開き、`shell:common startup`と入力してスタートアップフォルダを開きます。
ここに先ほどのbatファイルを配置すると、どのユーザーがWindowsにログインしても必ずbatが起動します。
また、特定のユーザーがログインしたときのみbatを起動させたい場合は、そのユーザーでログイン後、エクスプローラにて`shell:startup`と入力後に表示されたフォルダにbatファイルを配置してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/df6d138b-da91-7f59-5c1b-37bb80b55e45.png)

batファイルを実行すると、以下のようなウィンドウが表示されます。
"Listener started."と表示されたら、リソースPCモードでの起動成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/a84ef398-8bbe-74bd-1f86-96c2287d4bdb.png)

# 4. サンプルのプロセスをインポートする
サンプルプロセスをインポートします。
`Code`ボタンの`Download ZIP`でリリースファイルをダウンロードしてください。
https://github.com/kktrip/testcrm
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/18c4b62d-3288-6745-5d20-0b64d2e26db8.png)

`ファイル`タブ > `インポート` > `リリース/スキル`を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/6995023a-d401-eb59-c141-65bba16a20a9.png)

ダウンロードしたリリースファイルを選択し、インポートします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/37c124d5-11b1-3266-007d-3d903b197249.png)

プロセスツリーにて`TestCRM`グループ直下に`TestCRM_ログイン`プロセス、オブジェクトツリーにて`TestCRM`グループ直下に`01_TestCRM_ログイン`オブジェクトがあればOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/ae060840-f1cf-80d3-d2d1-d2050cce4e74.png)

# 5. 認証情報を設定する
`認証情報`とは、対向システムへのログイン情報などセキュアな情報を指し、Blue Prismではそのような情報を暗号化してデータベースに保存しています。認証情報には許可されたユーザー、リソースのみアクセスすることができます。

4.でインポートしたサンプルプロセスでは、テスト用のサイトにログインする処理がありますので、認証情報にログイン情報を設定していきましょう。

`システム`タブ > `セキュリティ` > `認証情報`をクリックし、画面右上の`新規`リンクをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/8049b734-2c84-d132-223d-2c8270954e73.png)

認証情報の詳細画面にて、以下のように設定します。

#### アプリケーション認証情報
| 項目名 | 値 |
|:-----------|:------------|
| 名前       | RRの端末名（※）    |
| ユーザー名     | 任意（今回は使用しません）      |
| パスワードを入力        | 任意（今回は使用しません）        |

（※）端末名は、コマンドプロンプトで`hostname`と打つと確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/2e001b63-6c34-6965-ca70-87c68d907398.png)

##### 追加プロパティ
値はマスクされた状態で表示されますが、以下のように入力します。
| 名前 | 値 |
|:-----------|:------------|
| TestCRM_ログインユーザー名       | guest       |
| TestCRM_ログインパスワード    | guest     |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/70d89019-7587-dea4-c2ad-26dbe19aa49a.png)

#### アクセス権

##### セキュリティの役割
認証情報にアクセスできるユーザーロールを指定します。
`すべてのロール`にチェックを入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/9204c203-30a3-43db-6904-df9906de3fdf.png)

##### プロセス（レガシー）
認証情報にアクセスできるプロセスを指定します。
今回は`すべてのプロセス`にチェックを入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/d7070b54-5395-d1af-310e-c2456e123d51.png)

##### リソース（レガシー）
認証情報にアクセスできるリソースを指定します。
今回は`すべてのリソース`にチェックを入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/772a39c6-27c0-0a53-6356-3f404481a24f.png)

これで認証情報の設定は完了です。
プロセスから認証情報にアクセスできるかテストしてみます。

`開始`ステージを選択し、右クリックします。メニューから`このステージを「次のステージ」とする`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/9270b6fc-7e51-b022-e86b-0e6307acf8f5.png)

`F10`キー、もしくは画面左上の`ステップオーバー`ボタンでステップ実行していきます。
`Utility - Environment::Machine Name`アクションで端末名を取得後、認証情報の`プロパティ`を取得するアクション（ログインユーザー名取得、ログインパスワード取得）と続いているフローとなっています。
認証情報名がRRの端末名となっている認証情報のプロパティを取得する処理なのですが、正しくユーザー名とパスワードが取得できていればOKです。プロパティ値はマスクされた状態（パスワード型）で取得されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/7142bb2f-f2da-0914-977b-c02ea454603d.png)


# 6. スケジュールを設定する
Blue Prismの`スケジュール`は`タスク`で構成されています。
`タスク`ではプロセスを稼働させるリソースの設定、次に行うタスクの設定などを設定します。
それらのタスクを束ねている`スケジュール`にて、いつそれらのタスクを実行するかを制御するための設定を行います。

インポートしたサンプルプロセスについて、実行スケジュールを設定していきます。

`コントロール`タブ > `スケジュール` > `New Schedule`をクリックし、名前を"TestCRM"に変更します。
直下の`New Task`も名前を"TestCRM_ログイン"に変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/a4880ed4-5e27-f9ee-e052-b0114f2615ef.png)

`利用可能なプロセス`欄にある"TestCRM_ログイン"を選択し、`利用可能なリソース`に表示されているリソース（3.にてRRとして設定した端末）にドラッグ＆ドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/55a57049-4030-53f1-90bb-08ad6a7c4656.png)

画面下部の`スケジュールされたセッション`欄に1行追加されました。
プロセスとリソースの紐付きに間違いがないか確認しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/8c965b38-8240-839c-053d-981163c6fbea.png)

最後に画面左下の`変更を適用`ボタンをクリックして、設定を保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/e75495a6-d482-4d48-0a07-c8b7947fbc3b.png)

# 7. スケジュールを起動する
6.で設定したスケジュールを実際に動かしてみましょう。
スケジュールは定期的に実行するよう設定することもできますが、即時実行させることもできます。
取り急ぎ、スケジュールが正しく実行されることを確認するため、`コントロール`タブ > `スケジュール` > `TestCRM` を右クリックしてください。
メニューから`今すぐ実行`を選択し、スケジュールを実行させてみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/6d88f978-c90a-1136-483d-25dd22ede3d6.png)

テスト用のサイトが開かれ、認証情報に登録されたログイン情報を用いてログインを行った後、数秒待機して自動的にブラウザを閉じるという一連の処理が実行されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/2375f3e2-cbf0-fd70-3c40-5cb233409955.png)

コントロールルームの画面下部の`環境`に、実行されたプロセス、リソースの情報や実行ステータスなど、スケジュールの実行状況が表示されます。正常に完了すると、`状態`列に完了と表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/59bdf3e6-e672-b31b-634e-04b86341bb28.png)

# 最後に
今回はBlue Prismの実行環境を0から作ってみました。
PoCレベルだとBPサーバーは構築せずに簡易的な環境に留まることが多いのですが、今回の記事では実用的な手順で環境構築しています。
ぜひ参考にしてみてください。