package org.springblade.resource.rule.builder;
|
|
import org.springblade.core.literule.annotation.RuleEngineComponent;
|
import org.springblade.core.literule.builder.LiteRule;
|
import org.springblade.core.literule.builder.RuleBuilder;
|
import org.springblade.core.literule.builder.chain.RuleChain;
|
|
import static org.springblade.resource.rule.constant.OssRuleConstant.*;
|
|
/**
|
* Oss规则链构建器
|
*
|
* @author BladeX
|
*/
|
@RuleEngineComponent(id = OSS_CHAIN_ID)
|
public class OssRuleBuilder implements RuleBuilder {
|
@Override
|
public RuleChain build() {
|
// 创建OSS缓存判断规则链
|
RuleChain ossCacheRuleChain = LiteRule.SWITCH(OSS_CACHE_RULE).TO(
|
OSS_READ_RULE,
|
LiteRule.THEN(OSS_DATA_RULE)
|
.THEN(
|
LiteRule.SWITCH(OSS_BUILD_RULE).TO(
|
ALI_OSS_RULE,
|
AMAZON_S3_RULE,
|
HUAWEI_OBS_RULE,
|
MINIO_RULE,
|
QINIU_OSS_RULE,
|
TENCENT_COS_RULE,
|
LOCAL_FILE_RULE
|
).build()
|
)
|
.THEN(OSS_TEMPLATE_RULE)
|
.ID(OSS_NEW_RULE)// 设置规则链ID方可在Switch节点进行调用
|
.build()
|
).build();
|
|
// 创建完整规则链
|
return LiteRule.THEN(PRE_OSS_RULE)
|
.THEN(ossCacheRuleChain)
|
.THEN(FINALLY_OSS_RULE)
|
.build();
|
}
|
}
|