Tridion 2011 Sp1允许将组件的修订版本发布到临时目标

Tridion 2011 Sp1允许将组件的修订版本发布到临时目标,tridion,tridion-2011,Tridion,Tridion 2011,这是一个场景:我有一个包含组件a的页面。组件a有几个链接的组件B和C。如果编辑器修改组件B并希望在组件仍在工作流中时发布到暂存目标,以便审阅者可以在批准组件B之前查看暂存服务器上的更改。当编辑器预览组件时,他可以看到更改,但当他发布到暂存目标时,它将获取组件A的最后一个签入版本,该版本仍然链接到组件B的未修改版本。如何实际覆盖默认行为,以允许编辑器在完成项目活动之前将其更改发布到暂存环境 public void Transform(Engine engine, Package package)

这是一个场景:我有一个包含组件a的页面。组件a有几个链接的组件B和C。如果编辑器修改组件B并希望在组件仍在工作流中时发布到暂存目标,以便审阅者可以在批准组件B之前查看暂存服务器上的更改。当编辑器预览组件时,他可以看到更改,但当他发布到暂存目标时,它将获取组件A的最后一个签入版本,该版本仍然链接到组件B的未修改版本。如何实际覆盖默认行为,以允许编辑器在完成项目活动之前将其更改发布到暂存环境

public void Transform(Engine engine, Package package)
{
try
{

 _publicationID = engine.PublishingContext.ResolvedItem.Item.Id.PublicationId;

 string stagingTarget = Settings.GetSetting("StagingTargetUri");
 PublicationTarget target = new PublicationTarget(new TcmUri(stagingTarget),                   engine.GetSession());

if(engine.PublishingContext.ResolvedItem.PublicationTarget!=null){
if     (stagingTarget.Contains(engine.PublishingContext.ResolvedItem.PublicationTarget.Id.ToString()))
{
foreach (Item item in package.GetAllByType(ContentType.Component))
{

VersionedItem versionedItem = (VersionedItem)engine.GetObject(item);

if (versionedItem.LockType.HasFlag(LockType.InWorkflow))
{
Component componentInWorkflow =
(Component)engine.GetObject(new TcmUri(versionedItem.Id.ItemId,   versionedItem.Id.ItemType, versionedItem.Id.PublicationId, 0));



package.Remove(item);
Item mainComponent=  package.CreateTridionItem(ContentType.Component,componentInWorkflow);
package.PushItem(mainComponent);

}
}
}
}

}
catch (Exception ex)
{
throw ex;
}
}
此外,当组件B直接插入第二页时,我能够使用以下命令从工作流自动化活动的VBScript发布:

Dim strItemURI
strItemURI = CurrentWorkItem.GetItem(2).ID

Dim oComp
Set oComp = TDSE.GetObject(strItemURI, 1)
Call oComp.Publish("tcm:0-13-65537", True, True, False)
Set oComp = Nothing
public void Transform(Engine engine, Package package)
{
try
{

 _publicationID = engine.PublishingContext.ResolvedItem.Item.Id.PublicationId;

 string stagingTarget = Settings.GetSetting("StagingTargetUri");
 PublicationTarget target = new PublicationTarget(new TcmUri(stagingTarget),                   engine.GetSession());

if(engine.PublishingContext.ResolvedItem.PublicationTarget!=null){
if     (stagingTarget.Contains(engine.PublishingContext.ResolvedItem.PublicationTarget.Id.ToString()))
{
foreach (Item item in package.GetAllByType(ContentType.Component))
{

VersionedItem versionedItem = (VersionedItem)engine.GetObject(item);

if (versionedItem.LockType.HasFlag(LockType.InWorkflow))
{
Component componentInWorkflow =
(Component)engine.GetObject(new TcmUri(versionedItem.Id.ItemId,   versionedItem.Id.ItemType, versionedItem.Id.PublicationId, 0));



package.Remove(item);
Item mainComponent=  package.CreateTridionItem(ContentType.Component,componentInWorkflow);
package.PushItem(mainComponent);

}
}
}
}

}
catch (Exception ex)
{
throw ex;
}
}
FinishActivity“自动活动”“发布到暂存”“完成”

