/// <summary> /// 取回审批 /// </summary> public void TackBackCheck() { GenerWorkFlow gwf = new GenerWorkFlow(this.WorkID); /* 判断是否有取回审批的权限。*/ this.Pub2.AddEasyUiPanelInfoBegin("取回审批"); string sql = "SELECT NodeID FROM WF_Node WHERE CheckNodes LIKE '%" + gwf.FK_Node + "%'"; int myNode = DBAccess.RunSQLReturnValInt(sql, 0); if (myNode != 0) { GetTask gt = new GetTask(myNode); if (gt.Can_I_Do_It() == true) { this.Pub2.Add("功能执行:<a href=\"javascript:Takeback('" + WorkID + "','" + FK_Flow + "','" + gwf.FK_Node + "','" + myNode + "')\" >点击执行取回审批流程</a>。"); this.Pub2.AddBR("说明:如果被成功取回,ccflow就会把停留在别人工作节点上的工作发送到您的待办列表里。"); } } else { this.Pub2.Add("您没有此权限."); } this.Pub2.AddEasyUiPanelInfoEnd(); Pub2.AddBR(); }
/// <summary> /// 撤销发送 /// </summary> public void UnSend() { /*撤销发送*/ this.Pub2.AddEasyUiPanelInfoBegin("撤销发送"); //查询是否有权限撤销发送 GenerWorkerLists workerlists = new GenerWorkerLists(); QueryObject info = new QueryObject(workerlists); info.AddWhere(GenerWorkerListAttr.FK_Emp, WebUser.No); info.addAnd(); info.AddWhere(GenerWorkerListAttr.IsPass, "1"); info.addAnd(); info.AddWhere(GenerWorkerListAttr.IsEnable, "1"); info.addAnd(); info.AddWhere(GenerWorkerListAttr.WorkID, this.WorkID); int count = info.DoQuery(); if (count > 0) { this.Pub2.Add("<a href =\"javascript:UnSend('" + this.FK_Flow + "','" + this.WorkID + "','" + FID + "')\" >撤销发送</a>"); } else { this.Pub2.Add("您没有此权限."); } this.Pub2.AddEasyUiPanelInfoEnd(); Pub2.AddBR(); }
public static void CreateAndRaiseV2() { Pub2 p = new Pub2(); p.OnChange += (sender, e) => Console.WriteLine($"Event raised: {e.Value}"); p.Raise(); }
void btn_Click(object sender, EventArgs e) { Button btn = sender as Button; if (btn.ID == "Btn_Cancel") { this.Response.Redirect("../MyFlow.aspx?FK_Flow=" + this.FK_Flow + "&FK_Node=" + this.FK_Node + "&WorkID=" + this.WorkID + "&FID=" + this.FID, true); return; } Int64 workid = Int64.Parse(this.Request.QueryString["WorkID"]); int fk_node = int.Parse(this.Request.QueryString["FK_Node"]); string askFor = (Pub2.FindControl("HID_SelectedEmps") as HiddenField).Value; // this.Pub2.GetTextBoxByID("TB_Worker").Text; //string askFor = this.Pub2.GetTextBoxByID("TB_Worker").Text; string note = this.Pub2.GetTextBoxByID("TB_Note").Text; BP.Port.Emp emp = new BP.Port.Emp(); emp.No = askFor; bool i = emp.RetrieveByAttrOr(BP.Port.EmpAttr.No, askFor, BP.Port.EmpAttr.Name, askFor); if (i == false) { this.Alert("输入的加签人(" + askFor + ")不正确,加签人只能选择一个。"); return; } if (emp.No == WebUser.No) { this.Alert("不能让自己加签。"); return; } BP.WF.AskforHelpSta sta = BP.WF.AskforHelpSta.AfterDealSend; bool is1 = this.Pub2.GetRadioButtonByID("RB_0").Checked; if (is1) { sta = BP.WF.AskforHelpSta.AfterDealSend; } is1 = this.Pub2.GetRadioButtonByID("RB_1").Checked; if (is1) { sta = BP.WF.AskforHelpSta.AfterDealSendByWorker; } try { string info = BP.WF.Dev2Interface.Node_Askfor(workid, sta, askFor, note); this.ToMsg(info, "Info"); } catch (Exception ex) { this.Pub2.AddMsgOfWarning("err", ex.Message); } }
private void UsingEventHandlerDelegateWithEvent() { Console.WriteLine("Using Event Handler delegate instead of Action"); Console.WriteLine("Event handler by default takes a sender object and some event arguments"); Pub2 pub = new Pub2(); pub.onChange += (sender, e) => Console.WriteLine("1st Event raised: {0} by :{1}", e, sender); pub.onChange += (sender, e) => Console.WriteLine("2nd Event raised: {0} by :{1}", e, sender); pub.Raise(); }
public void CreateAndRaise2() { Pub2 p2 = new Pub2(); p2.OnChange += () => Console.WriteLine("Event raised to method 1"); p2.OnChange += () => Console.WriteLine("Event raised to method 2"); //p2.OnChange = () => Console.WriteLine("Accidently removed subscriptions of methods 1 & 2"); // Accidently have used assignment operator. **But** prevented when use Event keyword. p2.Raise(); // The Pub class is unaware of any subscribers, it just raises the event. // If no subscribers to an event, the OnChange property would be null. }
/// <summary> /// 催办 /// </summary> public void Hurry() { /*催办*/ this.Pub2.AddEasyUiPanelInfoBegin("工作催办"); this.Pub2.Add("您没有此权限."); this.Pub2.AddEasyUiPanelInfoEnd(); Pub2.AddBR(); }
/// <summary> /// 恢复启用流程数据到结束节点 /// </summary> public void RollBack() { this.Pub2.AddEasyUiPanelInfoBegin("恢复启用流程数据到结束节点"); if (WebUser.No == "admin") { this.Pub2.Add("功能执行:<a href=\"javascript:DoFunc('ComeBack','" + WorkID + "','" + FK_Flow + "','" + FK_Node + "')\" >点击执行恢复流程</a>。"); this.Pub2.AddBR("说明:如果被成功恢复,ccflow就会把待办工作发送给最后一个结束流程的工作人员。"); } else { this.Pub2.Add("您没有权限."); } this.Pub2.AddEasyUiPanelInfoEnd(); Pub2.AddBR(); }
public void AddShiftByCoercion() { this.Pub2.AddEasyUiPanelInfoBegin("强制移交"); if (WebUser.No == "admin") { this.Pub2.Add("功能执行:<a href=\"javascript:DoFunc('" + FlowOpList.ShiftByCoercion + "','" + WorkID + "','" + FK_Flow + "','" + FK_Node + "')\" >点击执行取消挂起流程</a>。"); this.Pub2.AddBR("说明:解除流程挂起的状态。"); } else { this.Pub2.AddBR("您没有此权限。"); } this.Pub2.AddEasyUiPanelInfoEnd(); Pub2.AddBR(); }
/// <summary> /// 移交 /// </summary> public void AddShift() { this.Pub2.AddEasyUiPanelInfoBegin("移交"); if (BP.WF.Dev2Interface.Flow_IsCanDoCurrentWork(FK_Flow, int.Parse(FK_Node), WorkID, WebUser.No)) { this.Pub2.Add("功能执行:<a href=\"javascript:DoFunc('" + FlowOpList.UnHungUp + "','" + WorkID + "','" + FK_Flow + "','" + FK_Node + "')\" >点击执行取消挂起流程</a>。"); this.Pub2.AddBR("说明:解除流程挂起的状态。"); } else { this.Pub2.AddBR("您没有此权限,或者当前不是挂起的状态。"); } this.Pub2.AddEasyUiPanelInfoEnd(); Pub2.AddBR(); }
/// <summary> /// 挂起 /// </summary> public void AddHungUp() { this.Pub2.AddEasyUiPanelInfoBegin("挂起"); if (BP.WF.Dev2Interface.Flow_IsCanDoCurrentWork(FK_Flow, int.Parse(FK_Node), WorkID, WebUser.No)) { this.Pub2.Add("功能执行:<a href=\"javascript:DoFunc('" + FlowOpList.HungUp + "','" + WorkID + "','" + FK_Flow + "','" + FK_Node + "','')\" >点击执行挂起流程</a>。"); this.Pub2.AddBR("说明:对该流程执行挂起,挂起后可以解除挂起,挂起的时间不计算考核。"); } else { this.Pub2.Add("您没有此权限."); } this.Pub2.AddEasyUiPanelInfoEnd(); Pub2.AddBR(); }
/// <summary> /// 强制删除流程 /// </summary> public void FlowOverByCoercion() { GenerWorkFlow gwf = new GenerWorkFlow(WorkID); this.Pub2.AddEasyUiPanelInfoBegin("删除流程"); if (WebUser.No == "admin") { this.Pub2.Add("功能执行:<a href=\"javascript:DoFunc('" + FlowOpList.FlowOverByCoercion + "','" + WorkID + "','" + FK_Flow + "','" + FK_Node + "')\" >点击执行删除流程</a>。"); this.Pub2.AddBR("说明:如果执行流程将会被彻底的删除。"); } else { this.Pub2.Add("只有admin才能删除流程,您没有此权限."); } this.Pub2.AddEasyUiPanelInfoEnd(); Pub2.AddBR(); }
private void BindSearch() { Flow fl = new Flow(this.FK_Flow); var gwfs = new GenerWorkFlows(); var qo = new QueryObject(gwfs); qo.AddWhere(GenerWorkFlowAttr.FK_Flow, FK_Flow); if (!string.IsNullOrWhiteSpace(Depts)) { qo.addAnd(); qo.AddWhereIn(GenerWorkFlowAttr.FK_Dept, "(" + Depts + ")"); } if (!string.IsNullOrWhiteSpace(Emps)) { qo.addAnd(); qo.AddWhereIn(GenerWorkFlowAttr.Starter, "(" + Emps.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Aggregate(string.Empty, (curr, next) => curr + "'" + next + "',").TrimEnd(',') + ")"); } if (!string.IsNullOrWhiteSpace(DateFrom)) { qo.addAnd(); qo.AddWhere(GenerWorkFlowAttr.RDT, ">", DateFrom); } if (!string.IsNullOrWhiteSpace(DateTo)) { qo.addAnd(); qo.AddWhere(GenerWorkFlowAttr.RDT, "<=", DateTo); } if (!string.IsNullOrWhiteSpace(Keywords)) { qo.addAnd(); qo.AddWhere(GenerWorkFlowAttr.Title, "LIKE", "%" + Keywords + "%"); } qo.addOrderBy(GenerWorkFlowAttr.RDT); var url = string.Format("FlowDB.aspx?FK_Flow={0}&WorkID={1}&IsSearch=1&Depts={2}&DeptsText={3}&Emps={4}&EmpsText={5}&DateFrom={6}&DateTo={7}&Keywords={8}", FK_Flow, WorkID, Depts, DeptsText, Emps, EmpsText, DateFrom, DateTo, Keywords); Pub2.BindPageIdxEasyUi(qo.GetCount(), url, this.PageIdx, SystemConfig.PageSize); qo.DoQuery(gwfs.GetNewEntity.PK, SystemConfig.PageSize, this.PageIdx); this.Pub1.AddTable("class='Table' cellspacing='0' cellpadding='0' border='0' style='width:100%'"); Pub1.AddTR(); Pub1.AddTDGroupTitle("colspan='8'", fl.Name); Pub1.AddTREnd(); this.Pub1.AddTR(); this.Pub1.AddTDGroupTitle("style='text-align:center'", "序号"); this.Pub1.AddTDGroupTitle("部门"); this.Pub1.AddTDGroupTitle("发起人"); this.Pub1.AddTDGroupTitle("发起时间"); this.Pub1.AddTDGroupTitle("当前停留节点"); this.Pub1.AddTDGroupTitle("标题"); this.Pub1.AddTDGroupTitle("处理人"); this.Pub1.AddTDGroupTitle("操作"); this.Pub1.AddTREnd(); int idx = 0; foreach (GenerWorkFlow item in gwfs) { idx++; this.Pub1.AddTR(); this.Pub1.AddTDIdx(SystemConfig.PageSize * (this.PageIdx - 1) + idx); this.Pub1.AddTD(item.DeptName); this.Pub1.AddTD(item.StarterName); this.Pub1.AddTD(item.RDT); this.Pub1.AddTD(item.NodeName); this.Pub1.AddTD(item.Title); this.Pub1.AddTD(item.TodoEmps); this.Pub1.AddTDBegin(); this.Pub1.Add("<a href=\"javascript:WinOpen('./../../WFRpt.aspx?WorkID=" + item.WorkID + "&FK_Flow=" + this.FK_Flow + "&FID=" + item.FID + "','ds'); \" class='easyui-linkbutton'>轨迹</a> "); //this.Pub1.Add("<a href=\"javascript:WinOpen('../../../WFRpt.aspx?WorkID=" + item.WorkID + "&FK_Flow=" + this.FK_Flow + "&FID=" + item.FID + "&FK_Node=" + item.FK_Node + "','ds'); \" >报告</a>-"); this.Pub1.Add("<a href=\"javascript:DelIt('" + item.FK_Flow + "','" + item.WorkID + "');\" class='easyui-linkbutton' data-options=\"iconCls:'icon-delete'\" onclick=\"return confirm('您确定要删除吗?');\">删除</a> "); this.Pub1.Add("<a href=\"javascript:FlowShift('" + item.FK_Flow + "','" + item.WorkID + "');\" class='easyui-linkbutton'>移交</a> "); this.Pub1.Add("<a href=\"javascript:FlowSkip('" + item.FK_Flow + "','" + item.WorkID + "');\" class='easyui-linkbutton'>跳转</a>"); this.Pub1.AddTDEnd(); this.Pub1.AddTREnd(); } this.Pub1.AddTableEnd(); }
protected void Page_Load(object sender, EventArgs e) { if (this.DoType == "Del") { FrmEvent delFE = new FrmEvent(); delFE.MyPK = this.FK_MapData + "_" + this.Request.QueryString["RefXml"]; delFE.Delete(); } FrmEvents ndevs = new FrmEvents(); if (this.FK_MapData != null) { ndevs.Retrieve(FrmEventAttr.FK_MapData, this.FK_MapData); } EventLists xmls = new EventLists(); xmls.RetrieveAll(); BP.WF.XML.EventSources ess = new EventSources(); ess.RetrieveAll(); string myEvent = this.Event; BP.WF.XML.EventList myEnentXml = null; #region //生成事件列表 foreach (EventSource item in ess) { if (item.No == "Frm" && this.FK_MapData == null) { continue; } if (item.No == "Node" && string.IsNullOrEmpty(this.NodeID)) { continue; } if (item.No == "Flow" && string.IsNullOrEmpty(this.FK_Flow)) { continue; } Pub1.Add(string.Format("<div title='{0}' style='padding:10px; overflow:auto' data-options=''>", item.Name)); Pub1.AddUL("class='navlist'"); foreach (BP.WF.XML.EventList xml in xmls) { if (xml.EventType != item.No) { continue; } FrmEvent nde = ndevs.GetEntityByKey(FrmEventAttr.FK_Event, xml.No) as FrmEvent; if (nde == null) { if (myEvent == xml.No) { CurrentEventGroup = item.Name; myEnentXml = xml; Pub1.AddLi( string.Format("<div style='font-weight:bold'><a href='javascript:void(0)'><span class='nav'>{0}</span></a></div>{1}", xml.Name, Environment.NewLine)); } else { Pub1.AddLi( string.Format("<div><a href='Action.aspx?NodeID={0}&Event={1}&FK_Flow={2}&tk={5}&FK_MapData={6}'><span class='nav'>{3}</span></a></div>{4}", NodeID, xml.No, FK_Flow, xml.Name, Environment.NewLine, new Random().NextDouble(), this.FK_MapData)); } } else { if (myEvent == xml.No) { CurrentEventGroup = item.Name; myEnentXml = xml; Pub1.AddLi( string.Format("<div style='font-weight:bold'><a href='javascript:void(0)'><span class='nav'>{0}</span></a></div>{1}", xml.Name, Environment.NewLine)); } else { Pub1.AddLi( string.Format("<div><a href='Action.aspx?NodeID={0}&Event={1}&FK_Flow={2}&MyPK={3}&tk={6}&FK_MapData={6}'><span class='nav'>{4}</span></a></div>{5}", NodeID, xml.No, FK_Flow, nde.MyPK, xml.Name, Environment.NewLine, new Random().NextDouble(), this.FK_MapData)); } } } Pub1.AddULEnd(); Pub1.AddDivEnd(); } #endregion if (myEnentXml == null) { CurrentEvent = "帮助"; Pub2.Add("<div style='width:100%; text-align:center' data-options='noheader:true'>"); Pub2.AddH2("事件是ccflow与您的应用程序接口"); this.Pub2.AddUL(); this.Pub2.AddLi("流程在运动的过程中会产生很多的事件,比如:节点发送前、发送成功时、发送失败时、退回前、退后后。"); this.Pub2.AddLi("在这些事件里ccflow允许调用您编写的业务逻辑,完成与界面交互、与其他系统交互、与其他流程参与人员交互。"); this.Pub2.AddLi("按照事件发生的类型,ccflow把事件分为:节点、表单、流程三类的事件。"); this.Pub2.AddULEnd(); Pub2.AddDivEnd(); return; } FrmEvent mynde = ndevs.GetEntityByKey(FrmEventAttr.FK_Event, myEvent) as FrmEvent; if (mynde == null) { mynde = new FrmEvent(); mynde.FK_Event = myEvent; } this.Title = "设置:事件接口=》" + myEnentXml.Name; this.CurrentEvent = myEnentXml.Name; int col = 50; Pub2.Add("<div id='tabMain' class='easyui-tabs' data-options='fit:true'>"); Pub2.Add("<div title='事件接口' style='padding:5px'>" + Environment.NewLine); Pub2.Add("<iframe id='src1' frameborder='0' src='' style='width:100%;height:100%' scrolling='auto'></iframe>"); Pub2.Add("</div>" + Environment.NewLine); if (myEnentXml.IsHaveMsg == true) { HaveMsg = true; Pub2.Add("<div title='向当事人推送消息' style='padding:5px'>" + Environment.NewLine); Pub2.Add("<iframe id='src2' frameborder='0' src='' style='width:100%;height:100%' scrolling='auto'></iframe>"); Pub2.Add("</div>" + Environment.NewLine); Pub2.Add("<div title='向其他指定的人推送消息' style='padding:5px'>" + Environment.NewLine); Pub2.Add("<iframe id='src3' frameborder='0' src='' style='width:100%;height:100%' scrolling='auto'></iframe>"); Pub2.Add("</div>" + Environment.NewLine); } //BP.WF.Dev2Interface.Port_Login("zhoupeng"); // BP.WF.Dev2Interface.Port_SigOut(); Pub2.Add("</div>"); }
protected void Page_Load(object sender, EventArgs e) { if (this.DoType == "Del") { FrmEvent delFE = new FrmEvent(); delFE.MyPK = this.FK_MapData + "_" + this.Request.QueryString["RefXml"]; delFE.Delete(); } FrmEvents ndevs = new FrmEvents(); if (this.FK_MapData != null) { ndevs.Retrieve(FrmEventAttr.FK_MapData, this.FK_MapData); } EventLists xmls = new EventLists(); xmls.RetrieveAll(); BP.WF.XML.EventSources ess = new EventSources(); ess.RetrieveAll(); string myEvent = this.Event; BP.WF.XML.EventList myEnentXml = null; #region //生成事件列表 foreach (EventSource item in ess) { if (item.No != this.ShowType) { continue; } Pub1.Add(string.Format("<div title='{0}' style='padding:10px; overflow:auto' data-options=''>", item.Name)); Pub1.AddUL("class='navlist'"); string msg = ""; foreach (BP.WF.XML.EventList xml in xmls) { if (xml.EventType != item.No) { continue; } msg = ""; if (xml.IsHaveMsg == true) { msg = "<img src='/WF/Img/Msg.png' />"; } FrmEvent nde = ndevs.GetEntityByKey(FrmEventAttr.FK_Event, xml.No) as FrmEvent; if (nde == null) { if (myEvent == xml.No) { CurrentEventGroup = item.Name; myEnentXml = xml; Pub1.AddLi(string.Format("<div style='font-weight:bold'><a href='javascript:void(0)'><span class='nav'><img src='/WF/Img/Event.png' border=0/>" + msg + "{0}</span></a></div>{1}", xml.Name, Environment.NewLine)); } else { Pub1.AddLi(string.Format("<div><a href='Action.aspx?NodeID={0}&Event={1}&FK_Flow={2}&tk={5}&FK_MapData={6}'><span class='nav'><img src='/WF/Img/Event.png' border=0/>" + msg + "{3}</span></a></div>{4}", NodeID, xml.No, FK_Flow, xml.Name, Environment.NewLine, new Random().NextDouble(), this.FK_MapData)); } } else { if (myEvent == xml.No) { CurrentEventGroup = item.Name; myEnentXml = xml; Pub1.AddLi(string.Format("<div style='font-weight:bold'><a href='javascript:void(0)'><span class='nav'><img src='/WF/Img/Event.png' border=0/>" + msg + "{0}</span></a></div>{1}", xml.Name, Environment.NewLine)); } else { Pub1.AddLi(string.Format("<div><a href='Action.aspx?NodeID={0}&Event={1}&FK_Flow={2}&MyPK={3}&tk={6}&FK_MapData={7}'><span class='nav'><img src='/WF/Img/Event.png' border=0/>" + msg + "{4}</span></a></div>{5}", NodeID, xml.No, FK_Flow, nde.MyPK, xml.Name, Environment.NewLine, new Random().NextDouble(), this.FK_MapData)); } } } Pub1.AddULEnd(); Pub1.AddDivEnd(); } #endregion if (myEnentXml == null) { CurrentEvent = "帮助"; this.Pub2.Add("<div style='width:100%; text-align:left' data-options='noheader:true'>"); this.Pub2.AddH2("事件是ccbpm与您的应用程序接口"); if (this.NodeID != "0") { this.Pub2.AddFieldSet("节点事件"); this.Pub2.AddUL(); this.Pub2.AddLi("流程在运动过程中,有许多的事件,比如节点发送前、发送成功后、发送失败后、退回前、退回后、撤销发送前、这小发送后、流程结束前、结束后、删除前删除后。"); this.Pub2.AddLi("ccbpm把事件分为流程事件与节点事件,流程属性里定义流程事件,节点属性里定义节点事件。"); this.Pub2.AddLi("在这些事件里ccbpm允许调用您编写的业务逻辑,完成与界面交互、与其他系统交互、与其他流程参与人员交互。"); this.Pub2.AddLi("按照事件发生的类型,ccbpm把事件分为:节点、表单、流程三类的事件。"); this.Pub2.AddLi("在BPMN2.0规范里没有定义节点事件表单事件,这是ccbpm特有的概念与元素。"); this.Pub2.AddULEnd(); this.Pub2.AddFieldSetEnd(); } if (this.FK_Flow != null && this.NodeID == "0") { this.Pub2.AddFieldSet("流程事件"); this.Pub2.AddUL(); this.Pub2.AddLi("流程在运动过程中,有许多的事件,比如节点发送前、发送成功后、发送失败后、退回前、退回后、撤销发送前、这小发送后、流程结束前、结束后、删除前删除后。"); this.Pub2.AddLi("ccbpm把事件分为流程事件与节点事件,流程属性里定义流程事件,节点属性里定义节点事件。"); this.Pub2.AddLi("在这些事件里ccbpm允许调用您编写的业务逻辑,完成与界面交互、与其他系统交互、与其他流程参与人员交互。"); this.Pub2.AddLi("按照事件发生的类型,ccbpm把事件分为:节点、表单、流程三类的事件。"); this.Pub2.AddLi("在BPMN2.0规范里定义了,流程发起事件,流程发起错误事件。在ccbpm里取消了这些概念,取而代之的是开始节点的发送前、发送失败时、发送成功时的事件与之对应。"); this.Pub2.AddULEnd(); this.Pub2.AddFieldSetEnd(); } if (this.FK_MapData != null && this.FK_MapData != "") { this.Pub2.AddFieldSet("表单事件"); this.Pub2.AddUL(); this.Pub2.AddLi("流程在运动过程中,有许多的事件,比如节点发送前、发送成功后、发送失败后、退回前、退回后、撤销发送前、这小发送后、流程结束前、结束后、删除前删除后。"); this.Pub2.AddLi("ccbpm把事件分为流程事件与节点事件,流程属性里定义流程事件,节点属性里定义节点事件。"); this.Pub2.AddLi("在这些事件里ccbpm允许调用您编写的业务逻辑,完成与界面交互、与其他系统交互、与其他流程参与人员交互。"); this.Pub2.AddLi("按照事件发生的类型,ccbpm把事件分为:节点、表单、流程三类的事件。"); this.Pub2.AddLi("在BPMN2.0规范里定义了,流程发起事件,流程发起错误事件。在ccbpm里取消了这些概念,取而代之的是开始节点的发送前、发送失败时、发送成功时的事件与之对应。"); this.Pub2.AddULEnd(); this.Pub2.AddFieldSetEnd(); } this.Pub2.AddDivEnd(); return; } FrmEvent mynde = ndevs.GetEntityByKey(FrmEventAttr.FK_Event, myEvent) as FrmEvent; if (mynde == null) { mynde = new FrmEvent(); mynde.FK_Event = myEvent; } this.Title = "设置:事件接口=》" + myEnentXml.Name; this.CurrentEvent = myEnentXml.Name; Pub2.Add("<div id='tabMain' class='easyui-tabs' data-options='fit:true'>"); Pub2.Add("<div title='事件接口' style='padding:5px'>" + Environment.NewLine); Pub2.Add("<iframe id='src1' frameborder='0' src='' style='width:100%;height:100%' scrolling='auto'></iframe>"); Pub2.Add("</div>" + Environment.NewLine); /* 该模块jflow暂时不翻译,注释掉 by fanleiwei 20160531 * if (myEnentXml.IsHaveMsg == true) * { * HaveMsg = true; * Pub2.Add("<div title='向当事人推送消息' style='padding:5px'>" + Environment.NewLine); * Pub2.Add("<iframe id='src2' frameborder='0' src='' style='width:100%;height:100%' scrolling='auto'></iframe>"); * Pub2.Add("</div>" + Environment.NewLine); * * Pub2.Add("<div title='向其他指定的人推送消息' style='padding:5px'>" + Environment.NewLine); * Pub2.Add("<iframe id='src3' frameborder='0' src='' style='width:100%;height:100%' scrolling='auto'></iframe>"); * Pub2.Add("</div>" + Environment.NewLine); * } */ Pub2.Add("</div>"); }
protected void Page_Load(object sender, EventArgs e) { MapAttrs mattrs = new MapAttrs(this.FK_MapData); MapAttrs mattrsOfRpt = new MapAttrs(this.RptNo); var dictAttrs = new Dictionary <string, List <MapAttr> >(); dictAttrs.Add("系统字段", new List <MapAttr>()); dictAttrs.Add("枚举字段", new List <MapAttr>()); dictAttrs.Add("外键字段", new List <MapAttr>()); dictAttrs.Add("普通字段", new List <MapAttr>()); var sysFields = BP.WF.Glo.FlowFields; //将属性分组:系统、枚举、外键、普通 foreach (MapAttr attr in mattrs) { if (sysFields.Contains(attr.KeyOfEn)) { dictAttrs["系统字段"].Add(attr); } else if (attr.HisAttr.IsEnum) { dictAttrs["枚举字段"].Add(attr); } else if (attr.HisAttr.IsFK) { dictAttrs["外键字段"].Add(attr); } else { dictAttrs["普通字段"].Add(attr); } } this.Pub2.AddTable(); foreach (var de in dictAttrs) { if (de.Value.Count == 0) { continue; } this.Pub2.AddTR(); this.Pub2.AddTDGroupTitle("colspan=3", de.Key); this.Pub2.AddTREnd(); int isBr = 0; foreach (var attr in de.Value) { CheckBox cb = new CheckBox(); cb.ID = "CB_" + attr.KeyOfEn; cb.Text = attr.Name + "(" + attr.KeyOfEn + ")"; cb.Checked = mattrsOfRpt.Contains(MapAttrAttr.KeyOfEn, attr.KeyOfEn); switch (attr.KeyOfEn) { case NDXRptBaseAttr.Title: case NDXRptBaseAttr.MyNum: case NDXRptBaseAttr.OID: case NDXRptBaseAttr.WFSta: cb.Checked = true; cb.Enabled = false; break; case NDXRptBaseAttr.WFState: continue; default: break; } if (isBr == 0) { this.Pub2.AddTR(); } this.Pub2.AddTD("style='width:33%'", cb); if (isBr == 2) { this.Pub2.AddTREnd(); } isBr++; if (isBr == 3) { isBr = 0; } } if (isBr == 1) { Pub2.AddTD(); Pub2.AddTD(); Pub2.AddTREnd(); } if (isBr == 2) { Pub2.AddTD(); Pub2.AddTREnd(); } } this.Pub2.AddTableEnd(); }
protected void Page_Load(object sender, EventArgs e) { this.Pub2.AddTable("style='width:100%'"); //this.Pub2.AddTR(); //this.Pub2.AddTDTitle("colspan=3", "工作加签"); //this.Pub2.AddTREnd(); this.Pub2.AddTR(); this.Pub2.AddTD("加签人"); TextBox tb = new TextBox(); tb.Text = ""; tb.Columns = 50; tb.ID = "TB_Worker"; tb.ReadOnly = true; Pub2.AddTDBegin(); this.Pub2.Add(tb); HiddenField hidden = new HiddenField(); hidden.ID = "HID_SelectedEmps"; Pub2.Add(hidden); Pub2.AddTDEnd(); Button mybtn = new Button(); // mybtn.CssClass = "Btn"; // mybtn.Text = "选择加签人"; //mybtn.OnClientClick += "javascript:ShowIt(" + tb.ClientID + "," + hidden.ClientID + ");"; // mybtn.Enabled= this.Pub2.AddTD("<input type=button onclick=\"javascript:ShowIt(" + tb.ClientID + "," + hidden.ClientID + ");\" value='选择加签人' class='Btn' />"); //this.Pub2.AddTD("请输入一个人员编号"); this.Pub2.AddTREnd(); this.Pub2.AddTR(); this.Pub2.AddTDBegin("colspan=3"); this.Pub2.Add("加签原因说明<br>"); tb = new TextBox(); tb.TextMode = TextBoxMode.MultiLine; tb.Text = "您好:\t\n 现把工作向您请示. \t\n " + BP.Web.WebUser.Name; tb.ID = "TB_Note"; tb.Columns = 70; tb.Rows = 5; this.Pub2.Add(tb); this.Pub2.AddTDEnd(); this.Pub2.AddTREnd(); this.Pub2.AddTR(); this.Pub2.AddTD("处理方式"); this.Pub2.AddTDBegin("colspan=2"); RadioButton rb = new RadioButton(); rb.ID = "RB_0"; rb.GroupName = "s"; rb.Text = "对方加签后,直接发送到下一步骤."; rb.Checked = true; this.Pub2.Add(rb); rb = new RadioButton(); rb.ID = "RB_1"; rb.GroupName = "s"; rb.Text = "对方加签后在转发给我,由我发送到下一步骤."; this.Pub2.Add(rb); this.Pub2.AddTDEnd(); this.Pub2.AddTREnd(); this.Pub2.AddTR(); this.Pub2.AddTD(""); this.Pub2.AddTDBegin("colspan=2"); Button btn = new Button(); btn.Text = "提交"; btn.ID = "Btn_Submit"; btn.Click += new EventHandler(btn_Click); this.Pub2.Add(btn); btn = new Button(); btn.Text = "取消"; btn.ID = "Btn_Cancel"; btn.Click += new EventHandler(btn_Click); this.Pub2.Add(btn); this.Pub2.AddTDEnd(); this.Pub2.AddTREnd(); this.Pub2.AddTableEnd(); Int64 workid = Int64.Parse(this.Request.QueryString["WorkID"]); string sql = "SELECT * FROM ND" + int.Parse(this.FK_Flow) + "Track WHERE ActionType=24 AND WorkID=" + workid + " AND (EmpFrom='" + WebUser.No + "' OR EmpTo='" + WebUser.No + "')"; DataTable dt = BP.DA.DBAccess.RunSQLReturnTable(sql); if (dt.Rows.Count != 0) { this.Pub2.AddFieldSet("加签信息"); foreach (DataRow dr in dt.Rows) { this.Pub2.Add("<br>节点:" + dr[TrackAttr.NDFromT] + "<hr>"); this.Pub2.Add("信息:" + DataType.ParseText2Html(dr[TrackAttr.Msg].ToString()) + "<br>"); } this.Pub2.AddFieldSetEnd(); } }
void btn_Click(object sender, EventArgs e) { LinkBtn btn = sender as LinkBtn; if (btn.ID.StartsWith(NamesOfBtn.DataCheck + "_")) { #region //检查正确性 string table = btn.ID.Substring((NamesOfBtn.DataCheck + "_").Length); string sql = Pub1.GetTBByID("TB_" + table).Text; string srcno = Pub1.GetDDLByID("DDL_DBSrcs").SelectedItemStringVal; SFDBSrc src = new SFDBSrc(srcno); string error = CheckSQL(src, gvarSModel.Val, table, sql); if (string.IsNullOrWhiteSpace(error)) { //如果配置正确,则把此次的SQL语句存储上 GloVar gvar = gvars.GetEntityByKey(table + "_Temp") as GloVar; gvar.Val = sql; gvar.Update(); Alert("配置正确!"); } else { Alert("成功获取数据,但有如下错误:<br />" + error.TrimEnd(','), "error"); } #endregion } else if (btn.ID.StartsWith(NamesOfBtn.Open + "_")) { #region //打开数据源 string item = btn.ID.Substring((NamesOfBtn.Open + "_").Length); string value = Pub1.GetTBByID("TB_" + item).Text; string srcno = Pub1.GetDDLByID("DDL_DBSrcs").SelectedItemStringVal; SFDBSrc src = new SFDBSrc(srcno); DataTable dt = null; try { dt = src.RunSQLReturnTable(value, 0, 100); } catch (Exception ex) { Alert(ex.Message, "error"); return; } Dictionary <string, string> coldefs = gvarSModel.Val == "1" ? _oneones[item] : _onemores[item]; Pub2.Add("<table class='easyui-datagrid' data-options='fit:true'>"); Pub2.Add(" <thead>"); Pub2.Add(" <tr>"); foreach (KeyValuePair <string, string> coldef in coldefs) { Pub2.Add(string.Format(" <th data-options=\"field:'{0}'\">{0}</th>", coldef.Key)); } Pub2.Add(" </tr>"); Pub2.Add(" </thead>"); Pub2.Add(" <tbody>"); foreach (DataRow row in dt.Rows) { Pub2.Add(" <tr>"); foreach (KeyValuePair <string, string> coldef in coldefs) { if (dt.Columns.Contains(coldef.Key)) { Pub2.Add(string.Format(" <td>{0}</td>", row[coldef.Key] == null || row[coldef.Key] == DBNull.Value ? "" : row[coldef.Key])); } else { Pub2.Add(" <td></td>"); } } Pub2.Add(" </tr>"); } Pub2.Add(" </tbody>"); Pub2.Add("</table>"); ClientScript.RegisterClientScriptBlock(this.GetType(), "showwindow", "$(function(){$('#datawin').window('open');});", true); #endregion } else { switch (btn.ID) { case NamesOfBtn.Save: #region //保存并继续 switch (Step) { case 1: GloVar gvar = new GloVar("StructureModel"); gvar.Val = Pub1.GetRadioButtonListByID("Rads_StructureModel").SelectedValue; gvar.Update(); Response.Redirect("Integration.aspx?step=2", true); break; case 2: gvar = new GloVar("StructureMngKind"); gvar.Val = Pub1.GetRadioButtonListByID("Rads_StructureMngKind").SelectedValue; gvar.Update(); Response.Redirect("Integration.aspx?step=3", true); break; case 3: gvar = new GloVar("StructureSource"); gvar.Val = Pub1.GetRadioButtonListByID("Rads_StructureSource").SelectedValue; gvar.Update(); Response.Redirect("Integration.aspx?step=4", true); break; } #endregion break; case NamesOfBtn.Back: #region //上一步 switch (Step) { case 2: Response.Redirect("Integration.aspx?step=1", true); break; case 3: Response.Redirect("Integration.aspx?step=2", true); break; case 4: Response.Redirect("Integration.aspx?step=3", true); break; } #endregion break; case NamesOfBtn.Setting: #region //设置全部 //循环文本控件,保存所有SQL Dictionary <string, Dictionary <string, string> > coldefs = gvarSModel.Val == "1" ? _oneones : _onemores; SFDBSrc src = new SFDBSrc(gvarDBSrc.Val); SFDBSrc srcLocal = new SFDBSrc("local"); TB tb = null; GloVar tvar = null; string sql = string.Empty; string exists = string.Empty; string successViews = string.Empty; string errorViews = string.Empty; string error = string.Empty; int successIdx = 0; int errorIdx = 0; List <string> existsObjs = new List <string>(); #region checkSqls Dictionary <string, string> checkSqlsOneOne = new Dictionary <string, string> { { "Port_Emp,Port_Dept", "SELECT * FROM {Port_Emp} t1 WHERE t1.FK_Dept NOT IN (SELECT t2.No FROM {Port_Dept} t2)" }, { "Port_Station,Sys_Enum", "SELECT * FROM {Port_Station} t1 WHERE t1.StaGrade NOT IN ({Sys_Enum})" }, { "Port_EmpStation,Port_Emp", "SELECT * FROM {Port_EmpStation} t1 WHERE t1.FK_Emp NOT IN (SELECT t2.No FROM {Port_Emp} t2)" }, { "Port_EmpStation,Port_Station", "SELECT * FROM {Port_EmpStation} t1 WHERE t1.FK_Station NOT IN (SELECT t2.No FROM {Port_Station} t2)" }, { "Port_EmpDept,Port_Emp", "SELECT * FROM {Port_EmpDept} t1 WHERE t1.FK_Emp NOT IN (SELECT t2.No FROM {Port_Emp} t2)" }, { "Port_EmpDept,Port_Dept", "SELECT * FROM {Port_EmpDept} t1 WHERE t1.FK_Dept NOT IN (SELECT t2.No FROM {Port_Dept} t2)" } }; Dictionary <string, string> checkSqlsOneMore = new Dictionary <string, string> { { "Port_Station,Port_StationType", "SELECT * FROM {Port_Station} ps WHERE ps.FK_StationType NOT IN (SELECT pst.No FROM {Port_StationType} pst)" }, { "Port_DeptDuty,Port_Dept", "SELECT * FROM {Port_DeptDuty} pdd WHERE pdd.FK_Dept NOT IN (SELECT pd.No FROM {Port_Dept} pd)" }, { "Port_DeptDuty,Port_Duty", "SELECT * FROM {Port_DeptDuty} pdd WHERE pdd.FK_Duty NOT IN (SELECT pd.No FROM {Port_Duty} pd)" }, { "Port_DeptStation,Port_Dept", "SELECT * FROM {Port_DeptStation} pds WHERE pds.FK_Dept NOT IN (SELECT pd.No FROM {Port_Dept} pd)" }, { "Port_DeptStation,Port_Station", "SELECT * FROM {Port_DeptStation} pds WHERE pds.FK_Station NOT IN (SELECT ps.No FROM {Port_Station} ps)" }, { "Port_Emp,Port_Dept", "SELECT * FROM {Port_Emp} pe WHERE pe.FK_Dept NOT IN (SELECT pd.No FROM {Port_Dept} pd)" }, { "Port_Emp,Port_Duty", "SELECT * FROM {Port_Emp} pe WHERE pe.FK_Duty NOT IN (SELECT pd.No FROM {Port_Duty} pd)" }, { "Port_DeptEmpStation,Port_Dept", "SELECT * FROM {Port_DeptEmpStation} pdes WHERE pdes.FK_Dept NOT IN (SELECT pd.No FROM {Port_Dept} pd)" }, { "Port_DeptEmpStation,Port_Station", "SELECT * FROM {Port_DeptEmpStation} pdes WHERE pdes.FK_Station NOT IN (SELECT ps.No FROM {Port_Station} ps)" }, { "Port_DeptEmpStation,Port_Emp", "SELECT * FROM {Port_DeptEmpStation} pdes WHERE pdes.FK_Emp NOT IN (SELECT pe.No FROM {Port_Emp} pe)" }, { "Port_DeptEmp,Port_Dept", "SELECT * FROM {Port_DeptEmp} pde WHERE pde.FK_Dept NOT IN (SELECT pd.No FROM {Port_Dept} pd)" }, { "Port_DeptEmp,Port_Emp", "SELECT * FROM {Port_DeptEmp} pde WHERE pde.FK_Emp NOT IN (SELECT pe.No FROM {Port_Emp} pe)" }, { "Port_DeptEmp,Port_Duty", "SELECT * FROM {Port_DeptEmp} pde WHERE pde.FK_Duty NOT IN (SELECT pd.No FROM {Port_Duty} pd)" } }; #endregion Dictionary <string, string> checkSqls = gvarSModel.Val == "1" ? checkSqlsOneOne : checkSqlsOneMore; try { #region //保存配置,并初步检查各数据表返回数据的有效性 foreach (KeyValuePair <string, Dictionary <string, string> > def in coldefs) { tb = Pub1.GetTBByID("TB_" + def.Key); tvar = gvars.GetEntityByKey(def.Key + "_Temp") as GloVar; tvar.Val = tb.Text; tvar.Update(); error = CheckSQL(src, gvarSModel.Val, def.Key, tvar.Val); if (string.IsNullOrWhiteSpace(error)) { successViews += (++successIdx) + ". " + def.Key + "<br />"; } else { errorViews += (++errorIdx) + ". " + def.Key + "<br /> 错误信息:" + error + "<br />"; } } if (!string.IsNullOrWhiteSpace(errorViews)) { Alert("配置SQL检查结果:<br />配置正确的表有:<br />" + successViews + "<br />配置错误的表有:<br />" + errorViews + "<br />请检查后重新设置!", "error"); return; } #endregion #region //检查admin,如果没有admin则允许创建视图;如果admin不属于顶级部门,则也不允许创建视图 sql = "SELECT * FROM {Port_Emp} pe WHERE pe.No = 'admin'".Replace("{Port_Emp}", "(" + (gvars.GetEntityByKey("Port_Emp_Temp") as GloVar).Val + ")"); DataTable dt = src.RunSQLReturnTable(sql); if (dt.Rows.Count == 0) { Alert("配置的Port_Emp中,必须含有No='admin'的超级管理员数据!", "error"); return; } if (dt.Rows[0]["FK_Dept"] == null || dt.Rows[0]["FK_Dept"] == DBNull.Value || string.IsNullOrWhiteSpace(dt.Rows[0]["FK_Dept"].ToString())) { Alert("配置的Port_Emp中,No='admin'的超级管理员数据中,FK_Dept部门字段必须有值!", "error"); return; } sql = "SELECT pd.ParentNo FROM {Port_Dept} pd WHERE pd.No = '" + dt.Rows[0]["FK_Dept"] + "'"; dt = src.RunSQLReturnTable(sql.Replace("{Port_Dept}", "(" + (gvars.GetEntityByKey("Port_Dept_Temp") as GloVar).Val + ")")); if (dt.Rows.Count == 0) { Alert("配置的Port_Emp中,No='admin'的超级管理员数据中,FK_Dept部门不存在!", "error"); return; } if (dt.Rows[0][0] != null && dt.Rows[0][0] != DBNull.Value) { sql = "SELECT * FROM {Port_Dept} pd WHERE pd.No = '" + dt.Rows[0][0] + "'"; dt = src.RunSQLReturnTable(sql.Replace("{Port_Dept}", "(" + (gvars.GetEntityByKey("Port_Dept_Temp") as GloVar).Val + ")")); if (dt.Rows.Count > 0) { Alert("配置的Port_Emp中,No='admin'的超级管理员数据中,FK_Dept部门必须是顶级部门!", "error"); return; } } #endregion #region //根据SQL,检查数据完整性,有错误数据,给出提示 string[] tables = null; foreach (KeyValuePair <string, string> cs in checkSqls) { tables = cs.Key.Split(','); sql = cs.Value; foreach (string table in tables) { if (!sql.Contains("{" + table + "}")) { continue; } if (table == "Sys_Enum") { SysEnums enums = new SysEnums("StaGrade"); string grades = string.Empty; foreach (SysEnum en in enums) { grades += en.IntKey + ","; } sql = sql.Replace("{" + table + "}", grades.TrimEnd(',')); } else { sql = sql.Replace("{" + table + "}", "(" + (gvars.GetEntityByKey(table + "_Temp") as GloVar).Val + ")"); } } dt = src.RunSQLReturnTable(sql); if (dt.Rows.Count > 0) { errorViews += (++errorIdx) + ". " + sql + "<br />"; } } #endregion #region //创建两方数据库的组织结构视图 GloVar gvar = null; foreach (KeyValuePair <string, Dictionary <string, string> > def in coldefs) { tvar = gvars.GetEntityByKey(def.Key + "_Temp") as GloVar; gvar = gvars.GetEntityByKey(def.Key) as GloVar; gvar.Val = tvar.Val; gvar.Update(); //判断数据源上是否已经存在同名的表或视图 exists = src.IsExistsObj(def.Key); if (!string.IsNullOrEmpty(exists)) { if (exists == "TABLE" || exists == "VIEW") { src.Rename(exists, def.Key, def.Key + "_Bak" + DateTime.Now.ToString("MMddHHmmss")); } existsObjs.Add(def.Key); } //在数据源所在数据库上建立视图 sql = "CREATE VIEW " + def.Key + Environment.NewLine + "AS" + Environment.NewLine + tvar.Val; src.RunSQL(sql); //在CCFlow主库上建立与数据源库视图的联接,也建一个视图 //判断主数据库里是否已经存在同名的表或视图,如果有,则改名 exists = srcLocal.IsExistsObj(def.Key); if (!string.IsNullOrEmpty(exists)) { if (exists == "TABLE" || exists == "VIEW") { srcLocal.Rename(exists, def.Key, def.Key + "_Bak" + DateTime.Now.ToString("MMddHHmmss")); } } sql = string.Format("CREATE VIEW {0} AS SELECT * FROM {1}", def.Key, src.GetLinkedServerObjName(def.Key)); BP.DA.DBAccess.RunSQL(sql); } #endregion //todo:oneone下部门人员表SQL自动写入,待处理 //tvar = gvars.GetEntityByKey("StructureDBOver") as GloVar; //tvar.Val = true.ToString(); //tvar.Update(); if (!string.IsNullOrWhiteSpace(errorViews)) { Alert("创建成功,但检查到数据完整性有以下错误:<br />" + errorViews, "error"); } else { Alert("创建成功!"); } } catch (Exception ex) { Alert(ex.Message, "error"); } #endregion break; } } }