Exemple #1
0
        /// <summary>
        /// 指定表单字段的人员的直接领导。
        /// </summary>
        public void DoFineWho_2()
        {
            string sUser = "******";

            BP.WF.Dev2Interface.Port_Login(sUser);

            //创建.
            workID = BP.WF.Dev2Interface.Node_CreateBlankWork(fl.No);

            //执行发送, 直接领导.
            Hashtable ht = new Hashtable();

            ht.Add("FindLeader", 1); // 找直接领导.
            ht.Add("RenYuanBianHao", "zhoutianjiao");
            SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(fl.No, workID, ht);

            // 让zhanghaicheng登录, 执行第二步骤地发送。
            BP.WF.Dev2Interface.Port_Login(objs.VarAcceptersID);

            // 让zhanghaicheng 执行发送,应该还发送给zhanghaicheng.
            objs = BP.WF.Dev2Interface.Node_SendWork(fl.No, workID);

            #region 分析预期
            if (objs.VarAcceptersID != "qifenglin")
            {
                throw new Exception("@按照找直接领导的方式1, (指定级别的领导)找领导错误,应当是qifenglin现在是" + objs.VarAcceptersID);
            }
            #endregion
        }
Exemple #2
0
    public string Node_SendWork(string fk_flow, int fk_node, Int64 workID, string userNo, string dsXml)
    {
        try
        {
            BP.WF.Dev2Interface.Port_Login(userNo);

            StringReader sr = new StringReader(dsXml);
            DataSet      ds = new DataSet();
            ds.ReadXml(sr);

            Hashtable htMain = new Hashtable();
            DataTable dtMain = ds.Tables["Main"];
            foreach (DataRow dr in dtMain.Rows)
            {
                htMain.Add(dr[0].ToString(), dr[1].ToString());
            }

            SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(fk_flow, workID, htMain, ds);
            return(objs.ToMsgOfText());
        }
        catch (Exception ex)
        {
            return("@发送工作出现错误:" + ex.Message);
        }
    }
        /// <summary>
        /// 发送
        /// </summary>
        public void Send()
        {
            Hashtable ht = new Hashtable();

            if (this.CB_IsShiShi.Checked)
            {
                ht.Add("IsShiShi", 1);
            }
            else
            {
                ht.Add("IsShiShi", 0);
            }

            // call 子子流程,执行发送并获取发送后返回对象。
            SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(this.FK_Flow, this.WorkID, ht, null, 0, this.TB_FZR.Text);

            //int shebeiID = int.Parse(this.Request.QueryString["SheBeiID"]);
            //BP.Demo.tab_wf_commonkpioptivalue en = new BP.Demo.tab_wf_commonkpioptivalue();
            //en.OID = shebeiID;
            //en.Retrieve(); //根据设备ID 查询出来该设备的信息
            //en.WorkID = (int)objs.VarWorkID; //从返回对象里,获取它的子子流程WorkID。
            //en.Update();

            //提示发送消息。
            this.Session["info"] = objs.ToMsgOfHtml();
            this.Response.Redirect("ShowMsg.aspx?ss" + BP.DA.DataType.CurrentDataTime, true);
        }
Exemple #4
0
        /// <summary>
        /// 测试案例说明:
        /// 1, 分别列举4种。
        /// 2, 测试找领导的两种模式
        /// </summary>
        public override void Do()
        {
            this.fk_flow = "057";
            fl           = new Flow(this.fk_flow);
            string sUser = "******";

            BP.WF.Dev2Interface.Port_Login(sUser);

            //创建.
            workID = BP.WF.Dev2Interface.Node_CreateBlankWork(fl.No);

            //执行发送, 应该跳转到最后一个步骤上去.
            SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(fl.No, workID);

            #region 分析预期
            if (objs.VarAcceptersID != "qifenglin")
            {
                throw new Exception("@应当是qifenglin现在是" + objs.VarAcceptersID);
            }

            if (objs.VarToNodeID != 5799)
            {
                throw new Exception("@应该跳转到最后一个节点,但是运行到了:" + objs.VarToNodeID + " - " + objs.VarToNodeName);
            }
            #endregion
        }
Exemple #5
0
        /// <summary>
        /// 运行完一个流程,并返回它的workid.
        /// </summary>
        /// <returns></returns>
        public Int64 RunCompeleteOneWork()
        {
            string fk_flow   = "024";
            string startUser = "******";

            BP.Port.Emp starterEmp = new Port.Emp(startUser);

            Flow fl = new Flow(fk_flow);

            //让zhanghaicheng登录, 在以后,就可以访问WebUser.No, WebUser.Name 。
            BP.WF.Dev2Interface.Port_Login(startUser);

            //创建空白工作, 发起开始节点.
            Int64 workid = BP.WF.Dev2Interface.Node_CreateBlankWork(fk_flow);
            //执行发送,并获取发送对象,.
            SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(fk_flow, workid);

            //执行第二步 :  .
            BP.WF.Dev2Interface.Port_Login(objs.VarAcceptersID);
            objs = BP.WF.Dev2Interface.Node_SendWork(fk_flow, workid);

            //执行第三步完成:  .
            BP.WF.Dev2Interface.Port_Login(objs.VarAcceptersID);
            objs = BP.WF.Dev2Interface.Node_SendWork(fk_flow, workid);
            return(workid);
        }
