- 解锁新的小程序邀请函页面搭建方式
一、 写在前面 作为小程序开发者,我们会伴随一个个的产品需求,在自己的代码里堆积越来越多的功能。 我们更希望寻求新的技术挑战,对重复性的劳动感到痛苦,但有相当一部分的产品需求是无太多技术含量但是偏劳动型的。 比如在小程序里做一个邀请函的页面,通过一个特定的链接二维码跳转展示,页面里基本就是信息的纯展示,高级一点的会加上表单。 我们拆解出来,其实并没有什么技术难度。但如果你一直收到各种各样形色不一的邀请函页面制作需求,你就会考虑到把它模版化。 通过链接参数的形式传入邀请函的关键信息,动态的渲染。通过动态的数据来判断邀请函页面的功能模块的显示和隐藏。用线上保存邀请函完整结构信息并在小程序做解析的形式,来杜绝频繁提交小程序审核。为实现以上能力,我们会花大力气做一套完整的解析形式,搭配上管理后台来记录参数id和邀请函信息。 我们在IDE开始页中上线了一个基于云开发的邀请函页面,你可以通过二次修改,配合云开发的数据库管理后台来实现相似的效果。 [图片] 如果你的时间有限,或者没有单独的服务器资源来实现这些,就可以考虑用微信小程序新推出的云模版能力。 二、 云模版做邀请函的步骤 接下来给大家展示一下云模版使用步骤 1. 下载最新版的微信开发者工具IDE(nightly版本) 请在微信开发者工具(开发版 Nightly Build)下载地址与更新日志 | 微信开放文档,下载最新nightly版本的开发者工具IDE,并安装。(stable版本需要等待下一发版) 2. 打开自己的小程序开发项目(无需新建一个小程序项目),在代码目录中右键菜单,在菜单中点击「通过云模版或AI配置页面」 [图片] 3. 跳转到云模版配置管理控制台,如果你没有任何使用任何模板,会出现以下界面,你可以选择心仪的模板,点击「安装模板」 [图片] 安装页面大概需要2分钟左右,请耐心等待。 5. 页面安装完成后,跳转到页面的控制页面 [图片] 在这里你可以点击右上角的「前往管理后台」,配置活动相关配置。以数字生态大会模版举例子,你可以配置邀请函页面信息,配置报名表单的提交字段,对报名和访问人数做统计等等。 [图片] 如果你觉得页面的信息和自己的期望不符,你可以前往「自定义设计」做相应的修改,修改后发布即可。 [图片] 如果你有和自己后端对接的需求,可以按照下述zhi'yi,配置外部数据源或工作流来对接。 [图片] 6. 将页面安装到自己的小程序中 在初次安装云模版时,你需要填写必要的信息到控制台中,点击顶部的黄色警告栏,在弹出的对话框中输入小程序的关键信息。 [图片] 对应的信息可以前往微信公众平台配置获取 [图片] 配置完毕后,可以在页面控制台中,直接点击「添加到小程序」,页面就会自动的插入到你打开的项目中了。 [图片] 你可以在后面二次修改这个页面的路径,和原生开发的体验无异。 [图片] 三、 用「云模版」做邀请函有什么优势? 在小程序开发过程中,我们会发现很多,类似的业务需求,比如签到打卡、积分中心、趣味抽奖等,最大的变化就是前端页面设计; 我们可以将这些相似的需求归类,每一类需求都可以用一个开发模板为底座,通过上层的参数或页面调整来实现。作为开发者,我们可以用这种方式来替代我们重复的开发工作,同时提升了我们搭建活动页面的效率。 而「云模版」正是利用了这种 “模板复用,二次修改” 的思路。另外也为我们开发者预置了常见的场景类别,并且这个类别会持续的扩展。最大的好处是,由它生成的页面,可以直接导出源码到自己开发的小程序包中,调整非常的灵活。其特点如下: 1. 数据互通 直接打通登录态,用户进入云模版生成的活动页面后,会自动获取登录信息。另外在活动页面操作过程中的所有数据,都会有自带的数据源支持,开发者可以直接跟后面的数据源做对接。 [图片] 这样直接对接数据源的好处有两点: (1) 不需要修改前端页面来冗杂的对接所有数据,节省开发时间,提升开发效率。 (2) 直接对接的数据源数据更加整齐,减少了很多控制层的后端开发逻辑,一切以数据驱动。 如果你不想与自己的后端对接,只是想快速上线并运营一个独立的活动页。2.0自带的数据源也配有完善的管理后台,可以支持多用户多角色精细化授权管理。 [图片] 2. 组件丰富化 云模版除了预置很多类别的模板之外,还允许你在模板的基础上做很多精细化的页面修改,这就需要提供更多组件来适应众多开发者不同的需求。 [图片] 所以我们可以在云模版管理器中,看到丰富的组件库,以及可以供自定义逻辑使用的表达式配置。 [图片] 四、 写在后面 总结来讲,「云模版」相当于给了你一套带管理后台的完整页面搭建工具,你可以不需要任何额外开发就可以获得模版化解决产品需求的能力。 同时使用「云模板」还会给你自带一套后端服务,并具备弹性和免维护的特性,在处理高并发场景时具有显著优势。无论你的页面访问流量如何变化,系统都能自动调整,以满足你的用户访问需求。 同时,免维护的特性也意味着你无需花费大量时间和精力去维护页面,可以将更多的精力投入到你的其他业务中。 另外,为了确保活动的数据安全,云模板采用了安全网关等先进技术,在链路层面实现了请求安全;可有效抵御黑灰产的攻击,保护页面访问和数据不受恶意攻击的威胁。 如果你目前正在为快速和重复的上线页面而烦恼,或者有计划升级你的开发模式,不妨可以花点时间体验一下「云模板」。 如果你在使用过程中有疑问或者建议,可以加入企业微信直接问。 关于本文中提出的观点和内容,如果你有其他补充和意见,欢迎在文章下留言一起探讨~
04-25 - 用这个来跟产品Battle效果更好|微信工作流实践体验【含视频】
一、写在前面 前两天我写了一篇关于微信推出工作流的干货文章,介绍了下工作流的概念以及微信工作流,如果有兴趣的同学可以移步看一看: 真实体验|微信新推出的工作流表现如何? 有的时候作为产品经理在策划功能的时候,都喜欢用UI界面做前端设计,用流程图做后端逻辑设计。产品经理可以用工作流来自己搭建验证策划的功能,跟研发同学沟通会更加轻松,甚至自己就可以实现一些基础的,不用麻烦研发同学,自力更生了。最近我反过来一想,从研发同学的视角来看,对有些需求真的会心力交瘁,产品逻辑都跑不通。 是时候用工作流来给产品同学一次小小的研发震撼了!!! 本篇主要是延续上一篇实践文章,用一个报名推送的示例,给大家通过视频的方式演示一遍完整的工作流的使用过程。 二、实践部分 为了让大多数人都适用这篇实践,我直接用一个邀请函应用模板开始。 你只需要下载微信IDE,就可以跟着接下来的演示跟着操作了。 如果你的小程序使用的是服务器或其他平台提供的后端服务,你可以通过接下来的演示来感受一下搭建工作流的使用过程,其中的一些数据操作可以替换成自己的接口实现。 接下来我们就开始视频演示: [视频] 有细心的同学会发现,视频中有些判断和更新的逻辑其实可以写在一个节点里,为什么要拆出来呢? 我们做开发时要追求函数的最小封装,尽量不包含大量且容易变动的复杂逻辑。 当产品同学在后续时做逻辑修改时你可以很轻松的完成调整。 三、写在后面 作为研发,你可以在工作流中直观的看到业务的处理逻辑,当然你也可以直接给产品同学review你的整个逻辑,我相信TA也能看懂。 其实到最后,你都可以只做节点的封装,逻辑的处理让产品同学自己来调整都可以,省去了很多沟通交流的隔阂。 毕竟有的时候有些产品同学也不知道自己在想些什么,不妨直接让TA自己来,好好体会一下TA自己提出的需求有多离谱。 如果你有小程序前后端开发的疑点或者寻求方案,可以联系微信云服务的架构师。 关于本文中提出的观点和内容,如果你有其他补充和意见,欢迎在文章下留言一起探讨~
2023-12-16 - 无需代码改动为你的小程序增加攻击防护|操作指南
一、写到前面 上周Donut安全网关推出一键接入的新功能,当你之前有使用过安全网关,再体验这个新能力,就会发现其严格意义上是重塑了整个产品接入形态。 去年我写过一篇关于安全网关的指南文章,其中有讲过安全网关的作用和特点,在这里重新提一下: Donut安全网关提供了一个安全的接入链路,从调用端(小程序、公众号H5、APP、WEB)发起的请求直接进入微信环境接入层,微信接入层通过中转域名将请求转发至后端服务网络的「网关实例」中,在「网关实例」中通过路由配置将请求转发到开发者自己的上游业务服务,完成整个请求。[图片] 上面这个图是去年的时候的网关的架构图,初始形态下我们必须要自己部署一个网关实例,在部署的网关实例中包含对上游业务和路由转发的配置。 在2023年年中时候,又推出了「极简直连模式」。在安全网关看来,针对业务端的网关实例可以由安全网关自己接管,不需要开发者介入安装。直连模式下开发者只需要配置源站域名或IP地址,微信会自己分配相对应的微信接入域名。 比如源站域名https://weixin.qq.com,分配接入域名https://a1a48fdaf-wxa174c2e9b3e2ec50.preview.wxcloudrun.com/。只需要访问接入域名就可以经过安全网关直达源站业务端。[图片] 但接入域名需要配置在前端应用(小程序、WEB、APP)中才可以正常接入。整个架构图中,从调用端到业务后台,每个链路都需要完成改造,安全网关才算正常接入完成。 即使到极简直连模式下,在调用端方面仍然需要开发者进行改造。那么如何才可以让开发者不用对调用端进行改造呢? 这就引出了史诗级新功能:一键接入。 [图片] 二、功能介绍 在微信小程序中,如果要向外发送请求,必须要用 wx.request ,这是微信小程序在网络请求中的封装。 一旦封装就可以做很多事情,比如微信小程序提供的请求缓存管理器,就是在封装下的其中一种功能体现。另外wx.request还会拉取开发者的服务端配置,来判断经过其的请求域名符不符合要求… 那么安全网关的使用中,在wx.request中直接转发需要安全接入的源站域名请求,让它们直接走网关链路就可以了,其余的还是正常走源站链路。 当这个能力实现支持之后,开发者接入安全网关的所有改造工作都已经消失,开发者只需要一系列配置就可以完成小程序端的安全链路改造。 接下来详细介绍一下使用细节。需要注意,之前使用原来形态的安全网关的开发者,需要新建一个空间才会有这个能力。 三、使用过程 1. 需要微信扫码登录 Donut 安全网关控制台,同意安全网关服务协议并同意即完成开通。 [图片] 2. 如果账号没有创建过任何空间,会自动引导开通空间;根据自己的情况选择个人或企业主体,并给空间起一个名字。一般建议一个空间对应一个业务集群。 [图片] 3. 在空间里创建安全网关,如果没有任何网关,则会直接进入一键接入页面 [图片] 在一键接入这里选择小程序,将会拉取此空间下授权的小程序,如果空间里没有任何小程序授权,则可以根据指引新增授权,需要小程序管理员(注意不是开发者和运营者之类的)扫码确认。 [图片] 4. 选择小程序并点击「开始接入」按钮后,将会直接默认转发该小程序所有服务端配置域名,并且只在该小程序体验版生效,不会影响线上。 [图片] [图片] 5. 后续可以在控制台随时更改链路接入覆盖范围,包括小程序的范围和域名范围。 这里主要解释一下接入域名,接入域名其实对应的是一个个的网关域名(在前期安全网关产品功能中有直观体现),在后面的接入多端中会应用到。小程序一键接入可以直接忽略掉。你可以将其理解成一个链路方案,该方案下可以有多个小程序或者一个小程序不同版本的不同域名配置。(比如我希望开发者版A域名走安全链路,体验版B域名走安全链路)[图片] 6. 点击接入域名中的修改按钮,可以针对该接入情况做修改,详情如下图 [图片] 接下来介绍一下每一个配置项作用: 选择小程序:该接入域名所应用到的小程序。接入版本:小程序的哪个版本要安全链路接管。全部版本就是线上版、体验版、开发版均接管。小程序URL:从小程序管理后台开发配置中读取服务端配置,可以选择所有或者针对部分链路做匹配。比如/api/,则匹配/api/前缀下所有的路径,如果下面又有同域名的/test/,则同时匹配/api/前缀和/test/前缀的所有域名请求。如果填空,则匹配所有域名请求。添加小程序:你可以最多添加两个小程序(小程序可以相同)7. 你可以新增接入域名,选择不同的小程序。(需要注意的是一个小程序只能被一个网关的一个接入域名绑定) [图片] 8. 在监控视图中可以查看网关下的小程序端链路调用情况,可以通过观察请求成功率来验证安全链路的兼容稳定与否,结合自己的测试来判断是否应该继续接入。 [图片] 如果你发现一键接入后,有异常请求且持续发生,则可以直接操作一键断联。 [图片] 四、常见情况 1. 一键接入后,是否还需要小程序改造发版? 不需要,微信小程序底层将直接根据你的接入配置在网络层完成安全链路转换。 2. 如何判断是否经过了网关链路? 网关链路的errmsg值为gateway.call:ok, 另外在返回体根级会有callid,建议在小程序端记录并上报该callid,链路出现问题可以凭此callid反馈给安全网关团队精确定位。服务端会收到安全链路的特定header: x-request-id:请求ID, x-wx-call-id:链路请求ID,和前端响应的一致,可以通过其来联系前后端日志。反馈问题也首选这个。 x-wx-route-tag:接入域名标记,可以根据此判断不同的接入域名转发的流量,用来区别对待 x-wx-source:请求客户端,比如微信客户端是wx_client,开发者工具是wx_devtools x-wx-appid:请求小程序,标记请求的小程序appid x-envoy-expected-rq-timeout-ms:网关参数,响应超时时间,一般是15秒 根据自身安全要求,可以通过x-wx-appid、x-wx-route-tag来设立一个白名单,只接受来自白名单接入域名或白名单小程序的请求。 3. 在使用过程中出现问题或者不想再使用安全链路,需要怎么操作? 参照上面使用过程最后一条,直接断联就可以,不需要再次接入则可以直接删除接入域名。(需要注意删除之后,接入域名就没法复原了) 4. 为什么接入配置后,小程序对应的版本访问还是原生链路,没有走安全链路? 链路生效一般在1分钟之内,如果用户正在访问该小程序,则需要等待下一次启动打开才可以。如果开发者测试验证,则建议退出微信后台,重新进入再试,如果仍然不可以,则删除掉小程序然后重新加载尝试(删除掉小程序主要是清除缓存) 5. 为什么接入配置后,微信开发者工具没有走安全链路? 开发者工具对应的是「开发版」,需要保证接入配置到「开发版」上,配置之后仍然不可以则等待一分钟再试。一般清除缓存+重启开发者工具都可以搞定。基础库版本需要在3.1.5及以上,开发者工具版本需要在1.06.2310312及以上。
2023-12-14 - 如何计算并优化应用的高并发性能指标?|微信压测指南
一、高并发性能指标计算与优化为了让初学者能够更好理解,我们从一个例子来引出。假设你的小程序在同一时间点有 100 个人访问,每人访问时发送 2 个请求,每个请求平均耗时 50ms。你的服务器能在一秒之内能够完全处理这 100人的 200 次请求访问。 通过以上假设,可以得出每秒处理访问请求数(QPS)为 200。那么你的服务器最小并发处理数为 200 * 0.05s = 10。 对应公式如下: 并发处理数 = 每秒处理访问请求数(QPS) * 单个请求的平均耗时[秒]这里的并发处理数只是最小,因为案例中已经验证能处理 200 次访问了,如果要计算最大,则需要继续加量测试。 如果服务器在同一时间只能处理 1 个请求,那么其并发处理数是 1,如果还是上述假设,每个请求是 50ms,那么服务器 1 秒内最多处理 20 个请求,也就是说100 个人同时访问200次请求,最少需要 10 秒钟才能全部处理完毕。 并发处理数是指系统能同时处理的请求数量,一般由请求时消耗的资源和服务器资源来共同决定。比如请求是 CPU 密集的,每次请求都需要占用 CPU 50ms,那么单核服务器并发数就只有 1,如果服务开多线程并且部署多核服务器,并发数会相应的增加。 在做性能优化的时候,可以向两个方向工作: 提升服务器并发数:可以通过增加服务器数量和质量,或者降低请求的资源消耗。降低单个请求的平均耗时:优化请求里的处理逻辑,缩减占用吞吐资源的时间。通常情况下,影响并发数的资源主要是CPU、内存、存储IO、带宽。 初入行的开发者,最先遇到的资源瓶颈大多是CPU。请求的处理中包含大量的计算会严重占用 CPU 的使用,一般在开发自测阶段不容易发现这种问题(用户只有 1 个或几个),一到上线就会出现大量的请求超时。 在遇到资源瓶颈问题时,解决思路就优化代码和添加配置: 优化代码:这个因程序而异,而且比较看开发者自身的技术水平,就不展开讲了。添加配置:这里照顾一下个人和初创团队,提供一些有用的经验。 ○ CPU和内存:买多核多内存的服务器或者用弹性伸缩来动态增删服务器来解决;更有性价比的思路是用云函数(公有云的云函数都可以,也可以用微信云开发的云函数来),遇到高消耗的任务就直接放到云函数中,处理时直接调用计算,服务器只等待结果,不消耗服务器的 CPU 和内存资源。 ○ 存储 IO:更换好一点的服务器硬盘,如果是海量的用户面存储,可以直接用对象存储,性价比很高,不绑定云硬盘,迁移还方便。 ○ 带宽:购买高带宽但价格感人,可以开启按流量计费,把阈值开高就可以。 二、 通过微信安全网关压测来测试自己的极限关于微信安全网关的作用和特点,我在之前有写过2 篇文章,感兴趣可以去看看。 「微信开发平台Donut」入门指南|安全网关篇Donut安全网关一键接入体验指南这里主要介绍一下压测的部分。 在网关内的控制台左侧点击「扩展能力-压测工具」,可以看到压测的页面。 [图片] 我们先创建一个压测任务,相应的操作步骤如图演示: [图片] 压测任务的信息构成主要由以下几方面: 压测任务名称:可以自由定义,用于方便你分辨压测任务。压测小程序:以哪个小程序的角色进行压测,压测时默认小程序接入安全网关,不影响现网的接入配置。请求列表:分为业务请求和微信请求,业务请求可以是任意的 URL,支持多种请求形式。微信请求,目前包含登录和支付接口,后面会支持更多接口。调试能力:模拟压测链路执行所有列表请求,并显示请求耗时和返回信息,用于确认配置是否正确。确认信息无误后,点击“保存”按钮。 创建压测任务后就可以预约时间段来进行实际压测了,由于资源有限,所以压测预约是按时间段来的,并且预约时需要自己确认并发用户数和压测时间。 预约到时间段压测后,等到预约的时间就可以开始执行了。如果超过时间段则就无法执行,需要重新预约。 [图片] 压测完成后,就可以在同一页面下方看到详细的数据,如图: [图片] 根据压测的数据信息,就可以估算出相关的性能指标了。 我们以上图举例子: 100 个用户,压测 600 秒,每个用户完成一轮请求后紧接着进行下一轮。如果列表中有请求调用错误,则不会进行列表中其后的 其他请求,直接重新从列表开始请求。 QPS = 阶段请求数/阶段请求时间[秒]并发处理数 = QPS * 单个请求的平均耗时[秒] 基准测试接口QPS为 178587 / 600 = 298.645,并发数为 298.645 * 0.030774 = 9.19登录测试接口 QPS 为 178328 / 600 = 297.213,并发数为 297.213 * 0.133554 = 39.69 QPS 和并发处理数指标需要结合你的应用场景合理设定,并不需要设置很高的性能指标,满足产品所需并留有部分buff就可以了。 最直观的就是直接上压测任务,模拟一些真实的用户来在时间限制内持续请求你的服务器,来看最终的结果如何,并根据结果来指导你做指标设定和优化方向。 以下是腾讯云关于服务器实例的压测结果,当然这只是参考,实际上跟应用类型和服务架构也有关系的,还是自己真实上业务测试比较准。 [图片] 关于压测工具的体验,可以访问Donut-安全网关控制台,有疑问可以在控制台点击「技术支持」寻求帮助~
2023-12-14 - 真实体验|微信新推出的工作流表现如何?
上周微信云开发上线了「工作流」能力。支持通过拖拉拽的方式搭建流程,支持调用、时间、消息通知、支付等多种驱动场景的业务计算,主要目的是降低开发门槛,提升开发效率。 一、什么是工作流? 工作流这个概念我们并不陌生,其概念发端于上世纪70年代,正常解释为:对工作流程及其各操作步骤之间业务规则的抽象、概括描述。 说白了就是我们在做任何任务时(不管是线下任务还是线上任务),在组织团队中或者合作关系的他人之间,按照既定的规则完成工作的过程,都可以用一个流程图来清楚的表达出来。 下面是企业员工入职流程的流程图,无需繁杂的文字描述,任何人都能够通过该图清楚整个流程,这其实就是一种工作流。 [图片] 为实现特定的业务目标,多个参与者之间按某种预定规则传递文档、信息或者任务可以被称为特定业务目标的工作流程。 而如果使用计算机对上述工作流程抽象实现,让计算机能够参与其中,自动化的完成信息交互或者相关任务的设计,就被称为工作流。 二、微信推出的工作流体验 在小程序开发中,除了业务数据的增删改查之外,还有些业务需要对接外部的平台。比如 1.小程序用户在客服中发送消息,需要根据消息关键词自动匹配相应回答并显示。 2.小程序接收到用户支付后,完成订单的状态扭转和相应的通知发送。 3.小程序用户撤销信息授权时,执行相关的数据库信息删除工作。 4........ 我们在与这些外部平台来做连接的过程中,会发现其都是可抽象化的,可以简化成若干个事件驱动。比如微信支付成功或失败,就可以转化为微信支付的事件驱动,当支付完成时,特定的执行什么事情。 单纯用代码来实现时,我们需要做很多事情,包括事件监听链接的配置,事件内容解析,同步或异步回复。开发成本还是比较高的,并且有时候受经验限制会没办法对接的非常好。 工作流将微信相关的事件整合进来,你可以通过配置关键信息,直接接入事件的触发,然后根据你自己的业务逻辑设计整个处理链路。 比如接收小程序用户消息做自动回复的工作流如下: [图片] 在触发上直接配置小程序appid和token,就可以完成接入。 我们以消息自动回复举例子,完成整个工作流的体验 1. 首先需要在小程序开发者工具IDE中,打开云开发云函数控制面板,新建时选择工作流,然后创建消息触发,如下图演示: [图片] 工作流是由触发器节点开始的,目前支持的触发器节点如下: [图片] 2. 对触发器节点配置一些基本信息,我们点击触发节点,在右侧抽屉栏中对应的填写appid,以及token还有解密AESkey [图片] 这样我们就配置好了触发节点,通过模拟数据或者实际监听推送来完成后续的工作流建设。 [图片] 当你需要真实的调试时,需要在小程序后台配置相关的信息,下图appid、token、EncodingAESKey和url需要对应的填入公众号或者小程序后台。 [图片] [图片] 3. 我们添加一些条件判断,用来判断事件监听的类型,针对不同的类型分开处理。比如「用户消息」和「撤销信息」我们就需要对应的做不同的流程。 我们可以通过模拟数据或者真实监听来看到触发时接收的消息结构,以便于后面我们做相关判断处理。如下图我们知道接收文本消息时,MsgType 为 text。 [图片] 接下来我们做个判断,来区分用户发送文本消息和图片消息,如流程演示: [图片] 添加条件分支并编辑的操作如上,我们相对应的做出监听图片以及其他的分支,如下图: [图片] 4. 有了条件分支我们就可以相对应的做处理了,在这里为了简化演示,我们直接用被动回复来做(主要注意被动回复只在公众号生效,小程序需要调用接口回消息)。返回的格式我们还是要遵循微信文档描述的响应模式。 [图片] 我们来实践一下,如下图: [图片] 对应的我们给所有的条件都设置上返回内容,当遇到我们没有匹配的MsgType时,直接返回空消息告诉微信服务器我们收到消息了,就不用持续发送了。 [图片][图片][图片] 5. 设置完毕后,我们就开始整体流程调试,点击右上角「流程调试」,前面我们配置小程序后台之后,我们就可以在调试时主动发送小程序客服消息来实现触发。如下演示: [图片] 我们可以看到我们的判断逻辑生效了,工作流会根据我们发送的消息类型完成扭转。 [图片] 如果调试没有问题,就可以发布了,发布后你可能需要在公众号或者小程序后台更改一下推送URL为正式URL,之前的是调试用的。 [图片] 除了由微信消息触发之外,工作流还提供了很多触发节点,比如HTTP调用,组件访问,微信支付事件等。 以上就是一些基本的操作介绍,如果你觉得这样操作点击很多,你想在现成的上面修改,可以在开通时直接选择相应的模板,这些模板都是常见场景可用的。 [图片] 三、总结 工作流通过将判断逻辑和接入节点抽象化,来做到所见及所得的逻辑编写,上手门槛很低,只需要有一定的逻辑思维就可以自己构建一个基本的工作流,配合一些简单的代码编写,完成稍微复杂的工作流不是问题。 有的时候作为产品经理在策划功能的时候,都喜欢用UI界面做前端设计,用流程图做后端逻辑设计。产品经理可以用工作流来自己搭建验证策划的功能,跟研发同学沟通会更加轻松,甚至自己就可以实现一些基础的,不用麻烦研发同学,自力更生了。 另外工作流的模板可以共建起来,任何人都可以上传自己制作的工作流给其他人用。如果场景和工作流节点有其他需求,可以在这里提交。 如果你在使用中有任何疑点或者寻求方案,可以联系微信云服务的架构师。 关于本文中提出的观点和内容,如果你有其他补充和意见,欢迎在文章下留言~
2023-12-12 - 完整的做个后台大概要多久?|微信云后台实践体验【含视频】
一、写在前面 前两天我写了一篇关于后台的技术选型文章,如果有兴趣的同学可以移步看一看: 怎么建设小程序的后台比较好? 其中最后讲到了微信云后台,简单讲就是,它将表格等常用的管理后台组件封装起来,我们可以通过简单的适配就可以完整的得到一个后台,同时不限制你的后端服务选型(既可以是自建服务,也可以是其他的平台型API服务) 本篇主要是延续它来做实践的部分,通过真实的做个后台来验证一下其是否如介绍的那样。 二、实践部分 为了让大多数人都适用这篇实践,我直接用一个邀请函应用模板开始。 你只需要下载微信IDE,就可以跟着接下来的演示跟着操作了。 如果你的小程序使用的是服务器或其他平台提供的后端服务,你可以通过接下来的演示来感受一下搭建后台服务的过程,从而辅助你做选型决策。 接下来我们就开始视频演示: [视频] 关于上述视频中出现的数据源导入文件,请访问此地址获取。 整体下来只需要大概10-20分钟左右就可以做出下面的效果出来。 [图片] 如果你想要再加批量同意和拒绝、批量删除等操作功能,可以自己在视频演示的基础上搭建,整体的上手难度不大。 三、写在后面 在2020年的时候,我在微信IDE上基于微信云开发做了邀请函、活动报名、LBS等多个应用模板。那个时候我就觉得像邀请函、活动报名这种应用必须要搭配后台才算完整,开发者来使用的时候才真的是开箱即用。 微信云后台的统一性和简易程度正好可以弥补我2年前的这块缺失。如果你有使用过之前云开发的模板,不妨按照本次演示来自己做个后台吧,当你的应用需要有很多管理人员的时候,相比于直接在数据库中操作数据对象,用自建的后台来管理总归还是比较可控的。 如果你有小程序前后端开发的疑点或者寻求方案,可以联系微信云服务的架构师。 关于本文中提出的观点和内容,如果你有其他补充和意见,欢迎在文章下留言一起探讨~
2023-12-13 - 怎么建设小程序的后台比较好?|零基础探索指南
一、写在前面 我比较喜欢做微信生态的解决方案,给企业或个人提供一些技术方案和应用形态选型的咨询。最近跟一些朋友聊天,他们在各自的工作岗位中,随着工作熟悉就会自然而然有很多能提升工作效率的点子。 有些人喜欢用文档、问卷、表单等 SAAS 应用捏合一个自己的效率集,一般能满足很多场景;但还有一些场景可能没有合适的 SAAS 应用,于是就想搞个小程序,然后来问我怎么做比较合适。 “小程序一定程度上降低了开发者搭建应用的门槛,做一个小程序相比其他的产品形态效率更高,落地更快。”,这个观念在这几年的发展中越来越深入,有很多不是软件行业的朋友都能提出小程序这种想法。 通过简单的代码,做一个满足自身小场景的小程序,并不是很难。有一定的数理基础,配合社区的入门教程很容易上手。上手门槛已经降低到中小学生都能触及到的程度了,微信还针对的搞了个少年挑战赛。 完整的闭环一个应用,单纯用小程序做个前台还是不够的,很多情况下我们需要有后台做管理支撑。 比如一个登记小程序,除了小程序能够提供登记信息填写外,还需要一个后台能够承载管理人员做状态扭转或者其他的后备工作。 一般这种情况下有几种解决思路: 1. 在小程序中编写管理页面,通过用户 openid 来指定仅管理员可见。 2. 通过接口对接企业微信或者其他 SAAS 平台的 webhook 能力来组合管理。 3. 搭建一个可操作的管理后台,有细粒度的权限管控。 接下来我主要分析一下这几种方式的实现和利弊,你可以根据自身的需要有针对的选型。 二、后台方案对比 1. 在小程序中编写管理页面,通过用户 openid 来指定仅管理员可见。 实现方式:编写单独的管理页面,或者在业务页面中嵌入一些管理按钮,每次加载时,通过后端比对 openid 返回给小程序端是否可以展示管理页面或内容。方案优势:小程序开发难度,低门槛,实现简单。方案劣势:管理权限的授予以及可靠性维护太差,浪费资源。 ○ 管理者的身份需要设计机制去确认(手机号关联or访问记录) ○ 管理页和内容占用小程序包资源,影响普通用户的使用体验 ○ 正常用户访问也会判断管理员逻辑,浪费数据库读资源(硬编码则维护难度增大) ○ 管理接口与业务接口有混用的风险 [图片] 这种实现是大部分初入者首选的,因为微信用户体系比较完备,可以通过 openid 来确定一个微信用户。在用户打开小程序时,服务端判断用户身份是否是管理员,如果是的话返回一些信息给小程序,小程序对应的展示相关管理页面内容或入口。 劣势也是非常明显的,由于管理逻辑与业务逻辑都集中在小程序通信,会在身份判断,业务处理上有更多的无效的数据库读请求,浪费资源。 [图片] 2. 通过接口对接企业微信或者其他 SAAS 平台的 webhook 能力来组合管理。 实现方式:暴露一些接口,然后使用企业微信的机器人或其他工具对接暴露的接口,实现通过消息或者点击驱动接口完成一些配置。比如访问接口地址填写一些特定参数来实现状态扭转(https://www.example.com/api/status?id=10001&type=success&key=1212)方案优势:只需要提供接口即可,几乎没有前端的开发成本。方案劣势:可读性比较差,并且有被攻击的风险,接口安全需要下功夫。 ○ 可读性比较差,无法可视化,但可通过其他工具加以改善。 ○ 由接口的参数驱动,权限校验为明码,容易泄露。 ○ 应对管理场景有限,无法应用到复杂的管理操作(如上传图像或批量处理) [图片] 这种方案一般用于非常简单的管理场景中,比如就只针对一个事项做状态扭转,发起一个批处理的任务,发送通知等。完全由接口来驱动完成。但权限管控只能通过参数来明码输入,或者通过结合 saas 工具,来利用其调用时的 header 信息来做权限判断。 [图片] 3. 搭建一个可操作的管理后台,有细粒度的权限管控。 实现方式:搭建独立的 WEB 后台(或APP ),来统一设计用户管理权限,以及搭建各种业务的管理流程。尽量不在接口层面与业务端有交集,仅做数据层面的处理和互通。方案优势:灵活度大,可以实现任意后台管理场景,并且可以接入丰富的权限管控。方案劣势:搭建难度大,处理的开发流程复杂,可能需要重新设计一套用户体系。 ○ 搭建难度可能远远超过小程序前台,需要考虑投入是否值得。 ○ 根据所需可能要对接不同的用户登录体系,比如用户名密码+微信登录+邮件登录。 [图片] 这是一个标准的方案,业务后台页面的构成和功能设计需要根据自己的业务场景来单独设计,其用户群体为业务管理者。在功能实现上既可以有数据库的增删改查,也可以有外部平台的调用(比如微信支付分账,发起退款,发送邮件通知等)。作为开发者在搭建后台时,遇到的实现点和难度可能都是高门槛的,所以需要一定的技术积累,并充分理解用户群体(业务管理员)的工作流程。 [图片] 三、微信在后台方面做了什么? 为了让开发者在做个小程序这方面的门槛降低,从设备端到用户体系,从单机存储到联网同步。微信团队围绕小程序开发的各个环节提供了很多产品和服务形态,其核心目标就是让开发者做小程序的门槛变得更低。 比如微信云服务,Donut 开发平台,通过提供云端资源和平台能力,在一些方面多做一些,让开发者少做一些。 在业务后台这个方面,实现上脱离小程序本体,但是从业务经营者角度来看,又是小程序业务不可或缺的一环。所以微信针对业务后台这方面也提供了解决方案: 云后台是微信最近上线的一个能力,主要面向小程序或公众号 H5 场景的业务开发者,沉淀常见的后台管理场景;通过提供丰富应用模板、开放数据接口、灵活管理权限等功能,降低开发者搭建后台的成本,提升开发效率。 [图片] 通俗来解释的话主要就有 3 个亮点: 1. 丰富的模板应用和灵活的搭建驱动。 除了我们常需要的 CMS 内容管理,还提供常见的商品管理,订单管理,数据分析,支付管理等等。如果这些模板不能满足你的场景或者场景没覆盖全,你可以直接去编辑应用,用低代码编辑器来搭建自己心目中的理想应用。[图片] 2. 可以自由定义的数据接口和外部平台连接 云后台自动携带一个中心化数据源,并提供完备的数据操作接口。如果你自己有自建的数据源,可以在云后台自由配置连接,直接对接到各个后台应用提供针对微信开放平台、微信支付平台的现成连接接口,只需要配置令牌信息就可以直接用,不需要花时间再做调试。[图片] 3. 提供灵活的用户权限管理,细粒度控制 云后台内置用户权限体系,可以针对不同业务管理场景创建角色,并赋予特定的应用可见和可操作权限。提供丰富的认证源,比如微信扫码登录,或者自建的认证源。[图片] [图片] 其中我觉得对初学者友好的一点是,如果你只开发了一个单机小程序,还没有做云端接入。云后台由于有中心化数据源,也就意味着你不需要自己搭建后端服务了,直接使用云后台暴露出来的接口调用就好。 [图片] [图片] 有关于云后台的具体使用细节的动态体验,我会在后面单独开一篇文章,发布后会更新到这里,如果感兴趣可以关注下。 四、总结 如果你目前正在为业务后台的搭建烦恼,或者有计划升级你的后台形式,不妨可以花点时间体验一下,具体请参见云后台文档。 如果你有小程序前后端开发的疑点或者寻求方案,可以联系微信云服务的架构师。 关于本文中提出的观点和内容,如果你有其他补充和意见,欢迎在文章下留言一起探讨~
2023-12-11 - 云数据库watch出现大量rebuild watch fail错误?
最近项目上使用了云数据库的watch功能,上线后大量报错 -402002: realtime listener rebuild watch fail | errMsg: Error: Watch Error {"code":"QUERYID_INVALID_ERROR","message":"queryID not exist, need retry initWatch"} realtime listener init watch fail | errMsg: init watch fail Error: invalid state: ws connection not exists, can not send message 另外,小程序运维中心的错误查询种监控到大量的错误: current state (CLOSED) does not accept "initWatchFail" current state (REBUILD_WATCH_SUCCESS) does not accept "rebuildWatchFail" current state (CONNECTED) does not accept "connectionSuccess" current state (DISCONNECTED) does not accept "connectionSuccess" [realtime] onMessage parse res.data error: SyntaxError: Unexpected token u in JSON at position 0;at socketTask.onmessage callback function 我选取几个示例报错: [图片] [图片] 我使用到的代码如图:(代码中涉及到websocket的仅仅只有云数据的watch,并没有用到其他websocket功能和代码) [图片] 在我本人手机上和IDE上面都没有报过这样的错误,不知道是为什么? 请教一下,是什么原因导致的这种错误?有什么办法能解决?
2020-09-25 - 云函数事务处理 DATABASE_TRANSACTION_FAIL
code: "DATABASE_TRANSACTION_FAIL"message: "[FailedOperation.Abort] Abortfail. Retry your request, but if the problem persists,contact us."requestId: "1598427207356_0.26108586309568693_33601122-17429af9839_3"
2020-08-26 - 小程序云开发挑战赛常见问题
由中国软件行业协会、信息技术新工科产学研联盟指导,腾讯云云开发与微信小程序团队等共同发起的全国首届小程序云开发挑战赛正式开启报名。大赛将面向高校开发者和职业开发者分别开设校园赛道和职业赛道,通过赛事实践,促进云原生技术在小程序和微信公众号场景下的实践应用,推进产业和服务的相融合。为方便参赛报名人员更理解本次大赛赛程,特此整理以下小程序云开发挑战赛常见问题以供大家参考。 大赛官网:https://cloud.tencent.com/act/event/cloudbase-acc 赛题相关 请问本次大赛可以做什么方向的题材应用,有什么限制? 本次大赛应用限定为应用解决方案类型,方向不限,可以自由发挥,但作品应当符合互联网合法性,应当遵守现行法律法规。 赛题提到的综合利用云开发各种能力,是必须全部使用嘛? 不必须,根据自己的作品合理使用需要的功能即可,不需要的可以不用使用;作品允许云开发+服务器模式搭建后端服务。在作品评判时,“云开发的合理使用”会作为重要的一个评判标准。 作品相关 有效作品的条件是什么? 1.有完整的应用作品,并且提交材料完整且一致(包含功能演示视频、可访问的代码托管地址、微信开放社区作品介绍文章,且三者描述的是同一个作品) 2.作品不涉及重大抄袭,且主要产出在比赛期间(8月后)完成。【界定在比赛期间完成,将采用举报制和全网检索两个手段进行】 作品评审主要看什么方面?有多少充分利用到云开发?经济价值?新颖? 1.作品从定位【校园赛道30分、职业赛道25分】、技术【校园赛道15分、职业赛道25分】、执行【校园赛道15分、职业赛道20分】、产品体验【校园赛道30分、职业赛道20分】、过程表现【校园赛道10分、职业赛道10分】五个维度综合打分,具体可参看赛事规程 2.云开发的使用包含在技术中统一打分。但若作品不符合赛题规定,则直接取消成绩。 可否采用腾讯云的MongoDB云数据库和腾讯云的云函数 不可以的,但是你可以综合利用云开发+上述产品的方案来做,但不可抛离云开发单独使用其他后端服务。 开源项目文档在哪些方面可以加分? 文档遵从明晰清楚的标准。源码关键部分需注明注释,项目配备启动流程说明。由于源码是专家评委评判的重要依据,所以直观明了的解释说明,评委会更轻松的明晰你的项目,有利于评委给出更加有利的评价。 文档尽可能详尽,如果内容着实很多,可以分多个md文档表述。具体可以翻看开源平台star高赞的项目。 如果做像商城那样数据量多的功能,图片太多导致打包文件太大,保证功能前提下,删点图片(这样可能不能实现海量商品),可以吗? 此情况建议分开文件夹存放,如果基础资源实在太多,可以适当删减。只需要在功能演示视频中展示海量即可。 是否能使用类似uniapp的小程序开发框架,如果能,作品提交源码时是提交框架编译后的小程序原生代码还是部署前框架的代码? 可以使用此类小程序框架,但是不能够使用框架配套的云服务。提交源码时需要提交框架代码,并在文档中说明部署步骤。 不允许拿已有项目进行重复提交,除非基于已有项目进行重大功能迭代。这里怎么定义重大功能迭代? 1.原有传统后端服务在比赛期间改为云开发的,符合提交要求。 2.之前云开发的项目,可进行功能扩展或体系扩张。这里遵循double原则,也即提交作品中有50%及以上需要在比赛期间完成。在文档中需要注明扩展前后的对比,以便专家对比赛期间完成的作品进行合理评价。 参赛如涉及金额支付是以模拟价格展示还是实际场景支付价格(例如购买该产品需支付100元,是只需支付0.01就可以看到后面的流程还是 就以100元计算) 保持原有实际场景即可,此处流程在视频中着重体现。另外评委会从源码中找寻该部分逻辑,进行代码功能走读。 参赛作品最终会以开源项目展示吗? 大赛会对进入复赛的作品,以及评选的优秀作品进行展示。但在展示前会与作品参赛者知会,尊重参赛者的意见,作品参赛者享有作品的著作权。 UI用户体验在评分中占比大吗? 不同的赛道占比不同,但合格的UI会增加体验感,更容易竞争。 微信小程序直播连麦功能个人可以申请吗? 关于小程序或者公众号的一些功能,需要遵循微信平台对主体的开放策略。如果个人明确规定不能使用则无法使用。 大赛不提供任何主体的小程序或公众号,如果有此需求可以自行注册。 参赛作品可以使用框架嘛? 参赛作品以最终呈现为微信小程序/公众号为重要标准,可以使用框架进行构建,不做限制。云开发部分只可以使用小程序·云开发或腾讯云·云开发。 我参赛的作品源码必须要开源嘛? 是的,根据赛事要求,作品需要开源,建议酌情对你的作品基于比赛要求做一些调整,隐藏涉密功能或机密代码。在作品描述时给予标明,并融入相关产品(商业)计划来增强描述。大赛专家组将评估开源部分,如果进入复赛路演,则需要综合评估路演效果与开源部分是否对应。 我可以提交之前已经做好的作品嘛? 参赛作品原则上应在2020年8月以及之后完成。如果参赛作品属于之前产品的升级版本,需要在作品提交相关文档中明确说明大赛期间完成的内容,大赛仅允许该部分内容参加比赛评审。如文档无明确说明,且被鉴定属于之前作品,则取消参赛资格。 我的作品提交后可以迭代更新再提交嘛? 可以,作品提交截止日期为9月20日20:00,在此之前可以随时提交重复提交作品,新的提交会覆盖之前的提交。提交链接需要验证大赛报名手机号才可以进入,如需更改手机号请联系大赛交流群主。 提交链接提示我的手机号没有权限? 一个队伍只有一个人具备提交权限,如果你想更换提交手机号请联系大赛交流群主。如果你是单人组队,则可能在报名时手机号填写有误,也联系群主进行核实。 本次比赛的具体评分标准是什么? 请参考大赛规程第六章节 小程序作品做完后需要上线吗?还是看开发版就可以? 大赛推荐上线的作品,如果你因为资质等其他原因无法上线,可以在提交作品的相关描述中进行详细的功能演示。 在9月10号左右,将会公布评委体验微信号,届时可以配置体验者。 小程序作品做好了可不可以提交审核的同时提交到参赛链接中? 可以,在比赛提交截止前可以随时提审修改。在评判过程中我们以专家组看到的展现功能为准,建议在评判阶段不要做变更,以免评判出现偏差。 代码托管平台有指定平台吗? 大赛没有指定代码托管平台,可以自由选择。 参赛作品提交规范是什么? 请参考大赛规程第六章节,作品提交链接在赛事交流群公告中。 报名相关 我参与的有些晚,已经快结束了,请问还可以提交作品嘛? 可以,在作品提交截止前都可以提交作品,无论何时报名。建议早报名,这样可以用更加充裕的时间来细心打磨作品,会在比赛阶段增添不少的竞争力! 报名我已报了个人参赛,但现在想组队参赛怎么办? 可以直接向大赛交流群主进行私聊,提供有关信息。也可以让队友直接通过微信学院小程序报名,并在队友中填写你的名字和你的报名手机号。 我是以公司title报名的,做的时候可以用个人身份吗? 大赛对title不做限定,如果你用个人身份参加,建议报备给公司决策层,在经过同意后进行,以免带来不必要的麻烦。如果因为此对各方造成名誉或其他损失,均由报名者自行承担。 我是学生,想和职场人士(非学生身份)组队,应该选择哪个赛道? 为了比赛的公平性,大赛不允许学生与非学生之间组队;如果你所使用的技术来自于职场人士的帮助,你可以在比赛时予以说明。 为什么我收到了邮件,但是进不去组织? 这个可能是因为你手机号填写有误,请在邮件里回复官方邮箱CloudBase@tencent.com核实情况。 我的队伍名和队友的不一致、我的名字/性别有误、赛道错误应该怎么办? 联系大赛交流群群主进行核实修改 提交作品时,队伍名称忘记了?在哪里看? 在提交作品时需要填写队伍名称,如果忘记了可以查看自己企业微信的别名,此为队名。但也可以直接填写登录手机号的姓名。这个是辅助验证,大赛组委会会以提交手机号来判定作品提交队伍的。 违规相关 如果我在比赛时,发现其他参赛者有违规现象,我该怎么做? 大赛公示的违规情况有如下几条: 参赛报名信息作弊或造假;在参赛过程中出现违反相关法律、法规、政策规定以及微信相关规则的行为;涉嫌抄袭或侵犯他人知识产权的行为;提交的作品涉及不健康、淫秽、色情或毁谤第三方的内容;其他参赛者认定侵犯比赛公平性的其他违规行为,且组委会裁定真实有效如果你发现以上违规行为,请在大赛企业微信中直接联系大赛组委会成员反映情况。 我对大赛阶段的评选结果有异议,我应该怎么做? 你可直接在大赛企业微信中向大赛组委会成员提出申诉,组织委员会将在收到申诉报告之日起5个工作日内予以受理,并认真审核和处理。
2020-08-31