无法从 CPF 操作模块内创建 MarkLogic 计划任务

2023-12-15

我有一个 MarkLogic 数据库内容处理框架(CPF) 已安装且 CPF 管道如下:

  1. 每当插入文档时,它都会获取以下值执行日期从文档中并安排当时的任务。

Example:

样本文件:

<sample>
  <execution-date>2014-10-20T12:29:10</execution-date>
</sample>

插入时触发 CPF 操作模块,该模块读取以下值执行日期字段并创建要在读取的时间执行的计划任务执行日期 field.

以下是 CPF 操作模块中创建计划任务的 XQuery 代码片段:

let $doc := fn:doc( $cpf:document-uri )
let $releasedon := xs:string($doc/sample/execution-date/text())

let $config := admin:get-configuration()
let $group := admin:group-get-id($config, "Default")

let $new-task :=
     admin:group-one-time-scheduled-task(
        "/tasks/task.xqy",
        "/",
        xs:dateTime($releasedon),
        xdmp:database("SampleDB"),
        xdmp:database("Modules"),
        xdmp:user("admin"), 
        (),
        "normal")

let $addTask := admin:group-add-scheduled-task($config,$group, $new-task)

return

    admin:save-configuration($addTask),
    xdmp:log(fn:concat("Task for document Uri: ", $cpf:document-uri, " created"))

现在,当我插入单个文档时,一切都会按预期工作,即:

  1. 文档插入成功
  2. CPF动作模块触发成功
  3. 计划任务创建成功。

But,当我尝试使用以下命令插入多个文档时:

xdmp:document-insert("/1.xml", 
    <sample>
      <execution-date>2014-10-21T10:00:00</execution-date>
    </sample>, 
    xdmp:default-permissions(),
    ("documents"))
,
xdmp:document-insert("/2.xml", 
    <sample>
      <execution-date>2014-10-20T11:00:00</execution-date>
    </sample>, 
    xdmp:default-permissions(),
    ("documents"))

CPF操作模块触发成功(日志中可以看到日志消息)BUT ONLY创建一个计划任务。

在查看 MarkLogic 管理界面时,我只能找到一个计划任务,该任务计划运行于2014-10-20T11:00:00

请让我知道我做错了什么或者是否缺少任何配置。 欢迎任何建议。

Thanks!


这里的根本问题是管理配置操作 API不是事务保护操作,因此当您并行运行两个操作时,每个操作都会看到配置文件的初始状态,然后写入其位以添加计划任务,然后保存它,并且只有其中一个获胜。您可以通过强制锁定某些内容来强制其以事务保护的方式运行。URI它是什么并不重要。它甚至不必位于数据库中。只要所做的一切都锁定在同一个URI你很好。xdmp:lock-for-update("my.example.uri")会这样做。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法从 CPF 操作模块内创建 MarkLogic 计划任务 的相关文章

  • 从命令行使用 schtasks,什么参数会将计算机从睡眠状态唤醒并执行任务

    该选项存在于 UI 中 但不存在于命令行中显示的帮助中 您是否通过以下方式创建新任务schtasks exe命令行 或更新现有任务 在维斯塔上 schtasks exe has an xml两者的选项 create and query 通过
  • 如何在Marklogic中使用Group By?

    我想在 xquery 中使用 Group By 有人可以告诉我如何在 Marklogic 中使用 Group By 吗 或者 您可以使用调用 XSLTxdmp xslt invoke or xdmp xslt eval MarkLogic
  • 跨集群访问日志

    我有一个包含 3 个节点的集群 我已经配置了应用程序服务器的数据库 我想知道集群中各主机生成的访问日志是否相同 或者每个主机都有一个单独的 访问日志 用于记录对其主机的请求 我知道集群中的每个主机都维护自己的审核日志文件 访问日志的工作方式
  • 如何在运行时更改Spring的@ScheduledfixedDelay?

    我需要以固定的时间间隔运行批处理作业 并且能够在运行时更改该批处理作业的时间 为此我遇到了 ScheduledSpring框架下提供的注解 但我不确定如何在运行时更改fixedDelay 的值 我做了一些谷歌搜索 但没有发现任何有用的东西
  • 在Android中安排重复任务

    我正在设计一个应用程序 只要该应用程序位于前台 该应用程序就会重复执行将状态发送到专用服务器的任务 在我在网络上的搜索中 我看到了几种不同的方法 并想知道最好的方法是什么 安排服务器调用的最佳方式是什么 我看到的选项是 Timer http
  • 有没有查看/编辑/删除Marklogic文档的工具

    有没有什么工具可以view edit deleteMarklogic 的文档 比如 Mongo Management Studio for MongoDb MarkLogic 内置了对 WebDav 的支持 您可以在管理控制台中创建 Web
  • ml-gradle 是否提供任何功能来根据可用区域部署林拓扑?

    ml gradle 是否提供了任何功能 让我可以在考虑可用区的情况下部署副本林拓扑 或者 MarkLogic 提供的任何 API 来了解哪个节点位于哪个可用区 以便我可以为林副本部署定义自己的逻辑 None
  • 我如何找到启动我的进程的计划任务的实例ID/相关ID

    如果我有一个运行我的 EXE 的 Windows 计划任务 有没有办法从我的 EXE 内部找到触发我的计划任务实例 简单的回答是 不 你能做的最好的事情是以编程方式访问任务调度程序库 看看你所在的进程是否处于 运行 模式 获取进程的 PID
  • 使用预定脚本部署 Shiny App

    我有一个简单的脚本 可以在 Rstudio 中用于部署应用程序 rsconnect setAccountInfo name xx token xx secret xx xx library rsconnect deployApp xxx l
  • 在 Windows 中设置 cron 作业

    我每天都必须从 SFTP 服务器下载文件 我有一个从服务器检索文件的程序 但我正在考虑设置一个 cron 作业 或任何类似的作业 来自动执行该操作 我们是一家 Windows 商店 需要在 Windows 中设置 cron 作业 windo
  • Ruby win32ole - 如何传递 VARIANT 参数?

    我正在尝试使用 Ruby 自动化 Windows 任务计划程序 我在 Windows Vista 下使用 Ruby 1 8 TaskFolder 对象的 RegisterTaskDefintion 方法采用两个 VARIANT 参数作为用户
  • Powershell计划任务冲突?

    我已安排两个 powershell 脚本作为任务在 00 00 运行 今天早上我检查了事件日志 发现其中一个脚本失败 出现以下异常 失败 错误是 未能 在以下位置创建日志条目 C Users SPSETU 1 AppData Local T
  • 如何通过批处理文件检查服务是否正在运行并启动它,如果它没有运行?

    我想编写一个执行以下操作的批处理文件 Check if a service is running 如果正在运行 请退出批处理 如果没有运行 启动该服务 到目前为止 我在谷歌上搜索的代码示例被证明不起作用 所以我决定不发布它们 启动服务是通过
  • 如何为 apscheduler 指定“记录器”

    我正在尝试学习如何使用 Python 的 apscheduler 包 但它会定期抛出以下错误 No handlers could be found for logger apscheduler scheduler 该消息似乎与计划作业中的错
  • 使用 Windows 任务计划程序安排 [Virtualenv 相关] Python 脚本

    I want to schedule a python script to start at 3AM and break at 5PM every weekday However the problem arises when I need
  • ColdFusion - 获取下一个要运行的计划任务

    该线程对于查找计划任务的下一个运行时间很有用 如何找到计划任务的下一次运行时间 https stackoverflow com questions 10740297 how do i find out the next run time f
  • Quartz 与“反应式扩展”

    我正在寻找 C 的调度库 很长一段时间以来 我认为 唯一 的选择是 Quartz NET 它非常强大并且工作得很好 但是当我发现 Reactive Extensions RX http msdn microsoft com en us da
  • java定时器任务调度

    通过阅读 Stack Overflow 我发现很多人不建议使用 Timer Task 嗯 但我已经实现了这个 我有这个代码 detectionHandlerTimer schedule myTimerTask 60 1000 60 1000
  • 在 JavaScript 中创建计划任务

    我正在创建一个应用程序javascript每个都会发送通知周日上午 12 点那时我应该做什么来调用函数 我不会用 javascript 来做 就是这么说的 大喊大叫 function foo var day new Date getDay
  • 查询生成“XDMP-CHILDNODEKIND: $final -- 元素节点不能有二进制节点子节点”错误

    下面是我的简单查询 它从目录中读取所有文件并将 final 变量中的所有文件保存在一个文件中 但是当运行这个查询时 花了一些时间后 它提示 1 0 ml XDMP CHILDNODEKIND final 元素节点不能有二进制节点子节点 er

随机推荐