Blue Prism: コレクション階層化した場合の値セット

コレクションを階層化すると元々のデータによるがわかりやすい定義ができる。脳内すっきりというか

しかし、標準VBOではうまく書けない。

理想:(こういう風にしたい)

画像1

これが出来れば処理数も少なく、見た目のシンプルで美しい(?)
しかしこの場合、1階層目はフィルターされたコレクションになってしまうので、Set Collection Fieldで値をセットしても、フィルターされる前のコレクションには反映されない。
さてどうするか?

暫定版

画像2

1階層目をフィルターせずにフルで繰り返しステージを使えば"親コレクションに限り"書き込める。
でも、無駄なループが発生するので美しくない(?)

逃げちゃだめだ by 碇シンジ

解決方法

ここで解決方法はオブジェクトを作ること。

Utility - Collection Manipulation::Set Collection Field を改造してしまおう!

ということで、「Set Hierarchical Collection Field」っていうのを作ってみた。

画像3


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

とりあえず動くレベルなので因数のチェックは適当。

これで一応動く。
親コレクションの自由な行の子コレクションに書き込みことができるので、階層化した場合は非常に便利です。

この記事が気に入ったらサポートをしてみませんか?