Как настроить 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";
Другие вопросы по тегам