4

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

此外,当组件 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

FinishActivity“自动活动”“发布到暂存”“完成”

我是否需要编写自定义解析器来完成上述场景,以允许在工作流中发布到暂存环境的链接组件的修改版本?

任何想法或样品将不胜感激。

谢谢。

更新:

我正在尝试创建 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;
}
}
4

1 回答 1

2

根据文档:

如果项目满足为发布目标设置的最低批准状态,您可以在工作流中发布项目。如果项目在工作流中并且不满足最低批准状态,则内容管理器会发布项目的最后签入版本。

这意味着您需要:

  • Minimum Approval Status你的设置为“Staging”Publication target之类的东西

在此处输入图像描述

  • 作为工作流程的第一步,Approval Status将组件设置为“暂存”

在此处输入图像描述

于 2012-10-10T07:35:50.683 回答