Exemple #6
0
        /// <summary>
        /// 测试案例说明:
        /// 1, 测试共享任务的取出,放入。
        /// 2, 延续流程的两种模式
        /// </summary>
        public override void Do()
        {
            if (BP.WF.Glo.IsEnableTaskPool == false)
            {
                throw new Exception("@此单元测试需要打开web.config中的IsEnableTaskPool配置.");
            }

            fl = new Flow("209");

            Node nd = new Node(6899);

            string sUser = "******";

            BP.WF.Dev2Interface.Port_Login(sUser);

            //创建.
            workID = BP.WF.Dev2Interface.Node_CreateBlankWork(fl.No);

            //执行发送,指定发送给两个人。
            SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(fl.No, workID, null, null, 0, "liping");

            //让liping登陆。
            BP.WF.Dev2Interface.Port_Login("liping");

            //发送到子流程(延续流程上去)上去.
            objs = BP.WF.Dev2Interface.Node_SendWork(fl.No, workID, null, null, 21001, "liping");
            #region 检查数据是否完整。


            #endregion 检查数据是否完整。

            //执行撤销工作.
            BP.WF.Dev2Interface.Flow_DoUnSend(fl.No, workID, 0);
        }
Exemple #7
0
        /// <summary>
        /// 测试案例说明:
        /// 1, 分别列举4种。
        /// 2, 测试找领导的两种模式
        /// </summary>
        public override void Do()
        {
            this.fk_flow = "063";
            fl           = new Flow(this.fk_flow);
            string sUser = "******";

            BP.WF.Dev2Interface.Port_Login(sUser);

            //创建.
            workID = BP.WF.Dev2Interface.Node_CreateBlankWork(fl.No);
            //执行发送, 应该跳转到最后一个步骤上去.
            SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(fl.No, workID);

            //让qinfenglin登陆。
            BP.WF.Dev2Interface.Port_Login(objs.VarAcceptersID);
            objs = BP.WF.Dev2Interface.Node_SendWork(fl.No, workID);

            //让liping登陆, 他应该自动跳转了,跳转给zhoutianjiao.
            BP.WF.Dev2Interface.Port_Login(objs.VarAcceptersID);
            objs = BP.WF.Dev2Interface.Node_SendWork(fl.No, workID);

            #region 分析预期
            if (objs.VarAcceptersID != "zhoutianjiao")
            {
                throw new Exception("@按照找直接领导的方式0, (直接领导模式)找领导错误,应当是qifenglin现在是" + objs.VarAcceptersID);
            }

            if (objs.VarToNodeID != 6304)
            {
                throw new Exception("@应该跳转到最后一个节点,但是运行到了:" + objs.VarToNodeID + " - " + objs.VarToNodeName);
            }
            #endregion
        }
Exemple #8
0
        protected void Btn_Save_Click(object sender, EventArgs e)
        {
            string checkMsg = this.TB_Doc.Text;

            BP.WF.GenerWorkFlow gwf = new GenerWorkFlow(this.WorkID);

            // 如果是发送.
            if (this.RB_OK.Checked)
            {
                SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(this.FK_Flow, this.WorkID);

                //写入审核信息.
                BP.WF.Dev2Interface.WriteTrack(this.FK_Flow, this.FK_Node, this.WorkID, this.FID,
                                               checkMsg, ActionType.WorkCheck, "", null);

                this.ToMsg(objs.ToMsgOfHtml(), "Info");
                return;
            }

            //获得要退回的节点.
            int returnToNodeID = int.Parse(this.DDL_Nodes.SelectedValue);

            //执行退回.
            string msg = BP.WF.Dev2Interface.Node_ReturnWork(this.FK_Flow, this.WorkID,
                                                             this.FID, this.FK_Node, returnToNodeID, checkMsg, false);

            this.ToMsg(msg, "Info");
        }
        /// <summary>
        /// 发送
        /// </summary>
        public void Send()
        {
            // 向下发送.
            SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(this.FK_Flow, this.WorkID, null, null, 0, null);

            //提示发送消息。
            this.Session["info"] = objs.ToMsgOfHtml();
            this.Response.Redirect("ShowMsg.aspx?ss" + BP.DA.DataType.CurrentDataTime, true);
        }
Exemple #10
0
        /// <summary>
        /// 测试案例
        /// </summary>
        public override void Do()
        {
            //初始化变量.
            fk_flow = "036";
            userNo  = "zhangyifan";
            fl      = new Flow(fk_flow);

            //执行登陆.
            BP.WF.Dev2Interface.Port_Login(userNo);

            // 创建工作。
            this.workID = BP.WF.Dev2Interface.Node_CreateBlankWork(this.fk_flow, null, null, null, null);
            // 发送到下一步骤(部门经理审批).
            SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(this.fk_flow, this.workID, null, null, 0, null);

            // 获取下一步骤的接收人员,让下一步人员登陆.
            string nextWorker2 = objs.VarAcceptersID;

            BP.WF.Dev2Interface.Port_Login(nextWorker2);

            // 执行部门经理读取工作的api.
            BP.WF.Dev2Interface.Node_SetWorkRead(objs.VarToNodeID, this.workID);

            #region 检查发起人是否接受到了回执消息.
            if (BP.WF.Glo.IsEnableSysMessage == true)
            {
                string    sql = "SELECT * FROM Sys_SMS WHERE MsgFlag='RP" + this.workID + "_3602' AND MsgAccepter='" + userNo + "@ccflow.org'";
                DataTable dt  = DBAccess.RunSQLReturnTable(sql);
                if (dt.Rows.Count == 0)
                {
                    throw new Exception("@人员(" + userNo + ")没有接受到回执消息。");
                }
            }
            #endregion 检查发起人是否接受到了回执消息.

            // 让第2步的人员发送, 并获取发送对象.
            Hashtable ht = new Hashtable();
            ht.Add(BP.WF.WorkSysFieldAttr.SysIsReadReceipts, "1"); //传入表单参数.
            objs = BP.WF.Dev2Interface.Node_SendWork(this.fk_flow, this.workID,
                                                     ht, null, 0, null);

            string nextWorker3 = objs.VarAcceptersID;                            //获得第三步骤地接受者。
            BP.WF.Dev2Interface.Port_Login(nextWorker3);                         // 让第三步骤地工作人员登陆。
            BP.WF.Dev2Interface.Node_SetWorkRead(objs.VarToNodeID, this.workID); //执行读取回执。

            #region 检查部门经理是否接受了已读回执.
            if (BP.WF.Glo.IsEnableSysMessage == true)
            {
                string    sql = "SELECT * FROM Sys_SMS WHERE MsgFlag='RP" + this.workID + "_3699' AND MsgAccepter='" + nextWorker2 + "@ccflow.org'";
                DataTable dt  = DBAccess.RunSQLReturnTable(sql);
                if (dt.Rows.Count == 0)
                {
                    throw new Exception("@人员(" + nextWorker2 + ")没有接受到回执消息。");
                }
            }
            #endregion 检查部门经理是否接受了已读回执.
        }
