企业级自定义表单引擎解决方案(二)--架构及核心模块设计.pdf

企业级自定义表单引擎解决方案(二)--架构及核心模块设计.pdf

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

企企业业级级⾃⾃定定义义表表单单引引擎擎解解决决⽅⽅案案((⼆⼆))--架架构构及及核核⼼⼼模模块块设设计计

先总体介⼀下⼤概的架构和核⼼模块设计。先上⼀张整体设计图

概念还是有点多,有⼀些概念可能⽐较新,如果熟悉K2⾃定义表单,可能⽐较好理解⼀些。代码地址:/kuangqifu/sprite,或者QQ交流:523477776

对核⼼的⼀些功能模块进⾏总体介如下(⽤.netcore实现,其他语⾔整体设计思路相差不⼤)

基础设施:

⾃定义表单主要涉及到数据存储,包括表单定义信息和真实的业务表存储管理,可⽀持不同的数据库存储,edis主要⽤在缓存更新通知上,edis不存储表单定义缓

基础组件:

表单基础框架,.netcore实现,⽤Dapper做OM存储,封装了UnitOfWork,另外还包括了模块管理、租户/应⽤管理等基础功能,不包括权限相关功能。

表单定义本地缓存:

表单定义信息对于⾃定义表单来说,访问特别的频繁,真实业务变更极少,需要不少的过滤查询,如果存储到edis,涉及到频繁的访问以及数据过滤,对整体性

能影响也⽐较⼤,所以这⾥考虑把表单定义信息存储到每⼀个应⽤程序内存中,直接从内存中访问表单定义信息,表单定义信息改变时,通知所有应⽤表单定义对应的数

据已经更新,应⽤程序读取数据时,会从数据库读取必威体育精装版的数据存储到内存中。表单定义信息还会存储到浏览器Indexdb中,⼀条总的原则就是访问⾃定义表单定义信息⼀

定要快,就近获取。

基础数据本地缓存:

数据字典(⽤户信息)也可以存储到本地缓存,管理⽅式同表单定义本地缓存,数据字典变更极少,访问⼤;业务表往往只存储⽤户Id,展⽰需要⽤户名称,所以也

存储到本地缓存中。

缓存变更通知:

修改了表单定义信息或者数据字典等,通过edis通知所有应⽤程序清空本地缓存,再次读取数据时,应⽤程序从数据库或者接⼝读取数据再填充到内存中。如果

检测到edis断开连接,则直接从数据库或者接⼝读取数据,待edis恢复,再从内存读取数据。edis可由其他有发布订阅中间件服务替换。

CurrentUser:

只提供接⼝定义,对接具体的框架实现具体的逻辑,⽐如框架使⽤Abp框架,则从Abp的ICurrentUser读取⽤户当前⽤户信息。

微服务调⽤组件:

暂时未迁移,见作者其他博客描述。

租户/应⽤配置管理:

对⾃定义表单数据在租户和应⽤级别进⾏隔离,以⽀持Saas服务。

SpriteComon:

⾃定义表单公共组件/模块

动态Sql:

⾃定义表单⽐较核⼼的内容之⼀,所有对业务表的常规CUD,都是通过动态拼接Sql语句完成以及动态参数,这⾥⾯涉及到⼤量的JObject操作,也就是开发者⽤

得⽐较多的Newtonsoft.Json组件部分内容。

动态查询条件:

对Sql的参数查询,查询条件定义为⼀棵查询树,然后根据树完成Sql查询条件Where⼦句的字符串拼接。

动态表达式:

也是⼀棵树,每⼀个节点为⼀种函数或者取值,⽐如逻辑表达式、⽇期转换函数、从⽅法获取值、固定值等,根据根节点类型返回对应动态值

表单规则:

⾃定义表单灵魂所在,有了表单规则定义,才能称之为表单引擎,可定义视图或者表单规则;

表单规则事件:

⽐如⽤户列表视图新增按钮点击事件,部门树⽤户列表表单部门树视图树节点选中节点变化事件,⽤户列表视图弹出对话框保存事件等,可以是视图/表单本⾝或

者控件触发,也可以是⼦表单/⼦视图本⾝或者控件触发

表单规则执⾏:

当某⼀个规则定义的事件被触发,可定义执⾏⼀系列执⾏动作,⽐如⽤户列表视图新增按钮点击事件触发时,定义执⾏设置⽤户列表选中部门参数、获取⽤户列

表查询参数定义、执⾏后端获取⽤户分页数据⽅法、将执⾏结果传递给⽤户列表等⼀系列动作。再⽐如⽤户列表视图弹出对话框保存事件事件触发,验证⽤户Item视图、

验证通过

定义时和运⾏时验证:

您可能关注的文档

文档评论(0)

祝朝兵 + 关注
实名认证
内容提供者

原版文件原创

1亿VIP精品文档

相关文档