public static void GetWorkflowReport(string listName, List oList, ClientContext clientContext) { try { //Get all list items CamlQuery camlQuery = new CamlQuery(); camlQuery.ViewXml = "<View><Query>" + "<Where>" + "<And>" + "<Neq><FieldRef Name=\"Stage\"/><Value Type=\"Text\">Complete</Value></Neq>" + "<Neq><FieldRef Name=\"Stage\"/><Value Type=\"Text\">Draft</Value></Neq>" + "</And>" + "</Where>" + // "<OrderBy><FieldRef Name=\"Modified\" Ascending=\"FALSE\"/></OrderBy>" + "</Query>" + //"<RowLimit>5000</RowLimit>" + "</View>"; ListItemCollection collListItem = oList.GetItems(camlQuery); clientContext.Load(collListItem, items => items.Include( item => item.Id, item => item["Title"], item => item.ParentList)); clientContext.ExecuteQuery(); List <CSVOutput> list = new List <CSVOutput>(); foreach (ListItem oListItem in collListItem) { WorkflowInstanceCollection allinstances = WorkflowExtensions.GetWorkflowInstances(oList.ParentWeb, oListItem); //clientContext.Load(allinstances); //clientContext.ExecuteQuery(); foreach (WorkflowInstance instance in allinstances) { if (instance.Status == WorkflowStatus.Suspended || instance.Status == WorkflowStatus.Terminated) { WorkflowSubscription subscription = WorkflowExtensions.GetWorkflowSubscription(oList.ParentWeb, instance.WorkflowSubscriptionId); string itemUrl = String.Format(@"{0}/Lists/{1}/DispForm.aspx?ID={2}", oList.ParentWeb.Url, listName, oListItem.Id); string WorkflowUrl = String.Format(@"{0}/_layouts/15/workflow.aspx?List={1}&ID={2}", oList.ParentWeb.Url, oList.Id, oListItem.Id);; Console.WriteLine(string.Format("Item ID:{0}, Title:{1}, Item URL:{2} ", oListItem.Id, oListItem["Title"], itemUrl)); Console.Write(string.Format("Workflow Name:{0},Workflow Status:{1}, message:{2}, Workflow URL: {3} ", subscription.Name, instance.Status, instance.FaultInfo, WorkflowUrl)); CSVOutput item = new CSVOutput(oListItem.Id.ToString(), oListItem["Title"].ToString(), itemUrl, subscription.Name, instance.Status.ToString(), instance.FaultInfo, WorkflowUrl); list.Add(item); } } } WriteCSV(list); } catch (Exception ex) { throw ex; } }
public MessageHandleWorkflow(Workflow <HandleContext, IHandlerInstance> createHandler) { CreateHandler = createHandler; BeginHandle = WorkflowExtensions.Lamda <HandlerContext>(); ActualHandle = WorkflowExtensions.Lamda <HandlerContext>().Use((context) => new DynamicMessageHandle().RunAsync(context.Context)); EndHandle = WorkflowExtensions.Lamda <HandlerContext>(); Error = WorkflowExtensions.Lamda <ErrorContext>().Use((context) => new LogExceptionOnHandleError().RunAsync(context.Context)); Finalize = WorkflowExtensions.Lamda <HandleContext>(); }
public MessageHandleWorkflow(Workflow <HandleContext, IHandlerInstance> createHandler) { CreateHandler = createHandler; BeginHandle = WorkflowExtensions.Lamda <HandlerContext>(); ActualHandle = new DynamicMessageHandle(); EndHandle = WorkflowExtensions.Lamda <HandlerContext>(); Error = WorkflowExtensions.Lamda <ErrorContext>(); Finalize = WorkflowExtensions.Lamda <HandleContext>(); }