用于计划和删除任务的Marklogic管理API

时间:2017-09-12 21:17:52

标签: marklogic marklogic-8

我正在使用管理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时才需要。我知道我可以根据一些用户定义的变量或env删除deploy task命令,但这也将删除其他任务的所有部署。   有没有办法告诉我不要部署特定任务?

1 个答案:

答案 0 :(得分:2)

遗憾的是,计划任务没有名称,但它确实有一个任务路径。创建计划任务时,MarkLogic将为您创建任务ID - 您不能自己设置任务ID。

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

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