Blue Prism: コレクション階層化した場合の値セット
コレクションを階層化すると元々のデータによるがわかりやすい定義ができる。脳内すっきりというか
しかし、標準VBOではうまく書けない。
理想:(こういう風にしたい)
これが出来れば処理数も少なく、見た目のシンプルで美しい(?)
しかしこの場合、1階層目はフィルターされたコレクションになってしまうので、Set Collection Fieldで値をセットしても、フィルターされる前のコレクションには反映されない。
さてどうするか?
暫定版
1階層目をフィルターせずにフルで繰り返しステージを使えば"親コレクションに限り"書き込める。
でも、無駄なループが発生するので美しくない(?)
逃げちゃだめだ by 碇シンジ
解決方法
ここで解決方法はオブジェクトを作ること。
Utility - Collection Manipulation::Set Collection Field を改造してしまおう!
ということで、「Set Hierarchical Collection Field」っていうのを作ってみた。
If PRowIndex < 0 OrElse PColl.Rows.Count <= PRowIndex Then
Throw New ApplicationException("The supplied row index falls outside of the valid range.")
End If
dim Coll As Object = PColl.Rows(PRowIndex)(CollName)
If Not Coll.Columns.Contains(FieldName) Then
Throw New ApplicationException("The collection does not contain a field with the name '" & FieldName & "'")
End If
Coll.Rows(RowIndex)(FieldName) = New_Value
Updated_Collection = PColl
とりあえず動くレベルなので因数のチェックは適当。
これで一応動く。
親コレクションの自由な行の子コレクションに書き込みことができるので、階層化した場合は非常に便利です。
この記事が気に入ったらサポートをしてみませんか?