/// <summary> /// 执行发送 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Btn_Send_Click(object sender, EventArgs e) { //第1步: 执行保存. this.Btn_Save_Click(null, null); // 检查完整性 BP.Demo.SDK.QingJia en = new BP.Demo.SDK.QingJia(); en.OID = (int)this.WorkID; en.Retrieve(); if (en.QingJiaTianShu <= 0) { this.Response.Write("<font color=red>保存失败,请假天数不能小于等于零。</font>"); return; } #region 第2步: 执行发送. BP.WF.SendReturnObjs objs = null; try { //编写我的业务逻辑.... //调用发送api, 返回发送对象. objs = BP.WF.Dev2Interface.Node_SendWork(this.FK_Flow, this.WorkID); } catch (Exception ex) { this.Response.Write("<font color=red>发送期间出现异常:" + ex.Message + "</font>"); return; } // objs.v /* * 这里注意: * 1,发送api有多个, 根据不同的场景使用不同的api 但是常用的就那1个,您可以产看该参数使用说明. * BP.WF.Node_SendWork(string fk_flow, Int64 workID, int toNodeID, string toEmps) * 2,回来的发送对象里面有系统变量,这些系统变量包括发送给谁了,发送到那里了. * 开发人员可以根据系统变量,执行相关的业务逻辑操作. */ #endregion 第2步: 执行发送. #region 第3步: 把发送信息提示出来. //objs.v string info = objs.ToMsgOfHtml(); info = info.Replace("\t\n", "<br>@"); info = info.Replace("@", "<br>@"); this.Response.Write("<font color=blue>" + info + "</font>"); #endregion 第3步: 把发送信息提示出来. this.Btn_Save.Enabled = false; this.Btn_Send.Enabled = false; }
public string Node_SendWork(string userNo, string sid, string flowNo, int nodeID, Int64 workid, int toNodeID, string toEmps, string paras) { //如果当前的用户登录信息与传递来的用户不一致,就让其调用登录接口,让其登录。 if (BP.Web.WebUser.No != userNo) { BP.WF.Dev2Interface.Port_Login(userNo, sid); } BP.DA.AtPara ap = new BP.DA.AtPara(paras); BP.WF.SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(flowNo, workid, ap.HisHT, null, toNodeID, toEmps); return(objs.ToMsgOfSpecText()); //输出特殊的格式,让接受者解析. }
protected void Btn_Send_Click(object sender, EventArgs e) { try { Btn_Save_Click(null, null); //执行保存. BP.WF.SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(this.FK_Flow, this.WorkID); // 执行发送. this.ToMsg(objs.ToMsgOfHtml()); //输出信息. } catch (Exception ex) { this.ToMsg(ex.Message); } }
protected void Btn_Send_Click(object sender, EventArgs e) { try { BP.WF.SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(this.FK_Flow, this.WorkID); this.Response.Write(objs.ToMsgOfHtml()); this.ToMsg(objs.ToMsgOfHtml()); } catch (Exception ex) { this.ToMsg(ex.Message); } }
protected void Btn_Send_Click(object sender, EventArgs e) { string msg = ""; try { BP.WF.Node nd = new BP.WF.Node(this.FK_Node); string[] strs = this.WorkIDs.Split(','); foreach (string str in strs) { if (string.IsNullOrEmpty(str)) { continue; } Int64 wkid = Int64.Parse(str); BP.WF.GenerWorkFlow gwf = new BP.WF.GenerWorkFlow(wkid); BP.WF.SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(nd.FK_Flow, wkid, null); msg += "<fieldset>"; msg += "<legend>对工作(" + gwf.Title + ")处理情况如下。</legend>"; msg += objs.ToMsgOfHtml(); msg += "</fieldset>"; } msg = msg.Replace("@", "<br>@"); this.Response.Write(msg + "<script type='text/javascript'> window.onload = function(){var ifreamTable = document.getElementById('ifreamTable'); ifreamTable.style.display='none';} </script><br/>[<a href='/WF/Batch.aspx' style='color:blue;'>返回批处理</a>]"); } catch (Exception ex) { //if (ex.Message.Contains("节点没有岗位") || ex.Message.Contains("@没有找到可接受的工作人员") || ex.Message.Contains("没有找到人员") || ex.Message.Contains("流程设计错误") || ex.Message.Contains("@您设置的当前节点")) //{ ErrorMessage.InnerHtml = ex.Message + "<br/>"; // return; //} //msg = ex.ToString().Replace("@", "<BR>@"); //System.Web.HttpContext.Current.Session["info"] = msg; //System.Web.HttpContext.Current.Application["info" + WebUser.No] = msg; //System.Web.HttpContext.Current.Application["url"] = Request.RawUrl; //string url ="/WF/ErrorPage.aspx"; //this.Response.Redirect(url, true); } }
protected void Btn_Send_Click(object sender, EventArgs e) { // 执行保存. Btn_Save_Click(null, null); #region 第2步: 执行发送. //调用发送api, 返回发送对象. BP.WF.SendReturnObjs objs = null; // 查询出来. BP.Demo.SDK.QingJia en = new BP.Demo.SDK.QingJia(); en.OID = (int)this.WorkID; en.Retrieve(); // 向下发送. objs = BP.WF.Dev2Interface.Node_SendWork(this.FK_Flow, this.WorkID, 0, null); /* * 这里注意: * 1,发送api有多个, 根据不同的场景使用不同的api 但是常用的就那1个,您可以产看该参数使用说明. * BP.WF.Node_SendWork(string fk_flow, Int64 workID, int toNodeID, string toEmps) * * 2,回来的发送对象里面有系统变量,这些系统变量包括发送给谁了,发送到那里了. * 开发人员可以根据系统变量,执行相关的业务逻辑操作. */ #endregion 第2步: 执行发送. #region 第3步: 把发送信息提示出来. string info = objs.ToMsgOfText(); info = info.Replace("\t\n", "<br>@"); info = info.Replace("@", "<br>@"); this.Response.Write("<font color=blue>" + info + "</font>"); #endregion 第3步: 把发送信息提示出来. //设置界面按钮不可以用. this.Btn_Save.Enabled = false; this.Btn_Send.Enabled = false; this.Btn_Return.Enabled = false; }
/// <summary> /// 开始执行 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Btn_Do_Click(object sender, EventArgs e) { #region 获得页面参数。 string url = this.TB_Url.Text; // webservices url. string userNo = this.TB_StartUserNo.Text; //发起人. string para = this.TB_Para.Text; //参数. string flowNo = this.TB_FlowNo.Text; //流程编号. #endregion 获得页面参数。 #region 创建webservices连接。 ccbpmAPI.IndustrialAutomationWorkflowWSAPISoapClient myws = null; try { myws = Glo.GetSoapClientInstance(url); string text = myws.HelloWorld(); } catch (Exception ex) { MessageBox.Show("WebServices连接错误,请检查:[" + url + "]输入是否正确。" + ex.Message); return; } #endregion //登录并获得校验码. string sid = myws.Port_Login("liyan", "pub"); //产生一个workid. 流程实例. Int64 workid = myws.Node_CreateBlankWork(userNo, sid, flowNo); MessageBox.Show("WorkID创建成功:" + workid, "提示"); //求出开始节点, 因为ccbpm约定开始节点必须是 流程编号+‘01’转化成int 类型作为开始节点编号。 int startNodeID = int.Parse(flowNo + "01"); //执行发起,获得指定格式的发起结果提示信息. string specText = myws.Node_SendWork(userNo, sid, flowNo, startNodeID, workid, int.Parse(flowNo + "02"), "liyan", para); //根据这个字符串, 生成一个发送结果对象。 BP.WF.SendReturnObjs objs = new BP.WF.SendReturnObjs(specText); //开始循环自动向下发送. while (true) { if (objs.IsStopFlow == true) { MessageBox.Show("流程运行到{" + objs.VarCurrNodeID + " " + objs.VarCurrNodeName + "}结束了"); break; } // 流程运行参数信息. string infoMsg = ""; foreach (BP.WF.SendReturnObj obj in objs) { infoMsg += "\t\n@" + obj.MsgFlag + " = " + obj.MsgOfText; } MessageBox.Show(infoMsg, "发送信息,流程已经运行到:" + objs.VarCurrNodeID + " " + objs.VarCurrNodeName, MessageBoxButtons.OK, MessageBoxIcon.Information); #region 如果发送成功,就跳出这个循环。 //创建一个参数接受窗体. FrmInputParams frm = new FrmInputParams(); frm.Text = "请为:" + objs.VarToNodeID + " " + objs.VarToNodeName + " 设置输入参数。"; //参数提示录入,added by liuxc,2015-10-21 if (frm.ShowDialog(this) == System.Windows.Forms.DialogResult.OK) { /* 如果接收到了参数. */ para = frm.Params; } else { para = null; } if (string.IsNullOrEmpty(para) == true) { para = frm.Params; MessageBox.Show("系统退出了,没有接收到参数。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); para = string.Empty; Application.Exit(); } try { //发送到下一个节点上去. specText = myws.Node_SendWork(userNo, sid, flowNo, objs.VarToNodeID, workid, 0, null, para); //根据约定格式的字符串,初始化一个发送结果实例,到头打印出来该参数。 objs = new BP.WF.SendReturnObjs(specText); } catch (Exception ex) { var v = MessageBox.Show(ex.Message + " \t\n 您需要重新输入参数吗?", "发送失败,有可能是参数不完整导致的", MessageBoxButtons.OKCancel); if (v == System.Windows.Forms.DialogResult.Cancel) { break; } continue; //重新输入参数. } #endregion 如果发送成功,就跳出这个循环。 } }
protected void Btn_Send_Click(object sender, EventArgs e) { // 执行保存. Btn_Save_Click(null, null); #region 第2步: 执行发送. //调用发送api, 返回发送对象. BP.WF.SendReturnObjs objs = null; // 查询出来. BP.Demo.SDK.QingJia en = new BP.Demo.SDK.QingJia(); en.OID = (int)this.WorkID; en.Retrieve(); Hashtable ht = new Hashtable(); ht.Add("QingJiaTianShu", en.QingJiaTianShu); ht.Add("SysIsReadReceipts", 1); //是否需要回执. /* * 这里注意: * 1,发送api有多个, 根据不同的场景使用不同的api 但是常用的就那1个,您可以产看该参数使用说明. * BP.WF.Node_SendWork(string fk_flow, Int64 workID, int toNodeID, string toEmps) * 重要说明: * 1. 如果toNodeID=0,ccbpm就会按照流程图上计算,如果为一个节点ID,ccbpm就会认为你要发送到这个节点上. * 2, 如果toEmps=null, ccbpm就会根据节点的配置来计算接收人,如果指定了一个或多个接收人,比如:zhangsian,lisi, * ccbpm就会认为要交给这些人处理。 * * 2,回来的发送对象里面有系统变量,这些系统变量包括发送给谁了,发送到那里了. * 开发人员可以根据系统变量,执行相关的业务逻辑操作. * */ // objs = BP.WF.Dev2Interface.Node_SendWork(this.FK_Flow, this.WorkID, 0, null, ht); ///***发送后,流程转向问题 BY HZM ******/ if (en.QingJiaTianShu > 10) { objs = BP.WF.Dev2Interface.Node_SendWork(this.FK_Flow, this.WorkID, 1803, "zhangsan,lisi,"); } else { objs = BP.WF.Dev2Interface.Node_SendWork(this.FK_Flow, this.WorkID, 1899, null); } BP.WF.Dev2Interface.Node_AddNextStepAccepters(1000, 102, "zhangsna,lisi", false); BP.WF.Dev2Interface.Node_AddNextStepAccepters(1000, 103, "wangwu,zhaoliu", false); BP.WF.Dev2Interface.Node_AddNextStepAccepters(1000, 105, "wsxx,dd", false); ///***修改结束******/ BP.Demo.SDK.ND018Rpt rpt = new BP.Demo.SDK.ND018Rpt(); BP.Demo.SDK.QingJia qingjia = new BP.Demo.SDK.QingJia(); qingjia.Copy(rpt); qingjia.Insert(); #endregion 第2步: 执行发送. #region 第3步: 把发送信息提示出来. string info = objs.ToMsgOfText(); info = info.Replace("\t\n", "<br>@"); info = info.Replace("@", "<br>@"); this.Response.Write("<font color=blue>" + info + "</font>"); #endregion 第3步: 把发送信息提示出来. //设置界面按钮不可以用. this.Btn_Save.Enabled = false; this.Btn_Send.Enabled = false; }