public void Transform(Engine engine, Package package)
{
try
{

 _publicationID = engine.PublishingContext.ResolvedItem.Item.Id.PublicationId;

 string stagingTarget = Settings.GetSetting("StagingTargetUri");
 PublicationTarget target = new PublicationTarget(new TcmUri(stagingTarget),                   engine.GetSession());

if(engine.PublishingContext.ResolvedItem.PublicationTarget!=null){
if     (stagingTarget.Contains(engine.PublishingContext.ResolvedItem.PublicationTarget.Id.ToString()))
{
foreach (Item item in package.GetAllByType(ContentType.Component))
{

VersionedItem versionedItem = (VersionedItem)engine.GetObject(item);

if (versionedItem.LockType.HasFlag(LockType.InWorkflow))
{
Component componentInWorkflow =
(Component)engine.GetObject(new TcmUri(versionedItem.Id.ItemId,   versionedItem.Id.ItemType, versionedItem.Id.PublicationId, 0));



package.Remove(item);
Item mainComponent=  package.CreateTridionItem(ContentType.Component,componentInWorkflow);
package.PushItem(mainComponent);

}
}
}
}

}
catch (Exception ex)
{
throw ex;
}
}
我是否需要编写自定义解析器来完成上述场景,以允许在工作流中发布到临时环境的链接组件的修改版本

public void Transform(Engine engine, Package package)
{
try
{

 _publicationID = engine.PublishingContext.ResolvedItem.Item.Id.PublicationId;

 string stagingTarget = Settings.GetSetting("StagingTargetUri");
 PublicationTarget target = new PublicationTarget(new TcmUri(stagingTarget),                   engine.GetSession());

if(engine.PublishingContext.ResolvedItem.PublicationTarget!=null){
if     (stagingTarget.Contains(engine.PublishingContext.ResolvedItem.PublicationTarget.Id.ToString()))
{
foreach (Item item in package.GetAllByType(ContentType.Component))
{

VersionedItem versionedItem = (VersionedItem)engine.GetObject(item);

if (versionedItem.LockType.HasFlag(LockType.InWorkflow))
{
Component componentInWorkflow =
(Component)engine.GetObject(new TcmUri(versionedItem.Id.ItemId,   versionedItem.Id.ItemType, versionedItem.Id.PublicationId, 0));



package.Remove(item);
Item mainComponent=  package.CreateTridionItem(ContentType.Component,componentInWorkflow);
package.PushItem(mainComponent);

}
}
}
}

}
catch (Exception ex)
{
throw ex;
}
}
任何想法或样品将不胜感激

public void Transform(Engine engine, Package package)
{
try
{

 _publicationID = engine.PublishingContext.ResolvedItem.Item.Id.PublicationId;

 string stagingTarget = Settings.GetSetting("StagingTargetUri");
 PublicationTarget target = new PublicationTarget(new TcmUri(stagingTarget),                   engine.GetSession());

if(engine.PublishingContext.ResolvedItem.PublicationTarget!=null){
if     (stagingTarget.Contains(engine.PublishingContext.ResolvedItem.PublicationTarget.Id.ToString()))
{
foreach (Item item in package.GetAllByType(ContentType.Component))
{

VersionedItem versionedItem = (VersionedItem)engine.GetObject(item);

if (versionedItem.LockType.HasFlag(LockType.InWorkflow))
{
Component componentInWorkflow =
(Component)engine.GetObject(new TcmUri(versionedItem.Id.ItemId,   versionedItem.Id.ItemType, versionedItem.Id.PublicationId, 0));



package.Remove(item);
Item mainComponent=  package.CreateTridionItem(ContentType.Component,componentInWorkflow);
package.PushItem(mainComponent);

}
}
}
}

}
catch (Exception ex)
{
throw ex;
}
}
谢谢

public void Transform(Engine engine, Package package)
{
try
{

 _publicationID = engine.PublishingContext.ResolvedItem.Item.Id.PublicationId;

 string stagingTarget = Settings.GetSetting("StagingTargetUri");
 PublicationTarget target = new PublicationTarget(new TcmUri(stagingTarget),                   engine.GetSession());

if(engine.PublishingContext.ResolvedItem.PublicationTarget!=null){
if     (stagingTarget.Contains(engine.PublishingContext.ResolvedItem.PublicationTarget.Id.ToString()))
{
foreach (Item item in package.GetAllByType(ContentType.Component))
{

VersionedItem versionedItem = (VersionedItem)engine.GetObject(item);

if (versionedItem.LockType.HasFlag(LockType.InWorkflow))
{
Component componentInWorkflow =
(Component)engine.GetObject(new TcmUri(versionedItem.Id.ItemId,   versionedItem.Id.ItemType, versionedItem.Id.PublicationId, 0));



package.Remove(item);
Item mainComponent=  package.CreateTridionItem(ContentType.Component,componentInWorkflow);
package.PushItem(mainComponent);

}
}
}
}

}
catch (Exception ex)
{
throw ex;
}
}
更新:

