Tridion 在GetSystemWideList中使用PublishTransactionState筛选器不起作用

Tridion 在GetSystemWideList中使用PublishTransactionState筛选器不起作用,tridion,tridion-2011,Tridion,Tridion 2011,在核心服务(SDL Tridion 2011 SP1)上使用GetSystemWideList操作时,我尝试为PublishTransactionState应用过滤器 如果尝试设置诸如PublishTransactionState.ScheduledForPublish或PublishTransactionState.WaitingForPublish之类的筛选器值,则不会得到任何结果,即使我确定队列中存在具有此状态的发布事务 var filter = new PublishTransactio

在核心服务(SDL Tridion 2011 SP1)上使用GetSystemWideList操作时,我尝试为PublishTransactionState应用过滤器

如果尝试设置诸如PublishTransactionState.ScheduledForPublish或PublishTransactionState.WaitingForPublish之类的筛选器值,则不会得到任何结果,即使我确定队列中存在具有此状态的发布事务

var filter = new PublishTransactionsFilterData {ForRepository = new LinkToRepositoryData {IdRef = "tcm:0-69-1"}};
filter.PublicationTarget = new LinkToPublicationTargetData { IdRef = "tcm:0-1-65537" };
filter.PublishTransactionState = PublishTransactionState.ScheduledForPublish;
//filter.StartDate = DateTime.Today.AddDays(-1);

var transactions = coreServiceSession.GetSystemWideList(filter);
Console.WriteLine(transactions.Count() + " publish transactions");
启用filter.PublishTransactionState行后,核心服务始终返回0个结果。注释这一行后,我们将获得预期的发布事务列表,其中包括一些状态为SceduledForPublish的事务

其他过滤器,如StartDate过滤器按预期工作


有人知道这个问题吗?

这是一个已知的问题,已在2013年修复


目前没有可用的修补程序,但您可以通过请求列表来解决此问题,而无需设置PublishTransactionState属性,然后对结果进行后处理

我可以很容易地重现您的问题:
State=ScheduleForPublish
显然有结果,但将该条件添加到筛选器不会返回任何结果。@FrankvanPuffelen:谢谢您的确认。令我惊讶的是,我只注意到PublishTransactionState上的过滤。成功确实可以正常工作。另外,在CME中的发布队列中应用这些过滤器时,我也会得到相同的行为。好问题,我们是否能让您有兴趣提交到。如果您有时间,请使用相同的SO帐户注册。在这种情况下,请确保将日期范围设置为将来,否则您最终将检索到的事务数量将超过所需数量。是的,代码示例已显示StartDate,设置为前一天,以防发布者有点忙//filter.StartDate=DateTime.Today.AddDays(-1);不过,当系统处理大量发布事务时,它将有相当大的性能。您可能会通过100次发布事务来筛选一些计划的事务。在CM数据库中找到了更多信息。PUBLISH_TRANSACTIONS表中的STATE列的值为0而不是1(计划发布)。可能是错误,因为状态0不存在。发布状态概述:sdllivecontent.sdl.com/LiveContent/content/en-US/@Frank如果您将来设置它,您将找不到任何东西——因为过滤器上的开始/结束日期属性是关于事务创建或修改的时间(而不是关于项目发布的时间)。至少根据文件。