Пример #1
0
        /// <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()); //输出特殊的格式,让接受者解析.
        }
Пример #3
0
 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);
     }
 }
Пример #4
0
 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);
     }
 }
Пример #5
0
        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);
            }
        }
Пример #6
0
        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;
        }
Пример #7
0
        /// <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 如果发送成功,就跳出这个循环。
            }
        }
Пример #8
0
        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;
        }