如何在流的条件下实现更复杂的表达式?简单的条件如:
${i > 0}
非常方便,但有时我需要做一些更复杂的事情,如:
${deadLine.after(now)}
假设deadLine
是已在流程实例中定义的Date
类型的对象,now
表示new Date()
。如何在流的条件下实现这样的表达式?在Java中我可以:
ExpressionFactory factory = new ExpressionFactoryImpl();
SimpleContext context = new SimpleContext(new SimpleResolver());
factory.createValueExpression(context, "${deadLine}", java.util.Date.class).setValue(context, new java.util.Date());
factory.createValueExpression(context, "${now}", java.util.Date.class).setValue(context, new java.util.Date());
ValueExpression expr1 = factory.createValueExpression(context, "${deadLine.after(now)}", boolean.class);
System.out.println("Result = " + expr1.getValue(context));
但是如何才能在流量条件下做同样的事情?
答案 0 :(得分:2)
假设您有一个名为deadLine
的流程变量java.util.Date
对象,您可以写:
${deadLine.after(now())}
这是有效的,因为Camunda在表达式上下文[1]中提供了一个函数now
。
评估复杂决策逻辑还有其他几种方法,例如: