2

ユーザーが同じオブジェクトを同時に編集できないようにするメカニズムを実装する必要があります。私のアプリケーションフローは次のとおりです。

  1. 「一覧」ページへ
  2. フォームデータテーブルを編集する行を選択
  3. 編集ボタンをクリックします (「編集」ページへの移動)
  4. 変更データ
  5. [保存] または [キャンセル] をクリックします ([リスト] ページに戻ります)。

ステップ 3 で別のユーザーが同じレコード (同じ ID) を編集しているかどうかを確認し、「申し訳ありませんが、別のユーザーがこれを編集しています」などの情報を表示できればと思います。

私の考えは、ログに記録されたユーザーと、現在編集しているテーブル名と ID のマップを保持することです。@Singletonこの目的のために、アプリケーション スコープ Bean (EJB 3.1 など) を使用します。このソリューションの弱点を指摘できますか? 他に提案できますか?

Java EE 6、Seam3、Glassfish 3、および Oracle DB 11 を使用しています。MyBatis を使用していますが、JPA フレームワークは使用していません。

4

1 に答える 1

1

明確に識別された変更を受け入れるための何らかのメカニズムを用意し、変更を適用するときに、変更が現在存在するものとは異なるデータのコピーで開始されたかどうかを検出し、例外を発生させる方がはるかに良いでしょう。

この種のワークフローは、「CAの誰かが重要な記録を変更し始めたが、その後昼食に行ったため、会社を救うことができない」という恐ろしいことを防ぎます。

Subversionの本の最初の数章を読んでください。現在、データバージョン管理には関心がありませんが、競合シナリオは、1人のユーザーが所有している限り共有アイテムを使用できない古い「ライブラリ」システムよりも完全で、よく考えられています。

于 2012-09-11T19:12:49.630 に答える