フォームストレージアダプターについて
Liferay DXP 7.3 および Liferay DXP 7.2 バージョンには、 LPS-97208 の修正が含まれています (Liferay DXP 7.2 SP3 で計画されています)。
ユーザーがフォーム レコードを追加すると、フォーム API は、ストレージ アダプタ API を介して要求の処理をルーティングします。 これは、フォームエントリーに対して行われる他のCRUD操作(読み取り、更新、削除)についても同様です。 ストレージ サービスのデフォルトの実装は DefaultDDMStorageAdapterと呼ばれ、その名前が示すように、フォーム入力データを JSON 形式で保存するための DDMStorageAdapter インターフェイスを実装します。
ダイナミック データ マッピング (DDM) バックエンドは、フォーム レコードの他の保存形式に 適応 できます。 これにより、フォームデータをデフォルトのJSONではなく、XMLやYAML(または希望する形式)として簡単にシリアライズできます。 そして、フォームデータをLiferayデータベースを含む任意の場所に保存することを選択できます。
新しく追加されたストレージアダプターは、新しいフォームでのみ使用することができます。 既存のすべてのフォームは、作成時に選択されたアダプター(デフォルトではJSON)を引き続き使用し、異なるストレージアダプターを選択することはできません。
フォームレコードの保存
デフォルトのJSON実装では、保存リクエストに格納されているブール値isInsertに応じて、異なる応答をします。 trueの場合は、新しいフォームレコードを追加するロジックが呼び出され、falseの場合は、代わりに更新が行われます。 このロジックは、insert と updateというメソッドに含まれています。 DDMStorageAdapterの の実装がこのパラダイムにも対応していることを確認してください。
フォームレコードのシリアライズとデシリアライズ
フォームレコードのシリアライズとデシリアライズのデフォルトフォーマットはJSONです。 サンプル プロジェクト では、このデフォルト形式の使用方法を示しています。 DDMContentを異なるフォーマットで保存するには、追加のインターフェイスを実装する必要があります。
シリアライズ:DDMcontentを保存するときは、DDMFormValuesオブジェクトをターゲットストレージ形式に変換する必要があります。
逆シリアル化: DDMContent を読み取る際 (ストレージ アダプタの get メソッド内)、ストレージ形式から、 DDMStorageAdapterGetResponseの Builder コンストラクターに必要な DDMFormValues オブジェクトに変換する必要があります。
このシリアライズのロジックに実装するDDMFormValuesSerializerインターフェイスと、デシリアライズのロジックに実装するDDMFormValuesDeserializerインターフェイスがあります。 Liferay のデフォルトの実装は、 DDMFormValues オブジェクトから JSON への変換、およびその逆の変換をサポートしており、それぞれ こちら と こちらにあります。
完全な例については、 フォーム ストレージ アダプターの作成を参照してください。