【问题标题】:BizTalk Orchestration with Envelope Schema使用信封架构的 BizTalk 编排
【发布时间】:2014-08-26 17:30:31
【问题描述】:

我有平面文件架构,在其中我将中缀根处的允许消息分解设置为 true。我还设置了 Record Max Occurrence 1。发送消息并将多条消息发送到发送端口。我在接收和发送端口中使用了接收管道(带有平面文件反汇编)和发送管道(XML 传输)。直到这一切都很好。

接收端口的输入.txt文件

1000 ABC IT 1001 DEF 维护 1002 GHI 工资单

输出是三个 .xml 文件,例如

  <?xml version="1.0" encoding="utf-8" ?> 
  <Record xmlns="http://FlatFilewithEnvelop.FlatFileSchema1">
  <Employee xmlns="">
  <ID>1000</ID> 
  <Name>ABC</Name> 
  <Dept>IT</Dept> 
  </Employee>
  </Record>


 <?xml version="1.0" encoding="utf-8" ?> 
 <Record xmlns="http://FlatFilewithEnvelop.FlatFileSchema1">
 <Employee xmlns="">
 <ID>1001</ID> 
 <Name>DEF</Name> 
 <Dept>Maintenece</Dept> 
 </Employee>
 </Record>

 <?xml version="1.0" encoding="utf-8" ?> 
 <Record xmlns="http://FlatFilewithEnvelop.FlatFileSchema1">
 <Employee xmlns="">
 <ID>1002</ID> 
 <Name>GHI</Name> 
 <Dept>Payroll</Dept> 
 </Employee>
 </Record>

现在我只想发送具有特定 ID 的消息。因此,我在使用决策形状的项目中添加了一个编排,使用表达式。否则我不想向发送端口发送任何消息。

Msg(FlatFilewithEnvelop.PropertySchema.ID) == 1000

如果我在接收端口发送相同的消息,我会在发送端口收到四条消息(如下所示)。我不知道是什么错误,谁能告诉我是什么错误。

<?xml version="1.0" encoding="utf-8" ?> 
<Record xmlns="http://FlatFilewithEnvelop.FlatFileSchema1">
<Employee xmlns="">
<ID>1000</ID> 
<Name>ABC</Name> 
<Dept>IT</Dept> 
</Employee>
</Record>

<?xml version="1.0" encoding="utf-8" ?> 
<Record xmlns="http://FlatFilewithEnvelop.FlatFileSchema1">
<Employee xmlns="">
   <ID>1000</ID> 
   <Name>ABC</Name> 
   <Dept>IT</Dept> 
  </Employee>
 </Record>

<?xml version="1.0" encoding="utf-8" ?> 
<Record xmlns="http://FlatFilewithEnvelop.FlatFileSchema1">
<Employee xmlns="">
<ID>1001</ID> 
<Name>DEF</Name> 
<Dept>Maintenece</Dept> 
</Employee>
</Record>

<?xml version="1.0" encoding="utf-8" ?> 
<Record xmlns="http://FlatFilewithEnvelop.FlatFileSchema1">
<Employee xmlns="">
  <ID>1002</ID> 
  <Name>GHI</Name> 
  <Dept>Payroll</Dept> 
  </Employee>
  </Record>

【问题讨论】:

    标签: biztalk biztalk-2010 biztalk-orchestrations


    【解决方案1】:

    可能发生的情况是,您最初创建了一个发送端口,其中包含订阅消息的过滤器。

    然后您创建了一个也订阅消息并绑定到发送端口的 Orchestration。

    如果您查看 BizTalk Server 管理控制台并执行新查询和Search For Equals Subscriptions,您将看到如下所示的发送端口过滤器

        Property    Operator    Value   Group by
        http://schemas.microsoft.com/BizTalk/2003/system-properties.SPTransportID   ==  {GUID}  Or
        http://schemas.microsoft.com/BizTalk/2003/system-properties.MessageType ==  MesageType  And
    

    注意订阅有一个 OR,第一部分是端口的 GUID,第二部分是您添加到端口的过滤器。 绑定到端口的业务流程发布的任何消息都会将 SPTransportID 设置为端口的 GUID。

    发送端口上的过滤器仍在寻找消息,并且编排也在向端口发布消息,因此有四个消息。

    解决方案。从端口中移除过滤器。

    【讨论】:

      【解决方案2】:

      另一件事是保留您的发送端口订阅,并通过验证提升的字段 ID 与所需值来丰富它,并禁用编排。所以你的消息只会被发送端口截获。

      【讨论】:

      • 是的,但是您还必须订阅那些您不想要的人,否则这些人将失败,找不到订阅者。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-09
      • 2012-10-26
      • 2014-04-16
      • 2021-05-26
      相关资源
      最近更新 更多