[audit] P6.2 F9 embed/url 支持 mode=task 直跳任务办理页(taskId 必填,无 token CAS 页;front-url fail-fast 纪律不变)
This commit is contained in:
@@ -518,10 +518,34 @@ public class OapiFlowService {
|
||||
* 接收人;签发侧必须与之一致,否则"抄送我的"点开得、进度嵌入页换址却拒发(2026-10-17 记)。
|
||||
*/
|
||||
public OapiModels.EmbedUrlVo embedUrl(Long schId, Long instanceId, String bizType, String bizId, String mode) {
|
||||
return embedUrl(schId, instanceId, bizType, bizId, mode, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* mode=task(F9)直跳中心任务办理页:pageUrl = front-url + {@code #/task/{taskId}},
|
||||
* 无 token(CAS 会话鉴权页,办理权由该页加载时的用户面接口按 assigneeId 复核)——
|
||||
* 子应用"在自家页放办理入口"场景用;taskId 必填,缺则 PARAM_ERROR。
|
||||
*/
|
||||
public OapiModels.EmbedUrlVo embedUrl(Long schId, Long instanceId, String bizType, String bizId,
|
||||
String mode, Long taskId) {
|
||||
// 配置缺失优先于办件定位:fail-fast 纪律要的是"无论如何都不发打不开的地址"
|
||||
if (embedFrontUrl == null || embedFrontUrl.trim().isEmpty()) {
|
||||
throw new BizException(ErrorCode.INTERNAL_SERVER_ERROR, "嵌入页地址未配置:flow-center.embed.front-url");
|
||||
}
|
||||
String base = embedFrontUrl.trim();
|
||||
if (!base.endsWith("/")) {
|
||||
base = base + "/";
|
||||
}
|
||||
String normMode = mode == null || mode.trim().isEmpty() ? "auto" : mode.trim();
|
||||
if ("task".equals(normMode)) {
|
||||
if (taskId == null) {
|
||||
throw new BizException(ErrorCode.PARAM_ERROR, "mode=task 需要 taskId(任务办理页定位)");
|
||||
}
|
||||
OapiModels.EmbedUrlVo out = new OapiModels.EmbedUrlVo();
|
||||
out.setPageUrl(base + "#/task/" + taskId);
|
||||
out.setExpiresIn(0);
|
||||
return out;
|
||||
}
|
||||
Long resolvedInstanceId;
|
||||
if (instanceId != null) {
|
||||
resolvedInstanceId = requireInstance(schId, instanceId).getId();
|
||||
@@ -536,12 +560,7 @@ public class OapiFlowService {
|
||||
resolvedInstanceId = vo.getInstanceId();
|
||||
}
|
||||
// mode 与 DiagramTokenService 内部缺省同值("auto"),URL 里显式带上仅为前端展示冗余
|
||||
String normMode = mode == null || mode.trim().isEmpty() ? "auto" : mode.trim();
|
||||
String token = tokenService.issue(schId, resolvedInstanceId, null, normMode);
|
||||
String base = embedFrontUrl.trim();
|
||||
if (!base.endsWith("/")) {
|
||||
base = base + "/";
|
||||
}
|
||||
OapiModels.EmbedUrlVo out = new OapiModels.EmbedUrlVo();
|
||||
out.setPageUrl(base + "#/embed/instance?token=" + token + "&mode=" + normMode);
|
||||
out.setExpiresIn(DiagramTokenService.TTL_MS / 1000);
|
||||
|
||||
Reference in New Issue
Block a user