質問

方法についてのアイデアはありますか 最高 Java ベースの Web アプリケーションの記事の改訂履歴を実装し、AuditLog に保存できます。

StackOverflow には、SVN クライアントとほぼ同じように、バージョン間の違いを確認できる機能がすでに備わっています。

これは実装というよりも設計に関する質問です。

追加:これらの変更を Web ページに表示するにはどうすればよいでしょうか?

追加:提案されたソリューション

Article
--------------------------------
    Integer id
    String title
    String body
    List<Tag> tags
    AppUser createdBy
    Date createdDate

AuditLog
--------------------------------
    Integer id
    Integer objectId
    Operation operation // enum with UPDATE and DELETE. I won't audit an insert
    Date createdDate
    AppUser createdBy
    String class
    String revisionXML
    String comment

休止状態 インターセプター インターセプトします 保存プロセスと使用 キャスター XML 古いオブジェクトの XML 文字列を作成します。

クラスと ID は、特定のオブジェクトのリビジョンを取得するために使用されます。

Google-diff-match-patch HTML diff ファイルの作成に使用されます

役に立ちましたか?

解決

最善の解決策は、すでにバージョンをサポートしているデータベースまたはストレージを使用することです。たとえば、 アパッチジャックウサギ.

それができない場合は、記事を保存する場所を決定する必要があります。ファイルシステム上でしょうか?次に、各記事をディレクトリにしてリビジョンを番号 (00001、00002 など) として保存し、最後のリビジョンの番号を特別なファイル (例: current)。そうすれば、バージョンがいくつあるかをすぐに知ることができます(調べてみてください) current)そして前後に進みます。

データベースを使用する場合は、記事テーブルにバージョン番号フィールドを追加し、現在のバージョンを示す 2 番目のテーブルまたはフラグを追加します。で選択することもできます max(version) しかし、これらの SQL 構造は非常に醜く、混乱を招く傾向があります。この情報を別の場所に保存する方がはるかに簡単です。

[編集] 差分を生成するには、このプロジェクトを見てください。 Google-diff-match-patch

他のヒント

内部では既存の VCS (SVN など) を使用します。そこには改訂履歴があります。あとはアプリから VCS へのインターフェースを作成するだけです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top