Programmatically getting the Approval start and End date for the OOB approval workflow associated to the custom list

Programmatically getting the Approval start and End date for the OOB approval workflow associated to the custom list

Step 1) Get the Workflow instance id from the custom list using the Server Object Model

Step 2) Build CAML query and pass the below parameters to the Workflow history Custom list

                                 2.a) Workflow instance ID

                                 2.b) Event type = 1 (1 is for completed workflows)

                                 2.c) Primary Item ID (Retrieved by custom list properties using object model)

 

Code Snippet is as follows

 #region Getting Review Start Date - Workflow Initiated

 

 

SPListItem oobapprovalitem = listItem; //Pass the list item

oobapprovalworkflows = oobapprovalitem.Workflows.Count;

 

                                    if (oobapprovalworkflows > 0)
                                    {
                                        oobapprovalworkflowReviewStartItemID = oobapprovalitem.Workflows[0].ItemId.ToString();

                                        SPList reviewStartoobapprovalwrkflwHistoryList = thisWeb.Lists["Workflow History"];
                                        SPQuery reviewStartoobapprovalwrkflwHistoryquery = new SPQuery();

                                        StringBuilder strReviewStartDateQuery = new StringBuilder();
                                        strReviewStartDateQuery.Append("<Where>");
                                        strReviewStartDateQuery.Append("<And>");
                                        strReviewStartDateQuery.Append("<Eq><FieldRef Name='Event' /><Value Type='WorkflowEventType'>1</Value>");
                                        strReviewStartDateQuery.Append("</Eq>");

                                        if (oobapprovalworkflows > 1)
                                        {
                                            strReviewStartDateQuery.Append("<Or>");
                                        }

                                        strReviewStartDateQuery.Append("<Eq><FieldRef Name='WorkflowInstance' /><Value Type='Text'>" + "{" + oobapprovalListItem.Workflows[0].InstanceId + "}" + "</Value>");
                                        strReviewStartDateQuery.Append("</Eq>");

                                        if (oobapprovalworkflows > 1)
                                        {
                                            for (int i = 1; i < oobapprovalworkflows; i++)
                                            {
                                                if (i != oobapprovalworkflows - 1)
                                                {
                                                    strReviewStartDateQuery.Append("<Or>");
                                                }

                                                strReviewStartDateQuery.Append("<Eq><FieldRef Name='WorkflowInstance' /><Value Type='Text'>" + "{" + oobapprovalListItem.Workflows[i].InstanceId + "}" + "</Value>");
                                                strReviewStartDateQuery.Append("</Eq>");

                                            }

                                        }

                                        if (oobapprovalworkflows > 1)
                                        {
                                            for (int i = 1; i < oobapprovalworkflows; i++)
                                            {
                                                if (i != oobapprovalworkflows - 1)
                                                {
                                                    strReviewStartDateQuery.Append("</Or>");
                                                }
                                            }

                                            strReviewStartDateQuery.Append("</Or>");
                                        }

                                        strReviewStartDateQuery.Append("</And>");
                                        strReviewStartDateQuery.Append("</Where>");
                                        strReviewStartDateQuery.Append("<OrderBy><FieldRef Name='Occurred' Ascending='True' /></OrderBy>");

 

                                        reviewStartoobapprovalwrkflwHistoryquery.Query = strReviewStartDateQuery.ToString();// @"<Where><And><Eq><FieldRef Name='Event' /><Value Type='WorkflowEventType'>1</Value></Eq><And><Eq><FieldRef Name='WorkflowInstance' /><Value Type='Text'>" + "{" + oobapprovalListItem.Workflows[0].InstanceId + "}" + "</Value></Eq><Eq><FieldRef Name='Item' /><Value Type='Integer'>" + oobapprovalworkflowReviewStartItemID + "</Value></Eq></And></And></Where>";
                                        reviewStartoobapprovalwrkflwHistoryquery.RowLimit = 1;

                                        SPListItemCollection reviewStartoobapprovalwrkflwHistorylistItemCollection = reviewStartoobapprovalwrkflwHistoryList.GetItems(reviewStartoobapprovalwrkflwHistoryquery);
                                        if (reviewStartoobapprovalwrkflwHistorylistItemCollection.Count > 0)
                                        {
                                            foreach (SPListItem reviewStartoobapprovalwrkflwHistoryListItem in reviewStartoobapprovalwrkflwHistorylistItemCollection)
                                            {
                                                if (reviewStartoobapprovalwrkflwHistoryListItem["Primary Item ID"].ToString() == oobapprovalworkflowReviewStartItemID)
                                                {
                                                    //Getting Date Occured column value
                                                    // strIQA1ReviewStartDate = reviewStartoobapprovalwrkflwHistoryListItem[11].ToString();
                                                    strIQA1ReviewStartDate = Convert.ToDateTime(reviewStartoobapprovalwrkflwHistoryListItem[11].ToString()).ToString(@"MM/dd/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
                                                    //this.Controls.Add(reviewStartDate);

                                                }
                                            }
                                        }
                                        strReviewStartDateQuery.Length = 0;
                                    }
                                    #endregion

Leave a Comment
  • Please add 8 and 3 and type the answer here:
  • Post
Wiki - Revision Comment List(Revision Comment)
Sort by: Published Date | Most Recent | Most Useful
Comments
Page 1 of 1 (1 items)
Wikis - Comment List
Sort by: Published Date | Most Recent | Most Useful
Posting comments is temporarily disabled until 10:00am PST on Saturday, December 14th. Thank you for your patience.
Comments
Page 1 of 1 (1 items)