Установка ModerationInformation.Status из утвержденного обратно в ожидание удаления
Увидеть, была ли у кого-то еще эта проблема и как решить ее.
У меня есть последовательный рабочий процесс Visual Studio в списке (не в библиотеке), который НЕ использует задачи, процесс утверждения выполняется с помощью кнопок "Утвердить / Отклонить OOTB" на элементе списка. Утверждение представляет собой двухэтапное утверждение, при котором, если 1-й этап завершен (путем нажатия кнопки "Подтвердить OOTB"), я переустанавливаю ModerationInformation.Status с "Утверждено" до ожидающего, а затем отправляю электронное письмо утверждающему 2-го этапа.
Моя проблема заключается в том, что когда я устанавливаю для ModerationInformation.Status значение Pending from Approved, чтобы никогда не было утвержденной версии, Создатель теряет разрешения на просмотр элемента, и я получаю сообщение об ошибке "Не удается найти элемент" от SharePoint для человека, который создал предмет. Подтверждающие 1-го и 2-го уровня и все, кто имеет права одобрения, МОГУТ все еще видеть элемент
Еще немного справочной информации. код, который я использую для обновления информации о модерации:
Я получаю свойства из события рабочего процесса и получаю хук в элемент списка
properties.Item.ModerationInformation.Status = SPModerationStatusType.Pending; properties.Item.Update();
может кто-нибудь помочь.
1 ответ
Попробуйте использовать properties.Item.SystemUpdate();
это препятствует тому, чтобы SHarePoint запускал любые прикрепленные EventReceivers и т. д. У меня тоже самое происходило. ИМХО, это связано с тем, что элемент переходит в режим обновления, тогда SharePoint в основном взял под свой контроль элемент (видя, что рабочие процессы обычно запускаются как системная учетная запись), но все равно отправляет вас обратно на URL-адрес возврата (т.е. EditItem страница списка).
Поскольку SharePoint, вероятно, все еще выполняет работу с элементом (и когда вы используете item.Update(), он просматривает все события и т. Д. И т. Д.), Вы больше не можете его открыть, поскольку вы не являетесь системной учетной записью.
Когда SharePoint завершает работу (после отправки писем и т. Д.), Элемент снова становится доступен пользователям.
Как я уже сказал, у меня происходило то же самое в течение длительного времени (т. Е. Более 2–3 секунд) EventReceivers / Workflows.