筛选器表达式是一个可选参数,可以应用于工作流编排接收形状,指定 Activate 属性值为 True。 如果指定了筛选器表达式,则仅当传入消息与筛选器表达式中指定的条件匹配时,才会激活业务流程。 如果未指定筛选器表达式,那么编排订阅的任何传入消息都将激活编排。
若要创建筛选器表达式,请将表达式左侧传入消息的属性与表达式右侧的常量进行比较。 还可以通过将 AND 和 OR 运算符应用于两个或多个表达式来创建复合表达式。 还可以将筛选器表达式留空,在这种情况下,将接受所有消息。
筛选器表达式可能如下所示:
InvoiceSchema.Quantity >= 1000
在此示例中,向业务流程显示传入消息。 编排具有一个激活 接收 形状(激活 属性设置为 True,以便收到特定消息将导致编排运行),并在其上应用了上述筛选器表达式。 传入消息应具有命名空间 InvoiceSchema 中名为 Quantity 的属性。 业务流程仅接受 1000 个或更多项的发票,因此运行时引擎在运行之前会检查传入消息。
下表显示了可在筛选器表达式中使用的运算符。
| 操作员 | DESCRIPTION | 示例: |
|---|---|---|
| == | 等于 | ReqMsg(Total) == 100 |
| != | 不等于 | ReqMsg(总计) != 100 |
| < | 小于 | ReqMsg(总计) < 100 |
| > | 大于 | ReqMsg(总计) > 100 |
| <= | 小于等于 | ReqMsg(Total) <= 100 |
| >= | 大于等于 | ReqMsg(Total) >= 100 |
| 存在 | 存在 | ReqMsg(说明) 存在 |
注释
筛选器表达式中的字符串值用引号括起来,例如:ReqMsg(Description) = “采购订单状态”。 不能在筛选器表达式中使用字符值。
注释
如果你的激活接收功能与直接绑定端口相关联,并且随后发送一条与筛选器中测试的属性值相同且类型一致的消息,你将创建一个无限循环。 该邮件将转到 MessageBox,它将再次被选取,因为它与筛选条件匹配。 若要避免这种情况,应筛选不同的属性、发送不同类型的消息,或确保在发送相同类型的消息之前更改属性的值。