【问题标题】:Delete scheduled task in Marklogic删除 Marklogic 中的计划任务
【发布时间】:2020-02-17 15:20:39
【问题描述】:

每次调用我的函数时,我都会尝试删除 Marklogic 中的计划任务。它应该遍历任务,如果它匹配正确的任务路径类型和时间,则删除任务。但是我收到了<h1>500 Internal Server Error</h1> <dl> <dt>XDMP-UNEXPECTED: (err:XPST0003) Unexpected token syntax error, unexpected QName_</dt> <dd></dd> <dt>in /eval, at 10:20 [1.0-ml]</dt> 如果任务存在,代码应该删除该任务,然后在部署时添加一个新任务,因此如果该任务在计划任务中,则删除该任务,然后创建一个新任务。这是我的代码:

      def delete_cron
            r = execute_query_camel_rest(%Q{
            xquery version "1.0-ml";
            import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
            declare namespace group = "http://marklogic.com/xdmp/group";

            let $taskPath := "/my/task/path.xqy" (: Replace with .xqy file :)

            let $tasks :=
                for admin:group-get-scheduled-tasks($config, admin:group-get-id($config, "Default"))
                where $task/group:task-path = $taskPath and $task/group:task-type = minutely and $task/group:task-period = 1
            return $task

        let $deleteTask := admin:group-delete-scheduled-task($config,  admin:group-get-id($config, "Default"), $task)
        return admin:save-configuration($deleteTask)

  },
           {
              :db_name => @properties["ml.database-name"]
           }
  )

我希望在我的添加任务函数之前调用删除函数,就像这样..

def add_cron
        delete_heartbeat_cron
            r = execute_query_camel_rest(%Q{
            xquery version "1.0-ml";
            import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
            declare namespace group = "http://marklogic.com/xdmp/group";

【问题讨论】:

    标签: ruby xquery marklogic roxy


    【解决方案1】:

    我已通过指定它具有的某些属性并调用 admin:group-delete-scheduled-task 成功删除了该任务。

             let $deleteTask :=
             for $task in $tasks
                where $task/group:task-period = 1 and $task/group:task-type = "minutely" and $task/group:task-path = $taskPath
             return $task
    
            let $config := admin:group-delete-scheduled-task($config,  admin:group-get-id($config, "Default"), $deleteTask)
            return admin:save-configuration($config)
    

    我不得不更改我的 for 循环,并添加了变量 $deleteTask。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 1970-01-01
      • 2019-02-10
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      • 1970-01-01
      相关资源
      最近更新 更多