Как настроить CORB
Как я могу создать этот XQuery для выполнения в задании CORB? Второй модуль для обработки каждого документа с подходящим URI кандидата не работает.
Модуль URIS
(:a module to select the candidate URIs to process:)
xquery version "1.0-ml";
declare variable $target-collection := "/activity";
declare variable $update-collection := "/activity/analytics-read-added"
let $uris := cts:uris( (),
(),
cts:and-query((
cts:collection-query($target-collection),
cts:not-query(cts:collection-query($update-collection))
))
)
return (count($uris), $uris)
Процессный модуль
(:a module to process each doc with a matching candidate URI:)
declare variable $URI as xs:string external;
xdmp:document-add-permission($URI,xdmp:permission("act-read-role","read")),
xdmp:document-add-collections($URI,$update-collection)
1 ответ
Решение
Есть несколько небольших проблем с вашим модулем процесса:
- переменная
$update-collection
объявленный в модуле URIS также должен быть объявлен в модуле процесса, если вы хотите его использовать. - Функция добавления разрешений написана с ошибкой. Это множественное число:
xdmp:document-add-permissions()
Применение этих изменений к модулю Process:
xquery version "1.0-ml";
(:a module to process each doc with a matching candidate URI:)
declare variable $URI as xs:string external;
declare variable $update-collection := "/activity/analytics-read-added";
xdmp:document-add-permissions($URI, xdmp:permission("act-read-role","read")),
xdmp:document-add-collections($URI, $update-collection)
Если вам нужно устранить неполадки и выяснить, почему ваш Модуль процесса не работает, иногда проще всего вставить содержимое модуля Процесса XQuery в консоль запросов, назначьте значение для $URI
переменная, и выполнить в QConsole.
Например:
declare variable $URI as xs:string external := "/some/test/doc.xml";