- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
**摘要:**华为云开天集成工作台是基于华为在数字化转型中积累的丰富经验,为企业开发者提供基于元数据的可扩展的集成框架。
本文分享自华为云社区《我用开天平台做了一个城市防疫政策查询系统【开天aPaaS大作战】》,作者: jackwangcumt 。
根据华为官方文档的介绍,所谓的华为云开天集成工作台是基于华为在数字化转型中积累的丰富经验,为企业开发者提供基于元数据的可扩展的集成框架,降低了应用间集成工作量,并沉淀多种集成资产如连接器、业务模型、行业API等。它可以帮助客户快速建立SaaS应用之间的连接通道,打破信息孤岛与“烟囱式”架构,从而实现应用的快速构建和上线,持续提升用户体验。
产品官方网址为 :** 开天集成工作台-华为云 . **开天集成工作台总体架构示意图如下图所示:
开天集成工作台使能伙伴的SaaS高效上云,与伙伴共建行业方案,共同沉淀和分享行业经验。开天集成工作台提供如下核心能力特征:(01)标准的数据模型管理:领域信息模型的采集、定义、管理能力,支撑在行业建立标准的领域信息模型库,行业内各厂家应用依托标准的领域信息模型进行互联互通。(02)灵活的API生命周期管理:支持合作伙伴的API设计、实施、测试、发布、运维、消费和运营,并可封装为便于编排的连接器和流。(03)可扩展的连接器管理:它是集成工作台流编排能力扩展的唯一方式,提供了丰富的预置连接器,用户还可以基于API自定义连接器。(04)可视化流管理:基于连接器,通过可视化的方式进行流式组合,实现集成流编排。扩展支持多种形式编排如流程编排,事件编排等。
开天集成工作台产品优势如下:
(01)丰富的行业经验:面向行业的业务模型库,拉通管理者、业务人员和IT人员。行业能力API化,覆盖工业、城市治理、教育、办公、Message、Map、移动应用等领域。SaaS应用间集成资产多样化,开箱即用,降低交付复杂度。
(02)灵活易用地集成:基于标准业务模型的集成模式,每个应用只需集成一次,实现XYZ变成X+Y+Z。开放的连接框架,可灵活定义各种连接器和流,适配企业的业务逻辑。
开天集成工作台是一个“开放、共生、智能、协同”的平台,它是搭建开发者、系统集成商、客户之间的“桥梁”和“纽带” 。具体来说,用户可以分为如下几种类型:(01)面向行业API开发者:一站式完成行业API设计、编排、测试、发布和消费,打造API商业经济。(02)面向行业应用开发者:以低代码或者零代码的方式,轻松构建面向行业的SaaS应用,加速业务创新。(03)面向系统集成商:和客户无缝对接,进行集成开发,交付项目和运维支持。同时,沉淀云上项目的集成资产,提升交付效率。(04)面向客户:企业集成资产的使用和管理,并联合生态资源如系统集成商等,完成企业数字平台建设。
开天集成工作台的应用场景也非常丰富,主要可以分为三类应用场景:(01)行业能力开放场景,企业把自身能力以API服务的形式开放出来,通过API连接应用开发者、系统集成商等,服务更多的商业场景,快速形成产业链,从而让企业以最小代价满足客户碎片化且日益增长的需求。(02)使能行业应用创新场景,合作伙伴通过集成工作台提供的低代码/零代码的方式,可以方便使用各种资产如行业API、业务模型、连接器等,完成应用的开发和部署;它使能不同层级的开发者,极大增强企业应用的供给能力。(03)SaaS应用互联场景,企业应用建设随着业务发展逐步展开,势必要解决企业存量应用与新应用之间的协同,通过建立应用间的水管,让价值信息在企业内部及企业间流动。通过集成工作台,实现云上应用间、云上应用与企业内部应用间集成。具体可以用如下几张图来说明:
开天集成工作台内置了各类模板,可以快速基于模板构建流应用。在开发自己的应用之前,请确保成功开通开天集成工作台。目前处在公测阶段,可以免费体验,开通的网址为 : 开天集成工作台-华为云 。
注意:申请公测后,页面会跳转到开通工作台的界面,页面上如显示【您还没有开通集成工作台】属于正常跳转流程。点击【立即开通】,输入所属行业和企业名称,账号正式开通集成工作台。
登录开天集成工作台管理控制台 https://console.huaweicloud.com/macroverse/ssi/?region=cn-north-4#/console/portal 。进入【流编排】【我的流】,首次体验,可以点击【从模板创建流】页签,选择【根据出入城市查询出行城市防疫政策】模板来创建。如下图所示。
点击【创建流 】,弹出界面,单击【继续】,并显示流编排的可视化管理界面,如下图所示:
这里我们首先将发送邮件的节点删除,然后添加新的发送短信节点,如下图所示:
注意:经测试,华为短信(体验)节点发送的短信内容不能过长,否则会导致发送失败,因此,这个我将短信内容可以进行了简化。
单击【华为短信(体验)】,并编辑短信内容,如下图所示:
注意:由于防疫政策查询中的风险等级查询返回的结果是"0","1","2","3"等值,这样并不直观,因此我们自定义了一个函数getRisk(riskId)。
自定义函数可以通过如下界面进行定义,目前支持nodejs和python两种语言来进行自定义函数的创建,具体界面如下所示 :
函数创建完成后,可以进行测试,看看能否正确工作,这里需要注意参数的数据类型,这个返回的是字符串的"1" 而不是 数值 1 。该函数代码如下所示:
# -*- coding:utf-8 -*-
import json
## main函数是方法的入口,
##设置变量表单项的变量
## 会被预置到inputData中,
## 如果你在上面定义了参数name
##则在inoutData["name"]就可以访问变量name
## result 是此函数的输出,可以是一个基本类型或string类型
##,也可以是Object类型,
def main(inputData):
result=""
if inputData["riskId"] == '0' :
result="暂无"
elif inputData["riskId"] == '1' :
result="低风险"
elif inputData["riskId"] == '2' :
result="中风险"
elif inputData["riskId"] == '3' :
result="高风险"
else :
result="部分中高风险"
return result
测试结果示意图如下所示:
单击左边的画布中的元素节点,右边可以显示具体的属性信息。这里我们基于手动触发事件的方式来构建查询系统。模板中的防疫出行政策查询的城市是在第一个节点进行指定的,为了更好的灵活性,我们将城市作为参数,从第一个节点进行传入。单击第一个节点,并添加参数:
然后,在第一个节点中,添加参数值,在【动态内容】中可以选择前一步定义的参数,from和to 。如下图所示:
至此,我们就可以进行【保存并测试】,这样可以来进行测试自定义的出行防疫政策查询是否可以工作,正确执行后,可以有短信通知:
如何使用 ToggleButton 启用/禁用推送通知 示例: ToggleButton 禁用 (OFF) >>> 推送通知应该停止 ToggleButton 启用 (ON) >>> 推送通知 Sho
我有一个 div,它通过简单的转换将自身转换为: div{ transform: translate3d(0, -100%, 0); transition: all .5s; } div.ac
我尝试为静音/取消静音按钮创建一个开/关按钮: override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
我正在手动设置 Jest 。 我的 repo 结构: my-proj - src - components ... - accordion - index.jsx - t
我有一个这样的测试失败了,因为没有调用模拟,问题是模拟被调用但在测试完成之前。 test('should submit if proper values', () => { const spy =
目前我正在使用标准的 testRegex 逻辑来运行我的测试 "jest": { "moduleFileExtensions": [ "ts", "js"
目前我有这个测试: import toHoursMinutes from '../../../app/utils/toHoursMinutes'; describe('app.utils.toHour
使用Chai,您可以创建一个 spy 对象,如下所示: chai.spy.object([ 'push', 'pop' ]); 使用 Jasmine ,您可以使用: jasmine.createSpy
我正在编写一个 Jest 测试,其中我调用一个函数并期望返回一个对象,如下所示: const repository = container => { const makeBooking = (us
当我单独运行每个测试时,它们都成功了。但是当我通过 npm test 一起运行它们时第二个测试失败: Expected number of calls: 2 Received number of ca
我们最近将两个不同的 repos 迁移到一个 monorepo 中。每个都使用 jest 和自己的自定义配置,在他们自己的 package.json 文件中定义。 我想使用 --projects标志以
我试图模拟属性(property) tz和一个使用 jest 的函数,但我不知道将这两个东西一起模拟: 如果运行类似: jest.mock('moment-timezone', () => () =>
我正在尝试设置 Jest 来测试我的应用程序的发展。我收到以下错误: SyntaxError: Unexpected identifier > 1 | const screenSize = requi
我将 Jest 与 React-Native 结合使用,并且偶然发现了一个问题。 App.js 组件中的一小段代码导致 50:50 分支覆盖率: const storeMiddleware = __D
我在下面创建了一个 Jest 测试文件。但是没有创建该文件的快照。我的代码有什么问题? import React from 'react'; import Carousel from './compo
我正在尝试弄清楚如何更新单个快照文件。在文档中,它说只需添加 -t 并且我假设文件名,但这对我不起作用。 例如,在我使用的终端中。 jest -u -t test/js/tests/component
我是 JEST 新手,目前正在测试一个 Javascript 组件,该组件在其 onComponentDidMount 中进行 API 调用。根据 ajax 调用(api 调用)的返回数据,我的组件显
我正在尝试开玩笑地为我的 Web 组件项目编写测试。我已经在 es2015 预设中使用了 babel。我在加载 js 文件时遇到问题。我遵循了一段代码,其中 document对象有一个 current
我刚刚开始使用 jest,但有些事情我不太清楚。 例如,为什么要测试此功能: const liElement = object => `${object.title}`; 与: expect(liEl
我正在编写需要定义 window.location.href 的单元测试第一个单元测试创建如下 describe('myMethod()', () => { beforeEach(()
我是一名优秀的程序员,十分优秀!