使用带接收消息形状的筛选器
筛选器表达式是可应用于业务流程接收形状的可选参数,它将“激活”属性的值指定为 True。 如果指定了某一筛选器表达式,则只有当传入消息与该筛选器表达式中指定的条件匹配时,才会激活业务流程。 如果没有指定任何筛选器表达式,则业务流程订阅的任何传入消息都将激活该业务流程。
若要创建某一筛选器表达式,可以将表达式左侧的传入消息的属性与该表达式右侧的常量进行比较。 您还可以通过将 AND 和 OR 运算符应用于两个或多个表达式,创建复合表达式。 还可以将筛选器表达式保留为空,在此情况下,将会接受所有消息。
筛选器表达式可能如下:
InvoiceSchema.Quantity >= 1000
在此示例中,将一个传入消息提供给业务流程。 业务流程具有激活 接收 形状, (Activation 属性设置为 True ,以便收到特定消息将导致业务流程运行) 并应用了前面的筛选器表达式。 传入消息应在命名空间 InvoiceSchema 中具有名为 Quantity 的属性。 该业务流程只接受 1000 或更多项的发票,因此,运行时引擎将在该业务流程运行前检查传入的消息。
下表显示您可以在筛选器表达式中使用的运算符。
运算符 | 说明 | 示例 |
---|---|---|
== | 等于 | ReqMsg(Total) == 100 |
!= | 不等于 | ReqMsg(Total) != 100 |
< | 小于 | ReqMsg (total) < 100 |
> | 大于 | ReqMsg (total) > 100 |
<= | 小于等于 | ReqMsg (总) <= 100 |
>= | 大于等于 | ReqMsg (总) >= 100 |
exists | exists | ReqMsg(Description) exists |
注意
筛选器表达式中的字符串值用引号引起来,例如:ReqMsg (Description) = “采购订单状态”。 不能在筛选器表达式中使用字符值。
注意
如果您的激活接收与某一直接绑定端口相关联,并且随后发送与在您的筛选器中测试的属性具有相同值的相同类型的消息,将会造成无限循环。 消息将发送到 MessageBox,在那里将会再次挑选它,因为该消息与筛选器条件匹配。 为了避免这一问题,您应该或者筛选不同属性,发送不同类型的消息,或者确保在发送出同一类型的消息前更改该属性的值。