在 Activiti 中,如何检查是否设置了变量?
In Activiti, how do I check if a variable is set?
例如,我有一个可以立即启动或延迟启动的工作流(startTime
变量)。
在 startEvent
之后,我有一个 exclusiveGateway
,我在其中检查流程是否应该继续或等到 startTime
。
<exclusiveGateway id="startGateway" default="startSequenceFlow3"/>
<sequenceFlow id="startSequenceFlow1" sourceRef="startGateway" targetRef="startTimer">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${startTime != null}]]></conditionExpression>
</sequenceFlow>
启动工作流传递变量 startTime
工作正常,但不传递 startTime
会引发异常:
Cannot resolve identifier 'startTime'
检查 startTime
是否设置的最佳方法是什么,因为 startTime != null
不起作用?我宁愿根本不传递 startTime
(不是 startTime=null
)。
我使用的代码包括变量:
variables.put("startTime", startTime);
ProcessInstance instance = runtimeService.startProcessInstanceByKey(processKey, variables);
或没有:
ProcessInstance instance = runtimeService.startProcessInstanceByKey(processKey, variables);
在这两种情况下都必须设置 startTime 变量;
variables.put("startTime", startTime);
ProcessInstance instance = runtimeService.startProcessInstanceByKey(processKey, variables);
和
variables.put("startTime", null);
ProcessInstance instance = runtimeService.startProcessInstanceByKey(processKey, variables);
然后检查网关中的变量
<exclusiveGateway id="startGateway" default="waitSequenceFlow"/>
<sequenceFlow id="startSequenceFlow" sourceRef="startGateway" targetRef="firstTask">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${empty startTime}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="waitSequenceFlow" sourceRef="startGateway" targetRef="startTimer"/>
或
使用以下表达式:
${execution.getVariable('startTime') != null}
例如,我有一个可以立即启动或延迟启动的工作流(startTime
变量)。
在 startEvent
之后,我有一个 exclusiveGateway
,我在其中检查流程是否应该继续或等到 startTime
。
<exclusiveGateway id="startGateway" default="startSequenceFlow3"/>
<sequenceFlow id="startSequenceFlow1" sourceRef="startGateway" targetRef="startTimer">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${startTime != null}]]></conditionExpression>
</sequenceFlow>
启动工作流传递变量 startTime
工作正常,但不传递 startTime
会引发异常:
Cannot resolve identifier 'startTime'
检查 startTime
是否设置的最佳方法是什么,因为 startTime != null
不起作用?我宁愿根本不传递 startTime
(不是 startTime=null
)。
我使用的代码包括变量:
variables.put("startTime", startTime);
ProcessInstance instance = runtimeService.startProcessInstanceByKey(processKey, variables);
或没有:
ProcessInstance instance = runtimeService.startProcessInstanceByKey(processKey, variables);
在这两种情况下都必须设置 startTime 变量;
variables.put("startTime", startTime);
ProcessInstance instance = runtimeService.startProcessInstanceByKey(processKey, variables);
和
variables.put("startTime", null);
ProcessInstance instance = runtimeService.startProcessInstanceByKey(processKey, variables);
然后检查网关中的变量
<exclusiveGateway id="startGateway" default="waitSequenceFlow"/>
<sequenceFlow id="startSequenceFlow" sourceRef="startGateway" targetRef="firstTask">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${empty startTime}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="waitSequenceFlow" sourceRef="startGateway" targetRef="startTimer"/>
或
使用以下表达式:
${execution.getVariable('startTime') != null}