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 权限添加到该用户的角色之一。
我正在尝试在数据更改时在后端触发一个进程。
这是我目前正在使用的有效触发器。
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 权限添加到该用户的角色之一。