public void Transform(Engine engine, Package package)
{
try
{

 _publicationID = engine.PublishingContext.ResolvedItem.Item.Id.PublicationId;

 string stagingTarget = Settings.GetSetting("StagingTargetUri");
 PublicationTarget target = new PublicationTarget(new TcmUri(stagingTarget),                   engine.GetSession());

if(engine.PublishingContext.ResolvedItem.PublicationTarget!=null){
if     (stagingTarget.Contains(engine.PublishingContext.ResolvedItem.PublicationTarget.Id.ToString()))
{
foreach (Item item in package.GetAllByType(ContentType.Component))
{

VersionedItem versionedItem = (VersionedItem)engine.GetObject(item);

if (versionedItem.LockType.HasFlag(LockType.InWorkflow))
{
Component componentInWorkflow =
(Component)engine.GetObject(new TcmUri(versionedItem.Id.ItemId,   versionedItem.Id.ItemType, versionedItem.Id.PublicationId, 0));



package.Remove(item);
Item mainComponent=  package.CreateTridionItem(ContentType.Component,componentInWorkflow);
package.PushItem(mainComponent);

}
}
}
}

}
catch (Exception ex)
{
throw ex;
}
}
我正在尝试创建TBB,它将替换包中项目的修改版本。有什么想法吗?下面是一些代码:

public void Transform(Engine engine, Package package)
{
try
{

 _publicationID = engine.PublishingContext.ResolvedItem.Item.Id.PublicationId;

 string stagingTarget = Settings.GetSetting("StagingTargetUri");
 PublicationTarget target = new PublicationTarget(new TcmUri(stagingTarget),                   engine.GetSession());

if(engine.PublishingContext.ResolvedItem.PublicationTarget!=null){
if     (stagingTarget.Contains(engine.PublishingContext.ResolvedItem.PublicationTarget.Id.ToString()))
{
foreach (Item item in package.GetAllByType(ContentType.Component))
{

VersionedItem versionedItem = (VersionedItem)engine.GetObject(item);

if (versionedItem.LockType.HasFlag(LockType.InWorkflow))
{
Component componentInWorkflow =
(Component)engine.GetObject(new TcmUri(versionedItem.Id.ItemId,   versionedItem.Id.ItemType, versionedItem.Id.PublicationId, 0));



package.Remove(item);
Item mainComponent=  package.CreateTridionItem(ContentType.Component,componentInWorkflow);
package.PushItem(mainComponent);

}
}
}
}

}
catch (Exception ex)
{
throw ex;
}
}

根据文件:

public void Transform(Engine engine, Package package)
{
try
{

 _publicationID = engine.PublishingContext.ResolvedItem.Item.Id.PublicationId;

 string stagingTarget = Settings.GetSetting("StagingTargetUri");
 PublicationTarget target = new PublicationTarget(new TcmUri(stagingTarget),                   engine.GetSession());

if(engine.PublishingContext.ResolvedItem.PublicationTarget!=null){
if     (stagingTarget.Contains(engine.PublishingContext.ResolvedItem.PublicationTarget.Id.ToString()))
{
foreach (Item item in package.GetAllByType(ContentType.Component))
{

VersionedItem versionedItem = (VersionedItem)engine.GetObject(item);

if (versionedItem.LockType.HasFlag(LockType.InWorkflow))
{
Component componentInWorkflow =
(Component)engine.GetObject(new TcmUri(versionedItem.Id.ItemId,   versionedItem.Id.ItemType, versionedItem.Id.PublicationId, 0));



package.Remove(item);
Item mainComponent=  package.CreateTridionItem(ContentType.Component,componentInWorkflow);
package.PushItem(mainComponent);

}
}
}
}

}
catch (Exception ex)
{
throw ex;
}
}
如果项目满足最低审批要求,则可以在工作流中发布该项目 为发布目标设置的状态。如果项目在工作流中,并且 内容管理器不符合最低批准状态 发布项目的上次签入版本

public void Transform(Engine engine, Package package)
{
try
{

 _publicationID = engine.PublishingContext.ResolvedItem.Item.Id.PublicationId;

 string stagingTarget = Settings.GetSetting("StagingTargetUri");
 PublicationTarget target = new PublicationTarget(new TcmUri(stagingTarget),                   engine.GetSession());

if(engine.PublishingContext.ResolvedItem.PublicationTarget!=null){
if     (stagingTarget.Contains(engine.PublishingContext.ResolvedItem.PublicationTarget.Id.ToString()))
{
foreach (Item item in package.GetAllByType(ContentType.Component))
{

VersionedItem versionedItem = (VersionedItem)engine.GetObject(item);

if (versionedItem.LockType.HasFlag(LockType.InWorkflow))
{
Component componentInWorkflow =
(Component)engine.GetObject(new TcmUri(versionedItem.Id.ItemId,   versionedItem.Id.ItemType, versionedItem.Id.PublicationId, 0));



package.Remove(item);
Item mainComponent=  package.CreateTridionItem(ContentType.Component,componentInWorkflow);
package.PushItem(mainComponent);

}
}
}
}

}
catch (Exception ex)
{
throw ex;
}
}
这意味着您需要:

