曾经参与的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

相关文章

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

Spring Boot 集成 Quartz 使用Cron 表达式实现定时任务

《SpringBoot集成Quartz使用Cron表达式实现定时任务》本文介绍了如何在SpringBoot项目中集成Quartz并使用Cron表达式进行任务调度,通过添加Quartz依赖、创... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

Spring Boot中定时任务Cron表达式的终极指南最佳实践记录

《SpringBoot中定时任务Cron表达式的终极指南最佳实践记录》本文详细介绍了SpringBoot中定时任务的实现方法,特别是Cron表达式的使用技巧和高级用法,从基础语法到复杂场景,从快速启... 目录一、Cron表达式基础1.1 Cron表达式结构1.2 核心语法规则二、Spring Boot中定

web网络安全之跨站脚本攻击(XSS)详解

《web网络安全之跨站脚本攻击(XSS)详解》:本文主要介绍web网络安全之跨站脚本攻击(XSS)的相关资料,跨站脚本攻击XSS是一种常见的Web安全漏洞,攻击者通过注入恶意脚本诱使用户执行,可能... 目录前言XSS 的类型1. 存储型 XSS(Stored XSS)示例:危害:2. 反射型 XSS(Re

解决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 浏