2017-09-01 13 views
0

データが変更されたときにバックエンドでプロセスをトリガーしようとしています。MarkLogic - xdmp:トリガーのための特権を生成する

私が現在使用している作業トリガーは次のとおりです。いくつかの非同期処理を行うために産卵機能:

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を呼び出すしたいと思います。

私はアクセス許可の管理が新しくなっていますが、アクセス許可のセットをxdmp:privilegeに追加しようとしましたが、それが機能しませんでした。

このトリガーにxdmp:Spawn execute特権を追加する方法をアドバイスできますか?

おかげ

編集:私はトリガーを実行しているユーザーの/ext/sample-trigger.xqy

答えて

2

スコープを展開するmlgradle使用すると、挿入/更新/削除/プロパティを引き起こしたユーザーですドキュメント上で変更します。このルールの唯一の例外は、実際にユーザーを定義するデータベースのオンラインイベントです。

したがって、上記のユーザーに(直接的または間接的に)接続された役割にxdmp:spawn特権を付加する必要があります。

トラブルシューティングするために、xdm:log(xdmp:get-current-user())をトリガモジュールに追加して、コードを呼び出すためにユーザが使用されていることを理解できるようにします。次に、そのユーザーの役割の1つにxdmp:spawn特権を追加します。

+0

'get-current-user()'は私が私が思っていたユーザーを実行していなかったことを認識しました...ガイダンスをありがとう! – Busturdust

+0

問題ありません。うれしかったよ! –

関連する問題