cancel
Showing results for 
Search instead for 
Did you mean: 

condition expression returns non-Boolean: true (java.lang.St

dashamo010
Champ in-the-making
Champ in-the-making
when i invoke code " formService.submitTaskFormData(taskId, formProperties);  "   the console complain the following error
严重: Error while closing command context
org.activiti.engine.ActivitiException: condition expression returns non-Boolean: true (java.lang.String)
at org.activiti.engine.impl.el.UelExpressionCondition.evaluate(UelExpressionCondition.java:43)
at org.activiti.engine.impl.bpmn.behavior.ExclusiveGatewayActivityBehavior.leave(ExclusiveGatewayActivityBehavior.java:63)
at org.activiti.engine.impl.bpmn.behavior.FlowNodeActivityBehavior.execute(FlowNodeActivityBehavior.java:36)
at org.activiti.engine.impl.pvm.runtime.AtomicOperationActivityExecute.execute(AtomicOperationActivityExecute.java:44)
at org.activiti.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:76)
at org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:497)

quesion description details :

i complete my assignee-userTask with method formService.submitTaskFormData(String taskId, Map<String, String> properties);
all the values in the properties are actually type of String,this is also restricted by api.

in my process the next node come after userTask node which create assignee-userTask i have handled just now is exclusiveGateway

two sequenceFlow with come from it,the conditionExpressions on the the two sequenceFlow  are   each as ${vacationApproved} and ${!vacationApproved}

the relevant flow section is like this :
<exclusiveGateway id="requestApprovedDecision" name="Request approved?" />
   
    <sequenceFlow id="flow3" sourceRef="requestApprovedDecision" targetRef="sendApprovalMail">
      <conditionExpression xsi:type="tFormalExpression">${vacationApproved}</conditionExpression>
    </sequenceFlow>
   
    <task id="sendApprovalMail" name="Send confirmation e-mail" />
   
    <sequenceFlow id="flow4" sourceRef="sendApprovalMail" targetRef="theEnd1" />
   
    <endEvent id="theEnd1" />
   
    <sequenceFlow id="flow5" sourceRef="requestApprovedDecision" targetRef="adjustVacationRequestTask">
      <conditionExpression xsi:type="tFormalExpression">${!vacationApproved}</conditionExpression>
    </sequenceFlow>
   
the flow variable ${vacationApproved} is one value of formProperties(Map)  which i have submitted to the corresponding userTask ,its type i passed is actually

String,but in the activiti engine its type is required Boolean, the activiti engine cannot transform variable vacationApproved from String
to Boolean automaticly,so the error appeared .

who can help me?
3 REPLIES 3

mathiasd
Champ in-the-making
Champ in-the-making
Hi,

Did you try ${vacationApproved.equals("true")} ?

dashamo010
Champ in-the-making
Champ in-the-making
Hi,

Did you try ${vacationApproved.equals("true")} ?


thanks mathiasD very much.you resolved my problem.

frederikherema1
Star Contributor
Star Contributor
To have type form-properties, you can define them as such (http://activiti.org/userguide/index.html#formProperties😞


<userTask id="task">
  <extensionElements>
    <activiti:formProperty id="vacationApproved" type="boolean"/>
  </extensionElements>
</userTask>