コード例 #1
0
ファイル: KPIPointSet.xaml.cs プロジェクト: JuRogn/OA
        void State_browser_ReloadDataEvent()
        {
            if (d_StateActiveSetS == true && StateActiveSetS.ActiveName != "")
            {
                if (StateActiveSetS.optFlag == false)
                {
                    StateActive a = FindName(StateActiveSetS.ActiveName) as StateActive;
                    Actives.Remove(a);
                    cnsDesignerContainer.Children.Remove(a);

                    RuleLine b;
                    for (int i = 0; i < Rules.Count; i++)
                    {
                        if (Rules[i].StrStartActive == StateActiveSetS.ActiveName || Rules[i].StrEndActive == StateActiveSetS.ActiveName)
                        {
                            b = FindName(Rules[i].Name) as RuleLine;
                            Rules.Remove(b);
                            cnsDesignerContainer.Children.Remove(b);
                            --i;
                        }
                    }
                }
                else
                {
                    //检测是否已添加此状态
                    for (int i = 0; i < Actives.Count; i++)
                    {
                        if (Actives[i].Name == StateActiveSetS.ActiveName)
                        {
                            // MessageBox.Show("此状态已添加,不能添加相同的状态!");
                            //ComfirmWindow.ConfirmationBox(Utility.GetResourceStr("CAUTION"), Utility.GetResourceStr("M00001"), Utility.GetResourceStr("CONFIRMBUTTON"));
                            ComfirmWindow.ConfirmationBoxs(Utility.GetResourceStr("CAUTION"), Utility.GetResourceStr("M00001"),
               Utility.GetResourceStr("CONFIRM"), MessageIcon.Error); 
                            return;
                        }
                    }

                    StateActive Flow = new StateActive();
                    Flow.Name = StateActiveSetS.ActiveName;

                    // 1s 冉龙军
                    //string tmpStateName = (StateList.Where(s => s.StateCode.ToString() == StateActiveSetS.ActiveName).ToList().First().StateName);
                    string tmpStateName = StateActiveSetS.Remark;
                    // 1e
                    string StateName = "";

                    for (int i = 0; i < tmpStateName.Length; i = i + 6)
                    {
                        if (tmpStateName.Length < i + 6)
                            StateName += (i == 0 ? tmpStateName : "\r\n" + tmpStateName.Substring(i));
                        else
                            StateName += (i == 0 ? tmpStateName.Substring(i, 6) : "\r\n" + tmpStateName.Substring(i, 6));
                    }

                    // StateName += (StateName == "" ? tmp : "\r\n" + tmp.Substring(StateName.Length));

                    Flow.StateName.Text = StateName;// (StateList.Where(s => s.StateCode.ToString() == StateActiveSetS.ActiveName).ToList().First().StateName);
                    Flow.SetValue(Canvas.TopProperty, (double)100);
                    Flow.SetValue(Canvas.LeftProperty, (double)100);
                    if (!cnsDesignerContainer.Children.Contains(Flow))
                    {
                        cnsDesignerContainer.Children.Add(Flow);
                        Flow.Container = this;
                        Actives.Add(Flow);
                        // a.ActivityChanged += new ActivityChangeDelegate(OnActivityChanged);
                    }
                }
            }
        }
コード例 #2
0
ファイル: KPIPointSet.xaml.cs プロジェクト: JuRogn/OA
        public void AddStateActive()
        {

            if (StateActiveSetS.ActiveName != "")
            {
                StateActive Flow = new StateActive();
                Flow.Name = StateActiveSetS.ActiveName;
                Flow.StateName.Text = StateActiveSetS.ActiveName;
                Flow.SetValue(Canvas.TopProperty, (double)100);
                Flow.SetValue(Canvas.LeftProperty, (double)100);
                if (!cnsDesignerContainer.Children.Contains(Flow))
                {
                    cnsDesignerContainer.Children.Add(Flow);
                    Flow.Container = this;
                    // a.ActivityChanged += new ActivityChangeDelegate(OnActivityChanged);
                }
            }
        }
