几个问题
- 为给定林创建触发器时,使用带有林名称的 trgr:collection-scope 函数是否正确?
https://docs.marklogic.com/trgr:trigger-data-event
我有兴趣执行一个 jsp 脚本,该脚本在将数据提交发布到林时将参数传递给脚本。以下是正确的方法吗?
xquery version "1.0-ml" import module namespace trgr="http://marklogic.com/xdmp/triggers" at "/MarkLogic/triggers.xqy"; trgr:create-trigger("executeCreateBlock", "Execute Block Creation", trgr:trigger-data-event( trgr:collection-scope("/str-1/"), trgr:document-content("create"), trgr:post-commit()), trgr:trigger-module(xdmp:database("str-1-modules"), "/modules/", "http.xqy"), fn:true(), xdmp:default-permissions() );
使用以下 http.xqy 模块,当前用于测试仅接受名为 filename 的参数
xquery version "1.0-ml";
let $payload := '{ "filename": $filename}'
return xdmp:http-post("http://chain1.xmp.com:8080/CreateBlock/response.jsp",
<options xmlns="xdmp:http">
<data>{$payload}</data>
</options>)
- 是否可以将数据库中创建的导致触发器触发的文件的名称传递给模块脚本?
谢谢
康特
最佳答案
你看过Alerting API吗? ?它为需要对匹配(反向)查询的数据的数据库更改使用react的应用程序抽象了低级触发器详细信息。
警报 API 通过外部变量自动注入(inject)有关触发操作的文档的上下文。例如,您的操作(响应警报触发器而调用的代码)将包含如下内容:
xquery version "1.0-ml";
declare namespace alert = "http://marklogic.com/xdmp/alert";
declare variable $alert:config-uri as xs:string external;
declare variable $alert:doc as node() external;
declare variable $alert:rule as element(alert:rule) external;
declare variable $alert:action as element(alert:action) external;
至于您的具体问题,trgr:collecion-scope()
将集合的名称作为参数,通常是 URI。顾名思义,它允许您将触发器的权限限制为特定集合。一般来说,您的应用程序代码不应该关注森林。数据库在抽象数据的底层组织方式方面做得很好。直接与森林一起工作的代码可能效率不高,并且可能会破坏安全检查,例如重复 URI 检测。
从警报 API 开始。
关于marklogic - 触发在 Marklogic 中启动 http 通信的林中的数据创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36772309/