阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

极客办公平台低代码开发应用实践

  • 2018-11-09
  • 本文字数:4988 字

    阅读完需:约 16 分钟

极客办公平台低代码开发应用实践

一、前言:极客办公平台

本篇文章介绍一下极客办公平台低代码开发应用实践,解决苏宁集团内部协作办公与报表数据分析的解决方案。极客办公也是一种比较通用的协作平台,提供了二次开发的能力,借机将经验总结分享平台化的思维,不一定是最优方案,正确与否那就“仁者见仁智者见智”了。极客办公平台(Geek office platform),简称为 GOP,是希望高效提升协作办公效率。


文章导读:开篇先介绍一下笔者从苏宁集团业务部门遇到的需求问题,毕竟是需求驱动研发;再将整理的平台技术理论与实践知识进行分享;接着介绍一下笔者当前平台创造的价值。

二、协同办公场景现状与前景

1、协同办公业务背景

协同办公:


业务人员在提报数据过程中经常需要先 excel 模板中数据填报,邮件发给某人员进行人工校对、数据汇总,如果发现问题还会反复上述工作,办公效率低下。 如下图所示:



报表分析:


业务人员在进行报表数据分析习惯使用 EXCEL,使用 EXCEL 做报表分析需要先要准备好数据,再进行配置分析字段,如果数据发送了变动,还需要重新处理,过程会存在反复。

2、现有协同办公系统

苏宁集团业务部门有很多专属的 IT 系统的 ,但是属于具体的业务系统,非平台化通用协同办公系统。IT 部门也无法为每个业务部门都提供专属的业务系统,那么如何来解决这一难题来提升业务人员的协同办公效率呢?经过总结多个业务系统的特征以及参考业界的一些产品,抽象出来了如下特征:


三、平台技术理论与实践

1.平台内容简介

定位介绍:


极客办公致力于开发云端数据平台,方便用户在云端存储和管理数据。平台的极速建模适配多种业务场景,高效协作性可以帮助用户轻松完成协作数据申报、审批、生成报表,重塑信息内容的产生、交流、分享、传播的方式。


平台架构:


业务场景,行政办公类、人事管理类、开发规划类、项目管理类等;核心能力层,平台权限管理、极速建模能力、业务数据加工、多人协同办公、报表数据分析;底层技术,Spark 计算引擎、Mongo DB 动态数据存储,详情参考下图:



平台是可以适配多种应用场景,业务报表数据也是多种多样,架构体系通过元数据建模能力适配多种业务的字段,通过 mongodb 文档数据库方式来灵活适配业务数据的存储。在业务报表需要基于多表数据按照某一个维度来展示呈现那么就有通过数据加工来处理解决业务问题。

2.平台权限管理

权限类别:


一个用户身上拥有的权限分别由个人权限、角色权限组成,个性化的权限可以直接设置到用户身上,通用的权限可以配置到某角色上,然后将角色设置到用户身上,参考下图:



权限模型:


对用户来说,从实体的角度,拥有应用的可见权限以及应用之下的报表的可见权限;当拥有了报表的可见权限,对于某报表中的权限我们又可以分为系统按钮权限(如查询按钮、提交按钮)、报表列读写权限;如果拥有了查询权限,可以分为基于哪个字段进行查询、基于哪些字段值进行查询。参考下图:


3.极速建模能力

业务数据建模


数据模型来描述了业务数据的结构,数据模型包括原始数据模型、视图数据模型以及查询条件数据模型。对于数据模型本平台提供管理台进行配置以满足不同的业务场景。


原始数据模型:


原始数据模型,不是每一个业务场景都需要原始数据模型的,当业务数据是来源于外部第三方系统,同时又需要做数据处理(加工、合并)的场景才是需要的。原始数据模型的职责是与来源的第三方系统表是映射关系,为数据报表分析而服务的。


视图数据模型:


视图数据模型,顾名思义,为展示而存在的数据模型。在 excel 客户端可以查询到的、人工录入的都是存储在视图数据模型中的。多人协作类报表一般情况下不涉及到数据加工,也就是不涉及到原始数据模型,数据一般都是存储在视图数据模型中,如人才台账报表、返利分配报表等.


查询条件模型:


