gpt4 book ai didi

triggers - 使用 Marklogic 8 触发器管理三元组

转载 作者:行者123 更新时间:2023-12-02 20:14:22 26 4
gpt4 key购买 nike

我有一个用例,每次从 MarkLogic 添加或删除三元组时我想发送通知。通知应包含这些三元组,并应说明它们是添加还是删除。

我在 MarkLogic triggers guide 中没有找到任何提及关于它如何与(托管)三元组一起工作。有没有办法编写一个触发器模块,以便对于修改后的文档(包含托管三元组),将新版本与旧版本进行比较,以找出添加和删除的内容,并发送包含这些更改的 HTTP 请求?

我知道 doc($trgr:uri) 将为我提供相关文档的最新状态 - 但有没有办法在更改之前检索以前的版本?我对 MarkLogic 和 Xquery 相当陌生,因此非常感谢一些指导。谢谢!

最佳答案

我认为你只能通过一种方式实现这一目标:

  • 使用pre-commit触发器
  • 使用xdmp:evalisolation对于 different-transaction获取原始文档

类似于:

xquery version "1.0-ml";

import module namespace trgr = "http://marklogic.com/xdmp/triggers" at "/MarkLogic/triggers.xqy";

declare variable $trgr:uri as xs:string external;

xdmp:log("Triggered processing of " || $trgr:uri || ".."),

xdmp:log(xdmp:eval('doc("'||$trgr:uri||'")', (), <options xmlns="xdmp:eval"><isolation>different-transaction</isolation></options>)),
xdmp:log(doc($trgr:uri))

我使用范围为集合“测试”的触发器进行了快速测试。然后我在/test.xml 中插入了一个文档,内容为 <test>a</test> ,并且尚未将其添加到集合测试中。然后我用 <test>b</test> 更新了文档,并将其添加到集合测试中以激活触发器。它记录了 a 和 b..

这显示了如何获取原始文档和更新文档。确定差异本身就是一个挑战..

呵呵!

关于triggers - 使用 Marklogic 8 触发器管理三元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39412669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com