Как программно отправить элемент в рабочий процесс?
У меня есть шаблон "проекта", рабочий процесс "рабочий процесс проекта" на этом шаблоне и много элементов, созданных из шаблона проекта.
Как пользователь без прав администратора, когда я редактирую элемент проекта, он отправляется в рабочий процесс. Этого не произойдет, если я вошел в систему как администратор, потому что пользователи-администраторы игнорируют рабочий процесс.
У меня есть процесс массового импорта, где я редактирую элементы через API Sitecore:
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 ответ
Публикация контента без одобрения утверждающего контента не является хорошим подходом.
Я не уверен на 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);