diff --git a/DecisionTree.Tests/TestData/DecisionTreeTestData.cs b/DecisionTree.Tests/TestData/DecisionTreeTestData.cs index 61cb4b5..1319339 100644 --- a/DecisionTree.Tests/TestData/DecisionTreeTestData.cs +++ b/DecisionTree.Tests/TestData/DecisionTreeTestData.cs @@ -84,7 +84,28 @@ public class DecisionTreeTestData GraphTestData("TitleOnlyDefault", false, false, true ), GraphTestData("TitleOnlyHorizontal", true, false, true ), GraphTestData("TitleOnlyUniquePaths", false, true, true ), - GraphTestData("TitleOnlyHorizontalUniquePaths", true, true, true ) + GraphTestData("TitleOnlyHorizontalUniquePaths", true, true, true ), + GraphTestData("CustomColorsDefault", + graphStyle: new GraphStyle + { + DecisionColor = "white", + DecisionActionColor = "#FFFF00", + ResultColor = "#FF00FF", + ResultActionColor = "#00FFFF", + ActionColor = "black" + }), + GraphTestData("PartialCustomColorsDefault", + graphStyle: new GraphStyle + { + DecisionColor = "#FFFFFF", + ResultColor = "#FF00FF", + ActionColor = "#000000" + }), + GraphTestData("FontDefault", + graphStyle: new GraphStyle + { + FontColor = "red" + }) }; public static string ExpectedExceptionMessageWithPath => @@ -99,12 +120,18 @@ public class DecisionTreeTestData $"^-- 'False FinishedDecision - SendNotificationAction'{Environment.NewLine}" + "^-- 'FinishedDecision'"; - private static object[] GraphTestData(string title, bool isHorizontal = false, bool hasUniquePaths = false, bool titleOnly = false) => + private static object[] GraphTestData( + string title, + bool isHorizontal = false, + bool hasUniquePaths = false, + bool titleOnly = false, + GraphStyle graphStyle = null) => new object[] { title, new GraphOptions { IsHorizontal = isHorizontal, UseUniquePaths = hasUniquePaths, - TitleOnly = titleOnly + TitleOnly = titleOnly, + GraphStyle = graphStyle } }; diff --git a/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.CustomColorsDefault.approved.html b/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.CustomColorsDefault.approved.html new file mode 100644 index 0000000..7b0c646 --- /dev/null +++ b/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.CustomColorsDefault.approved.html @@ -0,0 +1,47 @@ +digraph G { +"FinishedDecision" -> "FinishResult" [label = "True"] +"FinishResult" [style = "filled" penwidth = 1 fillcolor = "#00FFFF" fontname = "Courier New" shape = "Mrecord" label = <
FinishResult
dto => dto
.SetResult("Project is finished.")
>] +"FinishedDecision" -> "False FinishedDecision - SendNotificationAction" [label = "False"] +"False FinishedDecision - SendNotificationAction" -> "IsOnHoldDecision" [label = "False"] +"IsOnHoldDecision" -> "DoNothingResult" [label = "True"] +"DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#FF00FF" fontname = "Courier New" shape = "Mrecord" label = <
DoNothingResult
>] +"IsOnHoldDecision" -> "ProjectTypeDecision" [label = "False"] +"ProjectTypeDecision" -> "Internal ProjectTypeDecision - SendNotificationAction" [label = "Internal"] +"Internal ProjectTypeDecision - SendNotificationAction" -> "ResetProjectAction" [label = "Internal"] +"ResetProjectAction" -> "DoNothingResult" [label = "Internal"] +"ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "black" fontname = "Courier New" shape = "Mrecord" label = <
ResetProjectAction
dto => dto
.SetItemsToDo(0)
.SetBudgetRemaining(0)
>] +"Internal ProjectTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "black" fontname = "Courier New" shape = "Mrecord" label = <
Internal ProjectTypeDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"ProjectTypeDecision" -> "ProjectSubTypeDecision" [label = "#null_path"] +"ProjectSubTypeDecision" -> "ToDoDecision" [label = "WordWide"] +"ToDoDecision" -> "DeadlineDecision" [label = "True"] +"DeadlineDecision" -> "True DeadlineDecision - SendNotificationAction" [label = "True"] +"True DeadlineDecision - SendNotificationAction" -> "MoveDeadlineResult" [label = "True"] +"MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#00FFFF" fontname = "Courier New" shape = "Mrecord" label = <
MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] +"True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "black" fontname = "Courier New" shape = "Mrecord" label = <
True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"DeadlineDecision" -> "BudgetDecision" [label = "False"] +"BudgetDecision" -> "RequestBudgetResult" [label = "True"] +"RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#00FFFF" fontname = "Courier New" shape = "Mrecord" label = <
RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] +"BudgetDecision" -> "DoNothingResult" [label = "False"] +"BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#FFFF00" fontname = "Courier New" shape = "Mrecord" label = <
BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] +"DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "white" fontname = "Courier New" shape = "Mrecord" label = <
DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] +"ToDoDecision" -> "BudgetDecision" [label = "False"] +"ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "white" fontname = "Courier New" shape = "Mrecord" label = <
ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] +"ProjectSubTypeDecision" -> "ToDoDecision" [label = "Foreign"] +"ProjectSubTypeDecision" -> "#null ProjectSubTypeDecision - SendNotificationAction" [label = "#null_path"] +"#null ProjectSubTypeDecision - SendNotificationAction" -> "ResetProjectAction" [label = "#null_path"] +"ResetProjectAction" -> "DoNothingResult" [label = "#null_path"] +"#null ProjectSubTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "black" fontname = "Courier New" shape = "Mrecord" label = <
#null ProjectSubTypeDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"ProjectSubTypeDecision" -> "ProjectAreaDecision" [label = "#default_path"] +"ProjectAreaDecision" -> "Hr ProjectAreaDecision - SendNotificationAction" [label = "Hr"] +"Hr ProjectAreaDecision - SendNotificationAction" -> "ResetProjectAction" [label = "Hr"] +"ResetProjectAction" -> "DoNothingResult" [label = "Hr"] +"Hr ProjectAreaDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "black" fontname = "Courier New" shape = "Mrecord" label = <
Hr ProjectAreaDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"ProjectAreaDecision" -> "ToDoDecision" [label = "#default_path"] +"ProjectAreaDecision" [style = "filled" penwidth = 1 fillcolor = "white" fontname = "Courier New" shape = "Mrecord" label = <
ProjectAreaDecision
dto => dto.Project.Area
>] +"ProjectSubTypeDecision" [style = "filled" penwidth = 1 fillcolor = "white" fontname = "Courier New" shape = "Mrecord" label = <
ProjectSubTypeDecision
dto => dto.Project.SubType
>] +"ProjectTypeDecision" -> "ToDoDecision" [label = "#default_path"] +"ProjectTypeDecision" [style = "filled" penwidth = 1 fillcolor = "white" fontname = "Courier New" shape = "Mrecord" label = <
ProjectTypeDecision
dto => dto.Project.Type
>] +"IsOnHoldDecision" [style = "filled" penwidth = 1 fillcolor = "white" fontname = "Courier New" shape = "Mrecord" label = <
IsOnHoldDecision
dto => dto.Project.IsOnHold
>] +"False FinishedDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "black" fontname = "Courier New" shape = "Mrecord" label = <
False FinishedDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"FinishedDecision" [style = "filled" penwidth = 1 fillcolor = "white" fontname = "Courier New" shape = "Mrecord" label = <
FinishedDecision
dto => (dto.Project.ItemsToDo == 0)
>] +} \ No newline at end of file diff --git a/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.Default.approved.html b/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.Default.approved.html index a231db7..c935aee 100644 --- a/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.Default.approved.html +++ b/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.Default.approved.html @@ -1,47 +1,47 @@ digraph G { "FinishedDecision" -> "FinishResult" [label = "True"] -"FinishResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
FinishResult
dto => dto
.SetResult("Project is finished.")
>] +"FinishResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
FinishResult
dto => dto
.SetResult("Project is finished.")
>] "FinishedDecision" -> "False FinishedDecision - SendNotificationAction" [label = "False"] "False FinishedDecision - SendNotificationAction" -> "IsOnHoldDecision" [label = "False"] "IsOnHoldDecision" -> "DoNothingResult" [label = "True"] -"DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
DoNothingResult
>] +"DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
DoNothingResult
>] "IsOnHoldDecision" -> "ProjectTypeDecision" [label = "False"] "ProjectTypeDecision" -> "Internal ProjectTypeDecision - SendNotificationAction" [label = "Internal"] "Internal ProjectTypeDecision - SendNotificationAction" -> "ResetProjectAction" [label = "Internal"] "ResetProjectAction" -> "DoNothingResult" [label = "Internal"] -"ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
ResetProjectAction
dto => dto
.SetItemsToDo(0)
.SetBudgetRemaining(0)
>] -"Internal ProjectTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
Internal ProjectTypeDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
ResetProjectAction
dto => dto
.SetItemsToDo(0)
.SetBudgetRemaining(0)
>] +"Internal ProjectTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
Internal ProjectTypeDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] "ProjectTypeDecision" -> "ProjectSubTypeDecision" [label = "#null_path"] "ProjectSubTypeDecision" -> "ToDoDecision" [label = "WordWide"] "ToDoDecision" -> "DeadlineDecision" [label = "True"] "DeadlineDecision" -> "True DeadlineDecision - SendNotificationAction" [label = "True"] "True DeadlineDecision - SendNotificationAction" -> "MoveDeadlineResult" [label = "True"] -"MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] -"True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] +"True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] "DeadlineDecision" -> "BudgetDecision" [label = "False"] "BudgetDecision" -> "RequestBudgetResult" [label = "True"] -"RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] +"RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] "BudgetDecision" -> "DoNothingResult" [label = "False"] -"BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] -"DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] +"BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] +"DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] "ToDoDecision" -> "BudgetDecision" [label = "False"] -"ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] +"ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] "ProjectSubTypeDecision" -> "ToDoDecision" [label = "Foreign"] "ProjectSubTypeDecision" -> "#null ProjectSubTypeDecision - SendNotificationAction" [label = "#null_path"] "#null ProjectSubTypeDecision - SendNotificationAction" -> "ResetProjectAction" [label = "#null_path"] "ResetProjectAction" -> "DoNothingResult" [label = "#null_path"] -"#null ProjectSubTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
#null ProjectSubTypeDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"#null ProjectSubTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
#null ProjectSubTypeDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] "ProjectSubTypeDecision" -> "ProjectAreaDecision" [label = "#default_path"] "ProjectAreaDecision" -> "Hr ProjectAreaDecision - SendNotificationAction" [label = "Hr"] "Hr ProjectAreaDecision - SendNotificationAction" -> "ResetProjectAction" [label = "Hr"] "ResetProjectAction" -> "DoNothingResult" [label = "Hr"] -"Hr ProjectAreaDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
Hr ProjectAreaDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"Hr ProjectAreaDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
Hr ProjectAreaDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] "ProjectAreaDecision" -> "ToDoDecision" [label = "#default_path"] -"ProjectAreaDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectAreaDecision
dto => dto.Project.Area
>] -"ProjectSubTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectSubTypeDecision
dto => dto.Project.SubType
>] +"ProjectAreaDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectAreaDecision
dto => dto.Project.Area
>] +"ProjectSubTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectSubTypeDecision
dto => dto.Project.SubType
>] "ProjectTypeDecision" -> "ToDoDecision" [label = "#default_path"] -"ProjectTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectTypeDecision
dto => dto.Project.Type
>] -"IsOnHoldDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
IsOnHoldDecision
dto => dto.Project.IsOnHold
>] -"False FinishedDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
False FinishedDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] -"FinishedDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
FinishedDecision
dto => (dto.Project.ItemsToDo == 0)
>] +"ProjectTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectTypeDecision
dto => dto.Project.Type
>] +"IsOnHoldDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
IsOnHoldDecision
dto => dto.Project.IsOnHold
>] +"False FinishedDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
False FinishedDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"FinishedDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
FinishedDecision
dto => (dto.Project.ItemsToDo == 0)
>] } \ No newline at end of file diff --git a/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.FontDefault.approved.html b/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.FontDefault.approved.html new file mode 100644 index 0000000..7696712 --- /dev/null +++ b/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.FontDefault.approved.html @@ -0,0 +1,47 @@ +digraph G { +"FinishedDecision" -> "FinishResult" [label = "True"] +"FinishResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
FinishResult
dto => dto
.SetResult("Project is finished.")
>] +"FinishedDecision" -> "False FinishedDecision - SendNotificationAction" [label = "False"] +"False FinishedDecision - SendNotificationAction" -> "IsOnHoldDecision" [label = "False"] +"IsOnHoldDecision" -> "DoNothingResult" [label = "True"] +"DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
DoNothingResult
>] +"IsOnHoldDecision" -> "ProjectTypeDecision" [label = "False"] +"ProjectTypeDecision" -> "Internal ProjectTypeDecision - SendNotificationAction" [label = "Internal"] +"Internal ProjectTypeDecision - SendNotificationAction" -> "ResetProjectAction" [label = "Internal"] +"ResetProjectAction" -> "DoNothingResult" [label = "Internal"] +"ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
ResetProjectAction
dto => dto
.SetItemsToDo(0)
.SetBudgetRemaining(0)
>] +"Internal ProjectTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
Internal ProjectTypeDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"ProjectTypeDecision" -> "ProjectSubTypeDecision" [label = "#null_path"] +"ProjectSubTypeDecision" -> "ToDoDecision" [label = "WordWide"] +"ToDoDecision" -> "DeadlineDecision" [label = "True"] +"DeadlineDecision" -> "True DeadlineDecision - SendNotificationAction" [label = "True"] +"True DeadlineDecision - SendNotificationAction" -> "MoveDeadlineResult" [label = "True"] +"MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] +"True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"DeadlineDecision" -> "BudgetDecision" [label = "False"] +"BudgetDecision" -> "RequestBudgetResult" [label = "True"] +"RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] +"BudgetDecision" -> "DoNothingResult" [label = "False"] +"BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] +"DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] +"ToDoDecision" -> "BudgetDecision" [label = "False"] +"ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] +"ProjectSubTypeDecision" -> "ToDoDecision" [label = "Foreign"] +"ProjectSubTypeDecision" -> "#null ProjectSubTypeDecision - SendNotificationAction" [label = "#null_path"] +"#null ProjectSubTypeDecision - SendNotificationAction" -> "ResetProjectAction" [label = "#null_path"] +"ResetProjectAction" -> "DoNothingResult" [label = "#null_path"] +"#null ProjectSubTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
#null ProjectSubTypeDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"ProjectSubTypeDecision" -> "ProjectAreaDecision" [label = "#default_path"] +"ProjectAreaDecision" -> "Hr ProjectAreaDecision - SendNotificationAction" [label = "Hr"] +"Hr ProjectAreaDecision - SendNotificationAction" -> "ResetProjectAction" [label = "Hr"] +"ResetProjectAction" -> "DoNothingResult" [label = "Hr"] +"Hr ProjectAreaDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
Hr ProjectAreaDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"ProjectAreaDecision" -> "ToDoDecision" [label = "#default_path"] +"ProjectAreaDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectAreaDecision
dto => dto.Project.Area
>] +"ProjectSubTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectSubTypeDecision
dto => dto.Project.SubType
>] +"ProjectTypeDecision" -> "ToDoDecision" [label = "#default_path"] +"ProjectTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectTypeDecision
dto => dto.Project.Type
>] +"IsOnHoldDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
IsOnHoldDecision
dto => dto.Project.IsOnHold
>] +"False FinishedDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
False FinishedDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"FinishedDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
FinishedDecision
dto => (dto.Project.ItemsToDo == 0)
>] +} \ No newline at end of file diff --git a/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.Horizontal.approved.html b/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.Horizontal.approved.html index f70b7a7..4f565f6 100644 --- a/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.Horizontal.approved.html +++ b/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.Horizontal.approved.html @@ -1,48 +1,48 @@ digraph G { rankdir = LR; "FinishedDecision" -> "FinishResult" [label = "True"] -"FinishResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
FinishResult
dto => dto
.SetResult("Project is finished.")
>] +"FinishResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
FinishResult
dto => dto
.SetResult("Project is finished.")
>] "FinishedDecision" -> "False FinishedDecision - SendNotificationAction" [label = "False"] "False FinishedDecision - SendNotificationAction" -> "IsOnHoldDecision" [label = "False"] "IsOnHoldDecision" -> "DoNothingResult" [label = "True"] -"DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
DoNothingResult
>] +"DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
DoNothingResult
>] "IsOnHoldDecision" -> "ProjectTypeDecision" [label = "False"] "ProjectTypeDecision" -> "Internal ProjectTypeDecision - SendNotificationAction" [label = "Internal"] "Internal ProjectTypeDecision - SendNotificationAction" -> "ResetProjectAction" [label = "Internal"] "ResetProjectAction" -> "DoNothingResult" [label = "Internal"] -"ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
ResetProjectAction
dto => dto
.SetItemsToDo(0)
.SetBudgetRemaining(0)
>] -"Internal ProjectTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
Internal ProjectTypeDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
ResetProjectAction
dto => dto
.SetItemsToDo(0)
.SetBudgetRemaining(0)
>] +"Internal ProjectTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
Internal ProjectTypeDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] "ProjectTypeDecision" -> "ProjectSubTypeDecision" [label = "#null_path"] "ProjectSubTypeDecision" -> "ToDoDecision" [label = "WordWide"] "ToDoDecision" -> "DeadlineDecision" [label = "True"] "DeadlineDecision" -> "True DeadlineDecision - SendNotificationAction" [label = "True"] "True DeadlineDecision - SendNotificationAction" -> "MoveDeadlineResult" [label = "True"] -"MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] -"True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] +"True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] "DeadlineDecision" -> "BudgetDecision" [label = "False"] "BudgetDecision" -> "RequestBudgetResult" [label = "True"] -"RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] +"RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] "BudgetDecision" -> "DoNothingResult" [label = "False"] -"BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] -"DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] +"BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] +"DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] "ToDoDecision" -> "BudgetDecision" [label = "False"] -"ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] +"ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] "ProjectSubTypeDecision" -> "ToDoDecision" [label = "Foreign"] "ProjectSubTypeDecision" -> "#null ProjectSubTypeDecision - SendNotificationAction" [label = "#null_path"] "#null ProjectSubTypeDecision - SendNotificationAction" -> "ResetProjectAction" [label = "#null_path"] "ResetProjectAction" -> "DoNothingResult" [label = "#null_path"] -"#null ProjectSubTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
#null ProjectSubTypeDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"#null ProjectSubTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
#null ProjectSubTypeDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] "ProjectSubTypeDecision" -> "ProjectAreaDecision" [label = "#default_path"] "ProjectAreaDecision" -> "Hr ProjectAreaDecision - SendNotificationAction" [label = "Hr"] "Hr ProjectAreaDecision - SendNotificationAction" -> "ResetProjectAction" [label = "Hr"] "ResetProjectAction" -> "DoNothingResult" [label = "Hr"] -"Hr ProjectAreaDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
Hr ProjectAreaDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"Hr ProjectAreaDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
Hr ProjectAreaDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] "ProjectAreaDecision" -> "ToDoDecision" [label = "#default_path"] -"ProjectAreaDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectAreaDecision
dto => dto.Project.Area
>] -"ProjectSubTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectSubTypeDecision
dto => dto.Project.SubType
>] +"ProjectAreaDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectAreaDecision
dto => dto.Project.Area
>] +"ProjectSubTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectSubTypeDecision
dto => dto.Project.SubType
>] "ProjectTypeDecision" -> "ToDoDecision" [label = "#default_path"] -"ProjectTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectTypeDecision
dto => dto.Project.Type
>] -"IsOnHoldDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
IsOnHoldDecision
dto => dto.Project.IsOnHold
>] -"False FinishedDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
False FinishedDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] -"FinishedDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
FinishedDecision
dto => (dto.Project.ItemsToDo == 0)
>] +"ProjectTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectTypeDecision
dto => dto.Project.Type
>] +"IsOnHoldDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
IsOnHoldDecision
dto => dto.Project.IsOnHold
>] +"False FinishedDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
False FinishedDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"FinishedDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
FinishedDecision
dto => (dto.Project.ItemsToDo == 0)
>] } \ No newline at end of file diff --git a/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.HorizontalUniquePaths.approved.html b/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.HorizontalUniquePaths.approved.html index 7706550..ea34ddd 100644 --- a/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.HorizontalUniquePaths.approved.html +++ b/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.HorizontalUniquePaths.approved.html @@ -1,116 +1,116 @@ digraph G { rankdir = LR; "[1] FinishedDecision" -> "[2] FinishResult" [label = "True"] -"[2] FinishResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[2] FinishResult
dto => dto
.SetResult("Project is finished.")
>] +"[2] FinishResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[2] FinishResult
dto => dto
.SetResult("Project is finished.")
>] "[1] FinishedDecision" -> "[3] False FinishedDecision - SendNotificationAction" [label = "False"] "[3] False FinishedDecision - SendNotificationAction" -> "[4] IsOnHoldDecision" [label = "False"] "[4] IsOnHoldDecision" -> "[5] DoNothingResult" [label = "True"] -"[5] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[5] DoNothingResult
>] +"[5] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[5] DoNothingResult
>] "[4] IsOnHoldDecision" -> "[6] ProjectTypeDecision" [label = "False"] "[6] ProjectTypeDecision" -> "[7] Internal ProjectTypeDecision - SendNotificationAction" [label = "Internal"] "[7] Internal ProjectTypeDecision - SendNotificationAction" -> "[8] ResetProjectAction" [label = "Internal"] "[8] ResetProjectAction" -> "[9] DoNothingResult" [label = "Internal"] -"[9] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[9] DoNothingResult
>] -"[8] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[8] ResetProjectAction
dto => dto
.SetItemsToDo(0)
.SetBudgetRemaining(0)
>] -"[7] Internal ProjectTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[7] Internal ProjectTypeDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"[9] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[9] DoNothingResult
>] +"[8] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[8] ResetProjectAction
dto => dto
.SetItemsToDo(0)
.SetBudgetRemaining(0)
>] +"[7] Internal ProjectTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[7] Internal ProjectTypeDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] "[6] ProjectTypeDecision" -> "[10] ProjectSubTypeDecision" [label = "#null_path"] "[10] ProjectSubTypeDecision" -> "[11] ToDoDecision" [label = "WordWide"] "[11] ToDoDecision" -> "[12] DeadlineDecision" [label = "True"] "[12] DeadlineDecision" -> "[13] True DeadlineDecision - SendNotificationAction" [label = "True"] "[13] True DeadlineDecision - SendNotificationAction" -> "[14] MoveDeadlineResult" [label = "True"] -"[14] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[14] MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] -"[13] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[13] True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"[14] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[14] MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] +"[13] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[13] True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] "[12] DeadlineDecision" -> "[15] BudgetDecision" [label = "False"] "[15] BudgetDecision" -> "[16] RequestBudgetResult" [label = "True"] -"[16] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[16] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] +"[16] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[16] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] "[15] BudgetDecision" -> "[17] DoNothingResult" [label = "False"] -"[17] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[17] DoNothingResult
>] -"[15] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[15] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] -"[12] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[12] DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] +"[17] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[17] DoNothingResult
>] +"[15] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[15] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] +"[12] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[12] DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] "[11] ToDoDecision" -> "[18] BudgetDecision" [label = "False"] "[18] BudgetDecision" -> "[19] RequestBudgetResult" [label = "True"] -"[19] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[19] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] +"[19] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[19] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] "[18] BudgetDecision" -> "[20] DoNothingResult" [label = "False"] -"[20] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[20] DoNothingResult
>] -"[18] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[18] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] -"[11] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[11] ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] +"[20] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[20] DoNothingResult
>] +"[18] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[18] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] +"[11] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[11] ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] "[10] ProjectSubTypeDecision" -> "[21] ToDoDecision" [label = "Foreign"] "[21] ToDoDecision" -> "[22] DeadlineDecision" [label = "True"] "[22] DeadlineDecision" -> "[23] True DeadlineDecision - SendNotificationAction" [label = "True"] "[23] True DeadlineDecision - SendNotificationAction" -> "[24] MoveDeadlineResult" [label = "True"] -"[24] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[24] MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] -"[23] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[23] True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"[24] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[24] MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] +"[23] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[23] True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] "[22] DeadlineDecision" -> "[25] BudgetDecision" [label = "False"] "[25] BudgetDecision" -> "[26] RequestBudgetResult" [label = "True"] -"[26] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[26] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] +"[26] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[26] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] "[25] BudgetDecision" -> "[27] DoNothingResult" [label = "False"] -"[27] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[27] DoNothingResult
>] -"[25] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[25] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] -"[22] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[22] DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] +"[27] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[27] DoNothingResult
>] +"[25] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[25] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] +"[22] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[22] DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] "[21] ToDoDecision" -> "[28] BudgetDecision" [label = "False"] "[28] BudgetDecision" -> "[29] RequestBudgetResult" [label = "True"] -"[29] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[29] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] +"[29] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[29] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] "[28] BudgetDecision" -> "[30] DoNothingResult" [label = "False"] -"[30] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[30] DoNothingResult
>] -"[28] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[28] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] -"[21] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[21] ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] +"[30] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[30] DoNothingResult
>] +"[28] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[28] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] +"[21] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[21] ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] "[10] ProjectSubTypeDecision" -> "[31] #null ProjectSubTypeDecision - SendNotificationAction" [label = "#null_path"] "[31] #null ProjectSubTypeDecision - SendNotificationAction" -> "[32] ResetProjectAction" [label = "#null_path"] "[32] ResetProjectAction" -> "[33] DoNothingResult" [label = "#null_path"] -"[33] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[33] DoNothingResult
>] -"[32] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[32] ResetProjectAction
dto => dto
.SetItemsToDo(0)
.SetBudgetRemaining(0)
>] -"[31] #null ProjectSubTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[31] #null ProjectSubTypeDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"[33] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[33] DoNothingResult
>] +"[32] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[32] ResetProjectAction
dto => dto
.SetItemsToDo(0)
.SetBudgetRemaining(0)
>] +"[31] #null ProjectSubTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[31] #null ProjectSubTypeDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] "[10] ProjectSubTypeDecision" -> "[34] ProjectAreaDecision" [label = "#default_path"] "[34] ProjectAreaDecision" -> "[35] Hr ProjectAreaDecision - SendNotificationAction" [label = "Hr"] "[35] Hr ProjectAreaDecision - SendNotificationAction" -> "[36] ResetProjectAction" [label = "Hr"] "[36] ResetProjectAction" -> "[37] DoNothingResult" [label = "Hr"] -"[37] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[37] DoNothingResult
>] -"[36] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[36] ResetProjectAction
dto => dto
.SetItemsToDo(0)
.SetBudgetRemaining(0)
>] -"[35] Hr ProjectAreaDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[35] Hr ProjectAreaDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"[37] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[37] DoNothingResult
>] +"[36] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[36] ResetProjectAction
dto => dto
.SetItemsToDo(0)
.SetBudgetRemaining(0)
>] +"[35] Hr ProjectAreaDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[35] Hr ProjectAreaDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] "[34] ProjectAreaDecision" -> "[38] ToDoDecision" [label = "#default_path"] "[38] ToDoDecision" -> "[39] DeadlineDecision" [label = "True"] "[39] DeadlineDecision" -> "[40] True DeadlineDecision - SendNotificationAction" [label = "True"] "[40] True DeadlineDecision - SendNotificationAction" -> "[41] MoveDeadlineResult" [label = "True"] -"[41] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[41] MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] -"[40] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[40] True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"[41] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[41] MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] +"[40] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[40] True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] "[39] DeadlineDecision" -> "[42] BudgetDecision" [label = "False"] "[42] BudgetDecision" -> "[43] RequestBudgetResult" [label = "True"] -"[43] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[43] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] +"[43] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[43] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] "[42] BudgetDecision" -> "[44] DoNothingResult" [label = "False"] -"[44] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[44] DoNothingResult
>] -"[42] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[42] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] -"[39] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[39] DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] +"[44] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[44] DoNothingResult
>] +"[42] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[42] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] +"[39] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[39] DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] "[38] ToDoDecision" -> "[45] BudgetDecision" [label = "False"] "[45] BudgetDecision" -> "[46] RequestBudgetResult" [label = "True"] -"[46] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[46] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] +"[46] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[46] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] "[45] BudgetDecision" -> "[47] DoNothingResult" [label = "False"] -"[47] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[47] DoNothingResult
>] -"[45] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[45] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] -"[38] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[38] ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] -"[34] ProjectAreaDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[34] ProjectAreaDecision
dto => dto.Project.Area
>] -"[10] ProjectSubTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[10] ProjectSubTypeDecision
dto => dto.Project.SubType
>] +"[47] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[47] DoNothingResult
>] +"[45] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[45] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] +"[38] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[38] ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] +"[34] ProjectAreaDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[34] ProjectAreaDecision
dto => dto.Project.Area
>] +"[10] ProjectSubTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[10] ProjectSubTypeDecision
dto => dto.Project.SubType
>] "[6] ProjectTypeDecision" -> "[48] ToDoDecision" [label = "#default_path"] "[48] ToDoDecision" -> "[49] DeadlineDecision" [label = "True"] "[49] DeadlineDecision" -> "[50] True DeadlineDecision - SendNotificationAction" [label = "True"] "[50] True DeadlineDecision - SendNotificationAction" -> "[51] MoveDeadlineResult" [label = "True"] -"[51] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[51] MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] -"[50] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[50] True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"[51] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[51] MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] +"[50] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[50] True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] "[49] DeadlineDecision" -> "[52] BudgetDecision" [label = "False"] "[52] BudgetDecision" -> "[53] RequestBudgetResult" [label = "True"] -"[53] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[53] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] +"[53] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[53] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] "[52] BudgetDecision" -> "[54] DoNothingResult" [label = "False"] -"[54] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[54] DoNothingResult
>] -"[52] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[52] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] -"[49] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[49] DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] +"[54] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[54] DoNothingResult
>] +"[52] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[52] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] +"[49] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[49] DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] "[48] ToDoDecision" -> "[55] BudgetDecision" [label = "False"] "[55] BudgetDecision" -> "[56] RequestBudgetResult" [label = "True"] -"[56] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[56] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] +"[56] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[56] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] "[55] BudgetDecision" -> "[57] DoNothingResult" [label = "False"] -"[57] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[57] DoNothingResult
>] -"[55] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[55] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] -"[48] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[48] ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] -"[6] ProjectTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[6] ProjectTypeDecision
dto => dto.Project.Type
>] -"[4] IsOnHoldDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[4] IsOnHoldDecision
dto => dto.Project.IsOnHold
>] -"[3] False FinishedDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[3] False FinishedDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] -"[1] FinishedDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[1] FinishedDecision
dto => (dto.Project.ItemsToDo == 0)
>] +"[57] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[57] DoNothingResult
>] +"[55] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[55] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] +"[48] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[48] ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] +"[6] ProjectTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[6] ProjectTypeDecision
dto => dto.Project.Type
>] +"[4] IsOnHoldDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[4] IsOnHoldDecision
dto => dto.Project.IsOnHold
>] +"[3] False FinishedDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[3] False FinishedDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"[1] FinishedDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[1] FinishedDecision
dto => (dto.Project.ItemsToDo == 0)
>] } \ No newline at end of file diff --git a/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.PartialCustomColorsDefault.approved.html b/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.PartialCustomColorsDefault.approved.html new file mode 100644 index 0000000..e7a3d75 --- /dev/null +++ b/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.PartialCustomColorsDefault.approved.html @@ -0,0 +1,47 @@ +digraph G { +"FinishedDecision" -> "FinishResult" [label = "True"] +"FinishResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
FinishResult
dto => dto
.SetResult("Project is finished.")
>] +"FinishedDecision" -> "False FinishedDecision - SendNotificationAction" [label = "False"] +"False FinishedDecision - SendNotificationAction" -> "IsOnHoldDecision" [label = "False"] +"IsOnHoldDecision" -> "DoNothingResult" [label = "True"] +"DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#FF00FF" fontname = "Courier New" shape = "Mrecord" label = <
DoNothingResult
>] +"IsOnHoldDecision" -> "ProjectTypeDecision" [label = "False"] +"ProjectTypeDecision" -> "Internal ProjectTypeDecision - SendNotificationAction" [label = "Internal"] +"Internal ProjectTypeDecision - SendNotificationAction" -> "ResetProjectAction" [label = "Internal"] +"ResetProjectAction" -> "DoNothingResult" [label = "Internal"] +"ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#000000" fontname = "Courier New" shape = "Mrecord" label = <
ResetProjectAction
dto => dto
.SetItemsToDo(0)
.SetBudgetRemaining(0)
>] +"Internal ProjectTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#000000" fontname = "Courier New" shape = "Mrecord" label = <
Internal ProjectTypeDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"ProjectTypeDecision" -> "ProjectSubTypeDecision" [label = "#null_path"] +"ProjectSubTypeDecision" -> "ToDoDecision" [label = "WordWide"] +"ToDoDecision" -> "DeadlineDecision" [label = "True"] +"DeadlineDecision" -> "True DeadlineDecision - SendNotificationAction" [label = "True"] +"True DeadlineDecision - SendNotificationAction" -> "MoveDeadlineResult" [label = "True"] +"MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] +"True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#000000" fontname = "Courier New" shape = "Mrecord" label = <
True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"DeadlineDecision" -> "BudgetDecision" [label = "False"] +"BudgetDecision" -> "RequestBudgetResult" [label = "True"] +"RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] +"BudgetDecision" -> "DoNothingResult" [label = "False"] +"BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] +"DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#FFFFFF" fontname = "Courier New" shape = "Mrecord" label = <
DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] +"ToDoDecision" -> "BudgetDecision" [label = "False"] +"ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#FFFFFF" fontname = "Courier New" shape = "Mrecord" label = <
ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] +"ProjectSubTypeDecision" -> "ToDoDecision" [label = "Foreign"] +"ProjectSubTypeDecision" -> "#null ProjectSubTypeDecision - SendNotificationAction" [label = "#null_path"] +"#null ProjectSubTypeDecision - SendNotificationAction" -> "ResetProjectAction" [label = "#null_path"] +"ResetProjectAction" -> "DoNothingResult" [label = "#null_path"] +"#null ProjectSubTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#000000" fontname = "Courier New" shape = "Mrecord" label = <
#null ProjectSubTypeDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"ProjectSubTypeDecision" -> "ProjectAreaDecision" [label = "#default_path"] +"ProjectAreaDecision" -> "Hr ProjectAreaDecision - SendNotificationAction" [label = "Hr"] +"Hr ProjectAreaDecision - SendNotificationAction" -> "ResetProjectAction" [label = "Hr"] +"ResetProjectAction" -> "DoNothingResult" [label = "Hr"] +"Hr ProjectAreaDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#000000" fontname = "Courier New" shape = "Mrecord" label = <
Hr ProjectAreaDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"ProjectAreaDecision" -> "ToDoDecision" [label = "#default_path"] +"ProjectAreaDecision" [style = "filled" penwidth = 1 fillcolor = "#FFFFFF" fontname = "Courier New" shape = "Mrecord" label = <
ProjectAreaDecision
dto => dto.Project.Area
>] +"ProjectSubTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#FFFFFF" fontname = "Courier New" shape = "Mrecord" label = <
ProjectSubTypeDecision
dto => dto.Project.SubType
>] +"ProjectTypeDecision" -> "ToDoDecision" [label = "#default_path"] +"ProjectTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#FFFFFF" fontname = "Courier New" shape = "Mrecord" label = <
ProjectTypeDecision
dto => dto.Project.Type
>] +"IsOnHoldDecision" [style = "filled" penwidth = 1 fillcolor = "#FFFFFF" fontname = "Courier New" shape = "Mrecord" label = <
IsOnHoldDecision
dto => dto.Project.IsOnHold
>] +"False FinishedDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#000000" fontname = "Courier New" shape = "Mrecord" label = <
False FinishedDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"FinishedDecision" [style = "filled" penwidth = 1 fillcolor = "#FFFFFF" fontname = "Courier New" shape = "Mrecord" label = <
FinishedDecision
dto => (dto.Project.ItemsToDo == 0)
>] +} \ No newline at end of file diff --git a/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.TitleOnlyDefault.approved.html b/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.TitleOnlyDefault.approved.html index 6be2144..d9d234c 100644 --- a/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.TitleOnlyDefault.approved.html +++ b/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.TitleOnlyDefault.approved.html @@ -1,47 +1,47 @@ -digraph G { +digraph G { "FinishedDecision" -> "FinishResult" [label = "True"] -"FinishResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
FinishResult
>] +"FinishResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
FinishResult
>] "FinishedDecision" -> "False FinishedDecision - SendNotificationAction" [label = "False"] "False FinishedDecision - SendNotificationAction" -> "IsOnHoldDecision" [label = "False"] "IsOnHoldDecision" -> "DoNothingResult" [label = "True"] -"DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
DoNothingResult
>] +"DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
DoNothingResult
>] "IsOnHoldDecision" -> "ProjectTypeDecision" [label = "False"] "ProjectTypeDecision" -> "Internal ProjectTypeDecision - SendNotificationAction" [label = "Internal"] "Internal ProjectTypeDecision - SendNotificationAction" -> "ResetProjectAction" [label = "Internal"] "ResetProjectAction" -> "DoNothingResult" [label = "Internal"] -"ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
ResetProjectAction
>] -"Internal ProjectTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
Internal ProjectTypeDecision - SendNotificationAction
>] +"ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
ResetProjectAction
>] +"Internal ProjectTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
Internal ProjectTypeDecision - SendNotificationAction
>] "ProjectTypeDecision" -> "ProjectSubTypeDecision" [label = "#null_path"] "ProjectSubTypeDecision" -> "ToDoDecision" [label = "WordWide"] "ToDoDecision" -> "DeadlineDecision" [label = "True"] "DeadlineDecision" -> "True DeadlineDecision - SendNotificationAction" [label = "True"] "True DeadlineDecision - SendNotificationAction" -> "MoveDeadlineResult" [label = "True"] -"MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
MoveDeadlineResult
>] -"True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
True DeadlineDecision - SendNotificationAction
>] +"MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
MoveDeadlineResult
>] +"True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
True DeadlineDecision - SendNotificationAction
>] "DeadlineDecision" -> "BudgetDecision" [label = "False"] "BudgetDecision" -> "RequestBudgetResult" [label = "True"] -"RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
RequestBudgetResult
>] +"RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
RequestBudgetResult
>] "BudgetDecision" -> "DoNothingResult" [label = "False"] -"BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
BudgetDecision
>] -"DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
DeadlineDecision
>] +"BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
BudgetDecision
>] +"DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
DeadlineDecision
>] "ToDoDecision" -> "BudgetDecision" [label = "False"] -"ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ToDoDecision
>] +"ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ToDoDecision
>] "ProjectSubTypeDecision" -> "ToDoDecision" [label = "Foreign"] "ProjectSubTypeDecision" -> "#null ProjectSubTypeDecision - SendNotificationAction" [label = "#null_path"] "#null ProjectSubTypeDecision - SendNotificationAction" -> "ResetProjectAction" [label = "#null_path"] "ResetProjectAction" -> "DoNothingResult" [label = "#null_path"] -"#null ProjectSubTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
#null ProjectSubTypeDecision - SendNotificationAction
>] +"#null ProjectSubTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
#null ProjectSubTypeDecision - SendNotificationAction
>] "ProjectSubTypeDecision" -> "ProjectAreaDecision" [label = "#default_path"] "ProjectAreaDecision" -> "Hr ProjectAreaDecision - SendNotificationAction" [label = "Hr"] "Hr ProjectAreaDecision - SendNotificationAction" -> "ResetProjectAction" [label = "Hr"] "ResetProjectAction" -> "DoNothingResult" [label = "Hr"] -"Hr ProjectAreaDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
Hr ProjectAreaDecision - SendNotificationAction
>] +"Hr ProjectAreaDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
Hr ProjectAreaDecision - SendNotificationAction
>] "ProjectAreaDecision" -> "ToDoDecision" [label = "#default_path"] -"ProjectAreaDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectAreaDecision
>] -"ProjectSubTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectSubTypeDecision
>] +"ProjectAreaDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectAreaDecision
>] +"ProjectSubTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectSubTypeDecision
>] "ProjectTypeDecision" -> "ToDoDecision" [label = "#default_path"] -"ProjectTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectTypeDecision
>] -"IsOnHoldDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
IsOnHoldDecision
>] -"False FinishedDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
False FinishedDecision - SendNotificationAction
>] -"FinishedDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
FinishedDecision
>] +"ProjectTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectTypeDecision
>] +"IsOnHoldDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
IsOnHoldDecision
>] +"False FinishedDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
False FinishedDecision - SendNotificationAction
>] +"FinishedDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
FinishedDecision
>] } \ No newline at end of file diff --git a/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.TitleOnlyHorizontal.approved.html b/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.TitleOnlyHorizontal.approved.html index 5643011..c29d88a 100644 --- a/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.TitleOnlyHorizontal.approved.html +++ b/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.TitleOnlyHorizontal.approved.html @@ -1,48 +1,48 @@ -digraph G { +digraph G { rankdir = LR; "FinishedDecision" -> "FinishResult" [label = "True"] -"FinishResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
FinishResult
>] +"FinishResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
FinishResult
>] "FinishedDecision" -> "False FinishedDecision - SendNotificationAction" [label = "False"] "False FinishedDecision - SendNotificationAction" -> "IsOnHoldDecision" [label = "False"] "IsOnHoldDecision" -> "DoNothingResult" [label = "True"] -"DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
DoNothingResult
>] +"DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
DoNothingResult
>] "IsOnHoldDecision" -> "ProjectTypeDecision" [label = "False"] "ProjectTypeDecision" -> "Internal ProjectTypeDecision - SendNotificationAction" [label = "Internal"] "Internal ProjectTypeDecision - SendNotificationAction" -> "ResetProjectAction" [label = "Internal"] "ResetProjectAction" -> "DoNothingResult" [label = "Internal"] -"ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
ResetProjectAction
>] -"Internal ProjectTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
Internal ProjectTypeDecision - SendNotificationAction
>] +"ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
ResetProjectAction
>] +"Internal ProjectTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
Internal ProjectTypeDecision - SendNotificationAction
>] "ProjectTypeDecision" -> "ProjectSubTypeDecision" [label = "#null_path"] "ProjectSubTypeDecision" -> "ToDoDecision" [label = "WordWide"] "ToDoDecision" -> "DeadlineDecision" [label = "True"] "DeadlineDecision" -> "True DeadlineDecision - SendNotificationAction" [label = "True"] "True DeadlineDecision - SendNotificationAction" -> "MoveDeadlineResult" [label = "True"] -"MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
MoveDeadlineResult
>] -"True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
True DeadlineDecision - SendNotificationAction
>] +"MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
MoveDeadlineResult
>] +"True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
True DeadlineDecision - SendNotificationAction
>] "DeadlineDecision" -> "BudgetDecision" [label = "False"] "BudgetDecision" -> "RequestBudgetResult" [label = "True"] -"RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
RequestBudgetResult
>] +"RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
RequestBudgetResult
>] "BudgetDecision" -> "DoNothingResult" [label = "False"] -"BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
BudgetDecision
>] -"DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
DeadlineDecision
>] +"BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
BudgetDecision
>] +"DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
DeadlineDecision
>] "ToDoDecision" -> "BudgetDecision" [label = "False"] -"ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ToDoDecision
>] +"ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ToDoDecision
>] "ProjectSubTypeDecision" -> "ToDoDecision" [label = "Foreign"] "ProjectSubTypeDecision" -> "#null ProjectSubTypeDecision - SendNotificationAction" [label = "#null_path"] "#null ProjectSubTypeDecision - SendNotificationAction" -> "ResetProjectAction" [label = "#null_path"] "ResetProjectAction" -> "DoNothingResult" [label = "#null_path"] -"#null ProjectSubTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
#null ProjectSubTypeDecision - SendNotificationAction
>] +"#null ProjectSubTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
#null ProjectSubTypeDecision - SendNotificationAction
>] "ProjectSubTypeDecision" -> "ProjectAreaDecision" [label = "#default_path"] "ProjectAreaDecision" -> "Hr ProjectAreaDecision - SendNotificationAction" [label = "Hr"] "Hr ProjectAreaDecision - SendNotificationAction" -> "ResetProjectAction" [label = "Hr"] "ResetProjectAction" -> "DoNothingResult" [label = "Hr"] -"Hr ProjectAreaDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
Hr ProjectAreaDecision - SendNotificationAction
>] +"Hr ProjectAreaDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
Hr ProjectAreaDecision - SendNotificationAction
>] "ProjectAreaDecision" -> "ToDoDecision" [label = "#default_path"] -"ProjectAreaDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectAreaDecision
>] -"ProjectSubTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectSubTypeDecision
>] +"ProjectAreaDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectAreaDecision
>] +"ProjectSubTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectSubTypeDecision
>] "ProjectTypeDecision" -> "ToDoDecision" [label = "#default_path"] -"ProjectTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectTypeDecision
>] -"IsOnHoldDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
IsOnHoldDecision
>] -"False FinishedDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
False FinishedDecision - SendNotificationAction
>] -"FinishedDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
FinishedDecision
>] +"ProjectTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
ProjectTypeDecision
>] +"IsOnHoldDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
IsOnHoldDecision
>] +"False FinishedDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
False FinishedDecision - SendNotificationAction
>] +"FinishedDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
FinishedDecision
>] } \ No newline at end of file diff --git a/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.TitleOnlyHorizontalUniquePaths.approved.html b/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.TitleOnlyHorizontalUniquePaths.approved.html index 748bbad..d4e5309 100644 --- a/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.TitleOnlyHorizontalUniquePaths.approved.html +++ b/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.TitleOnlyHorizontalUniquePaths.approved.html @@ -1,116 +1,116 @@ -digraph G { +digraph G { rankdir = LR; "[1] FinishedDecision" -> "[2] FinishResult" [label = "True"] -"[2] FinishResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[2] FinishResult
>] +"[2] FinishResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[2] FinishResult
>] "[1] FinishedDecision" -> "[3] False FinishedDecision - SendNotificationAction" [label = "False"] "[3] False FinishedDecision - SendNotificationAction" -> "[4] IsOnHoldDecision" [label = "False"] "[4] IsOnHoldDecision" -> "[5] DoNothingResult" [label = "True"] -"[5] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[5] DoNothingResult
>] +"[5] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[5] DoNothingResult
>] "[4] IsOnHoldDecision" -> "[6] ProjectTypeDecision" [label = "False"] "[6] ProjectTypeDecision" -> "[7] Internal ProjectTypeDecision - SendNotificationAction" [label = "Internal"] "[7] Internal ProjectTypeDecision - SendNotificationAction" -> "[8] ResetProjectAction" [label = "Internal"] "[8] ResetProjectAction" -> "[9] DoNothingResult" [label = "Internal"] -"[9] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[9] DoNothingResult
>] -"[8] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[8] ResetProjectAction
>] -"[7] Internal ProjectTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[7] Internal ProjectTypeDecision - SendNotificationAction
>] +"[9] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[9] DoNothingResult
>] +"[8] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[8] ResetProjectAction
>] +"[7] Internal ProjectTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[7] Internal ProjectTypeDecision - SendNotificationAction
>] "[6] ProjectTypeDecision" -> "[10] ProjectSubTypeDecision" [label = "#null_path"] "[10] ProjectSubTypeDecision" -> "[11] ToDoDecision" [label = "WordWide"] "[11] ToDoDecision" -> "[12] DeadlineDecision" [label = "True"] "[12] DeadlineDecision" -> "[13] True DeadlineDecision - SendNotificationAction" [label = "True"] "[13] True DeadlineDecision - SendNotificationAction" -> "[14] MoveDeadlineResult" [label = "True"] -"[14] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[14] MoveDeadlineResult
>] -"[13] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[13] True DeadlineDecision - SendNotificationAction
>] +"[14] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[14] MoveDeadlineResult
>] +"[13] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[13] True DeadlineDecision - SendNotificationAction
>] "[12] DeadlineDecision" -> "[15] BudgetDecision" [label = "False"] "[15] BudgetDecision" -> "[16] RequestBudgetResult" [label = "True"] -"[16] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[16] RequestBudgetResult
>] +"[16] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[16] RequestBudgetResult
>] "[15] BudgetDecision" -> "[17] DoNothingResult" [label = "False"] -"[17] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[17] DoNothingResult
>] -"[15] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[15] BudgetDecision
>] -"[12] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[12] DeadlineDecision
>] +"[17] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[17] DoNothingResult
>] +"[15] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[15] BudgetDecision
>] +"[12] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[12] DeadlineDecision
>] "[11] ToDoDecision" -> "[18] BudgetDecision" [label = "False"] "[18] BudgetDecision" -> "[19] RequestBudgetResult" [label = "True"] -"[19] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[19] RequestBudgetResult
>] +"[19] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[19] RequestBudgetResult
>] "[18] BudgetDecision" -> "[20] DoNothingResult" [label = "False"] -"[20] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[20] DoNothingResult
>] -"[18] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[18] BudgetDecision
>] -"[11] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[11] ToDoDecision
>] +"[20] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[20] DoNothingResult
>] +"[18] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[18] BudgetDecision
>] +"[11] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[11] ToDoDecision
>] "[10] ProjectSubTypeDecision" -> "[21] ToDoDecision" [label = "Foreign"] "[21] ToDoDecision" -> "[22] DeadlineDecision" [label = "True"] "[22] DeadlineDecision" -> "[23] True DeadlineDecision - SendNotificationAction" [label = "True"] "[23] True DeadlineDecision - SendNotificationAction" -> "[24] MoveDeadlineResult" [label = "True"] -"[24] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[24] MoveDeadlineResult
>] -"[23] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[23] True DeadlineDecision - SendNotificationAction
>] +"[24] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[24] MoveDeadlineResult
>] +"[23] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[23] True DeadlineDecision - SendNotificationAction
>] "[22] DeadlineDecision" -> "[25] BudgetDecision" [label = "False"] "[25] BudgetDecision" -> "[26] RequestBudgetResult" [label = "True"] -"[26] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[26] RequestBudgetResult
>] +"[26] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[26] RequestBudgetResult
>] "[25] BudgetDecision" -> "[27] DoNothingResult" [label = "False"] -"[27] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[27] DoNothingResult
>] -"[25] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[25] BudgetDecision
>] -"[22] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[22] DeadlineDecision
>] +"[27] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[27] DoNothingResult
>] +"[25] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[25] BudgetDecision
>] +"[22] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[22] DeadlineDecision
>] "[21] ToDoDecision" -> "[28] BudgetDecision" [label = "False"] "[28] BudgetDecision" -> "[29] RequestBudgetResult" [label = "True"] -"[29] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[29] RequestBudgetResult
>] +"[29] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[29] RequestBudgetResult
>] "[28] BudgetDecision" -> "[30] DoNothingResult" [label = "False"] -"[30] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[30] DoNothingResult
>] -"[28] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[28] BudgetDecision
>] -"[21] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[21] ToDoDecision
>] +"[30] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[30] DoNothingResult
>] +"[28] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[28] BudgetDecision
>] +"[21] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[21] ToDoDecision
>] "[10] ProjectSubTypeDecision" -> "[31] #null ProjectSubTypeDecision - SendNotificationAction" [label = "#null_path"] "[31] #null ProjectSubTypeDecision - SendNotificationAction" -> "[32] ResetProjectAction" [label = "#null_path"] "[32] ResetProjectAction" -> "[33] DoNothingResult" [label = "#null_path"] -"[33] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[33] DoNothingResult
>] -"[32] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[32] ResetProjectAction
>] -"[31] #null ProjectSubTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[31] #null ProjectSubTypeDecision - SendNotificationAction
>] +"[33] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[33] DoNothingResult
>] +"[32] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[32] ResetProjectAction
>] +"[31] #null ProjectSubTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[31] #null ProjectSubTypeDecision - SendNotificationAction
>] "[10] ProjectSubTypeDecision" -> "[34] ProjectAreaDecision" [label = "#default_path"] "[34] ProjectAreaDecision" -> "[35] Hr ProjectAreaDecision - SendNotificationAction" [label = "Hr"] "[35] Hr ProjectAreaDecision - SendNotificationAction" -> "[36] ResetProjectAction" [label = "Hr"] "[36] ResetProjectAction" -> "[37] DoNothingResult" [label = "Hr"] -"[37] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[37] DoNothingResult
>] -"[36] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[36] ResetProjectAction
>] -"[35] Hr ProjectAreaDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[35] Hr ProjectAreaDecision - SendNotificationAction
>] +"[37] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[37] DoNothingResult
>] +"[36] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[36] ResetProjectAction
>] +"[35] Hr ProjectAreaDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[35] Hr ProjectAreaDecision - SendNotificationAction
>] "[34] ProjectAreaDecision" -> "[38] ToDoDecision" [label = "#default_path"] "[38] ToDoDecision" -> "[39] DeadlineDecision" [label = "True"] "[39] DeadlineDecision" -> "[40] True DeadlineDecision - SendNotificationAction" [label = "True"] "[40] True DeadlineDecision - SendNotificationAction" -> "[41] MoveDeadlineResult" [label = "True"] -"[41] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[41] MoveDeadlineResult
>] -"[40] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[40] True DeadlineDecision - SendNotificationAction
>] +"[41] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[41] MoveDeadlineResult
>] +"[40] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[40] True DeadlineDecision - SendNotificationAction
>] "[39] DeadlineDecision" -> "[42] BudgetDecision" [label = "False"] "[42] BudgetDecision" -> "[43] RequestBudgetResult" [label = "True"] -"[43] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[43] RequestBudgetResult
>] +"[43] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[43] RequestBudgetResult
>] "[42] BudgetDecision" -> "[44] DoNothingResult" [label = "False"] -"[44] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[44] DoNothingResult
>] -"[42] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[42] BudgetDecision
>] -"[39] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[39] DeadlineDecision
>] +"[44] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[44] DoNothingResult
>] +"[42] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[42] BudgetDecision
>] +"[39] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[39] DeadlineDecision
>] "[38] ToDoDecision" -> "[45] BudgetDecision" [label = "False"] "[45] BudgetDecision" -> "[46] RequestBudgetResult" [label = "True"] -"[46] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[46] RequestBudgetResult
>] +"[46] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[46] RequestBudgetResult
>] "[45] BudgetDecision" -> "[47] DoNothingResult" [label = "False"] -"[47] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[47] DoNothingResult
>] -"[45] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[45] BudgetDecision
>] -"[38] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[38] ToDoDecision
>] -"[34] ProjectAreaDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[34] ProjectAreaDecision
>] -"[10] ProjectSubTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[10] ProjectSubTypeDecision
>] +"[47] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[47] DoNothingResult
>] +"[45] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[45] BudgetDecision
>] +"[38] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[38] ToDoDecision
>] +"[34] ProjectAreaDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[34] ProjectAreaDecision
>] +"[10] ProjectSubTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[10] ProjectSubTypeDecision
>] "[6] ProjectTypeDecision" -> "[48] ToDoDecision" [label = "#default_path"] "[48] ToDoDecision" -> "[49] DeadlineDecision" [label = "True"] "[49] DeadlineDecision" -> "[50] True DeadlineDecision - SendNotificationAction" [label = "True"] "[50] True DeadlineDecision - SendNotificationAction" -> "[51] MoveDeadlineResult" [label = "True"] -"[51] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[51] MoveDeadlineResult
>] -"[50] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[50] True DeadlineDecision - SendNotificationAction
>] +"[51] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[51] MoveDeadlineResult
>] +"[50] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[50] True DeadlineDecision - SendNotificationAction
>] "[49] DeadlineDecision" -> "[52] BudgetDecision" [label = "False"] "[52] BudgetDecision" -> "[53] RequestBudgetResult" [label = "True"] -"[53] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[53] RequestBudgetResult
>] +"[53] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[53] RequestBudgetResult
>] "[52] BudgetDecision" -> "[54] DoNothingResult" [label = "False"] -"[54] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[54] DoNothingResult
>] -"[52] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[52] BudgetDecision
>] -"[49] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[49] DeadlineDecision
>] +"[54] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[54] DoNothingResult
>] +"[52] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[52] BudgetDecision
>] +"[49] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[49] DeadlineDecision
>] "[48] ToDoDecision" -> "[55] BudgetDecision" [label = "False"] "[55] BudgetDecision" -> "[56] RequestBudgetResult" [label = "True"] -"[56] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[56] RequestBudgetResult
>] +"[56] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[56] RequestBudgetResult
>] "[55] BudgetDecision" -> "[57] DoNothingResult" [label = "False"] -"[57] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[57] DoNothingResult
>] -"[55] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[55] BudgetDecision
>] -"[48] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[48] ToDoDecision
>] -"[6] ProjectTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[6] ProjectTypeDecision
>] -"[4] IsOnHoldDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[4] IsOnHoldDecision
>] -"[3] False FinishedDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[3] False FinishedDecision - SendNotificationAction
>] -"[1] FinishedDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[1] FinishedDecision
>] +"[57] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[57] DoNothingResult
>] +"[55] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[55] BudgetDecision
>] +"[48] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[48] ToDoDecision
>] +"[6] ProjectTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[6] ProjectTypeDecision
>] +"[4] IsOnHoldDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[4] IsOnHoldDecision
>] +"[3] False FinishedDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[3] False FinishedDecision - SendNotificationAction
>] +"[1] FinishedDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[1] FinishedDecision
>] } \ No newline at end of file diff --git a/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.TitleOnlyUniquePaths.approved.html b/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.TitleOnlyUniquePaths.approved.html index 5dc37a1..1b82269 100644 --- a/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.TitleOnlyUniquePaths.approved.html +++ b/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.TitleOnlyUniquePaths.approved.html @@ -1,115 +1,115 @@ -digraph G { +digraph G { "[1] FinishedDecision" -> "[2] FinishResult" [label = "True"] -"[2] FinishResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[2] FinishResult
>] +"[2] FinishResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[2] FinishResult
>] "[1] FinishedDecision" -> "[3] False FinishedDecision - SendNotificationAction" [label = "False"] "[3] False FinishedDecision - SendNotificationAction" -> "[4] IsOnHoldDecision" [label = "False"] "[4] IsOnHoldDecision" -> "[5] DoNothingResult" [label = "True"] -"[5] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[5] DoNothingResult
>] +"[5] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[5] DoNothingResult
>] "[4] IsOnHoldDecision" -> "[6] ProjectTypeDecision" [label = "False"] "[6] ProjectTypeDecision" -> "[7] Internal ProjectTypeDecision - SendNotificationAction" [label = "Internal"] "[7] Internal ProjectTypeDecision - SendNotificationAction" -> "[8] ResetProjectAction" [label = "Internal"] "[8] ResetProjectAction" -> "[9] DoNothingResult" [label = "Internal"] -"[9] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[9] DoNothingResult
>] -"[8] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[8] ResetProjectAction
>] -"[7] Internal ProjectTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[7] Internal ProjectTypeDecision - SendNotificationAction
>] +"[9] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[9] DoNothingResult
>] +"[8] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[8] ResetProjectAction
>] +"[7] Internal ProjectTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[7] Internal ProjectTypeDecision - SendNotificationAction
>] "[6] ProjectTypeDecision" -> "[10] ProjectSubTypeDecision" [label = "#null_path"] "[10] ProjectSubTypeDecision" -> "[11] ToDoDecision" [label = "WordWide"] "[11] ToDoDecision" -> "[12] DeadlineDecision" [label = "True"] "[12] DeadlineDecision" -> "[13] True DeadlineDecision - SendNotificationAction" [label = "True"] "[13] True DeadlineDecision - SendNotificationAction" -> "[14] MoveDeadlineResult" [label = "True"] -"[14] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[14] MoveDeadlineResult
>] -"[13] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[13] True DeadlineDecision - SendNotificationAction
>] +"[14] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[14] MoveDeadlineResult
>] +"[13] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[13] True DeadlineDecision - SendNotificationAction
>] "[12] DeadlineDecision" -> "[15] BudgetDecision" [label = "False"] "[15] BudgetDecision" -> "[16] RequestBudgetResult" [label = "True"] -"[16] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[16] RequestBudgetResult
>] +"[16] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[16] RequestBudgetResult
>] "[15] BudgetDecision" -> "[17] DoNothingResult" [label = "False"] -"[17] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[17] DoNothingResult
>] -"[15] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[15] BudgetDecision
>] -"[12] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[12] DeadlineDecision
>] +"[17] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[17] DoNothingResult
>] +"[15] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[15] BudgetDecision
>] +"[12] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[12] DeadlineDecision
>] "[11] ToDoDecision" -> "[18] BudgetDecision" [label = "False"] "[18] BudgetDecision" -> "[19] RequestBudgetResult" [label = "True"] -"[19] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[19] RequestBudgetResult
>] +"[19] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[19] RequestBudgetResult
>] "[18] BudgetDecision" -> "[20] DoNothingResult" [label = "False"] -"[20] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[20] DoNothingResult
>] -"[18] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[18] BudgetDecision
>] -"[11] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[11] ToDoDecision
>] +"[20] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[20] DoNothingResult
>] +"[18] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[18] BudgetDecision
>] +"[11] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[11] ToDoDecision
>] "[10] ProjectSubTypeDecision" -> "[21] ToDoDecision" [label = "Foreign"] "[21] ToDoDecision" -> "[22] DeadlineDecision" [label = "True"] "[22] DeadlineDecision" -> "[23] True DeadlineDecision - SendNotificationAction" [label = "True"] "[23] True DeadlineDecision - SendNotificationAction" -> "[24] MoveDeadlineResult" [label = "True"] -"[24] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[24] MoveDeadlineResult
>] -"[23] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[23] True DeadlineDecision - SendNotificationAction
>] +"[24] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[24] MoveDeadlineResult
>] +"[23] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[23] True DeadlineDecision - SendNotificationAction
>] "[22] DeadlineDecision" -> "[25] BudgetDecision" [label = "False"] "[25] BudgetDecision" -> "[26] RequestBudgetResult" [label = "True"] -"[26] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[26] RequestBudgetResult
>] +"[26] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[26] RequestBudgetResult
>] "[25] BudgetDecision" -> "[27] DoNothingResult" [label = "False"] -"[27] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[27] DoNothingResult
>] -"[25] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[25] BudgetDecision
>] -"[22] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[22] DeadlineDecision
>] +"[27] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[27] DoNothingResult
>] +"[25] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[25] BudgetDecision
>] +"[22] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[22] DeadlineDecision
>] "[21] ToDoDecision" -> "[28] BudgetDecision" [label = "False"] "[28] BudgetDecision" -> "[29] RequestBudgetResult" [label = "True"] -"[29] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[29] RequestBudgetResult
>] +"[29] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[29] RequestBudgetResult
>] "[28] BudgetDecision" -> "[30] DoNothingResult" [label = "False"] -"[30] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[30] DoNothingResult
>] -"[28] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[28] BudgetDecision
>] -"[21] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[21] ToDoDecision
>] +"[30] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[30] DoNothingResult
>] +"[28] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[28] BudgetDecision
>] +"[21] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[21] ToDoDecision
>] "[10] ProjectSubTypeDecision" -> "[31] #null ProjectSubTypeDecision - SendNotificationAction" [label = "#null_path"] "[31] #null ProjectSubTypeDecision - SendNotificationAction" -> "[32] ResetProjectAction" [label = "#null_path"] "[32] ResetProjectAction" -> "[33] DoNothingResult" [label = "#null_path"] -"[33] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[33] DoNothingResult
>] -"[32] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[32] ResetProjectAction
>] -"[31] #null ProjectSubTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[31] #null ProjectSubTypeDecision - SendNotificationAction
>] +"[33] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[33] DoNothingResult
>] +"[32] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[32] ResetProjectAction
>] +"[31] #null ProjectSubTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[31] #null ProjectSubTypeDecision - SendNotificationAction
>] "[10] ProjectSubTypeDecision" -> "[34] ProjectAreaDecision" [label = "#default_path"] "[34] ProjectAreaDecision" -> "[35] Hr ProjectAreaDecision - SendNotificationAction" [label = "Hr"] "[35] Hr ProjectAreaDecision - SendNotificationAction" -> "[36] ResetProjectAction" [label = "Hr"] "[36] ResetProjectAction" -> "[37] DoNothingResult" [label = "Hr"] -"[37] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[37] DoNothingResult
>] -"[36] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[36] ResetProjectAction
>] -"[35] Hr ProjectAreaDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[35] Hr ProjectAreaDecision - SendNotificationAction
>] +"[37] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[37] DoNothingResult
>] +"[36] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[36] ResetProjectAction
>] +"[35] Hr ProjectAreaDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[35] Hr ProjectAreaDecision - SendNotificationAction
>] "[34] ProjectAreaDecision" -> "[38] ToDoDecision" [label = "#default_path"] "[38] ToDoDecision" -> "[39] DeadlineDecision" [label = "True"] "[39] DeadlineDecision" -> "[40] True DeadlineDecision - SendNotificationAction" [label = "True"] "[40] True DeadlineDecision - SendNotificationAction" -> "[41] MoveDeadlineResult" [label = "True"] -"[41] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[41] MoveDeadlineResult
>] -"[40] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[40] True DeadlineDecision - SendNotificationAction
>] +"[41] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[41] MoveDeadlineResult
>] +"[40] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[40] True DeadlineDecision - SendNotificationAction
>] "[39] DeadlineDecision" -> "[42] BudgetDecision" [label = "False"] "[42] BudgetDecision" -> "[43] RequestBudgetResult" [label = "True"] -"[43] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[43] RequestBudgetResult
>] +"[43] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[43] RequestBudgetResult
>] "[42] BudgetDecision" -> "[44] DoNothingResult" [label = "False"] -"[44] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[44] DoNothingResult
>] -"[42] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[42] BudgetDecision
>] -"[39] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[39] DeadlineDecision
>] +"[44] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[44] DoNothingResult
>] +"[42] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[42] BudgetDecision
>] +"[39] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[39] DeadlineDecision
>] "[38] ToDoDecision" -> "[45] BudgetDecision" [label = "False"] "[45] BudgetDecision" -> "[46] RequestBudgetResult" [label = "True"] -"[46] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[46] RequestBudgetResult
>] +"[46] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[46] RequestBudgetResult
>] "[45] BudgetDecision" -> "[47] DoNothingResult" [label = "False"] -"[47] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[47] DoNothingResult
>] -"[45] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[45] BudgetDecision
>] -"[38] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[38] ToDoDecision
>] -"[34] ProjectAreaDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[34] ProjectAreaDecision
>] -"[10] ProjectSubTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[10] ProjectSubTypeDecision
>] +"[47] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[47] DoNothingResult
>] +"[45] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[45] BudgetDecision
>] +"[38] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[38] ToDoDecision
>] +"[34] ProjectAreaDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[34] ProjectAreaDecision
>] +"[10] ProjectSubTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[10] ProjectSubTypeDecision
>] "[6] ProjectTypeDecision" -> "[48] ToDoDecision" [label = "#default_path"] "[48] ToDoDecision" -> "[49] DeadlineDecision" [label = "True"] "[49] DeadlineDecision" -> "[50] True DeadlineDecision - SendNotificationAction" [label = "True"] "[50] True DeadlineDecision - SendNotificationAction" -> "[51] MoveDeadlineResult" [label = "True"] -"[51] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[51] MoveDeadlineResult
>] -"[50] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[50] True DeadlineDecision - SendNotificationAction
>] +"[51] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[51] MoveDeadlineResult
>] +"[50] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[50] True DeadlineDecision - SendNotificationAction
>] "[49] DeadlineDecision" -> "[52] BudgetDecision" [label = "False"] "[52] BudgetDecision" -> "[53] RequestBudgetResult" [label = "True"] -"[53] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[53] RequestBudgetResult
>] +"[53] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[53] RequestBudgetResult
>] "[52] BudgetDecision" -> "[54] DoNothingResult" [label = "False"] -"[54] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[54] DoNothingResult
>] -"[52] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[52] BudgetDecision
>] -"[49] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[49] DeadlineDecision
>] +"[54] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[54] DoNothingResult
>] +"[52] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[52] BudgetDecision
>] +"[49] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[49] DeadlineDecision
>] "[48] ToDoDecision" -> "[55] BudgetDecision" [label = "False"] "[55] BudgetDecision" -> "[56] RequestBudgetResult" [label = "True"] -"[56] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[56] RequestBudgetResult
>] +"[56] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[56] RequestBudgetResult
>] "[55] BudgetDecision" -> "[57] DoNothingResult" [label = "False"] -"[57] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[57] DoNothingResult
>] -"[55] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[55] BudgetDecision
>] -"[48] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[48] ToDoDecision
>] -"[6] ProjectTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[6] ProjectTypeDecision
>] -"[4] IsOnHoldDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[4] IsOnHoldDecision
>] -"[3] False FinishedDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[3] False FinishedDecision - SendNotificationAction
>] -"[1] FinishedDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[1] FinishedDecision
>] +"[57] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[57] DoNothingResult
>] +"[55] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[55] BudgetDecision
>] +"[48] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[48] ToDoDecision
>] +"[6] ProjectTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[6] ProjectTypeDecision
>] +"[4] IsOnHoldDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[4] IsOnHoldDecision
>] +"[3] False FinishedDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[3] False FinishedDecision - SendNotificationAction
>] +"[1] FinishedDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[1] FinishedDecision
>] } \ No newline at end of file diff --git a/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.UniquePaths.approved.html b/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.UniquePaths.approved.html index 963a814..17f469c 100644 --- a/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.UniquePaths.approved.html +++ b/DecisionTree.Tests/approvals/DecisionTreeTest.DecisionTree_Should_Define_Graph.UniquePaths.approved.html @@ -1,115 +1,115 @@ digraph G { "[1] FinishedDecision" -> "[2] FinishResult" [label = "True"] -"[2] FinishResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[2] FinishResult
dto => dto
.SetResult("Project is finished.")
>] +"[2] FinishResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[2] FinishResult
dto => dto
.SetResult("Project is finished.")
>] "[1] FinishedDecision" -> "[3] False FinishedDecision - SendNotificationAction" [label = "False"] "[3] False FinishedDecision - SendNotificationAction" -> "[4] IsOnHoldDecision" [label = "False"] "[4] IsOnHoldDecision" -> "[5] DoNothingResult" [label = "True"] -"[5] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[5] DoNothingResult
>] +"[5] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[5] DoNothingResult
>] "[4] IsOnHoldDecision" -> "[6] ProjectTypeDecision" [label = "False"] "[6] ProjectTypeDecision" -> "[7] Internal ProjectTypeDecision - SendNotificationAction" [label = "Internal"] "[7] Internal ProjectTypeDecision - SendNotificationAction" -> "[8] ResetProjectAction" [label = "Internal"] "[8] ResetProjectAction" -> "[9] DoNothingResult" [label = "Internal"] -"[9] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[9] DoNothingResult
>] -"[8] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[8] ResetProjectAction
dto => dto
.SetItemsToDo(0)
.SetBudgetRemaining(0)
>] -"[7] Internal ProjectTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[7] Internal ProjectTypeDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"[9] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[9] DoNothingResult
>] +"[8] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[8] ResetProjectAction
dto => dto
.SetItemsToDo(0)
.SetBudgetRemaining(0)
>] +"[7] Internal ProjectTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[7] Internal ProjectTypeDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] "[6] ProjectTypeDecision" -> "[10] ProjectSubTypeDecision" [label = "#null_path"] "[10] ProjectSubTypeDecision" -> "[11] ToDoDecision" [label = "WordWide"] "[11] ToDoDecision" -> "[12] DeadlineDecision" [label = "True"] "[12] DeadlineDecision" -> "[13] True DeadlineDecision - SendNotificationAction" [label = "True"] "[13] True DeadlineDecision - SendNotificationAction" -> "[14] MoveDeadlineResult" [label = "True"] -"[14] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[14] MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] -"[13] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[13] True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"[14] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[14] MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] +"[13] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[13] True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] "[12] DeadlineDecision" -> "[15] BudgetDecision" [label = "False"] "[15] BudgetDecision" -> "[16] RequestBudgetResult" [label = "True"] -"[16] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[16] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] +"[16] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[16] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] "[15] BudgetDecision" -> "[17] DoNothingResult" [label = "False"] -"[17] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[17] DoNothingResult
>] -"[15] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[15] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] -"[12] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[12] DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] +"[17] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[17] DoNothingResult
>] +"[15] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[15] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] +"[12] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[12] DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] "[11] ToDoDecision" -> "[18] BudgetDecision" [label = "False"] "[18] BudgetDecision" -> "[19] RequestBudgetResult" [label = "True"] -"[19] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[19] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] +"[19] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[19] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] "[18] BudgetDecision" -> "[20] DoNothingResult" [label = "False"] -"[20] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[20] DoNothingResult
>] -"[18] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[18] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] -"[11] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[11] ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] +"[20] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[20] DoNothingResult
>] +"[18] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[18] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] +"[11] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[11] ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] "[10] ProjectSubTypeDecision" -> "[21] ToDoDecision" [label = "Foreign"] "[21] ToDoDecision" -> "[22] DeadlineDecision" [label = "True"] "[22] DeadlineDecision" -> "[23] True DeadlineDecision - SendNotificationAction" [label = "True"] "[23] True DeadlineDecision - SendNotificationAction" -> "[24] MoveDeadlineResult" [label = "True"] -"[24] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[24] MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] -"[23] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[23] True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"[24] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[24] MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] +"[23] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[23] True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] "[22] DeadlineDecision" -> "[25] BudgetDecision" [label = "False"] "[25] BudgetDecision" -> "[26] RequestBudgetResult" [label = "True"] -"[26] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[26] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] +"[26] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[26] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] "[25] BudgetDecision" -> "[27] DoNothingResult" [label = "False"] -"[27] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[27] DoNothingResult
>] -"[25] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[25] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] -"[22] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[22] DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] +"[27] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[27] DoNothingResult
>] +"[25] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[25] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] +"[22] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[22] DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] "[21] ToDoDecision" -> "[28] BudgetDecision" [label = "False"] "[28] BudgetDecision" -> "[29] RequestBudgetResult" [label = "True"] -"[29] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[29] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] +"[29] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[29] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] "[28] BudgetDecision" -> "[30] DoNothingResult" [label = "False"] -"[30] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[30] DoNothingResult
>] -"[28] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[28] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] -"[21] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[21] ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] +"[30] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[30] DoNothingResult
>] +"[28] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[28] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] +"[21] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[21] ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] "[10] ProjectSubTypeDecision" -> "[31] #null ProjectSubTypeDecision - SendNotificationAction" [label = "#null_path"] "[31] #null ProjectSubTypeDecision - SendNotificationAction" -> "[32] ResetProjectAction" [label = "#null_path"] "[32] ResetProjectAction" -> "[33] DoNothingResult" [label = "#null_path"] -"[33] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[33] DoNothingResult
>] -"[32] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[32] ResetProjectAction
dto => dto
.SetItemsToDo(0)
.SetBudgetRemaining(0)
>] -"[31] #null ProjectSubTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[31] #null ProjectSubTypeDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"[33] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[33] DoNothingResult
>] +"[32] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[32] ResetProjectAction
dto => dto
.SetItemsToDo(0)
.SetBudgetRemaining(0)
>] +"[31] #null ProjectSubTypeDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[31] #null ProjectSubTypeDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] "[10] ProjectSubTypeDecision" -> "[34] ProjectAreaDecision" [label = "#default_path"] "[34] ProjectAreaDecision" -> "[35] Hr ProjectAreaDecision - SendNotificationAction" [label = "Hr"] "[35] Hr ProjectAreaDecision - SendNotificationAction" -> "[36] ResetProjectAction" [label = "Hr"] "[36] ResetProjectAction" -> "[37] DoNothingResult" [label = "Hr"] -"[37] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[37] DoNothingResult
>] -"[36] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[36] ResetProjectAction
dto => dto
.SetItemsToDo(0)
.SetBudgetRemaining(0)
>] -"[35] Hr ProjectAreaDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[35] Hr ProjectAreaDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"[37] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[37] DoNothingResult
>] +"[36] ResetProjectAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[36] ResetProjectAction
dto => dto
.SetItemsToDo(0)
.SetBudgetRemaining(0)
>] +"[35] Hr ProjectAreaDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[35] Hr ProjectAreaDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] "[34] ProjectAreaDecision" -> "[38] ToDoDecision" [label = "#default_path"] "[38] ToDoDecision" -> "[39] DeadlineDecision" [label = "True"] "[39] DeadlineDecision" -> "[40] True DeadlineDecision - SendNotificationAction" [label = "True"] "[40] True DeadlineDecision - SendNotificationAction" -> "[41] MoveDeadlineResult" [label = "True"] -"[41] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[41] MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] -"[40] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[40] True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"[41] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[41] MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] +"[40] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[40] True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] "[39] DeadlineDecision" -> "[42] BudgetDecision" [label = "False"] "[42] BudgetDecision" -> "[43] RequestBudgetResult" [label = "True"] -"[43] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[43] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] +"[43] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[43] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] "[42] BudgetDecision" -> "[44] DoNothingResult" [label = "False"] -"[44] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[44] DoNothingResult
>] -"[42] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[42] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] -"[39] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[39] DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] +"[44] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[44] DoNothingResult
>] +"[42] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[42] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] +"[39] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[39] DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] "[38] ToDoDecision" -> "[45] BudgetDecision" [label = "False"] "[45] BudgetDecision" -> "[46] RequestBudgetResult" [label = "True"] -"[46] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[46] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] +"[46] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[46] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] "[45] BudgetDecision" -> "[47] DoNothingResult" [label = "False"] -"[47] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[47] DoNothingResult
>] -"[45] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[45] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] -"[38] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[38] ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] -"[34] ProjectAreaDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[34] ProjectAreaDecision
dto => dto.Project.Area
>] -"[10] ProjectSubTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[10] ProjectSubTypeDecision
dto => dto.Project.SubType
>] +"[47] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[47] DoNothingResult
>] +"[45] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[45] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] +"[38] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[38] ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] +"[34] ProjectAreaDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[34] ProjectAreaDecision
dto => dto.Project.Area
>] +"[10] ProjectSubTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[10] ProjectSubTypeDecision
dto => dto.Project.SubType
>] "[6] ProjectTypeDecision" -> "[48] ToDoDecision" [label = "#default_path"] "[48] ToDoDecision" -> "[49] DeadlineDecision" [label = "True"] "[49] DeadlineDecision" -> "[50] True DeadlineDecision - SendNotificationAction" [label = "True"] "[50] True DeadlineDecision - SendNotificationAction" -> "[51] MoveDeadlineResult" [label = "True"] -"[51] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[51] MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] -"[50] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[50] True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"[51] MoveDeadlineResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[51] MoveDeadlineResult
dto => dto
.SetResult("Timeline reevaluation needed.")
>] +"[50] True DeadlineDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[50] True DeadlineDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] "[49] DeadlineDecision" -> "[52] BudgetDecision" [label = "False"] "[52] BudgetDecision" -> "[53] RequestBudgetResult" [label = "True"] -"[53] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[53] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] +"[53] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[53] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] "[52] BudgetDecision" -> "[54] DoNothingResult" [label = "False"] -"[54] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[54] DoNothingResult
>] -"[52] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[52] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] -"[49] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[49] DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] +"[54] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[54] DoNothingResult
>] +"[52] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[52] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] +"[49] DeadlineDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[49] DeadlineDecision
dto => (dto.Project.TimeToDeadline.Days < 7)
>] "[48] ToDoDecision" -> "[55] BudgetDecision" [label = "False"] "[55] BudgetDecision" -> "[56] RequestBudgetResult" [label = "True"] -"[56] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[56] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] +"[56] RequestBudgetResult" [style = "filled" penwidth = 1 fillcolor = "#28a745" fontname = "Courier New" shape = "Mrecord" label = <
[56] RequestBudgetResult
dto => dto
.SetResult("Not enough funds.")
.SetIsOnHold(True)
>] "[55] BudgetDecision" -> "[57] DoNothingResult" [label = "False"] -"[57] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[57] DoNothingResult
>] -"[55] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[55] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] -"[48] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[48] ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] -"[6] ProjectTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[6] ProjectTypeDecision
dto => dto.Project.Type
>] -"[4] IsOnHoldDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[4] IsOnHoldDecision
dto => dto.Project.IsOnHold
>] -"[3] False FinishedDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[3] False FinishedDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] -"[1] FinishedDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[1] FinishedDecision
dto => (dto.Project.ItemsToDo == 0)
>] +"[57] DoNothingResult" [style = "filled" penwidth = 1 fillcolor = "#343a40" fontname = "Courier New" shape = "Mrecord" label = <
[57] DoNothingResult
>] +"[55] BudgetDecision" [style = "filled" penwidth = 1 fillcolor = "#007bff" fontname = "Courier New" shape = "Mrecord" label = <
[55] BudgetDecision
dto => (dto.Project.BudgetRemaining < (dto.Project.ItemsToDo * 1000))
dto => dto
.SetIsBudgetReviewed(True)
>] +"[48] ToDoDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[48] ToDoDecision
dto => (dto.Project.ItemsToDo > 10)
>] +"[6] ProjectTypeDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[6] ProjectTypeDecision
dto => dto.Project.Type
>] +"[4] IsOnHoldDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[4] IsOnHoldDecision
dto => dto.Project.IsOnHold
>] +"[3] False FinishedDecision - SendNotificationAction" [style = "filled" penwidth = 1 fillcolor = "#6c757d" fontname = "Courier New" shape = "Mrecord" label = <
[3] False FinishedDecision - SendNotificationAction
dto => dto
.SetSendNotification(True)
>] +"[1] FinishedDecision" [style = "filled" penwidth = 1 fillcolor = "#17a2b8" fontname = "Courier New" shape = "Mrecord" label = <
[1] FinishedDecision
dto => (dto.Project.ItemsToDo == 0)
>] } \ No newline at end of file diff --git a/DecisionTree/DecisionTree.csproj b/DecisionTree/DecisionTree.csproj index 406fbc1..59bf563 100644 --- a/DecisionTree/DecisionTree.csproj +++ b/DecisionTree/DecisionTree.csproj @@ -14,8 +14,8 @@ Piotr Smreczynski Decision Tree + Visualisation Lightweight framework to define decision trees via configuration with option to generate graph definition in DOT language. - Added option to generate graph definition with only Titles and Paths - 1.1.1 + Added custom graph styling options via GraphOptions.GraphStyle . + 1.1.2 diff --git a/DecisionTree/DotTreeExtensions/DecisionExtensions.cs b/DecisionTree/DotTreeExtensions/DecisionExtensions.cs index 73a837c..d44d276 100644 --- a/DecisionTree/DotTreeExtensions/DecisionExtensions.cs +++ b/DecisionTree/DotTreeExtensions/DecisionExtensions.cs @@ -3,7 +3,6 @@ using System.Linq; using System.Reflection; using System.Text.RegularExpressions; -using System.Web; using DecisionTree.Decisions.DecisionsBase; using DecisionTree.DotTreeExtensions.Dto; using DecisionTree.Exceptions; @@ -12,6 +11,10 @@ namespace DecisionTree.DotTreeExtensions { public static class DecisionExtensions { + private const string DefaultPathText = "#default_path"; + private const string NullPathText = "#null_path"; + private const string ActionPartRegexPattern = "(?=\\.[^\\)]+?\\([^\\)]+\\))"; + private static readonly Dictionary ExtensionBindingDictionary = new Dictionary { @@ -20,44 +23,22 @@ public static class DecisionExtensions {typeof(IDecisionAction<>), GetPrivateStaticMethodInfo(nameof(PrintAction))} }; + public static string Print(this IDecision decision, GraphOptions options) => + decision.InvokeChildPrint(new GraphConfig(options)); + private static MethodInfo GetPrivateStaticMethodInfo(string name) => typeof(DecisionExtensions) .GetMethod(name, BindingFlags.NonPublic | BindingFlags.Static); - private static readonly Dictionary TitleStyleDictionary = - new Dictionary - { - {TitleStyle.Decision, "#17a2b8"}, - {TitleStyle.DecisionAction, "#007bff"}, - {TitleStyle.Result, "#343a40"}, - {TitleStyle.ResultAction, "#28a745"}, - {TitleStyle.Action, "#6c757d"} - }; - - private const string DefaultPathText = "#default_path"; - private const string NullPathText = "#null_path"; - private const string ActionCellStyle = "align=\"left\""; - private const string ActionPartRegexPattern = "(?=\\.[^\\)]+?\\([^\\)]+\\))"; - private const string FontStyle = "color=\"white\""; - private const string Separator = ""; - - public static string Print(this IDecision decision, GraphOptions options) - { - var nodeId = options.UseUniquePaths ? new NodeId() : null; - var graphConfig = new GraphConfig(nodeId, options.TitleOnly); - - return decision.InvokeChildPrint(graphConfig); - } - private static string InvokeChildPrint(this IDecision decision, GraphConfig graphConfig) => InvokeChildPrint(decision, graphConfig, null); - private static string InvokeChildPrint(this IDecision decision, GraphConfig graphConfig, string key) + private static string InvokeChildPrint(this IDecision decision, GraphConfig graphConfig, string label) { var implementedInterface = GetImplementedPrintableInterface(decision); graphConfig.NodeId?.Increment(); - var printParams = new object[] { decision, graphConfig, key }; + var printParams = new object[] { decision, graphConfig, label }; return (string)ExtensionBindingDictionary[implementedInterface.GetGenericTypeDefinition()] .MakeGenericMethod(implementedInterface.GenericTypeArguments) @@ -80,20 +61,24 @@ private static string PrintNode(this IDecisionNode node, var titleWithCounter = AddCounter(graphConfig.NodeId?.Counter, node.Title); if (label != null) - printResult += $"\"{titleWithCounter}\" [label = \"{label}\"]{Environment.NewLine}"; + printResult += DotFormattingHelper + .GetLabel(titleWithCounter, label); foreach (var (key, decision) in node.Paths) - printResult += $"\"{titleWithCounter}\" -> {decision.InvokeChildPrint(graphConfig, key.ToString())}"; + printResult += DotFormattingHelper + .GetPath(titleWithCounter, decision.InvokeChildPrint(graphConfig, key.ToString())); if (node.NullPath != null) - printResult += $"\"{titleWithCounter}\" -> {node.NullPath.InvokeChildPrint(graphConfig, NullPathText)}"; + printResult += DotFormattingHelper + .GetPath(titleWithCounter, node.NullPath.InvokeChildPrint(graphConfig, NullPathText)); if (node.DefaultPath != null) - printResult += $"\"{titleWithCounter}\" -> {node.DefaultPath.InvokeChildPrint(graphConfig, DefaultPathText)}"; + printResult += DotFormattingHelper + .GetPath(titleWithCounter, node.DefaultPath.InvokeChildPrint(graphConfig, DefaultPathText)); printResult += node.Action != null - ? GetHtmlTable(node.Action.ToString(), graphConfig.TitleOnly, condition, titleWithCounter, TitleStyle.DecisionAction) - : GetHtmlTable(string.Empty, graphConfig.TitleOnly, condition, titleWithCounter, TitleStyle.Decision); + ? GetHtmlTable(node.Action.ToString(), graphConfig, condition, titleWithCounter, StyleElement.DecisionAction) + : GetHtmlTable(string.Empty, graphConfig, condition, titleWithCounter, StyleElement.Decision); return printResult; } @@ -103,10 +88,11 @@ private static string PrintResult(this IDecisionResult result, GraphConfig var titleWithCounter = AddCounter(graphConfig.NodeId?.Counter, result.Title); var actionDescription = result.Action != null - ? GetHtmlTable(result.Action.ToString(), graphConfig.TitleOnly, titleWithCounter, TitleStyle.ResultAction) - : GetHtmlTable(string.Empty, graphConfig.TitleOnly, titleWithCounter, TitleStyle.Result); + ? GetHtmlTable(result.Action.ToString(), graphConfig, titleWithCounter, StyleElement.ResultAction) + : GetHtmlTable(string.Empty, graphConfig, titleWithCounter, StyleElement.Result); - return $"\"{titleWithCounter}\" [label = \"{label}\"]{Environment.NewLine}{actionDescription}"; + return DotFormattingHelper + .GetLabel(titleWithCounter, label, actionDescription); } private static string PrintAction(this IDecisionAction action, GraphConfig graphConfig, string label) @@ -116,35 +102,54 @@ private static string PrintAction(this IDecisionAction action, GraphConfig var titleWithCounter = AddCounter(graphConfig.NodeId?.Counter, action.Title); if (label != null) - printResult += $"\"{titleWithCounter}\" [label = \"{label}\"]{Environment.NewLine}"; + printResult += DotFormattingHelper + .GetLabel(titleWithCounter, label); if (action.Path != null) - printResult += $"\"{titleWithCounter}\" -> {action.Path.InvokeChildPrint(graphConfig, label)}"; + printResult += DotFormattingHelper + .GetPath(titleWithCounter, action.Path.InvokeChildPrint(graphConfig, label)); - printResult += GetHtmlTable(action.Action.ToString(), graphConfig.TitleOnly, titleWithCounter, TitleStyle.Action); + printResult += GetHtmlTable(action.Action.ToString(), graphConfig, titleWithCounter, StyleElement.Action); return printResult; } - private static string GetHtmlTable(string action, bool titleOnly, string title, TitleStyle titleStyle) => - GetHtmlTable(action, titleOnly, null, title, titleStyle); + private static string GetHtmlTable(string action, GraphConfig graphConfig, string title, StyleElement styleElement) => + GetHtmlTable(action, graphConfig, null, title, styleElement); - private static string GetHtmlTable(string action, bool titleOnly, string condition, string title, TitleStyle titleStyle) + private static string GetHtmlTable(string action, GraphConfig graphConfig, string condition, string title, StyleElement styleElement) { - var style = TitleStyleDictionary[titleStyle]; - var actionStyle = GetActionStyle(style); + var color = graphConfig.GetColor(styleElement); + var fontColor = graphConfig.GetColor(StyleElement.Font); - if (titleOnly) - return $"\"{title}\" [{actionStyle} label = {GetTableBody(title, style)}]{Environment.NewLine}"; + if (graphConfig.TitleOnly) + return DotFormattingHelper.GetTableBody(title, color, fontColor); - var actionPartRow = string.Empty; + var conditionRow = GetConditionRow(condition, fontColor); + var actionPartRow = GetActionPartRow(action, fontColor); + + return DotFormattingHelper.GetTableBody(title, conditionRow, actionPartRow, color, fontColor); + } + + private static string GetConditionRow(string condition, string fontColor) + { var conditionRow = string.Empty; - if (condition != null) - { - conditionRow += Separator; - conditionRow += GetConditionRow(condition); - } + if (condition == null) + return conditionRow; + + conditionRow += DotFormattingHelper + .GetSeparator(fontColor); + + conditionRow += DotFormattingHelper + .GetConditionRow(condition, fontColor); + + return conditionRow; + } + + private static string GetActionPartRow(string action, string fontColor) + { + var actionPartRow = string.Empty; var actionParts = Regex .Split(action, ActionPartRegexPattern) @@ -152,58 +157,19 @@ private static string GetHtmlTable(string action, bool titleOnly, string conditi .ToList(); if (actionParts.Any()) - actionPartRow += Separator; + actionPartRow += DotFormattingHelper + .GetSeparator(fontColor); foreach (var actionPart in actionParts) - actionPartRow += GetActionPartRow(actionPart); + actionPartRow += DotFormattingHelper + .GetActionPartRow(actionPart, fontColor); - var table = GetTableBody(title, conditionRow, actionPartRow, style); - - return $"\"{title}\" [{actionStyle} label = {table}]{Environment.NewLine}"; + return actionPartRow; } - private static string AddCounter(int? counter, string title) - { - return counter != null - ? $"[{counter}] {title}" + private static string AddCounter(int? counter, string title) => + counter != null + ? DotFormattingHelper.GetTitleWithCounter(counter, title) : title; - } - - private static string GetTableBody(string title, string style) => - GetTableBody(title, null, null, style); - - private static string GetTableBody(string title, string conditionRow, string actionPartRow, string style) => - $"<" + - "" + - $"" + - "" + - conditionRow + - actionPartRow + - "
" + - $"{HttpUtility.HtmlEncode(title)}" + - "
>"; - - private static string GetConditionRow(string condition) => - "" + - $"" + - $"{HttpUtility.HtmlEncode(condition)}" + - "" + - ""; - - private static string GetActionPartRow(string actionPart) => - "" + - $"" + - $"{HttpUtility.HtmlEncode(actionPart)}" + - "" + - ""; - - private static string GetTitleCellStyle(string style) => - $"bgcolor=\"{style}\" align=\"center\""; - - private static string GetTableStyle(string style) => - $"border=\"0\" cellborder=\"0\" cellpadding=\"3\" bgcolor=\"{style}\""; - - private static string GetActionStyle(string style) => - $"style = \"filled\" penwidth = 1 fillcolor = \"{style}\" fontname = \"Courier New\" shape = \"Mrecord\""; } } diff --git a/DecisionTree/DotTreeExtensions/DotFormattingHelper.cs b/DecisionTree/DotTreeExtensions/DotFormattingHelper.cs new file mode 100644 index 0000000..5ed3200 --- /dev/null +++ b/DecisionTree/DotTreeExtensions/DotFormattingHelper.cs @@ -0,0 +1,68 @@ +using System; +using System.Web; + +namespace DecisionTree.DotTreeExtensions +{ + internal class DotFormattingHelper + { + public static string GetTableBody(string title, string color, string fontColor) => + GetTableBody(title, null, null, color, fontColor); + + public static string GetTableBody(string title, string conditionRow, string actionPartRow, string color, string fontColor) => + $"\"{title}\" [{GetActionStyle(color)} label = " + + $"<" + + "" + + $"" + + "" + + conditionRow + + actionPartRow + + "
" + + $"{HttpUtility.HtmlEncode(title)}" + + "
>" + + $"]{Environment.NewLine}"; + + public static string GetConditionRow(string condition, string fontColor) => + "" + + "" + + $"{HttpUtility.HtmlEncode(condition)}" + + "" + + ""; + + public static string GetActionPartRow(string actionPart, string fontColor) => + "" + + "" + + $"{HttpUtility.HtmlEncode(actionPart)}" + + "" + + ""; + + public static string GetLabel(string titleWithCounter, string label) => + GetLabel(titleWithCounter, label, string.Empty); + + public static string GetLabel(string titleWithCounter, string label, string actionDescription) => + $"\"{titleWithCounter}\" [label = \"{label}\"]{Environment.NewLine}{actionDescription}"; + + public static string GetTitleWithCounter(int? counter, string title) => + $"[{counter}] {title}"; + + public static string GetPath(string titleWithCounter, string childString) => + $"\"{titleWithCounter}\" -> {childString}"; + + private static string GetActionStyle(string color) => + $"style = \"filled\" penwidth = 1 fillcolor = \"{color}\" fontname = \"Courier New\" shape = \"Mrecord\""; + + private static string GetTitleCellStyle(string color) => + $"bgcolor = \"{color}\" align = \"center\""; + + private static string GetTableStyle(string color) => + $"border = \"0\" cellborder = \"0\" cellpadding = \"3\" bgcolor = \"{color}\""; + + private static string GetFontStyle(string fontColor) => + $"color = \"{fontColor}\""; + + public static string GetSeparator(string fontColor) => + "" + + $"" + + "" + + ""; + } +} diff --git a/DecisionTree/DotTreeExtensions/Dto/GraphConfig.cs b/DecisionTree/DotTreeExtensions/Dto/GraphConfig.cs index 3cc7a7c..5eb1a69 100644 --- a/DecisionTree/DotTreeExtensions/Dto/GraphConfig.cs +++ b/DecisionTree/DotTreeExtensions/Dto/GraphConfig.cs @@ -2,13 +2,15 @@ { internal class GraphConfig { - public GraphConfig(NodeId nodeId, bool titleOnly) + public GraphConfig(GraphOptions options) { - NodeId = nodeId; - TitleOnly = titleOnly; + NodeId = options.UseUniquePaths ? new NodeId() : null; + TitleOnly = options.TitleOnly; + Style = options.GraphStyle ?? new GraphStyle(); } public NodeId NodeId { get; } public bool TitleOnly { get; } + public GraphStyle Style { get; } } } diff --git a/DecisionTree/DotTreeExtensions/GraphConfigExtensions.cs b/DecisionTree/DotTreeExtensions/GraphConfigExtensions.cs new file mode 100644 index 0000000..0a9d62c --- /dev/null +++ b/DecisionTree/DotTreeExtensions/GraphConfigExtensions.cs @@ -0,0 +1,18 @@ +using DecisionTree.DotTreeExtensions.Dto; + +namespace DecisionTree.DotTreeExtensions +{ + internal static class GraphConfigExtensions + { + public static string GetColor(this GraphConfig graphConfig, StyleElement styleElement) => + styleElement switch + { + StyleElement.Decision => graphConfig.Style.DecisionColor, + StyleElement.DecisionAction => graphConfig.Style.DecisionActionColor, + StyleElement.Result => graphConfig.Style.ResultColor, + StyleElement.ResultAction => graphConfig.Style.ResultActionColor, + StyleElement.Action => graphConfig.Style.ActionColor, + StyleElement.Font => graphConfig.Style.FontColor + }; + } +} diff --git a/DecisionTree/DotTreeExtensions/GraphOptions.cs b/DecisionTree/DotTreeExtensions/GraphOptions.cs index f7b7375..83d951d 100644 --- a/DecisionTree/DotTreeExtensions/GraphOptions.cs +++ b/DecisionTree/DotTreeExtensions/GraphOptions.cs @@ -14,5 +14,9 @@ public class GraphOptions /// Will generate graph definition with only titles and paths. /// public bool TitleOnly { get; set; } + /// + /// Custom graph style configuration. Will override default styling where provided. + /// + public GraphStyle GraphStyle { get; set; } } } diff --git a/DecisionTree/DotTreeExtensions/GraphStyle.cs b/DecisionTree/DotTreeExtensions/GraphStyle.cs new file mode 100644 index 0000000..8ea0165 --- /dev/null +++ b/DecisionTree/DotTreeExtensions/GraphStyle.cs @@ -0,0 +1,35 @@ +namespace DecisionTree.DotTreeExtensions +{ + public class GraphStyle + { + /// + /// Block color for Decisions. Use HTML like Hex Color Code "#RRGGBB" or color name "black". + /// + public string DecisionColor { get; set; } = "#17a2b8"; + + /// + /// Block color for Decisions with Action. Use HTML like Hex Color Code "#RRGGBB" or color name "black". + /// + public string DecisionActionColor { get; set; } = "#007bff"; + + /// + /// Block color for Results. Use HTML like Hex Color Code "#RRGGBB" or color name "black". + /// + public string ResultColor { get; set; } = "#343a40"; + + /// + /// Block color for Results with Action. Use HTML like Hex Color Code "#RRGGBB" or color name "black". + /// + public string ResultActionColor { get; set; } = "#28a745"; + + /// + /// Block color for Actions. Use HTML like Hex Color Code "#RRGGBB" or color name "black". + /// + public string ActionColor { get; set; } = "#6c757d"; + + /// + /// Font color used in blocks. Use HTML like Hex Color Code "#RRGGBB" or color name "black". + /// + public string FontColor { get; set; } = "#ffffff"; + } +} diff --git a/DecisionTree/DotTreeExtensions/TitleStyle.cs b/DecisionTree/DotTreeExtensions/StyleElement.cs similarity index 70% rename from DecisionTree/DotTreeExtensions/TitleStyle.cs rename to DecisionTree/DotTreeExtensions/StyleElement.cs index b68fb67..a1938d9 100644 --- a/DecisionTree/DotTreeExtensions/TitleStyle.cs +++ b/DecisionTree/DotTreeExtensions/StyleElement.cs @@ -1,11 +1,12 @@ namespace DecisionTree.DotTreeExtensions { - internal enum TitleStyle + internal enum StyleElement { Decision, DecisionAction, Result, ResultAction, - Action + Action, + Font } }