Java 기반 웹 응용 프로그램의 기사 개정 내역 구현
-
16-09-2019 - |
문제
방법에 대한 아이디어 베스트 Java 기반 웹 응용 프로그램의 기사 개정 내역을 구현하여 AuditLog에 저장할 수 있습니다.
stackoverflow에는 이미 SVN 클라이언트와 마찬가지로 한 버전에서 다른 버전으로의 차이를 볼 수있는 기능이 있습니다.
이것은 구현 질문보다 설계에 가깝습니다.
추가 : 웹 페이지에 이러한 변경 사항이 어떻게 표시됩니까?
추가 : 제안 된 솔루션
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 파일을 작성하는 데 사용됩니다
해결책
최상의 솔루션은 이미 버전을 지원하는 데이터베이스 또는 스토리지를 사용하는 것입니다. Apache Jackrabbit.
이것이 옵션이 아닌 경우 기사를 보관할 위치를 결정해야합니다. 파일 시스템에서? 그런 다음 각 기사를 디렉토리로 만들고 개정판을 숫자 (00001, 00002 등)로 저장하고 마지막 개정 번호를 특수 파일에 넣습니다. current
). 그런 다음 얼마나 많은 버전이 있는지 신속하게 찾을 수 있습니다. current
) 그리고 앞뒤로 가십시오.
데이터베이스를 사용하는 경우 기사 테이블에 버전 번호 필드를 추가하고 두 번째 테이블이나 현재 버전이 어떤 플래그를 추가하십시오. 당신은 또한 선택할 수 있습니다 max(version)
그러나 이러한 SQL 구성은 꽤 추악하고 혼란스러워하는 경향이 있습니다. 이 정보를 다른 곳에서 저장하는 것이 훨씬 간단합니다.
편집] Diffs를 생성하려면이 프로젝트를보십시오. Google-Diff-Match-Patch
다른 팁
후드 아래에 기존 VC (예 : SVN)를 사용합니다. 거기에는 개정 내역이 있습니다. 남은 것은 앱에서 VC에 이르기까지 인터페이스입니다.