这是一个场景:我有一个包含组件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;
}
}
答案 0 :(得分:2)
根据文件:
如果项目符合最低批准,则可以在Workflow中发布项目 为发布目标设置的状态。如果该项目在工作流程中 不符合最低审批状态的内容管理员 发布该项目的最后一个签到版本。
这意味着你需要:
Minimum Approval Status
上的Publication target
设置为“暂存”
Approval Status
设置为“暂存”