曾经参与的web首页任务设计回顾

2024-06-12 23:32

本文主要是介绍曾经参与的web首页任务设计回顾,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景描述:党建平台首页要新增一个任务展示功能,用于提醒一些业务的待办事项

整体思路:待办事项做一张表查询展示,初始化任务,然后监控各业务数据库变化,再统筹调用抽象任务检查方法更新卡片。问题在于一是如何初始化这些任务,二是业务发生变化后如何更新对应的任务

1)任务注册表

记录任务相关的业务信息,比如关联的表,和一些规则信息,比如这个业务的任务要在哪些组织,哪些范围生成。通过脚本在各个环境初始化

2)生成任务

根据任务注册表信息初始化任务,任务有年度任务,季度任务,月度任务等,不管是什么类型,全都一次生成。通过job完成,这样可以灵活处理,如果需要重新生成任务,可以执行下这个Job

3)任务初始化

任务状态初始化Initializer,初始化任务状态,通过job完成

4)各业务实现

各业务实现业务任务处理类接口,完成自己的逻辑

比如我的一个

5)统筹各业务实现

通过定义任务相关工具器,处理不同的事情

任务寻找器,寻找某一个任务

任务完成器,完成某一个任务

5)监控数据库变化根据表找到对应任务handler更新任务

 拿到update的数据库和表,找到任务

调用抽象handler

根据对应className找到对应handler

通过Aop获取实现类

调用对应handler查出满足条件的task

调用complete完成任务

思考:

1.做这块需求出现过什么问题

前期

在做的过程中,会有一些低级问题,比如任务信息错误,这其实是不应该的。后面出现业务变化了,任务不更新,是因为handler中写反了逻辑

后期

业务表发生变化要更换debezium监控,各环境都要同步,测试环境有时没有同步导致bug

任务维度发生变化,要重新初始化待办任务

一般用什么机制,在机制的各个节点可能都会出问题。

2.这种实现是推式还是拉式,推式是指主动生成,拉式是指相关方被动拉取

个人认为这要从哪个角度看,如果是站在后台的角度,是推式,主动生成并变更;站在用户的角度是拉式,被动拉取。

3.面向接口编程,需要获取所有接口,如何处理

Spring框架下,通过ApplicationContext上下文,调用getBeansOfType获取所有声明的Bean,比如这里

 要求所有实现都是Bean对象

4.如何更新某个组织的某个任务

更新信息中有表名,根据任务注册表能对应具体业务的handler;更新信息中也有组织编号,获取组织编号后更新这个组织的这个任务信息。

这是统一的方法

给我的启发:

对于这种预警,待办事项,提醒类的功能,一般涉及数据的变化,比如预警有状态,随着业务变化而变化,待办事项完成未完成,随着业务变化而变化。

如果让自己来设计,首先分析需求,搞清楚数据来源,也就是和业务的关系在,再做设计,这不管是什么需求都应如此,只有把数据来源搞清楚了,才可能直到数据应该怎么走。设计的话参考这种思路,首先任务要预先生成,而不是说在业务中触发生成,业务中应该是触发变化。再看需求吧,是否需要强变化,就是业务变化了,提醒或事项马上变化,如果是像这里,没有这么强的强变化要求,页面上可以不做定时刷新,可以是一个由用户来触发的动作。

是否需要做成一个单独的服务,我觉得可以吧,微服务架构,每个服务应该职责分明,高内聚,低耦合。

这篇关于曾经参与的web首页任务设计回顾的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1055654

相关文章

解决JavaWeb-file.isDirectory()遇到的坑问题

《解决JavaWeb-file.isDirectory()遇到的坑问题》JavaWeb开发中,使用`file.isDirectory()`判断路径是否为文件夹时,需要特别注意:该方法只能判断已存在的文... 目录Jahttp://www.chinasem.cnvaWeb-file.isDirectory()遇

JavaWeb-WebSocket浏览器服务器双向通信方式

《JavaWeb-WebSocket浏览器服务器双向通信方式》文章介绍了WebSocket协议的工作原理和应用场景,包括与HTTP的对比,接着,详细介绍了如何在Java中使用WebSocket,包括配... 目录一、概述二、入门2.1 POM依赖2.2 编写配置类2.3 编写WebSocket服务2.4 浏

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题小结

《SpringBoot整合ShedLock处理定时任务重复执行的问题小结》ShedLock是解决分布式系统中定时任务重复执行问题的Java库,通过在数据库中加锁,确保只有一个节点在指定时间执行... 目录前言什么是 ShedLock?ShedLock 的工作原理:定时任务重复执行China编程的问题使用 Shed

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

Python Invoke自动化任务库的使用

《PythonInvoke自动化任务库的使用》Invoke是一个强大的Python库,用于编写自动化脚本,本文就来介绍一下PythonInvoke自动化任务库的使用,具有一定的参考价值,感兴趣的可以... 目录什么是 Invoke?如何安装 Invoke?Invoke 基础1. 运行测试2. 构建文档3.

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery