# 一、前端常见问题排查
# 融合流程没有转发按钮?
默认的固定外框是左右布局(是专门针对cmi写的),这种固定外框是把转发按钮去掉了的。
需要检查如下几个点:
- 融合流程是否配置外框,外框上是否配置了转发按钮
- 当前节点权限是否勾选了转发按钮
- 高级设置是否配置了允许转发
- 当前环境是否安装有转发插件(这个也影响显隐控制)
# 方法重复执行,多个消息监听?
点击按钮,父页面只发送了一条信息给中间表单,第三方确回传了两个消息给父页面。
排查问题方向: 页面是否做了多个window.addEventListener('message', fn) 离开页面是否及时卸载 window.removeEventListener事件
const fn = ()=> {
// 业务方逻辑
}
// 事件监听
window.addEventListener('message', fn)
// 事件卸载,离开页面时,及时卸载事件
window.removeEventListener('message', fn)
# 融合流程按钮点击没反应?
建立起了消息监听,这种一般是第三方没有回传点击按钮的消息到外框页面。 我们可以通过接口来看按钮点击第三方有无回传消息? 如何检查:
点击按钮是否有发的消息:

检查是否有接收消息:

如果上图接收的接口没有,只有发的情况,说明是第三方未正确回传消息给外框,则需要第三方正确回传消息。
# 提交后页面未关闭?
PC端检查以下几点:
- 检查当前浏览器是否是无痕模式打开,无痕模式不支持关闭(浏览器限制)
- 如果为非无痕模式,则看下第三方回传消息体内容是否有preventClose参数,这个参数会阻止关闭页面。
- 业务方是否调用了REFRESH方法通知刷新。如果提前通知了刷新,会导致页面重新加载不会再关闭。
- 待办节点是否是同一处理人。 例如:
window.parent?.postMessage({
success: true,
submitType: 'SUNMIT',
formData: values,
messageType: 'GET_FORM_DATA',
actionInfo: {
// 阻止页面关闭
preventClose: true
}
},
* //父页面地址
);
移动端检查以下几点:
- 第三方回传消息体内容是否有preventClose参数。
- 业务方是否调用了REFRESH方法通知刷新。如果提前通知了刷新,会导致页面重新加载不会再关闭。
- 待办节点是否是同一处理人。
- 是否存在上一个页面。
window.parent?.postMessage({
messageType: 'REFRESH',
}, '*');
# 融合流程表单区域空白?
- 先检查第三方页面是否有报错
- 检查详情接口loadPageDto中pageUrl是否有值
- 如果接口没返回pageUrl检查表单权限配置是否配置url
- 如果上诉无问题,浏览器检查哈iframe元素url是否正确、iframe元素高度是否不为0,或者排查元素是否被隐藏等原因。
# 如何通过事项状态控制显隐?
# 1. 添加页面入参
在外框页面点击页面入参,增加页面入参参数。

# 2. 配置表达式
通过配置表达式的值来控制显隐,支持的事项状态值:
待发: READY
已发: SENT
待办:PENDING
已办:DONE
撤销:REVOKE

# 外框插入按钮相关问题
# 1. 插入按钮是否可以调整顺序?
场景:这个自定义按钮。如果我有一个主要按钮(蓝色),一个次要按钮(灰色)。需要放在不同的位置,而不是连在一起。这个按钮位置有办法控制嘛? 答:不支持
插入的按钮是批量插入的按钮,插入的安置目前仅支持批量按钮插入指定的位置,批量按钮中单独的按钮不能指定位置插入。
# 2. 三方的自定义按钮想在特定的节点展示,这个能控制嘛?
插入时机由第三方自己决定的, 外框不会控制第三方自定义按钮的显隐状态。第三方可通过当前节点code来自行控制在哪个节点展示(业务方根据自己需求决定)。
# 融合流程如何判断页面是否绑定外框?
- 根据url判断是否有_layoutApp、_layoutPage(2.6以后),_frameApp(2.6之前)。
- 根据bpm详情接口返回值layoutInfo
# 融合流程页面未加载完,按钮可点击问题?
我们可以通过提前以下消息代码到index.html文件head标签下第一个script标签中来解决此问题。这样达到的效果就是:中间表单未完全加载完的情况下,按钮点击是无效果的。
window.parent?.postMessage({
hasListener: true,
}, '*');
实现原理:按钮点击,利用iframe onLoad事件,外框自己做了加锁判断,未onLoad时,则按钮不可点击,当onLoad时,第三方页面如果未完全加载完,就需要利用hasListener的消息来,此时加载html第一行代码,会发送消息到外框表示需要建立监听,此时第三方表单的监听message事件因为没有加载建立,外框点击按钮发送消息过去,第三方不会处理,则能达到页面未完全加载完按钮不可点击的目的。
# 二、后端常见问题排查
快速跳转
← 接入说明 前端融合流程接入文档-待删除 →