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)); }
//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"); }
/// <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); }