Flowable 动态解析表达式

项目地址:https://gitee.com/lwj/flowable.git 分支flowable-base
视频地址:https://www.bilibili.com/video/av79774697/
** 在实际环境中,由于我们需要动态解析一些表达式来预先判断流程的流向来满足用户的需求 **
如图:
在这里插入图片描述

这个是预览流程图走向需要使用到的知识点

Flowable 动态解析表达式

    • 1、 获取参数
    • 2、 获取表达式得到值

1、 获取参数

Map params = new HashMap
这个参数一般是流程发起的时候需要的

2、 获取表达式得到值

/*** 原生的解析表达式** @param params 变量的值* @param exp    表达式* @param clazz  映射出来的值* @return*/public <T> T getValue(Map<String, Object> params, String exp, Class<T> clazz) {ExpressionFactory factory = new ExpressionFactoryImpl();SimpleContext context = new SimpleContext();if (MapUtils.isNotEmpty(params)){params.forEach((k, v) -> {if (v instanceof ObjectNode){JSONObject jsonObject = JSONObject.parseObject(v.toString());Map<String, Object> vs = new HashMap<>();for (String objkey : jsonObject.keySet()) {vs.put(objkey, jsonObject.get(objkey));}context.setVariable(k, factory.createValueExpression(vs, Map.class));} else {context.setVariable(k, factory.createValueExpression(v, Object.class));}});}Object returnObj = null;try {ValueExpression e = factory.createValueExpression(context, exp, clazz);returnObj = e.getValue(context);} catch (PropertyNotFoundException e) {logger.error("流程变量的属性找不到,请确认!", e);throw new FlowException("流程变量的属性找不到,请确认!", e);}return typeConverter.convert(returnObj, clazz);}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部