コード例 #1
0
        public string DeleteActivity(string processApproveChainXML, string activityID)
        {
            ApprovalChainProcess process = SerializationHelper.Deserialize <ApprovalChainProcess>(processApproveChainXML);

            process.RemoveActivity(process.ApprovalChainActivitys.Find(a => a.ID.Equals(activityID, StringComparison.CurrentCultureIgnoreCase) && a.Status.Equals("Available", StringComparison.CurrentCultureIgnoreCase)));

            return(SerializationHelper.Serialize(process));
        }
コード例 #2
0
        //edit by lee 2012-7-13
        //public string ReStartProcess(string sn, string action, string currentUser, string processApproveChain, string infoSource)
        //{
        //    try
        //    {
        //        int parentProcInstID = K2DBHelper.GetRootParentsID(Convert.ToInt32(sn.Split('_')[0]));

        //        CDataFields dataFields;
        //        if (!string.IsNullOrEmpty(processApproveChain))
        //        {
        //            ApprovalChainProcess process = SerializationHelper.Deserialize<ApprovalChainProcess>(processApproveChain);
        //            process.ApprovalChainActivitys[0].ApprovalChainDestination[0].ActionResult = action;
        //            process.ApprovalChainActivitys[0].ApprovalChainDestination[0].ActualUserID = currentUser;
        //            dataFields = new CDataFields("ProcessApprovalChain", SerializationHelper.Serialize(process), "XF");
        //            K2Helper.UpdateProcessDataFields(parentProcInstID, dataFields);
        //        }
        //        else
        //        {
        //            return "Failed! processApproveChain is empty";
        //        }

        //        //获取Approve流程中的Destinations
        //        CDataFields dataFieldDestinations = new CDataFields("Destinations", "", "DF");
        //        K2Helper.GetProcessDataFields(sn, currentUser, dataFieldDestinations);
        //        string xmlDestination = dataFieldDestinations.DataFieldLists[0].Value;
        //        ApprovalChainDestination destinations = SerializationHelper.Deserialize<ApprovalChainDestination>(xmlDestination);
        //        destinations.ActionResult = action;
        //        destinations.ActualUserID = currentUser;
        //        dataFieldDestinations.DataFieldLists[0].Value = SerializationHelper.Serialize(destinations);
        //        K2Helper.ExecuteProcess(sn, "", "", currentUser, dataFieldDestinations);

        //        //更新用以标识用户是否可以取回任务的DataField
        //        K2Helper.UpdateProcessDataFields(parentProcInstID, new CDataFields("CallBackProcInstID", sn.Split('_')[0], "DF"));

        //        K2DBHelper.AddApproveLog(parentProcInstID, Convert.ToInt32(sn.Split('_')[0]), action, processApproveChain, currentUser);
        //    }
        //    catch (Exception ex)
        //    {
        //        K2DBHelper.RecoreErrorProfile(ex, "K2HelperWS.ReStartProcess", currentUser);
        //        return ex.Message;
        //    }
        //    return "Success";
        //}
        public string ReStartProcess(string sn, string action, string currentUser, string processApproveChain, string infoSource)
        {
            try
            {
                int parentProcInstID = K2DBHelper.GetRootParentsID(Convert.ToInt32(sn.Split('_')[0]));

                CDataFields dataFields;
                if (!string.IsNullOrEmpty(processApproveChain))
                {
                    ApprovalChainProcess process = SerializationHelper.Deserialize <ApprovalChainProcess>(processApproveChain);
                    process.ApprovalChainActivitys[0].ActionResult = action;
                    process.ApprovalChainActivitys[0].ApprovalChainDestination[0].ActionResult = action;
                    process.ApprovalChainActivitys[0].ApprovalChainDestination[0].ActualUserID = currentUser;
                    process.ApprovalChainActivitys[0].ApprovalChainDestination[0].ApproveChainDestinationUsers[0].Executed     = true;
                    process.ApprovalChainActivitys[0].ApprovalChainDestination[0].ApproveChainDestinationUsers[0].ActionResult = action;
                    dataFields = new CDataFields("ProcessApprovalChain", SerializationHelper.Serialize(process), "XF");
                    K2Helper.UpdateProcessDataFields(parentProcInstID, dataFields);
                }
                else
                {
                    return("Failed! processApproveChain is empty");
                }

                //获取Approve流程中的Destinations
                CDataFields dataFieldDestinations = new CDataFields("Destinations", "", "DF");
                K2Helper.GetProcessDataFields(sn, currentUser, dataFieldDestinations);
                string xmlDestination = dataFieldDestinations.DataFieldLists[0].Value;
                ApprovalChainDestination destinations = SerializationHelper.Deserialize <ApprovalChainDestination>(xmlDestination);
                destinations.ActionResult = action;
                destinations.ActualUserID = currentUser;
                dataFieldDestinations.DataFieldLists[0].Value = SerializationHelper.Serialize(destinations);

                //K2Helper.ExecuteProcess(sn, "", "", currentUser, dataFieldDestinations);

                //更新用以标识用户是否可以取回任务的DataField
                K2Helper.UpdateProcessDataFields(parentProcInstID, new CDataFields("CallBackProcInstID", sn.Split('_')[0], "DF"));
                //edit by lee
                K2Helper.ExecuteProcess(sn, "", "", currentUser, dataFieldDestinations);

                K2DBHelper.AddApproveLog(parentProcInstID, Convert.ToInt32(sn.Split('_')[0]), action, processApproveChain, currentUser);
            }
            catch (Exception ex)
            {
                K2DBHelper.RecoreErrorProfile(ex, "K2HelperWS.ReStartProcess", currentUser);
                return(ex.Message);
            }
            return("Success");
        }
