/// <summary>
        /// 转向此节点的集合的Nodes
        /// </summary>
        /// <param name="nodeID">此节点的ID</param>
        /// <returns>转向此节点的集合的Nodes (FromNodes)</returns>
        public Nodes GetHisFromNodes(int nodeID)
        {
            QueryObject qo = new QueryObject(this);

            qo.AddWhere(DirectionAttr.ToNode, nodeID);
            qo.DoQuery();
            Nodes ens = new Nodes();

            foreach (Direction en in this)
            {
                ens.AddEntity(new Node(en.Node));
            }
            return(ens);
        }
Beispiel #2
0
        /// <summary>
        /// 转向此节点的集合的Nodes
        /// </summary>
        /// <param name="nodeID">此节点的ID</param>
        /// <returns>转向此节点的集合的Nodes (FromNodes)</returns>
        public Nodes GetHisNodes(int nodeID)
        {
            QueryObject qo = new QueryObject(this);

            qo.AddWhere(NodeReturnAttr.FK_Node, nodeID);
            qo.DoQuery();

            Nodes ens = new Nodes();

            foreach (NodeReturn en in this)
            {
                ens.AddEntity(new Node(en.ReturnTo));
            }
            return(ens);
        }
Beispiel #3
0
        /// <summary>
        /// 可退回的节点
        /// </summary>
        /// <param name="NodeNo">退回到编号</param>
        /// <returns>节点s</returns>
        public Nodes GetHisNodes(string NodeNo)
        {
            QueryObject qo = new QueryObject(this);

            qo.AddWhere(NodeReturnAttr.ReturnTo, NodeNo);
            qo.DoQuery();

            Nodes ens = new Nodes();

            foreach (NodeReturn en in this)
            {
                ens.AddEntity(new Node(en.FK_Node));
            }
            return(ens);
        }
Beispiel #4
0
        /// <summary>
        /// 工作部门对应的节点
        /// </summary>
        /// <param name="stationNo">工作部门编号</param>
        /// <returns>节点s</returns>
        public Nodes GetHisNodes(string stationNo)
        {
            QueryObject qo = new QueryObject(this);

            qo.AddWhere(NodeDeptAttr.FK_Dept, stationNo);
            qo.DoQuery();

            Nodes ens = new Nodes();

            foreach (NodeDept en in this)
            {
                ens.AddEntity(new Node(en.FK_Node));
            }
            return(ens);
        }
Beispiel #5
0
        /// <summary>
        /// 转向此节点的集合的Nodes
        /// </summary>
        /// <param name="nodeID">此节点的ID</param>
        /// <returns>转向此节点的集合的Nodes (FromNodes)</returns>
        public Nodes GetHisNodes(int nodeID)
        {
            QueryObject qo = new QueryObject(this);

            qo.AddWhere(FrmNodeAttr.FK_Frm, nodeID);
            qo.DoQuery();

            Nodes ens = new Nodes();

            foreach (FrmNode en in this)
            {
                ens.AddEntity(new Node(en.FK_Node));
            }
            return(ens);
        }
Beispiel #6
0
        /// <summary>
        /// 到人员对应的节点
        /// </summary>
        /// <param name="EmpNo">到人员编号</param>
        /// <returns>节点s</returns>
        public Nodes GetHisNodes(string EmpNo)
        {
            QueryObject qo = new QueryObject(this);

            qo.AddWhere(CCEmpAttr.FK_Emp, EmpNo);
            qo.DoQuery();

            Nodes ens = new Nodes();

            foreach (CCEmp en in this)
            {
                ens.AddEntity(new Node(en.FK_Node));
            }
            return(ens);
        }
Beispiel #7
0
        /// <summary>
        /// 流程抄送节点
        /// </summary>
        /// <param name="NodeNo">工作节点编号</param>
        /// <returns>节点s</returns>
        public Nodes GetHisNodes(string NodeNo)
        {
            QueryObject qo = new QueryObject(this);

            qo.AddWhere(FlowNodeAttr.FK_Node, NodeNo);
            qo.DoQuery();

            Nodes ens = new Nodes();

            foreach (FlowNode en in this)
            {
                ens.AddEntity(new Node(en.FK_Flow));
            }
            return(ens);
        }
Beispiel #8
0
        /// <summary>
        /// 人员对应的流程
        /// </summary>
        /// <param name="stationNo">人员编号</param>
        /// <returns>流程s</returns>
        public Nodes GetHisNodes(string stationNo)
        {
            QueryObject qo = new QueryObject(this);

            qo.AddWhere(FlowEmpAttr.FK_Emp, stationNo);
            qo.DoQuery();

            Nodes ens = new Nodes();

            foreach (FlowEmp en in this)
            {
                ens.AddEntity(new Node(en.FK_Flow));
            }
            return(ens);
        }
