Hi,I've encountered an issue when setting a juel conditionExpression that contains a period '.'My sequence flow looks like this: [extract from the model]
<sequenceFlow id="sid-DF4F1F47-4C84-45BE-BF9F-C297DFDC88D3" name="approved" sourceRef="sid-6C005338-CA27-4D4E-B969-BA2410284FFE" targetRef="doapproved">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${global.response == allow}]]></conditionExpression>
</sequenceFlow>
'global.response' is our own internal namespace name - it's just a variable key.The salient extract of exception stackTrace I get when the exclusiveGateway that the above sequenceFlow is connected to 'leave's is:
.
.
..lots of trace..
.
.
Caused by: org.activiti.engine.ActivitiException: Unknown property used in expression: ${global.response == allow}
.
'
..lots more irrelevant trace..
.
.
Caused by: org.activiti.engine.impl.javax.el.PropertyNotFoundException: Cannot resolve identifier 'global'
at org.activiti.engine.impl.juel.AstIdentifier.eval(AstIdentifier.java:83)
at org.activiti.engine.impl.juel.AstBinary$SimpleOperator.eval(AstBinary.java:27)
at org.activiti.engine.impl.juel.AstBinary.eval(AstBinary.java:106)
at org.activiti.engine.impl.juel.AstBinary$SimpleOperator.eval(AstBinary.java:27)
at org.activiti.engine.impl.juel.AstBinary.eval(AstBinary.java:106)
at org.activiti.engine.impl.juel.AstEval.eval(AstEval.java:50)
at org.activiti.engine.impl.juel.AstNode.getValue(AstNode.java:26)
at org.activiti.engine.impl.juel.TreeValueExpression.getValue(TreeValueExpression.java:114)
at org.activiti.engine.impl.delegate.ExpressionGetInvocation.invoke(ExpressionGetInvocation.java:33)
at org.activiti.engine.impl.delegate.DelegateInvocation.proceed(DelegateInvocation.java:37)
at org.activiti.engine.impl.delegate.DefaultDelegateInterceptor.handleInvocation(DefaultDelegateInterceptor.java:25)
at org.activiti.engine.impl.el.JuelExpression.getValue(JuelExpression.java:50)
So I had a look at this, half-expecting it to point me to some BeanELContext or similar, but the exception is in the AstBinary evaluator, for which there is no matching AstBinary$SimpleOperator that I can see in the source for a period .Some javadoc in the Activiti EL evaluators talk about coercing to an Integer or otherwise ignoring. Is there a way to evaluate a processVariable as a String value? - i.e. in sequence flows: 'if this variable is the String "approve" follow this sequence flow'..Looking at the JUEL spec, it implies that . is used for beans, but then shows examples where regular names are used that contain '.', so the spec is inconclusive in this area.Also, JUEL doesn't let you 'escape' anything except ${ and #{ (I did try this, but I got this exception:Caused by: org.activiti.engine.impl.juel.TreeBuilderException: Error parsing '${global\.response == allow}': lexical error at position 8, encountered invalid character '\', expected expression token)So..the question is, how to put a period '.' in a sequenceFlow conditionExpression without the evaluator thinking it's something other than simply a period?In fact, apart from the obvious operator types ( + - & | / etc.) is it possible to include punctuation (i.e. non-alpahnumeric and non-reserved characters)?Many thanks for any insights,+Peter