• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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&lt;void&gt; | 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&lt;void&gt;): 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&lt;void&gt;               | 是    | 执行结果回调函数。 |
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&lt;void&gt;
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&lt;void&gt; | 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&lt;void&gt;): 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&lt;void&gt;             | 是    | 执行结果回调函数。 |
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&lt;void&gt;
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&lt;void&gt; | 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&lt;void&gt;): 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&lt;void&gt;               | 是    | 执行结果回调函数。 |
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&lt;void&gt;
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&lt;void&gt; | 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&lt;void&gt;): void;
360
361迁移任务,以回调函数的方式返回。
362
363**需要权限**:ohos.permission.MANAGE_MISSIONSohos.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&lt;void&gt; | 是    | 执行结果回调函数。 |
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&lt;void&gt;
418
419迁移任务,以promise方式返回执行结果。
420
421**需要权限**:ohos.permission.MANAGE_MISSIONSohos.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&lt;void&gt; | 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。 |