Beispiel #9
0
        /// <summary>
        /// 可退回的节点s
        /// </summary>
        /// <param name="sts">可退回的节点</param>
        /// <returns></returns>
        public Nodes GetHisNodes(Nodes sts)
        {
            Nodes nds = new Nodes();
            Nodes tmp = new Nodes();

            foreach (Node st in sts)
            {
                tmp = this.GetHisNodes(st.No);
                foreach (Node nd in tmp)
                {
                    if (nds.Contains(nd))
                    {
                        continue;
                    }
                    nds.AddEntity(nd);
                }
            }
            return(nds);
        }
Beispiel #10
0
        public void BindCond()
        {
            string msg  = "";
            string note = "";

            Cond cond = new Cond();

            cond.MyPK = this.MyPK;
            if (cond.RetrieveFromDBSources() == 0)
            {
                if (this.FK_Attr != null)
                {
                    cond.FK_Attr = this.FK_Attr;
                }
                if (this.FK_MainNode != 0)
                {
                    cond.NodeID = this.FK_MainNode;
                }
                if (this.FK_Node != 0)
                {
                    cond.FK_Node = this.FK_Node;
                }
                if (this.FK_Flow != null)
                {
                    cond.FK_Flow = this.FK_Flow;
                }
            }
            //this.AddTable("border=0 widht='500px'");
            this.AddTable("class='Table' cellpadding='2' cellspacing='2' style='width:100%;'");
            this.AddTR();
            this.AddTD("class='GroupTitle' style='width:80px'", "项目");
            this.AddTD("class='GroupTitle' style='width:200px'", "采集");
            this.AddTD("class='GroupTitle'", "描述");
            this.AddTREnd();

            this.AddTR();
            this.AddTD("节点");
            Nodes nds  = new Nodes(cond.FK_Flow);
            Nodes ndsN = new Nodes();

            foreach (BP.WF.Node mynd in nds)
            {
                ndsN.AddEntity(mynd);
            }
            DDL ddl = new DDL();

            ddl.ID = "DDL_Node";
            ddl.BindEntities(ndsN, "NodeID", "Name");
            ddl.SetSelectItem(cond.FK_Node);
            ddl.AutoPostBack          = true;
            ddl.SelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged);
            this.AddTD(ddl);
            this.AddTD("节点");
            this.AddTREnd();

            // 属性/字段
            MapAttrs attrs = new MapAttrs();

            attrs.Retrieve(MapAttrAttr.FK_MapData, "ND" + ddl.SelectedItemStringVal);

            MapAttrs attrNs = new MapAttrs();

            foreach (MapAttr attr in attrs)
            {
                if (attr.IsBigDoc)
                {
                    continue;
                }

                switch (attr.KeyOfEn)
                {
                case "Title":
                //case "RDT":
                //case "CDT":
                case "FK_Emp":
                case "MyNum":
                case "FK_NY":
                case WorkAttr.Emps:
                case WorkAttr.OID:
                case StartWorkAttr.Rec:
                case StartWorkAttr.FID:
                    continue;

                default:
                    break;
                }
                attrNs.AddEntity(attr);
            }
            ddl    = new DDL();
            ddl.ID = "DDL_Attr";
            if (attrNs.Count == 0)
            {
                BP.WF.Node nd = new BP.WF.Node(cond.FK_Node);
                nd.RepareMap();
                this.AddTR();
                this.AddTD("");
                this.AddTD("colspan=2", "节点没有找到合适的条件");
                this.AddTREnd();
                this.AddTableEnd();
                return;
            }
            else
            {
                ddl.BindEntities(attrNs, MapAttrAttr.MyPK, MapAttrAttr.Name);
                ddl.AutoPostBack          = true;
                ddl.SelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged);
                ddl.SetSelectItem(cond.FK_Attr);
            }

            this.AddTR();
            this.AddTD("属性/字段");
            this.AddTD(ddl);
            this.AddTD("");
            this.AddTREnd();

            MapAttr attrS = new MapAttr(this.DDL_Attr.SelectedItemStringVal);

            this.AddTR();
            this.AddTD("操作符");
            ddl    = new DDL();
            ddl.ID = "DDL_Oper";
            switch (attrS.LGType)
            {
            case BP.En.FieldTypeS.Enum:
            case BP.En.FieldTypeS.FK:
                ddl.Items.Add(new ListItem("=", "="));
                ddl.Items.Add(new ListItem("<>", "<>"));
                break;

            case BP.En.FieldTypeS.Normal:
                switch (attrS.MyDataType)
                {
                case BP.DA.DataType.AppString:
                case BP.DA.DataType.AppDate:
                case BP.DA.DataType.AppDateTime:
                    ddl.Items.Add(new ListItem("=", "="));
                    ddl.Items.Add(new ListItem("LIKE", "LIKE"));
                    ddl.Items.Add(new ListItem("<>", "<>"));
                    break;

                case BP.DA.DataType.AppBoolean:
                    ddl.Items.Add(new ListItem("=", "="));
                    break;

                default:
                    ddl.Items.Add(new ListItem("=", "="));
                    ddl.Items.Add(new ListItem(">", ">"));
                    ddl.Items.Add(new ListItem(">=", ">="));
                    ddl.Items.Add(new ListItem("<", "<"));
                    ddl.Items.Add(new ListItem("<=", "<="));
                    ddl.Items.Add(new ListItem("<>", "<>"));
                    break;
                }
                break;

            default:
                break;
            }

            if (cond != null)
            {
                try
                {
                    ddl.SetSelectItem(cond.OperatorValueInt);
                }
                catch
                {
                }
            }
            this.AddTD(ddl);
            this.AddTD("");
            this.AddTREnd();
            switch (attrS.LGType)
            {
            case BP.En.FieldTypeS.Enum:
                this.AddTR();
                this.AddTD("值");
                ddl    = new DDL();
                ddl.ID = "DDL_Val";
                ddl.BindSysEnum(attrS.UIBindKey);
                if (cond != null)
                {
                    try
                    {
                        ddl.SetSelectItem(cond.OperatorValueInt);
                    }
                    catch
                    {
                    }
                }
                this.AddTD(ddl);
                this.AddTD("");
                this.AddTREnd();
                break;

            case BP.En.FieldTypeS.FK:
                this.AddTR();
                this.AddTD("值");

                ddl    = new DDL();
                ddl.ID = "DDL_Val";
                ddl.BindEntities(attrS.HisEntitiesNoName);
                if (cond != null)
                {
                    try
                    {
                        ddl.SetSelectItem(cond.OperatorValueStr);
                    }
                    catch
                    {
                    }
                }
                this.AddTD(ddl);
                this.AddTD("");
                this.AddTREnd();
                break;

            default:
                if (attrS.MyDataType == BP.DA.DataType.AppBoolean)
                {
                    this.AddTR();
                    this.AddTD("值");
                    ddl    = new DDL();
                    ddl.ID = "DDL_Val";
                    ddl.BindAppYesOrNo(0);
                    if (cond != null)
                    {
                        try
                        {
                            ddl.SetSelectItem(cond.OperatorValueInt);
                        }
                        catch
                        {
                        }
                    }
                    this.AddTD(ddl);
                    this.AddTD();
                    this.AddTREnd();
                }
                else
                {
                    this.AddTR();
                    this.AddTD("值");
                    TB tb = new TB();
                    tb.ID = "TB_Val";
                    if (cond != null)
                    {
                        tb.Text = cond.OperatorValueStr;
                    }
                    this.AddTD(tb);
                    this.AddTD();
                    this.AddTREnd();
                }
                break;
            }


            Conds       conds = new Conds();
            QueryObject qo    = new QueryObject(conds);

            qo.AddWhere(CondAttr.NodeID, this.FK_MainNode);
            qo.addAnd();
            qo.AddWhere(CondAttr.DataFrom, (int)ConnDataFrom.Form);
            qo.addAnd();
            qo.AddWhere(CondAttr.CondType, (int)this.HisCondType);

            if (this.ToNodeID != 0)
            {
                qo.addAnd();
                qo.AddWhere(CondAttr.ToNodeID, this.ToNodeID);
            }
            int num = qo.DoQuery();

            this.AddTableEnd();
            this.AddBR();
            this.AddSpace(1);

            var btn = new LinkBtn(false, "Btn_SaveAnd", "保存为And条件");

            btn.SetDataOption("iconCls", "'icon-save'");
            btn.Click += new EventHandler(btn_Save_Click);
            this.Add(btn);
            this.AddSpace(1);

            btn = new LinkBtn(false, "Btn_SaveOr", "保存为Or条件");
            btn.SetDataOption("iconCls", "'icon-save'");
            btn.Click += new EventHandler(btn_Save_Click);
            this.Add(btn);
            this.AddSpace(1);

            btn = new LinkBtn(false, NamesOfBtn.Delete, "删除");
            btn.Attributes["onclick"] = " return confirm('您确定要删除吗?');";
            btn.Click += new EventHandler(btn_Save_Click);
            this.Add(btn);

            this.AddBR();
            this.AddBR();

            if (num == 0)
            {
                return;
            }

            #region 条件
            this.AddTable("class='Table' cellpadding='2' cellspacing='2' style='width:100%;'");
            this.AddTR();
            this.AddTDTitleGroup("序");
            this.AddTDTitleGroup("节点");
            this.AddTDTitleGroup("字段的英文名");
            this.AddTDTitleGroup("字段的中文名");
            this.AddTDTitleGroup("操作符");
            this.AddTDTitleGroup("值");
            this.AddTDTitleGroup("标签");
            this.AddTDTitleGroup("运算关系");
            this.AddTDTitleGroup("操作");
            this.AddTREnd();

            int i = 0;
            foreach (Cond mync in conds)
            {
                if (mync.HisDataFrom != ConnDataFrom.Form)
                {
                    continue;
                }

                i++;

                this.AddTR();
                this.AddTDIdx(i);
                //  this.AddTD(mync.HisDataFrom.ToString());
                this.AddTD(mync.FK_NodeT);
                this.AddTD(mync.AttrKey);
                this.AddTD(mync.AttrName);
                this.AddTDCenter(mync.FK_Operator);
                this.AddTD(mync.OperatorValueStr);
                this.AddTD(mync.OperatorValueT);

                if (mync.CondOrAnd == CondOrAnd.ByAnd)
                {
                    this.AddTD("AND");
                }
                else
                {
                    this.AddTD("OR");
                }

                //if (num > 1)
                //    this.AddTD(mync.HisConnJudgeWayT);
                this.AddTD("<a href='Cond.aspx?MyPK=" + mync.MyPK + "&CondType=" + (int)this.HisCondType + "&FK_Flow=" + this.FK_Flow + "&FK_Attr=" + mync.FK_Attr + "&FK_MainNode=" + mync.NodeID + "&OperatorValue=" + mync.OperatorValueStr + "&FK_Node=" + mync.FK_Node + "&DoType=Del&ToNodeID=" + mync.ToNodeID + "' class='easyui-linkbutton' data-options=\"iconCls:'icon-remove'\" onclick=\"return confirm('确定删除此条件吗?')\">删除</a>");
                this.AddTREnd();
            }
            this.AddTableEnd();
            this.AddBR();

            AddEasyUiPanelInfo("说明", "在上面的条件集合中ccflow仅仅支持要么是And,要么是OR的两种情形,高级的开发就需要事件来支持条件转向,或者采用其他的方式。");

            #endregion
        }
