当标志数据项为空时,IsFlag() 不返回 False
IsFlag() not returning False when Flag Data Item is empty
在 Blue Prism v5 中,有一个函数 IsFlag() 可用于评估数据项是否为 Flag 类型。通常情况下,例如一个数字,如果数据项为空,函数 IsNumber() 将 return False。
在我的例子中(标志数据项),函数 IsFlag() 在决策阶段执行此表达式时不会 return False。
谁能解释一下原因并给出可能的解决方案?
我已经从别人那里得到的解决方案:
- 评估 Flag 是否设置为 True
- 将决策阶段置于块中
- 在实际评估要评估的条件之前,添加 Recover/Resume 阶段并将值设置为 False(作为 'default' 值)。
IsFlag() 的工作方式与您想象的不同 - 它不根据变量的类型来评估变量,而是根据您传递给它的字符串来评估。
如果您为它提供 "Notflag" 的文本变量,那么它不是 "true" 或 "false",那么函数 returns "false" .
如果您为函数提供标志为 True 的函数,则首先将其更改为文本 "True",然后对其求值,它实际上是标志。
最后,如果您为这个函数提供一个空标志,那么它首先被更改为空字符串“”,这当然不是一个标志。空号码、日期等也是如此。
我认为你的解决方案很棒。您也可以尝试使用以下代码,这样您的工作室中的盒子就会更少。
Trim([Flag])=""
或
[Flag] = True OR
[Flag] = False OR
Trim([Flag])=""
在 Blue Prism v5 中,有一个函数 IsFlag() 可用于评估数据项是否为 Flag 类型。通常情况下,例如一个数字,如果数据项为空,函数 IsNumber() 将 return False。
在我的例子中(标志数据项),函数 IsFlag() 在决策阶段执行此表达式时不会 return False。
谁能解释一下原因并给出可能的解决方案?
我已经从别人那里得到的解决方案: - 评估 Flag 是否设置为 True - 将决策阶段置于块中 - 在实际评估要评估的条件之前,添加 Recover/Resume 阶段并将值设置为 False(作为 'default' 值)。
IsFlag() 的工作方式与您想象的不同 - 它不根据变量的类型来评估变量,而是根据您传递给它的字符串来评估。
如果您为它提供 "Notflag" 的文本变量,那么它不是 "true" 或 "false",那么函数 returns "false" .
如果您为函数提供标志为 True 的函数,则首先将其更改为文本 "True",然后对其求值,它实际上是标志。
最后,如果您为这个函数提供一个空标志,那么它首先被更改为空字符串“”,这当然不是一个标志。空号码、日期等也是如此。
我认为你的解决方案很棒。您也可以尝试使用以下代码,这样您的工作室中的盒子就会更少。
Trim([Flag])=""
或
[Flag] = True OR
[Flag] = False OR
Trim([Flag])=""