# 分布式任务调度子系统 ## 简介 分布式任务调度模块负责跨设备组件管理,提供访问和控制远程组件的能力,支持分布式场景下的应用协同。分布式调度模块组成如下图所示: ![](figures/zh-cn_image_0000001055103250.png) ## 目录 分布式任务调度源代码目录结构如下表所示: **表1 **主要源代码目录结构

名称

描述

dtbschedmgr_lite

分布式任务调度实现

safwk_lite

foundation进程实现

其中轻量级分布式任务调度的源代码目录结构如下: ``` ├── BUILD.gn ├── include │ ├── distributed_schedule_service.h # 分布式调度对外接口 │ ├── dmslite_check_remote_permission.h # 分布式调度权限管理模块 │ ├── dmslite_famgr.h # 分布式调度FA管理模块 │ ├── dmslite_inner_common.h # 分布式调度内部通用文件 │ ├── dmslite.h # 分布式调度服务实现 │ ├── dmslite_log.h # 日志模块 │ ├── dmslite_msg_parser.h # 分布式消息解析模块 │ ├── dmslite_tlv_common.h # TLV格式数据解析模块 │ └── dmslite_session.h # 跨设备通信收发模块 ├── readme.md ├── LICENSE ├── source ├── distributed_schedule_service.c ├── dmslite.c ├── dmslite_check_remote_permission.c ├── dmslite_famgr.c ├── dmslite_msg_parser.c ├── dmslite_tlv_common.c └── dmslite_session.c ``` ## 约束 **语言限制**:C/C++语言 **组网环境**:必须确保设备在同一个局域网中,主从设备能互相ping通 **操作系统限制**:OpenHarmony操作系统 **远程启动的约束与限制:** - 支持远程启动FA,不支持远程启动SA - 远程启动前必须确保主设备与从设备间分布式组网成功,否则无法远程启动 ## 使用 - **轻量级分布式调度模块编译** 轻量级分布式调度模块,其代码所在目录如下: ``` foundation/distributedschedule/services/dtbschedmgr_lite ``` 在针对不同平台进行编译时,需要在指定目标平台,以下以hi3516dv300为例: ``` python build.py ipcamera -p hi3516dv300_liteos_a ``` - **主设备程序开发**(以拉起FA为例) 构造意图参数want,设置需要启动的远端设备ID,包名,元能力类名信息,以及分布式标志位Want.FLAG\_ABILITYSLICE\_MULTI\_DEVICE以使能分布式启动 ``` import ohos.aafwk.ability.Ability; import ohos.aafwk.content.Want; import ohos.bundle.ElementName; // 构造want参数 Want want = new Want(); ElementName name = new ElementName(remote_device_id, "com.huawei.remote_bundle_name", "remote_ability_name"); want.setElement(name); // 将待启动的FA信息添加到Want中 want.setFlags(Want.FLAG_ABILITYSLICE_MULTI_DEVICE); // 设置分布式标记,若不设置将无法使用分布式能力 // 启动远程设备FA startAbility(want); // 按照Want启动指定FA,want参数命名以实际开发平台API为准 ``` - **预置条件** 从设备侧需安装对应包名的FA - **运行**(以拉起FA为例) 执行主设备侧的startAbility即可拉起从设备FA ## 涉及仓 distributedschedule\_interfaces\_kits\_samgr\_lite distributedschedule\_services\_dtbschedmgr\_lite distributedschedule\_services\_safwk\_lite