##はじめに
SAPUI5のアプリケーションを作るとき、過去の記事ではODataサービスを登録して、DPCクラスでCRUDの操作を書いて・・・と、コーディングをする場面が結構ありました。
BOPFを使うとコーディング不要でCRUDの操作が実装できます。これまで1日かかっていた作業が10分でできてしまいます(筆者比)。今回は、前回までに作ったCDSビューにBOPFを追加して、CRUD操作ができるようにします。
##BOPFについて
###BOとは
ビジネスオブジェクトのことで、データとそれに対する操作が一体となったクラスのようなものです。
###BOPFとは
Business Object Processing Frameworkの略で、ビジネスオブジェクトに対する汎用的なサービス(CRUDオペレーションなど)が提供されます。BOPFを使うとコーディング不要でデータに対する基本的な操作が実装できます。
BOPFは古くからSAP標準のアプリケーションで使われてきましたが、SAP NetWeaver 7.50からアドオン開発でも使えるようになりました。
参考:Introduction to Business Object Processing Framework (BOPF)
###BOPFの構成
ビジネスオブジェクトは、ノードで構成されるツリー状の構造をしています。それぞれのノードにはデータ(テーブルの行)と、関連するビジネスロジックがひもづけられています。
Introduction to Business Object Processing Framework (BOPF)より引用
###BOPFの作り方
CDSからBOPFを作る場合、アノテーションを書くだけでBOPFが自動的に生成されます。開発ツールはADTを使う必要があります。
##ステップ
- CDSビューにアノテーションを追加
- Fiori Appからトランザクションを実行
##1. CDSビューにアノテーションを追加
以下のアノテーションを追加します。
@ObjectModel: {
modelCategory: #BUSINESS_OBJECT,
compositionRoot: true,
transactionalProcessingEnabled: true,
createEnabled: true,
updateEnabled: true,
deleteEnabled: true,
writeActivePersistence: 'zstudents'
}
###アノテーションの意味
アノテーション | 意味 |
---|---|
modelCategory | ビジネスオブジェクトの種類を指定します。アプリケーションの動作には特に影響を与えません。 |
compositionRoot | 複数のビューが階層的な関係を持つとき、このビューがルートであるかどうかを指定します。 |
transactionalProcessingEnabled | 更新などのトランザクションを許可するかどうか。rootビューのレベルでのみ指定できる属性です。 |
createEnabled~deleteEnabled | 登録、更新、削除を許可するかどうかを指定します。 |
writeActivePersistence | 更新対象となるテーブルを指定します。 |
有効化すると、ビューと同じ名前のBOPFビジネスオブジェクトが登録されます。
ショートカット:Ctrl+Shift+Aで探してみましょう。
ここからBOのルートノードに移動できます。
ここから追加のアクションやチェックなどを実装できますが、今回はそのまま使います。
たったこれだけで!トランザクションが実行できるようになります。
##2. Fiori Appからトランザクションを実行
Fiori Appをリフレッシュすると、削除ボタンと+ボタンが出てきます。
###登録
+ボタンを押すと、新規登録画面になります。
適当な値を入力して保存ボタンを押すと、保存されます。
念のためSE11でも確認してみると、Keyが自動的に採番されています。
このためにKeyはUUIDにしていたのでした。
###更新
詳細画面に移動すると、編集ボタンが表示されます。編集ボタンを押すと更新画面になります。
住所を変更して保存します。
更新できました。
###削除
行を選択して削除ボタンを押します。
削除されました。
CRUDの操作だけでなくメッセージ出力なども自動的にやってくれることがわかります。
##次回
BOPFのアクションやバリデーションを使って追加のロジックを実装してみたいと思います。