业务服务开发易错点

版权声明:如果觉得文章对你有用,转载不需要联系作者,但请注明出处 https://blog.csdn.net/jinxin70/article/details/82701372

有一些Bug是由于系统设计不合理导致的,比如多入口问题,导致系统扩展复杂,维护困难;比如字段修改问题,系统很多地方不是模块化的,都是代码的直接复制粘贴,
导致维护非常困难,改一个字段,要改很多地方,并且容易出错。之后会对系统设计进行更进一步分析和改进(重构),希望从根本上让这些Bug少产生。给以后设计系统时提供支持。

# # 入口问题

问题原因:项目维护或者改造的时候,有新需求,改字段或者加字段,如果对项目入口不熟悉,会出现隐藏需求漏改的情况。

措施:首先学会使用系统,熟悉系统的各个按钮、超链接、tab页,分析系统的主要功能,各个功能的入口,新增、删除、编辑、导入、导出、修改等

案例分析:
实车流程启动入口:初步录入提交,正式创建提交,暂存编辑提交,批量下达提交,暂存区发起整改
批量下达提交是对已有数据更新,默认值加了没有效果,因为不是新建的数据。还是要在5个入口的相应位置添加设置标识的代码

需求添加一个流程节点,事后发现系统有5个入口ABCDE。

# # 新需求兼容老需求问题

问题原因: 
1. 有些新需求,比如,加字段,是不是要改这个字段所有出现的地方
2. 比如,接口加了字段,要求在各个状态变更时,将新加的字段回传回去,那么已经跑的流程,是处于中间状态的。需要在系统里判断如果新字段为空的情况,传过去默认值还是空字符串。
3. 在新老流程兼容时,最好是数据库中兼容字段加默认值,这样新创建的比如默认1。

# # 工作流启动后停在发起流程节点。

原因:工作流人员设置错误

需要在查看页面删除分配用户,重新设置保存,发布

# # 前端样式或者js修改无效果的情况

样式没效果,可以在样式上加!强制生效。
还有的情况是,多个页面可能用的是同名的class,最好在每个页面设置不同的namespace,防止样式冲突。然后这样去设置样式 .父class .子class

js函数也需要为不同的页面设置不同的namespace,可以定义一个代表当期页面的对象,让方法和属性都绑定到这个对象上

<button type="button" class="close" ></button>

对它绑定一个点击方法
$(".close").on("click",function(){
    //关闭逻辑
    return false;
});

return false;想让点取消后不关闭,发现没有效果。刚搜了dwz的源码发现有一个这个鬼:

$("a.close", dialog).click(function(event){
                    $.pdialog.close(dialog);
                    return false;
                });
        
<button type="button" class="submit" ></button>

# # 实车导入未对扩展字段的长度限制

大部分字段在系统运行时,是动态传递的,必须统一所有这个字段用到的地方的字段长度,否则用户刚好填了一个最大值,可能设置字段长度小的地方会出现Bug。

# # Mybatis问题1

编辑(update)的时候,必填项需要在mybatis中判断<if test="extend01!=null and extend01!=''">
不必填可以为空,只需判断不是null,<if test="extend01!=null ">,否则将不必填的内容清空后,更新无效

# # 前端问题1 

$("#jdsc").find("input").each((index,elem) => console.log(elem));
$("#jdsc").find("input").attr("disabled",false);

# # jquery元素转dom元素

var problemSource = $("#problemSource_id")[0];

# # 流程状态变更 需要记录日志

记录日志可以使用切面编程,使用Spring aop

# # 前端问题

新问题创建后,自动排序了  查询条件planStepStatus默认返回了"null"

# # 环境问题

头晕,居然在119上测了半天本地改的东西,立马转到localhost

# # 国际化问题

状态错误,国际化资源提示

# # 在修改的时候,延期时间重新计算

修改计划关闭时间,重新计算应完成时间

# # 时间问题

延期时间计算,一般用户不希望当天算延期,所以sql条件中计算的时候注意,and planDT + 1 < sysdate

# # 记录问题跟踪

# # 修改记录问题

比较修改前后无变有,有变无;少变多,多变少

只有修改的字段才记录日志

修改项颜色高亮标记

# # 综合问题

如果扩展功能,考虑功能使用前后的差异,需要做兼容,通常需要在一些差异点判断非空。

比如,加一个字段。不仅要在所有用到的地方加。还需要考虑之前的已经在流程中的item,这些item之前的路径中没有这个新加的字段,后续继续走流程,需要判断这些老item的
这个字段为空的情况。

这点让我想到Hotspot虚拟机的解决方案,为了解决GC时,不会产生新的引用关系,会让系统停顿,就是Stop the word。让整个系统状态一致。否则,一边GC,一边产生新的引用关系,
这样没办法控制。
HotSpot采用的是主动式中断方式,需要中断时,比如堆内存达到临界值。就在安全点设置标记,线程轮询中断标记,如果为true,就自己中断。

陆续更新ing...
 

猜你喜欢

转载自blog.csdn.net/jinxin70/article/details/82701372