문제

COM+ 또는 .NET 트랜잭션(정확히 말하면 Sharepoint)을 지원하지 않는 외부 API를 사용하여 "트랜잭션" 프로세스를 생성해야 합니다.

내가 해야 할 일은 여러 프로세스를 순서대로 수행할 수 있어야 한다는 것입니다. 그러나 해당 순서에서 실패하면 이전 단계를 모두 수동으로 실행 취소해야 합니다.내 경우에는 두 가지 유형의 단계만 있는데, 둘 다 실행 취소/롤백이 매우 쉽습니다.

이에 유용할 수 있는 디자인 패턴이나 구조에 대한 제안이 있는 사람이 있습니까?

도움이 되었습니까?

해결책

SharePoint 개체 모델이 변경된 경우 다음을 호출할 때까지 변경 사항이 커밋되지 않는다는 사실을 활용할 수 있습니다. Update() 수정된 개체의 메서드(예: SPList.Update() 또는 SPWeb.Update().

그렇지 않으면 명령 디자인 패턴.6장 헤드 퍼스트 디자인 패턴 실행 취소 기능을 구현하는 예제도 있습니다.

다른 팁

GoF 명령 패턴은 실행 취소 가능한 작업을 지원합니다.

순차적 작업(순차 명령)에도 동일한 패턴을 사용할 수 있다고 생각합니다.

롤백/실행 취소를 위한 또 다른 좋은 방법은 다음과 같습니다. 기념품 패턴.일반적으로 주어진 시간에 객체의 스냅샷을 찍고 객체 상태를 기념품으로 되돌리는 데 사용됩니다.

GOF 옆 명령 패턴 당신은 또한 거래 스크립트 패턴 EAA의 P.

아마도 순서대로 실행되는 복합 명령(또는 트랜잭션 스크립트)을 생성해야 할 것입니다.

Compensating Resource Manager를 살펴보는 것이 좋습니다.

http://msdn.microsoft.com/en-us/library/8xkdw05k(VS.80).aspx

C++(또는 범위가 끝날 때 결정적 소멸자 실행이 포함된 다른 언어)를 사용하는 경우 다음을 살펴볼 수 있습니다. 스코프 가드.이 기술은 ScopeGuard가 IDisposable을 구현하도록 하고 필요에 따라 "using" 문을 추가하여 .NET에 적용할 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top