华为云用户手册

  • 操作步骤 在AppCube开发环境首页的“项目”页签下单击“行业应用”,再单击“创建Native Service”。 请参见表1配置参数,单击“创建”。 表1 基本信息参数说明 参数名 参数说明 如何配置 添加图标 可为该Native Service设置图标。 单击“添加图标”,设置图标。 标签 Native Service的展示名称。 直接填写。 名称 Native Service在系统内的唯一标识。 填完“标签”值后,单击该参数的输入框,系统会自动填充。 在同一租户内不能重复,如果重复,系统会提示。 分类 Native Service所属的分类。 在下拉框里选择。 标志 Native Service在分类下展示的图标。 单击选择标志,单击下拉按钮配置图标颜色。 描述 Native Service的描述信息。 选填项。 运行时版本 展开“高级设置”时才会显示该参数。开发的资产包依赖所选择的运行时版本,若线下运行版本不一致,可能产生不兼容。 默认选择当前开发环境版本。 创建后,系统呈现Native Service配置页面,如下图所示。 图1 Native Service配置页面
  • 使用原生服务具备哪些优势 面向第三方技术开发人员,原有资产不用重新开发,可复用原有的业务和技术能力,可快速接入AppCube,并实现与现网系统快速集成,提升系统粘性。 提升微服务构建能力,优化应用系统架构,助力伙伴基于AppCube构建重量级行业应用。 自有资产可基于AppCube资产市场实现共享,共建合作生态。 使用CCE/CCE敏捷版部署,接入AppCube,投资小、成本低。传统的IT实现,客户如果要构建应用系统,必须从硬件和软件全部一次性购买。使用AppCube,像住酒店一样,按需入驻,不需要关注酒店的建筑、运营和维修。初始投资少,成本低,减少投资风险。
  • 相关概念 由于Native Service涉及的概念比较多,在做Native Service配置前,您需要提前了解相关概念。部分概念说明源于Kubernetes官网介绍,若需要了解更多Kubernetes相关内容,请参考Kubernetes资料。 Native Service 是指将租户已有的一些服务(服务为租户线下开发,运行在Docker容器中,并非在AppCube上开发)的API集成到AppCube上,供上层应用调用,帮助租户更加高效得构建应用。 Chart 在部署Native Service前,您需要配置Chart,用于生成kubernetes(简称“K8s”)资源配置文件。配置Chart其实是配置部署Docker容器时需要的资源、存储、网络等一系列参数,为容器的部署、服务的运行提供支撑。 容器 容器类似于虚拟机(Virtual Machine,简称“VM”),但是它们具有轻量级的隔离属性,可以在应用程序之间共享操作系统(OS)。因此,容器被认为是轻量级的。容器与VM类似,具有自己的文件系统、CPU、内存、进程空间等。由于它们与基础架构分离,因此可以跨云和OS分发进行移植。 容器是打包和运行应用程序的好方式。Native Service涉及的服务是在Docker容器中运行的。 在生产环境中,您需要管理运行应用程序的容器,并确保不会停机。例如,如果一个容器发生故障,则需要启动另一个容器。如果系统处理此行为,会不会更容易? 这是Kubernetes的救援方法!Kubernetes为您提供了一个可弹性运行分布式系统的框架。Kubernetes会满足您的扩展要求、故障转移、部署模式等。接下来引入Kubernetes的概念介绍。 kubernetes(简称“K8s”) Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。 Pod 是Kubernetes应用程序的基本执行单元,即它是Kubernetes对象模型中创建或部署的最小和最简单的单元。Pod表示在集群上运行的进程。Pod封装了一个或者多个应用程序容器、存储资源、唯一网络IP以及控制容器应该如何运行的选项。 节点亲和 “节点亲和”是指你可以根据节点上的标签来约束Pod只能或者优先调度到哪些节点。kubernetes目前有两种类型的节点亲和,一种是Pod调度到的节点必须满足一定规则,对应requiredDuringSchedulingIgnoredDuringExecution,另一种是将Pod优先调度到一些满足规则的节点,如果不满足要求,则可以将Pod调度到其他节点,对应preferredDuringSchedulingIgnoredDuringExecution。两种类型的节点亲和有一个共同点:如果节点的标签在运行时发生变更,从而不再满足Pod上的亲和规则,但是Pod将仍然继续在该节点上运行。 Docker Docker在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等,极大的简化了容器的创建和维护。使得Docker技术比虚拟机技术更为轻便、快捷。Docker是Kubernetes Pod中最常用的容器运行时,但Pod也能支持其他的容器运行时。若需要了解更多Docker相关内容,请参考Docker官网。 Docker镜像 Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。 镜像(Image)和容器(Contianer)的关系,像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。 公有云(Public Cloud) 公有云为公共网络环境,公有云一般可通过Internet使用,是指多个客户可共享一个服务提供商的系统资源。 云容器引擎(Cloud Container Engine,简称“CCE”) 云容器引擎提供高可靠高性能的企业级容器应用管理服务,支持Kubernetes社区原生应用和工具,简化云上自动化容器运行环境搭建。 密钥(Secret) 密钥是一种用于存储工作负载所需要认证信息、密钥的敏感信息等的资源类型,内容由用户决定。资源创建完成后,可在容器工作负载中作为文件或者环境变量使用。 ConfigMap ConfigMap是一种用于存储工作负载所需配置信息的资源类型,内容由用户决定。配置项创建完成后,可在容器工作负载中作为文件或者环境变量使用。允许您将配置文件从容器镜像中解耦,从而增强容器工作负载的可移植性。 无状态负载 等同于Kubernetes中的“Deployment”概念,所有Pod实例之间是对等的,互不依赖,少了任意一个Pod实例,并不影响整个工作负载的功能。 有状态负载 等同于Kubernetes中的“StatefulSet”概念,是用来管理有状态应用的工作负载API对象。和“无状态负载”相同的是,“有状态负载”管理了基于相同容器定义的一组Pod,和“无状态负载”不同的是,“有状态负载”为每个Pod维护了一个固定的ID。这些Pod是基于相同的声明来创建的,但是不能相互替换。无论怎么调度,每个Pod都有一个永久不变的ID。 service 可以理解为使用标签选择器(selectors)标识的一组Pod,通过service可以访问到这组Pod。 Ingress Ingress是对集群中服务的外部访问进行管理的API对象,访问方式是HTTP或者HTTPS。
  • 如何使用原生服务 租户线下开发了一些服务,服务运行在Docker容器中。租户希望可将线下开发的这些服务集成到AppCube上,供AppCube内部应用或者其他第三方系统调用。 Native Service在AppCube内的使用场景包括但不限于: 服务编排内部进行调用 租户线下开发的服务集成到AppCube上,可以作为Native服务被服务编排进行内部调用。 外部系统通过Restful接口调用 通过下面的REST接口,调用原生服务。输入参数在body中填写。 https://AppCube域名/native/NativeService1/0.1.0/health 其中根据实际填写AppCube对外提供的默认域名,“/native/NativeService1/0.1.0/health”为该服务的公共接口的开放URL,可以在公共接口详情中查询获得。该调用方式只适用于外部接口。 图1 公共接口详情 在脚本中调用 租户线下开发的服务集成到AppCube上,且在AppCube上自定义该服务的公共接口后,可以在脚本中内部调用公共接口。 脚本部分示例如下: //其中"appcube.cn-north-4.huaweicloud.com"为AppCube对外提供的默认域名let resp3 = httpClient.post("https://appcube.cn-north-4.huaweicloud.com" + "/native/NativeService1/0.1.0/health", callOptions3);console.log(context.getHost())console.log(resp3.body);if (resp3.body.resCode == "0" && resp.body.result) {console.log('auth success, currrent user is: ', resp3.body.result.name)} 其中“appcube.cn-north-4.huaweicloud.com”为AppCube对外提供的开发态默认域名,“/native/NativeService1/0.1.0/health”为该服务的公共接口的开放URL,可以在公共接口详情中查询获得。该调用方式只适用于外部接口。 在页面中调用 高级页面中可以在Widget代码中调用原生服务的自定义公共接口;标准页面则可在事件代码中直接调用原生服务的自定义公共接口或者通过定义服务模型,关联调用原生服务的服务编排,再在页面事件代码中调用服务模型从而来调用原生服务。 在标准页面上传组件中还可以调用原生服务的自定义接口实现上传功能。标准页面中上传组件功能介绍请参见上传。 BPM中调用 在服务编排中调用原生服务后,向BPM设计页面的泳道中拖入“调用服务编排”图标。选择,在“服务编排配置”页面进行配置,其中服务编排选择需要调用的服务编排,配置输入输出参数。 触发器中调用 在服务编排中调用原生服务后,在触发器中可调用该服务编排,当满足触发器规则时,系统会执行该服务编排。
  • 前提条件 已下载之前设计的Chart包。 在AppCube开发环境的Native Service配置页面选择“导航”。 在“Chart设计”页签版本列表区域,单击需要导出的Chart后的导出按钮。 图1 导出Chart包 操作列按钮分别提供编辑Chart包、修改Chart包状态(单击后,Chart包状态是“Published”,无法再编辑该Chart包;单击后,Chart包状态是“Draft”,可编辑该Chart包。该界面不提供发布功能,实际发布要去CCE部署和发布)、预览Chart配置、导出Chart包、克隆已有Chart包配置和删除功能。
  • 操作步骤 登录AppCube开发环境,在首页“我的应用”下单击上一节创建的Native Service,进入NativeService配置页面。如果您还没有创建NativeService,请参照创建Native Service进行创建。 在NativeService配置页面选择“导航”。 选择“API设计”页签,单击“开始设计API”。 选择“使用模板”,配置基本信息,配置新URL对应的版本号,单击“创建”。 也可以选择“导入模板”,但是导入的模板数据需要遵循正确的模板规则。 表1 参数说明 参数 说明 openApi版本 接口定义需要符合openApi规范,这里配置具体openApi的版本号。 选择模板 选择系统预置的模板。 版本 服务版本号。 标题 Native Service API的名称。 单击“新增资源”。 在“增加资源及操作方法”页面上进行参数配置,单击“确认”。 图1 增加资源及操作方法配置页面 表2 参数说明 参数名 说明 输入一个新的资源路径(以/开头) 与镜像文件中的接口路径保持一致。 方法 调用的方法,如GET(查询)、PUT(增加)、POST(修改)、DELETE(删除)、PATCH(对资源进行部分修改)。 操作名称 与镜像文件中的操作名称保持一致。 公共接口 若勾选,则只能在公共接口中调用,无法在服务编排和脚本中使用。 内容类型 当勾选“公共接口”时,您需要配置内容类型,即请求中的body类型。 application/json application/x-www-form-urlencoded application/xml multipart/form-data text/html text/plain “application/x-www-form-urlencoded”、“application/xml”、“multipart/form-data”、“text/html”和“text/plain”用于文件上传接口,选择该内容类型,只能调用post类型的方法。 描述 描述信息。 长度不超过255个字节。 点击生成的方法,可以在右侧编辑方法的URL、Header、Response参数,需要和镜像文件中接口的URL参数、Header参数、请求参数、返回参数保持一致。编辑参数后,需要单击参数操作列的,再单击“保存”。 您可参考界面上“/case”、“/case/{CaseId}”两个示例编辑生成的方法。每个方法都需要定义Response参数,否则会部署失败。返回体数据结构在模式对象中定义。 当Body参数和Response参数较多,一些参数可以封装成对象类型的参数,并在“模式对象”页签设置该类型参数,注意“模式对象”页签中参数名与操作中URL参数不能同名。 支持按照操作名称和资源路径单过滤或者组合过滤搜索方法。 图2 编辑方法 图3 定义模式对象 参考5~7,新增其他API方法。 编辑方法完成后,需要手动删除“/case”、“/case/{CaseId}”两个示例,删除示例模式对象。 单击“保存”,创建的自定义接口会出现在页面上。在页面右上单击可以查看自定义接口中的方法和模型对象,在页面右上单击可导出该原生服务下接口定义yaml文件。 单击,发布API。 发布后如果需要修改API,需要单击取消发布后进行修改,修改后再保存并发布。 已经发布的API可能在服务编排中已经使用,如果修改API导致不兼容,请同步修改引用该API的服务编排。
  • 前提条件 已接入服务实例。具体操作请参考注册Native Service。 打开需要调用原生服务的应用开发工作台,单击“Internal dependencies”或“External dependencies”旁的“+”,选择“Native服务”,在“添加Native服务”页面添加要调用的原生服务。 添加后在该应用的服务编排中才可以调用Native服务。 “Internal dependencies”为内部依赖文件夹,导入的BO服务或者Native服务,在打包上层应用时也会随应用打包发布出去;“External dependencies”为外部依赖文件夹,导入的BO服务或者Native服务,在打包上层应用时不会打包出去。 图1 应用中添加原生服务 若AppCube开启了根证书校验,请先上传原生服务的根证书,再调用原生服务。关于根证书的更多内容请参考开启根证书校验。
  • 操作步骤 进入数据调试界面。 方式一:在AppCube老版低代码应用开发工作台,在左侧菜单栏下方单击。 图1 老版低代码应用开发工作台 方式二:在AppCube管理中心页面,单击右侧图标,可以进行数据调试。 方式三:直接浏览器中输入“https://AppCube域名/studio/console.html”,进入控制台页面进行数据调试。 控制台页面如图2所示,界面分为多个区域,展示不同的内容。 界面介绍如下: 最上面区域1:是该控制台支持的所有操作,包括对象管理(关于对象表的操作)、缓存管理(对平台的缓存进行管理,主要是清理所有缓存或者清理某个特定缓存的命令)、任务查询(对平台的一些历史任务或表数据统计的可用命令展示)、搜索管理(展示es中的可搜索表或字段)。 区域2:根据点击区域1的操作从而展示对应的内容。例如点击区域1的“对象管理”,则在区域2展示该用户有权限看到的所有表;点击“缓存管理”时,展示管理缓存相关的命令;点击“任务查询”时,则在该区域展示任务管理相关的命令;点击“搜索管理”,则在该区域展示搜索管理相关的命令。支持根据应用进行过滤,默认显示“全部”,即搜索所有应用数据。 区域3:在点击区域2展示的命令时,会在该区域展示该命令的简单说明或者展示一些提示文字。 区域4:操作按钮区域。单击“执行”(快捷键是Ctrl + Enter),可执行用户在区域5写的命令;或选中区域5写的某个命令,单击“执行选择项”进行执行;您还可单击“清除”来清除执行结果的展示。 区域5:是用户可以写命令的地方,用户可以在该区域进行表数据查询,支持多种表操作的SQL语句。例如:在点击区域1的“对象管理”时,会在区域2展示所有对象表,单击某个表,便可复制该表名。用户在区域5输入命令时,可快速复制粘贴要查询的表名。且对于区域2展示的所有命令,可通过双击鼠标左键,可直接将命令展示在该区域,然后点击区域4“执行”,执行该命令,减少了用户手动输入命令的动作。 区域6:展示相关命令的执行结果。 区域7:展示系统的发行版本和发行时间。 区域8:记录用户在区域5成功执行的所有命令。用户可以通过单击该区域的命令,可将选中的命令填充到区域5,然后点击区域4的“执行”按钮,便可执行该历史命令。 图2 控制台 根据 “支持SQL语句列表”提示,输入SQL查询语句,执行查询。 对象管理中除了平台预置的标准对象、用户定制的自定义对象、视图对象、聚合对象,AppCube还有一种系统对象,即平台各项系统功能模块所使用到的对象,如Flow、Script。一般无需关注,若需要定位问题可在数据调试控制台使用SQL语句进行查询。 图3 执行SQL语句查询
  • 原生服务 当需要将一些服务(服务为租户线下自主选择编程语言和开发工具开发,运行在Docker容器中,并非在AppCube上开发)集成到AppCube上来进行调用时,您需要参考本章节进行学习。 什么是原生服务 使用原生服务有哪些规则约束 在AppCube上开发整个Native Service时,您需要配置Chart、API等,文本主要描述开发过程中需要遵循的规范和约束,供您在开发时进行参考。 如何创建原生服务 其他 父主题: 经典版应用开发指导
  • 前提条件 已接入服务实例,具体操作请参考注册Native Service。 打开需要调用原生服务的应用开发工作台,单击“Internal dependencies”或“External dependencies”旁的“+”,选择“Native服务”,在“添加Native服务”页面添加要调用的原生服务。 添加后在该应用的服务编排中才可以调用Native服务。 “Internal dependencies”为内部依赖文件夹,导入的BO服务或者Native服务,在打包上层应用时也会随应用打包发布出去;“External dependencies”为外部依赖文件夹,导入的BO服务或者Native服务,在打包上层应用时不会打包出去。 图1 应用中添加原生服务 若AppCube开启了根证书校验,请先上传原生服务的根证书,再调用原生服务。关于根证书的更多内容请参考开启根证书校验。
  • 测试场景下创建证书和私钥的操作方法 该方法创建的证书通常只适用于测试场景。 执行如下命令生成密钥文件tls.key。 openssl genrsa -out tls.key 2048 命令执行后将在当前目录生成一个tls.key的私钥文件。 生成的密钥格式必须为: ----BEGIN RSA PRIVATE KEY-----……………………………………………..-----END RSA PRIVATE KEY----- 用此私钥去签发生成自己的证书文件tls.crt。 openssl req -new -x509 -key tls.key -out tls.crt -days 3650 根据提示输入国家、省、市、公司、部门、申请人和邮箱,按回车键确认。 生成的证书格式必须为: -----BEGIN CERTIFICATE-----……………………………………………………………-----END CERTIFICATE-----
  • 自动保存机制 AppCube支持在App、BO或者Addon App中开发或者编辑服务编排、脚本、BPM、状态机、标准页面、页面资产时,在获取锁、未激活状态且数据为非受保护下的开发数据可以自动保存在缓存中。默认每15分钟保存一次,最长保存7天。您可以恢复最近15次自动保存的数据。 在App、BO或者Addon App开发界面左侧列表单击,在右侧界面各页面下会出现AppCube自动保存的数据。注意数据不是实时刷新的。 单击“查看”,可查看每次自动保存的数据。系统默认每15分钟自动保存一次,如果用户打开的服务编排等没有修改,则不会再自动保存一次而占用15次限额。 单击“恢复”,提示“恢复操作将会另存一个新的标准页面/新版本,确认执行?”。单击“确定”,可将自动保存的数据另存为新页面或者新版本。 父主题: 其他功能
  • 如何下载已发布的应用 登录开发环境,在开发环境首页选择“我的应用”中某个已开发好的应用,进入该应用的开发工作台。 在应用开发工作台左侧菜单栏中,单击包管理图标。 在“已发布”下,单击已发布的应用,选择“资产包”或“源码包”。 单击一条包记录,在右侧页面单击“下载”。 如果包管理下,还没有已发布的应用包,请先将当前应用编译打包。如何编译打包应用,请参见应用打包发布。 图1 选择包类型下的应用包 将下载到本地的应用包发送给其他需要安装该应用的用户。
  • 导入应用 该方式适用于不同环境中应用的迁移,即将环境A中开发好的5G消息应用迁移导入到环境B中。 获取要导入的5G消息应用包。 参考图1,在环境A的5G消息应用开发平台中,在右上角切换到需要导出的应用界面,单击应用列表后的导出按钮,导出应用包。 图1 导出应用 在环境B的5G消息应用开发平台右上角,单击“新建应用+”。 设置应用名称,单击“导入应用”。 将1获取的应用包拖入导入,单击“确定”,进入5G消息应用开发界面。
  • 应用安装场景 应用开发编译发布成应用包后,可在开发环境、沙箱环境和运行环境中安装使用。具体有如下两种安装场景: 应用包的开发者租户,可以在当前租户的运行环境以及沙箱环境安装应用资产包,安装后进行测试或直接部署运行该应用。 其他租户可以在开发环境安装应用源码包,进行二次开发、参考或查看。在沙箱环境、运行环境中安装应用资产包,进行测试或直接部署运行该应用。 什么是源码包?与资产包有什么区别,详情介绍请参见导入导出应用源码包。
  • 安装应用有哪些方式 AppCube低代码平台提供了如何通过导入方式安装应用和如何在我的仓库安装应用两种应用安装方式。请根据实际操作场景,选择安装应用的方式,应用安装场景及对应的安装方式,如表1所示。 表1 应用安装场景及方式 场景 应用包来源 安装方式 安装环境 用途 安装当前租户 我的仓库 我的仓库 沙箱、运行环境 测试、部署运行 线下获取的应用资产包 导入方式 沙箱、运行环境 测试、部署运行 安装其他租户的应用 线下获取的应用源码包/资产包 导入方式 开发环境 二次开发、参考或查看 说明: 导入应用源码包支持二次开发,导入资产包只支持查看。如何编译应用包,请参见导入导出应用源码包。 线下获取的应用资产包 导入方式 沙箱、运行环境 测试、部署运行
  • 预置组件设置属性说明 页面创建后,在设计页面左上方单击,用户可以按需拖拽各种预置组件到页面中,在页面中单击选中该组件,会在右侧显示该组件的设置面板;在设置面板中绑定设备实例,配置设备属性,调用服务发送指令,从而实现对设备实例进行自动化管理、监控等功能。 图2 设置设备组件 预置组件的设置属性说明如下表所示,请根据实际情况进行配置。 表1 预置组件设置属性说明 页签 区域 参数名 说明 配置 基础 设备实例 该设备组件绑定的设备实例。单击该属性后的编辑按钮,在弹出的实例选择框中,选择具体的设备实例,单击“确认”。 这里展示的设备实例,来源于园区中的设备数据。您可通过预览园区App“Facility Management”,在“设施信息管理”页面查看设备实例数据。如果没有设备实例,可在“设施信息管理”页面进行创建。 仿真设备实例 该设备组件绑定的仿真设备实例。单击该属性后的编辑按钮,在弹出的仿真设备实例选择框中,选择具体的仿真设备实例,单击“确认”。 这里展示的仿真设备实例,来源于园区中的设备数据。您可通过预览园区App“Facility Management”,在“设施信息管理”页面查看设备实例数据。如果没有仿真设备实例,可在“设施信息管理”页面进行创建。 展示设备标题 您可设置是否展示设备的标题。 默认已打勾,表示展示设备标题。单击该属性后的齿轮图标,可设置标题位置、宽度、高度、堆叠顺序(层叠显示顺序。组件的堆叠顺序默认都是“1”,数字越大,显示越靠前。当需要让标题置底时,可设置堆叠顺序为“0”)、连线,当标题文字过多时,是否展示溢出文本。 选择设备标题,单击鼠标右键选择“高级设置”,设置标题文本内容。 展示设备状态 您可设置是否展示设备的状态。 默认已打勾,表示展示设备状态。单击该属性后的齿轮图标,可设置状态展示的位置、连线。 设备图标 您可设置该设备组件在页面显示的图标。 可从图片库选择或上传并使用新图片作为图标。 是否隐藏 勾选后,在开发环境及运行环境,该设备组件及其副图元组件都将被隐藏。 默认不勾选,即不隐藏。 位置 距离左侧 到页面左侧距离。 距离上侧 到页面顶部距离。 宽度 该组件宽度。 高度 该组件高度。 堆叠顺序 层叠显示顺序。组件的堆叠顺序默认都是“1”,数字越大,显示越靠前。当需要让组件置底时,可设置堆叠顺序为“0”。 高级 设备周期任务页面链接 在运行态下,当用户单击编辑设备周期任务按钮后,将打开该页面链接。 属性 - - 选中设备组件,在右侧的“属性”页签下单击“新增”,可新增空调机组设备属性展示框,例如“新风温度”、“运行状态”。 当设备BO中设备属性有变更时,需要单击“同步”,从设备BO中同步模型属性过来,注意同步保存后将不可回退。同步完成后,再单击“新增”,选择具体的设备展示属性,单击“确认”。新增后可配置设备属性展示框,例如在页面的位置、连线。 指令 - - 选中设备组件,在右侧的“指令”页签下单击“新增”,可增加设备指令框,例如“冷水阀开度调节”。 当设备BO中设备指令有变更时,需要单击“同步”,从设备BO中同步模型指令过来,注意同步保存后将不可回退。同步完成后,再单击“新增”,选择具体的设备指令,单击“确认”。新增后可配置指令框,例如在页面的位置、连线。
  • 操作步骤 选择以下任意一种方式进入日志跟踪页面。 方式一:在AppCube旧版低代码应用开发工作台,单击左下角的,进入日志跟踪页面。 图1 在App开发页面开启日志跟踪 方式二:在AppCube管理中心页面,单击页面右下角的,进入日志跟踪页面。 图2 进入日志跟踪页面 单击,可以开启十分钟内的AppCube的后台日志追踪。 图3 开启日志跟踪 表1 日志跟踪参数说明 参数 说明 日志级别 日志级别,取值说明如下: 会话级:只会打印当前会话的日志。 租户级:只会打印租户所有会话的日志。 用户级:支持根据用户名查看某用户或者业务用户的操作日志。 日志类型 日志类型,取值说明如下: 业务日志:只会输出业务相关的跟踪日志。 完整日志:输出业务日志,以及数据库、中间件等的详细日志,主要用于平台问题定位。 您还可进行以下操作: 单击下载图标,您可下载日志文件,下载后会自动停止跟踪,日志格式为“时间|业务部件|操作ID|动作描述”。 单击后,将会显示停止图标,单击可停止追踪且不会获取日志文件。 单击,可从新窗口打开日志跟踪页面。 单击最小化图标,日志跟踪界面将会被隐藏,在AppCube开发环境首页的页面右下角您可看到日志跟踪剩余时间,单击该时间,将重新弹出日志跟踪界面(您也可在App/BO/原生服务开发界面,重新单击右下角,弹出日志跟踪界面)。
  • 标准库模块 AppCube中有些模块会被编译成二进制,预先加载到内存中了。例如decimal、context都是系统预置的标准库模块。 AppCube优先加载标准库模块, 例如: import * as http from 'http'; 始终返回内置的HTTP模块,即使有同名自定义模块。 如果需要返回自定义的模块,请使用相对路径语法: import * as http from './http';
  • 扩展名 因为脚本实际上是存在数据库中,脚本没有路径的概念,扩展名也没有特别的意义。 导入模块时,尽量采用不带扩展的方式。例如: import * as circle from './circle'; 平台只允许.ts扩展名文件存在,不允许包含.js后缀的模块。如下方式等同上面的举例,但不推荐。 import * as circle from './circle.ts'; 尽量不要使用带扩展名的导入方式。
  • 循环依赖 当循环调用模块时,一个模块可能在未完成执行时被返回。因此,需要仔细的规划模块间调用,以允许循环模块依赖在应用程序内正常工作。 例如以下情况: 脚本a: console.log('a 开始');exports.done = false;import * as b from 'b';console.log('在 a 中,b.done = ', b.done);exports.done = true;console.log('a 结束'); 脚本b: console.log('b 开始');exports.done = false;import * as a from 'a';console.log('在 b 中,a.done = ', a.done);exports.done = true;console.log('b 结束'); 脚本main: console.log('main 开始');import * as a from 'a';import * as b from 'b';console.log('在 main 中,a.done = ', a.done ',b.done = ', b.done); 当main加载a时,a又加载b。 此时,b又会尝试去加载a。 为了防止无限的循环,会返回一个a的exports对象的未完成的副本给b模块。 然后b完成加载,并将exports对象提供给a模块。 当main加载这两个模块时,它们都已经完成加载。 因此,该程序的输出会是: main 开始a 开始b 开始在 b 中,a.done = falseb 结束在 a 中,b.done = truea 结束在 main 中,a.done=true,b.done=true
  • 开发流程 在AppCube开发环境首页的“项目”页签下单击“行业应用”,再单击“BA(Beta)”。 请参见表1配置参数,单击“创建”。 图2 配置基本信息 表1 基本信息参数说明 参数名 参数说明 如何配置 添加图标 可为该BA应用设置图标。 单击“添加图标”,设置图标。 标签 BA应用的展示名称。 直接填写。 名称 BA应用在系统内的唯一标识。 填完“标签”值后,单击该参数的输入框,系统会自动填充。 在同一租户内不能重复,如果重复,系统会提示。 分类 BA应用所属的分类。 从下拉框选择。 描述 BA应用的描述信息。 选填项。 运行时版本 展开“高级设置”时才会显示该参数。开发的资产包依赖所选择的运行时版本,若线下运行版本不一致,可能产生不兼容。 默认选择当前开发环境版本。 创建后,系统呈现BA应用开发页面,如下图所示。 图3 BA应用开发页面 若出现提示“系统检测到设备BO服务未安装正常,这将导致BA页面中设备相关功能不可用,请检查!”。请先在“行业应用”下订购“智慧烟感”模板,订购后系统会自动安装设备BO服务,具体订购过程请参考基于行业应用模板创建应用。 单击BA Template文件夹后的加号,选择“楼宇自动化(BA)页面”。 单击“创建空白页”,输入页面路径和页面标题,单击“新增”。 弹出提示框“在锁定页面XXX前,所有页面将会自动更新至最新版本。”,单击“确认”。 在右侧的“页面设置”中,自定义设置像素、背景颜色和背景图片等。 单击左上角的组件库,按照实际需要将空调机组设备组件拖到右侧画布中。 组件中已集成设备BO、空间BO的接口,例如:物模型查询(queryDeviceDef)、空间查询(querySpaceTree)、基于空间+物模型查询设备、获取设备实例的属性(getDeviceAttributes)、设备指令下发(callService)等。 选中空调机组组件,在右侧“配置”页签中单击“设备实例”后的编辑按钮,在弹出的实例选择框中,选择设备空间和空调机组设备实例,单击“确认”。 这里展示的设备实例,来源于园区中的设备数据。您可通过预览园区App“Facility Management”,在“设施信息管理”页面查看设备实例数据。如果没有设备实例,可在“设施信息管理”页面进行创建。设备空间从空间BO中获取。 选中空调机组设备实例,在右侧的“属性”页签下单击“新增”,可新增设备属性展示框,例如“新风温度”、“运行状态”。拖动属性展示框,调整在页面的显示位置,设置设备属性。 图4 设置设备属性 选中空调机组设备实例,在右侧的“指令”页签下单击“新增”,可增加设备指令框,例如“冷水阀开度调节”。拖动设备指令框,调整在页面的显示位置,设置设备指令。 图5 设置设备指令 按照实际需要,设置其它属性、指令发送框,或者拖入其它设备组件到画布中。 单击页面上方保存图标,保存后单击发布。 单击预览的链接,在预览界面可查看上面配置的设备属性值,以及对设备发送指令。 图6 预览界面 下发的指令可以在ROMA Connect侧查看。 (可选)您可单击配置好的页面后“...”,对页面进行各种操作。 选择“设置”:可设置页面名称、页面标题。 选择“发布为模板/更新模板”:从而将页面保存为页面模板或者更新模板。 选择“删除”:即删除该页面。
  • 翻牌器 翻牌器组件用于在页面中展示实时数据的变化,在初始化或数据刷新时页面该组件展示数据会连续变动到新的数据。 在设计页面左上方单击,从“文本”中拖出翻牌器组件至设计页面右侧空白处。在页面中,单击选中该组件,会在右侧显示该组件的属性配置面板。参数说明请参考预置组件及公共属性说明。其中“数据”页签“桥接器实例”选择“翻牌器数据桥接器”,“数据类型”选择“静态数据”,可在预置的静态数据中改变“number”的取值来设置翻牌器显示的具体数字,您也可设置通过调用URL来配置动态数据。 选择该组件,单击鼠标右键选择“高级设置”,可对翻牌器进行多种配置。 图1 普通类型效果 图2 滚动类型效果 表1 翻牌器配置参数说明 区域 参数名 说明 样式设置 数字大小 数字文本的大小。 数字颜色 数字文本的颜色。 数字背景色 数字所占格子的背景颜色。 数字间隔(px) 数字之间的间隔距离,取值范围为4~30px。 卡片内边距 整体数字和组件边框的内边距。 字体粗细 数字文本字体的粗细。 显示千分逗号 数值是否显示千分位逗号分隔符。 显示标题 是否显示翻牌器组件的标题。 标题内容 翻牌器组件的标题内容。当打开“显示标题”开关时,该参数才会出现。 标题对齐方式 翻牌器组件的标题对齐方式。当打开“显示标题”开关时,该参数才会出现。 标题颜色 翻牌器组件的标题文本颜色。当打开“显示标题”开关时,该参数才会出现。 标题大小 翻牌器组件的标题文本大小。当打开“显示标题”开关时,该参数才会出现。 显示单位 是否显示翻牌器数字的单位。 单位内容 翻牌器数字的单位文本内容。当打开“显示单位”开关时,该参数才会出现。 单位颜色 翻牌器数字的单位文本颜色。当打开“显示单位”开关时,该参数才会出现。 单位大小 翻牌器数字的单位文本大小。当打开“显示单位”开关时,该参数才会出现。 动画设置 动画类型 翻牌器数字动画类型,分“普通类型”、“滚动类型”和“翻牌类型”。 动画时间(ms) 动画播放的时长,单位ms。 单次变换间隔(ms) 动画单次变换的间隔时长,单位ms。 父主题: 全局高级组件
  • 前提条件 这里以AppCube对接自有ROMA Connect为例进行截图说明,默认对接的ROMA Connect服务器配置类似。 已在ROMA Connect平台上完成应用创建(创建时,应用的“Key”字符长度必须小于60,否则后续向AppCube同步时失败),函数API创建、API分组创建、API创建、调试、发布和授权操作。关于ROMA Connect相关操作可参考使用ROMA Connect集成服务与配置API授权。 例如,如图2所示已在ROMA Connect平台创建“人员管理”应用;如图3所示已发布“获取人员信息”API,且该API已授权给“人员管理”应用。 图2 集成应用 图3 授权API 已在ROMA Connect平台上设置“app_secret”和“app_route”值为“on”。具体方法:在ROMA Connect实例控制台的“实例信息”页面选择“配置参数”页签,修改“app_secret”和“app_route”的“参数运行值”为“on”。
  • 服务编排基本能力 拖拉拽式编排流程 以往的传统编程,需要进行变量的声明并编写相应逻辑代码进行服务的开发。使用服务编排进行服务开发,能够通过拖拉拽的方式,将配置项创建的变量以及服务编排中提供的各种功能进行编排,并以流程的方式将服务所要实现的功能展现出来。整个开发过程中无需进行代码的编写,简单快捷,并能够图形化展示服务的逻辑。 逻辑处理 服务编排中提供了逻辑处理的图形化元件,包括赋值、循环、跳出循环、决策和等待。通过这些图元能够实现基本的逻辑处理,并图形化展示,便于开发者理解,详情可参考操作步骤中对逻辑处理图元的使用。 对象处理 服务编排中提供了对象处理的图形化元件,包括记录创建、记录查询、记录更新和记录删除。通过这些图元能够对通过平台创建的自定义对象或标准对象进行相应的增、删、改、查操作,简化处理对象数据的流程,提高开发效率,详情可参考如何使用服务编排开发数据的增删改查中对象处理图元的使用。 服务单元组合脚本、原生服务、BO、第三方服务 服务编排中提供了服务单元组合的图形化元件,包括脚本、子服务编排、原生服务、BO和连接器。通过这些图元能够将平台中已开发完成的服务集成到服务编排中,并重新进行组合,快速扩展出更丰富的业务功能。
  • 服务编排与模块间调用关系 服务编排将平台提供的部分功能模块进行了封装,并提供了平台其他模块调用服务编排的能力,下面介绍其他模块与服务编排是如何进行相互调用的。 脚本 在服务编排中可以通过配置脚本图元,选择当前应用中的脚本进行脚本的调用。 在脚本中可以通过引入sys库,然后执行sys.invokeFlow({Flow_Name}),进行服务编排的调用。其中,Flow_Name为服务编排的名称。 对象 在服务编排中可以通过配置记录创建、查询、更新、删除图元对当前应用中的对象记录进行增删改查的操作,详情请参考如何使用服务编排开发数据的增删改查。 标准页面 在标准页面的模型视图中新建服务模型,能够绑定服务编排,进行服务编排的调用。 BPM 在BPM中可以通过配置“调用服务编排”活动,选择相应的服务编排进行服务编排的调用。 API接口 在新建接口时选择资源类型为“服务编排”,并选择相应的服务编排,即可将服务编排绑定到服务接口上,通过API接口进行服务编排的调用。 BO 在服务编排中调用BO(BO是封装了完整的数据模型、业务逻辑、页面展现的软件单元)进行使用,详情请参考BO图元。 连接器 在服务编排中调用与第三方系统对接的接口,如对接短信发送、云存储、系统中已定义的Action等,详情请参考连接器图元。
  • 初识服务编排编辑器 服务编排编辑器页面由上方按钮区域、左侧图元面板区域、中间画布区域和右侧参数配置区域四部分组成。 图3 服务编排编辑器页面 表2 区域说明 区域 区域说明 按钮区域 功能按钮区域,包括锁定、解锁、启用(或者禁用)、保存、另存为新版本或者新服务编排、执行服务编排、操作回退、撤销回退、启用服务编排跟踪器以及切换版本的操作。支持快捷键操作,即可脱离鼠标直接用键盘操作。 启用后还可单击右上角查看该组件的调用关系图。 图元面板区域 图元面板区域呈现服务编排编辑器的图元算子。服务编排编辑器以图元算子为基础,您可直接将图元算子拖入画布区域进行逻辑编排。图元算子分为以下五类。 基本:基本类型图元,能够实现在服务编排中进行脚本或者服务编排的调用,增/改/删/查对象记录,以及发送邮件、发送事件的功能。 逻辑:逻辑判断图元,能够实现在服务编排中进行变量赋值Assignment、循环Loop、跳出循环Break、决策Decision、等待Wait的功能。 BO:商业对象图元,即将封装好的BO能力作为服务编排中的一个节点,实现特定的业务功能图元。 Native服务:原生服务图元,用于调用原生服务提供的接口。 连接器:与第三方系统对接的图元,例如将短信发送、支付等第三方连接器作为当前服务编排中的一个节点图元。 面板区域中右侧竖排图元为常用的图元快捷菜单栏。 画布区域 服务编排设计操作区域。在该区域可对服务编排进行具体流程设计、图元放置。 选中图元按“Delete”可进行删除操作。 配置区域 整个服务编排或者图元的属性设置区域。当选择画布区域服务编排中具体图元时,右侧配置区域为该图元的属性设置区域。当选择服务编排中空白区域或者开始图元时,右侧配置区域为该服务编排的设置区域。 :服务编排基本信息配置菜单。 :显示服务编排类型、是否启用。 :整个服务编排的入参、出参。您可从“全局上下文”中选择变量拖拽到服务编排的入参、出参中。 :服务编排用到的私有结构体。 :全局上下文变量,主要用于创建服务编排中需要使用的变量、公式以及结构体变量等。
  • 如何创建服务编排 在应用开发页面,将鼠标放在Logic文件夹上,单击“+”,选择“服务编排”。 参照表1配置参数,单击“添加”。 图2 创建服务编排 表1 创建服务编排参数说明 参数名 参数说明 如何配置 创建一个新的服务编排 创建一个新的服务编排流程。 选中单选按钮。 “创建一个新的服务编排”和“使用已有的服务编排”两者择一。 使用已有的服务编排 基于同一租户或基线里已有的服务编排创建。 方便用户快速继承已有服务编排的配置,增加效率。 类型 服务编排的类型。 Autolaunched Flow:自启动Flow,在接口调用后会立即执行服务编排模型定义的逻辑。 Event Trigger:事件触发的服务编排,则会在事件触发时才会开始执行服务编排模型定义的逻辑。当选择该类型时,您需要配置具体的事件以及条件规则。 在下拉框里选择需要的类型。 标签 仅用于展示。 直接填写。 名称 系统会自动在名称前添加{命名空间}__,当其他功能调用服务编排时,调用的是服务编排的名称,而不是标签。 填完“标签”值后,单击该参数的输入框,系统会自动填充。 在同一租户内不能重复,如果重复,系统会提示。 描述 服务编排描述信息。 选填项,建议填写服务编排的作用。
  • 创建您的第一个服务编排 根据图1,首先进行业务场景的设计,作为您的第一个的服务编排,设计了根据传入的用户名配置欢迎信息的简单业务场景,下面根据流程图的步骤进行服务编排的开发。 创建服务编排,根据如何创建服务编排创建名称和标签为“HelloFlow”的服务编排。 配置变量,单击配置区域中的全局上下文,单击“变量”栏右侧中的“+”号按钮,创建变量。 图4 创建变量 根据上述步骤创建下表中的变量。 表3 变量说明 变量名 类型 变量说明 userName 文本 传入的用户名 message 文本 欢迎信息 单击变量右侧按钮进行变量设置,可以进行“名称”、“数据类型”、“默认值”、“描述”、“是否为数组”等参数的配置。 图5 变量配置 在全局上下文中,除了创建基本类型的变量,还可创建“常量”、“公式”、“对象变量”、“系统变量”、“全局常量”,详情请参照变量及输入输出参数配置。 单击,配置服务编排的输入输出参数。 图6 配置输入输出参数 选择所需图元,将“逻辑”目录或面板区域右侧快捷图元菜单中的“赋值”图元拖拽到画布区域中。 图7 选择赋值图元 赋值图元可以实现对全局上下文中变量等参数进行赋值。其他图元的详情信息可参考图元配置。 配置图元,单击赋值图元,在“赋值”页面中,根据下图将创建的变量拖拽到相应的位置上,可通过单击“新增行”新增赋值语句。 图8 配置赋值图元 上述赋值语句将“"Hello,"”赋值给message变量,并将userName变量拼接到message变量中。赋值语句将从上往下依次执行。 连接图元指定逻辑关系,从开始图元连向赋值图元,代表服务编排开始执行后执行赋值图元的赋值语句。 图9 连接图元 单击按钮区域的,保存服务编排。 单击按钮区域的,进行服务编排的调试。 在输入参数输入框中填写如下输入参数,并单击运行。 { "userName": "AppCube"} 运行结果如下,输出“Hello,AppCube”。 图10 运行结果 单击按钮区域的,启用服务编排。 管理服务编排,根据如何定义API接口将启用的服务编排绑定到自定义的API上,并单击查看API,进行API的测试。 图11 API测试
  • 子服务编排图元参数配置 单击拖拽到画布中的子服务编排图元,单击,在“基本信息”页面进行配置。 表1 基本信息参数说明 参数名 参数说明 如何配置 标签 仅用于展示。系统会自动填入该值,格式为Flow序号。序号从“0”开始,表示同类型图元序号。 系统自动填充,可自定义。 名称 该图元的标识,请确保在当前服务编排中唯一。 系统自动填充,可自定义。 描述 该图元的描述信息。 选填项,建议填写图元的作用。 单击,在“子服务编排”页面进行配置。 图2 配置子服务编排 表2 子服务编排图元配置参数说明 参数名 参数说明 如何配置 服务编排实例 子服务编排名称。 只有在启用状态下的服务编排才能作为子服务编排被其他服务编排调用。 在下拉框中选择具体的服务编排。 输入参数/目标 子服务编排的输入参数名称。 单击“新增行”进行添加。 在下拉框中选择子服务编排输入参数的名称。 输入参数/源 服务编排中的变量,为目标赋值。 可直接填写,或者拖入全局上下文变量,将服务编排中的变量赋值给子服务编排中的输入参数。 输出参数/源 子服务编排的输出参数名称。 单击“新增行”进行添加。 在下拉框中选择子服务编排输出参数的名称。 输出参数/目标 服务编排中的变量,子服务编排中的输出参数赋值给服务编排中的变量。 拖入全局上下文变量,将子服务编排的输出参数赋值给服务编排中的变量。 单击可自动在入参出参区域填入“全局上下文”中与入参出参命名同名的参数。
共100000条