legacy-knowledge-base
公開されました Jun. 30, 2025

「ドキュメントとメディア」ドキュメントの保存されたメタデータにアクセスするにはどうすればよいですか?

投稿者

Jorge Diaz

knowledge-article-header-disclaimer-how-to

knowledge-article-header-disclaimer

legacy-article

learn-legacy-article-disclaimer-text

問題

Documents and Media Library でファイルとメタデータを管理するモジュールを開発しようとしていますが、メタデータ セットのメタデータを操作するのに苦労しています。

ドキュメントおよびメディア ドキュメントの保存されたメタデータにアクセスするにはどうすればよいですか?

それらにアクセスするための正しいクラスとサービスを教えてください。

Environment

  • DXP 7.4

解決策

ここでは、「ドキュメントとメディア」ドキュメントの保存されたメタデータと、そのメタデータへのアクセス方法に関する情報を示します。

1. データベース テーブル:

「Documents and Media」ドキュメントとそのメタデータに関連するデータベース テーブルは次のとおりです。

  • DLFileEntry、DLFileVersion、DLFileEntryType、DDMStructure、DLFileEntryMetadata、DDMStorageLink、DDMField、および DDMFieldAttribute

これらのテーブル間の関係は次のとおりです。

  1. すべてのドキュメントは DLFileEntryに格納されます。 テーブル. ドキュメントは、テーブル DLFileVersionに複数のドキュメント バージョンを持つことができます。
  2. 「ドキュメント タイプ」のメタデータ定義は、 DLFileEntryType (名前) と DDMStructure (構造) に格納されます。 DLFileEntryType links DLFileVersion with DDMStructure
  3. DLFileVersion バージョンにメタデータを含む「ドキュメント タイプ」がある場合、 DLFileEntryMetadataにエントリがあり、 DLFileEntry (dlFileEntryId)、 DLFileVersion (dlFileVersionId)、 DDMStructure およびDDM データ ストレージ (ddmStorageId)
  4. DXP 7.4 では、 DLFileEntryMetadata のデータ ストレージは、 DDMStorageLinkDDMField、および DDMFieldAttributeに格納されます。

重要: Liferay API を使用して、これらのテーブルを常に変更する必要があります。 他のメカニズムを使用してテーブル レコードを更新/削除しないでください。

2. ドキュメント バージョンからメタデータを読み取る Java コード:

開始点として、groovy スクリプト getMetadata-AllFields-DLFileEntry_74x.groovy を実装しました。これは、データベースのすべての DLFileEntry オブジェクトからすべてのメタデータを取得し、スクリプト出力にダンプします。

スクリプトを実行するには、コントロール パネル => サーバー管理 => スクリプトに移動し、添付ファイルの内容をコピーする必要があります。

これらのテーブルに関連する Java クラスは、次の Java パッケージにあります。

また、ダイナミック データ マッピング クラスを使用して、DDMField、DDMFieldAttribute、DDMStorageLink、および DDMStructure からすべての情報を取得する必要があります。詳細については、以下を参照してください。

ドキュメントのメタデータを取得する場合は、通常、次のパスに従います。

  1. DLFileVersion を取得します。 DLFileEntry から dlFileEntry.getFileVersion() を呼び出すか、DLFileVersionLocalService サービスを使用して取得できます。
  2. dlFileVersion.getFileEntryTypeId()を呼び出すだけで、DLFileVersion から DLFileEntryType (= ドキュメント タイプ) を取得します。
  3. dlFileEntryType.getDDMStructures()を呼び出して、DLFileEntryType から DDMStructures (= 文書型定義) を取得します。
  4. DDMStructures と DLFileVersion を取得 たら、API を呼び出して DLFileEntryMetadata を取得できます
  5. DLFileEntryMetadata オブジェクトを使用すると、 StorageEngineManagerUtil.getDDMFormValues(fileEntryMetadata.getDDMStorageId())を呼び出して、DDM データ ストレージから実際のデータにアクセスできます。
  6. この呼び出しは、格納されている DDMFormFieldValue オブジェクトを取得できる DDMFormValues オブジェクトを返します。

3. ドキュメント バージョンにメタデータを追加/更新する Java コード:

製品がメタデータを挿入するいくつかの Liferay コード例を次に示します。これを例として使用して、独自のコードを記述してください:

3.1 DLFileEntry の作成:

次のコードを参照してください: https://github.com/liferay /liferay-portal/blob/7981e83f8002dec2719622319ec5efc72b279042/portal-impl/src/com/liferay/portlet/documentlibrary/service/impl/DLFileEntryLocalServiceImpl.java#L2092-L2096 ここで _addFileVersion メソッド呼び出し に dataEntry1 ddmFormValuesMap マップに格納されます

3.2 DDMFormValues の作成:

ここに、ddmFormValuesMap マップの作成方法の例をいくつか示します。

DDMFormValues の作成方法の例を 2 つ示します。

3.3 ファイルのメタデータを更新する:

ドキュメントから自動的に抽出されたメタデータがドキュメントに追加される別の例があります。RawMetadataProcessorImpl および TikaRawMetadataProcessor クラスを参照してください。

ただし、これは特殊なケースです。ユーザー インターフェイスでは使用できない RawMetadataProcessor という内部構造を使用するためです。

did-this-article-resolve-your-issue

legacy-knowledge-base