実現したいこと
他システムとのファイル連携において、ファイルの削除、更新、リネームのタイミングの制御について
参考となる書籍や一般的なやり方はあるでしょうか。
自分のシステムとAシステムとのやり取りにおいて、
以下の基本的な流れがあります。
(追記)環境について
- Aシステムは他社システムのため、ファイルの制御が非同期で行われます。そのため、仕様の変更ができるかどうかは恐らく不可の認識でいます。
- Aシステム側は不明ですが、FTPで自分のシステム(Windows)から取得する想定でいます。
- Aシステム→自分のシステムに1対1での受け渡しで、他にAの同じファイルを取りに来る他システムはありません。
- Aシステムからは随時で連携されるため(秒単位ではなかったはずですが・・・)、1日に何回も更新が行われる見込みです。
- 自分のシステムは、1日に1回以上の取得・削除処理を行う想定でいます。
①通常の連携
①-1.Aシステムがフォルダ「temporary_YYYYMMDD_999999」にファイル「AAA.csv」、「BBB.jpg」、「CCC.xlsx」を格納
①-2.格納完了後、Aシステムがフォルダ名を「temporary_YYYYMMDD_999999」から「YYYYMMDD_999999」にリネーム
①-3.自分のシステムが「YYYYMMDD_999999」(※)をダウンロード
①-4.自分のシステムが「YYYYMMDD_999999」を削除
※受付データが追加する場合は、連番で「999999」で番号を振るイメージ
②登録データの更新
※自分のシステムがダウンロードをする前にAシステムでデータの更新が連携されるパターン
Aシステム側がフォルダを削除し、再度リネームしたフォルダを作成するケース
②-1.Aシステムがフォルダ「temporary_YYYYMMDD_999999」にファイル「AAA.csv」、「BBB.jpg」、「CCC.xlsx」を格納
②-2.格納完了後、Aシステムがフォルダ名を「temporary_YYYYMMDD_999999」から「YYYYMMDD_999999」にリネーム
②-3.Aシステムが既にあるフォルダ名「YYYYMMDD_999999」を削除
②-4.Aシステムがフォルダ「temporary_YYYYMMDD_999999」にファイル「AAA.csv」、「DDD.jpg」、「EEE.docx」を格納
②-5.自分のシステムが「YYYYMMDD_999999」をダウンロード
②-6.自分のシステムが「YYYYMMDD_999999」を削除
発生している問題・分からないこと
①の通常の連携であれば、自分のシステムが取得するときは問題ないと思いますが、
②のような、自分のシステムが取得する前にAシステムからのファイルの再更新が発生する際のタイミングで
どうすれば、削除或いは更新を防げるかを検討しています。
②-3と②-⑤のタイミングが同時に発生した場合にファイルの破損や
②-4と②-⑤のタイミングが同時に発生した場合にファイルの消失を防ぐために、
何か参考となるものがないかを探しています。
該当のソースコード
特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
検討段階のため、自分のシステムが取得する際はフォルダ毎リネームして「downloading_YYYYMMDD_999999」に切り替えた後、
取得が完了したらそのフォルダを削除するなどの方法はあるかとは思います。
或いはフォルダ自体にロックファイルを用意する方法でしょうか・・・
ただ、思いつくだけで、一般的なやり方や参考となるような書籍があるといいなと思い
今回、質問をしたものとなります。
補足
特になし