見出し画像

【BizRobo!】我流!仕様書作成ロボ(未完)

以前作成した仕様書作成ロボットが。
日の目を見ることなく封印されることが確定したので、その前に少しだけ。
大したものではないですが。ちょっとしたログ?として残したいと思います。
(本投稿は下記アドベントカレンダーの参加記事です)

https://qiita.com/advent-calendar/2021/rpa

1.作成経緯

そもそもどうして作成したかというと。
BizRobo!自体はサクラエディタ等で開くと下図のようになっております。
時折サクラエディタ側で修正をすることがあったので、
勉強の一環で中身を知りたい!という思いと。
変わったロボットを作りたいという思いと。
あとは、仕様書作成とか面倒だなぁという思い。
以上から、作ってみました。

画像2

※ロボットファイルをDSを使用せずに編集することは推奨されていません。
今回は特別、ロボットの上書き保存はしませんが、動作保証外なはずなので、編集する場合はBackUpファイルを作成したうえで、編集後のロボットの動作については自己責任でお願いします!

2.作成内容

画像1

作成したのはロボットのコメントと、Typeファイル以外のローカル変数情報の取得です。(ただ、ロボットのコメントなんてあんまり使わないなぁって作ってから思いました……)

Ver.11からは(DAロボットができたため)ロボットの内部構成が変わって
いるのと、仕様書作成機能がMCにできる?という噂を聞きつけたため、
本投稿はきっと古のロボットの投稿となることでしょう……

3.本ロボットから学んだこと

ロボットでロボットを読み込むということをする変な思考ではありますが、ただ、こうゆうことからロボットの構造だったり、あとはLongText型の変数から情報を抜き出す方法だったり。試行錯誤することができたのが成果かなと思います!
以前から「遊び用のロボット」をつくることで楽しく、でも得ることがあるなぁと思っているので。どのツールでも、こうゆう好奇心?からの発見は大事だと思います!

……という雑な締めで終わります!
変な思考に興味のある方だけ、以下を見ていただければ……

4.雑記

中身に少し。ロボットにおけるロボットのローカル変数の情報取得について触れていきます。
だいぶ前(Ver.10.4)につくったので、自分も思い出しながら書いてます。
あと、あくまで我流なので。正しいとは限りません。

画像3

画像4

ロボットファイルをXML形式で開き、<property name="variables" class="Variables>…<\property>をlongText型の変数に入れまして。
</object>で区切って変数1つずつの情報を抽出します。

<property name="variables" class="Variables">
 <object class="Variable" serializationversion="1">
   <property name="name" class="String" id="0">変数1</property>
   <property name="initialAssignment" class="InitialVariableAssignment">
     <property name="type" class="SimpleTypeReference" id="1">
       <property name="simpleTypeId" class="Integer">12</property>
     </property>
   </property> 

上記のような情報になっています。
"simpleTypeId"を抽出して、変数の型を取得します。
※ちなみに12はshortTextになります

  <object class="Variable" serializationversion="1">
   <property name="name" class="String" id="2">変数2</property>
   <property name="initialAssignment" class="InitialVariableAssignment">
     <property name="type" idref="1"/>
   </property>

"simpleTypeId"がない場合は"idref"の値を抽出し、他の変数情報も確認。
"SimpleTypeReference"に記載のある"id"と一致する変数があるか確認します。
※今回の場合、変数1の"SimpleTypeReference"の"id"と一致するので、変数2の変数の型はshortTextになります

 <object class="Variable" serializationversion="1">
   <property name="name" class="String" id="5">変数3</property>
   <property name="global" class="Boolean">true</property>
   <property name="initialAssignment" class="InitialVariableAssignment">
     <property name="type" class="SimpleTypeReference">
       <property name="simpleTypeId" class="Integer">13</property>
     </property>
     <property name="assignments" class="AttributeAssignments">
       <property name="value" class="AttributeAssignment">
         <property name="attributeValue" class="String">初期値</property>
         <property name="currentlyAssigned" class="Boolean">true</property>
         <property name="lastKnownAttributeType" class="java.lang.Class">kapow.robot.plugin.common.domain.TextAttributeType</property>
       </property>
     </property>
   </property>

<property name="global" class="Boolean">true</property>がある場合は、グローバル変数となります。

また、"attributeValue"に記載のある値は、初期値となります。

これらを踏まえてごにょごにょすると、変数一覧をロボットで取得できます。
気になった方は試してみてください……!

ここまで見ていただき、ありがとうございます!
ロボットでロボットを読み込むロボットは過去にもいくつか作ったので、
皆さんもやってみると楽しいかもしれません!そして、ロボットで編集することで楽になることもあるので!それも含めて充実感があるので。気が向く人はぜひやってみてください!(そしてそのアイデアを共有していただけるととっても喜びます!)

ITスキルほぼ0でRPAエンジニアになった人。今はBizRobo!を中心に、広く浅くときどき深く勉強しています。