chengf
2026-01-30 b8bf2507bc7b23c90bc6dc71ea2460e277d3800a
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
package com.java110.utils.util;
 
import java.util.Map;
 
public class FlowUtil {
 
    /**
     * el表达式判断
     *
     * @param expression
     * @param vars
     * @return
     */
    public static boolean isCondition(String expression, Map<String, Object> vars) {
        if (expression == null || expression == "") {
            return false;
        }
 
        //分割表达式
        String[] exprArr = expression.split("[{}$&]");
        for (String expr : exprArr) {
            //是否包含键message
            if (expr.contains("flag")) {
                if (!vars.containsKey("flag")) {
                    continue;
                }
                if (expr.contains("==")) {
                    String[] primes = expr.split("==");
                    String valExpr = primes[1].trim();
                    if (valExpr.startsWith("'")) {
                        valExpr = valExpr.substring(1);
                    }
                    if (valExpr.endsWith("'")) {
                        valExpr = valExpr.substring(0, valExpr.length() - 1);
                    }
                    if (primes.length == 2 && valExpr.equals(vars.get("flag"))) {
                        return true;
                    }
                }
            }
        }
        return false;
    }
}