2014-07-19 4 views
2

uri 모듈이 특정 요소의 문자열 값이 채워져 있어야하는 문서의 uris 목록을 프로세서 모듈에 전달하는 corb 작업을 작성하고 있습니다. uri 모듈은 문자열이 원하는 것보다 짧은 문서를 나열합니다. 갱신 후에는 문자열이 원하는 길이가되므로 변경된. 서를 더 이상 식별 할 수 없습니다. 또한이 문서들에있는 문자열의 이전 길이에 대한 기록이 없습니다. 따라서 롤백 스크립트를 작성하는 쉬운 방법은 없습니다.Marklogic corb 작업에 대한 롤백

이러한 시나리오에서 롤백을 효과적으로 수행하는 방법은 무엇입니까?

버전 관리 문서가 없습니다.

답변

2

변경된 모든 문서에 CoRB 배치를 나타내는 모음을 태그하는 방법은 무엇입니까?

새 소식을 알게되면 xdmp:collection-delete으로 전화하면됩니다. 보다 세부적인 데이터가 필요한 경우 문서 또는 속성에서 각 업데이트의 일부로 추가 할 수 있습니다. 기본적으로 각 문서를 터치 할 때 롤백 정보를 저장합니다. 하나의 문서에서 전체 배치에 대한 롤백 정보를 유지하려고하지 마십시오. 모든 CoRB 스레드가 동시에 업데이트하려고하기 때문입니다.

이 접근 방식은 일괄 처리 ID를 어떻게 든 제공해야한다는 것을 의미합니다. 아마도 가장 짧은 CoRB XQuery 모듈로 직접 인코딩 할 것입니다. 일괄 작업에 중요한 모든 기능을 가진 라이브러리 모듈을 작성하겠습니다. 그런 다음 간단한 쉘 스크립트는 일괄 처리 ID가 XQuery에 직접 인코딩 된 상태에서 각 일괄 작업에 대한 새로운 기본 모듈을 작성할 수 있습니다. 이 주 모듈은 CoRB에 대해 $URI을 정의하고, 라이브러리를 가져오고, 함수를 호출합니다 (예 : mylib:batch-operation($URI, "batch-"||1234567)). 셸 스크립트는 batch-id를 제공합니다. 배치가 시작된 초 또는 사용자에게 의미가있는 모든 시간입니다.

또한 https://github.com/mblakele/taskbot을 살펴보고 유연성을 제공하는지 확인해보십시오.

+0

감사합니다. 그 덕분에 – callow

+0

@callow가 도움이됩니다. 문서 속성 내에서 원래의 값을 추적 할 수도 있고, 같은 batch-id로 표시 될 수도 있습니다. 그러면 롤백은 속성의 값을 기본 XML로 넘기는 것입니다. – grtjn