页面的复制/粘贴不会在同一个SG中启动工作流程,在其他SG中启动工作流程

时间:2012-10-11 18:14:27

标签: tridion

最近,用户出现了这种行为,我感到很困惑。假设所有SG都有工作流程设置。

复制SG A中的页面X,粘贴到相同的SG A.页面Y已创建,但未启动任何工作流程。 复制SG A中的页面X,粘贴到其他SG B中。创建页面Z并启动工作流程。

现在,我在现场时与Nuno确认了第一个场景。我们同意业务人员的意见,我们可以接受这种行为。但是,我很好奇为什么第二种情况按原样发生。如果#1没有启动工作流程,为什么#2?有谁能解释为什么?有没有什么办法可以通过编程方式让方案#1启动工作流程(因为业务希望这种情况发生)?或者,最坏的情况是从#2禁用它。它应该是一致的。

2 个答案:

答案 0 :(得分:1)

但在实际情况中,我真的会质疑在您在同一结构组中复制页面时工作流程的启动。

当您在同一结构组中复制页面时,它将创建一个标题为Copy of original page name的页面,CMS用户显然希望/需要使用正确的页面名称编辑该页面。一旦他们保存页面工作流程就会启动。此外,CMS用户可能也想要更改页面上的某些组件演示文稿。

当您在另一个结构组上复制它时,您正在创建一个在其他结构组中具有名称的页面,因此工作流程会启动,因为它不是同一结构组中的相同副本。

我认为这是一个不错的功能:) :)。

然而,尼克建议我也建议提交支持票。

如果您想考虑针对您的场景#1的编程方法,您可以通过简单地使用创建它的同一用户再次保存页面来实施EventSystem以强制启动工作流程。您需要捕获CopyEvent

如果你想要这条路线(未经测试),请使用示例EventSystem存根:

private void Subscribe()
{
     EventSystem.Subscribe<Page, CopyEventArgs>(PostCopyActivity, EventPhases.Processed);
}

private static void PostCopyActivity(Page page, CopyEventArgs args, EventPhases phase) 
{
    // do your logic to save page..
       string sourceId = args.CopiedObject.OrganizationalItem.Id;
       string destinationId = args.Destination.ToString();
       if (sourceId.Equals(destinationId))
       {
          // copying to the same location .. so now get the User Session and Update the page to force workflow

       }
}

希望这些信息有所帮助。

答案 1 :(得分:0)

我继续在我的系统上尝试这个,并且它在任何情况下都没有启动工作流程(复制/粘贴到相同的结构组或不同的结构组)。

您是否在粘贴时触发了事件?