Beispiel #11
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //获得当前节点到达的节点.
            Nodes nds = new Nodes();

            if (this.ToNodes != null)
            {
                /*解决跳转问题.*/
                string[] mytoNodes = this.ToNodes.Split(',');
                foreach (string str in mytoNodes)
                {
                    if (string.IsNullOrEmpty(str) == true)
                    {
                        continue;
                    }
                    nds.AddEntity(new Node(int.Parse(str)));
                }
            }
            else
            {
                nds = BP.WF.Dev2Interface.WorkOpt_GetToNodes(this.FK_Flow, this.FK_Node, this.WorkID, this.FID);
            }

            //获得上次默认选择的节点. 2015-01-15.
            int lastSelectNodeID = BP.WF.Dev2Interface.WorkOpt_ToNodes_GetLasterSelectNodeID(this.FK_Flow, this.FK_Node);

            if (lastSelectNodeID == 0 && nds.Count != 0)
            {
                lastSelectNodeID = int.Parse(nds[0].PKVal.ToString());
            }

            //检查是否有异表单。
            bool isSubYBD = false; //异表单?

            foreach (Node mynd in nds)
            {
                BP.Web.Controls.RadioBtn rb = new BP.Web.Controls.RadioBtn();
                if (mynd.NodeID == 0)
                {
                    rb                       = new BP.Web.Controls.RadioBtn();
                    rb.GroupName             = "s";
                    rb.Text                  = "<b>可以分发启动的异表单节点</b>";
                    rb.ID                    = "RB_SameSheet";
                    rb.Attributes["onclick"] = "RBSameSheet(this);";
                    if (this.IsPostBack == false && lastSelectNodeID == 0)
                    {
                        rb.Checked = true;
                    }

                    // 增加选择项. add  2015-01-15.
                    if (this.IsPostBack == false && mynd.NodeID == lastSelectNodeID)
                    {
                        rb.Checked = true;
                    }

                    this.Pub1.Add(rb);
                    this.Pub1.AddBR();
                    isSubYBD = true;
                    continue;
                }

                //已有人员直接显示到人员选择器a标签上 秦15.2.5
                string    sql = "SELECT A.No,a.Name FROM Port_Emp A, WF_SelectAccper B WHERE A.No=B.FK_Emp AND B.FK_Node=" + mynd.NodeID + " AND B.WorkID=" + this.WorkID;
                DataTable dt  = BP.DA.DBAccess.RunSQLReturnTable(sql);

                string addSpan = "";
                if (dt.Rows.Count != 0)
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        if (i == 4)
                        {
                            addSpan += dt.Rows[i]["Name"].ToString() + "...";
                            break;
                        }
                        else
                        {
                            if (i == dt.Rows.Count - 1)
                            {
                                addSpan += dt.Rows[i]["Name"].ToString();
                            }
                            else
                            {
                                addSpan += dt.Rows[i]["Name"].ToString() + ",";
                            }
                        }
                    }
                    addSpan = "<span style='color:black;'>(" + addSpan + ")</span>";
                }
                if (isSubYBD == true)
                {
                    /*如果是异表单.*/
                    CheckBox cb = new CheckBox();
                    cb.ID   = "CB_" + mynd.NodeID;
                    cb.Text = mynd.Name;
                    this.Pub1.Add("&nbsp;&nbsp;&nbsp;&nbsp;");
                    this.Pub1.Add(cb);


                    if (this.IsPostBack == false && mynd.NodeID == lastSelectNodeID)
                    {
                        cb.Checked = true;
                    }

                    if (mynd.HisDeliveryWay == DeliveryWay.BySelected)
                    {
                        /*由上一步发送人员选择.*/
                        this.Pub1.Add(" - <a id=\"acc_link_" + mynd.NodeID + "\" href=\"javascript:WinShowModalDialog_Accepter('Accepter.aspx?FK_Flow=" + this.FK_Flow + "&FK_Node=" + this.FK_Node + "&ToNode=" + mynd.NodeID + "&WorkID=" + this.WorkID + "&FID=" + this.FID + "&type=1')\" >选择接受人员" + addSpan + "</a>");
                    }
                    this.Pub1.AddBR();
                    continue;
                }
                else
                {
                    rb                       = new BP.Web.Controls.RadioBtn();
                    rb.GroupName             = "s";
                    rb.Text                  = mynd.Name;
                    rb.ID                    = "RB_" + mynd.NodeID;
                    rb.Attributes["onclick"] = "SetUnEable(this);";
                    this.Pub1.Add(rb);
                    if (this.IsPostBack == false && mynd.NodeID == lastSelectNodeID)
                    {
                        rb.Checked = true;
                    }

                    if (mynd.HisDeliveryWay == DeliveryWay.BySelected)
                    {
                        /*由上一步发送人员选择.*/
                        this.Pub1.Add(" - <a id=\"acc_link_" + mynd.NodeID + "\" href=\"javascript:WinShowModalDialog_Accepter('Accepter.aspx?FK_Flow=" + this.FK_Flow + "&FK_Node=" + this.FK_Node + "&ToNode=" + mynd.NodeID + "&WorkID=" + this.WorkID + "&FID=" + this.FID + "&type=1')\" >选择接受人员" + addSpan + "</a>");
                    }
                    this.Pub1.AddBR();
                }
            }

            this.Pub1.AddHR();
            Button btn = new Button();

            btn.ID = "To";
            BP.WF.Template.BtnLab btnlab = new BtnLab(this.FK_Node);
            btn.Text = "  " + btnlab.SendLab + "  ";
            this.Pub1.Add(btn);
            btn.Click += new EventHandler(btn_Click);

            btn      = new Button();
            btn.ID   = "Btn_Cancel";
            btn.Text = "取消/返回";
            this.Pub1.Add(btn);
            btn.Click += new EventHandler(btn_Click);
        }
