private BPMNNode CreateBPMN(String name, BPMNShapes shape, double width, double height, double offsetx, double offsety, string text = "")
        {
            BPMNNode node = new BPMNNode();

            node.Name    = name;
            node.Shape   = shape;
            node.Width   = width;
            node.Height  = height;
            node.OffsetX = offsetx;
            node.OffsetY = offsety;
            Label label = new Label();

            label.Text      = text;
            label.FontColor = "black";
            if (shape == BPMNShapes.Event && shape == BPMNShapes.Activity && text != "")
            {
                label.Offset = new DiagramPoint()
                {
                    Y = 1
                };
                label.VerticalAlignment = VerticalAlignment.Top;
            }
            else
            {
                label.Offset = new DiagramPoint()
                {
                    Y = 0.5f
                }
            };
            node.Labels.Add(label);
            DiagramContent.Nodes.Add(node);
            return(node);
        }
        private BPMNNode CreateSubProcessBPMN(String name, BPMNShapes shape, double width, double height, string BPMNSubProcess)
        {
            BPMNNode node = new BPMNNode();

            node.Name     = name;
            node.Shape    = shape;
            node.Width    = width;
            node.Height   = height;
            node.Activity = BPMNActivity.SubProcess;
            if (BPMNSubProcess == "SubprocessEventBased")
            {
                node.SubProcess = new BPMNSubProcess()
                {
                    Type = BPMNSubProcessTypes.Event, Event = BPMNEvents.Start
                }
            }
            ;
            else
            {
                node.SubProcess = new BPMNSubProcess()
                {
                    Type = BPMNSubProcessTypes.Transaction, Collapsed = true
                }
            };
            return(node);
        }
        private BPMNNode CompensationCallListBPMN(String name, BPMNShapes shape, double width, double height, bool subprocess)
        {
            BPMNNode node = new BPMNNode();

            node.Name     = name + "GateWays" + name;;
            node.Width    = width;
            node.Height   = height;
            node.Activity = BPMNActivity.SubProcess;
            node.Shape    = BPMNShapes.Activity;
            node.Event    = BPMNEvents.Start;
            if (subprocess)
            {
                node.Activity   = BPMNActivity.SubProcess;
                node.SubProcess = new BPMNSubProcess()
                {
                    Loop = BPMNLoops.Standard
                };
            }
            else
            {
                node.Activity = BPMNActivity.Task;
                node.Task     = new BPMNTask()
                {
                    Compensation = true
                };
            }
            return(node);
        }
        private BPMNNode CreateBPMNNode(String name, BPMNShapes shape, double width, double height, double offsetx, double offsety, double marginleft, double margintop, string text = "")
        {
            BPMNNode node = new BPMNNode();

            node.Name       = name;
            node.Shape      = shape;
            node.Width      = width;
            node.Height     = height;
            node.OffsetX    = offsetx;
            node.OffsetY    = offsety;
            node.MarginLeft = marginleft;
            node.MarginTop  = margintop;
            Label label = new Label();

            label.Text      = text;
            label.FontColor = "black";
            if (shape == BPMNShapes.Event && text != "")
            {
                label.Offset = new DiagramPoint()
                {
                    Y = 1
                };
                label.VerticalAlignment = VerticalAlignment.Top;
            }
            else
            {
                label.Offset = new DiagramPoint()
                {
                    Y = 0.5f
                };
            }
            node.Labels.Add(label);
            DiagramWebControl1.Model.Nodes.Add(node);
            return(node);
        }
        private BPMNNode CreateBasicBPMN(String name, BPMNShapes shape, double width, double height)
        {
            BPMNNode node = new BPMNNode();

            node.Name   = name;
            node.Shape  = shape;
            node.Width  = width;
            node.Height = height;
            return(node);
        }
        private BPMNNode CreateTaskBPMN(String name, BPMNShapes shape, double width, double height)
        {
            BPMNNode node = new BPMNNode();

            node.Name     = name;
            node.Shape    = shape;
            node.Width    = width;
            node.Height   = height;
            node.Activity = BPMNActivity.Task;
            return(node);
        }
        private BPMNNode CreateExclusiveBPMN(String name, BPMNShapes shape, double width, double height, BPMNGateways gateway)
        {
            BPMNNode node = new BPMNNode();

            node.Name     = name + "GateWays" + name;;
            node.Width    = width;
            node.Height   = height;
            node.Activity = BPMNActivity.SubProcess;
            node.Shape    = BPMNShapes.Gateway;
            node.Event    = BPMNEvents.Start;
            node.Gateway  = gateway;
            return(node);
        }
        private BPMNNode CreateTriggerBPMN(String name, BPMNShapes shape, double width, double height, BPMNTriggers triggers)
        {
            BPMNNode node = new BPMNNode();

            node.Name     = name;
            node.Shape    = shape;
            node.Width    = width;
            node.Height   = height;
            node.Activity = BPMNActivity.SubProcess;
            node.Shape    = shape;
            node.Event    = BPMNEvents.Start;
            node.Trigger  = triggers;
            return(node);
        }
        private BPMNNode CreateServiceBPMN(String name, BPMNShapes shape, double width, double height, BPMNTasks BPMNTask)
        {
            BPMNNode node = new BPMNNode();

            node.Name     = name + "GateWays" + name;;
            node.Width    = width;
            node.Height   = height;
            node.Activity = BPMNActivity.SubProcess;
            node.Shape    = BPMNShapes.Activity;
            node.Event    = BPMNEvents.Start;
            node.Activity = BPMNActivity.Task;
            node.Task     = new BPMNTask()
            {
                Type = BPMNTask
            };
            return(node);
        }
        private BPMNNode CreateBPMNShape(DiagramProperties model, String name, BPMNShapes shape, double width, double height, double offsetx, double offsety, string text = "", string description = "")
        {
            BPMNNode node = new BPMNNode();

            node.Name    = name;
            node.Shape   = shape;
            node.Width   = width;
            node.Height  = height;
            node.OffsetX = offsetx - 60;
            node.OffsetY = offsety;
            Label label = new Label();

            label.Text      = text;
            label.FontColor = "black";
            if (shape == BPMNShapes.Event && text != "")
            {
                label.Offset = new DiagramPoint()
                {
                    Y = 1
                };
                label.VerticalAlignment = VerticalAlignment.Top;
            }
            else
            {
                label.Offset = new DiagramPoint()
                {
                    Y = 0.5f
                }
            };
            if (description != "")
            {
                node.AddInfo = new Dictionary <string, object> {
                    { "Description", description }
                }
            }
            ;
            node.Labels.Add(label);
            model.Nodes.Add(node);
            return(node);
        }