Marklogic 管理 API 调度和删除任务

Marklogic management API to schedule and delete a Task

我正在使用管理 API 来安排任务 manage/v2/tasks?group-id=Default,我发送的 JSON 字符串是

{
  "task-enabled":true,
  "task-path":"/MarkLogic/flexrep/tasks/push-local-forests.xqy",
  "task-root": "Modules/",
  "task-type": "minutely",
  "task-period" : 1,
  "task-database": "%%DATABASE%%",
  "task-modules": "%%MODULES_DATABASE%%",
  "task-user": "admin",
  "task-priority": "higher"
}

我的问题是如何设置任务名称?通过查看 manage-task-properties.xsd 它没有任务名称。因此,如果我想使用管理 api、DELETE /manage/v2/tasks/{id|name} 删除任务,它确实需要任务名称。 所以我在上面的 json 中创建了一个随机任务 ID task-id:9459386113689474276,当我这样做时,管理 api 抛出异常

{
    "errorResponse": {
        "statusCode": "400",
        "status": "Bad Request",
        "messageCode": "MANAGE-INVALIDPAYLOAD",
        "message": "MANAGE-INVALIDPAYLOAD: (err:FOER0000) Payload has errors in structure, content-type or values. Task payload invalid."
    }
}

我查看服务器日志,我发现了这个

2017-09-12 20:11:37.721 Info: [Event:id=HTTPRequest ErrorFormat] Dispatching error code to app defined error handler:  500 manage/error-handler.xqy
2017-09-12 20:11:37.818 Info: Manage: MANAGE-INVALID (err:FOER0000): task-id
2017-09-12 20:11:37.818 Info: Manage: 169:16:/MarkLogic/manage/models/task-properties-model.xqy 

如何设置 task-idtask-name 以便我可以使用管理 API 删除任务?由于删除管理 API 确实需要删除任务 name|id

********* 编辑 ********* 我希望我的 FlexRep Scheduled task 被显式部署,而且只有在为特定环境启用 flexrep 时才可以。我知道我可以根据一些用户定义的变量或环境删除部署任务命令,但这也会删除其他任务的所有部署。 有什么方法可以告诉我不要部署特定任务吗?

不幸的是,计划任务没有名称,但它有任务路径。当你创建计划任务时,MarkLogic 会为你创建任务 ID——你不能自己设置。

当您需要删除任务路径时,您需要使用管理 API 查找 ID - 您很可能会通过任务路径执行此操作(这种情况应该很少见)有两个具有相同任务路径的计划任务)。

请注意,ml-gradle - https://github.com/marklogic-community/ml-gradle - 可以为您处理所有这些,以防使用 Gradle 是您 and/or 您的团队的一个选项。