Exemple #11
0
        /// <summary>
        /// 发送
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Btn_Send_Click(object sender, EventArgs e)
        {
            //执行发送, 此发送,普通节点到分流点发送,并且指定接受人。
            SendReturnObjs sendObjs = BP.WF.Dev2Interface.Node_SendWork(this.FK_Flow, this.WorkID, null, null, 0, "guobaogeng");

            //提示发送消息。
            this.Session["info"] = sendObjs.ToMsgOfHtml();
            this.Response.Redirect("ShowMsg.aspx?ss" + BP.DA.DataType.CurrentDataTime, true);
        }
Exemple #12
0
        /// <summary>
        /// 测试从最后一个节点退回到分流点,然后让其原路返回.
        /// 返回到最后一个节点后,让其在执行一次退回但是并不原路返回,让发起人执行发送
        /// 看看是否是按照步骤一步步的向下运动。
        /// </summary>
        public void ReturnToFenLiuNodeWithTrackback_1()
        {
            //创建测试案例.
            Int64 workid = this.CreateTastCase();

            //让他登录.
            BP.WF.Dev2Interface.Port_Login("zhoupeng");

            //向开始节点退回,并不原路返回。
            BP.WF.Dev2Interface.Node_ReturnWork("088", workid, 0, 8899, 8802, "test", true);

            //让 zhoutianjiao , 登录让其发送。
            BP.WF.Dev2Interface.Port_Login("qifenglin");
            SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork("088", workid);

            if (objs.VarAcceptersID != "zhoupeng")
            {
                throw new Exception("@退回到开始节点并原路返回错误,应该返回给zhoupeng,现在是:" + objs.VarAcceptersID);
            }

            //在执行一次退回,但不原路返回.
            BP.WF.Dev2Interface.Node_ReturnWork("088", workid, 0, 8899, 8802, "test", false);


            //让qifenglin登录, 测试下一步骤,是否按照一步步的走向结束节点。
            BP.WF.Dev2Interface.Port_Login("qifenglin");
            objs = BP.WF.Dev2Interface.Node_SendWork("088", workid);

            // 让分流点发送.
            string    sql = "SELECT WorkID,FK_Emp FROM WF_GenerWorkerlist WHERE FID=" + workid;
            DataTable dt  = DBAccess.RunSQLReturnTable(sql);

            if (dt.Rows.Count == 0)
            {
                throw new Exception("没有查询到子线程.");
            }

            foreach (DataRow dr in dt.Rows)
            {
                Int64  id  = Int64.Parse(dr["WorkID"].ToString());
                string emp = dr[1].ToString();
                BP.WF.Dev2Interface.Port_Login(emp);
                BP.WF.Dev2Interface.Node_SendWork("088", id);
            }

            //让 zhanghaicheng , 登录让其发送.
            BP.WF.Dev2Interface.Port_Login("zhanghaicheng");
            BP.WF.Dev2Interface.Node_SendWork("088", workid);

            //让 zhoupeng , 登录让其发送。
            BP.WF.Dev2Interface.Port_Login("zhoupeng");
            BP.WF.Dev2Interface.Node_SendWork("088", workid);

            /*
             * 运行到这里执行成功。
             */
        }
        /// <summary>
        /// 发送
        /// </summary>
        public void Send()
        {
            // call 子子流程,执行发送并获取发送后返回对象。
            SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(this.FK_Flow, this.WorkID, null, null, 0, this.TB_NextWorker.Text);

            //提示发送消息。
            this.Session["info"] = objs.ToMsgOfHtml();
            this.Response.Redirect("ShowMsg.aspx?ss" + BP.DA.DataType.CurrentDataTime, true);
        }
