有人用SpEL写过流程引擎吗?自己实现了一个:将要用到的对象以及Service类作为variables变量添加到StandardEvaluationContext中,然后动态构建表达式字符串修改对象或者调用Service中的方法来实现流程引擎的功能。但是网络上好像并没有找到这样的实现,于是好奇一问。
基础代码如下:
private final ExpressionParser parser = new SpelExpressionParser();
private final StandardEvaluationContext context = new StandardEvaluationContext();
@Autowired
MessageService messageService;
public void init(){
context.setVariable("currentUser", currentUser);
context.setVariable("messageService", messageService);
String action = "#messageService.sendMessage(#currentUser.getId, "hello!")"
parser.parseExpression(action).getValue(context);
}
这种用spel直接调用方法的方式是不是不太合适呢?但是功能确确实实是实现的,通过编写流程能实现消息通知、权限验证、以及类似状态机编排等操作。
使用 SpEL (Spring Expression Language) 来构建流程引擎是完全可行的,但是不推荐使用,会有一些潜在问题: