集客业务支撑领域标准化产品套件“火麒麟”的配置化能力提升之路
近年来,随着运营商规范的不断完善,运营商产品的标准化程度越来越高,2019 年浩鲸科技基于运营商的集团规范以及对各省业务需求的提炼,推出了集客业务支撑领域的标准化产品套件“火麒麟”,并在江苏、云南、山东、黑龙江等省份完成了项目交付。
在交付过程中我们发现,虽然标准产品套件可以满足多数常见业务场景的支撑,但是在具体省份交付时依然存在不少的需求需要投入人力进行开发,此部分工作对项目的交付效率和交付成本有着较大的影响,亟需考虑如何减少定制化开发的工作量,降低项目交付成本。2020 年 6 月份,我们对国内 BSS 域最新收到的 2000 多个集客类业务需求进行了分析和归类,发现个性化开发的需求包括操作界面、业务接口、业务流程、业务规则以及安全漏洞、数据报表、数据权限等类型。其中界面、流程和业务规则类的需求占比高达 56.6%,如果能够通过灵活、可视化的配置来快速的支撑这些需求,将大幅减少项目交付和运维的开发工作量,提高效率、降低成本,提升客户满意度。
随即我们对如何提升系统的配置能力进行了深入的思考。
配置能力提升的方向
当前火麒麟产品套件已完成多个子业务中心的核心功能打造,并且完成了多个省份项目的交付,如果要重新打造高度可配置的产品将耗费大量的成本,并且也很难实现对各省份项目的平滑升级,因此我们在考虑提升产品配置能力时,设定了两个需要同时满足的前置条件:1、能够在打造新产品时实现灵活复用 2、能够实现对存量产品的快速迭代升级
基于以上两个前置条件,我们确定了提升方向:打造一个以业务配置为核心的组件,该组件围绕业务流程实现,提供灵活可视化的流程配置、表单配置、业务方案配置、基础信息配置等能力。并且通过良好的模型设计,实现功能之间的关联互动,达到只需通过简易的配置,即可满足大部分流程、表单、规则类应用场景的效果,减少代码开发工作量,缩短需求开发周期,提升交付效率。我们将该组件命名为:业务配置管理组件(Business Configuration Management Component)简称 BCMC。
配置能力提升的内容
结合省份的需求分析结果和前面明确的提升方向,我们将 BCMC 组件的配置能力抽象为 4 个维度:
基础信息配置:作为整体配置能力提升的底层基座,需支持对系统运行参数和各模块共同使用的业务对象的一点配置。
业务表单配置:作为用户直接接触且使用频率最高的模块,需重点考虑用户的操作体验,需提供友好、美观的可视化表单绘制能力。需支持常见的表单元素配置、表单元素联动配置以及表单初始化、业务校验、数据提交等服务配置。
业务流程配置:作为省份定制化需求最旺盛的模块,需考虑对不同业务场景、不同复杂程度的流程的支撑;需考虑对接不同流程引擎的场景;需提供简洁、直观的流程配置界面,支持对流程环节、跃迁、表单、事件等全方位的配置。
业务方案配置:作为业务和功能关联的纽带,需实现对多个业务逻辑进行组件化封装和管理,支持灵活、多样的方案配置,包括执行条件、执行顺序、关联关系、返回结果以及事务提交方式等内容。同时需考虑方案执行日志的记录、跟踪与展示,以及针对异常情况的处理等内容。
配置组件的技术选型
作为一个全新打造的,并且需为多个应用提供能力的基础组件,BCMC 自身的技术架构必须满足业务的快速扩展,并满足微服务的部署能力。基于这两个前提,BCMC 选择使用开源的领域架构开发框架 CELE 框架为底层技术框架,集成了 Spring Cloud 微服务框架并采用阿里的 Nacos 做注册中心,以实现高效的内部调用和便捷的服务治理。业务设计上采用领域驱动开发设计,根据业务设计领域模型,以聚合模型替代数据表模型,以并发的事件驱动替代串联的消息驱动,实现以业务实体为核心的灵活拓展。
下图为传统开发方式和领域架构开发方式的分层区别,领域架构将核心业务逻辑封装在领域层,并通过领域服务和领域对象的函数对外部提供业务逻辑计算和处理。
CELE 框架为领域驱动开发提供了技术分层,包含领域对象、事件、命令、服务,很好地整合了 DDD 的开发方法,为开发提供了一套开发执行标准。利用 CELE 框架插件式开发支持并发的事件驱动替代串联的消息驱动,能更高效地进行业务规则的调用,减少执行阻塞。同时结合 CELE 框架,我们开发了配套的代码生成工具,通过对表对象的序列化自动生成对应的结构目录和底层代码,让研发人员只需要关注业务实现,极大的提升了产品的开发效率。
配置组件提供的能力
简单直观的表单配置
◉ 动态界面在线配置
现场需求中界面需求占据了很大一部分,支持表单的在线动态配置成了产品提效必不可少的硬功能。BCMC 在动态表单实现上支持文本框、下拉框、单选框、复选框、日期框、附件上传、查询弹窗等表单元素的拖拽绘制;支持动态设置表单元素的基础信息,包括展示标题、初始值、是否必填、是否可编辑、是否显示等内容。
在界面布局方面,可根据业务的需要,设置每行展示的元素列数,设置是根据内联模式(元素标题和输入框展示在同一行)还是垂直模式(标题和输入框错行展示)展示表单元素;如果表单展示的内容比较多,可以设置锚点导航;可配置表单要展示的按钮,并为每个按钮绑定对应的事件,可根据业务对象预制业务组件,在绘制时可一键拖入,满足大部分基础业务表单的在线配置,快速发布生效,降低开发成本。
◉ 表单元素联动配置
表单元素上,支持表单元素隐藏、显示、设置值、设置选项、设置必填与设置非必填的动作联动,满足业务操作场景。
◉ 支持多样使用场景
表单使用上,支持流程环节绑定关联表单,也可用于非流程表单,并可以根据场景需求扩展开发通用自定义组件,如执行情况组件。不断完善自定义组件共享库,满足各个现场项目提出个性展示要求。
◉ 支持界面预览
表单验证上,支持对配置好的界面进行预览,检验配置联动效果以及展示效果,提高上线功能准确性,减少调试时间。
统一方案管理
业务实现过程中,存在着业务功能在不同场景的调用执行,方案管理实现了根据配置的规则关系,判断业务传入的参数,对不同业务逻辑组件的调用。形成一个小型的业务能力编排包装,适用于表单初始化,环节事件调用,异常处理调用等各种场景。方案管理具备以下功能:
◉ 规则配置能力
一个方案可以配置多个执行规则,每个规则可选配置自己的执行条件以及预期结果,预期结果可用于执行组件的入参,完成规则的配置就是完成一个业务组件的执行判断,从而将我们写在代码里的 if do something 以配置的方式来完成。
◉ 规则间的调用编排
一个方案里的多个规则根据业务编排关系的不同可以分为并行/依赖/互斥,方案配置支持通过配置的方式编排这些规则的执行关系,从而达到触发业务组件的执行关系。
◉ 业务组件调用
业务组件是业务应用方提供的接口调用,BCMC 支持组件通过反射调用也支持 http 服务的方式远程调用,以便满足不同的系统集成方式。
灵活可视的流程配置
◉ 内置轻量级流程引擎
组件内置轻量级的流程引擎,提供了流程版本管理、可视化流程绘制、丰富环节管理、灵活跃迁配置、实时流程预览和灵活导入导出等常用功能,以满足简单的业务流程配置管理需求。
◉ 多流程引擎适配
当业务系统需要承载复杂业务流程场景时,可通过组件预集成的公司专业流程引擎 UOSFLOW 来支撑。之前已使用 UOSFLOW 做流程支撑的业务系统,在集成配置组件时,可继续复用原先的流程配置及实例数据。如果运营商要求使用指定的流程引擎,也可在组件中进行适配和调整。
◉ 灵活通用的环节扩展配置
BCMC 对不同流程引擎的环节信息进行了梳理和提炼,并提供了灵活通用的环节扩展配置,内容包括:
环节处理类型配置,支持人工处理、自动处理和接口驱动,用于对应人工环节、自动环节和等待外部系统驱动环节。
环节处理人配置,支持直接配置处理人、通过接口获取处理人,以及同流程发起人及同环节处理人的模式。
环节关联表单配置,支持为流程环节指定对应的处理表单,包括通过表单管理模块动态配置的表单和定制化开发的表单,以丰富不同环节的展示需求。
环节关联事件配置,支持针对环节的各时间节点配置对应的处理事件,包括进入环节时触发的事前事件、进入环节后执行的事中方案、环节超时前触发的预警事件、环节超时后触发的超时事件以及环节处理完成后触发的事后事件。通过事件绑定业务方案实现业务系统在对应环节业务逻辑的灵活配置。
环节流转规则配置,支持正反向流程的规则定义,支持跃迁参数的自定义以及运算规则的灵活配置以实现流程流转时自动判断下一处理环节。
执行可视化
业务执行过程中,往往可能需要看到执行情况以及出错点在哪里,BCMC 作为业务配置管理组件在流程调度以及执行业务接口的过程中能完整地记录业务执行轨迹,以及执行的异常,并能在这些异常过程中断点重试向下执行,有效的对异常业务进行重新驱动,减少人工处理数据过程,处理更加人性化。
配置组件的落地与实施
BCMC 将传统的界面定制化开发、流程表单强关联、业务规则通过编码实现的定制化开发交付模式演进成了表单、流程在线配置,业务规则可配置、可编排、可复用的低代码快速交付模式,减少了整体开发和发布周期,从而提高了实施效率,缩短实施周期,降低了实施成本。到目前为止,BCMC 组件已经为新销售平台、江苏移动订单中心、云南电信销售中心等项目提供了实施和低代码开发的支撑。以下为某省项目交付工时的对比分析数据:
在该项目的交付过程中,通过引入 BCMC 配置组件,采用低代码配置的交付模式,明显提升了项目的交付效率。在研发阶段,消耗的工时从原本的 334 人日降低到了 222 人日,节省了 112 人日的工时成本,实现了 33.5%的研发提效,从整个项目来看,亦有 23%的提升。
除了节约工时成本之外,采用低代码配置交付模式对项目交付人员的要求也有明显的降低。原本需要资深研发负责开发的前端功能,采用配置化交付方案后,由普通的运维测试人员即可完成相关功能的配置,进一步降低了项目的交付难度和实施成本。
在运维阶段,针对表单界面元素展现名称、展现个数、界面排版、联动规则等类型的优化需求,通过 BCMC 组件提供的能力可以实现在线调整、立即生效,无需开发代码和发布版本,极大的提升了运维效率和用户感知。
结合我们的实际数据和效能评估模型可以看出 BCMC 的低代码配置模式对整体研发的效能提升了较大的作用。
写在最后
当前基于 BCMC 提供的丰富的配置能力,火麒麟产品已经可以对常见的流程、表单、规则等相关需求进行快速的配置支撑,较大程度的提高了项目的交付效率。接下来我们将从基础框架、流程引擎、接口管理、表单组件库这 4 个维度继续对 BCMC 进行演进和完善,预计在 2021 年初实现对多租户、复杂流程、通用接口和复杂界面等场景的支持,进而实现对现网大部分业务场景的配置支撑。
版权声明: 本文为 InfoQ 作者【鲸品堂】的原创文章。
原文链接:【http://xie.infoq.cn/article/8fd308a9370f9197fe158eaad】。文章转载请联系作者。
评论