コード例 #3
0
        /// <summary>
        /// 通过节点与人员对应关系生成审批XML
        /// </summary>
        /// <param name="pairList"></param>
        /// <returns></returns>
        private static string CreateApproveXML(string requestor, List <Triplet> pairList, string xml, string infoSource)
        {
            ApprovalChainProcess process = new ApprovalChainProcess("自定义流程", "");

            process.DefinitionType = infoSource;
            ApprovalChainData data = new ApprovalChainData();

            process.AddData(data);

            //发起人节点
            ApprovalChainActivity activity = new ApprovalChainActivity(Guid.NewGuid().ToString(), "发起人", true, "http://localhost:3373/Resubmit.aspx?SN=", EnumActivityType.SP.ToString());

            activity.Status           = EnumStatus.Completed.ToString();
            activity.ActionWeightType = EnumActionWeightType.N.ToString();
            ApprovalChainDestination originator = new ApprovalChainDestination("", requestor, "", "", EnumDestinationUserType.User.ToString());

            originator.Status = EnumStatus.Completed.ToString();
            activity.AddDestination(originator);
            process.AddActivity(activity);

            foreach (Triplet tl in pairList)
            {
                //string nodeName = K2DBHelper.GetProcessNodeName(tl.First.ToString());
                DataSet ds = K2DBHelper.GetProcessNodeByNodeID(tl.First.ToString());
                if (ds != null)
                {
                    string nodeName     = ds.Tables[0].Rows[0]["NodeName"].ToString();
                    string weightedType = ds.Tables[0].Rows[0]["WeightedType"].ToString();
                    string samplingRate = string.Empty;
                    if (ds.Tables[0].Rows[0]["SamplingRate"] != DBNull.Value)
                    {
                        samplingRate = ds.Tables[0].Rows[0]["SamplingRate"].ToString();
                    }

                    activity = new ApprovalChainActivity(tl.First.ToString(), nodeName, true, tl.Third.ToString(), EnumActivityType.SP.ToString());
                    string[] users = tl.Second.ToString().Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                    ApprovalChainDestination des = new ApprovalChainDestination();

                    if (weightedType == EnumActionWeightType.P.ToString())
                    {
                        activity.ActionWeightType = weightedType;
                        activity.ActionWeight     = samplingRate;
                        foreach (string user in users)
                        {
                            ds = K2DBHelper.GetEmployeeInfoByUserAd(user);
                            if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                            {
                                string Id    = ds.Tables[0].Rows[0]["EmployeeCode"].ToString();
                                string email = ds.Tables[0].Rows[0]["Email"].ToString();
                                string name  = ds.Tables[0].Rows[0]["EmployeeName"].ToString();
                                des.AddDestinationUser(new ApprovalChainDestinationUser(Id, user, name, email, EnumDestinationUserType.User.ToString()));
                            }
                        }
                        activity.AddDestination(des);
                    }
                    else if (weightedType == EnumActionWeightType.R.ToString())
                    {
                        activity.ActionWeightType = weightedType;
                        activity.ActionWeight     = "1";
                        foreach (string user in users)
                        {
                            ds = K2DBHelper.GetEmployeeInfoByUserAd(user);
                            if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                            {
                                string Id    = ds.Tables[0].Rows[0]["EmployeeCode"].ToString();
                                string email = ds.Tables[0].Rows[0]["Email"].ToString();
                                string name  = ds.Tables[0].Rows[0]["EmployeeName"].ToString();
                                des.AddDestinationUser(new ApprovalChainDestinationUser(Id, user, name, email, EnumDestinationUserType.User.ToString()));
                            }
                        }
                        activity.AddDestination(des);
                    }
                    else
                    {
                        activity.ActionWeightType = weightedType;
                        foreach (string user in users)
                        {
                            ds = K2DBHelper.GetEmployeeInfoByUserAd(user);
                            if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                            {
                                string Id    = ds.Tables[0].Rows[0]["EmployeeCode"].ToString();
                                string email = ds.Tables[0].Rows[0]["Email"].ToString();
                                string name  = ds.Tables[0].Rows[0]["EmployeeName"].ToString();
                                activity.AddDestination(new ApprovalChainDestination(Id, user, name, email, EnumDestinationUserType.User.ToString()));
                            }
                        }
                    }
                    process.AddActivity(activity);
                }
            }

            string processApprovalChain = SerializationHelper.Serialize(process);

            return(processApprovalChain);
        }