![](https://www.a-assist.co.jp/wp-content/uploads/2023/07/img_64acba72269b3.jpg)
#検証#実装方法:初期データ自動登録(Populate data)
2021年11月25日こんにちは、植田です。
今回はTransactionオブジェクトの拡張機能「Populte data」プロパティについて記事を書いていきたいと思います。
Populate dataとは
開発の現場などでは
- 初期データとして必ず入れておくデータが存在する
- 決まったデータをDBを介さずに共有したい
という状況が頻繁に発生すると思います。
そういった場合にこちらのPopulate data機能を利用することにより初期データの登録と共有が出来る為、
解決することが可能です。
要約すると、「ナレッジベース内で初期データの登録、管理を可能」とする機能という事になりそうですね。
実装方法
アンケート回収システムのメニューに関して、DB化及び初期データの登録、管理を行っていきます。
・KBの実装(改修前)
![](/wp-content/uploads/2023/07/POST_2375_2-1024x576.png)
始めに、メニューをトランザクションオブジェクトで定義していきます。
![](/wp-content/uploads/2023/07/POST_2375_3-1024x576.png)
![](/wp-content/uploads/2023/07/POST_2375_4-1024x576.png)
次に、トランザクションのData Providerプロパティを「True」に設定します。
Used Toプロパティは初期値で「Populate data」となっています。
また、Populate dataはビジネスコンポーネントを使用してデータの登録を行うため、BussinessCompornent
プロパティは自動的に「True」に設定されています。
![](/wp-content/uploads/2023/07/POST_2375_5-1024x576.png)
この状態でトランザクションオブジェクトの保存を行うとオブジェクトの配下に自動的に
DataProviderオブジェクトが生成されます。
![](/wp-content/uploads/2023/07/POST_2375_6-1024x576.png)
こちらのDataProviderに投入する初期データを入力していきます。
データはUpSert(更新または新規)となり、投入するデータはべき等にする必要があります。
今回はキー項目の値を固定にしました。
![](/wp-content/uploads/2023/07/POST_2375_7-1024x576.png)
ビルドを実行します。
再編成の画面上で、今回作成したトランザクションから生成されるテーブルに
「initialize with MenuTR_DataProvider」と表示されているのが確認できます。
さらにビルドを進めていくと出力ウィンドウに「データの作成 開始」が表示され、データの登録処理が
自動実行されている事が確認できます。
![](/wp-content/uploads/2023/07/POST_2375_8-1024x576.png)
実行してみると、作成したトランザクションにデータが投入されている事が確認できます。
![](/wp-content/uploads/2023/07/POST_2375_9-1024x576.png)
後は作成したトランザクションからデータを読み込むDataProviderもしくはProcedureオブジェクトを作成し、
DBとメニューの連動を行います。
![](/wp-content/uploads/2023/07/POST_2375_10-1024x576.png)
![](/wp-content/uploads/2023/07/POST_2375_11-1024x576.png)
出来ました!
![](/wp-content/uploads/2023/07/POST_2375_12-1024x576.png)
まとめ
Populate dataは、まさに想像していた通りの動作をする機能でした。
ポイントとしてはどちらかというと初期データとしての持ち方にあり、
登録するデータはべき等(何度実行しても同じ結果になる)
となるように意識しておく必要があると思います。
実装手順に関しては特に難しいこともなく、比較的短時間で目的の処理が実現できました。
このように、KBを共有するだけで初期データもセットで取り込めるメリットは少なくないと思います。
是非ご検討頂ければ幸いです。
最後までご覧頂きありがとうございました!