6

小さな問題で立ち往生しています。

PublicationTargetと同じNameに複数の setConditions を追加したい。これはinterops dllを使用しています。

ListRowFilter rowFilter = mTDSE.CreateListRowFilter();
rowFilter.SetCondition("StartDate", sDate);
rowFilter.SetCondition("EndDate", eDate);
rowFilter.SetCondition("PublicationTarget", pubStgTarget);

このためPublicationTarget、ステージングとライブターゲットでフィルタリングしたいのですが、すべての方法を試しましたが、役に立ちませんでした。

rowFilter.SetCondition("PublicationTarget", pubStgTarget);

提案してください

私はこの方法を試しましたが、うまくいきませんでした;-

rowFilter.SetCondition("PublicationTarget", "tcm:0-1-65537"); // Gives only staging
rowFilter.SetCondition("PublicationTarget", "tcm:0-2-65537"); // Gives only Live
rowFilter.SetCondition("PublicationTarget", "tcm:0-1-65537|tcm:0-1-65537"); // No result
rowFilter.SetCondition("PublicationTarget", oPubList); // No result - `oPubList` is a 

List<string>

4

2 に答える 2

6

いいえ、残念ながらできません。に条件を付けたい場合は、 1 つPublicationTargetだけにする必要があります。 PublicationTarget

ただし、2 つの回避策があります。

  1. 2 つ作成し、それぞれにRowFilters異なるPublicationTarget条件を設定します。次に、クエリを 2 回 (フィルターごとに 1 回) 発行します。これは、2 つの XML 結果ノードを処理する必要があることを意味します。

  2. PublicationTargetを実行するときに条件を使用しないでくださいGetListPublishTransactions()。次に、すべてのレコードを含む XML 要素を取得しますPublicationTargets。コードでは、関心のあるもの (ステージングライブなど) のみをフィルタリングします。

おそらく #2 を使用します (パブリッシュ キューが非常に多数のレコードを返す可能性があることがわかっている場合を除きます。その場合は #1 を使用します)。

#2 のサンプル コード:

tdse = new TDS.TDSEClass();
tdse.Impersonate(user.Title);
tdse.Initialize();

mgtInfo = tdse.GetManagementInfo();
filter = tdse.CreateListRowFilter();

filter.SetCondition("InfoType", 2); // InProgress
filter.SetCondition("Publication", "tcm:0-23-1");

XmlDocument dom = new XmlDocument();
dom.LoadXml(mgtInfo.GetListPublishTransactions(filter));

XmlNamespaceManager namespaceManager = new XmlNamespaceManager(new NameTable());
namespaceManager.AddNamespace("tcm", "http://www.tridion.com/ContentManager/5.0");

String xPath = String.Format(
    "tcm:ListPublishTransactions/tcm:Item[@PublicationTarget='{0}'] | " +
    "tcm:ListPublishTransactions/tcm:Item[@PublicationTarget='{1}']",
    stagingTcmUri, liveTcmUri);
XmlNodeList nodeList = dom.SelectNodes(xPath, namespaceManager);

foreach (XmlNode node in dom.DocumentElement.ChildNodes) {
    //do your thing
}

注: XPath 式を再確認してください。実際にはそのビットをテストしていません。

于 2012-04-15T08:15:05.377 に答える
2
Public Function GetListPublishTransactions( Optional ByVal rowFilter As TDS.ListRowFilter ) As String

メソッド GetListPublishTransactions は、フィルターの一部として次の条件を受け入れます。

  • InfoType (文字列) (ScheduledForPublish 0、WaitingForPublish 1、InProgress 2、ScheduledForDeployment 3、WaitingForDeployment 4、Failed 5、Success 6) (すべて省略)
  • StartDate (dateTime) この日付以降のアイテムのみを返す
  • EndDate (dateTime) この日付より前のアイテムのみを返す
  • ユーザー (文字列) ユーザーのアイテムのみを返す
  • Publication (string) この出版物のアイテムのみを返す
  • PublicationTarget (文字列) このパブリケーション ターゲットのアイテムのみを返す

複数回使用される条件を持つことはできません。

必要な結果を得るために、TOM API を複数回呼び出す必要がある場合があります。

于 2012-04-15T07:58:18.770 に答える