yangys
2025-07-20 d9919b8e236113a1451082943ce889a6eb1f9495
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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();
    }
}