LoginSignup
2
2

More than 5 years have passed since last update.

【BluePrism】DBを活用したマスタ管理

Last updated at Posted at 2019-04-18

概要

UiPathでロボットを作っていたとき、「設定マスタ」ファイルをExcelであらかじめ用意しておき、
dictionary型の変数に格納して使い回していました。

BPの場合、dictionary変数は作れなさそうだったので、前述の方法は断念。

環境変数を使えばマスタ管理はできそうなのですが、
ロボットが増えたときに、環境変数が大量にできるのは避けたいなーとも思う。。。
(ロボットごとに環境変数をまとめておくだけなら、命名規則で解決すると思います)

非エンジニア向きではないですが。。。
今回はSQLServerにマスタを作って管理する方法を試したいと思います。

SQL Serverにマスタテーブルを作る

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

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

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

余談ですが、以前ロボットの稼働実績をまとめた統計資料を作る際に、
BPの各テーブルのデータを参照して、SQLでいい感じの統計データを抽出してましたw
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

BPからSQL Serverに接続する

今度はBPから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についての知見を深めることをおススメします。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2