コード例 #1
0
        /// <summary>
        /// 工作流已完成.
        /// </summary>
        public override void WorkflowCompleted(SPWorkflowEventProperties properties)
        {
            base.WorkflowCompleted(properties);
            if (properties.CompletionType != SPWorkflowEventCompletionType.Completed)
            {
                return;
            }
            SPSecurity.RunWithElevatedPrivileges(delegate
            {
                using (SPSite site = new SPSite(properties.WebUrl))
                {
                    string title = "";
                    try
                    {
                        using (SPWeb web = site.OpenWeb())
                        {
                            SPWorkflow wf = new SPWorkflow(web, properties.InstanceId);
                            SPList list   = web.Lists[wf.ListId];
                            if (list.Title == "请假单")
                            {
                                SPListItem item = list.Items.GetItemById(wf.ItemId);
                                title           = item.Title;
                                if (!Records.IsRecord(item))
                                {
                                    Records.DeclareItemAsRecord(item);
                                    log(site, "请假单流程结束", "消息", "请假单【" + title + "】流程结束,已经声明为记录。");

                                    if (item["请假单审批流程"].ToString() == "16")                                // 通过了才扣年假,对吧。
                                    {
                                        if (item["假别"].ToString() == "年假")
                                        {
                                            SPList annual_list = web.Lists["年假汇总"];
                                            SPQuery query      = new SPQuery();
                                            DateTime date      = DateTime.Parse(item["开始日期"].ToString());
                                            string user_id     = item["创建者"].ToString().Split(new char[] { ';', '#' })[0];
                                            query.Query        = "<Where><And><Eq><FieldRef Name='_x5e74__x4efd_'/><Value Type='Integer'>" + date.Year + "</Value></Eq><Eq><FieldRef Name='_x4eba__x5458_' LookupId='TRUE'/><Value Type='User'>" + user_id + "</Value></Eq></And></Where>";
                                            SPListItemCollection annual_items = annual_list.GetItems(query);
                                            if (annual_items.Count > 0)
                                            {
                                                SPListItem annual_item = annual_items[0];
                                                int annual_days_left   = int.Parse(annual_item["剩余年假天数"].ToString());
                                                int leave_days         = int.Parse(item["请假天数"].ToString());
                                                annual_item["剩余年假天数"]  = annual_days_left - leave_days;
                                                annual_item.Update();
                                                log(site, "年假汇总更新", "消息", "请假单【" + title + "】流程结束,对应的年假剩余天数已经更新。");
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        log(site, "请假单流程结束", "错误", "请假单【" + title + "】流程结束,声明为记录时出错。" + ex.ToString());
                    }
                }
            });
        }
        /// <summary>
        /// 工作流已完成.
        /// </summary>
        public override void WorkflowCompleted(SPWorkflowEventProperties properties)
        {
            base.WorkflowCompleted(properties);
               if (properties.CompletionType != SPWorkflowEventCompletionType.Completed) return;
               SPSecurity.RunWithElevatedPrivileges(delegate
               {
               using (SPSite site = new SPSite(properties.WebUrl))
               {
                   string title="";
                   try
                   {
                       using (SPWeb web = site.OpenWeb())
                       {
                           SPWorkflow wf = new SPWorkflow(web, properties.InstanceId);
                           SPList list = web.Lists[wf.ListId];
                           if (list.Title == "请假单")
                           {
                               SPListItem item = list.Items.GetItemById(wf.ItemId);
                               title = item.Title;
                               if (!Records.IsRecord(item))
                               {
                                   Records.DeclareItemAsRecord(item);
                                   log(site, "请假单流程结束", "消息", "请假单【" + title + "】流程结束,已经声明为记录。");

                                   if (item["请假单审批流程"].ToString() == "16") // 通过了才扣年假,对吧。
                                   {
                                       if (item["假别"].ToString() == "年假")
                                       {
                                           SPList annual_list = web.Lists["年假汇总"];
                                           SPQuery query = new SPQuery();
                                           DateTime date = DateTime.Parse(item["开始日期"].ToString());
                                           string user_id = item["创建者"].ToString().Split(new char[] { ';', '#' })[0];
                                           query.Query = "<Where><And><Eq><FieldRef Name='_x5e74__x4efd_'/><Value Type='Integer'>" + date.Year + "</Value></Eq><Eq><FieldRef Name='_x4eba__x5458_' LookupId='TRUE'/><Value Type='User'>" + user_id + "</Value></Eq></And></Where>";
                                           SPListItemCollection annual_items = annual_list.GetItems(query);
                                           if (annual_items.Count > 0)
                                           {
                                               SPListItem annual_item = annual_items[0];
                                               int annual_days_left = int.Parse(annual_item["剩余年假天数"].ToString());
                                               int leave_days = int.Parse(item["请假天数"].ToString());
                                               annual_item["剩余年假天数"] = annual_days_left - leave_days;
                                               annual_item.Update();
                                               log(site, "年假汇总更新", "消息", "请假单【" + title + "】流程结束,对应的年假剩余天数已经更新。");
                                           }
                                       }
                                   }
                               }
                           }
                       }

                   }
                   catch (Exception ex)
                   {
                       log(site, "请假单流程结束", "错误", "请假单【" + title + "】流程结束,声明为记录时出错。" + ex.ToString());
                   }
               }
               });
        }
コード例 #3
0
ファイル: WorkflowReceiver.cs プロジェクト: NAVERTICA/SPTools
 /// <summary>
 /// A workflow is starting.
 /// </summary>
 public override void WorkflowStarting(SPWorkflowEventProperties properties)
 {
     base.WorkflowStarting(properties);
 }
コード例 #4
0
ファイル: WorkflowReceiver.cs プロジェクト: NAVERTICA/SPTools
 /// <summary>
 /// A workflow was postponed.
 /// </summary>
 public override void WorkflowPostponed(SPWorkflowEventProperties properties)
 {
     base.WorkflowPostponed(properties);
 }
コード例 #5
0
ファイル: WorkflowReceiver.cs プロジェクト: NAVERTICA/SPTools
 /// <summary>
 /// A workflow was completed.
 /// </summary>
 public override void WorkflowCompleted(SPWorkflowEventProperties properties)
 {
     base.WorkflowCompleted(properties);
 }
コード例 #6
0
        /// <summary>
        /// Log workflow event properties
        /// </summary>
        /// <param name="properties"></param>
        private void LogWorkflowEventProperties(SPWorkflowEventProperties properties)
        {
            //  Specify the Logs list name
            string listName = "WorkflowEventLogger";

            //  Create the string builder object
            StringBuilder sb = new StringBuilder();

            //  Add properties that do not throw an exception
            sb.AppendFormat("AssociationData: {0}\n", properties.AssociationData);
            sb.AppendFormat("Cancel: {0}\n", properties.Cancel);
            sb.AppendFormat("CompletionType: {0}\n", properties.CompletionType);
            sb.AppendFormat("ErrorMessage: {0}\n", properties.ErrorMessage);
            sb.AppendFormat("EventType: {0}\n", properties.EventType);
            sb.AppendFormat("InitiationData: {0}\n", properties.InitiationData);
            sb.AppendFormat("InstanceId: {0}\n", properties.InstanceId);
            sb.AppendFormat("PostponedEvent: {0}\n", properties.PostponedEvent);
            sb.AppendFormat("ReceiverData: {0}\n", properties.ReceiverData);
            sb.AppendFormat("RedirectUrl: {0}\n", properties.RedirectUrl);
            sb.AppendFormat("RelativeWebUrl: {0}\n", properties.RelativeWebUrl);
            sb.AppendFormat("SiteId: {0}\n", properties.SiteId);
            sb.AppendFormat("Status: {0}\n", properties.Status);
            sb.AppendFormat("TerminatedByUserId: {0}\n", properties.TerminatedByUserId);
            sb.AppendFormat("WebUrl: {0}\n", properties.WebUrl);

            //  Get activation properties
            SPWorkflowActivationProperties activationProperties = properties.ActivationProperties;

            if (activationProperties != null)
            {
                sb.AppendFormat("ActivationProperties.AssociationData: {0}\n", activationProperties.AssociationData);
                sb.AppendFormat("ActivationProperties.HistoryListId: {0}\n", activationProperties.HistoryListId);
                sb.AppendFormat("ActivationProperties.HistoryListUrl: {0}\n", activationProperties.HistoryListUrl);
                sb.AppendFormat("ActivationProperties.InitiationData: {0}\n", activationProperties.InitiationData);
                sb.AppendFormat("ActivationProperties.ItemId: {0}\n", activationProperties.ItemId);
                sb.AppendFormat("ActivationProperties.ItemUrl: {0}\n", activationProperties.ItemUrl);
                sb.AppendFormat("ActivationProperties.ListId: {0}\n", activationProperties.ListId);
                sb.AppendFormat("ActivationProperties.ListUrl: {0}\n", activationProperties.ListUrl);
                sb.AppendFormat("ActivationProperties.Originator: {0}\n", activationProperties.Originator);
                sb.AppendFormat("ActivationProperties.OriginatorEmail: {0}\n", activationProperties.OriginatorEmail);
                sb.AppendFormat("ActivationProperties.SiteId: {0}\n", activationProperties.SiteId);
                sb.AppendFormat("ActivationProperties.SiteUrl: {0}\n", activationProperties.SiteUrl);
                sb.AppendFormat("ActivationProperties.TaskListId: {0}\n", activationProperties.TaskListId);
                sb.AppendFormat("ActivationProperties.TaskListUrl: {0}\n", activationProperties.TaskListUrl);
                sb.AppendFormat("ActivationProperties.TemplateName: {0}\n", activationProperties.TemplateName);
                sb.AppendFormat("ActivationProperties.WebId: {0}\n", activationProperties.WebId);
                sb.AppendFormat("ActivationProperties.WebUrl: {0}\n", activationProperties.WebUrl);
                sb.AppendFormat("ActivationProperties.WorkflowId: {0}\n", activationProperties.WorkflowId);

                //  Add properties that might throw an excpetion
                try
                {
                    sb.AppendFormat("ActivationProperties.Context: {0}\n", activationProperties.Context);
                    sb.AppendFormat("ActivationProperties.HistoryList: {0}\n", activationProperties.HistoryList);
                    sb.AppendFormat("ActivationProperties.Item: {0}\n", activationProperties.Item);
                    sb.AppendFormat("ActivationProperties.List: {0}\n", activationProperties.List);
                    sb.AppendFormat("ActivationProperties.OriginatorUser: {0}\n", activationProperties.OriginatorUser);
                    sb.AppendFormat("ActivationProperties.Site: {0}\n", activationProperties.Site);
                    sb.AppendFormat("ActivationProperties.TaskList: {0}\n", activationProperties.TaskList);
                    sb.AppendFormat("ActivationProperties.Web: {0}\n", activationProperties.Web);
                    sb.AppendFormat("ActivationProperties.Workflow: {0}\n", activationProperties.Workflow);
                }
                catch (Exception e)
                {
                    sb.AppendFormat("\nError accessing ActivationProperties property:\n\n {0}", e);
                }
            }
            else
            {
                sb.AppendFormat("ActivationProperties is null\n");
            }

            //  Log the event to the list
            this.EventFiringEnabled = false;
            Common.LogEvent(properties.ActivationProperties.Web, listName, properties.EventType, sb.ToString());
            this.EventFiringEnabled = true;
        }
コード例 #7
0
 /// <summary>
 /// A workflow was completed.
 /// </summary>
 public override void WorkflowCompleted(SPWorkflowEventProperties properties)
 {
     this.LogWorkflowEventProperties(properties);
 }
コード例 #8
0
 /// <summary>
 /// A workflow was postponed.
 /// </summary>
 public override void WorkflowPostponed(SPWorkflowEventProperties properties)
 {
     this.LogWorkflowEventProperties(properties);
 }
コード例 #9
0
 /// <summary>
 /// A workflow is starting.
 /// </summary>
 public override void WorkflowStarting(SPWorkflowEventProperties properties)
 {
     this.LogWorkflowEventProperties(properties);
 }