(BluePrism)コレクションのフィールドを並び替える
はいこんにちは、おむおむです。
ついさっき、足の悪いお爺さんが道で困っていたので
荷物を持ってあげておうちまで送ってきました。
送り届けた後、名乗らず颯爽と立ち去る私は、
まさに現代の武士と言っても過言ではないでしょう。
いや、もはやBUSHI。
Los Ingobernables de Japónです。
www.youtube.com
初期メンバーのEVIL抜けちゃいましたねぇ。
という前置きはここまでにして、本題。
※注意:マニア向けです
やりたいこと
「コレクションのフィールドを並べ替えたい!」
そう思ったことが、皆さん一度や二度はあったはずです。
できます。やってみましょう。
ステージってどんな構造?
その前に、ステージってどんなデータ構造になっているか、
考えてみましょう。
まずこんな感じでコレクションを作成します。
こいつをコピーしたら、
テキストエディタに貼りつけてみます。
<process name="__selection__test" type="object" runmode="Exclusive"> <stage stageid="1b1f50ba-6e9f-4a89-aebd-555bd4a4c3b2" name="コレクション" type="Collection"> <subsheetid>d59d5191-ebc0-455d-b9a7-209e20915a16</subsheetid> <loginhibit /> <display x="-165" y="-15" /> <datatype>collection</datatype> <private /> <alwaysinit /> <collectioninfo> <field name="No" type="number" /> <field name="Name" type="text" /> </collectioninfo> <initialvalue> <row> <field name="No" type="number" value="1" /> <field name="Name" type="text" value="山田" /> </row> <row> <field name="No" type="number" value="2" /> <field name="Name" type="text" value="佐藤" /> </row> <row> <field name="No" type="number" value="3" /> <field name="Name" type="text" value="森" /> </row> </initialvalue> </stage> </process>
そう、みんな大好きXMLなのです!
※実際は改行やインデントは入っていません
collectioninfoを並べ替えてみる
フィールド定義は、collectioninfo要素に書かれています。
これを並び変えて、以下のようにしてみます。
・・・ <collectioninfo> <field name="Name" type="text" /> <field name="No" type="number" /> </collectioninfo> ・・・
すると・・・
入れ替わってる!
やったぜ☆
と思うじゃないですか?
ところがどっこい!
どっこい生きてるシャツの中!
初期値は入れ替わっていないのです!
row要素を入れ替えてみる
ではrow要素を入れ替えてみましょう。
試しに3行目を入れ替えてみます。
・・・ <row> <field name="Name" type="text" value="森" /> <field name="No" type="number" value="3" /> </row> ・・・
初期値を見てみましょう。
変わりませんね。。。
では1行目を変えてみましょう。
・・・ <field name="Name" type="text" value="山田" /> <field name="No" type="number" value="1" /> ・・・
すると・・・
今度こそ、やったぜ☆
各種IDの挙動を確認する
やりたいことは実現できました。
ここからはおまけです。
XML内に、stageidという属性と、
subsheetidという要素がありました。
この2つのIDは、
別のページやオブジェクトにステージを移動させると
自動的に変化するのか、
それとも同じ値が保持されるのか、気になりません?
気になりますよね!(圧)
では確認してみましょう☆
別のページに移動させる
まずは、別のページに移動させてみましょう。
ちなみにIDはそれぞれ以下の値です。
stageid: 1b1f50ba-6e9f-4a89-aebd-555bd4a4c3b2 subsheetid: d59d5191-ebc0-455d-b9a7-209e20915a16
別のページにコピペして移動した結果がこちら。
stageid: 638ead3b-b7f5-476a-ace7-544970be2910 subsheetid: a995c9ad-4a8c-412c-a1fa-672b0fd22ee2
つまり、コピペするだけで
IDが自動的に変化するようです。
うーん、インテリジェント☆
別のオブジェクトに移動させる
何となく結果は見えていますが、
同じ要領で別のオブジェクトに移動させてみます。
結果はこちら。
stageid: f0d13e2e-e7d7-4b56-8ff4-399b8fdede37 subsheetid: e2dc4e71-815f-465f-862c-46ae4d82313d
やはり変わってますね。
うーん、インテリj(略)
stageidの重複の確認
最後にもう一つだけ確認。
もし、意図的に別のステージと
stageidを重複させたらどうなるでしょうか?
やってみましょう。
まず、注記ステージを配置してstageidを確認します。
stageid: a679d5ae-86fc-4fd9-808d-0cde1218bff4
コレクションのstageidをこれと一致させた状態で
フロー内に貼りつけてみるとどうなるでしょうか。
stageid: 960620ae-ac8d-4b9d-b733-9cce17dc4470
なんと、エラーは出ずに別のIDが割り振られました。
うーん、イ(略)
ちなみに、プロセスやオブジェクト内で
固有であると思われるほかの値
(process要素のname、type、runmode属性)も、
重複させたりあえて空にしても
自動的に値が修正されていました。
すげえなぁ。
まとめ
・ステージはXMLで構成されている
・フィールドの並び替えは可能だけどちょいと面倒
・Blue Prismはインテリジェント☆
役に立つ記事を書こうとしたけれど、
どんな内容が望まれているかわからん。。。
ご意見いただければ嬉しいです☆
マオマオちゃん可愛いなぁ。(しみじみ)