1

사용자가 콘텐츠를 입력 할 수 있도록 사이트를 수정하려고합니다. 그러나 일단 제작 된 컨텐츠는 승인을 받아야 발행 할 수 있습니다. 이는 해당 내용에 대한 레코드에 "보통"비트를 설정하고 하나의 테이블 만 필요하면 쉽게 달성 할 수 있습니다.사이트 콘텐츠의 생성, 승인, 수정, 승인 패턴

이제 사용자가 StackOverflow에서 내용을 편집 할 수있게하고 싶습니다. 그러나 편집 한 기록을 볼 수 있도록 각 편집을 승인하고 저장해야합니다.

편집이 승인 대기 중일 때 "라이브"레코드로 편집하는 것을 방지하면 보류중인 편집의 충돌이 문제가되지 않도록 허용 할 수 있습니다.

본인의 의도는 각 항목의 이전 버전 컬렉션을 별도의 테이블에 보관하고 승인/거부 될 때까지 보류중인 편집을이 테이블에 게시 한 다음 승인 된 경우 메인 테이블의 레코드로 교체하는 것입니다.

누구나이 패턴의 결함을 볼 수 있습니까? 이것을하는 더 좋은 방법을 생각해 볼 수 있습니까?

비록 그것이 관련이 있다고 생각하지 않지만 ASP.NET MVC 및 SQL Server와 함께 C#을 데이터 저장소로 사용하고 있습니다.

답변

1

내 마음에 샘물이 나는 것은 타이밍뿐입니다.

프로모션이나 쿠폰과 같이 편집이 시간이 중요시되는 경우 승인 절차도 상당히 원활해야합니다.

전자 메일 기능 또는 우선 순위 플래그를 사용하여 수정 사항을시기 적절하게 승인 할 수 있습니다.

다른 고려 사항 중 하나는 시간이 허용되는지 여부를 모르지만 Windows Workflow Foundation을 통합하는 것입니다. 워크 플로우 항목에 편집 레코드 ID를 첨부하여 승인의 적시성을 처리 할 수 ​​있습니다.

승인자가 자리를 비운 경우 다른 사람이 대기열이있는 작업 항목이므로 수령 할 수 있으며 대기열의 회원 인 경우 대기열에 표시됩니다.

나는 그것이 훨씬 더 많은 일을하는 것을 알고 있지만, 누군가에게 의지하고 변화를 승인하는 것보다 더 나은 해결책이라고 생각한다.

1

어떻게 이런 일에 대한 모든 개정에 대한

  • 한 테이블 항목과 한 테이블. 개정판에는 승인 플래그가 있습니다.
  • 보기
    • 사용자는 최신 승인 버전을받습니다.
    • 중재자는 최신 개정판과 승인 옵션을받습니다.
  • 편집 사용자를위한
    • 장애인 승인 된 최신 버전보다 최신 버전이 있습니다.
    • 운영자는 항상 사용하도록 설정되어 있습니다.
  • 역사
    • 는 사용자 만의 개정을 승인 표시합니다.
    • 모든 중재자의 수정본을 표시합니다.

이 보류 편집의 충돌이 문제가되지 않도록 편집 승인을 보류하면서 "라이브"기록에 편집을 방지하기 위해 허용.

나는 이것을하는 웹 사이트를 알고있다. 나는 개인적으로 그것을 매우 성가신 찾으십시오. 나는 그들이 이런 식으로 할 수 있기를 바란다.

  • 모든 개정판에 대해 하나의 테이블과 하나의 테이블. 개정판에는 승인 플래그가 있습니다.
  • 보기
    • 손님은 최신 승인 된 개정판을받습니다.
    • 등록 된 사용자는 승인 된 최신 개정판을 선택할 수 있습니다.
    • 중재자는 최신 개정판과 승인 옵션을받습니다.
  • 손님을위한 편집
    • 장애인.
    • 사용자는 최신 버전 (승인 여부)을 수정할 수 있습니다.
    • 운영자는 항상 사용하도록 설정되어 있습니다.
  • 역사
    • 은 손님들의 개정을 승인 표시합니다.
    • 운영자 및 등록 된 사용자에 대한 모든 개정판을 표시합니다.
+0

Stackoverflow는 "마지막 업데이트 승"접근 방식을 사용합니다. 2 명이 동일한 질문을 편집하면 저장 한 첫 번째 사람의 변경 사항이 손실됩니다. 이것은 당신이 추천하는 것입니다, 나는 생각합니다. 그러나 여기보다는 단명하지 않으며 "느린"내용에 대해서는 적절하지 않을 수도 있습니다. 컨텐츠를 잠그는 것이 더 합리적인 방법이지만, 웹 설정에서는 잠금이 취소 된 시점을 알지 못하도록해야합니다. Joomla이 문제가 있습니다. 브라우저를 닫을 때 관리자는 문서를 잠글 때까지 잠긴 상태로 유지됩니다. – cdonner

+0

편집하는 동안 항목을 잠그고 중재자가 승인 할 때까지 항목을 변경 한 후에 잠그는 것의 차이점이 있습니다. 나는 이전에 대한 "마지막 업데이트 승리"접근 방식을 선호하지만, 후자의 경우 개정판이 승인되기 전에 항목을 편집 할 수 있으면 더 좋을 것입니다. – dtb

1

나는 주요 상업 CMS의 몇 일한, 그리고이 승인 때 콘텐츠의 물리적 복사본을 만들어 자신의 워크 플로우 중 하나를 기억하지 않습니다. 그래도 유혹적인 아이디어라는 것을 알 수 있습니다. 승인되지 않은 컨텐트가 공개 된 상태로 유출되는 것을 막으려 고합니다. 그러나 게시 된 게시되지 않은 세트로 분할하는 것이 많은 이점을 가지지 않는 한, 기술적 인 이유가 있다고 생각하지 않습니다. .

나는 당신의 접근 방식에 특히 잘못된 점이 있다고 생각하지 않습니다. 그러나 정당한 이유없이 데이터를 복제하고 있습니다.

+0

패턴에 콘텐츠 복제가 포함되지 않습니다. 승인되면 새 내용이 활성 테이블로 이동되고 활성 테이블의 이전 레코드가 편집 테이블로 이동됩니다. 그들은 서로 바뀔 것이다. – Guy