Sitecore 工作箱不会创建新版本,因此它不会跟踪更改集。(工作人员正在使用工作箱,管理员需要跟踪这些更改。)据我所知,当项目未处于最终工作流程状态时,Sitecore 允许覆盖内容,但如果项目处于最终工作流程中状态,它将创建一个新版本,跟踪所有这些变化。
是否可以为非最终工作流状态创建新版本?这是个好主意吗?为什么 Sitecore 默认不这样做?
Sitecore 工作箱不会创建新版本,因此它不会跟踪更改集。(工作人员正在使用工作箱,管理员需要跟踪这些更改。)据我所知,当项目未处于最终工作流程状态时,Sitecore 允许覆盖内容,但如果项目处于最终工作流程中状态,它将创建一个新版本,跟踪所有这些变化。
是否可以为非最终工作流状态创建新版本?这是个好主意吗?为什么 Sitecore 默认不这样做?
您描述的行为就是文档所说的。仅当项目处于最终工作流程状态时才会创建项目的新版本,并且
下次内容作者单击此项目的编辑以在进行更改之前将其锁定时,Sitecore 会自动创建该项目的新版本并将新版本置于草稿状态,而第一个版本仍保持发布状态。
还有一个重要信息:
确保内容作者或其他工作流用户没有 Sitecore 管理员帐户。否则,工作流将表现不同。有关 Sitecore 管理员的工作流行为为何不同的更多信息,请参阅使用工作流部分。
根据工作流参考文档,当用户保存对项目的更改时,您可以使用 __OnSave 命令创建新版本的项目。
使用 /sitecore/templates/System/Workflow/Action 模板创建自定义操作。
创建一个实现所需行为的类。
namespace OnAction
{
public class WorkflowAction
{
public void Process(WorkflowPipelineArgs args)
{
}
}
}
以下是创建新项目版本的示例:
var language = Sitecore.Globalization.Language.Parse("en");
var item = master.GetItem(itemPath, language);
using (new Sitecore.SecurityModel.SecurityDisabler())
{
try
{
item .Versions.AddVersion();
item .Editing.BeginEdit();
....
item .Editing.EndEdit();
item .Editing.AcceptChanges();
}
catch (Exception ex)
{
item .Editing.CancelEdit();
}
}