簡體   English   中英

Microsoft CommerceServer Web服務搜索條款

[英]Microsoft CommerceServer Web Service searchClause

我正在使用Microsoft Commerce Server,最近又學習了如何使用xml Web服務。 我需要使用“ updateitems”方法更新某些產品。

SOAP信封如下所示:

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
<UpdateItems xmlns="http://schemas.microsoft.com/CommerceServer/2006/06/CatalogWebService">
  <catalogName>string</catalogName>
  <searchClause>string</searchClause>
  <propertyName>string</propertyName>
  <replacementValue />
  <classTypes>None or CategoryClass or ProductVariantClass or ProductClass or ProductFamilyClass or ProductFamilyForVariantsClass or ProductVariantsForFamilyClass or AllClassTypesClass</classTypes>
  <language>string</language>
</UpdateItems>
</soap:Body>
</soap:Envelope>

我使用nuSoap的請求如下所示:

$client = new nusoap_client($wsdl, TRUE);
$client->setCredentials('', '', 'ntlm');
$client->setUseCurl(true);
$client->useHTTPPersistentConnection();
$client->setCurlOption(CURLOPT_USERPWD, *);

$m = array(
'catalogName' => 'cat',
'propertyName => 'itemdesc',
'replacementValue' => 'somevalue'
);
$resp = ($client->call('UpdateItems', $m));

我不了解的是searchClause。 我不知道任何表或列的名稱,並且由於我使用的是敏感數據,而且其中有很多,所以我不想通過反復試驗進行測試。 我想在搜索子句中執行類似“ ProductID = 159999”的操作,但是它沒有。

指導要點:

  1. SearchClause屬性:Searchclause允許您基於_ProductCatalog數據庫內_CatalogProducts表中的屬性來構建where子句,其中where引用目錄名稱(在Commerce Server Catalog Manager中可見),並引用給定的名稱您的CommerceServer網站

  2. 屬性名稱:您在此處使用的此屬性名稱將與您要更新的實體的classType相對應。 單擊此處以了解有關各種類類型的更多信息http://msdn.microsoft.com/zh-cn/library/ee784608(v=cs.20).aspx 若要了解將哪些屬性映射到哪些實體,可以查看Commerce Server目錄和庫存模式管理器。 在這里,您將找到所有屬性定義,產品定義,類別定義和目錄定義。

搜索關鍵詞示例,用於更新網球鞋的紅色產品型號(產品編號為ABC123和產品型號ID(對於鞋的紅色型號為ABC123-RED)的標價。我不熟悉nuSoap,但基於在上面的示例中,我認為您的代碼將類似於以下內容。此外,您需要在下面的searchClause中正確轉義單引號

$client = new nusoap_client($wsdl, TRUE);
$client->setCredentials('', '', 'ntlm');
$client->setUseCurl(true);
$client->useHTTPPersistentConnection();
$client->setCurlOption(CURLOPT_USERPWD, *);

$m = array(
'catalogName' => 'YourCatalogName',
'searchClause' => '(ProductId = ''ABC123'' AND VariantId = ''ABC123-RED'')',
'propertyName => 'Description',
'replacementValue' => 'Red is the new color for fall, check out these kicks!'
);
$resp = ($client->call('UpdateItems', $m));

顯然,如果屬性名稱中有空格,則需要使用[]作為分隔符,如“ [我的自定義列]”中所示。

最好的辦法是先熟悉存儲產品目錄的SQL數據庫表,然后使用Commerce Server Catalog和庫存管理器以及Commerce Server Catalog Manager來檢查當前數據實例的當前數據配置。

您可能想要考慮的是,微軟,然后是Cactus,然后是Ascentium,現在是擁有該產品的Smith,多年來一直說這些基於ASMX的Web服務正在消失,因此您可能只想編寫自己的使用API​​的服務。 我建議您更好地控制此更新。 如果您更喜歡SQL,我建議您更深入地研究我上面提到的產品目錄數據庫,它的結構非常簡單,並且非常容易編寫SSIS或其他批量復制操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM