我有一个场景,我发布了几千个使用特定类别/关键字分类的组件演示文稿,但组件也有自定义元数据字段,用于定义前n个.将显示.基本上,我需要根据关键字过滤一组组件,根据自定义元数据对它们进行排序,然后只选择前N个.
我理解如何列出项目并创建基本过滤器(从API中的过滤器项列表),但我需要过滤元数据字段(例如,具有最新元数据"priorityDate" 的三个项目).
从我正在阅读的内容中,我希望从分类搜索中获取所有记录(使用TaxonomyKeywordCriteria),然后手动(对QueryRunner执行SQL)检索所有组件的元数据以进行过滤/排序.
我一定肯定错过了一些东西(它感觉不对,有1/2 API调用然后在页面SQL脚本中)...如果没有,QueryRunner查询将被缓存在Taxonomy Query.executeQuery()的结果旁边
示例代码:
ItemTypeCriteria isComponent = new ItemTypeCriteria(16);
TaxonomyKeywordCriteria taxonomyKeywordCriteria = new TaxonomyKeywordCriteria(taxURI, taxKeywordURI, true);
Criteria[] allCriteria = {isComponent, isTDIPublication, isArticle, taxonomyKeywordCriteria}; 
AndCriteria andCriteria = CriteriaFactory.And(allCriteria);
Query query = new Query();         
query.setCriteria(andCriteria);
我正在使用Tridion 2009 SP1.我正在尝试做的是在组件完成某个工作流程过程后启动一个事件.直觉上我尝试使用OnProcessInstanceFinishPost事件,但是,当用户(admin)显式单击"Finish Process"时,才会触发此事件; 当所有活动完成并且"到达'停止'标志结束标记(如在Visio图中)之后,该过程正常完成时,不会触发此事件.
所以我使用了OnActivityInstanceFinishPost事件.问题是在OnActivityInstanceFinishPost事件中我得到记录器并尝试记录一条简单的消息,例如"Hello World",但事件查看器总是显示错误:"TCMEventLog.NTEventLog.1中发生错误:ReportEvent失败".并且事件没有被执行.
请注意,在OnProcessInstanceFinishPost事件中,完全相同的代码可以正常工作而不会出错.
我已经检查过这是否是身份用户权限的问题,但用户是Tridion的管理员,所以这不可能.我已经检查了SDLTridionworld论坛,但没有运气,当然,我已经将代码简化为一个日志记录语句,以确保它不是我的代码中的东西.
这是代码:
public void OnActivityInstanceFinishPost(ActivityInstance ActivityInstance, string finishMessage, string nextActivity, string dynamicAssignee)
{
    TDSE tdse = new TDSEClass() as TDSE;
    tdse.Impersonate(_identity);
    tdse.Initialize();
    Logging logger = tdse.GetLogging() as Logging;
    logger.LogEvent("Entered event OnActivityInstanceFinishPost. nextActivity="+nextActivity, EnumSeverity.severityInfo, EnumEventCategory.EVENT_CATEGORY_EVENT_SYSTEM);
}
这是完整的错误:
Log Name:      Tridion Content Manager
Source:        Kernel
Date:          4/9/2012 10:14:07 PM
Event ID:      100
Task Category: Logging
Level:         Error
Keywords:      Classic
User:          SYSTEM
Computer:      xxxxxxxxxxxxxx
Description:
An error occured in TCMEventLog.NTEventLog.1:
ReportEvent failed.
Event Xml:
<Event …从CWA 1.5升级到在WebSphere上运行的CWA 2011之后,我的客户遇到了问题.问题是请求的任何二进制资源返回404.当重新提交请求(即刷新/重新加载页面)时,它们会加载.
我无法访问他们的环境,必须通过第三方获取所有配置文件.我想知道是否有人有任何想法可能会导致二进制文件中的404这些问题?
我在64位服务器上使用SDL Tridion 2009 SP1,并试图在系统中发布所有多媒体组件的大量XML(190K +).我正在使用folder.GetListItems(filter)过滤器设置的方法Recursive="true".
模板运行几秒钟,然后出现内存不足错误:
<?xml version="1.0"?>
<tcm:Error xmlns:tcm="http://www.tridion.com/ContentManager/5.0" ErrorCode="7" Category="7" Source="Kernel" Severity="1"><tcm:Line ErrorCode="7" Cause="true"><![CDATA[Out of memory]]></tcm:Line><tcm:Details><tcm:CallStack><tcm:Location>FolderBLST.GetListData</tcm:Location></tcm:CallStack></tcm:Details></tcm:Error>
   at Tridion.ContentManager.Interop.TDSBL._IBLOrganizationalItemST.GetListData(UserContext userContext, String URI, EnumListKind listKind, ListColumnFilter columnFilter, String rowFilter)
   at Tridion.ContentManager.ContentManagement.OrganizationalItem.GetListItems(Filter filter)
   at myNS.myTbb.Transform(Engine engine, Package package)
   at Tridion.ContentManager.Templating.Assembly.AssemblyMediator.Transform(Engine engine, Template template, Package package)
   at Tridion.ContentManager.Templating.Assembly.CSharpSourceCodeMediator.RunTemplate(Engine engine, Package package, String templateUri, String className)
   at Tridion.Templating.CSharpTemplate.CSharpSourceTemplate.Transform(Engine __engine, Package __package)
   at Tridion.ContentManager.Templating.Assembly.CSharpSourceCodeMediator.Transform(Engine engine, Template template, Package package)
   at Tridion.ContentManager.Templating.Engine.ExecuteTemplate(Template template, Package package)
   at Tridion.ContentManager.Templating.Engine.InvokeTemplate(Package package, TemplateInvocation templateInvocation, Template …我在Tridion 2009 SP1上.有一次,查看所有用户(即不是过滤器)的发布队列的能力刚刚停止工作.在CM GUI中收到超时错误:
(80040E31) Timeout expired
Unable to get list of publishing queue items.
SQLUtilities.OpenRecordsetByStoredProcedure
SystemDAL.GetListData
SystemBLST.lObjListPublishTransactions
SystemBLST.IBLSystemST_GetListData
ManagementInfo.GetListPublishQueue
Request.GetList
所以我尝试使用Publication Queue Manager Powertool清理队列,但这只会引发500错误,这与队列中有太多项目一致.
然后我尝试使用Tridion清除工具清除队列,但它会碾压几秒钟并返回相同的错误:
14-May-2012 21:10:12 Log cleared.
14-May-2012 21:10:12 Purge action started at 14-May-2012 21:10:12
14-May-2012 21:10:12 Keeping the last 5 versions.
14-May-2012 21:10:12 Recursive mode: False
14-May-2012 21:11:12 FAILED: <?xml version="1.0"?>
<tcm:Error xmlns:tcm="http://www.tridion.com/ContentManager/5.0" ErrorCode="80040E31" Category="7" Source="Kernel" Severity="1">
    <tcm:Line ErrorCode="80040E31" Cause="false" MessageID="4613"><![CDATA[Unable to get list of publishing queue items.]]>
        <tcm:Token>RESID_4485</tcm:Token>
        <tcm:Token>RESID_15821</tcm:Token>
    </tcm:Line>
    <tcm:Line ErrorCode="80040E31" Cause="true">
        <![CDATA[Timeout expired]]> …在使用GetItems方法并将返回集合中的每个项目传递给另一个方法时,我们遇到了一个奇怪的问题.
我们正在使用Tridion 2011 GA.
以下代码打破:
private void foo(StructureGroup structureGroup, Session session, int counterTemp, int levels)
{
    OrganizationalItemItemsFilter filtersg= new OrganizationalItemItemsFilter(session);
    filtersg.Recursive = false;
    IEnumerable<ItemType> itemtype = new List<ItemType> { ItemType.StructureGroup};
    filtersg.ItemTypes = itemtype;
    foreach (StructureGroup sg in structureGroup.GetItems(filtersg))
    {
        GetSiteMap(sg, counterTemp, levels);
    }
}
private void GetSiteMap(StructureGroup sg, int counter, int levels)
{
    logger.Info(sg.Id);  //ok
    logger.Info(sg.Title);  //ok
    logger.Info(sg.Directory);  // null !?
}
但是,如果在将sg传递给下一个方法之前sg.Directory是访问权限,那么一切正常:
private void foo(StructureGroup structureGroup, Session session, int counterTemp, int levels)
    OrganizationalItemItemsFilter filtersg= new OrganizationalItemItemsFilter(session);
    filtersg.Recursive = false; …我正在尝试获取继承RepositoryLocalObject(例如Component)的父项列表.因此,如果我有一个包含组件tcm:1-80的pub ID 1和一个子pub pub ID 2,那么这个组件在子pub中共享为tcm:2-80.所以我想得到tcm:2-80的父母,或树上的任何东西向上移动.
我已经在组件的本地副本上尝试了GetBluePrintChain()方法,它可以正常工作.但是,在共享组件上,它返回InvalidActionException:"此项目是共享的".该文档提到在共享项上抛出此异常.但这有什么意义呢?显然,如果任何具有超出其自身蓝图链的项目将被共享(或者是本地副本).所以对我来说,让这个方法在具有蓝图链的东西上抛出异常是没有意义的.这似乎是矛盾的.
我的问题与获取组件的根发布有些相关,但它有所不同.我需要理解为什么在共享项上抛出此异常.有人可以解释并分享一个用例来支持它吗?