2017-09-12 84 views
2

我使用管理API計劃任務manage/v2/tasks?group-id=Default那我送是Marklogic管理API來調度和刪除任務

{ 
    "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" 
} 

我的問題是如何設置的任務名稱的JSON字符串?如通過查看manage-task-properties.xsd它沒有任務名稱。所以如果我想使用管理api刪除任務,它需要任務名稱。 所以我創建了一個隨機任務ID task-id:9459386113689474276到上述JSON和我這樣做的時候,管理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刪除部署任務命令,但是這也會刪除所有其他任務的部署。 有沒有一種方法可以告訴我不要部署特定的任務?

回答

2

不幸的是,一個計劃任務沒有名稱,但它有一個任務路徑。當您創建計劃任務時,MarkLogic會爲您創建任務ID - 您不能自己設置任務ID。

當您需要刪除任務路徑時,您需要使用Management API查找ID - 您很可能會通過任務路徑執行此操作(應該很少有兩個計劃任務與相同的任務路徑)。

請注意,ml-gradle-https://github.com/marklogic-community/ml-gradle - 可以爲您處理所有這些情況,以防使用Gradle是您和/或您的團隊的一種選擇。