Tridion 2009 - 使用互操作 - 是否可以为同一名称添加多个设置条件
本文关键字:一名 添加 条件 设置 互操作 2009 是否 Tridion | 更新日期: 2023-09-27 18:31:13
我遇到了小问题。
我想为用于发布目标的同一名称添加多个设置条件。这是使用互操作 dll。
ListRowFilter rowFilter = mTDSE.CreateListRowFilter();
rowFilter.SetCondition("StartDate", sDate);
rowFilter.SetCondition("EndDate", eDate);
rowFilter.SetCondition("PublicationTarget", pubStgTarget);
对于这个PublicationTarget
,我想使用暂存和实时目标进行过滤,我尝试了所有方法但没有用。
rowFilter.SetCondition("PublicationTarget", pubStgTarget);
请建议,
1.通过x是可能的,最好的方法是什么?
我尝试过这种方法,但没有运气;
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>
不,不幸的是这是不可能的。如果要对PublicationTarget
施加条件,则必须仅对一个PublicationTarget
。
但是,有 2 种解决方法:
-
创建两个
RowFilters
,并在每个PublicationTarget
条件中设置不同的条件。然后,您将发出查询两次(每个筛选器一次)。这意味着您需要处理 2 个 XML 结果节点。 -
执行
GetListPublishTransactions()
时不要使用PublicationTarget
条件。然后,您将获得一个 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表达式,我还没有实际测试过那个位。
Public Function GetListPublishTransactions( Optional ByVal rowFilter As TDS.ListRowFilter ) As String
方法 GetListPublishTransactions 接受以下条件作为筛选器的一部分:
- 信息类型(字符串)(计划发布 0、等待发布 1、进行中 2、计划部署 3、等待部署 4、失败 5、成功 6)(全部省略)
- 开始日期(日期时间) 仅返回此日期之后的项目
- 结束日期(日期时间) 仅返回此日期之前的项目
- 用户(字符串)仅返回用户的项
- 发布(字符串) 仅返回此发布的项目 发布目标
- (字符串)仅返回此发布目标的项目
有多个条件使用。
您可能需要对 TOM API 进行多次调用才能获得所需的结果?