苍穹页面触发 | 在门户应用页签打开第三方带会话信息页面
# 关键词:页面集成、单点登录、页面跳转、门户应用页签层
# 一、需求
在许多业务场景中,由于客户已有系统在长期稳定使用,或功能页面在苍穹上重构代价巨大等因素,需要将现有系统中的功能页面集成到苍穹中以供业务平滑使用,故涉及到一个非常常见的业务场景:苍穹与第三方系统进行页面集成。用户登录苍穹之后,**在页面上点击顶部工具栏菜单按钮/超链接控件/页签控件**后,系统自动**单点登录**第三方系统并在苍穹**门户应用页签层**打开第三方系统的指定页面,然后用户可自由进行业务操作。
# 二、实现思路与方案
在该案例中,主要存在 3 个需求开发点:1、响应控件的操作;2、从苍穹端单点登录第三方系统;3、在苍穹门户应用页签层打开第三方系统页面。
关于第1、第2点,业务逻辑与 [苍穹页面触发 | 在新浏览器窗口打开第三方带会话信息页面](https://vip.kingdee.com/article/520248627902647808?productLineId=29&isKnowledge=1) 一致,我们直接沿用代码即可。
针对第 3 点,我们可参考 [苍穹应用菜单触发 | 在门户应用页签打开第三方带会话信息页面](https://vip.kingdee.com/article/520244211216649728?productLineId=29&isKnowledge=1) 的实现思路。由于所有应用固定是在门户应用页签层打开的,故我们可另外新建一个应用,并将第三方系统页面通过IFrame控件嵌入该应用的首页界面中,然后利用平台接口去打开该应用从而本案例。
# 三、实现过程
## 3.1 准备工作
苍穹系统:http://172.20.14.30:8080/ierp
第三方系统:本案例以另一套苍穹环境进行模拟,其访问地址:http://172.20.240.133:8080/ierp
统一身份认证服务系统:https://api.kingdee.com
## 3.2 注册应用
与 [苍穹页面触发 | 在新浏览器窗口打开第三方带会话信息页面](https://vip.kingdee.com/article/520248627902647808?productLineId=29&isKnowledge=1) $3.2 节一致,请自行查阅原文内容。
## 3.3 在苍穹系统中开发单点登录金蝶云平台插件(CldPlatformSSOPlugin)
与 [苍穹页面触发 | 在新浏览器窗口打开第三方带会话信息页面](https://vip.kingdee.com/article/520248627902647808?productLineId=29&isKnowledge=1) $3.3 节一致,请自行查阅原文内容。
## 3.4 响应页面上控件的点击事件(CustomBizBillPlugin)
为简化案例,业务单据界面仅预置与案例相关的控件,其设计器界面如下图所示,代码实现与 [苍穹页面触发 | 在新浏览器窗口打开第三方带会话信息页面](https://vip.kingdee.com/article/520248627902647808?productLineId=29&isKnowledge=1) $3.4.1节一致,请自行查阅原文内容。
![单据设计器.webp](/download/01008e30f624e5e747e38f33ac3ae2b71109.webp)
## 3.5 在门户应用页签层打开第三方系统页面(CustomBizBillPlugin)
*备注:
建议通过平台接口 OpenPageUtils.openApp 在门户应用页签层、或应用主界面页签层打开第三方系统页面。若通过 getView().showForm(FormShowParameter) 则会存在重复打开应用页签等问题。*
CustomBizBillPlugin.java
```language
/**
* 跳转第三方系统页面
*/
private void openTrdSysPage() {
// 在门户应用页签层打开第三方系统应用
OpenTrdPageUtils.openTrdSysPageWithNewTabPage(getView(), "kdec_tstapp3", "第三方系统应用");
}
```
OpenTrdPageUtils.java
```language
/**
* (通过调用平台接口)在门户应用层页签打开第三方系统页面
* 注意:
* @param view
* @param appNum
* @param caption
*/
public static void openTrdSysPageWithNewTabPage(IFormView view, String appNum, String caption) {
OpenPageUtils.openApp(appNum, null, null, view, caption);
}
```
## 3.6 通过新应用【测试应用3/kdec_tstapp3】的应用首页打开第三方系统页面(TrdSysPageFormPlugin)
*备注:
该步实现思路与 [苍穹应用菜单触发 | 在门户应用页签打开第三方带会话信息页面](https://vip.kingdee.com/article/520244211216649728?productLineId=29&isKnowledge=1) $3.7节一致。*
### 1.新建空白应用【测试应用3/kdec_tstapp3】,在其应用首页上预置 IFrame 控件,并不显示其它所有控件,其设计器界面如图所示
*备注:
页面不需要显示的控件,有 2 种处理方案:
① 将其业务属性"可见性"中的"初始可见"去掉;
② 开启业务属性"隐藏元素"。
此处采用第 ① 种方案,将图中控件Flex面板"可见性"中的"初始可见"移除。*
![测试应用3首页-new.webp](/download/0100028102dd0c2a4dc9a0176aa556576292.webp)
### 2.在应用首页中注册表单插件(TrdSysPageFormPlugin),为上一步中IFrame控件绑定第三方系统页面URL
```language
@Override
public void afterBindData(EventObject evt) {
String trdSysTargetUrl = null;
try {
trdSysTargetUrl = OpenTrdPageUtils.getTrdSysTargetUrl(false);
} catch (Exception e) {
this.getView().showMessage(e.getMessage());
}
// 为IFrame控件设置URL
IFrame iFrame = this.getView().getControl(KEY_IFRAME_TRDSYSPAGE);
if (StringUtils.isNotEmpty(trdSysTargetUrl)) {
iFrame.setSrc(trdSysTargetUrl);
}
super.afterBindData(evt);
}
```
## 3.7(单点登录第三方系统并)返回待打开页面的URL(OpenTrdPageUtils)
与 [苍穹页面触发 | 在新浏览器窗口打开第三方带会话信息页面](https://vip.kingdee.com/article/520248627902647808?productLineId=29&isKnowledge=1) $3.5 节一致,请自行查阅原文内容。
## 3.8 在第三方系统中开发单点登录金蝶云平台插件(CloudPlatformSSOAuth)
与 [苍穹页面触发 | 在新浏览器窗口打开第三方带会话信息页面](https://vip.kingdee.com/article/520248627902647808?productLineId=29&isKnowledge=1) $3.6 节一致,请自行查阅原文内容。
# 四、效果图
## 4.1 登录苍穹系统
![苍穹登录.webp](/download/01008f6fdeb47d864cb4bc38c768664affc5.webp)
![云平台登录页-1.webp](/download/0100c0bd1b6ec17b476fa4b548e676c5f4e4.webp)
## 4.2 页面控件点击
### 1.旧版门户
![苍穹页面-旧版.webp](/download/0100dfb098b72e8940ababe56d6a77ef6d4f.webp)
### 2.新版门户
![苍穹页面-新版.webp](/download/01004e695138cf584b1f863381f164960400.webp)
## 4.3 效果图
### 1.旧版门户
![效果图-旧版.webp](/download/01004a0fabdb254f46539b712a242cc00dbe.webp)
### 2.新版门户
![效果图-新版.webp](/download/0100a95c75bba12d40ba84d5464f9c4af991.webp)
# 五、开发环境版本
不限
# 六、注意事项
- 本案例因涉及两台服务,开发过程中存在**跨域问题,可通过以火狐浏览器访问避免**,生产环境请自行处理。
- 建议通过平台接口 OpenPageUtils.openApp 在门户应用页签层、或应用主界面页签层打开第三方系统页面。若通过 getView().showForm(FormShowParameter) 则会存在重复打开应用页签等问题。
- 案例中有关应用参数开发的内容请查阅参考资料自行学习。
- 如需复现本案例效果,必须先在金蝶云平台注册应用并修改案例代码中的相关参数,详见 $3.2 节内容。
- 文章中代码展示不全,**附件中包含案例所有页面元数据、Java源码**,如有需要,请自行下载。
# 七、参考资料
[开发平台](https://vip.kingdee.com/knowledge/specialDetail/218022218066869248?productLineId=29)
[学习成长中心](https://developer.kingdee.com/school?productLineId=29)
[登录认证专题](https://vip.kingdee.com/knowledge/specialDetail/228892721203874816?productLineId=29)
[苍穹产品目录](https://developer.kingdee.com/knowledge?productLineId=29#tabMain) —— 系统服务云 —— 系统管理 —— 登录认证
[单点登录集成(视频)](https://developer.kingdee.com/school/detail/243812482044022016?productLineId=29)
[使用SSO时启用账密登录功能介绍](https://developer.kingdee.com/article/329216123843848960?productLineId=29&isKnowledge=2)
[金蝶云平台oauth2流程说明](https://cloud.kingdee.com/help/document/detail?item=448&doc=3023)
[第三方SSO登录接口开发](https://dev.kingdee.com/docs/91158357-8127-426b-917a-bd4fe4702245)
[【统一身份认证】第三方集成单点登录](https://developer.kingdee.com/article/359709414254707456?share_fromuid=&productLineId=29&islogin=true)
[单点登录插件,访问指定的数据中心,金蝶云单点登录](https://developer.kingdee.com/article/215788160662549248?productLineId=29)
[参数设计](https://developer.kingdee.com/school/detail/239057950495561472?topicId=239384541469947648&stageId=239384770730604288&pathId=239410657773565696&productLineId=29)
苍穹页面触发 | 在门户应用页签打开第三方带会话信息页面
# 关键词:页面集成、单点登录、页面跳转、门户应用页签层# 一、需求在许多业务场景中,由于客户已有系统在长期稳定使用,或功能页面在苍...
点击下载文档
本文2024-09-23 01:15:08发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144756.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章