【问题标题】:MarkLogic - xdmp:Spawn Privilege for triggerMarkLogic - xdmp:触发器的生成特权
【发布时间】:2017-09-01 12:55:49
【问题描述】:

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

这是我目前正在使用的工作触发器。

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-function 来进行一些异步处理。

我是权限管理的新手,但我尝试将xdmp:privilege 添加到权限集,但没有奏效。

有人可以帮助建议如何将xdmp:Spawn execute 权限添加到此触发器吗?

谢谢

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

【问题讨论】:

    标签: triggers permissions marklogic privileges


    【解决方案1】:

    运行触发器的用户的范围是导致文档插入/更新/删除/属性更改的用户。此规则的唯一例外是您实际定义用户的数据库在线事件。

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

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

    【讨论】:

    • get-current-user() 帮助我意识到我没有运行我认为的用户...感谢您的指导!
    • 没问题。很高兴它有帮助!
    猜你喜欢
    • 2014-06-16
    • 2013-05-29
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 2021-11-17
    相关资源
    最近更新 更多