ライセンス情報とは
これをExcelに保存できないかなーというお話。
手でコピペ…… まあたくさんあるわけでもないし手作業でもいいっちゃいいけど、いちいち手でやるのはめんどくさいしダサいよね……。
どこから取得できるの
BPALicenseテーブル、ライセンス情報があるのはlicensekey列です。
値はBase64エンコードされています。
これをデコードするとライセンス情報をXML形式で取得できます。
つまり
BPALicenseテーブルから情報を取得
↓
デコード
↓
XMLをバラす
という手順。
BPALicenceテーブルから情報を取得
BPのDBは普通のDBです。
つまりSSMSとかで普通に扱えるやつ。
ということは、OLEDB VBOでSQL文を投げてやればオッケーです。
OLEDB VBOは標準VBOです。
OLEDB自体の解説は、良いのがあちこちにあるので、それを読んでください。
- BP社公式note 大容量データを扱う
- UniversityのOLEDB講座 Blue Prism® Further Developer Learning
- DXにユーザーガイドPDFが載ってます Data - OLEDB - 10.1.0
OLEDB VBOの「Get Collection」アクションで投げるSQL文は
SELECT licensekey FROM [DB名].dbo.BPALicense
戻り値の型はCollectionです。
SELECT * でテーブルが全部まるっと取得できる……こともありますが、特殊なデータ型(System.Guid)になっている列がある場合は取得できず、エラーになってしまいます。
このBPALicenseテーブルもそのクチです。
なので、ほしい列名を明示して取得するほうが手堅いようです。
Guid型の列であっても取得したい(たとえばプロセスIDなどがそうです)場合は、ただ列名を書くのじゃなくて、こう書けば取得できます。
Guidは36文字なので、Charだと桁数が足りません、なので文字数を明記してあげます。
cast(Processid as Char(36)) as Processid
デコード
取得した値をデコードします。
デコードは、DXにVBOがあります。ユーザーガイドとサンプルプロセスもそこに置いてあります。
Utility - Encode Decode
サンプルプロセスを参照して、「Base64 Decode」ステージをコピペして使用してください。
戻り値の型はText。XML形式で取得できます。
XMLをバラす
XMLのままだと可読性もアレだし項目が分かれていないと使いづらいので、Collectionの形に整形します。
XMLをコレクションにするのはDXにあります。サンプルプロセスとユーザーガイドもこちらに。
Utility - XML
整形の手順はだいたいこんな感じ。
- 「Get Child Elements」アクションで、まずXMLの行をバラします。
- 値がカラでないかを検分します。カラだったら当該行は捨てます。
・バラした行に「Strip Tags」アクションを使って、タグを除いて本文だけにします。
・本文のLengthが0だったらその行はカラ。 - バラした行に「Get Element」アクションを使って「Name」「Value」を取得。
- 「Name」が見出し(タグ名)、「Value」が値です。出力用Collectionに追記します。
- (オプション)出力用Colletionは「Name」「Value」の2列で作成してあるので、1行Collectionのほうが扱いやすいなら転置します。
※転置は、DXにある 日商エレクトロニクスのすごいやつ の「NEO - コレクション」VBOの中に、転置のアクションがあります。
取得したCollectionをExcelに書き出す
あとはCollectionで有効なライセンスだけ選別するとか、必要な項目だけにするとかしてからExcelに書き出すと、だいたいこんなようなExcelが取得できます。
終わりです
DXマジでたいていのものはあります。
なくても近いものを拾ってきて改造すれば、ゼロから作るより断然ラク。
こういう機能ないかなーと思ったらまずDXを捜索はマスト。検索機能クソだけど頑張れば見つかる。
それでもなかったらIdea Portalに投稿しておきましょう。BP社の中の人がどうにかしてくれるかも。
Idea Portal