Exemple #14
0
        /// <summary>
        /// 创建一个测试场景,让他跑到结束节点.
        /// </summary>
        public Int64 CreateTastCase()
        {
            string fk_flow   = "088";
            string startUser = "******";

            BP.Port.Emp starterEmp = new Port.Emp(startUser);

            Flow fl = new Flow(fk_flow);

            //让周天娇登录, 在以后,就可以访问WebUser.No, WebUser.Name 。
            BP.WF.Dev2Interface.Port_Login(startUser);

            //创建空白工作, 发起开始节点.
            Int64 workid = BP.WF.Dev2Interface.Node_CreateBlankWork(fk_flow);

            //执行向 分流点 发送, qifenglin接受.
            SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(fk_flow, workid);

            if (objs.VarAcceptersID != "qifenglin")
            {
                throw new Exception("@接受人错误,应当是qifenglin,现在是:" + objs.VarAcceptersID);
            }

            //让分流点的发起人登录.
            BP.WF.Dev2Interface.Port_Login(objs.VarAcceptersID);
            //执行向下发送.
            objs = BP.WF.Dev2Interface.Node_SendWork(fk_flow, workid);

            if (objs.VarAcceptersID != "zhangyifan,zhoushengyu,")
            {
                throw new Exception("@接受人错误,应当是zhangyifan,zhoushengyu,现在是:" + objs.VarAcceptersID);
            }

            string    sql = "SELECT WorkID,FK_Emp FROM WF_GenerWorkerlist WHERE FID=" + workid;
            DataTable dt  = DBAccess.RunSQLReturnTable(sql);

            foreach (DataRow dr in dt.Rows)
            {
                Int64  id  = Int64.Parse(dr["WorkID"].ToString());
                string emp = dr[1].ToString();
                BP.WF.Dev2Interface.Port_Login(emp);
                objs = BP.WF.Dev2Interface.Node_SendWork(fk_flow, id);
            }


            //让qifenglin登录,发到最后一个节点,完成tastcase.
            BP.WF.Dev2Interface.Port_Login("zhanghaicheng");
            objs = BP.WF.Dev2Interface.Node_SendWork(fk_flow, workid);
            if (objs.VarAcceptersID != "zhoupeng")
            {
                throw new Exception("@接受人错误,应当是zhoupeng,现在是:" + objs.VarAcceptersID);
            }

            return(workid);
        }
Exemple #15
0
        /// <summary>
        /// 创建流程,发送分流点第1步.
        /// </summary>
        public void Step1()
        {
            Flow fl = new Flow("122");

            fl.DoDelData();


            // 让zhanghaicheng 登录.
            BP.WF.Dev2Interface.Port_Login(userNo);

            //创建空白工作, 发起开始节点.
            workid = BP.WF.Dev2Interface.Node_CreateBlankWork(fk_flow);

            //获得他的work.
            Node nd = new Node(12201);
            Work wk = nd.HisWork;

            wk.OID = workid;
            wk.Retrieve();

            // 初始化明细表的接收人数据.
            MapDtl dtl   = wk.HisMapDtls[0] as MapDtl;
            GEDtl  enDtl = dtl.HisGEDtl;

            enDtl.RefPK = workid.ToString();
            enDtl.SetValByKey("ChuLiRen", "zhangyifan");
            enDtl.SetValByKey("ChuLiRenMingCheng", "张一帆");
            enDtl.SetValByKey("PiCiHao", "AA");  //批次号.
            enDtl.Insert();

            enDtl       = dtl.HisGEDtl;
            enDtl.RefPK = workid.ToString();
            enDtl.SetValByKey("ChuLiRen", "zhangyifan");
            enDtl.SetValByKey("ChuLiRenMingCheng", "张一帆");
            enDtl.SetValByKey("PiCiHao", "AA");  //批次号.
            enDtl.Insert();


            enDtl       = dtl.HisGEDtl;
            enDtl.RefPK = workid.ToString();
            enDtl.SetValByKey("ChuLiRen", "zhangyifan");
            enDtl.SetValByKey("ChuLiRenMingCheng", "张一帆");
            enDtl.SetValByKey("PiCiHao", "BB"); //批次号.
            enDtl.Insert();

            // 执行向下发送.
            SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(this.fk_flow, this.workid);

            if (objs.VarTreadWorkIDs == "")
            {
                throw new Exception("sss");
            }
        }
Exemple #16
0
        /// <summary>
        /// 发送案件
        /// </summary>
        /// <returns></returns>
        private string Send()
        {
            //首先执行保存.
            this.Save();
            string resultMsg = "";

            try
            {
                if (Dev2Interface.Flow_IsCanDoCurrentWork(this.FK_Flow, this.FK_Node, this.WorkID, WebUser.No) == false)
                {
                    resultMsg = "error|您好:" + BP.Web.WebUser.No + ", " + WebUser.Name + "当前的工作已经被处理,或者您没有执行此工作的权限。";
                }
                else
                {
                    SendReturnObjs returnObjs = Dev2Interface.Node_SendWork(this.FK_Flow, this.WorkID);
                    //  resultMsg = returnObjs.ToMsgOfHtml();
                    resultMsg = returnObjs.ToMsgOfHtml();

                    //执行抄送.

                    BP.WF.Dev2Interface.Node_CC_WriteTo_Todolist(returnObjs.VarToNodeID, returnObjs.VarToNodeID,
                                                                 this.WorkID, "zhoupeng", "周朋");

                    BP.WF.Dev2Interface.Flow_SetFlowTitle(this.FK_Flow, this.WorkID, "sdsdsdfsdfsdfsdf");

                    //BP.WF.Dev2Interface.DB_GenerCanStartFlowsOfDataTable();

                    #region 处理通用的发送成功后的业务逻辑方法,此方法可能会抛出异常.

                    /*这里有两种情况
                     * 1,从中间的节点,通过批量处理,也就是说合并审批处理的情况,这种情况子流程需要执行到下一步。
                     * 2,从流程已经完成,或者正在运行中,也就是说合并审批处理的情况. */
                    try
                    {
                        //处理通用的发送成功后的业务逻辑方法,此方法可能会抛出异常.
                        BP.WF.Glo.DealBuinessAfterSendWork(this.FK_Flow, this.WorkID, this.DoFunc, WorkIDs);
                    }
                    catch (Exception ex)
                    {
                        resultMsg = "sysError|" + ex.Message.Replace("@", "<br/>");
                        return(resultMsg);
                    }
                    #endregion 处理通用的发送成功后的业务逻辑方法,此方法可能会抛出异常.
                }
            }
            catch (Exception ex)
            {
                resultMsg = "sysError|" + ex.Message.Replace("@", "<br/>");
            }
            return(resultMsg);
        }
