/// <summary> /// 获取下一步审批人 /// </summary> /// <returns></returns> private NameCollection GetNextApproveTaskUsers() { var nextApproveTaskUsers = new NameCollection(); var manager = UserProfileUtil.GetDepartmentManager(CurrentEmployee.Department); if (manager.IsNullOrWhitespace()) { //Set default depart manager manager = SetDefaultDepartManager(); } else if (manager.Equals(CurrentEmployee.UserAccount, StringComparison.CurrentCultureIgnoreCase)) { var managerEmp = WorkFlowUtil.GetEmployeeApprover(CurrentEmployee); if (managerEmp == null) { return null; } manager = managerEmp.UserAccount; } nextApproveTaskUsers.Add(manager); //获取代理人员 var deleman = WorkFlowUtil.GetDeleman(manager, Constants.CAModules.NonTradeSupplierSetupMaintenance); if (deleman != null) { nextApproveTaskUsers.Add(deleman); } return nextApproveTaskUsers; }
void Actions_ActionExecuting(object sender, QuickFlow.UI.Controls.ActionEventArgs e) { if (e.Action.Equals("Approve"))//审批通过 { WorkflowDataFields fields = WorkflowContext.Current.DataFields; decimal TotalCost = GetTotalCost(); if (TotalCost == 0) { DisplayMessage("Rate or Cost error!"); e.Cancel = true; return; } string levelType = "Contract Approval Limits"; string sCurrentManager = CurrentEmployee.UserAccount; var quota = WorkFlowUtil.GetQuota(CurrentEmployee.UserAccount, levelType);///得到当前审批人的审批金额 WorkflowContext context = WorkflowContext.Current; if (TotalCost > quota)///当前审批者不够审批此金额。 { context.UpdateWorkflowVariable("IsApproveAgin", true);// NameCollection manager = new NameCollection(); Employee managerEmp = WorkFlowUtil.GetNextApprover(sCurrentManager); if (managerEmp == null && !WorkflowPerson.IsCEO(sCurrentManager)) { DisplayMessage("The manager is not set in the system."); e.Cancel = true; return; } manager.Add(managerEmp.UserAccount); string sDelePerson = WorkFlowUtil.GetDeleman(managerEmp.UserAccount, WorkFlowUtil.GetModuleIdByListName("PurchaseRequestGeneral")); //查找代理人 if (sDelePerson != null) { manager.Add(sDelePerson); } context.UpdateWorkflowVariable("ApproveUsers", manager); } else//进入到财务审批 { context.UpdateWorkflowVariable("IsApproveAgin", false);// } fields["Approvers"] = ReturnAllApprovers(sCurrentManager); fields["ApproversSPUser"] = ReturnAllApproversSP("ApproversSPUser", sCurrentManager); } else { WorkflowContext context = WorkflowContext.Current; WorkflowDataFields fields = WorkflowContext.Current.DataFields; string sWorkflowNo = fields["Title"].ToString(); context.UpdateWorkflowVariable("EditTitle", "Please resubmit Purchase Ruequest-General:" + sWorkflowNo);// } WorkFlowUtil.UpdateWorkflowPath(WorkflowContext.Current); }
protected void Name_OnUpdate(object sender, DataGridCommandEventArgs e) { Page.Validate(); if (Page.IsValid) { int index = grid.EditItemIndex; DataGridItem item = grid.Items[index]; if (index >= names.Count) { names.Add(""); } Name name = names[index]; name.IsoLangCode = ((DropDownList)item.FindControl("language")).SelectedItem.Value; name.Value = ((TextBox)item.FindControl("name")).Text.Trim(); CheckBox checkbox = (CheckBox)item.FindControl("default"); if (index > 0 && null != checkbox && checkbox.Checked) { for (int i = index; i > 0; i--) { names[i] = names[i - 1]; } names[0] = name; index = 0; } parentEntity.Save(); if (0 == index && !IsDownlevel) { Page.RegisterStartupScript( "Reload", ClientScripts.ReloadExplorerPane( parentKey)); } grid.EditItemIndex = -1; CancelEditMode(); PopulateDataGrid(); } }
private void Actions_ActionExecuting(object sender, CancelEventArgs e) { if (!this.DataForm1.Validate()) { DisplayMessage(this.DataForm1.msg.IsNotNullOrWhitespace() ? this.DataForm1.msg : "Please fill in all the necessary fields."); e.Cancel = true; return; } #region Set users for workflow //Modify task users var departmentManagerTaskUsers = new NameCollection(); var manager = UserProfileUtil.GetDepartmentManager(CurrentEmployee.Department); if (manager.IsNullOrWhitespace()) { DisplayMessage("The department manager is not set in the system."); e.Cancel = true; return; } else if (manager.Equals(CurrentEmployee.UserAccount, StringComparison.CurrentCultureIgnoreCase)) { var managerEmp = WorkFlowUtil.GetEmployeeApprover(CurrentEmployee); if (managerEmp == null) { DisplayMessage("The manager is not set in the system."); e.Cancel = true; return; } manager = managerEmp.UserAccount; } departmentManagerTaskUsers.Add(manager); var deleman = WorkFlowUtil.GetDeleman(manager, CA.WorkFlow.UI.Constants.CAModules.InternalOrderCreation); if (deleman != null) { departmentManagerTaskUsers.Add(deleman); } WorkflowContext.Current.UpdateWorkflowVariable("DepartmentManagerTaskUsers", departmentManagerTaskUsers); #endregion WorkflowContext.Current.DataFields["Status"] = CAWorkflowStatus.InProgress; }
private void InitNameCollection(Dictionary <string, EbMobileControl> controls) { foreach (EbMobileControl control in controls.Values) { if (control is ILinesEnabled lines) { foreach (EbMobileControl linesCtrl in lines.ChildControls) { string key = $"{control.Name}.{linesCtrl.Name}"; NameCollection.Add(key); } } string keyControl = $"{CTRL_PARENT_FORM}.{control.Name}"; NameCollection.Add(keyControl); } }
void actions_ActionExecuting(object sender, QuickFlow.UI.Controls.ActionEventArgs e) { if (e.Action.Equals("End", StringComparison.CurrentCultureIgnoreCase)) { WorkflowContext.Current.DataFields["Status"] = "Cancelled"; return; } string msg = DataForm1.Validate(); if (!string.IsNullOrEmpty(msg)) { DisplayMessage(msg); e.Cancel = true; return; } NameCollection buyingUsers = new NameCollection(); buyingUsers.Add(DataForm1.BuyingUser); WorkflowContext.Current.UpdateWorkflowVariable("BuyingApproveUsers", buyingUsers); WorkflowContext.Current.DataFields["BuyingUser"] = DataForm1.BuyingUser; WorkflowContext.Current.DataFields["FileName"] = DataForm1.Submit(); WorkflowContext.Current.DataFields["Status"] = "In Progress"; }
/// <summary> /// 设置工作流变量 /// </summary> /// <param name="bIsSubmit"></param> /// <param name="sWorkFlowNO"></param> bool SetWorkflowBaseVariable(bool bIsSubmit,string sWorkFlowNO) { NameCollection ncFinance = WorkFlowUtil.GetUsersInGroup("wf_FinanceConfirm"); if (null == ncFinance || ncFinance.Count == 0) { DisplayMessage("There are no users in wf_FinanceConfirm"); return false; } Employee employee = WorkFlowUtil.GetNextApprover(this.Userinfo1.Applicant);/// WorkFlowUtil.GetUsersInGroup("wf_FinanceConfirm"); if (null == employee) { DisplayMessage(this.Userinfo1.Applicant.UserAccount+" has no manager in System!"); return false; } NameCollection manager = new NameCollection(); manager.Add(employee.UserAccount); string sDelePerson = WorkFlowUtil.GetDeleman(employee.UserAccount, WorkFlowUtil.GetModuleIdByListName("PurchaseRequestGeneral")); //查找代理人 if (sDelePerson != null) { manager.Add(sDelePerson); } WorkflowContext context = WorkflowContext.Current; context.UpdateWorkflowVariable("IsSubmit", bIsSubmit); context.UpdateWorkflowVariable("IsSaveAgin", false); context.UpdateWorkflowVariable("EditUrl", "/_Layouts/CA/WorkFlows/PurchaseRequestGeneral/EditForm.aspx");//EditUrl context.UpdateWorkflowVariable("EditTitle", "Please complete Purchase Ruequest-General:" + sWorkFlowNO);// context.UpdateWorkflowVariable("ApproveURL", "/_Layouts/CA/WorkFlows/PurchaseRequestGeneral/ApproveForm.aspx");//ApproveURL context.UpdateWorkflowVariable("ApproveTitle", sWorkFlowNO + " needs approve");//ApproveTitle context.UpdateWorkflowVariable("ApproveUsers", manager); context.UpdateWorkflowVariable("ComfirmURL", "/_Layouts/CA/WorkFlows/PurchaseRequestGeneral/ConfirmForm.aspx");//ComfirmURL context.UpdateWorkflowVariable("ConfirmTitle", sWorkFlowNO + " needs confirm"); //ConfirmTitle context.UpdateWorkflowVariable("IsApproveAgin", false); context.UpdateWorkflowVariable("ConfirmUsers", ncFinance); return true; }
private void Actions_ActionExecuting(object sender, ActionEventArgs e) { WorkflowContext context = WorkflowContext.Current; WorkflowDataFields fields = WorkflowContext.Current.DataFields; switch (WorkflowContext.Current.Step) { case "NextApproveTask": if (e.Action.Equals("Reject", StringComparison.CurrentCultureIgnoreCase) && this.DataForm1.CashAdvanceType != "Urgent") { context.UpdateWorkflowVariable("IsUrgent", false); WorkflowContext.Current.UpdateWorkflowVariable("IsContinue", false); fields["Status"] = CAWorkflowStatus.Rejected; context.UpdateWorkflowVariable("CompleteTaskTitle", "Please resubmit Cash Advance Request"); SendEmail("Reject"); } else { string levelType = "Contract Approval Limits"; double total = Convert.ToDouble(fields["Amount"].ToString()); var quota = WorkFlowUtil.GetQuota(fields["CurrManager"].ToString(), levelType); if (total > quota) { if (e.Action.Equals("Reject", StringComparison.CurrentCultureIgnoreCase)) { context.UpdateWorkflowVariable("IsUrgent", true); fields["CashAdvanceType"] = "Normal"; string strNextTaskTitle1 = string.Format("{0} {1} {2}'s Cash Advance Request", WorkflowContext.Current.DataFields["WorkflowNumber"].AsString(), WorkflowContext.Current.DataFields["Amount"].AsString(), WorkflowContext.Current.DataFields["Applicant"].AsString()); context.UpdateWorkflowVariable("NextApproveTaskTitle", strNextTaskTitle1); } var manager = new NameCollection(); var managerEmp = WorkFlowUtil.GetNextApprover(fields["CurrManager"].ToString()); if (managerEmp == null && !WorkflowPerson.IsCEO(fields["CurrManager"].ToString())) { DisplayMessage("The manager is not set in the system."); e.Cancel = true; return; } manager.Add(managerEmp.UserAccount); fields["CurrManager"] = managerEmp.UserAccount; NameCollection wfCFO = WorkFlowUtil.GetUsersInGroup("wf_Finace_FC"); NameCollection wfFinaceConfirm = WorkFlowUtil.GetUsersInGroup("wf_FinanceConfirm"); System.Text.StringBuilder strStepAndUsers = new System.Text.StringBuilder(); strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceNextApproveTask, manager.JoinString(",")); strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceFinaceApprove, wfCFO.JoinString(",")); strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceFinaceConfirmEnd, wfFinaceConfirm.JoinString(",")); strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceFinaceConfirm, wfFinaceConfirm.JoinString(",")); WorkflowContext.Current.DataFields["WorkFlowStepsAndUsers"] = strStepAndUsers.ToString(); WorkflowContext.Current.UpdateWorkflowVariable("IsContinue", true); WorkflowContext.Current.UpdateWorkflowVariable(CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceNextApproveTaskUsers, GetDelemanNameCollection(manager, Constants.CAModules.CashAdvanceRequest)); } else { if (e.Action.Equals("Reject", StringComparison.CurrentCultureIgnoreCase)) { context.UpdateWorkflowVariable("IsUrgent", true); WorkflowContext.Current.UpdateWorkflowVariable("IsFinance", true); fields["CashAdvanceType"] = "Normal"; string strNextTaskTitle2 = string.Format("{0} {1} {2}'s Cash Advance Request", WorkflowContext.Current.DataFields["WorkflowNumber"].AsString(), WorkflowContext.Current.DataFields["Amount"].AsString(), WorkflowContext.Current.DataFields["Applicant"].AsString()); context.UpdateWorkflowVariable("NextApproveTaskTitle", strNextTaskTitle2); } WorkflowContext.Current.UpdateWorkflowVariable("IsContinue", false); NameCollection wfCFO1 = WorkFlowUtil.GetUsersInGroup("wf_Finace_FC"); string strNextTaskTitle = string.Format("{0} {1} {2}'s Cash Advance Request", WorkflowContext.Current.DataFields["WorkflowNumber"].AsString(), WorkflowContext.Current.DataFields["Amount"].AsString(), WorkflowContext.Current.DataFields["Applicant"].AsString()); if (!wfCFO1.Contains(WorkflowContext.Current.DataFields["Applicant"].ToString()) && this.DataForm1.CashAdvanceType == "Urgent") { NameCollection wfCFO2 = WorkFlowUtil.GetUsersInGroup("wf_Finace_FC"); WorkflowContext.Current.UpdateWorkflowVariable(CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceNextApproveTaskUsers, GetDelemanNameCollection(wfCFO2, Constants.CAModules.CashAdvanceRequest)); } if (wfCFO1.Contains(WorkflowContext.Current.DataFields["Applicant"].ToString()) && this.DataForm1.CashAdvanceType == "Urgent") { NameCollection wfFinaceConfirm1 = WorkFlowUtil.GetUsersInGroup("wf_FinanceConfirm"); WorkflowContext.Current.UpdateWorkflowVariable(CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceNextApproveTaskUsers, GetDelemanNameCollection(wfFinaceConfirm1, Constants.CAModules.CashAdvanceRequest)); context.UpdateWorkflowVariable("NextApproveTaskTitle", strNextTaskTitle); } if (!wfCFO1.Contains(WorkflowContext.Current.DataFields["Applicant"].ToString()) && this.DataForm1.CashAdvanceType == "Normal") { NameCollection wfFinaceConfirm2 = WorkFlowUtil.GetUsersInGroup("wf_FinanceConfirm"); WorkflowContext.Current.UpdateWorkflowVariable(CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceNextApproveTaskUsers, GetDelemanNameCollection(wfFinaceConfirm2, Constants.CAModules.CashAdvanceRequest)); context.UpdateWorkflowVariable("NextApproveTaskTitle", strNextTaskTitle); } if (wfCFO1.Contains(WorkflowContext.Current.DataFields["Applicant"].ToString()) && this.DataForm1.CashAdvanceType == "Normal") { NameCollection wfFinaceConfirm2 = WorkFlowUtil.GetUsersInGroup("wf_FinanceConfirm"); WorkflowContext.Current.UpdateWorkflowVariable(CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceNextApproveTaskUsers, GetDelemanNameCollection(wfFinaceConfirm2, Constants.CAModules.CashAdvanceRequest)); context.UpdateWorkflowVariable("NextApproveTaskTitle", strNextTaskTitle); } } fields["Status"] = CAWorkflowStatus.InProgress; } AddWorkFlowStepApprovers(WorkflowContext.Current.Task.Step, CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceApprovers, CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceApproversLoginName); break; case "FinaceConfirmEnd": if (e.Action.Equals("Confirm", StringComparison.CurrentCultureIgnoreCase)) { //if (PostCashAdvanceToSAP(fields)) //{ context.UpdateWorkflowVariable("PostSAPResult", true); fields["Status"] = CAWorkflowStatus.Completed; SendEmail("Approve"); // this.Page.ClientScript.RegisterStartupScript(typeof(DataEdit), "alert", "<script type=\"text/javascript\">alert('Post success! ');</script>"); //} //else //{ // context.UpdateWorkflowVariable("PostSAPResult", false); // this.Page.ClientScript.RegisterStartupScript(typeof(DataEdit), "alert", "<script type=\"text/javascript\">alert('Post failed! ');</script>"); //} if (IsExistSAP(fields["WorkflowNumber"].ToString())) { AddCashAdvanceSAP(fields); } } else { fields["Status"] = CAWorkflowStatus.Rejected; context.UpdateWorkflowVariable("CompleteTaskTitle", "Please resubmit Cash Advance Request"); SendEmail("Reject"); } AddWorkFlowStepApprovers(WorkflowContext.Current.Task.Step, CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceApprovers, CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceApproversLoginName); break; case "FinaceApprove": if (e.Action.Equals("Reject", StringComparison.CurrentCultureIgnoreCase) && this.DataForm1.CashAdvanceType != "Urgent") { fields["Status"] = CAWorkflowStatus.Rejected; context.UpdateWorkflowVariable("CompleteTaskTitle", "Please resubmit Cash Advance Request"); SendEmail("Reject"); } else { if (e.Action.Equals("Reject", StringComparison.CurrentCultureIgnoreCase)) { fields["CashAdvanceType"] = "Normal"; } NameCollection wfFinaceConfirm1 = WorkFlowUtil.GetUsersInGroup("wf_FinanceConfirm"); WorkflowContext.Current.UpdateWorkflowVariable(CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceNextApproveTaskUsers, GetDelemanNameCollection(wfFinaceConfirm1, Constants.CAModules.CashAdvanceRequest)); fields["Status"] = CAWorkflowStatus.InProgress; string strNextTaskTitle = string.Format("{0} {1} {2}'s Cash Advance Request", WorkflowContext.Current.DataFields["WorkflowNumber"].AsString(), WorkflowContext.Current.DataFields["Amount"].AsString(), WorkflowContext.Current.DataFields["Applicant"].AsString()); context.UpdateWorkflowVariable("NextApproveTaskTitle", strNextTaskTitle); } AddWorkFlowStepApprovers(WorkflowContext.Current.Task.Step, CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceApprovers, CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceApproversLoginName); break; case "FinaceConfirm": if (e.Action.Equals("Confirm", StringComparison.CurrentCultureIgnoreCase)) { //if (PostCashAdvanceToSAP(fields)) //{ context.UpdateWorkflowVariable("PostSAPResult", true); fields["Status"] = CAWorkflowStatus.Completed; SendEmail("Approve"); // this.Page.ClientScript.RegisterStartupScript(typeof(DataEdit), "alert", "<script type=\"text/javascript\">alert('Post success! ');</script>"); //} //else //{ // context.UpdateWorkflowVariable("PostSAPResult", false); // this.Page.ClientScript.RegisterStartupScript(typeof(DataEdit), "alert", "<script type=\"text/javascript\">alert('Post failed! ');</script>"); //} if (IsExistSAP(fields["WorkflowNumber"].ToString())) { AddCashAdvanceSAP(fields); } } else { fields["Status"] = CAWorkflowStatus.Rejected; context.UpdateWorkflowVariable("CompleteTaskTitle", "Please resubmit Cash Advance Request"); SendEmail("Reject"); } AddWorkFlowStepApprovers(WorkflowContext.Current.Task.Step, CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceApprovers, CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceApproversLoginName); break; case "CompleteTask": var managerEmp1 = WorkFlowUtil.GetNextApprover(CurrentEmployee); NameCollection manager1 = new NameCollection(); manager1.Add(managerEmp1.UserAccount); WorkflowContext.Current.UpdateWorkflowVariable(CA.WorkFlow.UI.Constants.WorkFlowStep.CashAdvanceNextApproveTaskUsers, GetDelemanNameCollection(manager1, Constants.CAModules.CashAdvanceRequest)); context.UpdateWorkflowVariable("IsContinue", true); break; } WorkFlowUtil.UpdateWorkflowPath(context); }
private void StartWorkflowButton_Executing(object sender, CancelEventArgs e) { string taskTitle = string.Empty; WorkflowContext context = WorkflowContext.Current; WorkflowDataFields fields = WorkflowContext.Current.DataFields; //Check which button has been clicked var btn = sender as StartWorkflowButton; var departmentManagerTaskUsers = new NameCollection(); if (string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase)) { var msg = this.DataForm1.ValidateForSave(); if (msg.IsNotNullOrWhitespace()) { DisplayMessage(msg); e.Cancel = true; return; } this.DataForm1.Update(); //Save the inputed data to datatable context.UpdateWorkflowVariable("IsSave", true); fields["Status"] = CAWorkflowStatus.Pending; decimal totalCost = this.DataForm1.GetTotal(); fields["TravelTotalCost"] = totalCost; context.UpdateWorkflowVariable("CompleteTaskTitle", "please complete Travel Request"); } else { var msg = this.DataForm1.ValidateForSubmit(); bool isCEO = false; if (msg.IsNotNullOrWhitespace()) { DisplayMessage(msg); e.Cancel = true; return; } this.DataForm1.Update(); //Save the inputed data to datatable context.UpdateWorkflowVariable("IsSave", false); fields["Status"] = CAWorkflowStatus.InProgress; #region Set users for workflow //Modify task users //If system can't find the manager, return null; var managerEmp = WorkFlowUtil.GetEmployeeApprover(this.DataForm1.Applicant); string manager = string.Empty; if (managerEmp == null) { if (!IsCEO(this.DataForm1.Applicant.UserAccount)) { DisplayMessage("The manager is not set in the system."); e.Cancel = true; return; } else { isCEO = true; manager = this.DataForm1.Applicant.UserAccount; } } else { manager = managerEmp.UserAccount; } departmentManagerTaskUsers.Add(manager); //0830 fields["Managers"] = manager; var deleman = WorkFlowUtil.GetDeleman(manager, CA.WorkFlow.UI.Constants.CAModules.TravelRequest); if (deleman != null) { departmentManagerTaskUsers.Add(deleman); //fields["Delegates"] = deleman; } context.UpdateWorkflowVariable("DepartmentHeadTaskUsers", departmentManagerTaskUsers); #endregion decimal totalCost = this.DataForm1.GetTotal(); if (isCEO) { context.UpdateWorkflowVariable("IsBusiness", false); context.UpdateWorkflowVariable("Total", 0); } else { context.UpdateWorkflowVariable("IsBusiness", this.DataForm1.ChosenFlight); //context.UpdateWorkflowVariable("Total", totalCost); context.UpdateWorkflowVariable("Total", 0); } fields["TravelTotalCost"] = totalCost; taskTitle = DataForm1.EnglishName + "'s Travel Request "; #region Set title for workflow //Modify task title context.UpdateWorkflowVariable("DepartmentHeadTaskTitle", taskTitle + "needs approval"); context.UpdateWorkflowVariable("MTMTaskTitle", taskTitle + "needs approval"); context.UpdateWorkflowVariable("CFOTaskTitle", taskTitle + "needs approval"); context.UpdateWorkflowVariable("CEOTaskTitle", taskTitle + "needs approval"); context.UpdateWorkflowVariable("ReceptionistTaskTitle", taskTitle + "needs confirm"); #endregion } workflowNumber = this.CreateWorkFlowNumber(); fields["WorkflowNumber"] = workflowNumber; Employee applicant = this.DataForm1.Applicant; fields["Applicant"] = applicant != null ? applicant.DisplayName + "(" + applicant.UserAccount + ")" : string.Empty; fields["ApplicantSPUser"] = SPContext.Current.Web.EnsureUser(applicant.UserAccount); fields["Department"] = DataForm1.Department; fields["Department"] = this.DataForm1.Department; fields["TravelOtherPurpose"] = this.DataForm1.OtherPurpose; var isBusiness = this.DataForm1.ChosenFlight; var isNextFlight = this.DataForm1.NextFlight; var isBookHotel = this.DataForm1.IsBookHotel; fields["IsBusiness"] = isBusiness; fields["IsNextFlight"] = isNextFlight; fields["IsBookHotel"] = !isBookHotel; var flightClass = string.Empty; if (isBusiness) { flightClass = "Business"; } else if (isNextFlight) { flightClass = "Other available flight"; } else { flightClass = "Economy"; } fields["FlightClass"] = flightClass; TravelRequest2Common.SaveDetails(this.DataForm1, fields["WorkflowNumber"].AsString()); //Save request details to lists #region Set constants for workflow string authorityDepartment = ConfigurationManager.AppSettings["AuthorityDepartment"]; string authorityMTM = ConfigurationManager.AppSettings["AuthorityMTM"]; string authorityCFO = ConfigurationManager.AppSettings["AuthorityCFO"]; context.UpdateWorkflowVariable("L1", Int32.Parse(authorityDepartment)); context.UpdateWorkflowVariable("L2", Int32.Parse(authorityMTM)); context.UpdateWorkflowVariable("L3", Int32.Parse(authorityCFO)); #endregion #region Set page URL for workflow //Set page url var editURL = "/_Layouts/CA/WorkFlows/TravelRequest2/EditForm.aspx"; var approveURL = "/_Layouts/CA/WorkFlows/TravelRequest2/ApproveForm.aspx"; context.UpdateWorkflowVariable("CompleteTaskFormURL", editURL); context.UpdateWorkflowVariable("DepartmentHeadTaskFormURL", approveURL); context.UpdateWorkflowVariable("ReceptionistTaskFormURL", approveURL); context.UpdateWorkflowVariable("CFOTaskFormURL", approveURL); context.UpdateWorkflowVariable("CEOTaskFormURL", approveURL); context.UpdateWorkflowVariable("MTMTaskFormURL", approveURL); #endregion if (!string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase)) { SendMailForSubmit(departmentManagerTaskUsers); } }
protected static XmlNode ConvertNode(XmlNode node, XmlDocument prom, XmlNode rootNode) { int unknownCount = 0; XmlNode fieldsNode = node.SelectSingleNode("Fields"); XmlElement mainStructElement = prom.CreateElement("struct"); XmlNode nameNode = node.SelectSingleNode("Name"); //string structName = "Main"; string structName = tagType; if (nameNode != null) { structName = FixStructName(nameNode.InnerText); } XmlAttribute structNameAttribute = prom.CreateAttribute("name"); structNameAttribute.InnerText = structName; mainStructElement.Attributes.Append(structNameAttribute); NameCollection names = new NameCollection(); foreach (XmlNode fieldNode in fieldsNode.SelectNodes("Field")) { NameElements elements = ParseControlName(fieldNode.SelectSingleNode("Name").InnerText); // Create a node in the output XML doc based on the type. XmlAttribute typeAttribute = prom.CreateAttribute("type"); string fieldType = fieldNode.SelectSingleNode("Type").InnerText; // Ignore Terminator_X if (fieldType == "Terminator_X") { continue; } // TODO: Create a section based on these. Continue for now. if (fieldType == "Explanation") { continue; } // Fix up the field name string. fieldType = ConvertDataTypeString(fieldType); XmlElement valueElement = prom.CreateElement("value"); if (elements.name == "") { //unknownCount++; elements.name = "_unnamed" + unknownCount.ToString(); elements.name = "_unnamed"; //+ unknownCount.ToString(); } int uses = names.Add(elements.name); if (uses > 1) { elements.name += uses.ToString(); } typeAttribute.InnerText = fieldType; valueElement.Attributes.Append(typeAttribute); XmlAttribute nameAttribute = prom.CreateAttribute("name"); nameAttribute.InnerText = elements.name; valueElement.Attributes.Append(nameAttribute); if (elements.tooltip != null) { XmlElement tooltipElement = prom.CreateElement("tooltip"); tooltipElement.AppendChild(prom.CreateTextNode(SentenceCase(elements.tooltip))); valueElement.AppendChild(tooltipElement); } if (elements.blocksName) { XmlAttribute blockNameAttribute = prom.CreateAttribute("blockname"); blockNameAttribute.Value = "true"; valueElement.Attributes.Append(blockNameAttribute); } // Based on the type, we may need to append other elements. if (fieldType == "Block") { // Add the MaxElements tag. XmlNode blockNode = fieldNode.SelectSingleNode("Block"); string blockName = FixStructName(blockNode.SelectSingleNode("Name").InnerText); XmlAttribute blockNameAttribute = prom.CreateAttribute("struct"); blockNameAttribute.InnerText = blockName; valueElement.Attributes.Append(blockNameAttribute); string maxElements = blockNode.SelectSingleNode("MaxElements").InnerText; XmlAttribute maxElementsAttribute = prom.CreateAttribute("maxelements"); maxElementsAttribute.Value = maxElements; valueElement.Attributes.Append(maxElementsAttribute); // Create a new struct and add it to the current parent. XmlNode newStructNode = ConvertNode(blockNode, prom, rootNode); mainStructElement.AppendChild(newStructNode); } else if (fieldType == "TagReference") { string extensions = ""; XmlNodeList subFields = fieldNode.SelectNodes("Fields/*"); foreach (XmlNode subFieldNode in subFields) { extensions += subFieldNode.InnerText + "|"; } extensions = extensions.TrimEnd('|'); XmlAttribute extensionsAttribute = prom.CreateAttribute("extensions"); extensionsAttribute.Value = extensions; valueElement.Attributes.Append(extensionsAttribute); } else if (fieldType == "ShortBlockIndex") { XmlNode blockNameNode = fieldNode.SelectSingleNode("Block"); XmlAttribute blockNameAttribute = prom.CreateAttribute("block"); blockNameAttribute.Value = FixStructName(blockNameNode.InnerText); valueElement.Attributes.Append(blockNameAttribute); } else if (fieldType == "Enum") { XmlNodeList subFields = fieldNode.SelectNodes("Fields/*"); int index = 0; foreach (XmlNode subFieldNode in subFields) { NameElements tmpElements = ParseControlName(subFieldNode.InnerText); XmlElement itemElement = prom.CreateElement("item"); XmlAttribute itemValueAttribute = prom.CreateAttribute("value"); itemValueAttribute.InnerText = index.ToString(); index++; XmlAttribute itemNameAttribute = prom.CreateAttribute("name"); itemNameAttribute.InnerText = tmpElements.name; itemElement.Attributes.Append(itemValueAttribute); itemElement.Attributes.Append(itemNameAttribute); if (tmpElements.tooltip != null) { XmlElement tooltipElement = prom.CreateElement("tooltip"); tooltipElement.AppendChild(prom.CreateTextNode(SentenceCase(elements.tooltip))); itemElement.AppendChild(tooltipElement); } valueElement.AppendChild(itemElement); } } else if (fieldType == "String") { // Change the name, since String in c# is a bad choice. fieldType = "FixedLengthString"; typeAttribute.InnerText = fieldType; } else if ((fieldType == "ByteFlags") || (fieldType == "WordFlags") || (fieldType == "LongFlags")) { XmlAttribute flagsLengthAttribute = prom.CreateAttribute("length"); if (fieldType == "ByteFlags") { flagsLengthAttribute.InnerText = "1"; } if (fieldType == "WordFlags") { flagsLengthAttribute.InnerText = "2"; } if (fieldType == "LongFlags") { flagsLengthAttribute.InnerText = "4"; } valueElement.Attributes.Append(flagsLengthAttribute); // Manually override the name so that we can use the generic flags handler. fieldType = "Flags"; typeAttribute.InnerText = fieldType; XmlNodeList subFields = fieldNode.SelectNodes("Fields/*"); int index = 0; foreach (XmlNode subFieldNode in subFields) { NameElements tmpElements = ParseControlName(subFieldNode.InnerText); XmlElement bitElement = prom.CreateElement("bit"); XmlAttribute bitIndexAttribute = prom.CreateAttribute("index"); bitIndexAttribute.InnerText = index.ToString(); index++; XmlAttribute bitNameAttribute = prom.CreateAttribute("name"); bitNameAttribute.InnerText = tmpElements.name; bitElement.Attributes.Append(bitIndexAttribute); bitElement.Attributes.Append(bitNameAttribute); if (tmpElements.tooltip != null) { XmlElement tooltipElement = prom.CreateElement("tooltip"); tooltipElement.AppendChild(prom.CreateTextNode(SentenceCase(tmpElements.tooltip))); bitElement.AppendChild(tooltipElement); } valueElement.AppendChild(bitElement); } } else if ((fieldType == "Pad") || (fieldType == "Skip")) { string length = fieldNode.SelectSingleNode("Value").InnerText; XmlAttribute lengthAttribute = prom.CreateAttribute("length"); lengthAttribute.Value = length; valueElement.Attributes.Append(lengthAttribute); } else if (fieldType == "ArrayStart") { // TODO: Revisit Arrays. // Not sure how we're handling this stuff. // Just adding in a comment for now to show where they are. string fieldCount = fieldNode.SelectSingleNode("Array/FieldCount").InnerText; XmlComment comment = prom.CreateComment("Array field goes here: Length=" + fieldCount); valueElement.AppendChild(comment); } mainStructElement.AppendChild(valueElement); // Add to collection. FieldTypes.Add(fieldType); } return(mainStructElement); }
private void Actions_ActionExecuting(object sender, CancelEventArgs e) { var msg = this.DataForm1.ValidateForSubmit(); var isCEO = false; if (msg.IsNotNullOrWhitespace()) { DisplayMessage(msg); e.Cancel = true; return; } WorkflowContext context = WorkflowContext.Current; WorkflowDataFields fields = WorkflowContext.Current.DataFields; fields["Status"] = CAWorkflowStatus.InProgress; this.DataForm1.Update(); //Save the inputed data to datatable context.UpdateWorkflowVariable("IsSave", false); fields["Status"] = CAWorkflowStatus.InProgress; var taskTitle = DataForm1.EnglishName + "'s Travel Request "; #region Set title for workflow //Modify task title context.UpdateWorkflowVariable("DepartmentHeadTaskTitle", taskTitle + "needs approval"); context.UpdateWorkflowVariable("MTMTaskTitle", taskTitle + "needs approval"); context.UpdateWorkflowVariable("CFOTaskTitle", taskTitle + "needs approval"); context.UpdateWorkflowVariable("CEOTaskTitle", taskTitle + "needs approval"); context.UpdateWorkflowVariable("ReceptionistTaskTitle", taskTitle + "needs confirm"); #endregion #region Set users for workflow //Modify task users var departmentManagerTaskUsers = new NameCollection(); //If system can't find the manager, return null; var managerEmp = WorkFlowUtil.GetEmployeeApprover(this.DataForm1.Applicant); string manager = string.Empty; if (managerEmp == null) { if (!IsCEO(this.DataForm1.Applicant.UserAccount)) { DisplayMessage("The manager is not set in the system."); e.Cancel = true; return; } else { isCEO = true; manager = this.DataForm1.Applicant.UserAccount; } } else { manager = managerEmp.UserAccount; } departmentManagerTaskUsers.Add(manager); //0830 fields["Managers"] = manager; var deleman = WorkFlowUtil.GetDeleman(manager, CA.WorkFlow.UI.Constants.CAModules.TravelRequest); if (deleman != null) { departmentManagerTaskUsers.Add(deleman); } context.UpdateWorkflowVariable("DepartmentHeadTaskUsers", departmentManagerTaskUsers); #endregion Employee applicant = this.DataForm1.Applicant; fields["Applicant"] = applicant != null ? applicant.DisplayName + "(" + applicant.UserAccount + ")" : string.Empty; fields["ApplicantSPUser"] = SPContext.Current.Web.EnsureUser(applicant.UserAccount); fields["Department"] = DataForm1.Department; decimal totalCost = this.DataForm1.GetTotal(); if (isCEO) { context.UpdateWorkflowVariable("IsBusiness", false); context.UpdateWorkflowVariable("Total", 0); } else { context.UpdateWorkflowVariable("IsBusiness", DataForm1.ChosenFlight); //context.UpdateWorkflowVariable("Total", totalCost); context.UpdateWorkflowVariable("Total", 0); } fields["TravelTotalCost"] = totalCost; fields["TravelOtherPurpose"] = this.DataForm1.OtherPurpose; var isBusiness = this.DataForm1.ChosenFlight ? "Yes" : "No"; var isNextFlight = this.DataForm1.NextFlight ? "Yes" : "No"; fields["IsBusiness"] = isBusiness; fields["IsNextFlight"] = isNextFlight; var flightClass = string.Empty; if (isBusiness.Equals("Yes", StringComparison.CurrentCultureIgnoreCase)) { flightClass = "Business"; } else if (isNextFlight.Equals("No", StringComparison.CurrentCultureIgnoreCase)) { flightClass = "Other available flight"; } else { flightClass = "Economy"; } fields["FlightClass"] = flightClass; //Delete all draft items before saving TravelRequest2Common.DeleteAllDraftItems(fields["WorkflowNumber"].AsString()); TravelRequest2Common.SaveDetails(this.DataForm1, fields["WorkflowNumber"].AsString()); //Save request details to lists SendMailForSubmit(departmentManagerTaskUsers); }
internal static NameCollection GetTaskUsers(NameCollection manager, string managerAccount) { manager.Add(managerAccount); var deleman = WorkFlowUtil.GetDeleman(managerAccount, WorkFlowUtil.GetModuleIdByListName("Expatriate Benefit Claim Workflow")); if (deleman != null) { manager.Add(deleman); } return manager; }
private void StartWorkflowButton_Executing(object sender, CancelEventArgs e) { var btn = sender as StartWorkflowButton; var taskTitle = CurrentEmployee.DisplayName + "'s Internal Order Creation "; if (string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase)) { WorkflowContext.Current.UpdateWorkflowVariable("IsSave", true); WorkflowContext.Current.DataFields["Status"] = CAWorkflowStatus.Pending; } else { if (!this.DataForm1.Validate()) { DisplayMessage(this.DataForm1.msg.IsNotNullOrWhitespace() ? this.DataForm1.msg : "Please fill in all the necessary fields."); e.Cancel = true; return; } #region Set users for workflow //Modify task users var departmentManagerTaskUsers = new NameCollection(); var manager = UserProfileUtil.GetDepartmentManager(CurrentEmployee.Department); if (manager.IsNullOrWhitespace()) { DisplayMessage("The department manager is not set in the system."); e.Cancel = true; return; } else if (manager.Equals(CurrentEmployee.UserAccount, StringComparison.CurrentCultureIgnoreCase)) { var managerEmp = WorkFlowUtil.GetEmployeeApprover(CurrentEmployee); if (managerEmp == null) { DisplayMessage("The manager is not set in the system."); e.Cancel = true; return; } manager = managerEmp.UserAccount; } departmentManagerTaskUsers.Add(manager); var deleman = WorkFlowUtil.GetDeleman(manager, CA.WorkFlow.UI.Constants.CAModules.InternalOrderCreation); if (deleman != null) { departmentManagerTaskUsers.Add(deleman); } WorkflowContext.Current.UpdateWorkflowVariable("DepartmentManagerTaskUsers", departmentManagerTaskUsers); #endregion WorkflowContext.Current.UpdateWorkflowVariable("IsSave", false); WorkflowContext.Current.DataFields["Status"] = CAWorkflowStatus.InProgress; } WorkflowContext.Current.DataFields["WorkFlowNumber"] = this.CreateWorkFlowNumber(); WorkflowContext.Current.DataFields["Applicant"] = CurrentEmployee.DisplayName + "(" + CurrentEmployee.UserAccount + ")"; WorkflowContext.Current.DataFields["Department"] = CurrentEmployee.Department; #region Set title for workflow //Modify task title WorkflowContext.Current.UpdateWorkflowVariable("CompleteTaskTitle", "please complete internal order creation"); WorkflowContext.Current.UpdateWorkflowVariable("DepartmentManagerTaskTitle", taskTitle + "needs approval"); WorkflowContext.Current.UpdateWorkflowVariable("CFOTaskTitle", taskTitle + "needs approval"); WorkflowContext.Current.UpdateWorkflowVariable("FinanceAnalystTaskTitle", taskTitle + "needs confirm"); #endregion #region Set page URL for workflow //Set page url var editURL = "/_Layouts/CA/WorkFlows/CreationOrder/EditForm.aspx"; var approveURL = "/_Layouts/CA/WorkFlows/CreationOrder/ApproveForm.aspx"; WorkflowContext.Current.UpdateWorkflowVariable("CompleteTaskFormURL", editURL); WorkflowContext.Current.UpdateWorkflowVariable("DepartmentManagerTaskFormURL", approveURL); WorkflowContext.Current.UpdateWorkflowVariable("CFOTaskFormURL", approveURL); WorkflowContext.Current.UpdateWorkflowVariable("FinanceAnalystTaskFormURL", approveURL); #endregion }
//Return task users object according to special group public static NameCollection GetTaskUsers(string group, string moduleId) { var taskUsers = new NameCollection(); List<string> delemans = null; List<string> groupUsers = null; groupUsers = WorkFlowUtil.UserListInGroup(group); taskUsers.AddRange(groupUsers.ToArray()); delemans = WorkFlowUtil.GetDelemans(groupUsers, moduleId); //if (delemans.Count > 0) //{ // taskUsers.AddRange(delemans.ToArray()); //} foreach (var delegateAccount in delemans) { // Need to check whether the delegate account is valid. if (UserProfileUtil.GetEmployeeEx(delegateAccount) != null) { taskUsers.Add(delegateAccount); } } return taskUsers; }
void StartWorkflowButton1_Executing(object sender, System.ComponentModel.CancelEventArgs e) { bool flag = IsCanSubmit(); if (!flag) { ScriptManager.RegisterStartupScript(this,this.GetType(),"msg", "alert('You do not belong to Buying .');",true); e.Cancel = true; return; } StartWorkflowButton btn = sender as StartWorkflowButton; if (string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase)) { WorkflowContext.Current.UpdateWorkflowVariable("IsSave", true); WorkflowContext.Current.DataFields["Flag"] = "Save"; WorkflowContext.Current.DataFields["RequestStatus"] = "NonSubmit"; } else { WorkflowContext.Current.UpdateWorkflowVariable("IsSave", false); WorkflowContext.Current.DataFields["Flag"] = "Submit"; WorkflowContext.Current.DataFields["RequestStatus"] = "In Progress"; } string strDepartment = DataForm1.Applicant.Department; //string strManager = @"ca\ztao"; //string strDirector = @"ca\ztao"; //string strHead = @"ca\ztao"; //string strBBSTeam = @"ca\ztao"; string strMondial = this.DataForm1.IsMondia; //组开始 //List<string> lst = WorkFlowUtil.UserListInGroup("DivisionManagerGroup"); string Head = WorkFlowUtil.GetEmployeeApproverInDept(DataForm1.Applicant, true, true).UserAccount; NameCollection ManagerUser = new NameCollection(); NameCollection DirectorUser = new NameCollection(); bool isHeadOne = false; bool isHeadTwo = false; if (!string.IsNullOrEmpty(Head)) { isHeadOne = true; ManagerUser.Add(Head); Employee employee = WorkFlowUtil.GetEmployeeApproverInDept(WorkFlowUtil.GetEmployeeApproverInDept(DataForm1.Applicant, true, true), true, false); if (employee != null) { string strhead = employee.UserAccount; if (!string.IsNullOrEmpty(strhead)) { isHeadTwo = true; DirectorUser.Add(strhead); } } } //lst = WorkFlowUtil.UserListInGroup("BuyingDirectorGroup"); //DirectorUser.AddRange(lst.ToArray()); //DirectorUser.Add(strDirector); NameCollection HeadUser = new NameCollection(); List<string> lst = WorkFlowUtil.UserListInGroup("wf_CommercialHead"); HeadUser.AddRange(lst.ToArray()); //HeadUser.Add(strHeader); NameCollection BBSTeamUser = new NameCollection(); lst = WorkFlowUtil.UserListInGroup("wf_BSSTeam"); BBSTeamUser.AddRange(lst.ToArray()); //BBSTeamUser.Add(strBBSTeam); //组结束 WorkflowContext.Current.UpdateWorkflowVariable("Manager", ManagerUser); WorkflowContext.Current.UpdateWorkflowVariable("BuyDirector", DirectorUser); WorkflowContext.Current.UpdateWorkflowVariable("Header", HeadUser); WorkflowContext.Current.UpdateWorkflowVariable("BBSTeamAccount", BBSTeamUser); WorkflowContext.Current.UpdateWorkflowVariable("Mondial", strMondial); WorkflowContext.Current.UpdateWorkflowVariable("isHeadOne", isHeadOne); WorkflowContext.Current.UpdateWorkflowVariable("isHeadTwo", isHeadTwo); //修改TaskTitle WorkflowContext.Current.UpdateWorkflowVariable("ManagerTitle", DataForm1.Applicant.DisplayName + "'s New Trade Supplier Creation request needs approval"); WorkflowContext.Current.UpdateWorkflowVariable("DirectorTitle", DataForm1.Applicant.DisplayName + "'s New Trade Supplier Creation request needs approval"); WorkflowContext.Current.UpdateWorkflowVariable("HeaderTitle", DataForm1.Applicant.DisplayName + "'s New Trade Supplier Creation request needs approval"); WorkflowContext.Current.UpdateWorkflowVariable("BBSTeamTitle", DataForm1.Applicant.DisplayName + "'s New Trade Supplier Creation request needs confirm"); WorkflowContext.Current.UpdateWorkflowVariable("TaskUpdateTitle", "Please complete New Trade Supplier Creation request for " + DataForm1.Applicant.DisplayName); //修改结束 this.WorkFlowNumber = CreateWorkFlowNumber(); WorkflowContext.Current.DataFields["WorkFlowNumber"] = this.WorkFlowNumber; WorkflowContext.Current.DataFields["UserName"] = DataForm1.Applicant.UserAccount; WorkflowContext.Current.DataFields["Supplier"] = DataForm1.Supplier; WorkflowContext.Current.DataFields["SubDivision"] = DataForm1.SubDivision; WorkflowContext.Current.DataFields["IsMondial"] = DataForm1.IsMondia; //WorkflowContext.Current.DataFields["Upload"] = DataForm1.UploadFile; WorkflowContext.Current.DataFields["Status"] = DataForm1.Status; }
internal static NameCollection GetTaskUsersByModule(NameCollection manager, string managerAccount, string module) { manager.Add(managerAccount); string moduleID = WorkFlowUtil.GetModuleIdByListName(module); var deleman = WorkFlowUtil.GetDeleman(managerAccount, moduleID); if (deleman != null){ manager.Add(deleman); } return manager; }
/// <summary> /// 更新工作流相关list中字段数据 /// </summary> /// <param name="dpTaskUsers">部门领导</param> private void UpdateWorkFlowDataFields(NameCollection dpTaskUsers) { WorkflowContext.Current.DataFields["Status"] = CAWorkflowStatus.InProgress; WorkflowContext.Current.DataFields["Manager"] = dpTaskUsers.Count > 0 ? dpTaskUsers[0] : ""; var DepartmentManagerTaskUsers = new NameCollection(); var FinanceAnalystTaskUsers = new NameCollection(); var CFOTaskUsers = new NameCollection(); DepartmentManagerTaskUsers.Add(UserProfileUtil.GetDepartmentManager(CurrentEmployee.Department)); List<string> lst = WorkFlowUtil.UserListInGroup("wf_CFO"); CFOTaskUsers.AddRange(lst.ToArray()); lst = WorkFlowUtil.UserListInGroup("wf_FinanceAnalyst_IO"); FinanceAnalystTaskUsers.AddRange(lst.ToArray()); //WorkflowContext.Current.UpdateWorkflowVariable("FinanceAnalystTaskUsers", FinanceAnalystTaskUsers); //WorkflowContext.Current.UpdateWorkflowVariable("CFOTaskUsers", CFOTaskUsers); //WorkflowContext.Current.UpdateWorkflowVariable("DepartmentManagerTaskUsers", DepartmentManagerTaskUsers); System.Text.StringBuilder strStepAndUsers = new System.Text.StringBuilder(); strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.InternalOrderMaintenanceDepartmentManagerTask, DepartmentManagerTaskUsers.JoinString(",")); strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.InternalOrderMaintenanceCFOTask, CFOTaskUsers.JoinString(",")); strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.InternalOrderMaintenanceFinanceAnalystTask, FinanceAnalystTaskUsers.JoinString(",")); WorkflowContext.Current.DataFields["WorkFlowStepsAndUsers"] = strStepAndUsers.ToString(); }
void StartWorkflowButton1_Executing(object sender, System.ComponentModel.CancelEventArgs e) { StartWorkflowButton btnStart = sender as StartWorkflowButton; if (string.Equals(btnStart.Text, "Save", StringComparison.CurrentCultureIgnoreCase)) { WorkflowContext.Current.UpdateWorkflowVariable("IsSave", true); DataForm1.Update(); WorkflowContext.Current.DataFields["Status"] = "NonSubmit"; } else { string msg = DataForm1.Validate(); if (!string.IsNullOrEmpty(msg)) { DisplayMessage(msg); e.Cancel = true; return; } WorkflowContext.Current.DataFields["Status"] = "In Progress"; } NameCollection buyingUsers = new NameCollection(); buyingUsers.Add(DataForm1.BuyingUser); WorkflowContext.Current.UpdateWorkflowVariable("BuyingApproveUsers", buyingUsers); WorkflowContext.Current.UpdateWorkflowVariable("BuyingApproveTaskTitle", DataForm1.Applicant.DisplayName + "'s re-ticketing request needs approval"); WorkflowContext.Current.UpdateWorkflowVariable("DepartmentHead", WorkFlowUtil.GetUserInGroup("wf_BSSHead")); List <string> strGroupUser = WorkFlowUtil.UserListInGroup("wf_Finance_SR"); if (strGroupUser.Count == 0) { //Don DisplayMessage("Unable to submit the application. There is no user in wf_Finance_SR group. Please contact IT for further help."); e.Cancel = true; return; } NameCollection GroupUsers = new NameCollection(); GroupUsers.AddRange(strGroupUser.ToArray()); WorkflowContext.Current.UpdateWorkflowVariable("FinanceTaskUsers", GroupUsers); WorkflowContext.Current.UpdateWorkflowVariable("DepartmentHeadTaskTitle", DataForm1.Applicant.DisplayName + "'s re-ticketing request needs approval"); WorkflowContext.Current.UpdateWorkflowVariable("FinanceUserTaskTitle", "Please complete re-ticketing request for " + DataForm1.Applicant.DisplayName); this.WorkFlowNumber = CreateWorkFlowNumber(); WorkflowContext.Current.DataFields["WorkflowNumber"] = this.WorkFlowNumber; WorkflowContext.Current.DataFields["BuyingUser"] = DataForm1.BuyingUser; DataForm1.WorkflowNumber = this.WorkFlowNumber; WorkflowContext.Current.DataFields["FileName"] = DataForm1.Submit(); }
//Save or Submit private void StartWorkflowButton_Executing(object sender, CancelEventArgs e) { string taskTitle = CurrentEmployee.DisplayName + "'s Internal Order Maintenance "; var manager = UserProfileUtil.GetDepartmentManager(CurrentEmployee.Department); if (manager.IsNullOrWhitespace()) { DisplayMessage("The department manager is not set in the system."); e.Cancel = true; return; } else if (manager.Equals(CurrentEmployee.UserAccount, StringComparison.CurrentCultureIgnoreCase)) { var managerEmp = WorkFlowUtil.GetEmployeeApprover(CurrentEmployee); if (managerEmp == null) { DisplayMessage("The manager is not set in the system."); e.Cancel = true; return; } manager = managerEmp.UserAccount; } //Check which button has been clicked var btn = sender as StartWorkflowButton; if (string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase)) { if (!Validate(e)) { return; } WorkflowContext.Current.UpdateWorkflowVariable("IsSave", true); WorkflowContext.Current.DataFields["Status"] = CAWorkflowStatus.Pending; } else { if (!Validate(e)) { return; } double lastValue = this.DataForm1.GetLastValue(WorkflowContext.Current.DataFields["Order Number"] as string); WorkflowContext.Current.DataFields["Last Value"] = lastValue; WorkflowContext.Current.UpdateWorkflowVariable("IsSave", false); WorkflowContext.Current.DataFields["Status"] = CAWorkflowStatus.InProgress; } WorkflowContext.Current.DataFields["WorkFlowNumber"] = CreateWorkflowNumber(); WorkflowContext.Current.DataFields["Applicant"] = CurrentEmployee.DisplayName + "(" + CurrentEmployee.UserAccount + ")"; WorkflowContext.Current.DataFields["Department"] = CurrentEmployee.Department; #region Set title for workflow //Modify task title WorkflowContext.Current.UpdateWorkflowVariable("CompleteTaskTitle", "please complete internal order maintenance"); WorkflowContext.Current.UpdateWorkflowVariable("DepartmentManagerTaskTitle", taskTitle + "needs approval"); WorkflowContext.Current.UpdateWorkflowVariable("CFOTaskTitle", taskTitle + "needs approval"); WorkflowContext.Current.UpdateWorkflowVariable("FinanceAnalystTaskTitle", taskTitle + "needs confirm"); #endregion #region Set users for workflow //Modify task users var DepartmentManagerTaskUsers = new NameCollection(); var FinanceAnalystTaskUsers = new NameCollection(); var CFOTaskUsers = new NameCollection(); DepartmentManagerTaskUsers.Add(manager); List<string> lst = WorkFlowUtil.UserListInGroup("wf_CFO"); CFOTaskUsers.AddRange(lst.ToArray()); lst = WorkFlowUtil.UserListInGroup("wf_FinanceAnalyst_IO"); FinanceAnalystTaskUsers.AddRange(lst.ToArray()); WorkflowContext.Current.UpdateWorkflowVariable("FinanceAnalystTaskUsers", FinanceAnalystTaskUsers); WorkflowContext.Current.UpdateWorkflowVariable("CFOTaskUsers", CFOTaskUsers); WorkflowContext.Current.UpdateWorkflowVariable("DepartmentManagerTaskUsers", DepartmentManagerTaskUsers); #endregion #region Set page URL for workflow //Set page url var editURL = "/_Layouts/CA/WorkFlows/InternalOrderMaintenance/EditForm.aspx"; var approveURL = "/_Layouts/CA/WorkFlows/InternalOrderMaintenance/ApproveForm.aspx"; WorkflowContext.Current.UpdateWorkflowVariable("CompleteTaskFormURL", editURL); WorkflowContext.Current.UpdateWorkflowVariable("DepartmentManagerTaskFormURL", approveURL); WorkflowContext.Current.UpdateWorkflowVariable("CFOTaskFormURL", approveURL); WorkflowContext.Current.UpdateWorkflowVariable("FinanceAnalystTaskFormURL", approveURL); #endregion }
private static void StartPOWorkflow(SPList list, List<SPListItem> items) { if (items.Count == 0) { return; } SPSite site = SPContext.Current.Site; var wfName = ConfigurationManager.AppSettings["POWFName"]; if (wfName.IsNullOrWhitespace()) { CommonUtil.logError("PO Workflow name is set in web.config. Please check it first whether key \"POWFName\" is set."); return; } var currUser = SPContext.Current.Web.CurrentUser.LoginName; NameCollection checkManager = new NameCollection(); checkManager.Add(SPContext.Current.Web.CurrentUser.LoginName); var deleman = PurchaseRequestCommon.GetDelemanForPO(currUser); //查找代理人 if (deleman != null) { checkManager.Add(deleman); } //启动工作流 foreach (var item in items) { WorkflowVariableValues vs = new WorkflowVariableValues(); vs["CompleteTaskFormURL"] = "/_Layouts/CA/WorkFlows/PurchaseOrder/EditForm.aspx"; vs["CompleteTaskTitle"] = item["WorkflowNumber"].AsString() + ": Please complete the PO"; vs["CompleteTaskUsers"] = checkManager; vs["IsSkip"] = item["IsSkipChop"];//纸袋不用盖章 var eventData = SerializeUtil.Serialize(vs); var wfAss = list.WorkflowAssociations.GetAssociationByName(wfName, System.Globalization.CultureInfo.CurrentCulture); SPWorkflow wf = site.WorkflowManager.StartWorkflow(item, wfAss, eventData); WorkFlowUtil.UpdateWorkflowPath(item, eventData); } }
void StartWorkflowButton1_Executing(object sender, System.ComponentModel.CancelEventArgs e) { StartWorkflowButton btn = sender as StartWorkflowButton; if (string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase)) { WorkflowContext.Current.UpdateWorkflowVariable("IsSave", true); WorkflowContext.Current.DataFields["Flag"] = "Save"; WorkflowContext.Current.DataFields["Status"] = "NonSubmit"; } else { string msg = DataForm1.Validate; if (!string.IsNullOrEmpty(msg)) { DisplayMessage(msg); e.Cancel = true; return; } WorkflowContext.Current.UpdateWorkflowVariable("IsSave", false); WorkflowContext.Current.DataFields["Flag"] = "Submit"; WorkflowContext.Current.DataFields["Status"] = "In Progress"; //string strDepartment = DataForm1.Applicant.Department; //string strManager = @"ca\ztao"; //string strDirector = @"ca\ztao"; //string strHeader = @"ca\ztao"; //string strBBSTeam = @"ca\ztao"; //组开始 List<string> lst = WorkFlowUtil.UserListInGroup("wf_IT"); if (lst.Count == 0) { //Don DisplayMessage("Unable to submit the application. There is no user in wf_IT group. Please contact IT for further help."); e.Cancel = true; return; } NameCollection ItMemberUser = new NameCollection(); ItMemberUser.AddRange(lst.ToArray()); //ItMemberUser.Add(strManager); //string department = string.Empty; //if (DataForm1.Department.Contains(';')) // department = DataForm1.Department.Substring(0, DataForm1.Department.IndexOf(';') + 1); //else // department = DataForm1.Department; Employee approver = WorkFlowUtil.GetEmployeeApprover(DataForm1.Applicant); if (approver == null) { //Don DisplayMessage("Unable to find an approver for the applicant. Please contact IT for further help."); e.Cancel = true; return; } NameCollection DepartHeadUser = new NameCollection(); //lst = WorkFlowUtil.UserListInGroup("DepartmentHeadGroup"); //DepartHeadUser.AddRange(lst.ToArray()); DepartHeadUser.Add(approver.UserAccount); NameCollection ITHeadUser = new NameCollection(); string strHRHeadAccount = UserProfileUtil.GetDepartmentManager("it"); //lst = WorkFlowUtil.UserListInGroup("ITHead"); //ITHeadUser.AddRange(lst.ToArray()); ITHeadUser.Add(strHRHeadAccount); NameCollection CFOUser = new NameCollection(); lst = WorkFlowUtil.UserListInGroup("wf_CFO"); CFOUser.AddRange(lst.ToArray()); //FOCOUser.Add(strBBSTeam); //组结束 WorkflowContext.Current.UpdateWorkflowVariable("ITMemberAccounts", ItMemberUser); WorkflowContext.Current.UpdateWorkflowVariable("DepartHeaderAccounts", DepartHeadUser); WorkflowContext.Current.UpdateWorkflowVariable("ITHeaderAccounts", ITHeadUser); WorkflowContext.Current.UpdateWorkflowVariable("FOCOAccounts", CFOUser); WorkflowContext.Current.UpdateWorkflowVariable("IsFOCO", false); } //修改TaskTitle WorkflowContext.Current.UpdateWorkflowVariable("ITMemberTitle", DataForm1.Applicant.DisplayName + "'s IT request needs confirm"); WorkflowContext.Current.UpdateWorkflowVariable("DepartmentHeaderTitle", DataForm1.Applicant.DisplayName + "'s IT request needs approval"); WorkflowContext.Current.UpdateWorkflowVariable("ITHeaderTitle", DataForm1.Applicant.DisplayName + "'s IT request needs approval"); WorkflowContext.Current.UpdateWorkflowVariable("FOCOTitle", DataForm1.Applicant.DisplayName + "'s IT request needs approval"); WorkflowContext.Current.UpdateWorkflowVariable("UpdateTaskTitle", "Please complete IT request for " + DataForm1.Applicant.DisplayName); //修改结束 this.WorkFlowNumber = CreateWorkFlowNumber(); WorkflowContext.Current.DataFields["WorkFlowNumber"] = this.WorkFlowNumber; WorkflowContext.Current.DataFields["Name"] = DataForm1.Name; WorkflowContext.Current.DataFields["Department"] = DataForm1.Department; WorkflowContext.Current.DataFields["FOCOApprove"] = DataForm1.IsFOCO; WorkflowContext.Current.DataFields["ApplyDate"] = DataForm1.ApplyDate; WorkflowContext.Current.DataFields["AppliedUser"] = this.DataForm1.Applicant.UserAccount; WorkflowContext.Current.DataFields["ReasonforRequest"] = this.DataForm1.ReasonforRequest; }
private void UpdateWorkflow(QuickFlow.UI.Controls.ActionEventArgs e) { Employee approver = WorkFlowUtil.GetEmployeeApprover(DataForm1.Applicant); if (approver == null) { DisplayMessage("Unable to find an approver for the applicant. Please contact IT for further help."); e.Cancel = true; return; } List<string> list = WorkFlowUtil.UserListInGroup("wf_Reception"); if (list.Count > 1) { DisplayMessage("Unable to submit the application. More than one receptionist is defined. Please contact IT for further help."); e.Cancel = true; return; } string deptHead = approver.UserAccount; WorkflowContext.Current.UpdateWorkflowVariable("DepartmentHead", deptHead); NameCollection names = new NameCollection(); if (DataForm1.radiobuttonYes && DataForm1.RadioYes) { names.AddRange(list.ToArray()); WorkflowContext.Current.UpdateWorkflowVariable("ReceptionistUsers", names); WorkflowContext.Current.DataFields["IsTheSame"] = "yes"; } else if (DataForm1.radiobuttonYes && DataForm1.RadioNo) { if (IsReceptionist(DataForm1.btApplicant1)) { names.AddRange(list.ToArray()); WorkflowContext.Current.UpdateWorkflowVariable("ReceptionistUsers", names); WorkflowContext.Current.DataFields["IsTheSame"] = "yes"; } else { names.AddRange(list.ToArray()); names.Add(DataForm1.btApplicant1); WorkflowContext.Current.UpdateWorkflowVariable("ReceptionistUsers", names); WorkflowContext.Current.DataFields["IsTheSame"] = "no"; } } else if (DataForm1.radiobuttonYes && DataForm1.RadioDisplay) { names.AddRange(list.ToArray()); WorkflowContext.Current.UpdateWorkflowVariable("ReceptionistUsers", names); WorkflowContext.Current.DataFields["IsTheSame"] = "yes"; } else if (DataForm1.radiobuttonNO && DataForm1.RadioYes) { if (IsReceptionist(DataForm1.btUser1)) { names.AddRange(list.ToArray()); WorkflowContext.Current.UpdateWorkflowVariable("ReceptionistUsers", names); WorkflowContext.Current.DataFields["IsTheSame"] = "yes"; } else { names.AddRange(list.ToArray()); names.Add(DataForm1.btUser1); WorkflowContext.Current.UpdateWorkflowVariable("ReceptionistUsers", names); WorkflowContext.Current.DataFields["IsTheSame"] = "no"; } } else if (DataForm1.radiobuttonNO && DataForm1.RadioNo) { if (DataForm1.btUser1.Equals(DataForm1.btApplicant1, StringComparison.CurrentCultureIgnoreCase)) { names.Add(DataForm1.btUser1); WorkflowContext.Current.UpdateWorkflowVariable("ReceptionistUsers", names); WorkflowContext.Current.DataFields["IsTheSame"] = "yes"; } else { names.Add(DataForm1.btUser1); names.Add(DataForm1.btApplicant1); WorkflowContext.Current.UpdateWorkflowVariable("ReceptionistUsers", names); WorkflowContext.Current.DataFields["IsTheSame"] = "no"; } } else if (DataForm1.radiobuttonNO && DataForm1.RadioDisplay) { names.Add(DataForm1.btUser1); WorkflowContext.Current.UpdateWorkflowVariable("ReceptionistUsers", names); WorkflowContext.Current.DataFields["IsTheSame"] = "yes"; } //List<string> strGroupUsers = WorkFlowUtil.UserListInGroup("wf_Reception"); //NameCollection names = new NameCollection(); //names.AddRange(strGroupUsers.ToArray()); //WorkflowContext.Current.UpdateWorkflowVariable("ReceptionistUsers", names); WorkflowContext.Current.UpdateWorkflowVariable("DepartmentHeadTaskTitle", DataForm1.Applicant.DisplayName + "'s travel request needs approval"); WorkflowContext.Current.UpdateWorkflowVariable("ReceptionistTaskTitle", "Please complete travel request for " + DataForm1.Applicant.DisplayName); WorkflowContext.Current.DataFields["UserName"] = DataForm1.Applicant.UserAccount; WorkflowContext.Current.DataFields["EnglishName"] = DataForm1.Applicant.DisplayName; WorkflowContext.Current.DataFields["Department"] = DataForm1.Applicant.Department; WorkflowContext.Current.DataFields["JobTitle"] = DataForm1.Applicant.Title; WorkflowContext.Current.DataFields["AirNotes"] = DataForm1.AirNotes; WorkflowContext.Current.DataFields["HotelNotes"] = DataForm1.HotelNotes; bool bol = DataForm1.RadioYes; WorkflowContext.Current.DataFields["RadioYes"] = bol.ToString(); if (DataForm1.radiobuttonNO) { WorkflowContext.Current.DataFields["btUser"] = DataForm1.btUser1; } else { WorkflowContext.Current.DataFields["btUser"] = string.Empty; } if (DataForm1.RadioNo) { WorkflowContext.Current.DataFields["btApplicant"] = DataForm1.btApplicant1; } else { WorkflowContext.Current.DataFields["btApplicant"] = string.Empty; } WorkflowContext.Current.DataFields["Status"] = "InProgress"; }
private void StartWorkflowButton_Executing(object sender, CancelEventArgs e) { string url = Request.UrlReferrer.ToString(); if (!this.DataForm.SubmitStatus) { Response.Write("<script type=\"text/javascript\">alert('You are not in Buying Department .');window.location = '" + url + "';</script>"); Response.End(); e.Cancel = true; return; } WorkflowContext context = WorkflowContext.Current; WorkflowDataFields fields = WorkflowContext.Current.DataFields; var btn = sender as StartWorkflowButton; if (string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase)) { context.UpdateWorkflowVariable("IsSave", true); context.DataFields["Status"] = CAWorkflowStatus.Pending; } else { #region Set users for workflow Employee manager = WorkFlowUtil.GetApproverByLevelPAD(this.DataForm.Applicant); if (null == manager) { Response.Write("<script type=\"text/javascript\">alert('The init error about applicant’s manager in the system.');window.location = '" + url + "';</script>"); Response.End(); e.Cancel = true; return; } NameCollection DMMTask = new NameCollection(); DMMTask.Add(manager.UserAccount); fields["CurrManager"] = manager.UserAccount; NameCollection wf_NTSC_QM = new NameCollection(); //NameCollection wf_NTSC_QAD = new NameCollection(); NameCollection wf_NTSC_SCM = new NameCollection(); NameCollection wf_NTSC_SCMM = new NameCollection(); List<string> qm = WorkFlowUtil.UserListInGroup(NewProductionUnitCreationConstants.wf_NTSC_QM); //List<string> qad = WorkFlowUtil.UserListInGroup(NewProductionUnitCreationConstants.wf_NTSC_QAD); List<string> scm = WorkFlowUtil.UserListInGroup(NewProductionUnitCreationConstants.wf_NTSC_SCM); List<string> scmm = WorkFlowUtil.UserListInGroup(NewProductionUnitCreationConstants.wf_NTSC_SCMM); System.Text.StringBuilder group = new System.Text.StringBuilder(); if (qm.Count == 0) { group.Append(" wf_NTSC_QM "); } //if (qad.Count == 0) //{ // group.Append(" wf_NTSC_QAD "); //} if (scm.Count == 0) { group.Append(" wf_NTSC_SCM "); } if (scmm.Count == 0) { group.Append(" wf_NTSC_SCMM "); } if (scm.Count == 0 || scmm.Count == 0 || qm.Count == 0) { Response.Write("<script type=\"text/javascript\">alert('The init error about WorkflowPerson in the " + group.ToString() + "');window.location = '" + url + "';</script>"); Response.End(); e.Cancel = true; return; } wf_NTSC_QM.AddRange(qm.ToArray()); //wf_NTSC_QAD.AddRange(qad.ToArray()); wf_NTSC_SCM.AddRange(scm.ToArray()); wf_NTSC_SCMM.AddRange(scmm.ToArray()); System.Text.StringBuilder strStepAndUsers = new System.Text.StringBuilder(); strStepAndUsers.AppendFormat("{0}:{1};", "DMMTask", DMMTask.JoinString(",")); strStepAndUsers.AppendFormat("{0}:{1};", "QMTask", wf_NTSC_QM.JoinString(",")); //strStepAndUsers.AppendFormat("{0}:{1};", "QADTask", wf_NTSC_QAD.JoinString(",")); strStepAndUsers.AppendFormat("{0}:{1};", "SCMTask", wf_NTSC_SCM.JoinString(",")); strStepAndUsers.AppendFormat("{0}:{1};", "SCMConfirmTask", wf_NTSC_SCMM.JoinString(",")); fields["WorkFlowStepsAndUsers"] = strStepAndUsers.ToString(); context.UpdateWorkflowVariable("NextApproveTaskUsers", GetDelemanNameCollection(DMMTask, WorkFlowUtil.GetModuleIdByListName("New Production Unit Creation"))); #endregion context.UpdateWorkflowVariable("IsSave", false); context.DataFields["Status"] = CAWorkflowStatus.InProgress; } #region Save the data string workflowNumber = CreateWorkflowNumber(); fields["WorkFlowNumber"] = workflowNumber; fields["Applicant"] = this.DataForm.Applicant.UserAccount; fields["Department"] = this.DataForm.Applicant.Department; fields["ApplicantSPUser"] = NewProductionUnitCreation.EnsureUser(this.DataForm.Applicant.UserAccount); fields["SupplierName"] = this.DataForm.SupplierName; fields["SubDivision"] = this.DataForm.Applicant.Department; fields["SupplierNo"] = this.DataForm.SupplierNo; fields["PUNO"] = this.DataForm.PUNO; fields["ProductionUnitName"] = this.DataForm.ProductionUnitName; fields["IsMondial"] = this.DataForm.IsMondial == "Yes" ? true : false; fields["Reason"] = this.DataForm.Reason; #endregion #region Set title for workflow //string taskTitle = string.Format("{0} {1} {2}'s New Production Unit Creation needs approval" // , workflowNumber // , this.DataForm.SupplierName // , this.DataForm.Applicant.UserAccount); string taskTitle = string.Format("{0} {1}'s New Production Unit Creation needs approval" , workflowNumber , this.DataForm.Applicant.UserAccount); context.UpdateWorkflowVariable("CompleteTaskTitle", "Please complete New Production Unit Creation"); context.UpdateWorkflowVariable("NextApproveTaskTitle", taskTitle); #endregion #region Set page URL for workflow var editURL = "/_Layouts/CA/WorkFlows/NewProductionUnitCreation/EditForm.aspx"; var approveURL = "/_Layouts/CA/WorkFlows/NewProductionUnitCreation/ApproveForm.aspx"; context.UpdateWorkflowVariable("CompleteTaskFormURL", editURL); context.UpdateWorkflowVariable("NextApproveTaskFormURL", approveURL); #endregion SendEmail("Submit"); WorkFlowUtil.UpdateWorkflowPath(WorkflowContext.Current); }
/// <summary> /// Cria um valor compatível para o tipo indicado com base no conteúdo /// do modelo deserializado. /// </summary> /// <param name="type">O tipo do dado esperado.</param> /// <param name="node">O modelo deserializado.</param> /// <returns>O valor obtido da compatibilização.</returns> private object CreateCompatibleValue(Type type, NodeModel node) { if (node == null) { return(null); } if (type == typeof(PropertyCollection)) { return((PropertyCollection)CreateCompatibleValue(typeof(object), node)); } if (type == typeof(NameCollection)) { var target = new NameCollection(); foreach (var item in node.ChildValues()) { target.Add(item.Value.ToString()); } return(target); } if (type == typeof(FieldCollection)) { var target = new FieldCollection(); foreach (var @object in node.ChildObjects()) { var field = new Field(); CopyNodeProperties(@object, field); target.Add(field); } return(target); } if (type == typeof(LinkCollection)) { var target = new LinkCollection(); foreach (var item in node.Children()) { var link = new Link(); CopyNodeProperties(item, link); target.Add(link); } return(target); } if (type == typeof(EntityActionCollection)) { var target = new EntityActionCollection(); foreach (var item in node.Children()) { var action = new EntityAction(); CopyNodeProperties(item, action); target.Add(action); } return(target); } if (type == typeof(EntityCollection)) { var target = new EntityCollection(); foreach (var item in node.Children()) { var entity = new Entity(); CopyNodeProperties(item, entity); target.Add(entity); } return(target); } if (type == typeof(CaseVariantString)) { var text = (node as ValueModel)?.Value.ToString(); return(text.ChangeCase(TextCase.PascalCase)); } return(CreateCompatibleValue(node)); }
void actions_ActionExecuting(object sender, QuickFlow.UI.Controls.ActionEventArgs e) { if (e.Action.Equals("End", StringComparison.CurrentCultureIgnoreCase)) { WorkflowContext.Current.DataFields["Status"] = "Cancelled"; return; } string msg = DataForm1.Validate(); if (!string.IsNullOrEmpty(msg)) { DisplayMessage(msg); e.Cancel = true; return; } NameCollection buyingUsers = new NameCollection(); buyingUsers.Add(DataForm1.BuyingUser); // WorkflowContext.Current.UpdateWorkflowVariable("BuyingApproveUsers", buyingUsers); WorkflowContext.Current.UpdateWorkflowVariable(CA.WorkFlow.UI.Constants.WorkFlowStep.SupplierReticketingBuyingApproveUsers, GetDelemanNameCollection(buyingUsers, Constants.CAModules.SupplierReTicketingCharge)); WorkflowContext.Current.DataFields["BuyingUser"] = DataForm1.BuyingUser; WorkflowContext.Current.DataFields["FileName"] = DataForm1.Submit(); ; if (!string.IsNullOrEmpty(ctfComments.Value.ToString())) { WorkflowContext.Current.DataFields["Comments"] = string.Empty; } WorkFlowUtil.UpdateWorkflowPath(WorkflowContext.Current); }
void StartWorkflowButton1_Executing(object sender, System.ComponentModel.CancelEventArgs e) { StartWorkflowButton btn = sender as StartWorkflowButton; if (string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase)) { WorkflowContext.Current.UpdateWorkflowVariable("IsSave", true); WorkflowContext.Current.DataFields["Flag"] = "Save"; WorkflowContext.Current.DataFields["Status"] = "NonSubmit"; } else { WorkflowContext.Current.UpdateWorkflowVariable("IsSave", false); WorkflowContext.Current.DataFields["Flag"] = "Submit"; WorkflowContext.Current.DataFields["Status"] = "In Progress"; } //string strDepartment = DataForm1.Applicant.Department; //string strConstructionHeader = @"ca\ztao"; //string strConstruction = @"ca\ztao"; //string strDepartmentHeader = @"ca\ztao"; //string strStoreOperationTeam = @"ca\ztao"; //string strCFO = @"ca\ztao"; //组开始 string strConstructionHeadAccount = UserProfileUtil.GetDepartmentManager("Construction"); //List<string> lst = WorkFlowUtil.UserListInGroup("ConstructionHeadGroup"); NameCollection ConstructionHead = new NameCollection(); //ConstructionHead.AddRange(lst.ToArray()); ConstructionHead.Add(strConstructionHeadAccount); //ConstructionHead.Add(@"ca\caix"); NameCollection ConstructionUser = new NameCollection(); List<string> lst = WorkFlowUtil.UserListInGroup("wf_Construction"); ConstructionUser.AddRange(lst.ToArray()); //ConstructionUser.Add(strConstruction); string department = string.Empty; if (DataForm1.Applicant.Department.Contains(';')) department = DataForm1.Applicant.Department.Substring(0, DataForm1.Applicant.Department.IndexOf(';')+1); else department = DataForm1.Applicant.Department; string departmentManager = UserProfileUtil.GetDepartmentManager(department); if (string.IsNullOrEmpty(departmentManager)) { //Don DisplayMessage("Unable to submit the application. There is no department manager defined. Please contact IT for further help."); e.Cancel = true; return; } NameCollection DepartmentHead = new NameCollection(); //lst = WorkFlowUtil.UserListInGroup("DepartmentHeadGroup"); //DepartmentHead.AddRange(lst.ToArray()); //DepartmentHead.Add(strDepartmentHeader); DepartmentHead.Add(departmentManager); NameCollection StoreOperationTeamUser = new NameCollection(); try { //lst = WorkFlowUtil.UserListInGroup("wf_StoreOperationTeam"); //StoreOperationTeamUser.AddRange(lst.ToArray()); //SPListItemCollection coll = GetSPColl("Stores", "Cost Center", DataForm1.CostCenter, 1); //StoreOperationTeamUser.Add(new SPFieldLookupValue(coll[0]["Owner"] + "").LookupValue); string strStoreOperations = UserProfileUtil.GetDepartmentManager("Store Operations"); StoreOperationTeamUser.Add(strStoreOperations); } catch { } //StoreOperationTeamUser.Add(strStoreOperationTeam); NameCollection CFOUser = new NameCollection(); lst = WorkFlowUtil.UserListInGroup("wf_CFO"); CFOUser.AddRange(lst.ToArray()); //CFOUser.Add(strCFO); //组结束 WorkflowContext.Current.UpdateWorkflowVariable("ConstructionHeadAccount", ConstructionHead); WorkflowContext.Current.UpdateWorkflowVariable("ConstructionAccount", ConstructionUser); WorkflowContext.Current.UpdateWorkflowVariable("DepartmentHeadAccount", DepartmentHead); WorkflowContext.Current.UpdateWorkflowVariable("StoreOperationTeamAccount", StoreOperationTeamUser); WorkflowContext.Current.UpdateWorkflowVariable("CFOAccount", CFOUser); WorkflowContext.Current.UpdateWorkflowVariable("isSameUser", Common.IsSameUser(DepartmentHead, StoreOperationTeamUser, CFOUser)); WorkflowContext.Current.UpdateWorkflowVariable("IsFixedAsset", DataForm1.RequestType == "Capex" ? "FixedAsset" : DataForm1.RequestType); //修改TaskTitle WorkflowContext.Current.UpdateWorkflowVariable("ConstructionHeadTitle", DataForm1.Applicant.DisplayName + "'s construction purchasing request needs approval"); WorkflowContext.Current.UpdateWorkflowVariable("ConstructionTitle", DataForm1.Applicant.DisplayName + "'s construction purchasing request needs supplies other information"); WorkflowContext.Current.UpdateWorkflowVariable("DepartmentHeadTitle", DataForm1.Applicant.DisplayName + "'s construction purchasing request needs approval"); WorkflowContext.Current.UpdateWorkflowVariable("StoreOperationTeamTitle", DataForm1.Applicant.DisplayName + "'s construction purchasing request needs approval"); WorkflowContext.Current.UpdateWorkflowVariable("CFOTitle", DataForm1.Applicant.DisplayName + "'s construction purchasing request needs approval"); WorkflowContext.Current.UpdateWorkflowVariable("UpdateTaskTitle", "Please complete construction purchasing request for " + DataForm1.Applicant.DisplayName); WorkflowContext.Current.UpdateWorkflowVariable("PlacesTheOrderTitle", DataForm1.Applicant.DisplayName + "'s construction purchasing request needs places the order"); WorkflowContext.Current.UpdateWorkflowVariable("OrderHandoverTitle", DataForm1.Applicant.DisplayName + "'s construction purchasing request needs order handover"); //修改结束 this.WorkFlowNumber = CreateWorkFlowNumber(); WorkflowContext.Current.DataFields["WorkFlowNumber"] = this.WorkFlowNumber; WorkflowContext.Current.DataFields["ApplyDept"] = DataForm1.Applicant.Department; WorkflowContext.Current.DataFields["ApplyDate"] = DataForm1.ApplyDate; WorkflowContext.Current.DataFields["ApplyUser"] = this.DataForm1.Applicant.UserAccount; WorkflowContext.Current.DataFields["RequestType"] = this.DataForm1.RequestType; WorkflowContext.Current.DataFields["BudgetApproved"] = this.DataForm1.BudgetApproved; WorkflowContext.Current.DataFields["CurrencyType"] = this.DataForm1.CurrencyType; WorkflowContext.Current.DataFields["CostCenter"] = this.DataForm1.CostCenter; WorkflowContext.Current.DataFields["BudgetValue"] = this.DataForm1.BudgetValue; WorkflowContext.Current.DataFields["ProduceandDeliveryDate"] = this.DataForm1.ProduceandDeliveryDate; WorkflowContext.Current.DataFields["Installation"] = this.DataForm1.Installation; WorkflowContext.Current.DataFields["Freight"] = this.DataForm1.Freight; WorkflowContext.Current.DataFields["Packaging"] = this.DataForm1.Packaging; }
private void StartWorkflowButton_Executing(object sender, CancelEventArgs e) { string taskTitle = CurrentEmployee.DisplayName + "'s Purchase Request "; WorkflowContext context = WorkflowContext.Current; WorkflowDataFields fields = WorkflowContext.Current.DataFields; bool isHO = PurchaseRequestCommon.IsHO(CurrentEmployee.UserAccount); var formType = DataForm1.FormType; var storePurpose = DataForm1.StorePurposeType; //Check which button has been clicked StartWorkflowButton btn = sender as StartWorkflowButton; DataTable dtPRData= DataForm1.dtGetPRData(); if (string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase)) { if (!this.DataForm1.ValidateForSave()) { DisplayMessage(DataForm1.MSG); e.Cancel = true; DataForm1.RequestId = fields["WorkflowNumber"].AsString(); DataForm1.RebindItems(dtPRData); return; } this.DataForm1.Update(); //验证通过更新DataTable #region Check QuarterlyOrder Count bool isQuartOrderOK= CheckQuartOrder(isHO, storePurpose); if (!isQuartOrderOK) { e.Cancel = true; return; } #endregion context.UpdateWorkflowVariable("IsSave", true); context.DataFields["Status"] = CAWorkflowStatus.Pending; } else { if (!this.DataForm1.Validate()) { DisplayMessage(DataForm1.MSG); e.Cancel = true; DataForm1.RequestId = fields["WorkflowNumber"].AsString(); DataForm1.RebindItems(dtPRData); return; } this.DataForm1.Update(); //验证通过更新DataTable #region Check QuarterlyOrder Count bool isQuartOrderOK = CheckQuartOrder(isHO, storePurpose); if (!isQuartOrderOK) { e.Cancel = true; return; } //if (!isHO && !PurchaseRequestCommon.IsLegalStoreRequest(storePurpose, CurrentEmployee.UserAccount))//是门店并且不合法的季度订单 //{ // DataForm1.UpdateItemForQuartOrder(); // DisplayMessage("Can not request quarterly order in current month or you have requested it."); // e.Cancel = true; // return; //} #endregion #region Set users for workflow var managerEmp = WorkFlowUtil.GetNextConstructionApprover(CurrentEmployee); if (managerEmp == null) { DisplayMessage("The manager is not set in the system."); e.Cancel = true; return; } if (isHO) { var manager = new NameCollection(); manager.Add(managerEmp.UserAccount); var deleman = PurchaseRequestCommon.GetDeleman(managerEmp.UserAccount); //查找代理人 if (deleman != null) { manager.Add(deleman); } context.UpdateWorkflowVariable("ApproveTaskUsers", manager); } else { string taskAssignType = DataForm1.GetTaskAssignType(dtPRData);// TaskAssignType; SPListItemCollection lc = null; lc = WorkFlowUtil.GetCollectionByColumn("AssignType", taskAssignType, "PurchaseRequestTaskAssign"); NameCollection checkManager = new NameCollection(); Employee emp = null; foreach (SPListItem item in lc) { emp = UserProfileUtil.GetEmployeeEx(item["TaskChecker"].ToString()); if (emp != null) { checkManager.Add(emp.UserAccount); } } if (checkManager.Count == 0) { DisplayMessage("The HO checkers are not set in the system. Please contact IT for further help."); e.Cancel = true; return; } //Modify task users context.UpdateWorkflowVariable("CheckTaskUsers", checkManager); } fields["CurrManager"] = managerEmp.UserAccount; #endregion context.UpdateWorkflowVariable("IsSave", false); context.DataFields["Status"] = CAWorkflowStatus.InProgress; #region SkipApproveCondition bool isSkipApprove = false; //若门店申请,则只能选择StoreRequest;若HO申请,则可以选择除StoreRequest外的其他三项 //即PaperBagRequest和HORequest肯定是HO用户的申请 if (DataForm1.FormType == "HO") { isSkipApprove = DataForm1.HOPurposeType.Equals("Department");//当HO代其他部门申请时,则无需PR工作流审批 } /*switch (DataForm1.FormType) { case "PaperBag": isSkipApprove = true;//纸袋已线下审批,无需PR工作流再次审批 break; case "HO": isSkipApprove = DataForm1.HOPurposeType.Equals("Department");//当HO代其他部门申请时,则无需PR工作流审批 break; default: break; }*/ context.UpdateWorkflowVariable("IsSkipApprove", isSkipApprove);//Paper bag和HO代其他部门填写是不需要审批的,直接可以生成PO了 #endregion #region SkipApproveTaskAssign //若SkipApprove,则需直接指定最后Confirm的任务人 if (isSkipApprove) { var confirmManager = new NameCollection(); confirmManager.Add(CurrentEmployee.UserAccount); fields["CheckPerson"] = CurrentEmployee.UserAccount; context.UpdateWorkflowVariable("ConfirmTaskUsers", confirmManager); } #endregion } #region Save the data //Save data to master table and sub table var workflowNumber = CreateWorkflowNumber(); workflowNumber = DataForm1.IsReturn ? workflowNumber + "R" : workflowNumber; fields["WorkflowNumber"] = workflowNumber; var requestType = DataForm1.RequestType; var capexType = DataForm1.CapexType; var itemIdentity = DataForm1.ItemIdentity; PurchaseRequestCommon.SaveDetails(dtPRData, workflowNumber, capexType, requestType, isHO, itemIdentity); //Save request details to lists //float total = float.Parse(DataForm1.Total); double totalRMB = DataForm1.GetTotalRMB(dtPRData);// float.Parse(DataForm1.TotalRMB); float approvalTotalRMB = float.Parse(DataForm1.GetApprovalTotalRMB(dtPRData));// float.Parse(DataForm1.ApprovalTotalRMB); fields["Applicant"] = CurrentEmployee.DisplayName + "(" + CurrentEmployee.UserAccount + ")"; //fields["Total"] = total; fields["TotalRMB"] = totalRMB; fields["ApprovalTotalRMB"] = approvalTotalRMB; fields["RequestType"] = requestType; fields["CapexType"] = capexType; fields["FormType"] = formType; fields["PRHOPurpose"] = DataForm1.HOPurposeType; fields["PRStorePurpose"] = DataForm1.StorePurposeType; #endregion if (isHO) { var ht = WorkFlowUtil.GetApproveLevel(approvalTotalRMB, "PR"); if (ht.Count == 0) { DisplayMessage("The system didn't set the approve level info."); e.Cancel = true; return; } //fields["HighLevel"] = ht["HighLevel"].ToString(); fields["LowLevel"] = ht["LowLevel"].ToString(); fields["CheckPerson"] = CurrentEmployee.UserAccount;//HO发起人自己做最后一步的Confirm } fields["IsHO"] = isHO; #region Set title for workflow //Modify task title context.UpdateWorkflowVariable("CompleteTaskTitle", workflowNumber + " :Please complete the PR"); context.UpdateWorkflowVariable("CheckTaskTitle", string.Format("{0} \"{1}\" needs check", taskTitle, workflowNumber)); context.UpdateWorkflowVariable("ApproveTaskTitle", string.Format("{0} \"{1}\" needs approval", taskTitle, workflowNumber)); context.UpdateWorkflowVariable("ConfirmTaskTitle", string.Format("{0} \"{1}\" needs generate PO", taskTitle, workflowNumber)); #endregion #region Set page URL for workflow //Set task url var editURL = "/_Layouts/CA/WorkFlows/PurchaseRequest/EditForm01.aspx"; var approveURL = "/_Layouts/CA/WorkFlows/PurchaseRequest/ApproveForm.aspx"; var checkURL = "/_Layouts/CA/WorkFlows/PurchaseRequest/CheckForm01.aspx"; var confirmURL = "/_Layouts/CA/WorkFlows/PurchaseRequest/ConfirmForm.aspx"; context.UpdateWorkflowVariable("CompleteTaskFormURL", editURL); context.UpdateWorkflowVariable("CheckTaskFormURL", checkURL); context.UpdateWorkflowVariable("ApproveTaskFormURL", approveURL); context.UpdateWorkflowVariable("ConfirmTaskFormURL", confirmURL); #endregion //Update IsHO vari in wf. Different level person have different path context.UpdateWorkflowVariable("IsHO", isHO); WorkFlowUtil.UpdateWorkflowPath(WorkflowContext.Current); }
/// <summary> /// 得到最后一步审批组MMC,BBS里的审批用户 /// </summary> /// <returns></returns> NameCollection GetACCBBSApprovers() { NameCollection ncMMCBBSApprovers = new NameCollection(); SPGroup groupMMC = WorkFlowUtil.GetUserGroup("wf_ACC"); if (groupMMC == null || groupMMC.Users.Count == 0) { DisplayMessage("There are no users in wf_ACC"); return null; } foreach (SPUser user in groupMMC.Users) { string sName = user.LoginName; if (user.IsSiteAdmin || sName.Equals("SHAREPOINT\\System", StringComparison.CurrentCultureIgnoreCase)) { continue; } ncMMCBBSApprovers.Add(sName); string deleman = WorkFlowUtil.GetDeleman(sName, WorkFlowUtil.GetModuleIdByListName("POTypeChangeWorkflow")); if (deleman != null) { ncMMCBBSApprovers.Add(deleman); } } if (ncMMCBBSApprovers.Count == 0) { DisplayMessage("There are no users in wf_ACC"); return null; } SPGroup groupBBS = WorkFlowUtil.GetUserGroup("wf_BSS"); if (groupBBS == null || groupBBS.Users.Count == 0) { DisplayMessage("There are no users in wf_BSS"); return null; } bool bExistBBS = false; foreach (SPUser user in groupBBS.Users) { string sName = user.LoginName; if (user.IsSiteAdmin || sName.Equals("SHAREPOINT\\System", StringComparison.CurrentCultureIgnoreCase)) { continue; } ncMMCBBSApprovers.Add(sName); string deleman = WorkFlowUtil.GetDeleman(sName, WorkFlowUtil.GetModuleIdByListName("POTypeChangeWorkflow")); if (deleman != null) { ncMMCBBSApprovers.Add(deleman); } bExistBBS = true; } if (!bExistBBS) { DisplayMessage("There are no users in wf_BSS"); return null; } return ncMMCBBSApprovers; }
private void Actions_ActionExecuting(object sender, ActionEventArgs e) { WorkflowContext context = WorkflowContext.Current; WorkflowDataFields fields = WorkflowContext.Current.DataFields; DataTable dtPRData = DataForm1.dtGetPRData(); if (e.Action.Equals("Save", StringComparison.CurrentCultureIgnoreCase)) { if (!this.DataForm1.ValidateForSave()) { DisplayMessage(this.DataForm1.MSG); e.Cancel = true; DataForm1.RequestId = fields["WorkflowNumber"].AsString(); DataForm1.RebindItems(dtPRData); return; } SaveAction(sender, e, dtPRData); } else if (e.Action.Equals("Submit", StringComparison.CurrentCultureIgnoreCase)) { if (!this.DataForm1.Validate()) { DisplayMessage(DataForm1.MSG); e.Cancel = true; DataForm1.RequestId = fields["WorkflowNumber"].AsString(); DataForm1.RebindItems(dtPRData); return; } bool isHO = (bool)fields["IsHO"]; var formType = DataForm1.FormType; var storePurpose = DataForm1.StorePurposeType; this.DataForm1.Update(); //验证通过更新DataTable #region Check QuarterlyOrder Count bool isQuartOrderOK = CheckQuartOrder(isHO, storePurpose, fields["Created"].AsString()); if (!isQuartOrderOK) //if (!isHO && !PurchaseRequestCommon.IsLegalStoreRequest(storePurpose, CurrentEmployee.UserAccount))//是门店并且不合法的季度订单 { DataForm1.UpdateItemForQuartOrder(); DisplayMessage("Can not request quarterly order in current month or you have requested it."); e.Cancel = true; return; } #endregion #region Set users for workflow var managerEmp = WorkFlowUtil.GetNextConstructionApprover(CurrentEmployee); if (managerEmp == null) { DisplayMessage("The manager is not set in the system."); e.Cancel = true; return; } if (isHO) { var manager = new NameCollection(); manager.Add(managerEmp.UserAccount); var deleman = PurchaseRequestCommon.GetDeleman(managerEmp.UserAccount); //查找代理人 if (deleman != null) { manager.Add(deleman); } context.UpdateWorkflowVariable("ApproveTaskUsers", manager); } else { string taskAssignType = DataForm1.GetTaskAssignType(dtPRData); SPListItemCollection lc = null; lc = WorkFlowUtil.GetCollectionByColumn("AssignType", taskAssignType, "PurchaseRequestTaskAssign"); NameCollection checkManager = new NameCollection(); Employee emp = null; foreach (SPListItem item in lc) { emp = UserProfileUtil.GetEmployeeEx(item["TaskChecker"].ToString()); if (emp != null) { checkManager.Add(emp.UserAccount); } } if (checkManager.Count == 0) { DisplayMessage("The HO checkers are not set in the system. Please contact IT for further help."); e.Cancel = true; return; } //Modify task users context.UpdateWorkflowVariable("CheckTaskUsers", checkManager); } fields["CurrManager"] = managerEmp.UserAccount; #endregion #region Save the data var requestType = DataForm1.RequestType; var capexType = DataForm1.CapexType; var itemIdentity = DataForm1.ItemIdentity; PurchaseRequestCommon.DeleteAllDraftItems(fields["WorkflowNumber"].AsString()); //Delete all draft items before saving PurchaseRequestCommon.SaveDetails(dtPRData, fields["WorkflowNumber"].AsString(), capexType, requestType, isHO, itemIdentity); //Save request details to lists //float total = float.Parse(DataForm1.Total); double totalRMB = DataForm1.GetTotalRMB(dtPRData); float approvalTotalRMB = float.Parse(DataForm1.GetApprovalTotalRMB(dtPRData)); //fields["Total"] = total; fields["TotalRMB"] = totalRMB; fields["ApprovalTotalRMB"] = approvalTotalRMB; fields["RequestType"] = requestType; fields["CapexType"] = capexType; fields["FormType"] = formType; fields["PRHOPurpose"] = DataForm1.HOPurposeType; fields["PRStorePurpose"] = DataForm1.StorePurposeType; #endregion if (isHO) { var ht = WorkFlowUtil.GetApproveLevel(approvalTotalRMB, "PR"); if (ht.Count == 0) { DisplayMessage("The system didn't set the approve level info."); e.Cancel = true; return; } //fields["HighLevel"] = ht["HighLevel"].ToString(); fields["LowLevel"] = ht["LowLevel"].ToString(); fields["CheckPerson"] = CurrentEmployee.UserAccount;//HO发起人自己做最后一步的Confirm } #region SkipApproveCondition bool isSkipApprove = false; //若门店申请,则只能选择StoreRequest;若HO申请,则可以选择除StoreRequest外的其他三项 //即PaperBagRequest和HORequest肯定是HO用户的申请 switch (DataForm1.FormType) { case "PaperBag": isSkipApprove = true;//纸袋已线下审批,无需PR工作流再次审批 break; case "HO": isSkipApprove = DataForm1.HOPurposeType.Equals("Department");//当HO代其他部门申请时,则无需PR工作流审批 break; default: break; } context.UpdateWorkflowVariable("IsSkipApprove", isSkipApprove);//Paper bag和HO代其他部门填写是不需要审批的,直接可以生成PO了 #endregion #region SkipApproveTaskAssign //若SkipApprove,则需直接指定最后Confirm的任务人 if (isSkipApprove) { var confirmManager = new NameCollection(); confirmManager.Add(CurrentEmployee.UserAccount); fields["CheckPerson"] = CurrentEmployee.UserAccount; context.UpdateWorkflowVariable("ConfirmTaskUsers", confirmManager); } #endregion context.UpdateWorkflowVariable("IsSave", false); context.DataFields["Status"] = CAWorkflowStatus.InProgress; } WorkFlowUtil.UpdateWorkflowPath(WorkflowContext.Current); }
internal static NameCollection GetTaskUsers(NameCollection manager, string managerAccount) { manager.Add(managerAccount); string moduleID = WorkFlowUtil.GetModuleIdByListName("TravelExpenseClaimWorkflow"); var deleman = WorkFlowUtil.GetDeleman(managerAccount, moduleID); if (deleman != null) { manager.Add(deleman); } return manager; }
void StartWorkflowButton1_Executing(object sender, System.ComponentModel.CancelEventArgs e) { string msg = DataForm1.Validate(); if (!string.IsNullOrEmpty(msg)) { DisplayMessage(msg); e.Cancel = true; return; } //验证组里用户是否为空 List<string> list = WorkFlowUtil.UserListInGroup("wf_EquApp"); if (list.Count == 0) { DisplayMessage("Unable to submit the application. There is no user in wf_EquApp group. Please contact IT for further help."); e.Cancel = true; return; } WorkflowContext curContext = WorkflowContext.Current; WorkflowDataFields fields = WorkflowContext.Current.DataFields; string taskTitle = SPContext.Current.Web.CurrentUser.Name + "'s Equipment Application"; string passTo = DataForm1.Manager; fields["FunctionalManagerLoginName"] = DataForm1.FunctionalManager; fields["ManagerLoginName"] = passTo; fields["EmployeeName"] = ((TextBox)DataForm1.FindControl("txtEmployeeName")).Text; fields["EmployeeTitle"] = ((TextBox)DataForm1.FindControl("txtEmployeeTitle")).Text; fields["EmployeeID"] = ((TextBox)DataForm1.FindControl("txtEmployeeID")).Text; //fields["OnboardAt"] = ((TextBox)DataForm1.FindControl("txtOnboardAt")).Text; fields["OnboardAt"] = ((CADateTimeControl)DataForm1.FindControl("CADateTime1")).SelectedDate.ToShortDateString(); fields["Department"] = ((TextBox)DataForm1.FindControl("txtDepartment")).Text; fields["Manager"] = EnsureUser(passTo); if (!string.IsNullOrEmpty(DataForm1.FunctionalManager)) { fields["FunctionalManager"] = EnsureUser(DataForm1.FunctionalManager); } else fields["FunctionalManager"] = string.Empty; //fields["Remark"] = ((TextBox)DataForm1.FindControl("txtRemark")).Text; fields["WorkflowNumber"] = CreateWorkflowNumber(); fields["Status"] = "In Progress"; curContext.UpdateWorkflowVariable("HRSubmitTitle", "Please complete equipment application"); curContext.UpdateWorkflowVariable("FunctionalManagerApproveTitle", taskTitle + " needs approval"); curContext.UpdateWorkflowVariable("DepartmentHeadApproveTitle", taskTitle + " needs approval"); curContext.UpdateWorkflowVariable("ITGroupConfirmTitle", taskTitle + " needs confirm"); //curContext.UpdateWorkflowVariable("CFCOGroupApproveTitle", taskTitle + " needs approval"); #region Set FunctionalManager or DH //设置工作流步骤及对应原始审批人 System.Text.StringBuilder strStepAndUsers = new System.Text.StringBuilder(); var functionManager = DataForm1.FunctionalManager; if (functionManager.IsNotNullOrWhitespace()) { var functionalManager = new NameCollection(); functionalManager.Add(functionManager); var deleman = WorkFlowUtil.GetDeleman(functionManager, "104"); if (deleman != null) { functionalManager.Add(deleman); } strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.EquipmentFunctionalManagerApprove, functionManager); curContext.UpdateWorkflowVariable(CA.WorkFlow.UI.Constants.WorkFlowStep.EquipmentFunctionalManager, functionalManager); } if (passTo.IsNotNullOrWhitespace()) { var departmentHead = new NameCollection(); departmentHead.Add(passTo); var deleman = WorkFlowUtil.GetDeleman(passTo, "104"); if (deleman != null) { departmentHead.Add(deleman); } strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.EquipmentDepartmentHeadApprove, passTo); curContext.UpdateWorkflowVariable(CA.WorkFlow.UI.Constants.WorkFlowStep.EquipmentDH, departmentHead); } //更新工作流每级审批步骤TaskUsers NameCollection itAccounts = WorkFlowUtil.GetUsersInGroup("wf_EquApp"); strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.EquipmentITConfirm, itAccounts.JoinString(",")); WorkflowContext.Current.DataFields["WorkFlowStepsAndUsers"] = strStepAndUsers.ToString(); WorkflowContext.Current.UpdateWorkflowVariable(CA.WorkFlow.UI.Constants.WorkFlowStep.EquipmentITGroup, GetDelemanNameCollection(itAccounts, Constants.CAModules.NewEmployeeEquipmentApplication)); #endregion WorkFlowUtil.UpdateWorkflowPath(WorkflowContext.Current); }
static void Main(string[] args) { NameCollection names = new NameCollection(); names.Add("A"); }
/// <summary> /// 更新工作流相关list中字段数据 /// </summary> /// <param name="dpTaskUsers">部门领导</param> /// <param name="isSave">是否为保存数据状态</param> private void UpdateWorkFlowDataFields(NameCollection dpTaskUsers, bool isSave) { WorkflowContext.Current.DataFields["Status"] = isSave ? CAWorkflowStatus.Pending : CAWorkflowStatus.InProgress; WorkflowContext.Current.DataFields["WorkFlowNumber"] = CreateWorkflowNumber(); WorkflowContext.Current.DataFields["Applicant"] = CurrentEmployee.DisplayName + "(" + CurrentEmployee.UserAccount + ")"; WorkflowContext.Current.DataFields["DepartmentVal"] = CurrentEmployee.Department; WorkflowContext.Current.DataFields["Manager"] = dpTaskUsers.Count > 0 ? dpTaskUsers[0] : ""; //Update varivable.(Payment term less than 30 days required CFO's special approval) WorkflowContext.Current.DataFields["PaymentTerm"] = DataForm1.PaymentTerm; var DepartmentHeadTaskUsers = new NameCollection(); var MDMTaskUsers = new NameCollection(); var CFOTaskUsers = new NameCollection(); string department = CurrentEmployee.Department; DepartmentHeadTaskUsers.Add(UserProfileUtil.GetDepartmentManager(department)); List<string> lst = WorkFlowUtil.UserListInGroup("wf_CFO"); CFOTaskUsers.AddRange(lst.ToArray()); lst = WorkFlowUtil.UserListInGroup("wf_Finance_MDM"); MDMTaskUsers.AddRange(lst.ToArray()); //WorkflowContext.Current.UpdateWorkflowVariable("DepartmentHeadTaskUsers", DepartmentHeadTaskUsers); //WorkflowContext.Current.UpdateWorkflowVariable("MDMTaskUsers", MDMTaskUsers); //WorkflowContext.Current.UpdateWorkflowVariable("CFOTaskUsers", CFOTaskUsers); System.Text.StringBuilder strStepAndUsers = new System.Text.StringBuilder(); strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.SupplierSetupMaintenanceDepartmentHeadTask, DepartmentHeadTaskUsers.JoinString(",")); strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.SupplierSetupMaintenanceMDMTask, MDMTaskUsers.JoinString(",")); strStepAndUsers.AppendFormat("{0}:{1};", CA.WorkFlow.UI.Constants.WorkFlowStep.SupplierSetupMaintenanceCFOTask, CFOTaskUsers.JoinString(",")); WorkflowContext.Current.DataFields["WorkFlowStepsAndUsers"] = strStepAndUsers.ToString(); }
private void StartWorkflowButton_Executing(object sender, CancelEventArgs e) { //局部变量定义 WorkflowContext context = WorkflowContext.Current; WorkflowDataFields fields = WorkflowContext.Current.DataFields; var departmentManagerTaskUsers = new NameCollection(); var btn = sender as StartWorkflowButton; string manager = string.Empty; bool isCeo = false; if (string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase)) { //判断输入数据是否正确,错误则直接返回 var msg = this.DataForm1.ValidateForSave(); if (msg.IsNotNullOrWhitespace()) { DisplayMessage(msg); e.Cancel = true; return; } fields["Status"] = CAWorkflowStatus.Pending; context.UpdateWorkflowVariable("IsSave", true); context.UpdateWorkflowVariable("CompleteTaskTitle", "please complete Travel Request"); } else { //判断输入数据是否正确,错误则直接返回 var msg = this.DataForm1.ValidateForSubmit(); if (msg.IsNotNullOrWhitespace()) { DisplayMessage(msg); e.Cancel = true; return; } //以下代码获取上级审批人信息 var managerEmp = WorkFlowUtil.GetNextApprover(this.DataForm1.Applicant.UserAccount); if (managerEmp == null) { isCeo = IsCEO(DataForm1.Applicant.UserAccount); if (!isCeo) { DisplayMessage("The manager is not set in the system."); e.Cancel = true; return; } else { //获取前台确认的员工 departmentManagerTaskUsers = TravelRequest3Common.GetTaskUsersByModuleWithoutDeleman("wf_ReceptionCtrip_TR", "TravelRequestWorkFlow"); } } else { manager = managerEmp.UserAccount; departmentManagerTaskUsers.Add(manager); } var deleman = WorkFlowUtil.GetDeleman(manager, "106"); if (deleman != null) { departmentManagerTaskUsers.Add(deleman); } context.UpdateWorkflowVariable("IsSave", false); } //WorkflowNumber workflowNumber = CreateTRWorkFlowNumber(); //首先保存用户输入的数据 DataForm1.Update(); //保存详细信息 TravelRequest3Common.SaveDetails(DataForm1, workflowNumber); //保存数据 Employee applicant = this.DataForm1.Applicant; fields["Applicant"] = applicant != null ? applicant.DisplayName + "(" + applicant.UserAccount + ")" : string.Empty; fields["ApplicantSPUser"] = SPContext.Current.Web.EnsureUser(applicant.UserAccount); fields["Department"] = DataForm1.Department; fields["Department"] = this.DataForm1.Department; fields["TravelOtherPurpose"] = this.DataForm1.OtherPurpose; var isBusiness = this.DataForm1.ChosenFlight; var isNextFlight = this.DataForm1.NextFlight; var isBookHotel = this.DataForm1.IsBookHotel; fields["IsBusiness"] = isBusiness; fields["IsNextFlight"] = isNextFlight; fields["IsBookHotel"] = !isBookHotel; fields["Managers"] = manager; var flightClass = string.Empty; if (isBusiness) { flightClass = "Business"; } else if (isNextFlight) { flightClass = "Other available flight"; } else { flightClass = "Economy"; } fields["FlightClass"] = flightClass; fields["WorkflowNumber"] = workflowNumber; fields["TravelTotalCost"] = DataForm1.GetTotal(); fields["Status"] = CAWorkflowStatus.InProgress; //判断是否CEO,若是,则直接跳转到前台确认 if (isCeo) { string taskTitle = DataForm1.EnglishName + "'s Travel Request "; context.UpdateWorkflowVariable("CompleteTaskTitle", "please submit Travel Request"); context.UpdateWorkflowVariable("ConfirmTaskTitle", taskTitle + "needs confirm"); context.UpdateWorkflowVariable("ConfirmTaskUsers", departmentManagerTaskUsers); context.UpdateWorkflowVariable("IsCeo", true); } else { //定义标题 string taskTitle = DataForm1.EnglishName + "'s Travel Request "; context.UpdateWorkflowVariable("NextApproveTaskTitle", taskTitle + "needs approval"); context.UpdateWorkflowVariable("NextApproveTaskUsers", departmentManagerTaskUsers); context.UpdateWorkflowVariable("IsContinue", true); } //设置工作流URL var editURL = "/_Layouts/CA/WorkFlows/TravelRequest3/EditForm.aspx"; var approveURL = "/_Layouts/CA/WorkFlows/TravelRequest3/ApproveForm.aspx"; context.UpdateWorkflowVariable("CompleteTaskFormURL", editURL); context.UpdateWorkflowVariable("NextApproveTaskFormURL", approveURL); context.UpdateWorkflowVariable("ConfirmTaskFormURL", approveURL); //发送邮件 if (!string.Equals(btn.Text, "Save", StringComparison.CurrentCultureIgnoreCase)) { SendMailForSubmit(departmentManagerTaskUsers); } WorkFlowUtil.UpdateWorkflowPath(context); }
void actions_ActionExecuting(object sender, QuickFlow.UI.Controls.ActionEventArgs e) { if (e.Action.Equals("End", StringComparison.CurrentCultureIgnoreCase)) { WorkflowContext.Current.DataFields["Status"] = "Cancelled"; return; } string msg = DataForm1.Validate; if (!string.IsNullOrEmpty(msg)) { DisplayMessage(msg); e.Cancel = true; return; } //组开始 List<string> lst = WorkFlowUtil.UserListInGroup("wf_IT"); if (lst.Count == 0) { //Don DisplayMessage("Unable to submit the application. There is no user in wf_IT group. Please contact IT for further help."); e.Cancel = true; return; } NameCollection ItMemberUser = new NameCollection(); ItMemberUser.AddRange(lst.ToArray()); Employee approver = WorkFlowUtil.GetEmployeeApprover(DataForm1.Applicant); if (approver == null) { //Don DisplayMessage("Unable to find an approver for the applicant. Please contact IT for further help."); e.Cancel = true; return; } NameCollection DepartHeadUser = new NameCollection(); DepartHeadUser.Add(approver.UserAccount); NameCollection ITHeadUser = new NameCollection(); string strHRHeadAccount = UserProfileUtil.GetDepartmentManager("it"); ITHeadUser.Add(strHRHeadAccount); NameCollection CFOUser = new NameCollection(); lst = WorkFlowUtil.UserListInGroup("wf_CFO"); CFOUser.AddRange(lst.ToArray()); //组结束 try { WorkflowContext.Current.UpdateWorkflowVariable("ITMemberAccounts", ItMemberUser); WorkflowContext.Current.UpdateWorkflowVariable("DepartHeaderAccounts", DepartHeadUser); WorkflowContext.Current.UpdateWorkflowVariable("ITHeaderAccounts", ITHeadUser); WorkflowContext.Current.UpdateWorkflowVariable("FOCOAccounts", CFOUser); WorkflowContext.Current.UpdateWorkflowVariable("IsFOCO", false); WorkflowContext.Current.UpdateWorkflowVariable("ITMemberTitle", DataForm1.Applicant.DisplayName + "'s IT request needs confirm"); WorkflowContext.Current.UpdateWorkflowVariable("DepartmentHeaderTitle", DataForm1.Applicant.DisplayName + "'s IT request needs approval"); WorkflowContext.Current.UpdateWorkflowVariable("ITHeaderTitle", DataForm1.Applicant.DisplayName + "'s IT request needs approval"); WorkflowContext.Current.UpdateWorkflowVariable("FOCOTitle", DataForm1.Applicant.DisplayName + "s 'IT request needs approval"); WorkflowContext.Current.UpdateWorkflowVariable("UpdateTaskTitle", "Please complete IT request for " + DataForm1.Applicant.DisplayName); WorkflowContext.Current.DataFields["Name"] = DataForm1.Name; WorkflowContext.Current.DataFields["Department"] = DataForm1.Department; WorkflowContext.Current.DataFields["FOCOApprove"] = DataForm1.IsFOCO; WorkflowContext.Current.DataFields["ApplyDate"] = DataForm1.ApplyDate; WorkflowContext.Current.DataFields["AppliedUser"] = this.DataForm1.Applicant.UserAccount; WorkflowContext.Current.DataFields["ReasonforRequest"] = this.DataForm1.ReasonforRequest; WorkflowContext.Current.DataFields["Flag"] = "Submit"; WorkflowContext.Current.DataFields["Status"] = "In Progress"; } catch (Exception ex) { throw ex; } }