How to create a Conditional flow

Hi support!

I am creating a BPMN component using GoDiagram, and I would like to create the conditionalFlow… Is there a way to create it with GoDiagram? DefaultFlow Ok, as you can see in my class…I set FromArrowStyle property…But Conditional flow has a diamond at the beginning of connector.

//Diagram Link
public class GraphLink : GoLabeledLink
{
    //Constructor
    public GraphLink()
    {
        //Default link properties
        this.Orthogonal = true;
        this.Style = GoStrokeStyle.RoundedLine;
        
        this.ToArrow = true; 
        Pen new_pen = new Pen(Color.Black);
        new_pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
        this.Pen = new_pen; 
    }

    public String Text
    {
        //Null value means no FromLabel
        get
        {
            GoText lab = this.FromLabel as GoText;
            if (lab != null)
                return lab.Text;
            else
                return null;
        }
        set
        {
            if (value == null)
            {
                this.FromLabel = null;
            }
            else
            {
                GoText lab = this.FromLabel as GoText;
                if (lab == null)
                {
                    lab = new GoText();
                    lab.Selectable = false;
                    lab.Editable = true;
                    this.FromLabel = lab;
                }
                lab.Text = value;
            }
        }
    }

  
  public void ConfigureLink(ItemKind mKind)
    {
        if (this != null)
        {
            if (mKind == ItemKind.SolidLink)
            {
                this.ToArrow = true;
                Pen new_pen = new Pen(Color.Black);
                new_pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
                this.Pen = new_pen; 
            }
            else if (mKind == ItemKind.DefaultLink)
            {
                this.ToArrow = true;
                this.FromArrow = true;
                Pen new_pen = new Pen(Color.Black);
                new_pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
                this.Pen = new_pen;
                this.FromArrowStyle = GoStrokeArrowheadStyle.Slash;
            }
            else if (mKind == ItemKind.ConditionalLink)    //SEE !  <>------>
            {
                this.ToArrow = true;
                this.FromArrow = true;
                Pen new_pen = new Pen(Color.Black);
                new_pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
                this.Pen = new_pen;
                this.FromArrowStyle = GoStrokeArrowheadStyle.Circle;
                this.FromArrowFilled = false;
            }
            else if (mKind == ItemKind.MessageLink)
            {
                this.ToArrow = false;
                Pen new_pen = new Pen(Color.Black);
                new_pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
                this.Pen = new_pen; 
            }
            
        }

    }
}

See image…

You can use



FromArrowStyle = Polygon

FromArrowLength and FromArrowWidth = some value X (e.g. 12)

FromArrowShaftLength = 2X (e.g. 24)

FromArrowFilled to false



and… if the port has a “FromSpot”, you must set the port’s EndSegmentLength to AT LEAST 2X, but probably more like 4X.



perfect Jake! Thanks!!