Esempio n. 1
0
        private void init_Network()
        {
            Network       = new strNetwork();
            Network.nNode = 0;
            Network.Node  = new strNode[nNode * 2];
            Network.nLink = 0;
            Network.Link  = new strLink[nNode * 4];

            Network.nNode        = 2;
            Network.Node[0].Type = 0;
            Network.Node[0].Kind = "START";
            Network.Node[1].Type = 0;
            Network.Node[1].Kind = "END";
        }
Esempio n. 2
0
        //CORE OF THE FORM
        private void mnuMakeNetwork_Click(object sender, EventArgs e) //convert network button
        {
            for (int run = 0; run < sFileNames.Length; run++)
            {
                Network = new strNetwork();

                string sFilePath = txtSaveFolder.Text + @"\";
                sFilePath += sFileNames[run].Remove(sFileNames[run].Length - 4) + @".net";

                //Made Network
                Load_XML(sFilePaths[run], false); //load and convert XML file named sFilePath[run] example: (f\project\ibm\s000345.bpmn.net)
                Save_Network(sFilePath, false, "");


                //Original Network
                Load_XML(sFilePaths[run], true);

                Save_Network(sFilePath, true, "ADD --- Original Network ---");
            }

            MessageBox.Show(txtFileN.Text + " Network files were made");
        }