Beispiel #12
0
        void btn_Click(object sender, EventArgs e)
        {
            Button btn = (Button)sender;

            if (btn.ID == "Btn_Cancel")
            {
                string url = "../MyFlow.aspx?FK_Flow=" + this.FK_Flow + "&FK_Node=" + this.FK_Node + "&WorkID=" + this.WorkID + "&FID=" + this.FID;
                this.Response.Redirect(url, true);
                return;
            }

            #region 计算出来到达的节点.


            //获得当前节点到达的节点.
            Nodes nds = new Nodes();
            if (this.ToNodes != null)
            {
                /*解决跳转问题.*/
                string[] mytoNodes = this.ToNodes.Split(',');
                foreach (string str in mytoNodes)
                {
                    if (string.IsNullOrEmpty(str) == true)
                    {
                        continue;
                    }
                    nds.AddEntity(new Node(int.Parse(str)));
                }
            }
            else
            {
                nds = BP.WF.Dev2Interface.WorkOpt_GetToNodes(this.FK_Flow, this.FK_Node, this.WorkID, this.FID);
            }


            //  首先到非异表单去找.
            string toNodes = "";
            foreach (Node mynd in nds)
            {
                if (mynd.HisRunModel == RunModel.SubThread &&
                    mynd.HisSubThreadType == SubThreadType.UnSameSheet)
                {
                    continue; //如果是子线程节点.
                }
                if (mynd.NodeID == 0)
                {
                    continue;
                }

                BP.Web.Controls.RadioBtn rb = this.Pub1.GetRadioBtnByID("RB_" + mynd.NodeID);
                if (rb.Checked == false)
                {
                    continue;
                }

                toNodes = mynd.NodeID.ToString();
                break;
            }

            if (toNodes == "")
            {
                // 如果在非异表单没有找到,就到异表单集合去找。 检查是否具有异表单的子线程.
                bool isHave = false;
                foreach (Node mynd in nds)
                {
                    if (mynd.NodeID == 0)
                    {
                        isHave = true;
                    }
                }

                if (isHave)
                {
                    /*增加异表单的子线程*/
                    foreach (Node mynd in nds)
                    {
                        if (mynd.HisSubThreadType != SubThreadType.UnSameSheet)
                        {
                            continue;
                        }

                        CheckBox cb = this.Pub1.GetCBByID("CB_" + mynd.NodeID);
                        if (cb == null)
                        {
                            continue;
                        }

                        if (cb.Checked == true)
                        {
                            toNodes += "," + mynd.NodeID;
                        }
                    }
                }
            }
            #endregion 计算出来选择的到达节点.

            if (toNodes == "")
            {
                this.Pub1.AddFieldSetRed("发送出现错误", "您没有选择到达的节点。");
                return;
            }

            // 执行发送.
            string msg = "";
            Node   nd  = new Node(this.FK_Node);
            Work   wk  = nd.HisWork;
            wk.OID = this.WorkID;
            wk.Retrieve();

            try
            {
                string toNodeStr = int.Parse(FK_Flow) + "01";
                //如果为开始节点
                if (toNodeStr == toNodes)
                {
                    //把参数更新到数据库里面.
                    GenerWorkFlow gwf = new GenerWorkFlow();
                    gwf.WorkID = this.WorkID;
                    gwf.RetrieveFromDBSources();
                    gwf.Paras_ToNodes = toNodes;
                    gwf.Save();

                    WorkNode firstwn = new WorkNode(wk, nd);

                    Node toNode = new Node(toNodeStr);
                    msg = firstwn.NodeSend(toNode, gwf.Starter).ToMsgOfHtml();
                }
                else
                {
                    msg = BP.WF.Dev2Interface.WorkOpt_SendToNodes(this.FK_Flow,
                                                                  this.FK_Node, this.WorkID, this.FID, toNodes).ToMsgOfHtml();
                }
            }
            catch (Exception ex)
            {
                this.Pub1.AddFieldSetRed("发送出现错误", ex.Message);
                return;
            }

            #region 处理通用的发送成功后的业务逻辑方法,此方法可能会抛出异常.
            try
            {
                //处理通用的发送成功后的业务逻辑方法,此方法可能会抛出异常.
                Glo.DealBuinessAfterSendWork(this.FK_Flow, this.WorkID, this.DoFunc, WorkIDs, this.CFlowNo, 0, null);
            }
            catch (Exception ex)
            {
                this.ToMsg(msg, ex.Message);
                return;
            }
            #endregion 处理通用的发送成功后的业务逻辑方法,此方法可能会抛出异常.


            /*处理转向问题.*/
            switch (nd.HisTurnToDeal)
            {
            case TurnToDeal.SpecUrl:
                string myurl = nd.TurnToDealDoc.Clone().ToString();
                if (myurl.Contains("&") == false)
                {
                    myurl += "?1=1";
                }
                myurl  = BP.WF.Glo.DealExp(myurl, wk, null);
                myurl += "&FromFlow=" + this.FK_Flow + "&FromNode=" + this.FK_Node + "&PWorkID=" + this.WorkID + "&UserNo=" + WebUser.No + "&SID=" + WebUser.SID;
                this.Response.Redirect(myurl, true);
                return;

            case TurnToDeal.TurnToByCond:
                TurnTos tts = new TurnTos(this.FK_Flow);
                if (tts.Count == 0)
                {
                    throw new Exception("@您没有设置节点完成后的转向条件。");
                }
                foreach (TurnTo tt in tts)
                {
                    tt.HisWork = wk;
                    if (tt.IsPassed == true)
                    {
                        string url = tt.TurnToURL.Clone().ToString();
                        if (url.Contains("&") == false)
                        {
                            url += "?1=1";
                        }
                        url  = BP.WF.Glo.DealExp(url, wk, null);
                        url += "&PFlowNo=" + this.FK_Flow + "&FromNode=" + this.FK_Node + "&PWorkID=" + this.WorkID + "&UserNo=" + WebUser.No + "&SID=" + WebUser.SID;
                        this.Response.Redirect(url, true);
                        return;
                    }
                }
#warning 为上海修改了如果找不到路径就让它按系统的信息提示。
                this.ToMsg(msg, "info");
                //throw new Exception("您定义的转向条件不成立,没有出口。");
                break;

            default:
                this.ToMsg(msg, "info");
                break;
            }
            return;
        }
