第三方app集成移动BOS应用
前言:
第三方app集成移动BOS应用需要向总部申请专项服务,走完专项服务后总部会提供一个企业号(eid),作为客户在移动BOS平台的唯一标识,对应客户唯一的eas服务;
移动BOS是公网应用,要求客户的EAS服务器有公网可访问的地址。
概述:
第三方app打开移动BOS应用的主页,移动BOS调用到EAS接口,EAS那边需要做的首先是做身份验证(即会访问app做身份验证),登录EAS后返回数据到移动BOS应用展示。
身份验证逻辑:token做单点登录参数,使用这个参数可以解析到EAS用户信息,token可以第三方app生成,也可以自行开发加密生成,访问移动BOS应用链接时带上token,EAS服务端会请求解密接口tokenurl(需要开发)获取EAS用户信息,接口返回正确的EAS用户信息后,移动BOS完成身份验证并登陆EAS,第三方app的集成登陆完成。
应用的集成架构如下简图:
移动BOS应用包括总部开发的标准轻应用,如流程助手、shr员工自助、shr天天勤等,也包括客户在移动BOS上自己开发的轻应用。
本文档会打开多份说明链接,请先认真研读集成过程步骤再实施!
一、 注册开通移动BOS平台服务
注册过程移动bos平台会访问eas的接口,需要eas开放外网地址
如果现场网络要求严格,可以仅代理出EAS服务的mbos工程的接口即可,例如http://ip:端口/mbos(集群请用集群端口,非集群用实例端口)
如果EAS有防火墙拦截规则,请给移动BOS平台加上访问白名单,IP: 121.37.207.73
1、更新移动BOS补丁
请按照说明完成补丁更新:点击这里查看更新说明
2、配置数据中心
配置文件:{EASHOME}/eas/server/properties/XTServiceConfig.xml
在DBInfo配置中添加一个数据中心配置项,如图(箭头指向的配置项都需要修改):
配置项可从本文末尾提供的"XTServiceConfig.配置示例.xml"中对应部分截取,也可以在这份文件的基础上修改,然后替换EAS里面的。
修改完成后用浏览器打开检查文件格式是否有问题。
如果EAS是多机集群,需要修改所有机器的配置文件,修改完成后重启eas服务。
3、注册开通移动BOS平台
注册前请确认DBInfo已经配置,并且已经重启服务!注册过程移动BOS会请求到EAS服务器!
使用总部提供的企业号(eid)注册,注册界面的说明可忽略,按照本文指引注册,点击以下链接前往注册:
https://mbos.kdeascloud.com/mbos/auth/loginForm?type=group_register
1) 、拷贝eid到输入框,点击下一步;
2) 、拉到最后,填写EAS服务器地址,点击下一步;
3) 、后继步骤按指引操作完成企业开通。
小结:
通过以上步骤,客户已经可以在移动BOS平台登录,从主页点击企业登录
移动bos的主页为:https://mbos.kdeascloud.com
使用administrator登录可管理应用的许可,给EAS账号赋予开发权限
使用EAS开发者账号登录可管理平台上的轻应用
二、移动端集成应用开发配置
开发说明:要将移动BOS应用集成到第三方app,还需要现场进行接口开发,开发工作可以是第三方app提供商,也可以是我方或客户方开发和实施人员,具体开发工作请现场去协商。
如果是第三方app提供商进行开发,请参考概述部分的应用架构简略图;
如果是我方或客户方进行开发,请参考如下应用架构简略图,图中现场搭建的云服务也可以部署在EAS服务器上。
1、生成token参数
1)、如果第三方app打开链接会加上token参数,则接口1可以不用开发,移动端直接访问到移动BOS云服务。
2)、如果第三方app打开链接不会加上token,则提供接口1给到第三方app,接口生成一个token,再跳转到移动BOS云服务。
以下是常用应用的链接地址,token请换成实际可用的参数:
流程助手(红色的是需要修改的参数):
https://mbos.kdeascloud.com/mbos/page/loadPage?appid=10036&storeEid=21231&path=lczs2&name=lczslist.custom&eid=K172K145K106K1&token=cb45988cms
shr轻应用,如员工自主、经理人自主、天天勤等,请在专项服务中咨询相关人员
现场在移动BOS上的开发的应用,可在预览页面获取到应用的链接,在链接后面加上token参数即可
2、开发接口tokenurl
此接口提供给EAS服务端调用,接口的逻辑为根据这个token解析出usernumber,返回JSON的格式数据,如下:
{ "status":"0", --0 就是成功 "message":"lwb001" --成功的时候传递usernumber (也就是eas登录的账号),失败的时候传递失败信息 }
这个接口确保能在EAS服务器上访问即可,不要求公网访问,在网页访问测试:http://ip:port/a.action?token=XXXXXXX,看返回的数据是否正确!
3、修改EAS服务端配置文件
配置文件:{EASHOME}/eas/server/properties/XTServiceConfig.xml
修改说明:
1)、在XTServiceConfig.xml 的 config节点下增加一个OtherApp配置项;
2)、 tokenurl为接口改为正确的地址,EAS端会发起GET请求;
3)、appid跟secret可根据业务场景配置,业务场景用不到使用默认的配置即可。
配置项可从本文末尾提供的"XTServiceConfig.配置示例.xml"中对应部分截取,也可以在这份文件的基础上修改,然后替换EAS里面的。
4、重启EAS,进行测试
注意:如果EAS是多机集群,另外机子上的配置文件要同步修改!
三、集成常见问题
1、应用打开报错排查步骤:
1)、确保移动bos平台可以登录,否则需要排查EAS外网地址是否正确,是否可通过公网访问,以及服务状态是否正常!
2)、确保移动端访问移动BOS应用时加上了token参数!
3)、确保tokenurl在eas服务器上能访问,并且能通过token解析到用户信息,具体可看EAS的apusic日志的输出!
四、工作流待办消息集成(参考流程助手)
如果第三方app支持推送待办消息,客户也需求将EAS工作流的待办任务往第三方app推送,实现点开待办消息进入到流程助手应用中进行审批,可借鉴流程助手推送云之家消息实现方式开发:
注意:此集成方法只适用EAS8.5(包含)以上版本,否则咨询总部相关支持人员提供开发文档。
1、 推送审批、决策节点的待办任务消息
使用此功能需要实现一个接口ITaskHandler
接口全路径:com.kingdee.eas.base.message.app.ITaskHandler
接口类所在包名:bs_message-server.jar
实现方法:public void execute(AssignmentCreationEvent ed);
流程走到对应的任务节点,或转交、加签、重新指定执行人等,在任务产生时会调用该方法。其中参数ed包含一些任务信,具体包含的信息可通过调试查看,在该方法内实现向第三方app推送待办消息的逻辑。
如果token不是第三方app提供,那就将自己开发的接口1作为待办消息的链接,待办消息的链接,最终访问到移动BOS的待办链接如下(红色字体都是需要实际修改的参数):
https://mbos.kdeascloud.com/mbos/page/loadPage?path=lczs2&storeEid=21231&name=approveui.navui&eid=K172K145K106K1&assignId=03d8ddbd-c1b1-4327-93cc-10b678736953WFWKITEM&token=cb45988cms
如果当前的任务节点绑定有绑定移动BOS开发的界面,需要去查询数据库表的绑定情况,sql如下,查询参数请调试获取。
SELECT url FROM T_WFR_MBOS_WORKFLOW WHERE actDefId in (?) and procdefid in (?)
将查询到的URL做一下replace
url.replace("page/loadPage", "mbosw/getWorkflowUrl");
最终访问到移动BOS的待办链接如下,链接中的billID需要做一下URLEncod,
https://mbos.kdeascloud.com/mbos/mbosw/getWorkflowUrl?eid=K172K145K106K1&path=mcpbc/bizAccount&name=bizAccountEdit.editui&assignId=03d8ddbd-c1b1-4327-93cc-10b678736953WFWKITEM&billID=bnwt202103vj&token=cb45988cms
消息链接的处理逻辑可反编译查看流程助手的相关实现:
实现类:com.kingdee.bos.workflow.lightapp.message.WFMessageAdapter
方法:getContent
所在包名:bs_message-server.jar
修改配置:{EASHOME}/eas/server/profiles/serverN/config/handlersconfig.properties
将流程助手处理类更换为自己开发的处理类,每个server下的配置都要修改,
如果EAS是多机集群,配置文件需要同步修改
2、 推送通知消息
使用此功能需要实现一个接口MessageListener
接口全路径:com.kingdee.bos.service.message.MessageListener
接口类所在包名:message.jar
实现方法:public abstract int onMessage(Message paramMessage);
这个方法在消息中心获得新的消息的时候会主动调用,如消息节点消息、预警消息、传阅消息、催办消息、最后期限消息等等,其中参数message包含消息,具体包含的信息可通过调试查看,在该方法内实现向第三方app推送消息的逻辑,消息推送成功返回1即可。
最终访问到移动BOS的消息链接如下,可打开消息对应的单据界面(红色字体都是需要实际修改的参数):
https://mbos.kdeascloud.com/mbos/page/loadPage?path=lczs2&viewtype=message&type=message&eid=K172K145K106K1&fpersonuserid=dfvgs3380n&fprocinstid=sa859209dfjk890inst&token=cb45988cms
如果当前的节点绑定有绑定移动BOS开发的界面,同样需要查询绑定表T_WFR_MBOS_WORKFLOW,最终访问到移动BOS的待办链接如下:
https://mbos.kdeascloud.com/mbos/page/loadPage?eid=K172K145K106K1&path=mcpbc/bizAccount&name=bizAccountEdit.editui&billID=bnwt202103vj&storeEid=21231&name=approveui.navui&viewtype=message&type=message&fpersonuserid=dfvgs3380n&fprocinstid=sa859209dfjk890inst&token=cb45988cms
消息链接的处理逻辑可反编译查看流程助手的相关实现:
实现类:com.kingdee.bos.workflow.lightapp.message.WFMessageAdapter
方法:getContent
所在包名:bs_message-server.jar
修改配置:eas/server/profiles/serverN/config/bosconfig.xml
将listener3类更换为自己开发的处理类,每个server下的配置都要修改,其他不相干配置不要乱改,避免出现问题,请做好备份工作
如果EAS是多机集群,配置文件需要同步修改
3 、清理第三方app待办任务
使用此功能需要继承一个抽象类:AbstractAssignmentEventHandler
类全路径:com.kingdee.bos.workflow.enactment.handler.AbstractAssignmentEventHandler
类所在包名:workflowcommon.jar
实现方法:public abstract void execute(AssignmentEvent assignmentEvent, IWfAssignment assignment);
这个方法在任务完成或取消后调用,如审批、跳转、转交、挂起、重新指定执行人等操作,在此方法内实现清理已推送第三方app待办任务消息的逻辑。
修改配置:eas/server/properties/wf_events.xml
将com.kingdee.bos.workflow.handler.AssignmentHandler换成自己的实现类
如果EAS是多机集群,配置文件需要同步修改
结语:
第三方app集成移动bos应用并不复杂,对于遇到的问题现场应该多调试测试,多多思考。
第三方app集成移动BOS应用
本文2024-09-22 20:35:07发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-114580.html