コード例 #3
0
ファイル: KPIPointSet.xaml.cs プロジェクト: JuRogn/OA
        void SetLayout()
        {
            string Layout = this.FlowDefine;

            //XmlDocument doc = new XmlDocument();
            //doc.LoadXml(Layout);
            string qq;
            string WFBOSystemName = string.Empty;
            string WFBOObjectName = string.Empty;
            qq = "";
            XmlReader XmlReader;
            StringReader bb = new StringReader(Layout);
            XmlReader = XmlReader.Create(bb);

            #region 遍历XML
            //while (XmlReader.Read())
            //{
            //    qq+="<li>节点类型:" + XmlReader.NodeType + "==<br>";
            //    switch (XmlReader.NodeType)
            //    {
            //        case XmlNodeType.XmlDeclaration:
            //            for (int i = 0; i < XmlReader.AttributeCount; i++)
            //            {
            //                XmlReader.MoveToAttribute(i);
            //                qq+="属性:" + XmlReader.Name + "=" + XmlReader.Value + "&nbsp;";
            //            }
            //            break;
            //        case XmlNodeType.Attribute:
            //            for (int i = 0; i < XmlReader.AttributeCount; i++)
            //            {
            //                XmlReader.MoveToAttribute(i);
            //                qq+="属性:" + XmlReader.Name + "=" + XmlReader.Value + "&nbsp;";
            //            }
            //            break;
            //        case XmlNodeType.CDATA:
            //            qq+="CDATA:" + XmlReader.Value + "&nbsp;";
            //            break;
            //        case XmlNodeType.Element:
            //            qq+="节点名称:" + XmlReader.LocalName + "<br>";
            //            for (int i = 0; i < XmlReader.AttributeCount; i++)
            //            {
            //                XmlReader.MoveToAttribute(i);
            //               qq+="属性:" + XmlReader.Name + "=" + XmlReader.Value + "&nbsp;";
            //            }
            //            break;
            //        case XmlNodeType.Comment:
            //            qq+="Comment:" + XmlReader.Value;
            //            break;
            //        case XmlNodeType.Whitespace:
            //            qq+="Whitespace:" + "&nbsp;";
            //            break;
            //        case XmlNodeType.ProcessingInstruction:
            //            qq+="ProcessingInstruction:" + XmlReader.Value;
            //            break;
            //        case XmlNodeType.Text:
            //            qq+="Text:" + XmlReader.Value;
            //            break;
            //    }
            // }

            #endregion

            XElement XElementS = XElement.Load(XmlReader);

            var flowSystem = from c in XElementS.Descendants("System")
                             select c;
            if (flowSystem != null)
            {
                foreach (var tmp in flowSystem)
                {
                    WFBOSystemName = tmp.Value;
                }
            }

            //BOSystem

            var a = from c in XElementS.Descendants("Activity")
                    select c;

            foreach (var tmp in a)
            {
                string stepname = tmp.Attribute("Name").Value;
                if (stepname != "StartFlow" && stepname != "EndFlow")
                {
                    StateActive Flow = new StateActive();
                    Flow.MinWidth = 60;
                    Flow.Name = stepname;
                    // 1s 冉龙军
                    //string tmpStateName = (StateList.Where(s => s.StateCode.ToString() == stepname).ToList().First().StateName);
                    string tmpStateName = tmp.Attribute("Remark").Value;
                    // 1e
                    string StateName = "";

                    for (int i = 0; i < tmpStateName.Length; i = i + 6)
                    {
                        if (tmpStateName.Length < i + 6)
                            StateName += (i == 0 ? tmpStateName : "\r\n" + tmpStateName.Substring(i));
                        else
                            StateName += (i == 0 ? tmpStateName.Substring(i, 6) : "\r\n" + tmpStateName.Substring(i, 6));
                    }

                    Flow.StateName.Text = StateName;// (StateList.Where(s => s.StateCode.ToString() == stepname).ToList().First().StateName); 

                    #region 加载KPI点的信息
                    if (KPIPointList != null && KPIPointList.Count != 0)
                        foreach (T_HR_KPIPOINT point in KPIPointList)
                        {
                            if (stepname.Equals(point.STEPID))
                                Flow.StateName.Text += "(KPI点)";
                        }
                    #endregion 加载KPI点的信息
                    Flow.SetValue(Canvas.TopProperty, Convert.ToDouble(tmp.Attribute("X").Value));
                    Flow.SetValue(Canvas.LeftProperty, Convert.ToDouble(tmp.Attribute("Y").Value));
                    if (!cnsDesignerContainer.Children.Contains(Flow))
                    {
                        // 1s 冉龙军 暂不处理错误
                        //cnsDesignerContainer.Children.Add(Flow);
                        try
                        {
                            cnsDesignerContainer.Children.Add(Flow);
                        }
                        catch (Exception ex)
                        {
                        }
                        // 1e
                        Flow.Container = this;
                        Actives.Add(Flow);
                    }
                }
            }

            var b = from c in XElementS.Descendants("Rule")
                    select c;

            foreach (var tmp in b)
            {
                RuleLine RuleLineS = new RuleLine();
                RuleLineS.Name = tmp.Attribute("Name").Value;

                RuleLineS.StrStartActive = tmp.Attribute("StrStartActive").Value;
                RuleLineS.StrEndActive = tmp.Attribute("StrEndActive").Value;
                RuleLineS.Container = this;

                if (tmp.Element("Conditions") != null)
                {
                    RuleConditions newRuleCondition = new RuleConditions();
                    newRuleCondition.Name = tmp.Element("Conditions").Attribute("Name").Value;
                    newRuleCondition.ConditionObject = tmp.Element("Conditions").Attribute("Object").Value;
                    newRuleCondition.CodiCombMode = tmp.Element("Conditions").Attribute("CodiCombMode").Value;

                    if (!string.IsNullOrEmpty(newRuleCondition.ConditionObject))
                    {
                        WFBOObjectName = newRuleCondition.ConditionObject;
                    }

                    if (tmp.Element("Conditions").Elements("Condition").Count() > 0)
                    {
                        var e = from f in tmp.Element("Conditions").Descendants("Condition")
                                select f;

                        foreach (var tmp2 in e)
                        {
                            CompareCondition newCD = new CompareCondition();
                            newCD.Name = tmp2.Attribute("Name").Value;
                            newCD.Description = tmp2.Attribute("Description").Value;
                            newCD.CompAttr = tmp2.Attribute("CompAttr").Value;
                            newCD.Operate = backEscapeXMLChar(tmp2.Attribute("Operate").Value);
                            newCD.DataType = tmp2.Attribute("DataType").Value;
                            newCD.CompareValue = tmp2.Attribute("CompareValue").Value;
                            newRuleCondition.subCondition.Add(newCD);
                        }
                    }

                    RuleLineS.ruleCoditions = newRuleCondition;
                }

                if (!cnsDesignerContainer.Children.Contains(RuleLineS))
                {
                    // 1s 冉龙军 暂不处理错误
                    //cnsDesignerContainer.Children.Add(RuleLineS);
                    try
                    {
                        cnsDesignerContainer.Children.Add(RuleLineS);
                    }
                    catch (Exception ex)
                    {
                    }
                    // 1e
                    SetRuleLinePos(RuleLineS.Name);
                    Rules.Add(RuleLineS);
                    // a.ActivityChanged += new ActivityChangeDelegate(OnActivityChanged);
                }
                // MessageBox.Show(tmp.Attribute("Name").Value);
            }

        }
