private FlowDiagramNode AddFlowDiagramLabelNode(int stepIndex, IFlowDefinition flowDefinition, FlowDiagram flowDiagram, FlowStep flowStep, ref int endCount) { var labelNode = flowDiagram.AddNode(new FlowDiagramNode { NodeType = FlowDiagramNodeType.Label, Name = flowStep.Name, Text = flowStep.Text ?? flowStep.Name }); endCount = AddFlowDiagramDefaultLink(labelNode, stepIndex, flowDefinition, flowDiagram, endCount); return(labelNode); }
private FlowDiagramNode AddFlowDiagramNode(int stepIndex, IFlowDefinition flowDefinition, FlowDiagramNode previousNode, FlowDiagram flowDiagram, ref int endCount) { var flowStep = flowDefinition.Steps[stepIndex]; switch (flowStep) { case ActivityFlowStep _: var activityNode = AddFlowDiagramActivityNode(stepIndex, flowDefinition, flowDiagram, flowStep, ref endCount); previousNode = activityNode; break; case LabelFlowStep _: var labelNode = AddFlowDiagramLabelNode(stepIndex, flowDefinition, flowDiagram, flowStep, ref endCount); previousNode = labelNode; break; case EndFlowStep _: var endFlowNode = AddFlowDiagramEndNode(flowDiagram, ref endCount); previousNode.Links.Add(new FlowDiagramLink { TargetNodeName = endFlowNode.Name }); break; case GotoFlowStep gotoFlowStep: previousNode.Links.Add(new FlowDiagramLink { TargetNodeName = gotoFlowStep.NextStepName }); break; case DecisionFlowStepBase decisionFlowStep: var decisionNode = AddFlowDiagramDecisionNode(stepIndex, flowDefinition, flowDiagram, flowStep, decisionFlowStep, ref endCount); previousNode = decisionNode; break; default: throw new FlowException($"Unhandled flow step type: {flowStep.GetType().FullName}"); } return(previousNode); }
private FlowDiagramNode AddFlowDiagramActivityNode(int stepIndex, IFlowDefinition flowDefinition, FlowDiagram flowDiagram, FlowStep flowStep, ref int endCount) { var activityRequest = GetFlowStepRequest(flowStep.Definition); var activityNode = flowDiagram.AddNode(new FlowDiagramNode { NodeType = FlowDiagramNodeType.Activity, Name = flowStep.Name, Text = GetFlowDiagramNodeText(flowStep, activityRequest), OverrideKey = flowStep.OverrideKey?.Value, OverrideDescription = flowStep.OverrideKey?.Description, }); SetFlowDiagramNodeInputSummaries(flowStep, activityRequest, activityNode); activityNode.OutputBindings = GetBoundOutputSummary(flowStep, activityRequest); endCount = AddFlowDiagramDefaultLink(activityNode, stepIndex, flowDefinition, flowDiagram, endCount); return(activityNode); }