你可以使用命令框架服务向设备上正在运行的应用程序发送命令。
例如,Predix云中的EdgeManager设备管理应用程序能够向任何使用命令框架服务设备的单独的应用程序发送命令。
为了传递EdgeManager的命令,Predix机器需要得到想要达到的每个它所访问的应用程序的命令处理程序程序。应执行每个命令处理程序程序需要被实现以与具体的应用程序进行通信。
注:
参见创建命令处理程序
工作流
本范例展示了机器命令处理程序程序执行 getlogs 命令的工作流。
1. 云网关依据根据以下三大条件之一与边缘网关进行同步:
- 1.Sever-Sent Events服务器发送事件 (SSE)
- 2.在云网关配置中设置的时间间隔
- 3.机器上运行的应用程序发送一个同步请求
2. 边缘网关向 get logs推送一项任务。
3. 云网关将命令传递给命令调度程序。
4. 命令调度程序将命令识别为机器命令,并向机器处理程序发送消息。
5. 机器处理程序通过向边缘网关端点发表日志执行所需的操作。
6. 机器处理程序向云网关发送成功状态消息。
7. 云网关储存状态消息直到下一次同步周期。
8. 将状态消息上传至云端。
下图显示了工作流。
命令框架消费者配置
Maven依赖项
消费进行命令框架服务时需要下列Maven依赖项:
OSGI导入
在消费消耗捆绑包中时,需要导入下列OSGI:
在Predix机器中安装命令框架
为了使用命令框架服务,你必须生成一个Predix机器供应容器,包括命令框架和云网关捆绑包。
你可以使用命令行脚本或Predix机器SDK在Eclipse中生成容器。
? 使用命令行生成容器。
例如,GenerateContainers.bat D\users\16.4.0\SDK\eclipse-jee-mars-SR2-win32-x8-64.zip -PROV
注:
欲了解使用脚本生成容器的完整说明,参见用命令行脚本生成Predix机器运行时容器。
? 用Predix机器SDK生成容器,并在Predix功能组捆绑包类型中添加Predix供应支持捆绑包。
注:
欲了解使用Eclipse生成容器的完整说明,参见用Eclipse生成Predix机器运行时容器。
创建命令处理程序程序
为了使用命令框架服务,你必须生成一个Predix机器供应容器,包括命令框架和云网关捆绑包。
你可以使用命令行脚本或Predix机器SDK在Eclipse中生成容器。
? 使用命令行生成容器。
例如,GenerateContainers.bat D\users\16.4.0\SDK\eclipse-jee-mars-SR2-win32-x8-64.zip -PROV
注:
欲了解使用脚本生成容器的完整说明,参见用命令行脚本生成Predix机器运行时容器。
? 用Predix机器SDK生成容器,并在Predix功能组捆绑包类型中添加Predix供应支持捆绑包。
注:
欲了解使用Eclipse生成容器的完整说明,参见用Eclipse生成Predix机器运行时容器。
创建命令处理程序程序
要订阅命令,应用程序必须注册命令处理程序程序服务实现执行 ICommandHandler 接口。调度新命令时,在调度程序中注册并调用这项服务。
下列范例显示了如何执行一个命令处理程序:
命令和命令格式
命令格式
EdgeCommand Protobuf对象发送至机器
CommandStatus Protobuf Object 返回至CloudGateway。
命令
Predix机器命令处理程序提供下列命令。
命令输出
应通过下列一种方式返回命令输出。如果一个命令有两种执行方式,只有CommandStatus对象(第一种方式) 中的输出会在EdgeManager UI中显示。
1.通过输出字段中的 CommandStatus 对象发送输出。
注:
限制为< 1KB的字符串输出。
2.通过提供的URL上传输出。
命令状态枚举
下表描述了 CommandStatus 对象中的枚举值和设定值描述。
向命令处理程序发布一条命令
用声明服务注入命令框架服务,例如:
机器命令处理程序
你可以使用机器命令处理程序与Predix机器进行通信。例如,EdgeManager将命令发送至机器命令处理程序,可以启用或禁用Predix机器网络控制台。
配置机器命令处理程序
你可以配置机器命令处理程序。
格式化.config文件(不是.cfg文件)内的属性值时,使用类型字符,之后跟加引号引用的值字符串值表示。例如,一个布尔型属性=B”true”。小写类型字符表示基本数据。字符串的类型可以省略。下表列出了类型和对应的类型字符:
数组格式为属性=<类型>[”<值1>”,”<值2>”]。例如,整型数组属性=I[“1”, “2”, “3”].清晰起见,可使用反斜杠分隔换行。
- 找到并打开下列文件:
- 打开com.ge.dspmicro.device.commandhandler.machinecomm.config 文件并设置下列属性: