Tag: sitecore workflow

为什么Sitecore会从C#API发布草稿项目,我该如何阻止它呢?

我正在使用Sitecore发布API运行我的Sitecore主数据库的预定发布。 我在一天中按计划的时间间隔调用一个Web服务,它运行以下代码(为了便于阅读,略微精简): // grab the root content node from sitecore Item contentNode = dbSource.Items[ID.Parse(“{0DE95AE4-41AB-4D01-9EB0-67441B7C2450}”)]; PublishOptions options = new PublishOptions(sourceDatabase, targetDatabase, PublishMode.Smart, lang, DateTime.Now); options.RootItem = contentNode; options.Deep = true; Publisher p = new Publisher(options); p.PublishAsync(); 当我们运行上面的代码时,它会发布内容节点中的所有内容,包括所有后代,而不管工作流状态如何。 这就像它完全忽略了工作流程。 这不是我们所追求的,并且在我们的实时网站上造成了很多问题。 如果我们从Sitecore Desktop中运行相同的操作,它将发布内容节点中的所有内容,包括可发布的所有后代(即最终工作流阶段)。 它不会在树中发布仍处于草稿模式的任何项目。 这是必需的行为。 我已尝试通过使用以下using语句包含上述代码来将代码实现为非管理员用户: string userName = @”sitecore\******”; Sitecore.Security.Accounts.User user = Sitecore.Security.Accounts.User.FromName(userName, true); user.RuntimeSettings.IsAdministrator = false; […]

Sitecore:以编程方式将工作流分配给项目

我已经配置了一个工作流程,像往常一样以“草稿”状态开始。 我已经为模板的标准值配置了工作流程。 它在内容编辑器中工作得很好。 (当我使用内容编辑器创建项目时,一旦我创建项目,工作流程就会被分配给项目,并且状态变为“草稿”。) 但是当我在上述模板下以编程方式创建项目时,它不会分配工作流程。 我该怎么做才能分配工作流程? 如果有,请分享任何代码示例。 谢谢。 Sitecore.Data.Items.TemplateItem template = this.MasterDatabase.GetItem(“/sitecore/templates/user defined/sample types”); Sitecore.Data.Items.Item parent = this.MasterDatabase.GetItem(parentId); Sitecore.Data.Items.Item newItem; // Create new item and retrieve it newItem = template.CreateItemFrom(“sampleName”, parent); newItem.Editing.BeginEdit(); newItem.Name = StringFormatter.CreateItemNameFromID(this.newItem); newItem.Fields[“Title”].Value = “Sample Title” newItem.Editing.EndEdit();