Beispiel #13
0
        public void MyWorks()
        {
            Flows fls = new Flows();

            fls.RetrieveAll();

            Nodes nds = new Nodes();

            nds.RetrieveAll();

            this.AddTable();
            this.AddTR();
            this.AddTDTitle("IDX");
            this.AddTDTitle("流程");
            this.AddTDTitle("节点");
            this.AddTDTitle("查询");
            this.AddTREnd();

            int idx = 0;

            foreach (Flow fl in fls)
            {
                bool  isHave = false;
                Nodes mynds  = new Nodes();
                foreach (BP.WF.Node nd in nds)
                {
                    if (nd.FK_Flow != fl.No)
                    {
                        continue;
                    }

                    //if (nd.NodeStations.Contains(WebUser.HisStations))
                    //{
                    //    mynds.AddEntity(nd);
                    //}
                    if (nd.NodeEmps.Contains(WebUser.No))
                    {
                        mynds.AddEntity(nd);
                    }
                }

                if (mynds.Count == 0)
                {
                    continue;
                }


                bool isFirst = true;
                foreach (BP.WF.Node mynd in mynds)
                {
                    if (isFirst)
                    {
                        this.AddTRSum();
                    }
                    else
                    {
                        this.AddTR();
                    }

                    this.AddTDIdx(idx);
                    if (isFirst)
                    {
                        this.AddTD(mynd.FlowName);
                    }
                    else
                    {
                        this.AddTD();
                    }

                    this.AddTD(mynd.Name);

                    this.AddTD("<a href=\"javascript:WinOpen('FlowSearchSmallSingle.aspx?FK_Node=" + mynd.NodeID + "');\">工作查询</a>");
                    this.AddTREnd();



                    idx++;
                    isFirst = false;
                }
            }
            this.AddTableEnd();
        }
