实践案例 | 如何实现苍穹对接云之家智能审批单

小编推荐
由于客户组织和业务的特殊性,需要同时使用苍穹和云之家智能审批开展审批业务,且需确保两个平台业务审批流程的一致性。因此,应实现苍穹和云之家两个平台间的对接。 本期实践案例提供了相应的解决方案,教你如何实现苍穹对接云之家智能审批单,满足客户上述诉求~ 案例撰稿人:Ximoon。 客户X之前一直使用云之家的智能审批开展业务,现在计划将一部分的业务转移到苍穹上,但是云之家的审批单据仍需保留。由于客户X的人员流通和架构变化比较频繁,如果要分割业务到两个平台,需要保证两个平台业务审批流程的一致性。 考虑到客户组织的特殊性,客户只维护其中一个平台,另外一个平台需由我们来长期维护。相当于后期,需要有专门的人力、物力来确保两个平台间的审批流程一致性,除非能够让云之家和苍穹的审批设计保持一致,即让云之家使用苍穹的审批流程,或者苍穹使用云之家的审批流程。 针对上述背景,我们出具了如下两套方案: 方案一:如果业务数据来源是云之家智能审批,那么继续沿用云之家的智能审批流程,客户也继续维护云之家的审批流程。如果业务数据来源是苍穹,那么就通过集成+开放平台,将云之家的智能审批单对接进来,在苍穹端展示云之家的审批单据页面。 方案二:如果业务数据来源是云之家智能审批,提交即完成,通过苍穹的集成+开放平台,将来源数据接入苍穹平台并保存提交,统一使用苍穹的审批流程;如果业务数据来源是苍穹,则正常使用苍穹的审批流程。 由于客户对云之家的维护更熟悉,且平台也有一部分业务是从云之家上剥离出来的,当两者业务相结合的时候,客户可以通过苍穹+手动关联的模式,来完成业务的流转,最终选择了方案一。关键实现步骤如下: 一、获取云之家智能审批单据 首先,需实现的是,苍穹页面的输入式交互,如何通过文本框的输入得到动态的流程实例列表,并提供用户选择。 参考云之家智能审批流程实例获取的接口文档:获取流程列表接口(https://open.yunzhijia.com/opendocs/docs.html#/server-api/business/cloudflow?id=_7获取流程列表接口),将云之家的智能审批流程对接到苍穹中,实现交互界面如下: 交互页面 在【流程名称】中输入相应的审批单的标题,通过propertyChanged添加监听,左侧文本框输入,右侧【选择流程】下拉列表通过值更新事件动态更改选择项,提供给用户选择。相关插件代码示例如下: 后续在整理方案时,对该交互页面作了进一步优化,效果如下图: 优化后的交互界面 轻应用自行建立,用来获取智能审批的授权token(必须使用自建轻应用),给的代码中查询的流程为当前登录用户,查询出的结果展示在下方的列表中,选择任意一行点击展示即可。 二、流程引擎集成 流程引擎集成 云之家的智能审批提供了链接集成的方式。API参考如下: 对云之家接口熟悉的人比较清楚,这个链接缺少了最重要的一环:认证。云之家内部认证是通过ticket获取用户认证可信身份,从而完成数据的获取。 云之家认证 如果没有ticket认证,那么通过上述链接打开,会面临如下问题: 账号下线警告 所以,想要合法地打开指定的审批单据,需要引入JS桥(qing.js),对应脚本如下: 注:qing.js是一个加载器,它会自动判断当前网页运行在什么客户端,然后自动加载适用于当前客户端的、最新的实现代码。它可以让应用更及时地获得qing.js地新特性和漏洞修复。 引入JS桥 二、跳转轻应用 qing.js提供了客户端能力,帮助我们来完成可信身份的跳转。 跳转到轻应用 也就是说,我们只需要这样使用qing.js,即可实现在前述的苍穹页面中点击审批流跳转到云之家的智能审批页面。 三、自定义控件 那么问题来了,如何在苍穹里面调用上述代码,完成页面的显示呢?做过云之家轻应用开发的,第一时间想到的就是通过自定义控件,不需要过多的前端内容,只需要知道要展示的单据的相关参数,后端也仅仅通过setData就可以完成。 自定义控件的源码包我放在最后,领域标识和方案ID都是yzj_approve,但在这个开发过程中,我们的新人小伙伴遇到了一些问题,帮助他一一解决之后,总结了下述注意事项。 1. 自定义控件路径配置 首先,要检查的是自定义控件注册时的领域标识和方案ID是不是和前端源码包保持一致,index.js是不是在根目录中(zip要在index.js的目录下直接压缩所有文件,外层不包含文件夹)。 如果F12的源代码没有加载出来,再去网络下面找资源请求是不是404,如果404了,小伙伴一定要记得再重新检查上述配置。 自定义控件路径配置 用IDEA启动的,记得去DebugServer配置的WebPath文件夹下查看是否有相应的文件,停止服务后,可以直接替换下面的文件或者采用自定义控件调试来完成功能的替换修改。 调试方法可参考:自定义控件调试教程(https://vip.kingdee.com/link/s/laTQP) 文件替换 2. 自定义控件赋值并触发动作事件 对前端代码不熟悉的看过来,生命周期中,init是初始化的时候被调用的,初始化时也会同步调用update,插件用setData对自定义控件赋值时,只会相应update生命周期。 自定义控件赋值并触发动作事件 插件中setData的赋值类型要和前端中的props.data的数据类型保持一致,经常使用的包括String、Map等格式。 3. 前端生命周期不生效 如果init或Update生命周期都没有被唤起,那么可以肯定是自定义控件的代码写的有问题,因此还得回到index.js里面排查。对前端代码不熟悉的人,千万不要相信代码注释中参数可有可无的说法,说不定就是少传参数或者多传参数引起的,比如说,小伙伴加上了jQuery的传参后,恢复了正常。 jQuery传参 4. 跳转智能审批后,提示下游系统连接不成功、智能协同云参数配置等问题 如果通过qing.js来完成可信身份验证,必须要保证苍穹和云之家两个系统能做到互相可信,那么需要云之家参数,并同步组织和人员,获取到当前用户的openid才可以。没有openid,就会无情地拒绝连接。参数配置界面如下: 参数配置 但仅仅通过获取参数的这个按钮来完成基础参数的配置并不能满足,需要在云之家的参数中继续完善如下参数: 完善参数配置 其中APPKEY和APPSECRET配置见金蝶云苍穹协同云配置介绍(https://vip.kingdee.com/link/s/laT1u)。 如果配置上述参数还不成功,建议退出该用户的登录状态并重新登录。如果重新登陆后发现首页进去一片空白或者报错也没有办法进入其他菜单,在数据库找到系统库下的T_BAS_SYSPARA业务背景
解决方案
方案整体思路
关键步骤






<script src="https://static.yunzhijia.com/public/js/qing/latest/qing.js"></script>


qing.call('gotoLightApp', {
appId: "10104",
appName: "智能审批",
urlParam: "https://yunzhijia.com/cloudflow-mobile/approval/" + formDefId + "/" + formInstId + "/" + flowInstId
})






实践案例 | 如何实现苍穹对接云之家智能审批单
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