public void Transform(Engine engine, Package package)
{
try
{

 _publicationID = engine.PublishingContext.ResolvedItem.Item.Id.PublicationId;

 string stagingTarget = Settings.GetSetting("StagingTargetUri");
 PublicationTarget target = new PublicationTarget(new TcmUri(stagingTarget),                   engine.GetSession());

if(engine.PublishingContext.ResolvedItem.PublicationTarget!=null){
if     (stagingTarget.Contains(engine.PublishingContext.ResolvedItem.PublicationTarget.Id.ToString()))
{
foreach (Item item in package.GetAllByType(ContentType.Component))
{

VersionedItem versionedItem = (VersionedItem)engine.GetObject(item);

if (versionedItem.LockType.HasFlag(LockType.InWorkflow))
{
Component componentInWorkflow =
(Component)engine.GetObject(new TcmUri(versionedItem.Id.ItemId,   versionedItem.Id.ItemType, versionedItem.Id.PublicationId, 0));



package.Remove(item);
Item mainComponent=  package.CreateTridionItem(ContentType.Component,componentInWorkflow);
package.PushItem(mainComponent);

}
}
}
}

}
catch (Exception ex)
{
throw ex;
}
}
  • 出版物目标上的
    最低审批状态设置为类似于的“暂存”

public void Transform(Engine engine, Package package)
{
try
{

 _publicationID = engine.PublishingContext.ResolvedItem.Item.Id.PublicationId;

 string stagingTarget = Settings.GetSetting("StagingTargetUri");
 PublicationTarget target = new PublicationTarget(new TcmUri(stagingTarget),                   engine.GetSession());

if(engine.PublishingContext.ResolvedItem.PublicationTarget!=null){
if     (stagingTarget.Contains(engine.PublishingContext.ResolvedItem.PublicationTarget.Id.ToString()))
{
foreach (Item item in package.GetAllByType(ContentType.Component))
{

VersionedItem versionedItem = (VersionedItem)engine.GetObject(item);

if (versionedItem.LockType.HasFlag(LockType.InWorkflow))
{
Component componentInWorkflow =
(Component)engine.GetObject(new TcmUri(versionedItem.Id.ItemId,   versionedItem.Id.ItemType, versionedItem.Id.PublicationId, 0));



package.Remove(item);
Item mainComponent=  package.CreateTridionItem(ContentType.Component,componentInWorkflow);
package.PushItem(mainComponent);

}
}
}
}

}
catch (Exception ex)
{
throw ex;
}
}
  • 作为工作流的第一步,将组件的
    批准状态设置为“暂存”

组件A是否也在工作流中,或者是否已被任何人签出?您是否可以描述目标的最低批准级别,以及执行发布操作时每个项目的批准状态?Nickoli,组件A不在工作流中,但是因为它链接了组件B,所以它不允许我发布组件B的版本0。我认为这是因为它仍然链接到最新的签入版本。暂存具有默认\u草稿,而Live具有默认\u Live。这是可以更改的,因为我们正在尝试实现自定义工作流。您的组件是作为动态组件演示文稿发布还是静态嵌入在页面上?我之所以问这个问题,是因为在代码中,您正在对组件调用“publish”,但如果它是静态嵌入的,则会触发页面上的重新发布以及页面上CPs的所有最新主要版本。我相信,如果项目仍在工作流中,则与您的最低审批状态无关。发布时,此问题发生在项目被批准并退出工作流之后。当编辑器修改组件时,它将出现在工作流“创建或编辑组件”中,而他希望将此版本的组件发布到暂存以供审阅并完成其活动。我可以通过添加自动活动步骤和使用VBScript实用地发布,但只有在修改组件A并将其直接添加到页面时,这才起作用。
public void Transform(Engine engine, Package package)
{
try
{

 _publicationID = engine.PublishingContext.ResolvedItem.Item.Id.PublicationId;

 string stagingTarget = Settings.GetSetting("StagingTargetUri");
 PublicationTarget target = new PublicationTarget(new TcmUri(stagingTarget),                   engine.GetSession());

if(engine.PublishingContext.ResolvedItem.PublicationTarget!=null){
if     (stagingTarget.Contains(engine.PublishingContext.ResolvedItem.PublicationTarget.Id.ToString()))
{
foreach (Item item in package.GetAllByType(ContentType.Component))
{

VersionedItem versionedItem = (VersionedItem)engine.GetObject(item);

if (versionedItem.LockType.HasFlag(LockType.InWorkflow))
{
Component componentInWorkflow =
(Component)engine.GetObject(new TcmUri(versionedItem.Id.ItemId,   versionedItem.Id.ItemType, versionedItem.Id.PublicationId, 0));



package.Remove(item);
Item mainComponent=  package.CreateTridionItem(ContentType.Component,componentInWorkflow);
package.PushItem(mainComponent);

}
}
}
}

}
catch (Exception ex)
{
throw ex;
}
}