1

地产ERP系统

我要开发同款
HardsonX2023年02月13日
285阅读
所属分类ERP、事件驱动、Redis、消息队列、.NET

作品详情

1.整体包括低代码平台和业务产品部分:
1)低代码平台可由生态合作伙伴或开发者以拖拉拽的方式和部分前后台代码方式来构建业务系统,包括后台管理(系统模块管理、页面布局管理、数据建模管理、事件接口管理、版本管理等)和支持功能(组织用户、权限管理、集成管理、日志管理等);
2)业务产品部分基于低代码平台和房地产行业的业务需求构建了完整的地产ERP系统,实现了包括销售管理子系统、成本管理子系统、采购招投标管理子系统、计划管理子系统、投资收益管理子系统;
2.主要负责的功能及重难点
1)事件管理:典型的事件驱动架构,使用了发布订阅模式
领域逻辑层可以发布事件(可同步可异步),发布后根据自定义管道形成各管道的事件订阅队列并持久化(异步事件才有持久化);各模块领域逻辑层也可以订阅事件处理自己的逻辑,一个事件可被多个业务订阅。
事件的订阅关系持久化到数据库中,系统启动初始化后按订阅关系为单位保持在Redis缓存中。
设计一个事件调度器来作事件的消费调度,调度器为每个管道独立启动一个线程来按队列产生的先后顺序执行订阅逻辑,执行成功则清除订阅队列,执行异常会记录日志,并自动重试指定次数,若还产生异常则将订阅移到异常队列中,异常队列可手动执行。
2)数据访问:增强EFCore的功能,优化了数据的批量更新、多条脚本执行性能,增加了实体变更机制,并支持查询脚本灵活配置化
针对EFCore中SQL Server批量更新可能产生的性能问题,针对多个实体的更新,生成Merge语法的脚本,将原需10秒以上的批量更新优化到0.5秒以内。
为避免多次访问数据库,可支持多条不同查询脚本同时发送,并返回指定的多种实体结构。
所有的增删改操作,通过实体方式操作,并发布实体变更事件。
查询脚本与业务逻辑分离,只要不改变业务,性能优化时可调整脚本并更新,无需调整源代码。
3)日志管理优化:完善性能日志、实体变更日志记录与清除机制
性能日志:原来只实现了整体的访问耗时和数据库访问耗时,优化后使用.NET的HttpModule的生命周期管理机制记录了各环节的耗时,并在前端埋点记录了前端各环节的耗时。
实体变更日志:以单个事务为单位记录实体变更,并以单个实体的字段级变更为单位扩展实体变更,记录详细的字段变更。
日志清除机制:原清除机制按时间作Delete操作,当日志量大时,容易造成IO和数据库性能问题,优化后按指定日期作分区表的方式清除日志。
4)待办和消息提醒的消息集成设计开发:利用事件机制和kafka集成消息分发
系统中产生待办或消息时,发布事件,事件发布逻辑中将消息内容发送到kafka。
设计一个事件订阅类,获取kafka中的消息,并发送到第三方OA系统,清除当前消息。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论