Esempio n. 3
0
        //the same a part of IBM Load_XML()
        private void Make_aNetwork(bool isOrg)
        {
            int nStart = 0, nEnd = 0;

            string[,] xmlNode2 = new string[maxXmlNode, 3];
            Array.Copy(xmlNode, xmlNode2, xmlNode.Length);

            for (int i = 0; i < xNode; i++)
            {
                int cntPre  = 0;
                int cntPost = 0;
                for (int j = 0; j < xLink; j++)
                {
                    if (xmlLink[j, 1] == xmlNode[i, 0])
                    {
                        cntPost++;
                    }
                    if (xmlLink[j, 2] == xmlNode[i, 0])
                    {
                        cntPre++;
                    }
                }

                if (cntPre == 0)
                {
                    xmlNode[i, 2] = "S";
                    nStart++;
                }
                if (cntPost == 0)
                {
                    xmlNode2[i, 2] = "E";
                    nEnd++;
                }
            }


            ////////////////////// convert in to SS and EE model for single entry single exit process model
            if (!isOrg)
            {
                if (nStart > 1)
                {
                    xmlNode[xNode, 0] = "S";
                    xmlNode[xNode, 1] = "START";
                    xNode++;

                    xmlNode[xNode, 0] = "SS"; //dummy strat
                    xmlNode[xNode, 1] = "XOR";
                    //xmlNode[xNode, 1] = "OR";
                    xNode++;

                    xmlLink[xLink, 0] = "SL0";
                    xmlLink[xLink, 1] = "S";
                    xmlLink[xLink, 2] = "SS";
                    xLink++;

                    for (int i = 0; i < xNode - 2; i++)
                    {
                        if (xmlNode[i, 2] == "S")
                        {
                            //xmlNode[i, 1] = "SD";

                            xmlLink[xLink, 0] = "SL1";
                            xmlLink[xLink, 1] = "SS";
                            xmlLink[xLink, 2] = xmlNode[i, 0];
                            xLink++;
                        }
                    }
                }
                else //nStart = 1
                {
                    xmlNode[xNode, 0] = "S";
                    xmlNode[xNode, 1] = "START";
                    xNode++;

                    for (int i = 0; i < xNode - 1; i++)
                    {
                        if (xmlNode[i, 2] == "S")
                        {
                            xmlLink[xLink, 0] = "SL1";
                            xmlLink[xLink, 1] = "S";
                            xmlLink[xLink, 2] = xmlNode[i, 0];
                            xLink++;
                        }
                    }
                }

                if (nEnd > 1)
                {
                    xmlNode[xNode, 0]  = "E";
                    xmlNode[xNode, 1]  = "END";
                    xmlNode2[xNode, 0] = "E";
                    xmlNode2[xNode, 1] = "END";
                    xNode++;

                    xmlNode[xNode, 0] = "EE"; // dummy end
                    xmlNode[xNode, 1] = "XOR";
                    //xmlNode[xNode, 1] = "OR";
                    xmlNode2[xNode, 0] = "EE"; // dummy end
                    xmlNode[xNode, 1]  = "XOR";
                    //xmlNode2[xNode, 1] = "OR";
                    xNode++;

                    xmlLink[xLink, 0] = "EL0";
                    xmlLink[xLink, 1] = "EE";
                    xmlLink[xLink, 2] = "E";
                    xLink++;

                    for (int i = 0; i < xNode - 2; i++)
                    {
                        if (xmlNode2[i, 2] == "E")
                        {
                            //xmlNode[i, 1] = "ED";

                            xmlLink[xLink, 0] = "EL1";
                            xmlLink[xLink, 1] = xmlNode2[i, 0];
                            xmlLink[xLink, 2] = "EE";
                            xLink++;
                        }
                    }
                }
                else
                {
                    xmlNode[xNode, 0]  = "E";
                    xmlNode[xNode, 1]  = "END";
                    xmlNode2[xNode, 0] = "E";
                    xmlNode2[xNode, 1] = "END";
                    xNode++;

                    for (int i = 0; i < xNode - 1; i++)
                    {
                        if (xmlNode2[i, 2] == "E")
                        {
                            xmlLink[xLink, 0] = "EL1";
                            xmlLink[xLink, 1] = xmlNode2[i, 0];
                            xmlLink[xLink, 2] = "E";
                            xLink++;
                        }
                    }
                }
            } //////////////////////////

            Network = new strNetwork();

            //노드 수 // number of nodes
            Network.nNode = xNode;
            Network.Node  = new strNode[xNode];


            //노드 정보 //node info
            for (int i = 0; i < xNode; i++)
            {
                Network.Node[i].Kind = xmlNode[i, 1];

                if (xmlNode[i, 0] == "S" || xmlNode[i, 0] == "E" || xmlNode[i, 0] == "SS" || xmlNode[i, 0] == "EE")
                {
                    Network.Node[i].Name = xmlNode[i, 0];
                }
                else
                {
                    Network.Node[i].Name = xmlNode[i, 0];
                }
            }

            // 링크 수
            Network.nLink = xLink;
            Network.Link  = new strLink[xLink];

            for (int i = 0; i < xLink; i++)
            {
                int fromN = -1, toN = -1;

                for (int j = 0; j < xNode; j++)
                {
                    if (xmlLink[i, 1] == xmlNode[j, 0])
                    {
                        fromN = j;
                    }
                    if (xmlLink[i, 2] == xmlNode[j, 0])
                    {
                        toN = j;
                    }
                }

                if (fromN >= 0 && toN >= 0)
                {
                    Network.Link[i].fromNode = fromN;
                    Network.Link[i].toNode   = toN;
                }
            }

            //추가
            //for (int i = 0; i < Network.nNode; i++)
            //{
            //    int cntPre = 0;
            //    int cntPost = 0;
            //    for (int j = 0; j < Network.nLink; j++)
            //    {
            //        if (Network.Link[j].fromNode == i) cntPost++;
            //        if (Network.Link[j].toNode == i) cntPre++;
            //    }

            //    if (Network.Node[i].Kind == "SD")
            //    {
            //        if (cntPost > 1) Network.Node[i].Kind = "OR";
            //        else Network.Node[i].Kind = "EVENT";
            //    }
            //    else if (Network.Node[i].Kind == "ED")
            //    {
            //        if (cntPre > 1) Network.Node[i].Kind = "OR";
            //        else Network.Node[i].Kind = "EVENT";
            //    }
            //}
        }