低代码平台-开发SDK设计
背景
公司基于低代码平台构建业务系统,包括前端动态表单,后端基于数据库元模型,动态构建数据库表,数据查询和持久,最后,支持业务开发的业务对象组件,XboSet/Xbo组件。随着项目增多,各项目的差异性,发现业务对象集/业务对象(GboSet/Gbo)组件职责太多,不便于适配不同的技术环境,不便于业务逻辑重用,因此,SDK2.0引入appbean/databean组件,handle组件,职责细化,原有的业务对象集/业务对象组件只负责数据处理逻辑,appbean/databean组件负责前端整体交互,如弹窗,选择confirm,handle组件负责字段绑定和事件处理,组件和控件的事件处理,增强技术环境适应能力,前后端交互能力和业务数据逻辑的重用。
关键词
业务对象集/业务对象
App bean
Data bean
组件/字段handle
逻辑架构
上图是平台SDK的逻辑架构,分3个域,
数据域 原有的业务对象集/业务对象组件,专注数据处理,业务逻辑职责
交互域 界面整体交互,弹窗,跳转控制,数据提交,预处理
UI域 界面组件,控件,字段事件处理,行为和显示,数字验证,域查询,目前只实现字段handle
3者分工明确,职责清晰,UI域,交互域项目开发人员开发,业务对象业务开发人员负责
开发架构
本节解释开发架构,各组件使用和原理
web app bean
web app bean负责与页面交互,弹窗,跳转控制,数据提交,预处理。提供代理注册,相当于控制器,执行业务对象集的数据处理方法,自身实现数据处理后的交互
上图是web app bean类图,WebAppBean类继承DataBean,开发人员继承WebAppBean,注册GboEventProcessor ,示例详细介绍,使用通常的,写方法,方法内调用业务对象方法,最后返回交互,弹窗,跳转,也是可以
字段handle
字段handle负责字段控件值绑定,验证,域列表,事件处理
上图是字段handle类图,开发人员继承AdapterGrpFieldHandler,GrpFieldHandler接口适配实现,开发人员只需实现需要的接口,其他默认实现,GrpFieldEvent是参数fieldEventJson反序列化而来,支持多态反序列化,方便扩展事件处理实现
调用原理与GboSet类似,反射调用,调用的类型,可以是前端设置的fieldHandleClass,也可以是字段的属性GrpAttribute属性classname设置的。
组件/控件handle
TBD
示例
本节解释怎样使用app bean和字段handle
- web app bean
实现WebAppBean,重载init方法,注册时间processor
通过 getUnWrapGboSet() 获取应用的GboSet,gboset平台初始化时注入到WebAppBean实现。
GboEventProcessor有3个属性,eventCode,执行方法的名称,即,代理gboset的方法名称,也可以是自身方法名称;
GboFunction 代理的方法,通常是业务对象集的方法;
ResponseFunction 返回functon,GboFunction代理GboSet数据逻辑方法,若需要返回与前端交互,如,弹窗,跳转等,可以定义ResponseFunction,其参数是GboFunction返回的参数,若没有返回,可以忽略。
- 字段handle
handle,组件控件和字段的处理,目前只有字段handle
上图,字段GISPARAM1的handle,继承AdapterGrpFieldHandler,该类提供GrpFieldHandler的默认实现
handle 方法:
validate 字段值验证
domain 返回域选择框
onChange 字段值变更事件
onFocus 字段控件获得焦点
。。。
下面以onChange示例,
上图实现onChange示例,参数event是GrpChangeFieldEvent类型,事件类型有字段当前值,新值两个属性
NEXT
业务逻辑低代码
前面的介绍知道,业务开发是高代码,使用XboSet/Xbo规范开发,逻辑的低代码已提上日程,目前逻辑元模型完成,生成器已实现jexl,并已在规则引擎可视化中落地,后续将会用于业务逻辑可视化构建