0

他の誰かがこの問題とその解決策を持っているかどうかを確認します。

タスクを使用しないリスト (ライブラリではない) に Visual Studio シーケンシャル ワークフローがあります。承認プロセスは、リスト アイテムの [承認/却下] ボタンを使用して行われます。承認は 2 段階の承認であり、第 1 段階が ([OOTB の承認] ボタンをクリックして) 完了した場合、ModerationInformation.Status を承認済みから保留中にリセットし、第 2 段階の承認者に電子メールを送信します。

私の問題は、ModerationInformation.Status を Approved から Pending に戻すと、承認されたバージョンが存在しないため、Creator はアイテムを表示する権限を失い、SharePoint から「アイテムが見つかりません」というエラーが表示されることです。アイテムを作成しました。第 1 レベルと第 2 レベルの承認者、および承認権限を持つユーザーは引き続きアイテムを表示できます。

いくつかの背景情報。モデレーション情報を更新するために使用しているコードは

ワークフロー イベントからプロパティを取得し、listitem へのフックを取得します

properties.Item.ModerationInformation.Status = SPModerationStatusType.Pending; properties.Item.Update();

誰でも助けることができます。

4

1 に答える 1

0

これを使用してみるproperties.Item.SystemUpdate();と、SHarePointが接続されているEventReceiversなどをトリガーするのを防ぐことができます。同じことが起こりました。私見これは、アイテムが更新モードになり、SharePointが基本的にアイテムを制御しているという事実に関連しています(ワークフローは通常、システムアカウントとして実行されるため)が、それでもリターンURL(つまり、EditItem)に戻ります。リストのページ)。

SharePointはおそらくまだアイテムの作業を行っているため(そしてitem.Update()を使用すると、すべてのイベントなどを通過します)、システムアカウントではないため、SharePointを開くことはできません。

SharePointが終了すると(電子メールの送信後など)、ユーザーはそのアイテムに再びアクセスできます。

私が言ったように、私は長時間(つまり2〜3秒以上)のEventReceivers/ワークフローでも同じことが起こりました。

于 2009-11-03T00:27:44.387 に答える