js-apis-distributedMissionManager.md 18.6 KB
Newer Older
Z
zengyawen 已提交
1
# @ohos.distributedMissionManager (分布式任务管理)
Q
ql 已提交
2

3
分布式任务管理模块提供跨设备系统任务管理能力,包括注册系统任务状态监听、取消系统任务状态监听、开始同步远端任务列表、停止同步远端任务列表、迁移任务操作。
Q
ql 已提交
4 5

> **说明:**
H
HelloCrease 已提交
6
>
Q
ql 已提交
7
> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
>
9
> 本模块接口为系统接口。
Q
ql 已提交
10 11 12

## 导入模块

H
HelloCrease 已提交
13
```js
Q
ql 已提交
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
import distributedMissionManager from '@ohos.distributedMissionManager'
```


## distributedMissionManager.registerMissionListener

registerMissionListener(parameter: MissionDeviceInfo, options: MissionCallback, callback: AsyncCallback<void>): void;

注册系统任务状态监听,以回调函数的方式返回。

**需要权限**:ohos.permission.MANAGE_MISSIONS

**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission

**参数:**

H
HelloCrease 已提交
30 31 32 33 34
| 参数名       | 类型                                      | 必填   | 说明        |
| --------- | --------------------------------------- | ---- | --------- |
| parameter | [MissionDeviceInfo](#missiondeviceinfo) | 是    | 注册监听设备信息。 |
| options   | [MissionCallback](#missioncallback)     | 是    | 注册的回调方法。  |
| callback  | AsyncCallback<void>               | 是    | 执行结果回调函数。 |
Q
ql 已提交
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

**示例:**

  ```ts
  function NotifyMissionsChanged(deviceId) {
      console.log('NotifyMissionsChanged deviceId ' + JSON.stringify(deviceId));
  }
  function NotifySnapshot(deviceId, missionId) {
      console.log('NotifySnapshot deviceId ' + JSON.stringify(deviceId));
      console.log('NotifySnapshot missionId ' + JSON.stringify(missionId));
  }
  function NotifyNetDisconnect(deviceId, state) {
      console.log('NotifyNetDisconnect deviceId ' + JSON.stringify(deviceId));
      console.log('NotifyNetDisconnect state ' + JSON.stringify(state));
  }
  var parameter =  {
51
      deviceId: ""
Q
ql 已提交
52 53 54 55 56 57
  };
  var options = {
      notifyMissionsChanged: NotifyMissionsChanged,
      notifySnapshot: NotifySnapshot,
      notifyNetDisconnect: NotifyNetDisconnect
  }
58 59 60 61 62 63 64 65 66 67
  try {
      distributedMissionManager.registerMissionListener(parameter, options, (error) => {
          if (error.code != 0) {
              console.error('registerMissionListener failed, cause: ' + JSON.stringify(error))
          }
          console.info('registerMissionListener finished')
      })
  } catch (error) {
      console.error('registerMissionListener failed, cause: ' + JSON.stringify(error))
  }
Q
ql 已提交
68 69 70 71 72 73 74 75 76 77 78 79 80
  ```
## distributedMissionManager.registerMissionListener

registerMissionListener(parameter: MissionDeviceInfo, options: MissionCallback): Promise<void>

注册系统任务状态监听,以promise的方式返回。

**需要权限**:ohos.permission.MANAGE_MISSIONS

**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission

**参数:**

H
HelloCrease 已提交
81 82 83 84
| 参数名       | 类型                                       | 必填   | 说明       |
| --------- | ---------------------------------------- | ---- | -------- |
| parameter | [MissionDeviceInfo](#missiondeviceinfo)  | 是    | 设备信息。    |
| options   | <a href="#missioncallback">MissionCallback</a> | 是    | 注册的回调方法。 |
Q
ql 已提交
85 86 87

**返回值:**

H
HelloCrease 已提交
88 89 90
| 类型                  | 说明               |
| ------------------- | ---------------- |
| Promise&lt;void&gt; | promise方式返回执行结果。 |
Q
ql 已提交
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106

**示例:**

  ```ts
  function NotifyMissionsChanged(deviceId) {
      console.log('NotifyMissionsChanged deviceId ' + JSON.stringify(deviceId));
  }
  function NotifySnapshot(deviceId, missionId) {
      console.log('NotifySnapshot deviceId ' + JSON.stringify(deviceId));
      console.log('NotifySnapshot missionId ' + JSON.stringify(missionId));
  }
  function NotifyNetDisconnect(deviceId, state) {
      console.log('NotifyNetDisconnect deviceId ' + JSON.stringify(deviceId));
      console.log('NotifyNetDisconnect state ' + JSON.stringify(state));
  }
  var parameter =  {
107
      deviceId: ""
Q
ql 已提交
108 109 110 111 112 113
  };
  var options = {
      notifyMissionsChanged: NotifyMissionsChanged,
      notifySnapshot: NotifySnapshot,
      notifyNetDisconnect: NotifyNetDisconnect
  }
114 115 116 117 118 119 120 121 122 123
  try {
      distributedMissionManager.registerMissionListener(parameter, options)
      .then(data => {
          console.info('registerMissionListener finished, ' + JSON.stringify(data));
      }).catch(error => {
          console.error('registerMissionListener failed, cause: ' + JSON.stringify(error));
      })
  } catch (error) {
      console.error('registerMissionListener failed, cause: ' + JSON.stringify(error))
  }
Q
ql 已提交
124 125 126
  ```


127
## distributedMissionManager.unRegisterMissionListener
Q
ql 已提交
128

129
unRegisterMissionListener(parameter: MissionDeviceInfo, callback: AsyncCallback&lt;void&gt;): void;
Q
ql 已提交
130 131 132 133 134 135 136 137 138

取消任务状态监听, 以回调函数的方式返回。

**需要权限**:ohos.permission.MANAGE_MISSIONS

**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission

**参数:**

H
HelloCrease 已提交
139 140 141 142
| 参数名       | 类型                                      | 必填   | 说明        |
| --------- | --------------------------------------- | ---- | --------- |
| parameter | [MissionDeviceInfo](#missiondeviceinfo) | 是    | 设备信息。     |
| callback  | AsyncCallback&lt;void&gt;               | 是    | 执行结果回调函数。 |
Q
ql 已提交
143 144 145 146 147

**示例:**

  ```ts
  var parameter =  {
148
      deviceId: ""
Q
ql 已提交
149
  };
150 151 152 153 154 155 156 157 158 159
  try {
      distributedMissionManager.unRegisterMissionListener(parameter, (error) => {
          if (error.code != 0) {
              console.error('unRegisterMissionListener failed, cause: ' + JSON.stringify(error))
          }
          console.info('unRegisterMissionListener finished')
      })
  } catch (error) {
      console.error('unRegisterMissionListener failed, cause: ' + JSON.stringify(error))
  }
Q
ql 已提交
160 161 162
  ```


163
## distributedMissionManager.unRegisterMissionListener
Q
ql 已提交
164

165
unRegisterMissionListener(parameter: MissionDeviceInfo): Promise&lt;void&gt;
Q
ql 已提交
166 167 168 169 170 171 172 173 174

取消任务状态监听,以promise方式返回执行结果。

**需要权限**:ohos.permission.MANAGE_MISSIONS

**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission

**参数:**

H
HelloCrease 已提交
175 176 177
| 参数名       | 类型                                      | 必填   | 说明    |
| --------- | --------------------------------------- | ---- | ----- |
| parameter | [MissionDeviceInfo](#missiondeviceinfo) | 是    | 设备信息。 |
Q
ql 已提交
178 179 180

**返回值:**

H
HelloCrease 已提交
181 182 183
| 类型                  | 说明               |
| ------------------- | ---------------- |
| Promise&lt;void&gt; | promise方式返回执行结果。 |
Q
ql 已提交
184 185 186 187 188

**示例:**

  ```ts
  var parameter =  {
189
      deviceId: ""
Q
ql 已提交
190
  };
191 192 193 194 195 196 197 198 199 200
  try {
      distributedMissionManager.unRegisterMissionListener(parameter)
      .then(data => {
          console.info('unRegisterMissionListener finished, ' + JSON.stringify(data));
      }).catch(error => {
          console.error('unRegisterMissionListener failed, cause: ' + JSON.stringify(error));
      })
  } catch (error) {
      console.error('unRegisterMissionListener failed, cause: ' + JSON.stringify(error))
  }
Q
ql 已提交
201 202 203 204 205 206 207 208 209 210 211 212 213 214
  ```

## distributedMissionManager.startSyncRemoteMissions

startSyncRemoteMissions(parameter: MissionParameter, callback: AsyncCallback&lt;void&gt;): void;

开始同步远端任务列表, 以回调函数的方式返回。

**需要权限**:ohos.permission.MANAGE_MISSIONS

**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission

**参数:**

H
HelloCrease 已提交
215 216 217 218
| 参数名       | 类型                                    | 必填   | 说明        |
| --------- | ------------------------------------- | ---- | --------- |
| parameter | [MissionParameter](#missionparameter) | 是    | 同步信息。     |
| callback  | AsyncCallback&lt;void&gt;             | 是    | 执行结果回调函数。 |
Q
ql 已提交
219 220 221 222 223

**示例:**

  ```ts
  var parameter =  {
224
      deviceId: "",
Q
ql 已提交
225 226 227
      fixConflict: false, 
      tag: 0
  };
228 229 230 231 232 233 234 235 236 237
  try {
      distributedMissionManager.startSyncRemoteMissions(parameter, (error) => {
          if (error.code != 0) {
              console.error('startSyncRemoteMissions failed, cause: ' + JSON.stringify(error))
          }
          console.info('startSyncRemoteMissions finished')
      })
  } catch (error) {
      console.error('startSyncRemoteMissions failed, cause: ' + JSON.stringify(error))
  }
Q
ql 已提交
238 239 240 241 242 243 244 245 246 247 248 249 250 251
  ```

## distributedMissionManager.startSyncRemoteMissions

startSyncRemoteMissions(parameter: MissionParameter): Promise&lt;void&gt;

开始同步远端任务列表,以promise方式返回执行结果。

**需要权限**:ohos.permission.MANAGE_MISSIONS

**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission

**参数:**

H
HelloCrease 已提交
252 253 254
| 参数名       | 类型                                    | 必填   | 说明    |
| --------- | ------------------------------------- | ---- | ----- |
| parameter | [MissionParameter](#missionparameter) | 是    | 同步信息。 |
Q
ql 已提交
255 256 257

**返回值:**

H
HelloCrease 已提交
258 259 260
| 类型                  | 说明               |
| ------------------- | ---------------- |
| Promise&lt;void&gt; | promise方式返回执行结果。 |
Q
ql 已提交
261 262 263 264 265

**示例:**

  ```ts
  var parameter =  {
266
      deviceId: "",
Q
ql 已提交
267 268 269
      fixConflict: false, 
      tag: 0
  };
270 271 272 273 274 275 276 277 278 279
  try {
      distributedMissionManager.startSyncRemoteMissions(parameter)
      .then(data => {
          console.info('startSyncRemoteMissions finished, ' + JSON.stringify(data));
      }).catch(error => {
          console.error('startSyncRemoteMissions failed, cause: ' + JSON.stringify(error));
      })
  } catch (error) {
      console.error('startSyncRemoteMissions failed, cause: ' + JSON.stringify(error))
  }
Q
ql 已提交
280 281 282 283 284 285 286 287 288 289 290 291 292 293
  ```

## distributedMissionManager.stopSyncRemoteMissions

stopSyncRemoteMissions(parameter: MissionDeviceInfo, callback: AsyncCallback&lt;void&gt;): void;

停止同步远端任务列表, 以回调函数的方式返回。

**需要权限**:ohos.permission.MANAGE_MISSIONS

**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission

**参数:**

H
HelloCrease 已提交
294 295 296 297
| 参数名       | 类型                                      | 必填   | 说明        |
| --------- | --------------------------------------- | ---- | --------- |
| parameter | [MissionDeviceInfo](#missiondeviceinfo) | 是    | 同步信息。     |
| callback  | AsyncCallback&lt;void&gt;               | 是    | 执行结果回调函数。 |
Q
ql 已提交
298 299 300 301 302

**示例:**

  ```ts
  var parameter =  {
303
      deviceId: ""
Q
ql 已提交
304
  };
305 306 307 308 309 310 311 312 313 314
  try {
      distributedMissionManager.stopSyncRemoteMissions(parameter, (error) => {
          if (error.code != 0) {
              console.error('stopSyncRemoteMissions failed, cause: ' + JSON.stringify(error))
          }
          console.info('stopSyncRemoteMissions finished')
      })
  } catch (error) {
      console.error('stopSyncRemoteMissions failed, cause: ' + JSON.stringify(error))
  }
Q
ql 已提交
315 316 317 318 319 320 321 322 323 324 325 326 327 328
  ```

## distributedMissionManager.stopSyncRemoteMissions

stopSyncRemoteMissions(parameter: MissionDeviceInfo): Promise&lt;void&gt;

停止同步远端任务列表,以promise方式返回执行结果。

**需要权限**:ohos.permission.MANAGE_MISSIONS

**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission

**参数:**

H
HelloCrease 已提交
329 330 331
| 参数名       | 类型                                      | 必填   | 说明    |
| --------- | --------------------------------------- | ---- | ----- |
| parameter | [MissionDeviceInfo](#missiondeviceinfo) | 是    | 同步信息。 |
Q
ql 已提交
332 333 334

**返回值:**

H
HelloCrease 已提交
335 336 337
| 类型                  | 说明               |
| ------------------- | ---------------- |
| Promise&lt;void&gt; | promise方式返回执行结果。 |
Q
ql 已提交
338 339 340 341 342

**示例:**

  ```ts
  var parameter =  {
343
      deviceId: ""
344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362
  };
  try {
      distributedMissionManager.stopSyncRemoteMissions(parameter)
      .then(data => {
          console.info('stopSyncRemoteMissions finished, ' + JSON.stringify(data));
      }).catch(error => {
          console.error('stopSyncRemoteMissions failed, cause: ' + JSON.stringify(error));
      })
  } catch (error) {
      console.error('stopSyncRemoteMissions failed, cause: ' + JSON.stringify(error))
  }
  ```

## distributedMissionManager.continueMission

continueMission(parameter: ContinueDeviceInfo, options: ContinueCallback, callback: AsyncCallback&lt;void&gt;): void;

迁移任务,以回调函数的方式返回。

D
du-zhihai 已提交
363
**需要权限**:ohos.permission.MANAGE_MISSIONS and ohos.permission.DISTRIBUTED_DATASYNC
364 365 366 367 368 369 370

**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission

**参数:**

| 参数名       | 类型                                      | 必填   | 说明    |
| --------- | --------------------------------------- | ---- | ----- |
M
mingxihua 已提交
371 372
| parameter | [ContinueDeviceInfo](#js-apis-inner-application-continueDeviceInfo.md) | 是    | 迁移信息。 |
| options | [ContinueCallback](#js-apis-inner-application-continueCallback.md) | 是    | 迁移任务完成回调函数。 |
373 374
| callback | AsyncCallback&lt;void&gt; | 是    | 执行结果回调函数。 |

D
du-zhihai 已提交
375 376 377 378 379 380 381 382 383 384 385 386 387
**错误码:**

以下错误码的详细介绍请参见[分布式调度错误码](../errorcodes/errorcode-DistributedSchedule.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------------------- |
| 16300501 | The system ability work abnormally. |
| 16300502 | Failed to get the missionInfo of the specified missionId. |
| 16300503 | The application is not installed on the remote end and installation-free is not supported. |
| 16300504 | The application is not installed on the remote end but installation-free is supported, try again with freeInstall flag. |
| 16300505 | The operation device must be the device where the application to be continued is located or the target device to be continued. |
| 16300506 | The local continuation task is already in progress. |

388 389 390 391
**示例:**

  ```ts
  var parameter =  {
392 393 394 395
      srcDeviceId: "",
      dstDeviceId: "",
      missionId: 1,
      wantParam: {"key": "value"}
396
  };
W
wangyang2022 已提交
397 398
  function onContinueDone(resultCode) {
      console.log('onContinueDone resultCode: ' + JSON.stringify(resultCode));
399 400
  };
  var options = {
W
wangyang2022 已提交
401
      onContinueDone: onContinueDone
402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420
  };
  try {
      distributedMissionManager.continueMission(parameter, options, (error) => {
          if (error.code != 0) {
              console.error('continueMission failed, cause: ' + JSON.stringify(error))
          }
          console.info('continueMission finished')
      })
  } catch (error) {
      console.error('continueMission failed, cause: ' + JSON.stringify(error))
  }
  ```

## distributedMissionManager.continueMission

continueMission(parameter: ContinueDeviceInfo, options: ContinueCallback): Promise&lt;void&gt;

迁移任务,以promise方式返回执行结果。

D
du-zhihai 已提交
421
**需要权限**:ohos.permission.MANAGE_MISSIONS and ohos.permission.DISTRIBUTED_DATASYNC
422 423 424 425 426 427 428

**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission

**参数:**

| 参数名       | 类型                                      | 必填   | 说明    |
| --------- | --------------------------------------- | ---- | ----- |
M
mingxihua 已提交
429 430
| parameter | [ContinueDeviceInfo](#js-apis-inner-application-continueDeviceInfo.md) | 是    | 迁移信息。 |
| options | [ContinueCallback](#js-apis-inner-application-continueCallback.md) | 是    | 迁移任务完成回调函数。 |
431 432 433 434 435 436 437

**返回值:**

| 类型                  | 说明               |
| ------------------- | ---------------- |
| Promise&lt;void&gt; | promise方式返回执行结果。 |

D
du-zhihai 已提交
438 439 440 441 442 443 444 445 446 447 448 449 450
**错误码:**

以下错误码的详细介绍请参见[分布式调度错误码](../errorcodes/errorcode-DistributedSchedule.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------------------- |
| 16300501 | The system ability work abnormally. |
| 16300502 | Failed to get the missionInfo of the specified missionId. |
| 16300503 | The application is not installed on the remote end and installation-free is not supported. |
| 16300504 | The application is not installed on the remote end but installation-free is supported, try again with freeInstall flag. |
| 16300505 | The operation device must be the device where the application to be continued is located or the target device to be continued. |
| 16300506 | The local continuation task is already in progress. |

451 452 453 454
**示例:**

  ```ts
  var parameter =  {
455 456 457 458
      srcDeviceId: "",
      dstDeviceId: "",
      missionId: 1,
      wantParam: {"key": "value"}
459
  };
W
wangyang2022 已提交
460 461
  function onContinueDone(resultCode) {
      console.log('onContinueDone resultCode: ' + JSON.stringify(resultCode));
462 463
  };
  var options = {
W
wangyang2022 已提交
464
      onContinueDone: onContinueDone
Q
ql 已提交
465
  };
466 467 468 469 470 471 472 473 474 475
  try {
      distributedMissionManager.continueMission(parameter, options)
      .then(data => {
          console.info('continueMission finished, ' + JSON.stringify(data));
      }).catch(error => {
          console.error('continueMission failed, cause: ' + JSON.stringify(error));
      })
  } catch (error) {
      console.error('continueMission failed, cause: ' + JSON.stringify(error))
  }
Q
ql 已提交
476 477
  ```

478
## MissionCallback
Q
ql 已提交
479 480 481

表示开始同步后,建立的回调函数。

482 483
**需要权限**:ohos.permission.MANAGE_MISSIONS

H
HelloCrease 已提交
484
**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
Q
ql 已提交
485

H
HelloCrease 已提交
486 487 488 489 490
| 名称                    | 类型       | 可读   | 可写   | 说明                 |
| --------------------- | -------- | ---- | ---- | ------------------ |
| notifyMissionsChanged | function | 是    | 否    | 通知任务变化,返回设备ID。     |
| notifySnapshot        | function | 是    | 否    | 通知快照变化,返回设备ID,任务ID |
| notifyNetDisconnect   | function | 是    | 否    | 通知断开连接,返回设备ID,网络状态 |
Q
ql 已提交
491

492
## MissionParameter
Q
ql 已提交
493 494 495

表示同步时所需参数的枚举。

496 497
**需要权限**:ohos.permission.MANAGE_MISSIONS

H
HelloCrease 已提交
498
**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
Q
ql 已提交
499

D
du-zhihai 已提交
500
| 名称          | 类型    | 可读   | 可写   | 说明          |
H
HelloCrease 已提交
501 502 503 504
| ----------- | ------- | ---- | ---- | ----------- |
| deviceId    | string  | 是    | 是    | 表示设备ID。     |
| fixConflict | boolean | 是    | 是    | 表示是否存在版本冲突。 |
| tag         | number  | 是    | 是    | 表示特定的标签。    |
Q
ql 已提交
505

506
## MissionDeviceInfo
Q
ql 已提交
507 508 509

表示注册监听时所需参数的枚举。

510 511
**需要权限**:ohos.permission.MANAGE_MISSIONS

H
HelloCrease 已提交
512
**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
Q
ql 已提交
513

D
du-zhihai 已提交
514
| 名称       | 类型   | 可读   | 可写   | 说明      |
H
HelloCrease 已提交
515
| -------- | ------ | ---- | ---- | ------- |
M
mingxihua 已提交
516
| deviceId | string | 是    | 是    | 表示设备ID。 |