【问题标题】:BizTalk adapter generate hierarchical schemaBizTalk 适配器生成分层架构
【发布时间】:2018-06-08 23:48:55
【问题描述】:

我正在尝试使用 BizTalk 适配器(SQL 或 WCF-SQL)来创建多级分层架构。我的查询是这样的

SELECT
    CustomerQueueMessage.customer_queue_ID  AS CustomerQueueMsgID,
    CustomerMaster.customer_ID              AS [CustomerID],
    CustomerAddressType.address_type_ID     AS [AddressTypeID],         
    CustomerSalesRep.sales_rep_type_code    AS [SalesRepTypeCode]
 FROM CustomerQueue AS CustomerQueueMessage 
 INNER JOIN dbo.MDM_Customer                AS CustomerMaster       ON (CustomerQueueMessage.customer_queue_ID = CustomerMaster.customer_queue_ID)
 INNER JOIN dbo.MDM_CustomerAddressType     AS CustomerAddressType  ON (CustomerAddressType.customer_queue_ID  = CustomerMaster.customer_queue_ID)
 INNER JOIN dbo.MDM_CustomerSalesRep        AS CustomerSalesRep     ON (CustomerSalesRep.customer_queue_ID     = CustomerMaster.customer_queue_ID)
 FOR XML AUTO, TYPE, ELEMENTS, XMLDATA

当我使用 SQL 适配器生成架构时,我得到了这个结构

我想要的是

CustomerSalesRepCustomerAddressType 下。我希望 CustomerSalesRepCustomerAddressType 处于同一级别,都位于 CustomerMaster 之下。

如果我删除 FOR XML 语句并使用 WCF-SQL 适配器生成架构,我将没有层次结构,所有列都处于同一级别。

有什么想法吗?最好我想使用 WCF-SQL 适配器来做,但 SQL 也可以。

【问题讨论】:

    标签: sql wcf xsd biztalk biztalk-2016


    【解决方案1】:

    你可以用这个。

    SELECT
        CustomerSalesRep.sales_rep_type_code    AS "CustomerQueueMessage/CustomerMaster/CustomerSalesRep/SalesRepTypeCode",
        CustomerAddressType.address_type_ID     AS "CustomerQueueMessage/CustomerMaster/CustomerAddressType/AddressTypeID",         
        CustomerMaster.customer_ID              AS "CustomerQueueMessage/CustomerMaster/CustomerID",
        CustomerQueueMessage.customer_queue_ID  AS "CustomerQueueMessage/CustomerQueueMsgID"
     FROM CustomerQueue AS CustomerQueueMessage 
     INNER JOIN dbo.MDM_Customer                AS CustomerMaster       ON (CustomerQueueMessage.customer_queue_ID = CustomerMaster.customer_queue_ID)
     INNER JOIN dbo.MDM_CustomerAddressType     AS CustomerAddressType  ON (CustomerAddressType.customer_queue_ID  = CustomerMaster.customer_queue_ID)
     INNER JOIN dbo.MDM_CustomerSalesRep        AS CustomerSalesRep     ON (CustomerSalesRep.customer_queue_ID     = CustomerMaster.customer_queue_ID)
     FOR XML PATH('SAPcustom'), TYPE, ELEMENTS
    

    它会生成这样的 XML。

    <SAPcustom>
      <CustomerQueueMessage>
        <CustomerMaster>
          <CustomerSalesRep>
            <SalesRepTypeCode>1</SalesRepTypeCode>
          </CustomerSalesRep>
          <CustomerAddressType>
            <AddressTypeID>1</AddressTypeID>
          </CustomerAddressType>
          <CustomerID>1</CustomerID>
        </CustomerMaster>
        <CustomerQueueMsgID>1</CustomerQueueMsgID>
      </CustomerQueueMessage>
    </SAPcustom>
    

    【讨论】:

    • 您好 Serkan,感谢您的帮助。抱歉,如果我不清楚,但我想要的是 CustomerMaster/CustomerSalesRep 而不是 CustomerMaster/CustomerAddressType/CustomerSalesRep。但是,即使有您的建议(为每列定义完整路径),我也无法获得我想要的结构。实际上我不能使用单词 PATH 因为它不允许 XMLDATA(SQL 适配器需要读取选择)。
    • @user3417479 XMLDATA?我根本不会使用。它适用于长期弃用的 XDR。即使是 XMLSCHEMA 也完全不需要使用适配器。我会先专注于获得正确的输出,然后再担心 Schema。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 2018-04-27
    • 2013-01-16
    • 2017-08-09
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多