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>();
 }
Exemple #3
0
 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>();
 }