package jnpf.bizcommon.onlyoffice.service.impl; import jnpf.bizcommon.onlyoffice.entity.OnlyOfficeConfigParam; import jnpf.bizcommon.onlyoffice.entity.OnlyOfficeSessionEntity; public interface OnlyOfficeSceneConfigBuilder { String scene(); String bizModule(); OnlyOfficeSceneBuildPlan build(OnlyOfficeSceneBuildContext context); default boolean guardsBusinessContext() { return true; } default boolean matchesSession(OnlyOfficeSessionEntity session, OnlyOfficeConfigParam param, String tenantId) { return java.util.Objects.equals(tenantId, session.getTenantId()) && java.util.Objects.equals(bizModule(), session.getBizModule()) && java.util.Objects.equals(bizModule(), param.getBizModule()) && java.util.Objects.equals(session.getBizDataId(), param.getBizDataId()) && java.util.Objects.equals(session.getFileId(), param.getFileId()) && java.util.Objects.equals(session.getFileType(), param.getFileType()); } /** * 允许场景接管未绑定业务上下文的空闲旧会话。 * 已绑定会话始终必须通过 {@link #matchesSession(OnlyOfficeSessionEntity, OnlyOfficeConfigParam, String)}。 */ default boolean canAdoptUnboundSession(OnlyOfficeSessionEntity session, OnlyOfficeConfigParam param, String tenantId) { return false; } default boolean acceptsFencedStatus(Integer status) { return false; } }