ファイル
ワークシート内でファイル名から添付ファイルの紐付け先レコードを特定する方法
- オブジェクトストア保存時のファイル名による検索
- アップロード時のファイル名による検索
オブジェクトストア上の保存ファイル名(例:
bR2HbXfudAfo9JafdveE4K0C9J2g519Gae3d4I84820k8a9Bee3t5I914q5J4p6e.pdf)をもとに検索します。 MongoDBのmdattachmentコレクションで該当するdocidを検索してください。
> use mdattachment
> db.attachment.find({"name": "52a9dF0c71fscg6P9Lahfc5B41d4c0dv5FasdM5a5LaQdoaE9V1x64aK04en3Ydu.pdf"}).pretty()
{
"_id" : ObjectId("6413d880840db440e5f5a7be"),
"docid" : "a234f6ca-6bf2-4491-9261-e24758376b91",
"fid" : "a234f6ca-6bf2-4491-9261-e24758376b91",
"server" : "https://hap.domain.com/file/mdoc/",
"oFilename" : "APaaSテストファイル",
"path" : "doc/20230317/",
"name" : "52a9dF0c71fscg6P9Lahfc5B41d4c0dv5FasdM5a5LaQdoaE9V1x64aK04en3Ydu.pdf",
......
}
docidを取得(例:a234f6ca-6bf2-4491-9261-e24758376b91)oFilenameはワークシートレコードに保存されている実際のファイル名です。
アップロード時のファイル名(例:
APaaSテストファイル.pdf)をもとに検索します。 MongoDBのmdattachmentコレクションで該当するdocidを検索してください。
> use mdattachment
# ファイル名による完全一致検索
> db.attachment.find({"oFilename":"APaaSテストファイル"}).pretty()
{
"_id" : ObjectId("6413d880840db440e5f5a7be"),
"docid" : "a234f6ca-6bf2-4491-9261-e24758376b91",
"fid" : "a234f6ca-6bf2-4491-9261-e24758376b91",
"server" : "https://hap.domain.com/file/mdoc/",
"oFilename" : "APaaSテストファイル",
"path" : "doc/20230317/",
"name" : "52a9dF0c71fscg6P9Lahfc5B41d4c0dv5FasdM5a5LaQdoaE9V1x64aK04en3Ydu.pdf",
......
}
# ファイル名による部分一致検索
> db.attachment.find({oFilename:{$regex:'.*PaaS.*'}}).pretty()
docidを取得(例:a234f6ca-6bf2-4491-9261-e24758376b91)nameはオブジェクトストア上の保存ファイル名です。
docid をもとにリレーションテーブルでコントロールIDを検索します。
> db.attachmentrelation.find({"docid" : "a234f6ca-6bf2-4491-9261-e24758376b91"}).pretty()
{
"_id" : ObjectId("6448eb672d71e11d04aae297"),
"docid" : "a234f6ca-6bf2-4491-9261-e24758376b91",
"fid" : "a234f6ca-6bf2-4491-9261-e24758376b91",
"fType" : 9,
"pids" : [
"eaf823e5-4205-44fd-8521-109d3ec29a92"
],
"ctime" : ISODate("2023-04-26T09:14:15.289Z"),
"sourceid" : "bac739dc-9f8f-4ea5-a1f8-bdea56d27b81",
"commentid" : "6448eb5c12053cf665be2131"
}
fType = 9の場合、commentidはコントロールID、sourceidはレコードIDです。- 取得したコントロールIDは
commentid(例:6448eb5c12053cf665be2131) - 取得したレコードIDは
sourceid(例:bac739dc-9f8f-4ea5-a1f8-bdea56d27b81) sourceidはmdwsrowsにおける該当ワークシートのrowidです。commentidはmdworksheetのwscontrolsにおけるcidです。
wscontrols で commentid からワークシートIDを検索します。
> use mdworksheet
switched to db mdworksheet
> db.wscontrols.find({cid:"6448eb5c12053cf665be2131"}).pretty()
{
"_id" : ObjectId("6448eb5c12053cf665be2136"),
"cid" : "6448eb5c12053cf665be2131",
"wsid" : "6448eb5c12053cf665be212e",
......
}
wsidがワークシートIDとなります。例:6448eb5c12053cf665be212e
下記URLにアクセスすることで、検索されたファイルが添付されたワークシートに遷移できます。
下記URLにアクセスすることで、検索されたファイルが添付されたレコードに直接遷移できます。
- 例:https://hap.domain.com/worksheet/6448eb5c12053cf665be212e/row/bac739dc-9f8f-4ea5-a1f8-bdea56d27b81
ファイルの物理削除を有効 にする方法
標準では、ファイルを削除してもオブジェクトストレージからは物理削除されません。削除済みファイルをクリーンアップするには、以下の環境変数を追加してください。
| 環境変数 | 説明 | 標準値 |
|---|---|---|
ENV_FILE_DELETE_ENABLE_PHYSICAL | ファイルの物理削除を有効にするか | false |
ENV_FILE_DELETE_BEFORE_DAYS | ENV_FILE_DELETE_ENABLE_PHYSICALがtrueの場合のみ有効。何日前より古いファイルを物理削除するか | 7 |
ENV_FILE_DELETE_TASK_CRON | ENV_FILE_DELETE_ENABLE_PHYSICALがtrueの場合のみ有効。定期タスクの実行時刻 | 0 0 1 * * ?(毎日午前1時) |
物理削除を有効にすると、以下の対応する操作でファイルを削除した際、物理削除も実行されます。
| 対応状況 | 操作 |
|---|---|
| ✅ 対応 | レコード詳細画面で添付ファイルフィールドから添付ファイルを削除する |
| ✅ 対応 | 1件のレコードを手動で削除し、ごみ箱を空にする |
| ✅ 対応 | 現在のページのレコードを手動で削除し、ごみ箱を空にする |
| ❌ 非対応 | 一覧で現在のページを選択し、編集から 添付ファイルフィールドを一括クリアする |
| ❌ 非対応 | 一覧ですべてのレコードを選択し、編集から添付ファイルフィールドを一括クリアする |
| ✅ 対応 | ワークフローの更新ノードで1件のレコードの添付ファイルフィールドを更新し、クリアを選択する |
| ✅ 対応 | ワークフローの更新ノードで複数レコードの添付ファイルフィールドを更新し、クリアを選択する |
| ✅ 対応 | APIで更新ノードを通じて添付ファイルを更新し、データを上書きして古い添付ファイルを削除する |
| ❌ 非対応 | APIで1件のレコードを削除する |
| ❌ 非対応 | APIで複数レコードを削除する |
| ❌ 非対応 | すべてのレコードを手動で削除し、ごみ箱を空にする |
| ❌ 非対応 | ワークフローで1件のレコードを削除し、ごみ箱に入れないことを選択する |
| ❌ 非対応 | ワークフローで複数レコードを削除し、ごみ箱に入れないことを選択する |
| ❌ 非対応 | ワークシート全体を直接削除する |
| ❌ 非対応 | アプリケーション全体を直接削除する |
非対応の操作では、一括削除時に添付ファイルの状態を追跡できないため、対応する添付ファイルを物理削除できません。