Exemple #17
0
        /// <summary>
        /// 说明 :此测试针对于演示环境中的 002 流程编写的单元测试代码。
        /// 涉及到了: 创建,发送,撤销,方向条件、退回等功能。
        /// </summary>
        public override void Do()
        {
            string fk_flow = "028";
            Flow   fl      = new Flow(fk_flow);

            #region   yangyilei 登录. 基层路线
            BP.WF.Dev2Interface.Port_Login("yangyilei");
            //创建空白工作, 发起开始节点.
            Int64 workid = BP.WF.Dev2Interface.Node_CreateBlankWork(fk_flow, null, null, WebUser.No, null, 0, null);

            //执行发送,并获取发送对象,.
            SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(fk_flow, workid);
            if (objs.VarToNodeID != 2802)
            {
                throw new Exception("@财务部门人员发起没有转入到财务部节点上去。");
            }

            //删除测试数据.
            BP.WF.Dev2Interface.Flow_DoDeleteFlowByReal(fl.No, objs.VarWorkID, false);
            #endregion yangyilei


            #region  qifenglin登录.
            BP.WF.Dev2Interface.Port_Login("qifenglin");
            workid = BP.WF.Dev2Interface.Node_CreateBlankWork(fk_flow, null, null, WebUser.No, null, 0, null);

            objs = BP.WF.Dev2Interface.Node_SendWork(fl.No, workid);
            if (objs.VarToNodeID != 2899)
            {
                throw new Exception("@研发部人员发起没有转入研发部节点上去。");
            }
            // 删除测试数据.
            BP.WF.Dev2Interface.Flow_DoDeleteFlowByReal(fl.No, objs.VarWorkID, false);
            #endregion  qifenglin登录.

            #region  liyan登录.
            BP.WF.Dev2Interface.Port_Login("liyan");
            workid = BP.WF.Dev2Interface.Node_CreateBlankWork(fk_flow, null, null, WebUser.No, null, 0, null);

            objs = BP.WF.Dev2Interface.Node_SendWork(fl.No, workid);
            if (objs.VarToNodeID != 2803)
            {
                throw new Exception("@没有转入人力资源部上去。");
            }
            // 删除测试数据.
            BP.WF.Dev2Interface.Flow_DoDeleteFlowByReal(fl.No, objs.VarWorkID, false);
            #endregion liyan登录.
        }
Exemple #18
0
        /// <summary>
        /// 执行
        /// </summary>
        public override void Do()
        {
            string fk_flow = "001";
            Flow   fl      = new Flow(fk_flow);

            BP.WF.Dev2Interface.Port_Login("zhoutianjiao");

            //创建空白工作, 发起开始节点.
            SendReturnObjs objs = BP.WF.Dev2Interface.Node_StartWork(fk_flow, null, null, 0, null);

            Int64 workid = objs.VarWorkID;

            //用第二个人员登录.
            BP.WF.Dev2Interface.Port_Login(objs.VarAcceptersID);

            //设置标题
            BP.WF.Dev2Interface.Flow_SetFlowTitle(fk_flow, workid, "test");

            #region 检查标题是否正确.
            string title = DBAccess.RunSQLReturnString("SELECT Title FROM WF_GenerWorkFlow  WHERE WorkID=" + workid);
            if (title != "test")
            {
                throw new Exception("@Flow_SetFlowTitle 方法失败. WF_GenerWorkFlow没有变化正确。");
            }
            title = DBAccess.RunSQLReturnString("SELECT Title FROM ND" + int.Parse(fl.No) + "Rpt  WHERE OID=" + workid);
            if (title != "test")
            {
                throw new Exception("@Flow_SetFlowTitle 方法失败.Rpt table 没有变化正确。");
            }
            #endregion 检查标题是否正确.


            //重新设置标题
            BP.WF.Dev2Interface.Flow_ReSetFlowTitle(fk_flow, objs.VarToNodeID, workid);

            #region 检查标题是否正确.
            title = DBAccess.RunSQLReturnString("SELECT Title FROM WF_GenerWorkFlow  WHERE WorkID=" + workid);
            if (title == "test")
            {
                throw new Exception("@Flow_SetFlowTitle 方法失败. WF_GenerWorkFlow没有变化正确。");
            }
            title = DBAccess.RunSQLReturnString("SELECT Title FROM ND" + int.Parse(fl.No) + "Rpt  WHERE OID=" + workid);
            if (title == "test")
            {
                throw new Exception("@Flow_SetFlowTitle 方法失败.Rpt table 没有变化正确。");
            }
            #endregion 检查标题是否正确.
        }
