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

时间:2012-12-12 06:06:13

标签: sitecore sitecore6 sitecore-workflow

我有一个“项目”模板,该模板上的工作流程“项目工作流程”以及从项目模板创建的大量项目。

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

我有一个批量导入过程,我通过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()。

1 个答案:

答案 0 :(得分:4)

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

我对此并不是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);