-
根据规划的人行闸机设备IO的应用名称和ID,在ROMA平台注册应用。登录ROMA平台。鼠标移到左上角应用名上,在下拉框中选择“应用注册”。图1 应用注册设置应用信息,如图2所示,单击“提交”。其中GTM001为租户名称,实际开发时请替换为自己实际的租户名或者用户名。应用ID:GTM001__io.device.basepoint.Turnstile_BP应用名称:GTM001__人行闸机设备IO所属组织:选择默认值ROMA。认证类型:选择“私钥认证”。图2 注册新应用应用注册成功后返回“应用管理”界面,单击上一步创建的应用的“密钥管理 > 显示密钥”,验证用户后获取GTM001__人行闸机设备IO的请求密钥(AppKey)。将“请求密钥”拷贝到本地写字本中,以便后续步骤使用。在“应用管理”界面搜索“新基点IoT”,获取新基点IoT IO的应用ID和请求密钥,保存到本地以便后续步骤使用。
-
开发流程设备IO的开发流程如表1,开发规范请参考《集成平台开发规范》。表1 设备IO开发流程流程说明注册应用在ROMA平台注册设备IO的应用名称和应用ID。创建Topic并设置订阅/发布创建接收设备原始消息的Topic、接收设备原始告警消息的Topic。环境配置/密码配置通过环境配置/密码配置,将参数或者密码设为全局变量,后续代码中通过全局变量获取对应参数、参数值、密钥和密码等。开发消息上报接口设备IO的消息上报接口,共包含3个LiveData接口。开发指令下发接口设备IO的指令下发接口,1个LiveData接口。设备IO数据规划规划应用ID、Topic和接口URL,如表2所示。表2 设备IO的数据规划参数样例说明租户GTM001下面样例中的“GTM001”为租户名称。本章节在开发过程中,要在设计内容的基础上增加后缀“__GTM001”或者前缀“GTM001__”,即携带租户信息。deviceTypeTurnstile_BPIoT系统对应的IO通过消息体中的“deviceType”参数,确定要路由的设备IO。其中“BP”指新基点IoT(BasePoint),在多IoT场景中以“deviceType”中的后缀(例如“_BP”)区分不同的IoT。在实际开发过程中,根据设备实际接入的IoT系统来增加后缀。应用IDGTM001__io.device.basepoint.Turnstile_BP人行闸机IO在ROMA平台的应用ID。其中GTM001为租户名称,实际开发时请替换为自己实际的租户名或者用户名。应用名称GTM001__人行闸机设备IO人行闸机IO在ROMA平台的应用名称。Topic接收新基点IoT发来的设备原始消息的Topic:T_IO_DATACHANGED_Turnstile_BP__GTM001人行闸机IO需要2个Topic接收新基点IoT发来的消息:一个接收设备原始消息,一个接收设备告警消息。其中GTM001为租户名称,实际开发时请替换为自己实际的租户名或者用户名。接收新基点IoT发来的设备原始告警消息的Topic:T_IO_ALARM_Turnstile_BP__GTM001接收设备信息变化的标准Topic:T_IO_DEVICE_DATACHANGED__GTM001消息格式标准化之后:转换后的设备原始消息,推送给设备信息变化标准Topic。转换后的设备告警消息,推送给设备告警的标准Topic。这2个Topic只需要创建一次即可,所有设备IO转换后的标准消息都推送给它们,不需要重复创建。接收设备告警的标准Topic:T_IO_DEVICE_ALARM__GTM001API设备数据变化消息回调(人行闸机)URL:/io/GTM001__io.device.basepoint.Turnstile_BP/device/data-changed人行闸机IO的2个LiveData接口,分别订阅如下2个Topic进行数据格式标准化。T_IO_DATACHANGED_Turnstile_BP__GTM001T_IO_ALARM_Turnstile_BP__GTM001其中GTM001为租户名称,实际开发时请替换为自己实际的租户名或者用户名。设备告警消息回调(人行闸机)URL:/io/GTM001__io.device.basepoint.Turnstile_BP/device/alarm开放订阅关系的配置接口URL:/io/GTM001__io.device.basepoint.Turnstile_BP/device/mqsSet消息订阅接口,开放订阅关系的配置接口,用于订阅设备变化、告警消息。人行闸机设备IO指令下发URL:/io/GTM001__io.device.basepoint.Turnstile_BP/south/send-command/0.1.0人行闸机设备IO指令下发包含一个LiveData接口,名称为“指令下发(人行闸机)”。
-
设备IO的需求园区一般集成了多种设备,不同设备上报的消息体、格式各不相同,业务平台(AppCube平台)对消息格式有统一化的要求,因此需要在集成平台(ROMA平台)对上报的消息进行拆分、格式化处理,从而屏蔽设备原始消息与标准消息之间的差异问题。基线通过设备IO来实现设备原始消息转化为标准消息的功能。设备IO的功能介绍设备通过IoT(例如新基点IoT)系统接入到ROMA平台。设备IO用于处理设备上报给ROMA平台的消息,以及ROMA平台下发给设备的指令数据,而消息上报和指令下发都要通过IoT(如新基点IoT)来实现。图1 设备IO功能下面以新基点IoT系统、人行闸机设备IO为例,介绍设备IO的消息处理流程,如表1所示。表1 设备IO的消息流程功能流程消息上报人行闸机设备数据变化/告警消息,由新基点IoT IO拆分成设备数据变化或者设备告警消息,并转发给人行闸机设备IO。人行闸机设备IO对数据格式进行转换标准化,并发送到标准Topic完成消息上报。指令下发设备管理标准接口应用路由业务侧的指令到IO Adapter应用。IO Adapter依据“channel”参数确定指令要路由到哪个IoT(南向物联网系统)。“channel”参数用于多IoT平台的场景。例如要将指令路由到新基点IoT,那么业务侧指令应该携带的“channel”值为“basepoint.connectionmax.iot”。南向物联网系统对应的IO通过消息体中的“deviceType”参数,确定要路由的设备IO,并携带accessToken。设备IO将业务侧下发的指令转换为实际物理设备可以执行的指令,并调用南向物联网系统的指令下发接口。
-
非常高兴能够获得2021年华为智慧园区开发者奖项,2021年我们福建省委党校项目交付全部采用ABC、ROMA、大禹等华为全栈式园区数字平台搭建、开发及应用。对于咱们开发人员来说,确实对研发人员要求,比咱们传统开发有所降低,数字平台基本上采用拖拉拽、页面配置、少量定制开发等方式实现项目应用。在生产环境一直延迟提供的情况下,华为协助我们提供开发平台环境和集成验证环境帮助我们提前开发及交付,让我们感到非常的便利。我们对未来的数字园区诉求是尽快减少定制化开发,更简易调测,问题定位协调渠道够高效;对方案方面的建议就是是否可以把所有的园区涉及到的能够汇总到一起或一个文档,方便调测,这样对实施人员来说更容易寻找。
-
兼容与可定制点密切相关。解决方案的定制与配置分层分为四层,参见如下示意图。Addon方式属于旧的定制模式,不推荐使用;推荐伙伴直接采用App源码包作白盒修改,基线不对参考应用/场景应用作兼容和升级保证,只保证Core的兼容。兼容性目标兼容性是以基线版本为基础,相对于定制版本而言。后向兼容(向下兼容/向后兼容):现在版本兼容以前版本生成的数据、或扩展实现(如定制版本)。对智慧园区即,基线20.0版本支持‘for 基线C00版本’的定制程序包。前向兼容(向上兼容/向前兼容):以前版本支持现在版本生成的数据、或扩展实现(如定制版本)。对智慧园区即,基线C00版本支持‘for 基线20.0版本’的定制程序包。兼容性主要的关注点有向前兼容和向后兼容。智慧园区基线解决方案主要满足后向兼容。兼容性设计目标:支持解决方案基线和定制版本的独立演进。基线版本升级不影响一定版本范围内的定制版本。正式发布的版本要100%后向兼容2个R版本或1年时间(取两者时间较短的一个)。兼容性范围基线解决方案定义兼容性设计的目标范围如下:Core承诺兼容性,包括:Core资产(含BO、IO、DO)、App Framework(含Unified Portal和System Management)、实例化数据等核心资产,对外暴露的服务及Widget需要保证兼容性。场景App作为参考实现(不含Unified Portal和System Management),内部包含的API、Script、Page、Widget等供平台ISV伙伴参考,不承诺兼容性。伙伴升级时,不需要升级App,只需要升级核心Core资产;伙伴可以订购新的App。配置数据需要伙伴参考规范,才能保证兼容性。影响兼容性的主要场景在基线版本交付中包含的主要实体有:业务对象BO、数据资产DO、集成资产IO、配置参数数据、参考应用App、Resouce(Global Widget等)。一个新的功能要满足版本的兼容,本质上是要解决上述关键实体的兼容性设计问题。基线版本兼容性问题的场景主要有如下几方面:1) 基线版本增加新功能:已经发布的实体承载的业务能力不能满足要求,需要在原有增加新的实体来满足业务场景的要求。2) 基线版本修改某个功能缺陷/逻辑:已经发布的功能存在Bug或者问题,需要对原有的功能进行修复,但不会对具体API、业务对象的定义进行修改。3) 基线版本增强已有功能:对原有能力的增强,已经发布的实体在继承原有能力的同时需要进一步的增强其能力。例如原有的API接口/业务对象定义保持不变,但是需要增加新的逻辑到原有的逻辑实现中。4) 基线版本修改已有功能:原有功能不再有效,或者需要把原有者功能进行修改。其本质是停止原有功能,增加新功能。5) 基线版本调整已有功能:已经发布的实体的职责进行重新的调整划分导致。例如业务实体提供的某些服务迁移到其他业务实体中。6) 基线版本删除现有功能:禁止使用或者不再提供已有的功能。如果单纯出现这种场景就直接破坏了兼容性的要求。关键场景与兼容性对应关系:兼容性设计影响场景增加新功能修改缺陷增强已有功能修改已有功能调整已有功能删除现有功能是否符合向后兼容性设计符合符合符合不符合不符合不符合基线版本升级是否影响定制版本不影响不影响不影响影响影响影响关键场景与业务对象对应关系:以BO为例分析,场景对应业务BO,BO提供实体对象的服务/api。交付件场景①增加新功能②修改缺陷③增强已有功能④修改已有功能⑤调整已有功能⑥删除现有功能开放API新增服务/API定义服务/api定义不变服务/api定义不变服务/api定义发生变化服务/api定义发生变化服务/api定义发生变化业务对象新增业务对象业务对象定义不变业务对象定义不变业务对象定义发生变化业务对象定义发生变化业务对象定义发生变化建议措施可以新增可以修改可以增强增加服务/API的新版本,保留旧版本增加服务/API的新版本,保留旧版本增加废弃标识,在2个R版本后正式删除从现有的分析来看,场景①②③满足向后兼容,场景④⑤⑥不满足向后兼容,在定制版本需要满足向后兼容的设计中要尽量避免场景④⑤⑥的出现;出现场景④⑤⑥时按照建议措施进行处理。兼容性检查和发布兼容性检查工具:在开发态,能基于系统的实现扫描并产生兼容性检查报告,同时标识出不兼容点;由开发人员对照检查不兼容点属于上一节描述的哪种场景,采取对应的处理措施。实例化工具:在升级态,能够比较定制和基线实例化数据的差异点并产生兼容性检查报告,同时标识出不兼容点,并提供对不兼容点的处理策略,比如:保留定制实例化数据、定制与基线合并、使用基线实例化数据等。实例化数据升级检查工具:在生产态,能够比对定制和基线升级的实例化数据的差异,并生成实例化数据升级兼容检查,以便升级人员针对性的检查和处理。兼容性说明资料:版本发布时,需要对应发布兼容性说明资料,说明当前版本对各个对象的兼容情况,并提供不兼容点的处理策略,比如:暂时不修改待2个R版本前完成修改即可、立即修改、修改实例化数据等。升级脚本或工具:涉及到超过2个R版本(或1年时间)的修改,根据需要可提供升级脚本或工具,辅助定制版本进行升级。兼容性前提平台兼容性平台的兼容性是基线兼容的重要前提条件。平台保证平台本身的API特性的兼容性。平台保证平台提供的参数的兼容,并支持打包在平台版本中,基线修改参数可覆盖平台的参数值。平台支持App和BO的版本机制,并能管理对于的版本对应关系。平台保证基线资产schema对象做到租户隔离升级【暂未实现】。平台支持对API进行使用检查,对于不推荐使用的API、Flow、Script在开发态进行限制和提示,避免伙伴定制超出约定范畴。定制范围约束App仅作为参考实现(不含Unified Portal和System Management),对伙伴开发直接复制一份进行完全的白盒修改。BO严格遵循兼容原则,只开放API供伙伴进行BO的Addon,BO内部的DB的扩展机制确保兼容(平台保证),BO内部的Flow、Script对伙伴不可见。App内部的Widget和api,跟随App的原则,仅供参考修改,不支持兼容。
-
问题现象使用FusionCompute对Cube下电后,数据平台GaussDB无法正常启动。原因分析使用FusionCompute批量提交关闭电源后,FusionCompute关闭虚拟机时异步的操作,高斯主备双机可能不是同时关闭的。例如主机先关闭,这个时候备机还没有关闭,这样就会导致触发双机切换动作,产生lock文件。lock文件产生后,备机还没有成功切主机,备机又被FusionCompute关掉,这样就会导致Lock文件遗留。等到上电时,双机检测就会产生异常。解决方法上电之后,以root用户分别登录GaussDB的主备机检查GaussDB的状态。# su - gaussadmin21.0之前的版本使用gaussdba。$ gs_ctl query然后分别在主备双机上执行gs_ctl query查看高斯数据库的状态是否为normal,角色是否正确。主机: Ha state: LOCAL_ROLE : Primary STATIC_CONNECTIONS : 1 DB_STATE : Normal DETAIL_INFORMATION : Normal ......备机: Ha state: LOCAL_ROLE : Standby STATIC_CONNECTIONS : 1 DB_STATE : Normal DETAIL_INFORMATION : Normal .....如果不是normal状态,继续下一步定位。以root用户分别登录主备机检查双机日志。检查/data01/keepalived/bin/keepalive_chk_gaussdb.log日志中是否一致在打印check lock file exist,stop switch日志。如果存在,进入到/data01/keepalived/bin目录下删除primary.lock或者standby.lock文件。等待一会后参考1检查双机状态。
-
监控总览监控总览页面可以看到应用App、数字平台、容器、虚拟机的告警汇总情况。登录Cube线下运维台Portal。选择“运维中心>监控中心>监控总览”,查看应用App、数字平台、容器、虚拟机的告警汇总数量。图1 监控总览单击告警数值,打开对应的告警查询页面,可进一步查看告警详情。图2 告警列表单击可以查看告警详细信息,根据详细信息中的处理步骤完成告警的处理。图3 告警详细信息
-
智慧园区解决方案以Cube形态部署时,会在Cube中部署Ops本地运维台,实现对数字平台、园区资产等的健康检测。当前Cube线下运营台提供的检测能力如表1所示。表1 监控能力概述能力说明告警监控汇总展示对Cube中产生的告警进行汇总展示,包括监控总览和应用监控两个页面。当前Ops可接入并告警的内容如图1所示。Ops通过调用交换机、服务器和Fusion Computer的接口,获取设备运行信息;当前相关接口调用失败时,会产生物理层告警。Ops未实现对同步交换机和Fusion Computer自身告警的集成同步;如果查看对应告警,需要登录交换机、FCC的监控页面去查看。容器的告警中不包含对IVS纳管容器的告警统计;IVS容器的告警监控在CSP中。数字平台的告警中不包含GIS(超图和中地)、IVS、iVAS等的告警统计;如果需要查看对应告警,需要登录到各系统自己的告警系统中。Ops业务层告警中默认包含对BO、IO和DO的状态检测;如果选装了部分基线APP,需要手工修改监控配置文件;默认IO监控检查关闭状态,项目更加实际对接的南向系统,通过配置ROMA的环境参数,开启的告警;对于DO监控,datatool启动后会自动产生告警;原生BO通过SDK发送告警;以及检测License过期状态发送告警。虚机资源监控展示Cube中所有虚机的分布,可查看每个虚机的资源状态。同时,该界面提供虚机和容器管理portal的跳转链接。当前仅支持跳转到CCE敏捷版的WEB界面和青云KS的WEB界面。设备监控展示交换机、服务器的运行状态,并提供设备管理portal的跳转链接。暂没有实现对IVS所在服务器(TaiShan 5280 V2)的CPU和MEM使用率的采集。图1 Cube线下运维台的告警监控范围表2 告警监控查看方法运维对象维度在OPS运维台上的操作路径服务器基本信息和状态查询监控中心>设备监控告警查询监控中心>监控总览:单击物理设备告警统计数字,跳转到告警列表查询详情。交换机基本信息和状态查询监控中心>设备监控告警查询监控中心>设备监控:单击设备管理中的链接,跳转到交换机管理web界面,需要二次登录。虚拟机虚拟机分布图和基本信息查询监控中心>资源监控虚拟机告警查询监控中心>监控总览:单击虚拟机告警统计数字,跳转到告警列表查询详情。虚拟机管理监控中心>资源监控:单击“虚拟机管理”链接,跳转到FCC的界面,需要二次登录。容器容器告警查询监控中心>监控总览:单击容器告警统计数字,跳转到告警列表查询详情。容器的管理监控中心>资源监控:单击“容器管理”链接,跳转到K8S的界面,需要二次登录。数字平台(ABC/ROMA/Ops/AppCube的MySQL/DataTool/DataTool的GaussDB/GIS-伟岸/IOT/奥看)告警查询监控中心>应用监控:在“数字平台”页签中单击平台的告警统计数字,跳转到告警列表查询详情。数字平台(IVS)告警查询在Ops中没有入口,直接登录IVS的网管CSP查询,参阅IVS产品手册。数字平台(GIS-超图、中地)告警查询在Ops中没有入口,需要参考对应产品手册进行运维操作。数字平台(IAM/iVAS/VDCP)告警查询暂不在范围中。业务应用告警查询监控中心>应用监控:在“App应用”页签中单击告警统计数字,跳转到告警列表查询详情。
-
发布到生产环境发布到客户的WeLink环境,并在客户的AppCube生产环境安装移动APP。在AppCube安装移动APP。获取移动APP的zip安装包。登录客户的AppCube生产环境,在“管理 > 应用管理 > 软件包管理 > 软件包安装”下安装移动APP。选择“管理>用户管理>公司配置>公司信息”查看并保存租户ID,例如:0000000000XWnAab0LzN创建WeLink访问AppCube的鉴权信息,获取客户端ID和客户端密钥。创建子账号。因为沃土数字平台的要求,必须先完成租户实名认证,才能新增子账号。访问沃土数字平台官网。使用客户AppCube租户账号登录。鼠标放在界面右上角的租户名称上,单击“个人中心”。选择“我的账号>子账号管理”,进入子账号管理界面。单击“新增”。填写账号名、密码、邮箱、手机号。单击“提交”。账号名建议配置为租户名_welink,例如“SmartCampus_welink”。修改子账号的Profile。使用客户AppCube租户账号登录AppCube生产环境。选择“管理>用户管理>用户”。在用户列表中可以看到上一步创建的子账号。该子账号的默认Profile是“Developer Profile”。单击用户名,打开用户编辑界面,将其Profile修改为“Anonymous_User_Profile”。选择“管理>系统管理>OAuth”,单击“新建”。设置“名称”和“用户”,单击“保存”。名称:根据需要设置。授权类型:选择“客户端模式”。用户:选择上一步的子账号,例如“SmartCampus_welink”。单击操作列的查看密钥按钮,将密钥文件下载到本地。密钥可以只创建一次,下次发布时可以使用已创建好的,不需要重复新建。密钥文件中包含如下参数:username:SmartCampus_welinkclient_id:b6b7a7784xxxxxxxx17fa1a9732b743dclient_secret:d4d72bc4ce171xxxxxxxxxx6753ce64119084083ff32bc80使用客户的WeLink管理员账号/普通账号,登录PC端的HUAWEI CLOUD WeLink开放平台,在“企业内部应用 > We码”下创建We码应用。APP的名称为商用后在手机端显示的应用名称,例如“移动安防中心”。移动安防中心的应用图标为安防中心Logo.zip。发布移动APP到客户的WeLink后台。登录开发者的AppCube开发环境,进入移动APP的开发态,单击左下角的发布图标,选择“WeLink(蓝标WeLink)”。在弹出的WeLink登录界面,输入客户的WeLink管理员账号/普通账号登录。必须确保是发布到客户的WeLink环境。如果之前登录过别的WeLink账号,这里会自动进入发布页面,需要退出之前登录的WeLink账号,或者清除缓存后再重新发布。进入发布页面,配置发布参数。表3 参数说明参数描述应用ID选择在WeLink上创建的应用,即3中创建的APP,例如“移动安防中心”。版本号根据需要设置。主页选择一个页面作为移动APP的在手机端显示的默认页面,例如:“移动安防中心”选择“SmartCampus_workorder”。说明:每个移动APP的默认首页,由开发者指定,例如:移动安防中心的主页是“workorder”。便捷通行的主页是“personpass”。环境类型选择“生产环境”。生产环境域名客户的AppCube生产环境域名,用于移动APP运行态时关联生产环境的后端服务。生产环境客户端ID在客户的AppCube生产环境下创建的OAuth认证密钥,即2中创建的WeLink环境的鉴权信息。例如:b6b7a7784xxxxxxxx17fa1a9732b743d、d4d72bc4ce171xxxxxxxxxx6753ce64119084083ff32bc80。生产环境客户端密钥开启调试根据需要设置。关闭:选择“关闭”时,发布后移动端的APP打开的时候没有“vConsole”按钮,vConsole用于开发者调试。开启:选择“开启”时,则能看到vConsole。单击“发布”后,单击提示框的“确定”跳转到WeLink的“版本管理”界面。单击开发版中的“发布版本”,在弹出的“发布版本”界面填写本次更新内容,单击“确定”。管理员审核通过后,We码小程序在开发后台即显示为线上版。配置WeLink隐私声明。使用客户的WeLink管理员账号登录HUAWEI CLOUD WeLink控制管理台。选择“安全策略>隐私设置”,单击“编辑”配置隐私参数:组织隐私声明:开启声明链接名称:配置为“华为智慧园区隐私声明”。声明链接地址:配置为“https://app.xxx.com/magno/render/SmartCampus__SystemManagement_0000000000Vocvxxxx/PrivacyStatementMobile”,红色部分内容需修改,其中:“app.xxx.com”为客户的AppCube生产环境域名,例如https://app.besclouds.com“0000000000Vocvxxxx”请修改为企客户的AppCube租户ID,获取方法请参见1。隐私责任人:配置为“华为智慧园区”。
-
发布到生产环境发布到客户的WeLink环境,并在客户的AppCube生产环境安装移动APP。在AppCube安装移动APP。获取移动APP的zip安装包。登录客户的AppCube生产环境,在“管理 > 应用管理 > 软件包管理 > 软件包安装”下安装移动APP。选择“管理>用户管理>公司配置>公司信息”查看并保存租户ID,例如:0000000000XWnAab0LzN创建WeLink访问AppCube的鉴权信息,获取客户端ID和客户端密钥。创建子账号。因为沃土数字平台的要求,必须先完成租户实名认证,才能新增子账号。访问沃土数字平台官网。使用客户AppCube租户账号登录。鼠标放在界面右上角的租户名称上,单击“个人中心”。选择“我的账号>子账号管理”,进入子账号管理界面。单击“新增”。填写账号名、密码、邮箱、手机号。单击“提交”。账号名建议配置为租户名_welink,例如“SmartCampus_welink”。修改子账号的Profile。使用客户AppCube租户账号登录AppCube生产环境。选择“管理>用户管理>用户”。在用户列表中可以看到上一步创建的子账号。该子账号的默认Profile是“Developer Profile”。单击用户名,打开用户编辑界面,将其Profile修改为“Anonymous_User_Profile”。选择“管理>系统管理>OAuth”,单击“新建”。设置“名称”和“用户”,单击“保存”。名称:根据需要设置。授权类型:选择“客户端模式”。用户:选择上一步的子账号,例如“SmartCampus_welink”。单击操作列的查看密钥按钮,将密钥文件下载到本地。密钥可以只创建一次,下次发布时可以使用已创建好的,不需要重复新建。密钥文件中包含如下参数:username:SmartCampus_welinkclient_id:b6b7a7784xxxxxxxx17fa1a9732b743dclient_secret:d4d72bc4ce171xxxxxxxxxx6753ce64119084083ff32bc80使用客户的WeLink管理员账号/普通账号,登录PC端的HUAWEI CLOUD WeLink开放平台,在“企业内部应用 > We码”下创建We码应用。APP的名称为商用后在手机端显示的应用名称,例如“移动安防中心”。移动安防中心的应用图标为安防中心Logo.zip。发布移动APP到客户的WeLink后台。登录开发者的AppCube开发环境,进入移动APP的开发态,单击左下角的发布图标,选择“WeLink(蓝标WeLink)”。在弹出的WeLink登录界面,输入客户的WeLink管理员账号/普通账号登录。必须确保是发布到客户的WeLink环境。如果之前登录过别的WeLink账号,这里会自动进入发布页面,需要退出之前登录的WeLink账号,或者清除缓存后再重新发布。进入发布页面,配置发布参数。表3 参数说明参数描述应用ID选择在WeLink上创建的应用,即3中创建的APP,例如“移动安防中心”。版本号根据需要设置。主页选择一个页面作为移动APP的在手机端显示的默认页面,例如:“移动安防中心”选择“SmartCampus_workorder”。说明:每个移动APP的默认首页,由开发者指定,例如:移动安防中心的主页是“workorder”。便捷通行的主页是“personpass”。环境类型选择“生产环境”。生产环境域名客户的AppCube生产环境域名,用于移动APP运行态时关联生产环境的后端服务。生产环境客户端ID在客户的AppCube生产环境下创建的OAuth认证密钥,即2中创建的WeLink环境的鉴权信息。例如:b6b7a7784xxxxxxxx17fa1a9732b743d、d4d72bc4ce171xxxxxxxxxx6753ce64119084083ff32bc80。生产环境客户端密钥开启调试根据需要设置。关闭:选择“关闭”时,发布后移动端的APP打开的时候没有“vConsole”按钮,vConsole用于开发者调试。开启:选择“开启”时,则能看到vConsole。单击“发布”后,单击提示框的“确定”跳转到WeLink的“版本管理”界面。单击开发版中的“发布版本”,在弹出的“发布版本”界面填写本次更新内容,单击“确定”。管理员审核通过后,We码小程序在开发后台即显示为线上版。配置WeLink隐私声明。使用客户的WeLink管理员账号登录HUAWEI CLOUD WeLink控制管理台。选择“安全策略>隐私设置”,单击“编辑”配置隐私参数:组织隐私声明:开启声明链接名称:配置为“华为智慧园区隐私声明”。声明链接地址:配置为“https://app.xxx.com/magno/render/SmartCampus__SystemManagement_0000000000Vocvxxxx/PrivacyStatementMobile”,红色部分内容需修改,其中:“app.xxx.com”为客户的AppCube生产环境域名,例如https://app.besclouds.com“0000000000Vocvxxxx”请修改为企客户的AppCube租户ID,获取方法请参见1。隐私责任人:配置为“华为智慧园区”。
-
园区基线包中已经包含了移动安防中心、便捷通行等WeLink APP,如果项目没有特殊需求,可以直接将它们发布到生产环境使用。这里以移动安防中心APP为例,介绍基线移动APP发布到手机端WeLink的流程。表1 移动APP发布流程发布阶段说明准备数据开发阶段发布到WeLink自测完成移动APP的开发后,发布到开发者的WeLink账号做自验证。WeLink普通账号,可以用作移动APP的发布。WeLink管理员账号,既可以用作移动APP的发布,还拥有登录WeLink后台审核移动APP权限。如果WeLink管理员开启了“免审核”,则只需要WeLink普通账号即可发布移动APP。开发者的WeLink管理员账号/普通账号移动APP在AppCube开发平台的项目名,例如:MobileSecurityWorkbenchMobileAccess发布到生产环境发布到客户的WeLink环境,并在客户的AppCube生产环境安装移动APP。客户的AppCube平台的生产环境账号移动APP的安装包客户的WeLink管理员账号/普通账号注意事项移动APP发布前,必须确保AppCube开发环境中已安装如下2个库中的任意一个:WeLinkRuntimeFramework(租户级)、MobileAppRuntimeFramework(全局级)。您可以在AppCube平台“管理>应用管理>页面资产管理>库”中检索是否包含,如果2个都未检索到,请向管理员获取WeLinkRuntimeFramework(租户级库)。目前仅支持发布到公有云的WeLink环境。iOS系统不支持iVAS的Welink版本,所以人员位置采集、导航功能只能在安卓系统使用。iOS11及以上版本才支持移动安防中心。iOS系统,上传视频时,对于iphone7及其以上型号的手机,需要在“设置 > 相机 > 格式”中选择“兼容性最佳”模式。在使用移动安防中心前需要为Welink开启手机信息获取权限。对于华为手机,选择“设置 > 应用 > 权限管理”,找到WeLink,设置电话权限为允许。对于小米手机,在桌面长按Welink应用图标,选择“应用信息”,在打开的页面中选择“权限管理”菜单。将“获取手机信息”设置为“始终允许”。iPhone手机无需设置。手机需要允许位置获取及wifi权限,并打开wifi及位置获取开关。可以不需要有效wifi源。开启手机的蓝牙功能,辅助人员定位。开发阶段发布到WeLink自测完成移动APP的开发后,发布到开发者的WeLink账号做自验证。在WeLink上创建应用。以开发者的WeLink管理员账号/普通账号,登录HUAWEI CLOUD WeLink开放平台。选择“企业内部应用 > We码”,单击“创建We码”,设置应用的中/英文名称、上传应用的图标后,单击“确定”。应用名称自定义,例如“移动安防中心开发”,该名称会作为客户手机端WeLink内看到的We码名称。移动安防中心的应用图标为安防中心Logo.zip。发布应用。登录AppCube开发环境,找到需要发布的移动应用,进入移动应用的开发态。园区基线版本预置了以下移动APP:MobileSecurityWorkbenchMobileAccess检查“编译设置”,确认选择“资产包”、“类型”选择“APP”,确认后选择“编译”。图1 确认编译设置单击左下角的发布图标,选择“WeLink-We码”,进入移动APP的发布页面。如果弹出WeLink登录界面,输入开发者的WeLink管理员账号或者WeLink普通账号。填写发布信息,单击“发布”。单击“发布”后如果提示“无法获取WeLink依赖库”,请向管理员获取WeLinkRuntimeFramework库,并上传到AppCube平台的库。表2 参数说明参数描述应用ID选择在WeLink上创建的应用,即1中创建的“移动安防中心开发”。版本号根据需要设置。主页选择一个页面作为移动APP的在手机端显示的默认页面,例如:“移动安防中心”选择“SmartCampus_workorder”。说明:每个移动APP的默认首页,由开发者指定,例如:移动安防中心的主页是“workorder”。便捷通行的主页是“personpass”。环境类型这里选择“开发环境”。开启调试根据需要设置。关闭:选择“关闭”时,发布后移动端的APP打开的时候没有“vConsole”按钮,vConsole用于开发者调试。开启:选择“开启”时,则能看到vConsole。发布成功后,单击提示框的“确定”跳转到WeLink的“版本与发布”界面。如果确定后,弹出WeLink登录界面,输入开发者的WeLink管理员账号或者WeLink普通账号。在WeLink的“版本与发布”界面,单击“发布版本”,填写本次更新内容,单击“确定”。如果WeLink开启了自动审核功能,可以在审核版中看到已审核通过的WeLink应用。如果没有开启自动审核功能,需要使用WeLink管理员账号登录管理控制台,审核应用。管理员审核通过后,We码小程序在开发后台即显示为线上版。
-
本节列举合作伙伴常见的开发场景和开发方法。针对具体的项目,合作伙伴需要在智慧园区基线版本的基础上,新增或者修改已有能力。常见的场景举例如表1所示。表1 场景开发场景分析开发场景涉及的平台开发方法章节接入一种新设备(基线预置规格以外的设备),如何实现对它的集成,包括消息集成和接口集成。ROMA集成平台通过开发IO适配包实现。按照IoT标准接口,以开发基线闸机设备IO适配包为例,描述IO的功能、IO开发的规划设计、IO开发步骤、IO安装步骤等。ROMA平台开发IO接入一种新设备(基线预置规格以外的设备),实现多厂家共享统一标准的物信模型。设备标准库ROMA集成平台通过基线的设备标准库实现。基线的设备标准库是一个云上的规格管理平台,可用于合作伙伴将云上的设备规格同步到租户环境,也支持将租户自定义的设备规格、对应的IO适配包上传到云端,实现多租户、多厂家共享物模型。管理设备规格新增一项统计数据,例如实时在园的车辆统计。数据平台ROMA集成平台基线提供专业的DO开发工具DataToolKit,用于DO开发、同步、归档、打包。新增/修改DWI、DW层模型,开发DO,生成新的统计数据。使用DataToolKit开发DO在大屏页面展示上某个统计数据。AppCube业务平台在DO已开发完成的基础上,使用基线预置的组件组装大屏页面,在页面中调用DO接口展示数据。开发大屏应用新增一个园区业务应用,例如新增智慧消防。或者基于园区基线参考应用做定制适配。AppCube业务平台可以全新开发一个APP,或者基于基线应用创建一个Addon应用做功能增强。如果基线应用是以源码包方式安装的,合作伙伴还可以直接修改基线应用。开发元数据应用开发一个Welink移动APP。AppCube业务平台移动APP的开发方法,与开发PC端应用的方法一样,可以参照开发元数据应用。定制移动APP的发布方法,可以参照基线移动APP的发布流程。发布基线移动APP开发移动应用使用第三方账号登录IOC,例如使用WeLink账号登录IOC。第三方系统AppCube业务平台基线支持对第三方账号授权登录智慧园区运营中心。配置完成后,可以在IOC登录页使用第三方登录方式登录。授权第三方账号登录IOC将合作伙伴已有业务应用封装为AppCube业务平台的Native Service。IAM SSOAppCube业务平台第三方系统以原生服务的方式部署到AppCube平台后,可以将页面内嵌到园区Portal,实现单点登录;也可以将接口集成到AppCube平台,供其它APP调用。原生服务集成基于IAM SSO集成第三方系统将合作伙伴自研AI算法集成到华为智慧园区AI框架中。华为云市场IEFAppCube业务平台伙伴按照华为园区集成开发规范完成AI算法的代码整改并制作镜像;然后发布到华为云市场;最后在实际项目交付实施中,通过IEF将边缘市场的算法镜像下发到边缘节点服务器。AI集成开发
-
规范和要求容器制作规范使用统一的基础镜像,对于园区伙伴来说就是基于园区提供的安全基础镜像构建新的原生服务镜像。最小原则。为了减少镜像的体积和编译时间,应避免安装额外的或者不需要的包。单个镜像大小建议不要超过1G。一个原则:每个容器只运行一个进程。尽量使用合并指令来减少镜像层。Dockerfile中的指令会生成新的镜像层,一个镜像最多127层。不要在Dockerfile中单独修改文件的权限。使用Dockerfile对镜像进行版本管理。安全要求容器镜像扫描无漏洞(使用二进制分析或哈希验证的漏洞扫描工具)。容器镜像中业务使用非root用户运行,也不存在未使用的用户。禁止在Dockerfile中使用ADD指令操作不可信文件(如不可信的远程URL中的文件)。Dockerfile中不存储任何敏感信息(如内置账号、密钥等)。容器镜像发布前通过安全扫描(无病毒和恶意软件)。原生服务镜像需要提供必要的端口列表,非必要开放的端口必须关闭。不开放非必要的API,禁止任何后门或可能会被认为是后门访问的行为。支持API级权限管理,可配置化实现针对特定应用的可开放API。应用部署包制作规范部署包使用helm chart格式归档发布Web、接口类应用采用deployment部署,支持至少2个副本并优先根据反亲和性要求调度到不同的k8s集群工作节点。中间件类应用采用statefulset部署,优先根据反亲和性要求调度到不同的k8s集群工作节点。配置文件使用configmap、secret资源挂载。Deployment和statefulset类型的应用需要为pod定义健康检查探针。对于业务启动时长较长的应用需要为pod定义就绪检查探针,避免业务流量被转发到未就绪的实例。持久化数据必须使用PV和PVC资源对象挂载到容器。容器网络使用规范原则上优先使用ClusterIP类型的服务来暴露访问url,只有在需要把服务暴露给外部系统访问时采需要使用NodePort类型的服务。使用NodePort类型的服务时,优先采用自动方式分配端口避免集群内端口冲突。若需要使用固定端口,需要在应用部署文件中定义变量来设置此固定端口。引入ingress服务时需限定ingress的作用域为当前namespace,避免与其他namespace产生冲突。
-
业务权限和业务功能对应,包括页面访问权限和页面中的API调用权限,业务权限通过权限BO配置。图1 业务权限示例如上图权限BO中的“人员通行记录”业务权限,与人员通行记录查询功能对应,包含MENU权限和FUNCTION权限:MENU权限:控制用户在IOC界面是否看到菜单,并打开菜单关联的页面。FUNCTION权限:控制菜单中的页面能否调用相关API。权限的目录层级,应该与IOC菜单层级一致。以在IOC中增加业务菜单中定义的菜单为例,它包含一个一级菜单和2个二级菜单,因此本示例中权限目录规划如下。图2 权限目录规划配置步骤选择“管理 > 应用管理 > BO配置 > Permission”,进入权限管理页面。添加一级菜单对应的权限。进入权限管理页面后,不选中任何权限,直接配置权限相关参数后,单击“创建”。权限标识、权限名称自定义,建议与菜单的名称一致,便于区分记忆。图3 创建一级菜单对应的权限单击权限资源后面的“创建”,新增MENU权限资源。“资源类型”选择“MENU”。“资源值”配置为菜单ID。例如4中记录的一级菜单ID:c010000000XuCRJ5b8M4,实际配置时请替换为自己业务APP的菜单ID。“资源标识”自定义,但要求全局唯一,可与“资源名称”一致。图4 创建MENU权限资源创建二级菜单对应的权限。选中上一步添加的权限后单击,配置权限相关参数后单击“创建”。图5 创建二级菜单对应的权限单击权限资源后面的“创建”,创建MENU权限和FUNCTION权限。如果一个权限中需要调用多个接口,则需要创建多个FUNCTION类型的权限资源。资源类型为MENU时:“资源类型”选择“MENU”。“资源值”为菜单ID,例如本示例中是二级菜单的ID:c010000000XuCYV00UKG。实际配置时请替换为自己业务APP的菜单ID。“资源标识”、“资源名称”为自定义,建议与菜单名称一致。资源类型为FUNCTION时:“资源类型”选择“FUNCTION”。“资源值”选择定义API权限凭证中的凭证,支持多选(勾选几个就生成几条记录)。创建FUNCTION类型的权限资源时,“资源标识”和“资源名称”自动生成。
-
系统参数管理AppCube平台的系统参数管理页面有对新建系统参数字节的限制,实际场景中部分参数超过限制长度255字节。公共服务BO的配置页面提供了园区BO/APP的系统参数增删改以及查询管理,且参数字节长度不受限制。登录AppCube平台,进入租户管理台。依次选择“管理>应用管理>BO配置>Common>系统参数管理”,进入系统参数管理页面。单击“新增”,可添加租户新增系统参数。如图1所示。图1 新增系统参数需要新增参数的模块下拉框可配置,通过在AppEngine平台的选项列表管理页面,搜索“ParameterModule”,添加完成。系统预置数据如图2所示。图2 “模块”下拉框配置页面单击“保存”,新增完成。
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签