Привет: Я создал простой последовательный рабочий процесс, который запускается политикой хранения, используемой типом контента. Рабочий процесс берет метаданные текущего элемента и копирует их в список журнала очистки, расположенный в другом семействе сайтов.
Трудно отладить это из-за того, что политика хранения зависит от двух заданий таймера: управления информацией и политики истечения срока действия. Присоедините дегаггер к процессу 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;
}
}
});
}
}