Exemple #19
0
        /// <summary>
        /// 发送案件
        /// </summary>
        /// <returns></returns>
        private string Send()
        {
            //首先执行保存.
            this.Save();
            string resultMsg = "";

            try
            {
                if (Dev2Interface.Flow_IsCanDoCurrentWork(this.FK_Flow, this.FK_Node, this.WorkID, WebUser.No) == false)
                {
                    resultMsg = "error|您好:" + BP.Web.WebUser.No + ", " + WebUser.Name + "当前的工作已经被处理,或者您没有执行此工作的权限。";
                }
                else
                {
                    SendReturnObjs returnObjs = Dev2Interface.Node_SendWork(this.FK_Flow,
                                                                            this.WorkID, 112301, "zhangsan,lisi,wangwu");

                    //  returnObjs.v
                    //  resultMsg = returnObjs.ToMsgOfHtml();
                    resultMsg = returnObjs.ToMsgOfHtml();

                    #region 处理通用的发送成功后的业务逻辑方法,此方法可能会抛出异常.

                    /*这里有两种情况
                     * 1,从中间的节点,通过批量处理,也就是说合并审批处理的情况,这种情况子流程需要执行到下一步。
                     * 2,从流程已经完成,或者正在运行中,也就是说合并审批处理的情况. */
                    try
                    {
                        //处理通用的发送成功后的业务逻辑方法,此方法可能会抛出异常.
                        BP.WF.Glo.DealBuinessAfterSendWork(this.FK_Flow, this.WorkID, this.DoFunc, WorkIDs);
                    }
                    catch (Exception ex)
                    {
                        resultMsg = "sysError|" + ex.Message.Replace("@", "<br/>");
                        return(resultMsg);
                    }
                    #endregion 处理通用的发送成功后的业务逻辑方法,此方法可能会抛出异常.
                }
            }
            catch (Exception ex)
            {
                resultMsg = "sysError|" + ex.Message.Replace("@", "<br/>");
            }
            return(resultMsg);
        }
        /// <summary>
        /// 执行
        /// </summary>
        public override void Do()
        {
            string fk_flow = "029";
            Flow   fl      = new Flow(fk_flow);

            fl.DoCheck();

            #region   zhoupeng 登录.
            BP.WF.Dev2Interface.Port_Login("zhoupeng");
            //创建空白工作, 发起开始节点.
            Int64 workid = BP.WF.Dev2Interface.Node_CreateBlankWork(fk_flow);
            //加入开发者参数,表单里没有TurnTo字段.
            Hashtable ht = new Hashtable();
            ht.Add("Turn", "A");

            //执行发送,并获取发送对象,.
            SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(fk_flow, workid, ht);
            if (objs.VarToNodeID != 2999)
            {
                throw new Exception("@应该转向A。");
            }

            //删除测试数据.
            BP.WF.Dev2Interface.Flow_DoDeleteFlowByReal(fl.No, objs.VarWorkID, false);
            #endregion

            #region   zhoupeng 登录.
            BP.WF.Dev2Interface.Port_Login("zhoupeng");
            //创建空白工作, 发起开始节点.
            workid = BP.WF.Dev2Interface.Node_CreateBlankWork(fk_flow);
            //加入开发者参数,表单里没有TurnTo字段.
            ht = new Hashtable();
            ht.Add("Turn", "B");

            //执行发送,并获取发送对象,.
            objs = BP.WF.Dev2Interface.Node_SendWork(fk_flow, workid, ht);
            if (objs.VarToNodeID != 2902)
            {
                throw new Exception("@应该转向B。");
            }

            //删除测试数据.
            BP.WF.Dev2Interface.Flow_DoDeleteFlowByReal(fl.No, objs.VarWorkID, false);
            #endregion
        }
        /// <summary>
        /// 测试抄送
        /// </summary>
        public void TestCC()
        {
            string sUser = "******";

            BP.WF.Dev2Interface.Port_Login(sUser);

            //创建.
            workID = BP.WF.Dev2Interface.Node_CreateBlankWork(fl.No);

            //执行发送.
            SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(fl.No, workID);

            //执行抄送.
            BP.WF.Dev2Interface.Node_CC(fl.No, objs.VarToNodeID, workID, "zhoushengyu", "zhoupeng", "移交测试", "", null, 0);

            //让 zhoushengyu 登陆.
            BP.WF.Dev2Interface.Port_Login("zhoushengyu");

            #region 检查预期结果.
            sql = "SELECT FK_Emp FROM WF_EmpWorks WHERE WorkID=" + workID;
            dt  = DBAccess.RunSQLReturnTable(sql);
            if (dt.Rows.Count == 0)
            {
                throw new Exception("@移交后待办丢失。");
            }

            if (dt.Rows.Count != 1)
            {
                throw new Exception("@应该只有一个人处于待办状态。");
            }

            if (dt.Rows[0][0].ToString() != "zhoupeng")
            {
                throw new Exception("@应该是:zhoupeng 现在是:" + dt.Rows[0][0].ToString());
            }

            CCList list = new CCList();
            int    num  = list.Retrieve(CCListAttr.Rec, sUser, CCListAttr.WorkID, workID);
            if (num <= 0)
            {
                throw new Exception("@没有写入抄送数据在 WF_CCList 表中,查询的数量是:" + num);
            }
            #endregion 检查预期结果
        }
