[jboss-user] [JBoss jBPM] - Decision expressions.

ramsub do-not-reply at jboss.com
Thu Sep 27 04:56:13 EDT 2007


Hi, 
I'm using jbpm 3.1.3,
I have a context variable that is a list, and I need to have a decision condition that evaluates by calling the contains() method on this list.

I'm trying :
<decision name="decision1"  expression='#{MYLIST.contains("A") ? "a" : "b"}' >

However, this does not seem to work and throws an exception saying :
Caused by: org.jbpm.JbpmException: couldn't evaluate expression '#{MYLIST.contains("A") ? "a" : "b"}'
        at org.jbpm.jpdl.el.impl.JbpmExpressionEvaluator.evaluate(JbpmExpressionEvaluator.java:38)
        at org.jbpm.graph.node.Decision.execute(Decision.java:108)
        ... 57 more
Caused by: org.jbpm.jpdl.el.ELException: Encountered "(", expected one of ["}", ".", ">", "gt", "<", "lt", "==", "eq", "<=", "le", ">=", "ge", "!=", "ne", "[", "+", "-", "*", "/", "div", "%", "mod", "and", "&&", "or", "||", "?"]


Has anyone done this before ? Can the contains method be called inside an expression ? If not, are there any ways out ( i do not want to write a decision handler)

Also, can i use a script inside a decision handler to take a decision, and how can i do that ?
That is, can I say :


  | <script>
  | <variable name='MYLIST' access='read' />
  | <expression>
  | 	if(MYLIST.contains("A")) {
  |  executionContext.leaveNode("a"); } else
  |                 if(MYLIST.contains("B")) {
  | 	executionContext.leaveNode("b"); } else {
  | 	executionContext.leaveNode("Other"); }
  | 	</expression>
  | </script>
  | 
inside a decision handler ? even this does not seem to work for me

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4089201#4089201

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4089201



More information about the jboss-user mailing list