1993-2017金蝶国际软件集团有限公司开发方案设计部门:总部交付支持部时间:2019.6.112目录优秀方案带来什么价值二开方案设计要素设计案例二开设计方案步骤二次开发设计七大原则总体介绍—优秀设计方案带来什么价值?客户化开发是对客户自身管理独特价值的贡献优秀的二次开发方案可以带来稳定性、易用性、准确性、性能、扩展性的保障,其中稳定性、易用性、准确性、性能为客户最关注的维度,是客户满意度的决定因素.扩展性保障准确性保障优秀二次开发方案价值点稳定性保障性能保障易用性保障•能很好符合客户的价值主张、客户需求点•核心需求实现可以给客户带来高价值•用户体验好,可以增加客户的粘性•增加客户对专业度的认可,对团队成员的信任•稳定性不仅增加对二开部分的信任,也增加对产品的信任•减少重复修改和返工时间、缩短开发周期、节省成本•客户满意度高五大价值点最终体现总体介绍—二次开发设计需遵循七大原则能简单就简单这有利于拥有更易于理解和易于维护的系统。但并不是说应该以简单的名义抛弃功能,甚至是内部功能,必须花很多力气使自己的思维变得简单、有条理围绕客户价值点一个软件系统存在的理由就是:为其客户和其用户提供价值,目标是实现客户的价值点你制造的,别人会消费你设计、实现的东西应当能够让别人理解,如果到处泛滥似是而非的代码,别人如何能够辨别这些代码的相似和不同,如何去理解这些代码之间具有何种关系具有远见清晰的远见是一个软件项目成功的基础。没有这样的远见,项目开发最后就变成天天为一个不好的设计做补丁为将来开放为重用做好计划一个成功的软件有很长的生命期。你必须能够使得软件能够适应这样和那样的变化。所以,一开始就不要将软件设计到死角上去,要考虑到各种各样的可能性重用可节省时间和精力,实现高水平的重用可以说是开发软件系统最难的目标,在系统开发过程的每个级别都有很多技术可以用来实现重用思考在采取任何动作之前首先做一个清晰、完整的考虑,这样才能产生更好的结果,多想一些可行的方案,从中选择最佳设计方案总体介绍—二开方案设计需考虑因素能简单做的不复杂做,复杂是由“简单”和“连接简单的关系”组成的,设计太复杂对后面的维护比较难,成本也高,在设计方案时,应考虑在出现问题时,能够方便快速的定位问题范围需求符合性灵活性和扩展性健壮性、稳定性、可靠性可维护性、复杂度功能需求和非功能需求的正确性、完整性最大限度的降低模块间的耦合。减少不必要的模块间的调用和数据依赖,设计尽量做到可以通过配置,让客户能动态调整来满足不同的需求,在思考设计方案时,要尽量做到面面俱到,即使是当前不需要的功能健壮的设计,就是要控制把持住这些异常的路,从设计上,针对性能等方面留出一些余量,保证能够抵抗住异常的波动,跳出正常业务或逻辑流程分析可能存在的异常,从逻辑上判断是否会存在异常情况。尽量少从业务上判断异常是否存在,不影响业务使用的情况下,只要保证异常在可控范围内即可易用性二开设计出来的功能点操作要方便使用,简单明了,尽量简化操作、智能,复杂的操作最好是让系统自动执行,多步操作能合并的尽量合并到一步实现“一键操作”高可用性高可用性是指在系统部分出现问题时,能够保证系统最大限度的能够提供必要的功能,包括容错等的处理,根据实际情况需要考虑多进程实现的则采取多进程来实现性能二开设计设计时需要考虑客户的数据量情况、用户数情况、并发情况、该功能使用频率,设计时要考虑尽量减少与服务器的交付,避免不停的向服务端发请求,尽量将数据传输到数据库端用批量执行的方式执行总体介绍—开发设计步骤开发需求需求分析功能设计客户确认二开方案技术设计开发设计步骤说明第一步需求分析 在做设计之前需求一定是通过调研的完整的需求,不能有模糊的需求存在 找出和理出需求的关键点,并将功能点逐渐细化,并理出各功能点之间的关系 结合目前BOS平台支持的功能,理出哪些是可以通过BOS平台去实现,哪些是无法通过BOS平台实现,哪些是需要与标准产品里有关联,哪些无关联,需要哪些技术去实现.第二步概要设计 根据需求分析结果,先从整体上进行整体设计,整体设计时不用太细,围绕主要功能点展开,对核心功能点设计时需要考虑各功能点之间的关系,对用户各功能点后用户数情况,对性能的要求程度、并发程度进行考量 对于需要集成的需要设计出集成方案,对于与标准产品有关系的需要设计出对接方案 概要设计一点要保证方案的正确性,否则后面详细设计方向也就错了,虽然不会设计到具体细节,方案的选择是在概要设计里面体现第三步详细设计 详细设计时需要对每个需要二开的需求都要有实现方案,一定不能有遗漏 详细设计就是具体每个功能点的具体实现方案,尽可能的多想一些方案,并选择最优方案 在详细设计时不仅考虑程序实现方式,还要考虑数据库方面的存取问题,以及与本功能有关联的一些数据库之间的关系,包括读取和反写等 在详细设计时对于能用标准产品满足的尽量用标准产品来实现,能用平台来开发实现的尽量用平台开发来实现注意点:1.详细的需求规格说明书和二次开发方案必须与客户确认签字2.开发人员接到需求后必须先进行全面分析,从整体上进行综合考虑,从整体上保证方案的合理性3.对于简单的实现可以将概要设计和详细设计合并,复杂的业务必须先概要设计再详细设计影响性能的方案设计请求终端应用服务器(IIS)数据库服务器响应请求响应集成设计说明:1.WEBAPI调用时一定要注意传入的参数恰当,避免传入参数太多,会造成校验太多,影响新能2.对于业务数据量不大的WebAPI,为了数据及时可以直接调用WEBAPI及时访问3.对于业务量大的集成处理方案是:可以先将业务数据传到金蝶云星空的中间表(写入时不带业务逻辑),然后通过服务在服务器资源比较闲置的时段,通过服务器的服务,然后读取中间表通过WEBAPI接口通过WEBAPI的批量处理方式写入金蝶云星空4.可以通过导出和导入的方式实现考虑性能设计方案基本原则:1.由于IIS服务器对请求连接数有限制,因此尽量减少频繁发请求到应用服务器.2.尽量减少频繁访问数据库3.利用缓存技术、分页、批量处理技术进行相应的业务处理程序执行过程图大数据集成案例前端快速输入服务端性能处理案例1.上海一家做电商的共有云客户需求:每天.需将电商中的几十万笔数据同步到金蝶云星空中2..杭州一家做监控设备的客户需求:代理商使用金蝶云星空,很多内部系统使用的数据需同步到金蝶云星空,部分业务数据需要及时查看,部分业务数据可以不用及时查看。泉州的一家做纸业的一家公司需求:传统的订单通过文员非常快速的录入,并且是2个文员分别录同一张单来校验录入的正确性,前一个文员录入后,后面文员录入会进行校验,目前觉得他们录入速度太快,校验时间的反应慢,满足不了他们目前录入的速度要求前段操作太快的方案设计说明:使用客户端插件来实现这个功能,然后调用标准产品保存方法提交数据考虑扩展的开发方案设计案例-项目监控7Keys设置与计算业务场景:根据7keys各维度指标字段计算各维度状态和项目整体状态在系统中实现后的截图为了扩展,各种可配置(包括计算)截图1.对于复杂的计算,尽量抓住“不变”维度和“可变维度”,通过动态抓取配置信息,来实现多场景的需求变化,达到以“不变”应“万变”2.在”7Keys”多维度计算中,对于“可能变化”的”7keys”各维度描述及每个维度分值都可能变化,所以做出基础资料可动态修改3.在“7Keys”每种颜色的构成占比也可能会变化,因此,按目前默认的设置好,并可以随时调整,这样对于7keys计算随便怎么变化都可以适应对应的需求,每次调整都不用改程序4.现在很多客户都存在因为行业差异,都有对应行业的相关的一些为了省成本采取的一些带算法的措施,系统在二次开发设计时必须尽量做到可配置设计为了适应需求变化,尽量做到可配置设计案例分享-展厅智慧工厂稳定性改造项目展厅智慧工厂运作关系结构图软硬件协助关系图展厅运作关系图金蝶云步科软件步科硬件上架下架工序汇报故障通知出球漏斗盒子回收传送带机械手分拣区出球装置上架台机械手堆垛机立库区下架台线边仓堆垛机AGV小车生产区机械手机械手球回收传送带球回收盒软件部分改造点1.工单下单方式的改造:由红、黄、绿三种球随机产生(同时包含三种球)红、黄、绿三种球下单根据库存情况下单2.看板中显示数据与实际存在偏差:由过去看板中备料及生产情况的各种信息由系统中工序汇报步科设备备料和生产的进度情况驱动进行更新入库和看板信息进行更新3.对从原料分拣区的盒子取到上架台的顺序控制规则调整:由最右边盒子优先先到先出的原则4.查库存方式改变:由过去从系统查看库存不直观、不方便现场的显示屏上显示真实的事物库存图形化展示(类似手机值机选座)5.上架异常情况处理:由过去异常处理无尝试步科设备这边遇到接口返回不成功时可以尝试三次改造后结果软件这块稳定性得到极大的改善,再未出现因为库存不足,造成整个展厅这边生产区和原料区因为互相等待死循环的情况,看板中也再没出现过显示数据与实际不符的情况,生产区再未出现长时间等待的情况,查询库存也非常方便,这个也作为亮点给客户在展厅展示变化点:极不稳定稳定操作复杂操作简单不直观直观无监控实时监控无硬件故障提醒实时提醒无远程操作远程操作结论设计是项目成败的关键,是项目过程中最重要的环节案例:标准报表二次开发设计方案背景:目前标准产品的报表中,显示的字段都是固定的,如果客户做了二次开发,比如在单据中增加了一些自定义字段,同时想在报表中把这些自定义字段显示出来,这种需求属于特殊需求,标准产品不会处理,但可以通过二次开发来实现实现方案①新建一个报表服务插件,直接继承K3Cloud的标准报表的服务插件,如左图②调用基类方法,获取报表原始数据(临时表)③对此报表的原始数据进行再次加工处理,通过关联则可以获取到你需要的任何数据④使用后必须得删掉临时表操作说明①在BOSIDE中找到你需要处理的报表,确定其使用的服务插件是什么②新建一个类,并继承原报表的类③在BOSIDE中,对原报表做一下扩展,注册插件④扩展后,添加注册二次开发的插件,并把原报表服务插件取消启用⑤添加报表字段,在扩展后的报表元数据中添加字段,注意添加的字段名,需要与代码中的字段名保持一致⑥扩展报表过滤条件,添加过滤及显示字段,在显示隐藏列中,把二次开发字段加进去⑦清除缓存,重新登录Cloud,至此,就可以在报表中查看更改后的报表了1993-2017金蝶国际软件集团有限公司Thankyou!