1. 课程简介

本次课程主要通过纯代码开发搭建一个蒸馏塔权重参数计算及服务开放的APP,讲解如果通过调用supOS提供的OpenAPI来获取supOS的对象属性值,并计算得出的值反写给supOS的其他对象属性值,并在后端服务中开放接口来支持supOS对象服务中以脚本方式来调用,形成APP后端服务与supOS互联互通。以此demo来介绍如何利用supOS提供的基础能力完成APP的应用开发。

课程视频:立即查看>>

2. 课程适配范围

supOS版本:v3.0

3. 详细介绍

「背景介绍」

当无代码、低代码开发的形式已经不能满足功能需求时,开发者需要根据说明进行纯代码的开发。通过使用Java等语言实现业务功能、复杂算法、UI界面以及API接口等特性,再将其打包成为工业APP格式。这里我们选用以Java开发语言较为流行的SpringBoot框架举例,开发一个Demo来进行说明。

「环境准备」

1.准备3.0版本的supOS环境
2.目前Jar包形式的纯代码APP支持的开发语言是JAVA,其他工具信息如下:

类别 版本 备注
基础工具 jdk1.8 必须采用jdk1.8系列版本
开发IDE IntelliJ IDEA 不做强求,本文案例所用
包依赖管理 maven 不做强求,本文案例所用
springboot 2.0.0.RELEASE 不做强求,本文案例所用
算法依赖包 commons-codec.jar 最新版本即可

「场景故事」

为了保持蒸馏塔温度,根据蒸馏塔上层的温度和蒸馏塔下层的温度,进行一个特殊的算法((上层温度1.1 + 下层温度 0.9)/ 2),计算出当前冷却系统的输出功率的一个权重参数。

「场景分析」

首先需要通过openAPI从supOS中获取蒸馏塔的上层温度upperTemperature以及下层温度lowerTemperature,然后在JAR代码中进行一个特殊的算法,最后将数据反馈到supOS中的冷却泵对象中。

在supOS中需要先创建好两个对象模型:

蒸馏塔:

序号 建模类型 别名 描述 数据类型
1 对象实例 tower 蒸馏塔 /
2 对象属性 upperTemperature 蒸馏塔上层温度 double
3 对象属性 lowerTemperature 蒸馏塔下层温度 double

冷却泵:

序号 建模类型 别名 描述 数据类型
1 对象实例 pump 冷却泵 /
2 对象属性 outerWeigh 功率输出指标系数 double

「数据流转流程图」

image-20210416171445750

「代码开发」

  • Jar包开发基本配置要求:
    1.要求JAR服务对外暴露的端口为8080(详见源码包)
    2.必须提供health健康检查服务(详见源码包)

  • Jar包本地开发必须参数配置:
    1.supOS服务器地址(例如 http://xxxx.devcloud.supos.net
    2.app-id和app-secret(开发时从supOS的“系统管理”-“系统配置”-“AK/SK凭证管理”中新增来获取)

  • Jar包主要业务逻辑:
    1.获取supOS中蒸馏塔对象的上下温度值(涉及接口URL:/openapi/objects/v1/properties/current method:POST)
    2.计算出当前冷却系统的输出功率的一个权重参数
    3.给supOS的风机对象的权重参数设值(涉及接口URL:/openapi/objects/v1/properties/pump/services/setPropertyValues method:POST)

「本地打包和上传」

在本地开发环境打成jar包后并上传至supOS设计器中的APP

步骤:打开APP - 基础信息 - 上传JAVA包 - 保存

image-20210416173224724

「在线生成安装包」

image-20210416173949098

image-20210416174041011

image-20210416174117000

image-20210416174144299

「APP安装和启动」

image-20210416174329037

image-20210416175350057

image-20210416180955888

image-20210416181027141

「验证安装包运行」

1.在App内,创建一个对象实例,然后创建一个自定义服务,在服务中执行如下代码

var baseUrl = “{SUPOS_ADDRESS}/apps/{vendorName}-{appName}/health”;
var httpservice = services[“HttpClientService”];
var result = httpservice.getString(baseUrl,3000);
result;

测试结果:返回“health”表示访问JAR提供的服务接口成功。

image-20210416182341352

2.APP页面测试结果

image-20210416181801262