本文来自明道云资深研发经理孙伟,在明道云2022年秋季伙伴大会活动演讲,经校对编辑后整理为演讲精华。
一、开放没有选择
很多客户选择我们的一个重要原因,是明道云所能提供的产品开放能力。开放其实是没有选择的,坦白来讲,我也不希望开放,我希望客户所有的业务系统都用明道云管理,这样对我们是更有利的。但是,现实中因为企业业务的多样性与复杂性,没有任何一家平台可以做到一站式解决所有问题。为了方便客户,我们就必须开放自己,让客户用得更好。
一个典型的业务场景需要多少个系统?
我们先来看一个典型的业务场景。一个客户从网站上下了一个订单,经销商收到订单之后去向企业订货。企业订货之后如果自身不进行生产,就需要向供应商采购。供应商生产好之后,需要去找物流公司发货。发货完成,客户最后进行收货。这样一个企业日常经常涉及到的环节,会需要用到哪些系统?
从下单开始,可能需要有一个电商平台,比如京东、天猫;也有一些客户是自营的,会使用一些小程序,会涉及到支付系统。还会涉及到业务管理,使用CRM、ERP等管理系统。如果他是分销商体系,还要有分销系统。如果是工厂还会涉及到MES系统、物流管理系统等。这么多系统,让一家企业来完成是不太现实的,并且如果中间任何一个环节不能与其他系统友好互通,客户可能就不会选择你了。
明道云为什么需要开放?
如果不考虑交互能力,理论上来说明道云是可以搭建任何一套业务系统的。但是,我们的客户有很多个性化需求,让我们必须选择开放。
- 特殊交互。有一些客户对前端的界面排版、交互有特殊要求,这个时候用明道云来实现,就不太友好。
- 系统集成。一些客户已经使用了电商平台现有的核心系统很多年了,他不太可能立马把系统都迁移到明道云,但是却需要明道云跟原有的系统互通,进行一些数据流转。
- 运算逻辑极其复杂。比如股票基金的净值运算,它是要去收集大量的历史数据,做很多的处理;还有比如大规模的数据分析,这种TB级别的明道云本身是不擅长处理的。
- 其他需求。比如同步一些物流信息、海关数据、企业工商信息,在线签约等。
这些场景用明道本身来做就不太合适,我们不能友好实现这些客户需求,所以我们只能选择开放自己,交给别的产品来完成。
二、明道云做了哪些事情
大家一起看一下,明道云为了平台开放性做了哪些工作。
开放平台
它其实是明道老的协作模块的产物。因为明道云是一个企业协作的平台,支持用户或者是第三方开发者进入明道云的开放平台,去设计开发一些扩展应用,然后上架到明道云的应用市场,进行推广并获得额外的收入。当然,这里的扩展应用不是指我们现在用明道云搭建的应用。
最典型的是第三方的SaaS与明道云的结合,它是基于Auth2.0授权机制,通过账号密码登录后拿到token,再去获取一些数据。这里主要就是老协作模块,比如动态、任务、日程、群组;另外还有组织与账户。比如,我拿到账户信息以及用户加入的网络信息后,对网络下的用户做消息的推送集成功能。
当然,现在明道云的产品路线图里也有集成中心、开发者中心,并且将来可能会融合在一起,打造一个全新的明道云开放平台。
企业授权开放接口
我们前面讲的开放平台是基于个人授权,所有数据都是用户自己的;而企业的授权开放接口是独立于明道云个人的授权API。未来,这两套体系会共存。
这套授权体系完全服务于企业相关的数据接口,有较高的权限级别,现在这套密钥只有网络管理员在后台才可以看到,主要内容包括三大块:
- 审批。明道云现有的审批可以通过这一套体系在线创建审批,获取审批列表,为每个审批配置一个Webhook通知节点。当明道云的审批有任何的变化,它可以把变化通知到外部的系统。
- 组织架构。又分为四项:用户、部门、职位、汇报关系。我们通过这些接口,与外部第三方平台做账号集成,主要用于数据的增删查改,包括与第三方已有的类似数据的关联处理。
- 应用管理。应用指明道云中搭建的应用。我们可以在线创建应用,并获取应用下面的授权信息。
应用OpenAPI
每创建一个应用,明道云都会自动为它生成一套API示范模板。应用管理员可以看到应用的API开发文档,里面涵盖了白名单、授权管理、授权密钥。它也是非个人的,只要是应用下的数据,全部可以获取到,但是权限分为了全部权限和只读权限。只读权限就是指可以开放给第三方来调数据,但是不允许他进行编辑删除。
除了授权之外,核心的功能还有什么?第一,组织架构,我们可以通过应用的授权信息获取应用的组织结构,包括菜单项、工作表,获取工作表的结构信息,包括一些控件列表。其次就是应用数据,我们可以对于应用数据做增删查改。还有一个大块是应用权限体系,我们可以通过这一套API,去对应用下的角色做一些处理。
工作流Webhook
前面讲的这些,开放平台也好,API也好,都需要第三方系统。但是有的时候,我们并不需要挂第三方系统,而想要用无代码的方式与外部系统做比较好的结合。那么,明道云工作流就支持用Webhook与外部互通,它主要分两种方式:Webhook节点和API请求节点。
Webhook节点会自动生成一个URL链接,被动地接收外部消息的请求。我们知道,数据同步一般分两种,一种是这种传统的集成,定时地批量同步;还有一种消息集成模块,遵循IFTTT模式进行实时同步。比如我在另一个平台里面做了一个实时的操作,假设这个平台也是支持消息推送的,它就可以往Webhook节点推一条消息通知。明道云拿到之后就可以去实时获取信息,不需要每过一段时间再去拉取它。
API请求节点以前也叫Webhook节点,后面因为我们做了集成中心,所以才改成了API请求节点。明道云内部的一些事件触发或者是定时任务,就可以去请求外部地址。这个请求可以是获取数据,也可以是把明道云的数据推送给外面。
工作流代码块
工作流Webhook是基于HTTP的,但是现实中有一些传统的系统,或者一些比较特殊的系统,它的授权模式比较复杂,所以我们针对有开发能力的这部分客户做了一些比较深入的能力,就是工作流中的代码块节点。
它主要有两种开语言:Javascript和Python。Node.js和Python有些版本会引用一些包,比如有一些复杂的授权模式,通过API的方式不能够直接对接,那我们就可以通过代码块,自行引用。
我们去做一些请求的时候经常需要前置处理请求参数,比如拿到参数之后需要对返回的数据做一些预处理。如果我们通过现有的工作流节点去处理它,就会比较麻烦。但有了代码块,我们就可以在请求前先对请求参数做优化,拿到请求结果之后再做格式化处理返回给前端,这样就会相对友好一些。
集成中心
现在的集成中心可以封装一组授权认证,包括一个API的接口组,很方便地供企业内部甚至外部用户去调用,我们现在已经预置了天眼查、小鹅通、易签宝等等这些接口。前面我们提到的客户有在线签单的要求,明道云本身做不到,但是如果我们和e签宝合作,就可以通过明道云的一个节点,快速完成这些操作。
工作表/自定义页面
API查询控件。前面我们提到的Webhook和集成中心,他们的流程都是有滞后性的,以前没有API查询控件的时候是怎么处理的?处理流程一般是这样的:记录创建或者更新之后,自动触发一个工作流,工作流再去做一些逻辑,最后将结果更新到工作表中。这种做法结果不是实时反馈的,所以我们推出了工作表控件API查询,它允许在界面上直接地调用第三方的接口,在界面上实时反馈,它也是一个按钮,点击查询之后把数据实时地呈现到页面上来。
嵌入控件。工作表和自定义页面都有嵌入控件,明道云现有的控件可能不能满足一些客户的需求,那客户就可以自己开发一些控件,通过嵌入控件嵌在明道云中,做好单点登录、账号集成,这样就可以实现自定义控件的能力。
自由连接控件。这个控件可能用的人不是很多,它主要是连接明道云的老协作模块,包括动态、任务等。比如一条工作表记录跟一个日程或者任务有关,我们就可以把它关联过来。
文本识别。自带的能力主要是身份证跟一些发票的识别。因为有了我们API能力,其实我们可以自己去扩展更多的OCR识别能力。
公开表单、外部门户和分享
公开表单
现实中我们有很多的需求是不需要有状态的,只是需要收集一些外部数据。比如政府单位做民意调查,或者我们明道云的伙伴大会要收集报名信息,这种情况我们不希望用户注册,只需要拿到这些数据就行了。
明道云提供了公开表单的能力,允许用户将现有的工作表生成并发布一个公开链接或者二维码,让外部用户直接填写。填写完之后,我们也可以生成一个公开查询的链接,用户通过自己刚才填写的关键性的信息,就可以把之前填报的详细数据再查出来。
外部门户
公开信息是无状态的,它不会去记录填写人的一些标识性的身份信息,因为它没有账号或者权限体系,可能在某些场景下就不太适用。比如我前面讲到那个场景,一个经销商跟一个工厂的协作,经销商去采购的时候,我不希望他去注册明道云账号,但是我又希望他有一定的权限,能够看到自己历史的数据;并且能够对这个经销商做身份认证,比如通过手机号、微信号等进行认证。
这种场景下,我们为每一个应用提供了外部门户的能力。用户可以配置自己企业微信号、公众号,集成消息通知功能,用户通过第三方平台就能无感知地进入应用,完成操作。
分享
分享用在什么场景呢?分享的内容不需要有状态,也不需要有外部数据,只需要核对能力。举个例子,我妻子的公司是做谷歌推广的,他们每个季度都需要跟供应商做账单核算。之前我看她很辛苦地拿Excel做汇总,再为每个供应商生成一个单独的Excel,发给客户去确认。
我说你完全不需要这样做。我花了几分钟时间,搭建了两张表。数据导进来后,为每个供应商自动生成了一条对外分享的二维码。再把这二维码分享给他,他扫码就能看到历史账单记录,这样供应商的体验也很好,工作效率也大大提升。
我们在接下来的版本会强化分享能力,能够支持更多视图种类的分享,支持分享出去的记录可以配置哪些数据是可以填写的,支持生成类似分享密码、密钥的身份验证工具。
前端开源
我们针对高端玩家提供了一个前端开源能力,零门槛获取并扩展APaaS能力,充分实现前端界面的个性化。通过前端开源,用户可以对界面做排版、交互上的优化,再结合我们的刚才讲到的这些自定义的界面,就可以去实现更多的交互可能。
第三方平台集成
我们进入明道云的后台账号里面,会看到有一个集成中心,它现在集成了企业微信、钉钉、微信公众号、飞书、Welink,包括其他LDAP方式的授权。通过这些集成,可以做到消息推送、账号体系同步。再根据刚才说的企业级的授权接口,就可以以现有的第三方平台做账号集成和消息推送。
三、明道云可以怎么做
讲了这么多我们明道云开放的能力,我们再回过头来看明道云可以怎么做?
还是刚才开头提到的场景,从客户下单到完整的结算。假设我们没有用第三方系统,该怎么做?首先,客户下单平台有特殊的交互,可以通过前端开源加上外部门户,用微信号、手机号登录,实现这种小程序的能力。将其嵌入到公众号中,用户可以直接在线下单,查看自己的订单记录,使用微信的支付系统。
到业务流转环节,经销商的订货、企业接单、供应商生产制造,他们之间的信息融合就可以通过应用的API、工作流的Webhook。再结合一些外部门户的能力,在这些不同的角色之间做数据的协作流转。如果是物流发货或者一些对实时性要求高的场景,就可以集成第三方平台或者使用API查询控件、工作流代码块。员工在明道云界面上就可以实时获取物流信息。
四、我们还需要哪些能力
除此之外,我们还需要哪些能力?我大概总结一下我们要做的4大块的内容。
第一是开放平台。我最早讲的开放平台是老的协作模块的产物,它对我们目前应用下面的API支持还不够友好,所以后面计划开放平台会加入更多的应用级别的接口。或者我们现在应用API是应用级别的,后面我们也会支持用户生成个人的授权token,它的接口只可以获取自己的数据,这样再去做应用第三方集成的时候会方便很多。
第二就是SDK。现在应用对接系统的时候,它是要根据我们的示例代码,它的别名比较复杂,控件类型比较多,筛选类型比较多。后面我们会针对不同的开发语言提供针对性的SDK,用户再去对接OpenAPI的时候就会更方便。
第三是用户期望已久的数据集成能力。增加直连数据库能力,数据在第三方,我不希望同步过来,但是又希望拿到类似我们现在API查询里的结果。比如企查查,其实工商信息是存在那边的,但是我可以通过接口的方式拿过来,通过直连数据库直接获取到这部分数据。然后就是外部数据源的同步,要支持外部的数据源给写到明道云,或者是明道云的数据写到外部的数据库,当然也可能是明道云不同网络下的应用,把一个工作表的数据同步到另外的一个应用的工作表中。
第四个就是插件能力。有的伙伴是有AI能力的,那么可以开发一个自定义控件,放到应用市场,大家下载之后就天然有了AI的能力。我们的插件中心主要包含了自定义控件、工作流自定义节点、自定义的视图、自定义的函数,有了这些能力后,我们对这些有深度开发能力的客户提供了一种可能,我们把自己的产品能力直接放到应用市场或者开发者中心,上传过去就可以供客户方便地使用它。