查询条件模型,理解起来很简单,查询条件需要的数据模型。在 excel 客户端查询数据的时候展示出来的查询条件就是来源于这个模型,查询条件模型配置了几个查询字段,那么实际在执行查询的时候就有几个。Excel 客户端的查询条件界面则是根据这里配置的模型进行动态渲染出来的。查询字段关键属性包含展示名称、展示类型(文本框、下拉框、时间框等)、是否必填、展示位置等,这些属性对于客户端渲染以及执行查询都是必要的属性。


展示界面配置


模板元数据:


建立模板元数据,执行 excel 模板所需要的一些基本属性,如模板的名称,模板对应的视图名称等基本信息。


excel 展示模板:


用户最终使用的 excel,而这里说的 excel 展示模板就是用户最终的,我们知道在数据库中表是一个二维结构,那么 excel 的 sheet 也是一个二维结构,但是字段与列的关系是如何映射上的呢? 我们先看图 5:



这张图中绿色行是中文名称,蓝色行是英文字段名称,而字段与列的关系就是通过蓝色行中的英文字段名称来映射上的。


excel 模板上传:


当模板配置好可以通过我们的模板上传工具发布到极客办公平台之上了。当然前提是要有权限上传才可以。

4.业务数据存储

为了发挥关系数据库和非关系型数据库的各自优点,本平台将数据模型(元数据)存储与 MySQL 数据库中,而业务数据按照相应数据模型的结构将业务数据存储到 MongoDB 中,MongoDB 属于 NOSQL,存储起来比较灵活与方便。


业务数据需要保证安全性,针对 MongoDB 采取集群方式,一个主节点,多个从节点,通过如下方式进行配置主从关系:


1.  rs.initiate({   2.   _id : "repa",   3.   members : [   4.     {_id : 1, host : "IP1:27017"},  5.     {_id : 2, host : "IP2:27017"},   6.     {_id : 3, host : "IP3:27017"},   7.     ]    8.     }); 

复制代码


同时对于主节点中的数据自动备份到 FTP 服务器上来保证过程中的数据的可靠性。参考下图:



可以通过 MongoDB Client(Robo 3T)进行访问进行数据运维,需要配置 Replica Set 方式进行访问,如下图:



对于已有的业务系统如果通过极客办公平台进行数据查询、数据导出,是可以将 API 注册到极客办公平台中的,但是要求 API 是需要发布成为苏宁内部分布式服务,这样带来带来的好处是用户首先经过极客办公平台,当数据导出任务发起后会进入平台任务队列,这样就可以进行流量控制避免对业务系统压力过大。参考下图:


5.业务数据加工

在不少的报表场景中会存在需要提供定时任务的方式对数据加工来满足某种需要。那么就需要一定的机制来解决这样的场景。数据加工规则是可以配置的,在大数据平台创建定时任务来读取数据加工规则进行数据加工。参考下图:


6.多人协作办公

多人协作办公:


是指在目标实施过程中,部门与部门之间、个人与个人之间的协调与配合。能够实现团队协作,比如,项目管理、流程管理、事务管理等等。这样才能做到随需应变,动态适应,实现柔性管理。


如何实现多人协作:


极客办公的客户端是基于 excel 基础之上做了插件,增加了主菜单报表功能区、选择报表、查询按钮、保存按钮、导入数据、导出数据等。


1) 数据如何查询


用户进入极客办公客户端并已经完成切换到具体的报表,点击查询按钮弹出查询条件对话框,在渲染查询对话框的时候会到数据库中寻找定义的查询条件模型,根据模型定义的字段进行渲染,展示名称、展示类型(文本框、下拉框、时间框等)、是否必填、展示位置等,面向不同的场景,查询界面展示的查询字段是不一样的,这个取决于上述极速建模中提到的查询条件模型。当对话框渲染出来以后,用户可以填写或选择所需的值,最后点击确认按钮就进入执行查询,稍等片刻就可以展示查询结果了。


2) 多人同时编辑


当查询出来结果后,用户可以在表格的最后一行拉出一空行或者在已有数据的位置插入一空行,根据模板要求用户按照 excel 传统方式进行录入数据、编辑数据。


3) 数据如何保存


用户点击保存按钮,在点击保存数据的时候客户端可以识别哪些新增行、哪些是修改行,客户端将新增和变更数据一起提交到服务端。服务端根据配置的校验进行校验合法性,如不符合要求的时候客户端会弹出提示框提醒用户,如果符合要求那么就会成功提交到后端数据库中。我们通过一张流程图可以理解清楚数据的保存的原理,如下图:



4) 协作数据校验


在多人协作报表场景,经常会遇到数据要满足某些约束才可以保存到库里,对于不同的报表数据校验规则少量有同样的规则,但是大部分是完全不一样的,那么我们如何解决这样的问题呢?对于极客办公平台是提供的是通用的能力,不可能新支持一张报表就要发布新的版本的,那么就会要求我们支持配置校验逻辑。如何达到这一效果呢?初步思考下是需要一种脚本语言来支持该场景,目前了解到像 Groovy、JavaScript、Python 等脚本语言应该都是符合要求的,JDK 中也都内置了这三种脚本语言的执行引擎,所以这三类脚本都是可以在 JVM 之上进行执行的,使用起来也是比较方便的。


执行 Groovy:


1.  ClassLoader cl = new InvokeGroovy().getClass().getClassLoader();    2.  GroovyClassLoader groovyCl = new GroovyClassLoader(cl);    3.  try {    4.      Class groovyClass = groovyCl.parseClass(  5.      new File(InvokeGroovy.class.getResource("/groovy/Foo.groovy").toURI()));6.      IFoo foo = (IFoo) groovyClass.newInstance();    7.      System.out.println(foo.run(new Integer(2), "More parameter..."));    8.      GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance();   9.      System.out.println(groovyObject.invokeMethod("run",   10.              new Object[]{new Integer(2),"More parameter..."}));     11.  } catch (Exception e) {    12.      e.printStackTrace();    13.  }  
复制代码


执行 JavaScript:


1.  ScriptEngineManager manager = new ScriptEngineManager();  2.  ScriptEngine engine = manager.getEngineByName("javascript");  3.  String jsFileName = "expression.js"; // 读取js文件  4.  FileReader reader = new FileReader(jsFileName); // 执行指定脚本  5.  engine.eval(reader);  6.  if (engine instanceof Invocable) {  7.      Invocable invoke = (Invocable) engine; // 调用merge方法,并传入两个参数  8.      Double c = (Double) invoke.invokeFunction("merge", 2, 3);  9.      System.out.println("c = " + c);  }  

复制代码


执行 Python:


1.  Python Interpreter interpreter = new PythonInterpreter();  2.  interpreter.execfile("D:/labs/hello.py");  3.  //第一个参数为期望获得的函数(变量)的名字,第二个参数为期望返回的对象类型  4.  PyFunction pyFunction = interpreter.get("hello", PyFunction.class);   5.  PyObject pyObject = pyFunction.__call__(); // 调用函数  6.  System.out.println(pyObject);  

复制代码


Groovy 的语法与 Java 语言比较相像,而且功能也比较强大,最终我们选择了 Groovy 脚本作为校验规则的语言。在使用起来就比较简单了,首先我们提供了一个校验框架,校验框架可以在数据保存的时候进行寻找操作的报表配置了哪几种校验器,寻找结束后进行一个个执行,最后将执行的校验结果返回给用户,如下图:


7.报表数据分析

我们知道 excel 自身提供强大的数据分析能力,这里提到的报表数据分析也是在 excel 基础之上做的包装。数据分析的基础是数据,在极客办公当前的场景下数据是查询出来的,基于这种查询出来的数据在 excel 做数据分析需要按照 excel 的方式配置不少的东西,我们这里提到的数据分析是将配置的参数信息迁到了管理台上,只需要配置一次,当用户做报表数据分析的时候点击一下数据分析按钮就可以到达所期望的目标。

四、极客办公平台带来的价值

人工进行发送 excel 文件、校对、合并是一件非常费时的体力活,而极客办公平台通过自动汇总数据替换了传统的 excel 文件传递的方式,自动校验替换人工校验,大大提升了办公效率。对于一些简易场景的流程审批可以通过状态字段来流程审批。该平台支持多种业务场景,对于不同的业务场景按照一定规则进行配置就可以很快进行上线。同时该平台是自研系统代替外部商业系统,保障苏宁集团信息安全。

作者简介

张曙光,苏宁易购 IT 总部员工平台研发中心高级技术经理,负责极客办公平台、机器人服务平台等应用系统的架构、开发工作。曾研究分析过多款 Oracle、Salesforce 等大厂产品,参与电信运营商行业所需的中间件平台多个组件的系统设计与开发,尤其是在开发工具领域拥有较深的理解和丰富的项目经验。同时拥有开放的心态,乐于接受新事物、新技术,勇于挑战新的困难。


