1# @ohos.distributedMissionManager (分布式任务管理) 2 3分布式任务管理模块提供跨设备系统任务管理能力,包括注册系统任务状态监听、取消系统任务状态监听、开始同步远端任务列表、停止同步远端任务列表、迁移任务操作。 4 5> **说明:** 6> 7> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8> 9> 本模块接口为系统接口。 10 11## 导入模块 12 13```js 14import distributedMissionManager from '@ohos.distributedMissionManager' 15``` 16 17 18## distributedMissionManager.registerMissionListener 19 20registerMissionListener(parameter: MissionDeviceInfo, options: MissionCallback, callback: AsyncCallback<void>): void; 21 22注册系统任务状态监听,以回调函数的方式返回。 23 24**需要权限**:ohos.permission.MANAGE_MISSIONS 25 26**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission 27 28**参数:** 29 30| 参数名 | 类型 | 必填 | 说明 | 31| --------- | --------------------------------------- | ---- | --------- | 32| parameter | [MissionDeviceInfo](#missiondeviceinfo) | 是 | 注册监听设备信息。 | 33| options | [MissionCallback](#missioncallback) | 是 | 注册的回调方法。 | 34| callback | AsyncCallback<void> | 是 | 执行结果回调函数。 | 35 36**示例:** 37 38 ```ts 39 function NotifyMissionsChanged(deviceId) { 40 console.log('NotifyMissionsChanged deviceId ' + JSON.stringify(deviceId)); 41 } 42 function NotifySnapshot(deviceId, missionId) { 43 console.log('NotifySnapshot deviceId ' + JSON.stringify(deviceId)); 44 console.log('NotifySnapshot missionId ' + JSON.stringify(missionId)); 45 } 46 function NotifyNetDisconnect(deviceId, state) { 47 console.log('NotifyNetDisconnect deviceId ' + JSON.stringify(deviceId)); 48 console.log('NotifyNetDisconnect state ' + JSON.stringify(state)); 49 } 50 var parameter = { 51 deviceId: "" 52 }; 53 var options = { 54 notifyMissionsChanged: NotifyMissionsChanged, 55 notifySnapshot: NotifySnapshot, 56 notifyNetDisconnect: NotifyNetDisconnect 57 } 58 try { 59 distributedMissionManager.registerMissionListener(parameter, options, (error) => { 60 if (error.code != 0) { 61 console.error('registerMissionListener failed, cause: ' + JSON.stringify(error)) 62 } 63 console.info('registerMissionListener finished') 64 }) 65 } catch (error) { 66 console.error('registerMissionListener failed, cause: ' + JSON.stringify(error)) 67 } 68 ``` 69## distributedMissionManager.registerMissionListener 70 71registerMissionListener(parameter: MissionDeviceInfo, options: MissionCallback): Promise<void> 72 73注册系统任务状态监听,以promise的方式返回。 74 75**需要权限**:ohos.permission.MANAGE_MISSIONS 76 77**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission 78 79**参数:** 80 81| 参数名 | 类型 | 必填 | 说明 | 82| --------- | ---------------------------------------- | ---- | -------- | 83| parameter | [MissionDeviceInfo](#missiondeviceinfo) | 是 | 设备信息。 | 84| options | <a href="#missioncallback">MissionCallback</a> | 是 | 注册的回调方法。 | 85 86**返回值:** 87 88| 类型 | 说明 | 89| ------------------- | ---------------- | 90| Promise<void> | promise方式返回执行结果。 | 91 92**示例:** 93 94 ```ts 95 function NotifyMissionsChanged(deviceId) { 96 console.log('NotifyMissionsChanged deviceId ' + JSON.stringify(deviceId)); 97 } 98 function NotifySnapshot(deviceId, missionId) { 99 console.log('NotifySnapshot deviceId ' + JSON.stringify(deviceId)); 100 console.log('NotifySnapshot missionId ' + JSON.stringify(missionId)); 101 } 102 function NotifyNetDisconnect(deviceId, state) { 103 console.log('NotifyNetDisconnect deviceId ' + JSON.stringify(deviceId)); 104 console.log('NotifyNetDisconnect state ' + JSON.stringify(state)); 105 } 106 var parameter = { 107 deviceId: "" 108 }; 109 var options = { 110 notifyMissionsChanged: NotifyMissionsChanged, 111 notifySnapshot: NotifySnapshot, 112 notifyNetDisconnect: NotifyNetDisconnect 113 } 114 try { 115 distributedMissionManager.registerMissionListener(parameter, options) 116 .then(data => { 117 console.info('registerMissionListener finished, ' + JSON.stringify(data)); 118 }).catch(error => { 119 console.error('registerMissionListener failed, cause: ' + JSON.stringify(error)); 120 }) 121 } catch (error) { 122 console.error('registerMissionListener failed, cause: ' + JSON.stringify(error)) 123 } 124 ``` 125 126 127## distributedMissionManager.unRegisterMissionListener 128 129unRegisterMissionListener(parameter: MissionDeviceInfo, callback: AsyncCallback<void>): void; 130 131取消任务状态监听, 以回调函数的方式返回。 132 133**需要权限**:ohos.permission.MANAGE_MISSIONS 134 135**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission 136 137**参数:** 138 139| 参数名 | 类型 | 必填 | 说明 | 140| --------- | --------------------------------------- | ---- | --------- | 141| parameter | [MissionDeviceInfo](#missiondeviceinfo) | 是 | 设备信息。 | 142| callback | AsyncCallback<void> | 是 | 执行结果回调函数。 | 143 144**示例:** 145 146 ```ts 147 var parameter = { 148 deviceId: "" 149 }; 150 try { 151 distributedMissionManager.unRegisterMissionListener(parameter, (error) => { 152 if (error.code != 0) { 153 console.error('unRegisterMissionListener failed, cause: ' + JSON.stringify(error)) 154 } 155 console.info('unRegisterMissionListener finished') 156 }) 157 } catch (error) { 158 console.error('unRegisterMissionListener failed, cause: ' + JSON.stringify(error)) 159 } 160 ``` 161 162 163## distributedMissionManager.unRegisterMissionListener 164 165unRegisterMissionListener(parameter: MissionDeviceInfo): Promise<void> 166 167取消任务状态监听,以promise方式返回执行结果。 168 169**需要权限**:ohos.permission.MANAGE_MISSIONS 170 171**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission 172 173**参数:** 174 175| 参数名 | 类型 | 必填 | 说明 | 176| --------- | --------------------------------------- | ---- | ----- | 177| parameter | [MissionDeviceInfo](#missiondeviceinfo) | 是 | 设备信息。 | 178 179**返回值:** 180 181| 类型 | 说明 | 182| ------------------- | ---------------- | 183| Promise<void> | promise方式返回执行结果。 | 184 185**示例:** 186 187 ```ts 188 var parameter = { 189 deviceId: "" 190 }; 191 try { 192 distributedMissionManager.unRegisterMissionListener(parameter) 193 .then(data => { 194 console.info('unRegisterMissionListener finished, ' + JSON.stringify(data)); 195 }).catch(error => { 196 console.error('unRegisterMissionListener failed, cause: ' + JSON.stringify(error)); 197 }) 198 } catch (error) { 199 console.error('unRegisterMissionListener failed, cause: ' + JSON.stringify(error)) 200 } 201 ``` 202 203## distributedMissionManager.startSyncRemoteMissions 204 205startSyncRemoteMissions(parameter: MissionParameter, callback: AsyncCallback<void>): void; 206 207开始同步远端任务列表, 以回调函数的方式返回。 208 209**需要权限**:ohos.permission.MANAGE_MISSIONS 210 211**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission 212 213**参数:** 214 215| 参数名 | 类型 | 必填 | 说明 | 216| --------- | ------------------------------------- | ---- | --------- | 217| parameter | [MissionParameter](#missionparameter) | 是 | 同步信息。 | 218| callback | AsyncCallback<void> | 是 | 执行结果回调函数。 | 219 220**示例:** 221 222 ```ts 223 var parameter = { 224 deviceId: "", 225 fixConflict: false, 226 tag: 0 227 }; 228 try { 229 distributedMissionManager.startSyncRemoteMissions(parameter, (error) => { 230 if (error.code != 0) { 231 console.error('startSyncRemoteMissions failed, cause: ' + JSON.stringify(error)) 232 } 233 console.info('startSyncRemoteMissions finished') 234 }) 235 } catch (error) { 236 console.error('startSyncRemoteMissions failed, cause: ' + JSON.stringify(error)) 237 } 238 ``` 239 240## distributedMissionManager.startSyncRemoteMissions 241 242startSyncRemoteMissions(parameter: MissionParameter): Promise<void> 243 244开始同步远端任务列表,以promise方式返回执行结果。 245 246**需要权限**:ohos.permission.MANAGE_MISSIONS 247 248**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission 249 250**参数:** 251 252| 参数名 | 类型 | 必填 | 说明 | 253| --------- | ------------------------------------- | ---- | ----- | 254| parameter | [MissionParameter](#missionparameter) | 是 | 同步信息。 | 255 256**返回值:** 257 258| 类型 | 说明 | 259| ------------------- | ---------------- | 260| Promise<void> | promise方式返回执行结果。 | 261 262**示例:** 263 264 ```ts 265 var parameter = { 266 deviceId: "", 267 fixConflict: false, 268 tag: 0 269 }; 270 try { 271 distributedMissionManager.startSyncRemoteMissions(parameter) 272 .then(data => { 273 console.info('startSyncRemoteMissions finished, ' + JSON.stringify(data)); 274 }).catch(error => { 275 console.error('startSyncRemoteMissions failed, cause: ' + JSON.stringify(error)); 276 }) 277 } catch (error) { 278 console.error('startSyncRemoteMissions failed, cause: ' + JSON.stringify(error)) 279 } 280 ``` 281 282## distributedMissionManager.stopSyncRemoteMissions 283 284stopSyncRemoteMissions(parameter: MissionDeviceInfo, callback: AsyncCallback<void>): void; 285 286停止同步远端任务列表, 以回调函数的方式返回。 287 288**需要权限**:ohos.permission.MANAGE_MISSIONS 289 290**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission 291 292**参数:** 293 294| 参数名 | 类型 | 必填 | 说明 | 295| --------- | --------------------------------------- | ---- | --------- | 296| parameter | [MissionDeviceInfo](#missiondeviceinfo) | 是 | 同步信息。 | 297| callback | AsyncCallback<void> | 是 | 执行结果回调函数。 | 298 299**示例:** 300 301 ```ts 302 var parameter = { 303 deviceId: "" 304 }; 305 try { 306 distributedMissionManager.stopSyncRemoteMissions(parameter, (error) => { 307 if (error.code != 0) { 308 console.error('stopSyncRemoteMissions failed, cause: ' + JSON.stringify(error)) 309 } 310 console.info('stopSyncRemoteMissions finished') 311 }) 312 } catch (error) { 313 console.error('stopSyncRemoteMissions failed, cause: ' + JSON.stringify(error)) 314 } 315 ``` 316 317## distributedMissionManager.stopSyncRemoteMissions 318 319stopSyncRemoteMissions(parameter: MissionDeviceInfo): Promise<void> 320 321停止同步远端任务列表,以promise方式返回执行结果。 322 323**需要权限**:ohos.permission.MANAGE_MISSIONS 324 325**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission 326 327**参数:** 328 329| 参数名 | 类型 | 必填 | 说明 | 330| --------- | --------------------------------------- | ---- | ----- | 331| parameter | [MissionDeviceInfo](#missiondeviceinfo) | 是 | 同步信息。 | 332 333**返回值:** 334 335| 类型 | 说明 | 336| ------------------- | ---------------- | 337| Promise<void> | promise方式返回执行结果。 | 338 339**示例:** 340 341 ```ts 342 var parameter = { 343 deviceId: "" 344 }; 345 try { 346 distributedMissionManager.stopSyncRemoteMissions(parameter) 347 .then(data => { 348 console.info('stopSyncRemoteMissions finished, ' + JSON.stringify(data)); 349 }).catch(error => { 350 console.error('stopSyncRemoteMissions failed, cause: ' + JSON.stringify(error)); 351 }) 352 } catch (error) { 353 console.error('stopSyncRemoteMissions failed, cause: ' + JSON.stringify(error)) 354 } 355 ``` 356 357## distributedMissionManager.continueMission 358 359continueMission(parameter: ContinueDeviceInfo, options: ContinueCallback, callback: AsyncCallback<void>): void; 360 361迁移任务,以回调函数的方式返回。 362 363**需要权限**:ohos.permission.MANAGE_MISSIONS,ohos.permission.DISTRIBUTED_DATASYNC 364 365**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission 366 367**参数:** 368 369| 参数名 | 类型 | 必填 | 说明 | 370| --------- | --------------------------------------- | ---- | ----- | 371| parameter | [ContinueDeviceInfo](#js-apis-inner-application-continueDeviceInfo.md) | 是 | 迁移信息。 | 372| options | [ContinueCallback](#js-apis-inner-application-continueCallback.md) | 是 | 迁移任务完成回调函数。 | 373| callback | AsyncCallback<void> | 是 | 执行结果回调函数。 | 374 375**错误码:** 376 377以下错误码的详细介绍请参见[分布式调度错误码](../errorcodes/errorcode-DistributedSchedule.md)。 378 379| 错误码ID | 错误信息 | 380| ------- | -------------------------------------------- | 381| 16300501 | The system ability work abnormally. | 382| 16300502 | Failed to get the missionInfo of the specified missionId. | 383| 16300503 | The application is not installed on the remote end and installation-free is not supported. | 384| 16300504 | The application is not installed on the remote end but installation-free is supported, try again with freeInstall flag. | 385| 16300505 | The operation device must be the device where the application to be continued is located or the target device to be continued. | 386| 16300506 | The local continuation task is already in progress. | 387 388**示例:** 389 390 ```ts 391 var parameter = { 392 srcDeviceId: "", 393 dstDeviceId: "", 394 missionId: 1, 395 wantParam: {"key": "value"} 396 }; 397 function onContinueDone(resultCode) { 398 console.log('onContinueDone resultCode: ' + JSON.stringify(resultCode)); 399 }; 400 var options = { 401 onContinueDone: onContinueDone 402 }; 403 try { 404 distributedMissionManager.continueMission(parameter, options, (error) => { 405 if (error.code != 0) { 406 console.error('continueMission failed, cause: ' + JSON.stringify(error)) 407 } 408 console.info('continueMission finished') 409 }) 410 } catch (error) { 411 console.error('continueMission failed, cause: ' + JSON.stringify(error)) 412 } 413 ``` 414 415## distributedMissionManager.continueMission 416 417continueMission(parameter: ContinueDeviceInfo, options: ContinueCallback): Promise<void> 418 419迁移任务,以promise方式返回执行结果。 420 421**需要权限**:ohos.permission.MANAGE_MISSIONS,ohos.permission.DISTRIBUTED_DATASYNC 422 423**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission 424 425**参数:** 426 427| 参数名 | 类型 | 必填 | 说明 | 428| --------- | --------------------------------------- | ---- | ----- | 429| parameter | [ContinueDeviceInfo](#js-apis-inner-application-continueDeviceInfo.md) | 是 | 迁移信息。 | 430| options | [ContinueCallback](#js-apis-inner-application-continueCallback.md) | 是 | 迁移任务完成回调函数。 | 431 432**返回值:** 433 434| 类型 | 说明 | 435| ------------------- | ---------------- | 436| Promise<void> | promise方式返回执行结果。 | 437 438**错误码:** 439 440以下错误码的详细介绍请参见[分布式调度错误码](../errorcodes/errorcode-DistributedSchedule.md)。 441 442| 错误码ID | 错误信息 | 443| ------- | -------------------------------------------- | 444| 16300501 | The system ability work abnormally. | 445| 16300502 | Failed to get the missionInfo of the specified missionId. | 446| 16300503 | The application is not installed on the remote end and installation-free is not supported. | 447| 16300504 | The application is not installed on the remote end but installation-free is supported, try again with freeInstall flag. | 448| 16300505 | The operation device must be the device where the application to be continued is located or the target device to be continued. | 449| 16300506 | The local continuation task is already in progress. | 450 451**示例:** 452 453 ```ts 454 var parameter = { 455 srcDeviceId: "", 456 dstDeviceId: "", 457 missionId: 1, 458 wantParam: {"key": "value"} 459 }; 460 function onContinueDone(resultCode) { 461 console.log('onContinueDone resultCode: ' + JSON.stringify(resultCode)); 462 }; 463 var options = { 464 onContinueDone: onContinueDone 465 }; 466 try { 467 distributedMissionManager.continueMission(parameter, options) 468 .then(data => { 469 console.info('continueMission finished, ' + JSON.stringify(data)); 470 }).catch(error => { 471 console.error('continueMission failed, cause: ' + JSON.stringify(error)); 472 }) 473 } catch (error) { 474 console.error('continueMission failed, cause: ' + JSON.stringify(error)) 475 } 476 ``` 477 478## MissionCallback 479 480表示开始同步后,建立的回调函数。 481 482**需要权限**:ohos.permission.MANAGE_MISSIONS 483 484**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission 485 486| 名称 | 类型 | 可读 | 可写 | 说明 | 487| --------------------- | -------- | ---- | ---- | ------------------ | 488| notifyMissionsChanged | function | 是 | 否 | 通知任务变化,返回设备ID。 | 489| notifySnapshot | function | 是 | 否 | 通知快照变化,返回设备ID,任务ID | 490| notifyNetDisconnect | function | 是 | 否 | 通知断开连接,返回设备ID,网络状态 | 491 492## MissionParameter 493 494表示同步时所需参数的枚举。 495 496**需要权限**:ohos.permission.MANAGE_MISSIONS 497 498**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission 499 500| 名称 | 类型 | 可读 | 可写 | 说明 | 501| ----------- | ------- | ---- | ---- | ----------- | 502| deviceId | string | 是 | 是 | 表示设备ID。 | 503| fixConflict | boolean | 是 | 是 | 表示是否存在版本冲突。 | 504| tag | number | 是 | 是 | 表示特定的标签。 | 505 506## MissionDeviceInfo 507 508表示注册监听时所需参数的枚举。 509 510**需要权限**:ohos.permission.MANAGE_MISSIONS 511 512**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission 513 514| 名称 | 类型 | 可读 | 可写 | 说明 | 515| -------- | ------ | ---- | ---- | ------- | 516| deviceId | string | 是 | 是 | 表示设备ID。 |