Exemple #22
0
        /// <summary>
        /// 测试案例说明:
        /// 1, 分别列举4种。
        /// 2, 测试按部门找人员的两种模式
        /// </summary>
        public override void Do()
        {
            this.fk_flow = "064";
            fl           = new Flow(this.fk_flow);
            string sUser = "******";

            BP.WF.Dev2Interface.Port_Login(sUser);

            //创建.
            workID = BP.WF.Dev2Interface.Node_CreateBlankWork(fl.No);

            //执行发送, 按照职务找
            SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(fl.No, workID, null, 6499, null);

            #region 分析预期
            if (objs.VarAcceptersID != "zhanghaicheng")
            {
                throw new Exception("@按照职务找错误, 应当是zhanghaicheng现在是" + objs.VarAcceptersID);
            }
            #endregion

            //执行撤销发送,按照岗位找.
            BP.WF.Dev2Interface.Flow_DoUnSend(fl.No, workID);
            objs = BP.WF.Dev2Interface.Node_SendWork(fl.No, workID, null, 6402, null);

            #region 分析预期
            if (objs.VarAcceptersID != "zhanghaicheng")
            {
                throw new Exception("@按照职务找错误, 应当是zhanghaicheng现在是" + objs.VarAcceptersID);
            }
            #endregion

            //执行撤销发送,找部门所有人员.
            BP.WF.Dev2Interface.Flow_DoUnSend(fl.No, workID);
            objs = BP.WF.Dev2Interface.Node_SendWork(fl.No, workID, null, 6403, null);

            #region 分析预期
            if (objs.VarAcceptersID != "zhoupeng")
            {
                throw new Exception("@按照职务找错误, 应当是zhoupeng现在是" + objs.VarAcceptersID);
            }
            #endregion
        }
        /// <summary>
        /// 发送
        /// </summary>
        public void Send()
        {
            Hashtable ht = new Hashtable();

            if (this.CB_IsCheck.Checked)
            {
                ht.Add("IsCheck", 1);
            }
            else
            {
                ht.Add("IsCheck", 0);
            }

            // call 子子流程,执行发送并获取发送后返回对象。
            SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork(this.FK_Flow, this.WorkID, ht, null, 0, this.TB_NextWorker.Text);

            //提示发送消息。
            this.Session["info"] = objs.ToMsgOfHtml();
            this.Response.Redirect("ShowMsg.aspx?ss" + BP.DA.DataType.CurrentDataTime, true);
        }
Exemple #24
0
        /// <summary>
        /// 执行发送.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Btn_Send_Click(object sender, EventArgs e)
        {
            //执行子子流程的发送.
            Hashtable ht = new Hashtable();

            if (this.CB_IsShiShi.Checked)
            {
                ht.Add("IsShiShi", 1);
            }
            else
            {
                ht.Add("IsShiShi", 0); // 参数决定流程的运动方向。
            }
            //执行发送, 此发送,普通节点到分流点发送,并且指定接受人。
            SendReturnObjs sendObjs = BP.WF.Dev2Interface.Node_SendWork(this.FK_Flow, this.WorkID, ht,
                                                                        null, 0, this.TB_FZR.Text);

            //提示发送消息。
            this.Session["info"] = sendObjs.ToMsgOfHtml();
            this.Response.Redirect("ShowMsg.aspx?ss" + BP.DA.DataType.CurrentDataTime, true);
        }
Exemple #25
0
        /// <summary>
        /// 测试案例说明:
        /// 1, .
        /// 2, .
        /// 3,.
        /// </summary>
        public override void Do()
        {
            //初始化变量.
            fk_flow = "023";
            userNo  = "zhanghaicheng";
            fl      = new Flow(fk_flow);
            BP.WF.Dev2Interface.Port_Login(userNo);

            //创建一个工作。
            this.workID = BP.WF.Dev2Interface.Node_CreateBlankWork(fk_flow, null, null, userNo, null);

            Hashtable ht = new Hashtable();

            ht.Add(BP.WF.WorkSysFieldAttr.SysSDTOfNode, "2020-12-01 08:00"); //下一个节点完成时间。
            ht.Add(BP.WF.WorkSysFieldAttr.SysSDTOfFlow, "2020-12-31 08:00"); //整体流程需要完成的时间。。
            objs = BP.WF.Dev2Interface.Node_SendWork(fk_flow, this.workID, ht, null, 0, null);

            #region 检查发送结果是否符合预期.
            //sql = "SELECT "+GenerWorkFlowAttr.SDTOfFlow+","+GenerWorkFlowAttr.SDTOfNode+" FROM WF_GenerWorkFlow WHERE WorkID="+this.workID;
            GenerWorkFlow gwf = new GenerWorkFlow(this.workID);
            if (gwf.SDTOfFlow != "2020-12-31 08:00")
            {
                throw new Exception("@没有写入流程应完成时间,现在的应完成时间是:" + gwf.SDTOfFlow);
            }

            if (gwf.SDTOfNode != "2020-12-01 08:00")
            {
                throw new Exception("@没有写入节点应该完成时间,现在的应完成时间是:" + gwf.SDTOfNode);
            }

            GenerWorkerLists gwls = new GenerWorkerLists(this.workID, 2302);
            foreach (GenerWorkerList gwl in gwls)
            {
                if (gwl.SDT != "2020-12-01 08:00")
                {
                    throw new Exception("@没有写入节点应该应该完成时间.");
                }
            }
            #endregion 检查发送结果是否符合预期.
        }
Exemple #26
0
        /// <summary>
        /// 说明 :此测试针对于演示环境中的 001 流程编写的单元测试代码。
        /// 涉及到了: 创建,发送,撤销,方向条件、退回等功能。
        /// </summary>
        public override void Do()
        {
            // guoxiangbin 登录.
            BP.WF.Dev2Interface.Port_Login("guoxiangbin");

            //创建空白工作, 发起开始节点.
            Int64 workid = BP.WF.Dev2Interface.Node_CreateBlankWork("011");

            //执行发送,发送到 “实施项目(调用多流程节点)”.
            SendReturnObjs objs = BP.WF.Dev2Interface.Node_SendWork("011", workid);

            //让实施人员 fuhui 登录.
            BP.WF.Dev2Interface.Port_Login("fuhui");

            // 让其发起子流程, 首先创建子流程.
            Int64 workidSubFlow = BP.WF.Dev2Interface.Node_CreateBlankWork("012");

            //设置父子流程关系.
            BP.WF.Dev2Interface.SetParentInfo("012", workidSubFlow, "011", workid, 1103, "guoxiangbin");

            //让 fuhui 向下发送.
            BP.WF.Dev2Interface.Node_SendWork("012", workidSubFlow, 0, null);
        }
