示例#1
0
    protected override void InitFormData()
    {
        try
        {
            /**/
            CustomWorkflowDataProcess.LoadWorkItemsFromDBToSession(FormId, _BPMContext.ProcID);
            LoadWorkItemsData();
            var info = BizContext.OA_CustomWorkFlowInstance.FirstOrDefault(x => x.FormID == FormId);
            if (info != null)
            {
                tbTheme.Text   = info.Title;
                tbContent.Text = info.ContentTxt;

                ListItem li = ddlDepartName.Items.FindByValue(info.DeptCode);
                if (li != null)
                {
                    li.Selected = true;
                }
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
示例#2
0
        protected override string GetCurrentActiveName(string sn)
        {
            var    info = DBContext.GetBizContext().OA_CustomWorkFlowInstance.FirstOrDefault(x => x.FormID == _BPMContext.ProcInst.FormId);
            var    list = CustomWorkflowDataProcess.GetWorkItemsData(_BPMContext.ProcID, _BPMContext.ProcInst.FormId);
            string currentActivityName = DBContext.GetSysContext().WF_Custom_InstanceItems.FirstOrDefault(x => x.StepID == info.CurrentStepId).StepName;

            return(currentActivityName);
        }
示例#3
0
    private void InitFlowData()
    {
        List <Pkurg.PWorldBPM.Business.Sys.WF_Custom_InstanceItems> itemInfos = CustomWorkflowDataProcess.GetWorkItemsData(_BPMContext.ProcID, FormId);

        if (itemInfos != null)
        {
            rptList.DataSource = itemInfos;
            rptList.DataBind();
        }
    }
示例#4
0
    protected override bool AfterWorkflowApproval(string action, string option, bool isSuccess)
    {
        if (isSuccess)
        {
            ///对于加签
            if (action == "提交")
            {
                return(true);
            }

            ///更新当前步骤审批人处理记录
            var currentStep = SysContext.WF_Custom_InstanceItems.FirstOrDefault(x => x.StepID == CurrentStep);
            List <CustomWorkflowUserInfo> userinfos = currentStep.PartUsers.ToUserList();
            var currentParter = userinfos.FirstOrDefault(x => x.UserInfo.LoginName == _BPMContext.CurrentUser.LoginId);
            if (currentParter != null)
            {
                currentParter.IsApproval = true;
                currentStep.PartUsers    = userinfos.ToXml();
                SysContext.SubmitChanges();
            }

            if (userinfos.Count(x => !x.IsApproval) == 0)
            {
                //本步骤所有人已经执行审批

                ///更新当前自定义实例步骤
                if (action == "同意")
                {
                    var list       = CustomWorkflowDataProcess.GetWorkItemsData(_BPMContext.ProcID, FormId);
                    var nextInfo   = list.Where(x => x.StepID > CurrentStep && !string.IsNullOrEmpty(x.PartUsers)).OrderBy(x => x.OrderId).FirstOrDefault();
                    var updateInfo = BizContext.OA_CustomWorkFlowInstance.FirstOrDefault(x => x.FormID == FormId);
                    if (nextInfo != null)
                    {
                        updateInfo.CurrentStepId = nextInfo.StepID;
                    }
                    else
                    {
                        updateInfo.CurrentStepId = -1;//没有后续节点,流程结束
                    }
                    BizContext.SubmitChanges();
                }
                else
                {
                    var updateInfo = BizContext.OA_CustomWorkFlowInstance.FirstOrDefault(x => x.FormID == FormId);

                    updateInfo.CurrentStepId = -1;//不同意,流程结束

                    BizContext.SubmitChanges();
                }
            }
        }


        return(true);
    }
示例#5
0
    protected void lbSelected_Command(object sender, CommandEventArgs e)
    {
        string FormId = Request["FormId"];

        if (string.IsNullOrWhiteSpace(FormId))
        {
            DisplayMessage.ExecuteJs(string.Format("window.returnValue = {0};window.close();", 0));
            return;
        }
        CustomWorkflowDataProcess.SaveSessionDataToTemplation(FormId, e.CommandArgument.ToString());
        DisplayMessage.ExecuteJs(string.Format("window.returnValue = {0};window.close();", 1));
    }
示例#6
0
    /// <summary>
    /// 流程发起前操作
    /// </summary>
    /// <returns></returns>
    protected override bool BeforeWorkflowStart()
    {
        List <Pkurg.PWorldBPM.Business.Sys.WF_Custom_InstanceItems> itemInfos = CustomWorkflowDataProcess.GetWorkItemsData(FormId);

        if (itemInfos == null || itemInfos.Count == 0)
        {
            Alert("没有设置流程步骤!");
            return(false);
        }

        return(true);
    }
示例#7
0
    private void SetCurrentStep(long stepId)
    {
        var list = CustomWorkflowDataProcess.GetWorkItemsData(_BPMContext.ProcID, FormId);

        if (stepId <= 1)
        {
            CurrentStep = list.OrderBy(x => x.OrderId).FirstOrDefault().StepID;
        }
        else
        {
            CurrentStep = stepId;
        }
    }
示例#8
0
        protected override bool AfterApproval(string instanceId, string option, string action)
        {
            ///对于加签
            if (IsAddSign())
            {
                return(true);
            }
            var context    = DBContext.GetSysContext();
            var bizContext = DBContext.GetBizContext();
            ///更新当前步骤审批人处理记录
            ///
            var bizInfo = bizContext.OA_CustomWorkFlowInstance.FirstOrDefault(x => x.FormID == _BPMContext.ProcInst.FormId);

            var currentStep = context.WF_Custom_InstanceItems.FirstOrDefault(x => x.StepID == bizInfo.CurrentStepId.Value);
            List <CustomWorkflowUserInfo> userinfos = currentStep.PartUsers.ToUserList();
            var currentParter = userinfos.FirstOrDefault(x => x.UserInfo.LoginName == _BPMContext.CurrentUser.LoginId);

            if (currentParter != null)
            {
                currentParter.IsApproval = true;
                currentStep.PartUsers    = userinfos.ToXml();
                context.SubmitChanges();
            }

            if (userinfos.Count(x => !x.IsApproval) == 0)
            {
                //本步骤所有人已经执行审批

                ///更新当前自定义实例步骤
                if (action == "同意")
                {
                    var list     = CustomWorkflowDataProcess.GetWorkItemsData(_BPMContext.ProcID, "");
                    var nextInfo = list.Where(x => x.StepID > bizInfo.CurrentStepId.Value && !string.IsNullOrEmpty(x.PartUsers)).OrderBy(x => x.OrderId).FirstOrDefault();
                    if (nextInfo != null)
                    {
                        bizInfo.CurrentStepId = nextInfo.StepID;
                    }
                    else
                    {
                        bizInfo.CurrentStepId = -1;//没有后续节点,流程结束
                    }
                }
                else
                {
                    bizInfo.CurrentStepId = -1;//不同意,流程结束
                }
                bizContext.SubmitChanges();
            }
            return(true);
        }
示例#9
0
    private void LoadWorkItemsData()
    {
        List <Pkurg.PWorldBPM.Business.Sys.WF_Custom_InstanceItems> itemInfos = CustomWorkflowDataProcess.GetWorkItemsData(FormId);

        if (itemInfos != null)
        {
            rptList.DataSource = itemInfos;
            rptList.DataBind();
            Div_NoStepsTip.Visible = false;
        }
        else
        {
            Div_NoStepsTip.Visible = true;
        }
    }
示例#10
0
    public string GetCurrentNodeName(string stepId)
    {
        string currentNodeName     = "";
        var    list                = CustomWorkflowDataProcess.GetWorkItemsData(_BPMContext.ProcID, FormId);
        string currentActivityName = list.FirstOrDefault(x => x.StepID.ToString() == stepId).StepName;

        if (stepId == CurrentStep.ToString())
        {
            CustomActivityName = currentActivityName;
            currentNodeName    = CustomWorkflowHelper.SuperNodeName + "," + currentActivityName;
        }
        else
        {
            currentNodeName = currentActivityName;
        }
        //}

        return(currentNodeName);
    }
示例#11
0
    protected override void AfterSaveInstance()
    {
        bool isSaveSuccess = SaveWorkItemsData(_BPMContext.ProcID);

        if (!isSaveSuccess)
        {
            Alert("没有步骤数据,请先设置步骤再保存!");
            return;
        }
        List <Pkurg.PWorldBPM.Business.Sys.WF_Custom_InstanceItems> itemInfos = CustomWorkflowDataProcess.GetWorkItemsData(FormId);

        var info = BizContext.OA_CustomWorkFlowInstance.FirstOrDefault(x => x.FormID == FormId);

        if (info != null)
        {
            var firstDept = itemInfos.Where(x => !string.IsNullOrEmpty(x.PartUsers)).OrderBy(x => x.OrderId).FirstOrDefault();
            info.CurrentStepId = firstDept == null ? -1 : firstDept.StepID;
        }
        BizContext.SubmitChanges();
    }
示例#12
0
    private void SaveWorkItemData()//Pkurg.PWorldBPM.Business.Sys.WF_Custom_InstanceItems itemInfo)
    {
        //if (string.IsNullOrEmpty(ShowUserNames1.UserList))
        //{
        //    DisplayMessage.ExecuteJs("alert('没有设置审批人员!')");
        //    return;
        //}

        string FormId = Request["FormId"];
        List <Pkurg.PWorldBPM.Business.Sys.WF_Custom_InstanceItems> itemInfos = CustomWorkflowDataProcess.GetWorkItemsData(FormId);

        if (itemInfos != null && itemInfos.Exists(x => x.StepName.ToLower() == tbStepName.Text))
        {
            DisplayMessage.ExecuteJs("alert('该步骤名称与已有步骤重名,请更换步骤名称!')");
            return;
        }

        int result = 0;

        try
        {
            CustomWorkflowDataProcess.SaveWorkItemData(new Pkurg.PWorldBPM.Business.Sys.WF_Custom_InstanceItems()
            {
                StepID    = StepID,
                StepName  = tbStepName.Text,
                PartUsers = ShowUserNames1.UserList
            },
                                                       FormId);
            result = 1;
        }
        catch (Exception)
        {
            //
        }
        DisplayMessage.ExecuteJs(string.Format("window.returnValue = {0};window.close();", result));
    }
示例#13
0
    protected void lbSelected_Command(object sender, CommandEventArgs e)
    {
        int result = 0;

        try
        {
            string userDomainName = e.CommandArgument.ToString();
            //DisplayMessage.ExecuteJs("alert('" + userDomainName + "')");
            //return;
            if (userDomainName.ToLower().Contains("founder\\"))
            {
                userDomainName = "founder\\" + userDomainName;
            }

            WorkflowHelper.ForwardToNextApprover(_BPMContext.Sn, _BPMContext.CurrentUser.LoginId, userDomainName);

            string Opinion = Request["optionTxt"];

            //2015-1-26 对加签的已办做增加Item处理,去掉为空意见优化
            string ApproveResult    = "加签";
            string OpinionType      = "";
            string IsSign           = "1";
            string DelegateUserName = "";
            string DelegateUserCode = "";

            WorkFlowInstance workFlowInstance = new WF_WorkFlowInstance().GetWorkFlowInstanceById(_BPMContext.ProcID);
            var appRecord = new Pkurg.PWorldBPM.Business.Sys.WF_Approval_Record()
            {
                ApprovalID        = Guid.NewGuid().ToString(),
                WFTaskID          = K2_TaskItem.ID,
                FormID            = workFlowInstance.FormId,
                InstanceID        = workFlowInstance.InstanceId,
                Opinion           = Opinion,
                ApproveAtTime     = DateTime.Now,
                ApproveByUserCode = _BPMContext.CurrentPWordUser.EmployeeCode,
                ApproveByUserName = _BPMContext.CurrentPWordUser.EmployeeName,
                ApproveResult     = ApproveResult,
                OpinionType       = OpinionType,
                CurrentActiveName = CustomWorkflowHelper.SuperNodeName == K2_TaskItem.ActivityInstanceDestination.Name ? CustomWorkflowDataProcess.GetCurrentStepNameById(_BPMContext.ProcID, K2_TaskItem.ActivityInstanceDestination.Name) : K2_TaskItem.ActivityInstanceDestination.Name,
                ISSign            = IsSign,
                CurrentActiveID   = K2_TaskItem.ActivityInstanceDestination.ActID.ToString(),
                DelegateUserName  = DelegateUserName,
                DelegateUserCode  = DelegateUserCode,
                CreateAtTime      = K2_TaskItem.ActivityInstanceDestination.StartDate,
                CreateByUserCode  = _BPMContext.CurrentPWordUser.EmployeeCode,
                CreateByUserName  = _BPMContext.CurrentPWordUser.EmployeeName,
                UpdateAtTime      = DateTime.Now,
                UpdateByUserCode  = _BPMContext.CurrentPWordUser.EmployeeCode,
                UpdateByUserName  = _BPMContext.CurrentPWordUser.EmployeeName,
                FinishedTime      = DateTime.Now
            };

            if (new BFApprovalRecord().AddApprovalRecord(appRecord))
            {
                if (new WF_WorkFlowInstance().UpdateStatus(workFlowInstance.WfInstanceId,
                                                           "1", K2_TaskItem.ActivityInstanceDestination.ID.ToString(),
                                                           K2_TaskItem.ActivityInstanceDestination.Name, K2_TaskItem.ID, null,
                                                           _BPMContext.CurrentPWordUser))
                {
                    result = 1;
                }
            }

            //if (string.IsNullOrEmpty(Opinion))
            //{
            //    result = 1;
            //}
            //else
            //{
            //    string ApproveResult = "加签";
            //    string OpinionType = "";
            //    string IsSign = "1";
            //    string DelegateUserName = "";
            //    string DelegateUserCode = "";

            //    WorkFlowInstance workFlowInstance = new WF_WorkFlowInstance().GetWorkFlowInstanceById(_BPMContext.ProcID);
            //    var appRecord = new Pkurg.PWorldBPM.Business.Sys.WF_Approval_Record()
            //    {
            //        ApprovalId = Guid.NewGuid().ToString(),
            //        WfTaskId = K2_TaskItem.ID,
            //        FormId = workFlowInstance.FormId,
            //        InstanceId = workFlowInstance.InstanceId,
            //        Opinion = Opinion,
            //        ApproveAtTime = DateTime.Now,
            //        ApproveByUserCode = _BPMContext.CurrentPWordUser.EmployeeCode,
            //        ApproveByUserName = _BPMContext.CurrentPWordUser.EmployeeName,
            //        ApproveResult = ApproveResult,
            //        OpinionType = OpinionType,
            //        CurrentActiveName = K2_TaskItem.ActivityInstanceDestination.Name,
            //        IsSign = IsSign,
            //        CurrentActiveId = K2_TaskItem.ActivityInstanceDestination.ActID.ToString(),
            //        DelegateUserName = DelegateUserName,
            //        DelegateUserCode = DelegateUserCode,
            //        CreateAtTime = K2_TaskItem.ActivityInstanceDestination.StartDate,
            //        CreateByUserCode = _BPMContext.CurrentPWordUser.EmployeeCode,
            //        CreateByUserName = _BPMContext.CurrentPWordUser.EmployeeName,
            //        UpdateAtTime = DateTime.Now,
            //        UpdateByUserCode = _BPMContext.CurrentPWordUser.EmployeeCode,
            //        UpdateByUserName = _BPMContext.CurrentPWordUser.EmployeeName,
            //        FinishedTime = DateTime.Now
            //    };

            //    if (new BFApprovalRecord().AddApprovalRecord(appRecord))
            //    {
            //        if (new WF_WorkFlowInstance().UpdateStatus(workFlowInstance.WfInstanceId,
            //            "1", K2_TaskItem.ActivityInstanceDestination.ID.ToString(),
            //            K2_TaskItem.ActivityInstanceDestination.Name, K2_TaskItem.ID, null,
            //            _BPMContext.CurrentPWordUser))
            //        {
            //            result = 1;
            //        }
            //    }
            //}
        }
        catch (Exception)
        {
        }
        DisplayMessage.ExecuteJs(string.Format("window.returnValue = {0};window.close();", result));
    }
示例#14
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string FormId = Request["FormId"];
            if (string.IsNullOrWhiteSpace(FormId) && string.IsNullOrWhiteSpace(_BPMContext.ProcID))
            {
                DisplayMessage.ExecuteJs(string.Format("window.returnValue = {0};window.close();", 0));
                return;
            }
            else
            {
                long   newId       = -1;
                string newIdString = Request["stepId"];
                if (!string.IsNullOrWhiteSpace(newIdString))
                {
                    long.TryParse(newIdString, out newId);
                }
                StepID = newId;
                if (StepID > 0)
                {
                    List <Pkurg.PWorldBPM.Business.Sys.WF_Custom_InstanceItems> itemInfos = CustomWorkflowDataProcess.GetWorkItemsData(FormId);
                    if (itemInfos != null)
                    {
                        var currentInfo = itemInfos.FirstOrDefault(x => x.StepID == StepID);
                        if (currentInfo == null)
                        {
                            DisplayMessage.ExecuteJs(string.Format("window.returnValue = {0};window.close();", 0));
                            return;
                        }
                        tbStepName.Text         = currentInfo.StepName;
                        ShowUserNames1.UserList = currentInfo.PartUsers;
                    }
                }

                Refresh("", "");
            }
        }
    }
示例#15
0
    private void SaveWorkItemDataToTemplation()//Pkurg.PWorldBPM.Business.Sys.WF_Custom_InstanceItems itemInfo)
    {
        int result = 0;

        string FormId = Request["FormId"];

        try
        {
            var itemList = CustomWorkflowDataProcess.GetWorkItemsData(FormId);
            if (itemList == null)
            {
                DisplayMessage.ExecuteJs(string.Format("window.returnValue = {0};window.close();", result));
                return;
            }
            string syncString = string.Empty;
            lock (syncString)
            {
                int maxId = 1;
                if (SysContext.WF_Custom_Templation.Count() > 0)
                {
                    maxId = SysContext.WF_Custom_Templation.Max(x => x.Id) + 1;
                    if (maxId <= 0)
                    {
                        maxId = 1;
                    }
                }

                SysContext.WF_Custom_Templation.InsertOnSubmit(new Pkurg.PWorldBPM.Business.Sys.WF_Custom_Templation()
                {
                    Id                 = maxId,
                    CreateTime         = DateTime.Now,
                    Name               = tbStepName.Text,
                    CreateUserID       = _BPMContext.CurrentPWordUser.EmployeeCode,
                    CreateUserDeptCode = _BPMContext.CurrentPWordUser.DepartCode,
                    CreateUserName     = _BPMContext.CurrentPWordUser.EmployeeName,
                    LastUpdateTime     = DateTime.Now,
                    IsOpen             = cbIsOpen.Checked ? 1 : 0,
                    RelationDeptCode   = GetCheckDept(),
                    Des                = tbDes.Text
                });


                long stepId = 1;
                if (SysContext.WF_Custom_TemplationItems.Count() > 0)
                {
                    stepId = SysContext.WF_Custom_TemplationItems.Max(x => x.StepID) + 1;
                }
                foreach (var item in itemList)
                {
                    SysContext.WF_Custom_TemplationItems.InsertOnSubmit(new Pkurg.PWorldBPM.Business.Sys.WF_Custom_TemplationItems()
                    {
                        TemplD     = maxId,
                        CreateTime = DateTime.Now,
                        PartUsers  = item.PartUsers,
                        OrderId    = item.OrderId,
                        StepID     = stepId++,
                        StepName   = item.StepName,
                        Condition  = item.Condition
                    });
                }
                SysContext.SubmitChanges();
            }
            result = 1;
        }
        catch (Exception)
        {
            //
        }
        DisplayMessage.ExecuteJs(string.Format("window.returnValue = {0};window.close();", result));
    }