找回密码
 立即注册

QQ登录

只需一步,快速开始

KevinChen 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-4-7 13:44  /   查看:2878  /  回复:0
本文分三篇,描述了一个真实的客户故事,记录了从需求、场景,到选型,再到SpreadJS的应用和原理简析。


需求场景:
       我们公司主营业务是互联网电商服务业方面,平时会处理大量商业和用户信息,有庞大的客服团队(共约5千人左右),当时公司已有的系统,主要面向的用户就是我们的客服人员。
       客服平时每天都会处理大量的工单填报、客诉登记、第三方平台原始数据的导入、统计汇总、审核审批、电签、分发等工作。平时大部分工作信息的载体都是Excel,每天服务器需要处理海量的文档,由于Excel文档本身数据难以提取入库,模板更新时也不方便第一时间分发到操作员处,难以整合到Web页面里等问题,我们的产品组接到了升级系统的提案。
       要评估这个需求并不容易,当时大家讨论总结了以下几个需求点:
1.   并发:
公司客服人数众多,几千人同时在线重度操作,业务流转周期短、数据量大,所以对服务端并发性能消耗是很大的。原来是在后台用Apache POI来提取和修改Excel数据、并执行其中的公式计算等。这样会遇到两个性能瓶颈:
<1> 需要频繁地上传、下载文档,服务器带宽承受了很大的压力;
<2> 所有Excel解析、提取的操作都在服务器端,频繁的IO操作让服务器不堪重负。
以上两个性能点,在目前的架构下很难突破,这也是重构项目时最具挑战性的需求点之一。当然硬堆服务器配置也是一个解决方案,但无法解决其它的一些问题,并且也会带来运维的压力。
2.   对Excel操作和兼容性要求较高
新系统如果不能让大家快速上手使用,以这个项目用户的体量,培训成本将无法承受。而且要能够直接导入已有的Excel报表模板,否则再次开发或设计所有Excel报表也是难以接受的。
3.   报表格式灵活多变
当需要创建新的报表模板时,不需要研发的介入,操作员的设计和填报都可以在页面上完成。
4.   支持公式计算
由于涉及到商品、订单、成本核算、财务统计等模块,对计算公式的种类和性能要求较高。
5.   工作流中的数据文档
以前系统的工作流,涉及到Excel报表时,要么数据会先在服务端和Excel模板进行拼装,要么系统根据路径找到文件服务器的Excel文件,然后流转到对应环节。一些新的业务模块,甚至还只能用邮件进行文件传输。
这个过程会产生大量的文件,对文件服务器的带来了很大压力,后台也不得不定期做批量的数据拆分和维护。这次升级系统需要解决这个问题。
选型经历:
       首先,选型的第一步就是搞清楚我们到底需要什么样的产品,实际上关于控件的概念,曾对我造成过很大的困扰。那么什么是控件?为什么要用控件?
image.png384392089.png
其实控件就是只提供了基本功能,支持二次开发的功能模块。我们有自己的开发团队,并且当前的需求是对现有系统部分模块的升级,而不是买来一个新的系统彻底替换掉它。控件相对依赖更轻,可塑性更好,并且也有对应的开发文档和API,是面向开发者的基础功能包,便于按需求来定制功能。
其次,对于目前市面上能集成到系统中,支持这种在线表格文档编辑的产品有不少,大体我把他们分了两类:
1.   云文档产品的私有化部署
这种产品有很多,类似WPS、石墨文档、office online等都可以私有化部署。它们本身具备较高的完成度,已经帮用户实现了包括在线协同内的几乎所有功能,甚至也支持一定程度的二次开发。
但问题在于通常这类产品封闭性比较强,二次定制开发还是相对比较困难,且不够轻量。授权方式也多以按时间、按并发量、用户数量等方式授权,价格昂贵,不是很适合我们的需要。
2.   控件类
像LuckySheet、Handsontable、SpreadJS这种就是标准的控件了,它们都是纯前端表格控件,都支持Excel的功能特性和json数据绑定。
LuckySheet是国内的MIT开源软件,可以拿来商用。但在我调研时它才刚上线1、2个月,并且不像React这种有某个大厂来背书,所以不太可能拿来用到我们的正式项目里。截止目前已经过去了1年,陆续推出了QQ群、论坛等交流平台,但仍显薄弱,一些实用、易用的API相对也比较欠缺。这些缺点对于ToB场景的应用都是无法接受的。
Handsontable是国外的一个商业表格控件,据说二次开发坑较多,但对我们来说最大的问题是它没有中文支持团队,放弃。
SpreadJS是葡萄城公司的商业Excel表格控件,有趣的是我发现在V2EX的LuckySheet下方评论区中,LuckySheet的作者也说SpreadJS是行业标杆。它支持导入包括公式、图表、样式、条件格式在内的绝大部分Excel特性(不支持宏)。并且最惊喜的是,它的操作界面是一个完整的Excel界面,完全纯JS开发的,用json进行模板和数据交互。同时SpreadJS也有对应的售后支持团队,技术问题可以工作日期间随时电话、论坛交流,相关的资料包括视频、文档、示例、API手册也都非常丰富,甚至还可以请他们的技术顾问来公司培训。对于像我们这种工期短、开发任务比较繁重的项目组,确实能节约大量的精力,降低了风险。
image.png512220763.png




0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部