记录用户操作的流程追踪功能开发

本文围绕内部管理系统中数据库操作流程追踪功能展开。先基于Spring MVC框架设计单表交易,后发现用户反复修改记录会使数据体量庞大,调整为记录用户最后操作时间。最终明确只需记录特定状态字段修改,据此重新修改功能逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一篇技术博献给算法?应该算是功能逻辑吧。需求来自内部管理系统,一个需要记录不同用户对同一条数据库进行操作的流程追踪功能。

像这样。

第一步,设计一个单表交易,本文使用的是集成好的Spring MVC框架,只要设计好数据库结构就可以生成基本的交易。一个数据库表就可以用来管理这个追踪过程。

像这样。item_ID是原来的记录主键,trace_ID是追踪记录的主键,user_ID是用户主键,后面的字段含义都比较明显。虽然不知道能不能用上但是还是设计了这个操作编码字段,在判断的时候可能会比较方便,为拓展性考虑再加上4个备用字段。

这个逻辑非常简单,但是在实现的过程中发现了bug。就是一个用户可能会反反复复不断修改记录,如果每次对记录的更新都产生新的流程数据体量就会特别庞大。

像这样。所以需要去记录用户最后的操作时间,在同样的记录,同样的用户,同样的操作时只保留只去更新操作记录的时间,只有在首次操作时才插入一条记录。在实现过程中,trace_ID是框架中的ID产生器自动生成的,在每次获取到用户对这条记录的操作请求时,首先用item_ID(同一条记录),user_ID(同一个用户),operation_Code(同一个操作)三个作为并集查询条件去查询操作记录表,若能查询到记录则表明不是首次操作,更新操作时间即可。若不能则生成trace_ID,插入一条记录。用伪代码实现就是酱。。。

Trace tmp = getTrace(item_ID,user_ID,operation_Code)
if(tmp == null){
    insertTrace(new Trace());
}else{
    updateTrace();
}

这样实现了以后发现在我的功能需求中完全没有必要。。。因为我的操作种类每一个都有特殊性,不存在用户反反复复去修改的情况,换言之,用户反复修改的信息我们是没有必要记录的,需要记录的只有用户对特定的一个字段的修改,也就是这个包含“审批”、“编辑”、“复核”的状态字段。所以我们重新修改功能逻辑,在收到用户更新记录的请求时,只去判断这个状态字段是否有变化,如果有变化再去添加或更新操作记录表。如果只是修改记录的其他部分则不用理会。

var stateHistory;//修改前的状态
var stateNow;//修改后的状态
if(stateHistory != stateNow){
    updateTrace();
}

用伪代码实现就是酱。。。emmm...好像没什么技术含量吼,那就作为开发文档吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值