MarkLogic - xdmp:Spawn 触发权限

MarkLogic - xdmp:Spawn Privilege for trigger

我正在尝试在数据更改时在后端触发一个进程。

这是我目前正在使用的有效触发器。

xquery version "1.0-ml";
import module namespace trgr="http://marklogic.com/xdmp/triggers" 
    at "/MarkLogic/triggers.xqy";


if (xdmp:database() eq xdmp:database("nbcu-test-ml-triggers")) 
   then ()
   else fn:error((), 'NOTTRIGGERSDB', xdmp:database()) ,
trgr:create-trigger(
     "typeahead_modify", 
     "Update Typeahead Document",
     trgr:trigger-data-event(trgr:directory-scope("/triplestore/", "1"), trgr:document-content("modify"),     trgr:post-commit()),
     trgr:trigger-module(
         xdmp:database("nbcu-test-ml-modules"), 
         "/ext/", 
         "sample-trigger.xqy"),
     fn:true(), 
     xdmp:default-permissions(),
     fn:true() ) 

但是在它触发的模块末尾,我想调用一个 xdmp:spawn 函数来进行一些异步处理。

我是权限管理的新手,但我尝试向权限集添加 xdmp:privilege,但没有成功。

有人可以帮忙建议如何给这个触发器添加 xdmp:Spawn execute 权限吗?

谢谢

编辑:我使用 mlgradle 部署 /ext/sample-trigger.xqy

用户范围 运行 触发器是导致文档 insert/update/delete/property-change 的用户。此规则的唯一例外是您实际定义用户的数据库联机事件。

因此,xdmp:spawn 特权必须附加到(直接或间接)附加到上述用户的角色。

要排除故障,您可以将 xdm:log(xdmp:get-current-user()) 添加到触发器模块,以确保您了解用于调用代码的用户。然后将 xdmp:spawn 权限添加到该用户的角色之一。