Exemple #27
0
        /// <summary>
        /// 执行
        /// </summary>
        public override void Do()
        {
            string fk_flow = "075";
            Flow   fl      = new Flow(fk_flow);

            #region   zhoupeng 登录.
            BP.WF.Dev2Interface.Port_Login("zhoushengyu");
            //创建空白工作, 发起开始节点.
            Int64 workid = BP.WF.Dev2Interface.Node_CreateBlankWork(fk_flow);

            //加入 按URL ,表单里没有TurnTo字段.
            Hashtable ht = new Hashtable();
            ht.Add("ToNodeID", "7502");
            SendReturnObjs objs = null;

            //执行发送,并获取发送对象, 应该出来异常才对,因为传递这个参数会导致sql出错误。
            objs = BP.WF.Dev2Interface.Node_SendWork(fk_flow, workid, ht);

            if (objs.VarToNodeID != 7502)
            {
                throw new Exception("@应该转向7502 ");
            }

            //删除测试数据.
            BP.WF.Dev2Interface.Flow_DoDeleteFlowByReal(fl.No, objs.VarWorkID, false);

            //测试流程完成条件.
            workid = BP.WF.Dev2Interface.Node_CreateBlankWork(fk_flow);
            ht     = new Hashtable();
            ht.Add("ToNodeID", "");
            objs = BP.WF.Dev2Interface.Node_SendWork(fk_flow, workid, ht);
            if (objs.IsStopFlow == false)
            {
                throw new Exception("@流程应该结束,但是未结束。");
            }
            #endregion
        }
Exemple #28
0
        /// <summary>
        /// 执行
        /// </summary>
        public override void Do()
        {
            string fk_flow = "030";
            Flow   fl      = new Flow(fk_flow);

            #region   zhoupeng 登录.
            BP.WF.Dev2Interface.Port_Login("zhoupeng");
            //创建空白工作, 发起开始节点.
            Int64 workid = BP.WF.Dev2Interface.Node_CreateBlankWork(fk_flow, null, null, WebUser.No, null, 0, null);

            //加入 按SQL ,表单里没有TurnTo字段.
            Hashtable ht = new Hashtable();
            ht.Add("MyPara", "qqqq");
            SendReturnObjs objs = null;
            try
            {
                //执行发送,并获取发送对象, 应该出来异常才对,因为传递这个参数会导致sql出错误。
                objs = BP.WF.Dev2Interface.Node_SendWork(fk_flow, workid, ht);
            }
            catch (Exception ex)
            {
                Log.DefaultLogWriteLineInfo("已经检测到SQL的变量已经被正确的替换了,导致此语句执行失败:" + ex.Message);
            }
            ht.Clear();
            ht.Add("MyPara", "1");
            //执行发送,并获取发送对象, 应该出来异常才对,因为传递这个参数会导致sql出错误。
            objs = BP.WF.Dev2Interface.Node_SendWork(fk_flow, workid, ht);
            if (objs.VarToNodeID != 3002)
            {
                throw new Exception("@应该转向B。");
            }

            //删除测试数据.
            BP.WF.Dev2Interface.Flow_DoDeleteFlowByReal(fl.No, objs.VarWorkID, false);
            #endregion
        }
Exemple #29
0
        /// <summary>
        /// 业务流程操作
        /// </summary>
        /// <returns></returns>
        private string WorkFlowManage()
        {
            string doWhat          = getUTF8ToString("doWhat");
            string flowIdAndWorkId = getUTF8ToString("flowIdAndWorkId");

            string[] array = flowIdAndWorkId.Split('^');
            string   Msg   = "";

            //执行发送
            if (doWhat == "send")
            {
                foreach (string item in array)
                {
                    string[]       item_c  = item.Split(',');
                    Int64          workid  = Int64.Parse(item_c[1].ToString());
                    SendReturnObjs objSend = null;
                    objSend = BP.WF.Dev2Interface.Node_SendWork(item_c[0].ToString(), workid);
                    Msg    += objSend.ToMsgOfHtml();
                    Msg    += "<hr>";
                }
            }
            //执行删除
            if (doWhat == "delete")
            {
                foreach (string item in array)
                {
                    string[] item_c = item.Split(',');
                    Int64    workid = Int64.Parse(item_c[1].ToString());
                    string   mes    = BP.WF.Dev2Interface.Flow_DoDeleteFlowByFlag(item_c[0].ToString(), workid, "批量删除", true);
                    Msg += mes;
                    Msg += "<hr>";
                }
            }

            return(Msg);
        }
Exemple #30
0
        /// <summary>
        /// 测试案例说明:
        /// 1, .
        /// 2, .
        /// 3,.
        /// </summary>
        public override void Do()
        {
            //初始化变量.
            fk_flow = "023";
            userNo  = "zhanghaicheng";
            fl      = new Flow(fk_flow);
            BP.WF.Dev2Interface.Port_Login(userNo);

            //创建一个工作。
            this.workID = BP.WF.Dev2Interface.Node_CreateBlankWork(fk_flow, null, null, userNo, null);
            objs        = BP.WF.Dev2Interface.Node_SendWork(fk_flow, this.workID, null, null, 0, null);


            #region 检查发送结果是否符合预期.
            string msgText = objs.ToMsgOfText();
            if (msgText.Contains("<"))
            {
                throw new Exception("text信息, 具有html标记.");
            }



            #endregion 检查发送结果是否符合预期.
        }