Как программно отправить элемент в рабочий процесс?

У меня есть шаблон "проекта", рабочий процесс "рабочий процесс проекта" на этом шаблоне и много элементов, созданных из шаблона проекта.

Как пользователь без прав администратора, когда я редактирую элемент проекта, он отправляется в рабочий процесс. Этого не произойдет, если я вошел в систему как администратор, потому что пользователи-администраторы игнорируют рабочий процесс.

У меня есть процесс массового импорта, где я редактирую элементы через 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);
Другие вопросы по тегам