用于安排和删除任务的 Marklogic 管理 API

标签 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 计划任务,并且仅当为特定环境启用 flexrep 时才部署。我知道我可以根据某些用户定义的变量或环境删除部署任务命令,但这也会删除其他任务的所有部署。 有没有办法告诉我不要部署特定任务?

最佳答案

不幸的是,计划任务没有名称,但它有任务路径。当您创建计划任务时,MarkLogic 将为您创建任务 ID - 您不能自行设置。

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

请注意 ml-gradle - https://github.com/marklogic-community/ml-gradle - 可以为您处理所有这些,如果您和/或您的团队可以选择使用 Gradle。

关于用于安排和删除任务的 Marklogic 管理 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46185460/

相关文章:

xquery - 如何在 xquery 中导入通用模块命名空间

javascript - Marklogic 是否有编写 javascript 代码的框架?

marklogic - 通过负载均衡器使用 mlGradle 进行部署时出错

marklogic - 字段范围索引为空

javascript - 从 ValueIterator 或 Array 获取 XML 元素

docker - 在kubernetes上暴露容器的多个端口

java - Marklogic 使用 Java API 进行聚合查询

python-2.7 - 我想使用 Python 操作 MarkLogic 中的文件

java - MarkLogic Java 客户端 API - 修补元数据和文档内容

marklogic - 如何使用rest api在marklogic中将文档的属性指定为uri