1

ここでかなり奇妙な問題に直面しています。すべてのワークフロー履歴をワークフロー履歴リストに記録する OOTB 承認ワークフローがあります。このリストは 60 日ごとに消去されます。ワークフロー履歴が保持される期間を長くするために、グーグルで検索したところ、次のコードを実行したことがわかりました。

using (SPSite wfSite = new SPSite(siteUrl)) {

using (SPWeb wfWeb = wfSite.OpenWeb(webName))

{

     SPList wfList = wfWeb.Lists[listName];

     SPWorkflowAssociation _wfAssociation = null;

     foreach (SPWorkflowAssociation a in wfList.WorkflowAssociations)

     {

         if("approval 1" == wfAssociationName.ToLowerInvariant())

         {

             a.AutoCleanupDays = newCleanupDays;

             _wfAssociation = a;

             assoCounter++;

         }

         else

         {

             _wfAssociation = a;

         }

     }

     wfList.UpdateWorkflowAssociation(_wfAssociation);

}

}

コードは、例外をスローしないという意味で正常に動作します。ここまでは順調ですね。しかし、今の問題は、コードが機能するかどうかをテストする必要があることです。そのため、newCleanupDays 変数を 0 に設定しました。しかし、新しいワークフロー アクティビティがまだワークフロー履歴リストに記録されていることがわかります。変数を 1 に設定することはできますが、それは、コードが機能するかどうかを確認するために丸 1 日待つことを意味します..

自動クリーンアップの日数を 1 に設定して、コードが機能するかどうかを確認するために丸一日待つ必要がないように、シナリオをテストする方法はありますか? システムをだまして 1 日が経過したと思わせる方法はありますか? システム時刻を変更し、サーバーとすべてを再起動しようとしましたが、うまくいきませんでした。

4

1 に答える 1

2

システム時刻の変更は機能するはずですが、ワークフローを開始するタイマー ジョブを開始する必要があります。時刻変更後にサーバーを再起動しないでください。

警告の 1 つは、SharePoint は過去にさかのぼるのが本当に好きではないということです。「将来」に作成されるドキュメントには問題が発生します。そのため、「現在」にロールバックしたときに削除できる新しい Web サイトでテストすることを忘れないでください。

于 2008-12-01T21:05:42.697 に答える