我正在使用管理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-id
或task-name
以便我可以使用管理API删除任务?由于删除管理API确实需要删除任务的name|id
*******编辑*********
我希望显式部署FlexRep Scheduled task
,并且只有在为特定环境启用flexrep
时才需要。我知道我可以根据一些用户定义的变量或env删除deploy task命令,但这也将删除其他任务的所有部署。
有没有办法告诉我不要部署特定任务?
答案 0 :(得分:2)
遗憾的是,计划任务没有名称,但它确实有一个任务路径。创建计划任务时,MarkLogic将为您创建任务ID - 您不能自己设置任务ID。
当您需要删除任务路径时,您需要使用Management API查找ID - 您很可能通过任务路径执行此操作(应该很少有两个计划任务使用相同的任务路径)。
请注意,ml-gradle - https://github.com/marklogic-community/ml-gradle - 可以为您处理所有这些,以防Gradle是您和/或您的团队的一个选项。