2018-11-09 14:461582

评论 6 条评论

发布
用户头像
很好的思路
2020-03-27 20:00
回复
用户头像
MongoDB 是挺灵活的~
2018-11-12 17:12
回复
用户头像
。。。。
2018-11-12 08:59
回复
用户头像
非常好的思路!!
2018-11-11 10:55
回复
用户头像
good job!
2018-11-11 10:38
回复
用户头像
用户体验好,解决很多实际问题,给日常工作带来很多便利,赞一个
2018-11-11 10:34
回复
没有更多了
发现更多内容

国企数字化转型全是坑?看这几个成功案例,减少90%损失

雨果

数字化转型

爬虫基本原理介绍、实现以及问题解决

石臻臻的杂货铺

爬虫

JAVA concurrency -- ReentrantLock 源码详解

骑牛上青山

Java 源码

《深入理解JavaScript特性》学习总结2-ES6基础知识点总结

肥晨

11月月更 ES6基础知识点总结 解构赋值

20个值得收藏的实用JavaScript技巧

千锋IT教育

重塑感知,荣耀金洋!金洋奖两项用户体验奖项公布

易观分析

App 手机银行

完整会议议程:NGINX Sprint China 2022 年度线上大会

NGINX开源社区

nginx

数字化开采|AIRIOT智慧矿山自动化生产解决方案

AIRIOT

低代码 物联网 智慧矿山

JAVA concurrency -- ThreadLocal 源码详解

骑牛上青山

Java 源码

2022开源之夏|EMQ三大开源项目开发圆满收官

EMQ映云科技

开源 物联网 IoT mqtt 11月月更

脑机直播 x 赛博驱魔!瑞云专访揭秘胶囊计划国风科幻神作《终极体验》制作幕后...

Renderbus瑞云渲染农场

3D动画 动画制作 瑞云专访

JAVA concurrency -- CyclicBarrier 与 CountDownLatch 源码详解

骑牛上青山

Java 源码

OSPF路由协议一

初学者

11月月更

JAVA concurrency -- ArrayBlockingQueue源码详解

骑牛上青山

Java 源码

大规模预训练模型:探讨与展望

澜舟孟子开源社区

基于 MQ 的分布式 Serverless 多租任务处理系统架构演进

Apache RocketMQ

消息队列 异步调度 #Serverless 任务

OpenYurt v1.1.0: 新增 DaemonSet 的 OTA 和 Auto 升级策略

阿里巴巴云原生

阿里云 开源 云原生 openyurt

助力车路云一体化,EMQ在车路协同领域的应用实践

EMQ映云科技

物联网 IoT emq 11月月更 车路协同

商业银行普惠金融可持续发展综合能力呈现梯队化,专项领域各有所长

易观分析

普惠金融

数据中台选型必读(五):中台建设本质就是构建企业的公共数据层

雨果

数据中台

HIFIVE音加加:多场景音乐版权解决方案,让「用音乐」更便捷

HIFIVE音加加

版权保护 视频后期 数字版权保护

用户体验成为继MAU后,手机银行竞争分化的下一分水岭,易观千帆重磅发布手机银行APP用户体验GX评测

易观分析

App 手机银行

一次zuul版本升级产生的问题排查记录

骑牛上青山

Java spring 源码 Zuul 生产环境

袋鼠云数栈UI5.0体验升级背后的故事:可用性原则与交互升级

袋鼠云数栈

2022年互联网主要技术方向招聘需求变化:人工智能岗位需求增加87.7%;SQL在就业语言需求中位列第一

雨果

sql

什么是“数字孪生”?有什么价值?

雨果

数字孪生

数据中台选型必读(四):要想中台建的好,数据模型得做好

雨果

数据中台

图文实录|UIE:基于统一结构生成的通用信息抽取

澜舟孟子开源社区

这家公司的码农有多牛,用C++重写Kafka,还能与其API兼容

雨果

Kafk

[力扣] 剑指 Offer 第三天 - 替换空格

陈明勇

Go 数据结构与算法 力扣 11月月更

一场算力集结令,国产芯片如何开启冲刺跑?

脑极体

极客办公平台低代码开发应用实践_其他_蒋旭曦_InfoQ精选文章