Sitecore 如何以编程方式将项目发送到工作流?

Sitecore 如何以编程方式将项目发送到工作流?,sitecore,sitecore6,sitecore-workflow,Sitecore,Sitecore6,Sitecore Workflow,我有一个项目模板,一个基于该模板的工作流项目工作流,以及许多从该项目模板创建的项目 作为非管理员用户,当我编辑项目项时,它将被发送到工作流。如果我以管理员身份登录,则不会发生这种情况,因为管理员用户会忽略工作流 我有一个批量导入过程,通过Sitecore API编辑项目: updateItem.Editing.BeginEdit(); updateItem.Versions.AddVersion(); updateItem.Fields["x"] = someVal; updateItem.Fi

我有一个项目模板,一个基于该模板的工作流项目工作流,以及许多从该项目模板创建的项目

作为非管理员用户,当我编辑项目项时,它将被发送到工作流。如果我以管理员身份登录,则不会发生这种情况,因为管理员用户会忽略工作流

我有一个批量导入过程,通过Sitecore API编辑项目:

updateItem.Editing.BeginEdit();
updateItem.Versions.AddVersion();
updateItem.Fields["x"] = someVal;
updateItem.Fields["y"] = someOtherVal;
updateItem.Fields["z"] = yetAnotherVal;
updateItem.Editing.EndEdit();
当我以管理员身份运行此批量导入代码时,我希望我的项目通过工作流,以便有人参与批准或拒绝导入的项目,但这不会发生,因为管理员用户忽略工作流


有没有办法通过编程将我修改的项目发送到工作流?存在Item.State.GetWorkflowState,但似乎没有相应的SetWorkflowState。

未经内容审批人批准发布内容不是一个好方法

我不是100%肯定这一点,因为我没有尝试过这个

以下是我找到的代码:

//add to workflow if requried and place it in start state and then execute the final stage
Sitecore.Workflows.IWorkflow workflow = master.WorkflowProvider.GetWorkflow(newItem);
workflow.Start(newItem);
workflow.Execute(Config.AutoPublishCommandID, newItem, "auto approved", false);
出版:

//publish to pre-defined targets and langugaes
Database[] targetDBs = new Database[] {        Sitecore.Configuration.Factory.GetDatabase("web") };
Language[] languages = new Language[] { LanguageManager.GetLanguage("en") };
Sitecore.Publishing.PublishManager.PublishIncremental(master, targetDBs, languages);

未经内容审批人批准发布内容不是一个好方法

我不是100%肯定这一点,因为我没有尝试过这个

以下是我找到的代码:

//add to workflow if requried and place it in start state and then execute the final stage
Sitecore.Workflows.IWorkflow workflow = master.WorkflowProvider.GetWorkflow(newItem);
workflow.Start(newItem);
workflow.Execute(Config.AutoPublishCommandID, newItem, "auto approved", false);
出版:

//publish to pre-defined targets and langugaes
Database[] targetDBs = new Database[] {        Sitecore.Configuration.Factory.GetDatabase("web") };
Language[] languages = new Language[] { LanguageManager.GetLanguage("en") };
Sitecore.Publishing.PublishManager.PublishIncremental(master, targetDBs, languages);

Sitecore版本是6.5.0。Sitecore版本是6.5.0。他没有提到任何关于发布的内容,只是希望通过工作流处理导入的项目。但您提供的workflow.Execute解决方案是正确的方法。我已经更新了我的答案,并按照@RuudvanFalier.Thank@PankajTiwari的要求添加了发布功能,这似乎非常有效。我只希望代码一直到workflow.Start——我仍然将审批和发布留给实际用户。我还发现我可以用updateItem.Fields[u workflow state].Value={123ABC-…}设置工作流状态,也就是说,手动设置该字段的值,但这看起来更像是正确的方法。他没有提到任何关于发布的内容,只是希望导入的项目由工作流处理。但您提供的workflow.Execute解决方案是正确的方法。我已经更新了我的答案,并按照@RuudvanFalier.Thank@PankajTiwari的要求添加了发布功能,这似乎非常有效。我只希望代码一直到workflow.Start——我仍然将审批和发布留给实际用户。我还发现我可以用updateItem.Fields[u workflow state].Value={123ABC-…}设置工作流状态,即手动设置该字段的值,但这看起来更像是正确的方法。