2

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

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

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

4

1 回答 1

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);
于 2012-12-12T06:23:26.963 回答