快速响应客户需7求是企业成功的关键之一。在现代竞争激烈的市场中,客户需求不断变化,企业需要快速响应这些需求以保持竞争优势。常见的快速响应并满足客户通常有如下方案:
采用敏捷开发方法:敏捷开发方法强调迭代、快速响应和持续改进,可以帮助开发团队更快速地开发和交付软件。
【资料图】
自动化测试和部署:自动化测试和部署可以帮助开发团队更快速地检测和解决问题,并将软件快速部署到生产环境中。
使用现代化的开发工具和技术:使用现代化的开发工具和技术,如云计算、容器化、微服务等,可以帮助开发团队更快速地开发和部署软件。
灵活的软件架构:采用灵活的软件架构,可以帮助开发团队更快速地进行功能扩展和改进。
以上方法是工程、基础建设和架构设计等方面的最佳实践,但是即便如此,开发的工作量也是以人/日计算,而且需要重新部署上线。有没有一种不需要部署,只需要配置即可实现的设计和方法呢。
2. 预期目标快速响应满足客户需求,快速开发上线,设计一个系统,使频繁变更的需求,更改上线按小时级计算。一般一个需求,需要设计开发、测试、发布上线等流程,整个过程至少需要1-2天,而且频繁上线,且发布上线一般要选择在晚上,等用户使用低峰期,因此我们希望能达到以下目标:预期实现从需求提出,到发布上线,按小时计算,可快速完成需求开发、上线、交付。
3. 技术选型为了实现预期目标,笔者做了深入的技术调研,动态语言可以实现这一目标。动态语言可以实现热加载,从而免去了部署的麻烦。热加载是指在应用程序运行过程中,可以动态地加载新的代码或修改已有代码,而无需停止或重新启动应用程序。
热加载还可以带来如下好处:
快速迭代:开发人员可以在运行时修改代码,无需停止应用程序,从而快速迭代和测试新功能。减少停机时间:热加载可以减少停机时间,从而提高应用程序的可用性。简化部署:热加载可以免去部署的麻烦,从而简化部署和维护工作。总的来说,热加载可以提高开发效率、减少停机时间和简化部署工作。
热加载主要有如下实现方式:
1)使用JEXL动态执行表达式:
•优点:可以动态执行Java代码,调用Java Function(Function需先传入JexlContext)
◆缺点:只能执行一个“表达式”,而不是Function,所以有很多语法局限,不是真正执行一个Function
2) 使用Java动态编译:
•优点:功能强大,能够真正实现完整的动态执行功能,能够动态调用全部系统功能和IO操作。
◆缺点:虽然功能强大,可以编译.java文件,但是还是很难在运行时替换框架级的类文件。此外,因为能动态调用全部系统功能和IO操作,但与一般代码环境没有隔离,这可能会成为项目中非常严重的安全隐患。
3)使用Java ScriptEngine:
•优点:可以执行完整的JS方法,并且获取返回值;在虚拟的Context中执行,无法调用系统操作和IO操作,非常安全;可以有多种优化方式,可以预编译,编译后可以复用,效率接近原生Java;所有实现ScriptEngine接口的语言都可以使用,并不仅限于JS,如Groovy,Ruby等语言都可以动态执行。
◆缺点:无法调用系统和IO操作 ,也不能使用相关js库,只能使用js的标准语法。
►在如何快速响应客户需求,快速变化的技术选型时,我们先后对以上几种技术进行了需求和技术调研分析得出如下:
1)JEXL动态执行表达式,功能简单,支持有限,不满足日常需求。
2)动态编码需要热部署与热加载,这个在之前的单机时代还可以,现在是微服务,云服务的时代,大量机器热部署和热加载成本高昂且代价巨大。
3)ScriptEngine,可以动态的执行脚本语言,同时无法调用系统操作和IO操作,非常安全,这个给我们带来了巨大的便利,我们选择了 JavaScript 作为可以动态执行的脚本语言,主要还有以下原因:
JavaScript 足够简单和强大,可以满足我们的需求。
JavaScript 作为互联网时代的主流语言,为广大技术人员必备技能,易于使用。
开发使用环境简单,一个文本编辑器就可以写代码,一个浏览器就可以调试,非常方便。
以下是一个简单的 Java ScriptEngine 示例:
在这个示例中,我们使用 ScriptEngineManager 创建了一个 JavaScript 的 ScriptEngine,并执行了一段简单的 JavaScript 代码,输出了变量 z 的值。
除了执行 JavaScript 代码,ScriptEngine 还可以将 Java 对象传递给 JavaScript 代码,从而实现 Java 和 JavaScript 之间的数据交互。以下是一个示例:
例中,我们将 Java 对象 name 和 age 传递给了 JavaScript 代码,并在 JavaScript 中输出了一个字符串。
从以上示例可以看出,ScriptEngine功能强大,不仅支持简单的计算,而且可以支持复杂的业务计算,完全可以满足我们日常的需求开发。
4. 设计优势选定ScriptEngine后下一步是如何实现快速响应,实现日常需求。是否能实现片段代码的可配置化,配置完后可以直接运行,免发布上线。是否有必要实现代码的可配置化,可配置化主要有如下优势:
可配置化代码可以灵活、快速地响应客户的需求。通过将软件系统的各个模块进行拆分,将其变成可配置的组件,然后根据客户的需求,选择合适的组件进行组合,就可以快速地定制出符合客户需求的软件系统。
可配置化代码的优点在于它可以大大提高软件开发的灵活性和效率。比如,当客户提出新的需求时,只需要在已有的组件库中选择相应的组件进行组合,就可以快速地完成新功能的开发。这种方式大大缩短了软件开发的周期,同时也降低了开发成本。
可配置化代码还可以提高软件系统的可维护性和可扩展性。由于各个模块都是独立的可配置组件,因此可以很容易地进行单独的维护和升级。同时,由于组件是可配置的,因此可以很容易地进行扩展和替换,以适应不同的需求。
总之,可配置化代码是一种非常灵活,高效的技术手段,可以帮助我们快速响应客户需求,提高软件开发效率和质量。
下面,笔者从汽车之家的几个项目,实践了代码可配置化:
对接二手车经销商车源数据,二手车经销商车源数据格式各不相同,要求快速接入,快速上线展示。
导出车源信息到第三方网站展示,做推广。第三方网站要求的格式也各异,而且导出格式也经常变化,如何快速响应变化,满足客户需求上线。
5. 系统设计系统设计要考虑基于变和不变,变化频度比较大的计算模块通过JS脚本运行,不变的部分,即整体部分通过Java设计编写,JS脚本可通过数据库存储,以方便进行更新。每次将待运算的数据通过接口传给程序,程序通过调用JS代码计算,得出计算结果,存入数据库,具体设计如下。
图1 利用ScriptEngine 动态计算过程
6. 系统设计以及脚本的编写6.1脚本设计准则以及适用场景当需要针对一个场景需求频繁变化,规则随时调整,上线要求时间短,有明显的根据输入参数,返回结果时,比较适合动态脚本的引入。
以笔者第一个项目库存导入为例,其场景如下:
A. 经销商会定期上传库存文件,各个经销商的库存文件格式各不相同。
B. 经销商会不定时调整自己库存的格式,比如增加一个字段、减少一个字段、字段格式变化等。
C. 整体汽车参数基本不变,能覆盖所有经销商提供库存文件的格式。
7. 具体场景实施此场景比较适合动态脚本解析库存,以下是项目引用JS代码片段截图:
JS脚本保存数据库,可以随时动态灵活的新增,更新,避免上线。数据库配置如下:
库存导出的JS代码片段:
库存导出配置示例:
初始化ScriptEngine 引擎代码如下:
调用JS代码解析库存示例代码如下:
根据以上代码截图,以及流程图,可以总结得出,整体流程如下:
1)建立经销商账号。
2)根据经销商库存文件编写 JS 解析脚本,保存入数据库。
3)根据经销商的账号,找经销商配置的导入Rule (javascript 代码)。
4)把经销商传入的库存文件数据传入 ScriptEngine 执行 JS 解析脚本,获得标准库存数据。
8. 实现效果和收益1)库存导入JS动态脚本上线后,库存导入需求效率提高400%,由原来的 2人/日, 提高至 0.5人/日。
2)库存导出JS动态脚本上线后,库存导入需求效率提高600%,由原来的 3人/日, 提高至 0.5人/日。
3)在线评分系统JS动态脚本上线后,库存导入需求效率提高600%,由原来的 3人/日, 提高至 0.5人/日。
4. 极大的提高了经销商库存接入,导出效率,和库存导出效率,给客户带来了非常好的体验。
9. 总结以上是我们实践中根据业务的实际需求,经过深入的调研和分析后做出的技术方案和实践,并取得了很不错的效果。这样的场景以后还有很多,本文给快速响应客户需求,高效完成实际工作提供一种思路和方法。相信随着技术的发展也许会有更好的方案和技术,我们不断探索,不断追求进步,欢迎有兴趣的同学一起探讨和学习。
作者简介陈培锋
■经销商事业部-经销商技术部-新产品技术团队。
■2019年加入汽车之家,负责智慧诊断产品研发,热衷于以客户价值为本,解决客户痛点,做给客户带来价值产品。
-
可配置化代码快速响应客户需求1 项目背景快速响应客户需7求是企业成功的关键之一。在现代竞争激烈的市场中,客户需求不断变化,企业需要
-
世界新消息丨外籍友人走进东台寻访“世遗”中国江苏网讯(记者吴昌红)5月30日,2023“发现江苏·寻访世界自然遗产”启动仪式在东台市举行。活动邀请
-
当前消息!一个眼神就变道 全新宝马5系这招泰酷辣!首先,全新5系配备了全新自动驾驶辅助功能和高速公路辅助功能,这是一套是比去年发布的全新7系还要先进的一
-
智通财经港股06月投资策略及十大金股2023年06月投资策略:扛住压力后图进攻
-
lol符文法师符文(lol法师通用符文) 每日讯息导读1、高级潜能精华(紫色)高级成长法术强度雕文(蓝)高级成长生命符印(黄)高级法术穿透印记(红)出
-
三次函数奇过偶不过(三次函数的奇偶性)|全球关注想必现在有很多小伙伴对于三次函数的奇偶性方面的知识都比较想要了解,那么今天小好小编就为大家收集了一些
-
环球新消息丨奖金2000万元!湘潭彩民喜中福彩“双色球”大奖湘潭市福彩中心为销售网点颁发大奖喜牌。红网时刻新闻湘潭5月31日讯(实习生李红记者刘放明)5月31日,从湘
-
加速推进全产业链布局,圣湘生物上半年增收超三成|世界聚看点在新冠业务持续增长的同时,圣湘生物上半年进一步增强研发实力、推进全产业链布局、加速海外拓展,为后续业
-
【环球时快讯】云从科技:目前基础部分的算力需求能够被基本满足目前基础部分的算力需求能够被基本满足
-
每日热闻!(热点观察 漫评)推倒欧洲经济的“多米诺骨牌”国际在线消息美国不断“拱火”俄乌冲突,使欧洲经济遭受沉重打击。德国联邦统计局最新发布的数据显示,2023
-
攻克关键节点!李沧区重庆路快速路非住宅征迁全部清零_环球速递近日,随着重庆路782号、重庆路851号房屋的拆迁,李沧区攻克了重庆路、唐山路快速路互通立交范围的征迁关键
-
每日消息!世体:想要引进基米希将面临很大困难,但巴萨没有放弃直播吧5月31日讯据西班牙《世界体育报》报道,巴萨对拜仁中场基米希感兴趣,他们没有放弃引进该球员的可能
-
90多只“喜羊羊”被困河滩,公安消防联手4小时解困-世界今日报90多只“喜羊羊”被困河滩,公安消防联手4小时解困极目新闻记者陈勇通讯员娄丹连日来,湖北孝感市持续强降
-
每日速讯:凤凰桥社区:红色小管家,推动社区治理提质增效今年以来,瑶海区胜利路街道凤凰桥社区坚持把党建引领作为推动基层治理的根本路径,进一步释放居民参与社区
-
天天热文:博兴农商银行城中分理处开展“小小银行家 理财大梦想”活动通讯员李昱璇为更好的培养小朋友们的金融意识和消费习惯,养成正确的消费观,进一步丰富小朋友对金融知识的
-
这一市场全线下跌,人民币再杀近300点今天整个市场表现依然乏力,而特别值得一提的是商品市场几乎全线崩跌,人民币亦在PMI数据公布之后直线坠落
-
又来碰瓷?美军炒作解放军战机在南海“不专业拦截”【文 观察者网王世纯】美国方面又拿南海问题炒作,这一次他们无端指责我方“不专业拦截”。美国印太司令部5
-
越秀集团拟发行40亿元公司债,分为2个品种|今日快看App5月31日消息,广州越秀集团股份有限公司发布2023年面向专业投资者公开发行公司债券(第三期)发行公告。
-
谁会是新能源车险市场的“鲶鱼”?|精彩看点沿着旧地图,找不到新大陆编者按:本文来自微信公众号腾讯研究院(ID:cyberlawrc),作者:王诗卉,创业邦
-
黄金、原油受到资金关注——品种异动2023.05.31-当前讯息一、内盘期货品种今日资金流向榜前10名。二、内盘期货品种资金沉淀榜1、资金沉淀榜前15名,及重点品种资金
-
观焦点:5月30日基金净值:博时信用债券A/B最新净值2.98,跌0.17%5月30日,博时信用债券A B最新单位净值为2 98元,累计净值为3 095元,较前一交易日下跌0 17%。历史数据显示
-
上周的任天堂3DS系统更新11.17.0-50修补了大多数现代漏洞|前沿资讯在关闭3DSeShop几个月后,任天堂推出了任天堂3DS系统更新11 17 0-50,从外观上看,这个新固件版本修复了各
-
积极消化“库存”,东升丰乐幼儿园“带货小主播”摆摊进社区 焦点速递2023年5月29日下午,成都市双流区东升丰乐幼儿园与丰乐社区携手在香楠湖广场开展“百香娃当家童趣集市乐”
-
滚动:运机集团(001288):5月31日11时04分触及涨停板2023年05月31日盘中消息,11时04分运机集团(001288)触及涨停板。目前价格19 61元,上涨9 98%。其所属行业
-
6月1日南昌地铁1、2号线首班车提前半小时 天天资讯最新公告!6月1日(本周四)南昌地铁1、2号线首班车运营时间将提前半小时至5:306点以后按运行图正常运行其他
-
每日速讯:科普也需“融入日常、化作经常”昨天是第七个全国科技工作者日。据了解,我市近期将举办一系列科普教育宣传活动,点亮科普“明灯”,不断提
-
新疆塔里木盆地 我国首个万米科探井开钻|环球快讯本报乌鲁木齐5月30日电30日上午11时46分,我国第一口万米科探井——深地塔科1井在新疆塔里木盆地开钻,标志
-
十亿元大案执行记_全球今头条4 16亿股上市公司股票、9个利益关联方、历时485天、到位9 72亿元、两封感谢信,这些数字,是山东省东营市中
-
全球观焦点:骂人滚刀录音酷我音乐_骂人滚刀录音30分钟1、建议及时报警处理,必要时,可以收集证据向法院起诉维权。2、以上答复,如果满意,敬请采纳。本文就为大
-
华峰测控05月30日获沪股通增持240.06万股05月30日,华峰测控获沪股通增持240 06万股,已连续4日获沪股通增持,共计250 88万股