一、为什么我的EL在测试和线上环境结果不同

一. 问题描述

某日在EDI值班时, 某研发前来询问一种令他困惑的现象, 在RCP环境和线上环境, 相同el表达式的计算结果不一致. el表达式类似${map.prop eq 'anyway'}, 其从一个map中获取指定属性值与某字符判等. 当map中存在prop属性时, 两个环境结果一致, 但当map中不存在该prop时, 两个环境则结果不一致. 线上环境不符合期望.

二. 尝试路径

  1. 通过RCP里的EL表达式测试工具测试类似场景, 结果符合预期.
  2. 把该流程发布到测试环境, 测试后发现与RCP表现一致.
  3. 初始认定故障原因是其编排的流程有误, EL表达式类库错误暂忽略. 开始着手review其流程, 无果.
  4. 增加日志信息, 打印出el表达式执行的语句和结果. 发现问题是线上执行的是另一个流程, 原因是测试环境和线上环境的配置不一致, 导致通过配置的内容来匹配流程, 导致结果不一致.

三. 反思

  1. 最早的尝试路径没有基于足够的上下文信息, 导致做了很多无用功.
  2. 有些问题无从下手的时候, 先丰富下上下文信息, 然后再行动.

你可能感兴趣的:(一、为什么我的EL在测试和线上环境结果不同)