コード例 #4
0
ファイル: KPIPointSet.xaml.cs プロジェクト: JuRogn/OA
        private void ClearContain()
        {
            cnsDesignerContainer.Children.Clear();
            Actives.Clear();
            Rules.Clear();
            BOSystem.Name = "";
            BOSystem.Description = "";
            BOObject.Name = "";
            BOObject.Description = "";

            StateActive StartFlow = new StateActive();
            StartFlow.Name = "StartFlow";
            StartFlow.bdrName.Width = StartFlow.bdrName.Height;
            StartFlow.bdrName2.Width = StartFlow.bdrName2.Height;
            ToolTipService.SetToolTip(StartFlow, "开始流程");

            StartFlow.StateName.Text = "开始";
            StartFlow.bdrName.Background = new SolidColorBrush(Colors.Orange);
            StartFlow.bdrName.CornerRadius = new CornerRadius(40);

            StartFlow.bdrName2.CornerRadius = new CornerRadius(40);
            StartFlow.SetValue(Canvas.TopProperty, (double)50);
            StartFlow.SetValue(Canvas.LeftProperty, (double)400);
            if (!cnsDesignerContainer.Children.Contains(StartFlow))
            {
                cnsDesignerContainer.Children.Add(StartFlow);

                StartFlow.Container = this;
                Actives.Add(StartFlow);
            }

            StateActive EndFlow = new StateActive();
            EndFlow.Name = "EndFlow";
            EndFlow.bdrName.Width = StartFlow.bdrName.Width; ;
            EndFlow.bdrName2.Height = StartFlow.bdrName2.Height; ;
            ToolTipService.SetToolTip(EndFlow, "结束流程");
            EndFlow.StateName.Text = "结束";

            EndFlow.StateName.SetValue(Canvas.LeftProperty, (double)8);

            EndFlow.bdrName.Background = new SolidColorBrush(Colors.Red);
            EndFlow.bdrName.CornerRadius = new CornerRadius(40);

            EndFlow.bdrName2.CornerRadius = new CornerRadius(40);

            EndFlow.SetValue(Canvas.TopProperty, (double)400);
            EndFlow.SetValue(Canvas.LeftProperty, (double)400);

            if (!cnsDesignerContainer.Children.Contains(EndFlow))
            {
                cnsDesignerContainer.Children.Add(EndFlow);

                EndFlow.Container = this;
                Actives.Add(EndFlow);
            }
        }
コード例 #5
0
ファイル: KPIPointSet.xaml.cs プロジェクト: JuRogn/OA
        /// <summary>
        /// 设置状态位置
        /// </summary>
        /// <param name="Active"></param>
        public void SetPos(StateActive Active)//,string ActiveName,Point Pos)
        {
            for (int i = 0; i < Rules.Count; i++)
            {
                if (Rules[i].StrStartActive == Active.Name || Rules[i].StrEndActive == Active.Name)
                    SetRuleLinePos(Rules[i].Name);
            }

        }