DBを使ったマスタ管理

  実装テクニック

今回はSQLServerにマスタを作って管理する方法を試したいと思います。

SQL Serverにテーブルを作る

Microsoft SQL Server Management Studio(以下、SSMS)を起動します。

image.png

「サーバー名」をメモしておきましょう。BPから接続するときに使います。
※今回はWindows認証で接続する前提で進めます。

image.png

Blue Prismのテーブル一覧の一部です。
ビューも含めると160~170くらいでしょうか。

image.png

「データベース」を右クリックし、「新しいデータベース」をクリックします。

image.png

データベース名はbpmasterとしておきます。

image.png

bpmasterが作成されました。

image.png

bpmasterにテーブルを作ります。

本当は、どのロボットのマスタなのか分かるように、
命名規則を定めてテーブル名を定義するのが良いのですが。。。
今回は分かりやすくm_settingというテーブルを作ることにします。

「データベース」を右クリックし、「新しいクエリ」をクリックします。

image.png

クエリウインドウに以下SQLを書き、「実行」ボタンをクリックします。

image.png
create table m_setting (
    name nvarchar(128) not null
  , description nvarchar(max)
  , value nvarchar(max)
  , primary key (name)
);

m_settingテーブルが作成されました。

image.png

今度はデータを入れてみましょう。
クエリウインドウに以下SQLを書き、実行ボタンをクリックします。

insert into m_setting (name, description, value) values ('test', 'testtest', 'sssss');

m_settingテーブルを右クリックし、「上位1000行の選択」もしくは「上位200行の編集」をクリックします。

image.png

データが投入されたことが確認できました。

image.png

Blue PrismからSQL Serverに接続する

今度はBlue PrismからSQL Serverに作ったm_settingテーブルの
マスタデータを参照する実装です。

DBへの接続を確立した後、SQLを発行してデータを抽出するという流れになります。

image.png

DB接続系のオブジェクトは「Data – SQL Server」を使います。
アクションは「Set Connection」ですね。

「DB接続」アクションで行う設定は以下の通りです。

Server:SSMSの起動時にメモした「サーバー名」
Database:”bpmaster”
User:(Windows認証のため空欄)
Password:(Windows認証のため空欄)

image.png

「select」アクションで行う設定は以下の通り。
使うアクションは「Get Text」もしくは「Get Collection」です。
今回は取得するデータが1つのみなので、Get Textを使います。

image.png

発行するSQLですが、WHERE句に指定するパラメータは必ず変数化しておきましょう。
※今回は簡略化のため直書きにしてます。

"SELECT value FROM m_setting WHERE name = 'test'"

実行結果

DBから値が取れていることが確認できました。

image.png

Get Collectionを使った場合

image.png

複数行・列でもコレクションとして取得できています。

image.png

まとめ

DB接続時の接続NGの場合やデータが0件だった場合などの
エラーハンドリングはきっちり実装するとして、DBがある程度分かる人であれば、こういうやり方もアリかもしれないです。

以前、大量のデータをコレクションに格納していたため、処理途中で固まってしまったことがありました。
ワークテーブルに一旦データを退避させ、ちょっとずつデータを引っ張り出して処理する方法に変えたらうまく動いたことがあります。

マシンのスペックにもよりますが、コレクションデータ数が10000~20000件くらいで発生した記憶があります。

マスタ管理や大量データの扱いなど、DBを活用することで解決できることも多いと思いますので、DBについての知見を深めることをおススメします。

LEAVE A COMMENT

CAPTCHA