2012-12-06 12 views
6

Core Service(SDL Tridion 2011 SP1)でGetSystemWideList操作を使用するときに、PublishTransactionStateのフィルタを適用しようとしました。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フィルターなどの他のフィルターは、期待どおりに機能します。

誰でもこの作品はありますか?

+1

私は簡単に問題を再現できます: 'State = ScheduleForPublish'で明らかに結果がありますが、その条件をフィルターに追加すると結果が返されません。 –

+0

@FrankvanPuffelen:ご確認いただきありがとうございます。 私の驚いたことに、私はちょうどPublishTransactionState.Successでのフィルタリングが正しく動作することに注意してください。 また、これらのフィルタをCMEの公開キューに適用すると、同じ動作が発生します。 –

+0

ニースの質問、[Area 51 Tridion特有の提案](http://area51.stackexchange.com/proposals/38335/tridion?referrer=gPujQMxthNCNn9xqeeO2NA2)にコミットすることができますか?同じSOアカウントでサインアップしてください。 –

答えて

4

は、これが今利用可能な修正プログラム2013

で修正されている既知の問題がありませんが、あなたはPublishTransactionStateプロパティを設定し、その結果を後処理せずにリストを要求することによってそれを回避することができます。

+0

この場合、将来の日付範囲を設定してください。そうしないと、必要以上に多くのトランザクションを取得することになります。 –

+0

はい、コード例では、StartDateが既に1日前に設定されていることが示されています。 //filter.StartDate = DateTime.Today.AddDays(-1); システムが多くのパブリッシング・トランザクションを処理すると、パフォーマンスはかなり低下します。あなたはいくつかの予定されたものをフィルタリングするために、出版取引の100分の1を渡り歩くことになるかもしれません。 –

+0

CMデータベースでさらに詳しい情報が見つかりました。 PUBLISH_TRANSACTIONSテーブルのSTATE列には、1(発行予定)の代わりに0が入ります。おそらくバグで、原因状態0は存在しません。公開状態の概要:sdllivecontent.sdl.com/LiveContent/content/en-US/ –

関連する問題