Beispiel #14
0
        public void BindCond()
        {
            string msg  = "";
            string note = "";

            BP.WF.Cond cond = new Cond();
            cond.MyPK = this.MyPK;
            if (cond.RetrieveFromDBSources() == 0)
            {
                if (this.FK_Attr != null)
                {
                    cond.FK_Attr = this.FK_Attr;
                }
                if (this.FK_MainNode != 0)
                {
                    cond.NodeID = this.FK_MainNode;
                }
                if (this.FK_Node != 0)
                {
                    cond.FK_Node = this.FK_Node;
                }
                if (this.FK_Flow != null)
                {
                    cond.FK_Flow = this.FK_Flow;
                }
            }
            this.AddTable("border=0 widht='500px'");
            //this.AddCaptionLeft("");
            this.AddTR();
            this.AddTDTitle("项目");
            this.AddTDTitle("采集");
            this.AddTDTitle("描述");
            this.AddTREnd();

            this.AddTR();
            this.AddTD("节点");
            Nodes nds  = new Nodes(cond.FK_Flow);
            Nodes ndsN = new Nodes();

            foreach (BP.WF.Node mynd in nds)
            {
                ndsN.AddEntity(mynd);
            }
            DDL ddl = new DDL();

            ddl.ID = "DDL_Node";
            ddl.BindEntities(ndsN, "NodeID", "Name");
            ddl.SetSelectItem(cond.FK_Node);
            ddl.AutoPostBack          = true;
            ddl.SelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged);
            this.AddTD(ddl);
            this.AddTD("节点");
            this.AddTREnd();

            // 属性/字段
            MapAttrs attrs = new MapAttrs();

            attrs.Retrieve(MapAttrAttr.FK_MapData, "ND" + ddl.SelectedItemStringVal);

            MapAttrs attrNs = new MapAttrs();

            foreach (MapAttr attr in attrs)
            {
                if (attr.IsBigDoc)
                {
                    continue;
                }

                switch (attr.KeyOfEn)
                {
                case "Title":
                //case "RDT":
                //case "CDT":
                case "FK_Emp":
                case "MyNum":
                case "FK_NY":
                case WorkAttr.Emps:
                case WorkAttr.OID:
                case StartWorkAttr.Rec:
                case StartWorkAttr.FID:
                    continue;

                default:
                    break;
                }
                attrNs.AddEntity(attr);
            }
            ddl    = new DDL();
            ddl.ID = "DDL_Attr";
            if (attrNs.Count == 0)
            {
                BP.WF.Node nd = new BP.WF.Node(cond.FK_Node);
                nd.RepareMap();
                this.AddTR();
                this.AddTD("");
                this.AddTD("colspan=2", "节点没有找到合适的条件");
                this.AddTREnd();
                this.AddTableEnd();
                return;
            }
            else
            {
                ddl.BindEntities(attrNs, MapAttrAttr.MyPK, MapAttrAttr.Name);
                ddl.AutoPostBack          = true;
                ddl.SelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged);
                ddl.SetSelectItem(cond.FK_Attr);
            }

            this.AddTR();
            this.AddTD("属性/字段");
            this.AddTD(ddl);
            this.AddTD("");
            this.AddTREnd();

            MapAttr attrS = new MapAttr(this.DDL_Attr.SelectedItemStringVal);

            this.AddTR();
            this.AddTD("操作符");
            ddl    = new DDL();
            ddl.ID = "DDL_Oper";
            switch (attrS.LGType)
            {
            case BP.En.FieldTypeS.Enum:
            case BP.En.FieldTypeS.FK:
                ddl.Items.Add(new ListItem("=", "="));
                ddl.Items.Add(new ListItem("<>", "<>"));
                break;

            case BP.En.FieldTypeS.Normal:
                switch (attrS.MyDataType)
                {
                case BP.DA.DataType.AppString:
                case BP.DA.DataType.AppDate:
                case BP.DA.DataType.AppDateTime:
                    ddl.Items.Add(new ListItem("=", "="));
                    ddl.Items.Add(new ListItem("LIKE", "LIKE"));
                    ddl.Items.Add(new ListItem("<>", "<>"));
                    break;

                case BP.DA.DataType.AppBoolean:
                    ddl.Items.Add(new ListItem("=", "="));
                    break;

                default:
                    ddl.Items.Add(new ListItem("=", "="));
                    ddl.Items.Add(new ListItem(">", ">"));
                    ddl.Items.Add(new ListItem(">=", ">="));
                    ddl.Items.Add(new ListItem("<", "<"));
                    ddl.Items.Add(new ListItem("<=", "<="));
                    ddl.Items.Add(new ListItem("<>", "<>"));
                    break;
                }
                break;

            default:
                break;
            }

            if (cond != null)
            {
                try
                {
                    ddl.SetSelectItem(cond.OperatorValueInt);
                }
                catch
                {
                }
            }
            this.AddTD(ddl);
            this.AddTD("");
            this.AddTREnd();
            switch (attrS.LGType)
            {
            case BP.En.FieldTypeS.Enum:
                this.AddTR();
                this.AddTD("值");
                ddl    = new DDL();
                ddl.ID = "DDL_Val";
                ddl.BindSysEnum(attrS.UIBindKey);
                if (cond != null)
                {
                    try
                    {
                        ddl.SetSelectItem(cond.OperatorValueInt);
                    }
                    catch
                    {
                    }
                }
                this.AddTD(ddl);
                this.AddTD("");
                this.AddTREnd();
                break;

            case BP.En.FieldTypeS.FK:
                this.AddTR();
                this.AddTD("值");

                ddl    = new DDL();
                ddl.ID = "DDL_Val";
                ddl.BindEntities(attrS.HisEntitiesNoName);
                if (cond != null)
                {
                    try
                    {
                        ddl.SetSelectItem(cond.OperatorValueStr);
                    }
                    catch
                    {
                    }
                }
                this.AddTD(ddl);
                this.AddTD("");
                this.AddTREnd();
                break;

            default:
                if (attrS.MyDataType == BP.DA.DataType.AppBoolean)
                {
                    this.AddTR();
                    this.AddTD("值");
                    ddl    = new DDL();
                    ddl.ID = "DDL_Val";
                    ddl.BindAppYesOrNo(0);
                    if (cond != null)
                    {
                        try
                        {
                            ddl.SetSelectItem(cond.OperatorValueInt);
                        }
                        catch
                        {
                        }
                    }
                    this.AddTD(ddl);
                    this.AddTD();
                    this.AddTREnd();
                }
                else
                {
                    this.AddTR();
                    this.AddTD("值");
                    TB tb = new TB();
                    tb.ID = "TB_Val";
                    if (cond != null)
                    {
                        tb.Text = cond.OperatorValueStr;
                    }
                    this.AddTD(tb);
                    this.AddTD();
                    this.AddTREnd();
                }
                break;
            }


            Conds       conds = new Conds();
            QueryObject qo    = new QueryObject(conds);

            qo.AddWhere(CondAttr.NodeID, this.FK_MainNode);
            qo.addAnd();
            qo.AddWhere(CondAttr.DataFrom, (int)ConnDataFrom.Form);
            qo.addAnd();
            qo.AddWhere(CondAttr.CondType, (int)this.HisCondType);

            if (this.ToNodeID != 0)
            {
                qo.addAnd();
                qo.AddWhere(CondAttr.ToNodeID, this.ToNodeID);
            }
            int num = qo.DoQuery();


            this.AddTRSum();
            this.Add("<TD class=TD colspan=3 align=center>");
            Button btn = new Button();

            btn.ID       = "Btn_Save";
            btn.CssClass = "Btn";
            btn.Text     = " Save ";

            btn.Click += new EventHandler(btn_Save_Click);
            this.Add(btn);

            btn          = new Button();
            btn.ID       = "Btn_Del";
            btn.CssClass = "Btn";
            btn.Text     = "Clear";
            btn.Attributes["onclick"] = " return confirm('您确定要删除吗?');";
            btn.Click += new EventHandler(btn_Save_Click);

            this.Add(btn);

            this.Add("</TD>");
            this.AddTREnd();

            this.AddTableEnd();

            if (num == 0)
            {
                return;
            }


            #region 条件
            this.AddTable("border=0 widht='500px'");
            this.AddCaptionLeft("说明:同时满足如下条件转向成立,只能删除不能编辑.");
            this.AddTR();
            this.AddTDTitle("IDX");
            this.AddTDTitle("节点");
            this.AddTDTitle("字段的英文名");
            this.AddTDTitle("字段的中文名");
            this.AddTDTitle("操作符");
            this.AddTDTitle("值");
            this.AddTDTitle("标签");
            this.AddTDTitle("操作");
            this.AddTREnd();

            int i = 0;
            foreach (Cond mync in conds)
            {
                if (mync.HisDataFrom != ConnDataFrom.Form)
                {
                    continue;
                }

                i++;

                this.AddTR();
                this.AddTDIdx(i);
                //  this.AddTD(mync.HisDataFrom.ToString());
                this.AddTD(mync.FK_NodeT);
                this.AddTD(mync.AttrKey);
                this.AddTD(mync.AttrName);

                this.AddTDCenter(mync.FK_Operator);
                this.AddTD(mync.OperatorValueStr);
                this.AddTD(mync.OperatorValueT);
                //if (num > 1)
                //    this.AddTD(mync.HisConnJudgeWayT);
                this.AddTD("<a href='Cond.aspx?MyPK=" + mync.MyPK + "&CondType=" + (int)this.HisCondType + "&FK_Flow=" + this.FK_Flow + "&FK_Attr=" + mync.FK_Attr + "&FK_MainNode=" + mync.NodeID + "&OperatorValue=" + mync.OperatorValueStr + "&FK_Node=" + mync.FK_Node + "&DoType=Del&ToNodeID=" + mync.ToNodeID + "' >删除</a>");
                this.AddTREnd();
            }
            this.AddTableEnd();
            #endregion
        }