こんにちは:コンテンツタイプで使用される保持ポリシーによってトリガーされる単純なシーケンシャルワークフローを構築しました。ワークフローは、現在のアイテムのメタデータを取得し、それを別のサイトコレクションにあるパージログリストにコピーします。
保持ポリシーが原因でこれをデバッグするのに苦労しているのは、情報管理と有効期限ポリシーの2つのタイマージョブに依存しています。deguggerをw3wpおよびowetimerプロセスに接続しますが、アクティブ化されたワークフローを確実にキャッチしません。
各ファイルのワークフロー履歴リストには、ワークフローが正常に完了したことが示されています。ワークフローの要は、現在のアイテムからデータを収集し、中央リストを更新するコードアクティビティです。プロセスが完了した後、そのリストにはゼロのアイテムが表示されます。それはcodeactivityにあるコードですか?
表示内容を簡素化するために、すべての例外処理を削除しました。
コード
public Workflow1()
{
InitializeComponent();
}
public Guid workflowId = default(System.Guid);
public SPWorkflowActivationProperties workflowProperties = new SPWorkflowActivationProperties();
string purgeLogListPath = @"http://shptserver/sites/sp";
string listPath = @"http://shptserver/sites/sp/Lists/PurgeLog/AllItems.aspx";
private void onWorkflowActivated1_Invoked(object sender, ExternalDataEventArgs e)
{
}
private void codeActivity1_ExecuteCode(object sender, EventArgs e)
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(purgeLogListPath))
{
try
{
SPWeb web = site.OpenWeb("/");
SPList list = web.GetListFromUrl(listPath);
DateTime today = DateTime.Now;
SPListItem item = list.Items.Add();
item["Title"] = onWorkflowActivated1.WorkflowProperties.Item.DisplayName;
item["Encoded Absolute URL"] = onWorkflowActivated1.WorkflowProperties.ItemUrl;
item["Content Type"] = onWorkflowActivated1.WorkflowProperties.Item.ContentType.Name;
item["Date Purged"] = today.ToString("MMMM dd yyyy");
item["DateTime Purged"] = today.ToString("MMMM dd yyyy hh:mm:ss");
item.Update();
}
catch (Exception ex)
{
string errorEntry = ex.Message;
}
}
});
}
}