2

嗨:我构建了一个简单的顺序工作流,由内容类型使用的保留策略触发。该工作流获取当前项目的元数据并将其复制到位于不同网站集中的清除日志列表中。

由于保留策略而很难对此进行调试,这依赖于两个计时器作业:信息管理和过期策略。将调试器附加到 w3wp 和 owetimer 进程,但不能可靠地捕获激活的工作流。

我的每个文件的工作流程历史列表显示成功完成的工作流程。工作流的核心是一个代码活动,它从当前项目收集数据并更新一个中央列表。该过程完成后,该列表显示零项。它是位于代码活动中的代码吗?

我删除了所有异常处理以简化显示的内容。

代码

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;
         }
         }
         });
     }
    }
4

1 回答 1

0

真的不明白你的问题是什么,但对于调试问题,尝试这样做:1)部署后,你应该重新启动定时器服务 2)通过中央管理员,你可以去定时器工作并选择“立即运行”触发作业并开始调试

于 2012-11-15T10:55:35.633 回答