Create Nodes first, then Links with a unique Key, SourceKey, TargetKey and nonnegative Value. Both endpoints must exist in Nodes. Link keys must be distinct from node keys. Aggregate duplicate business flows if you want one visible link per pair. The graph must be acyclic: remove self-links and loops before binding. Orientation and NodeAlign control layout.
Create your own GetChartData Data Action or Server Action, authorize its query and return the typed Lists above. If an Aggregate returns entity records, map them explicitly into these public Structures using a For Each, Assign and ListAppend. Only bind a query result directly when its type already matches. The chart does not query your database.
Nodes · BluChartFlowNode List · sample records and mapping
Create a screen local Nodes of type BluChartFlowNode List. In your mapping action, use a temporary RowNodes of type BluChartFlowNode. Fill every field used by this chart before appending each row.
ListClear(List: Nodes)
For Each source record in your ordered query result:
Assign RowNodes fields from that record
ListAppend(List: Nodes, Element: RowNodes)
Example Assign values for the first sample row:
RowNodes.Key = "Organic"
RowNodes.Label = "Organic"
RowNodes.Color.Mode = Entities.ChartColorMode.Automatic
RowNodes.Color.ThemeColor = Entities.ComponentColor.Primary
RowNodes.Color.Hex = ""
The loop describes your action flow, not code to paste into a JavaScript node. Replace the sample literals with your query fields. Reset optional fields on every iteration so values do not carry over from the previous row.
For a quick fixture, use JSON Deserialize with Data Type BluChartFlowNode List, then assign its Data output to Nodes. In the JSONString expression editor, wrap the copied JSON in a Text literal and double embedded quotes, or read it from a Text variable. The resulting Block input remains a typed List.
[
{
"Key": "Organic",
"Label": "Organic",
"Color": {
"Mode": "Automatic",
"ThemeColor": "Primary",
"Hex": ""
}
},
{
"Key": "Paid",
"Label": "Paid",
"Color": {
"Mode": "Automatic",
"ThemeColor": "Primary",
"Hex": ""
}
},
{
"Key": "Referral",
"Label": "Referral",
"Color": {
"Mode": "Automatic",
"ThemeColor": "Primary",
"Hex": ""
}
},
{
"Key": "Trial",
"Label": "Trial",
"Color": {
"Mode": "Automatic",
"ThemeColor": "Primary",
"Hex": ""
}
},
{
"Key": "Demo",
"Label": "Demo",
"Color": {
"Mode": "Automatic",
"ThemeColor": "Primary",
"Hex": ""
}
},
{
"Key": "Customer",
"Label": "Customer",
"Color": {
"Mode": "Automatic",
"ThemeColor": "Primary",
"Hex": ""
}
}
]
Links · BluChartFlowLink List · sample records and mapping
Create a screen local Links of type BluChartFlowLink List. In your mapping action, use a temporary RowLinks of type BluChartFlowLink. Fill every field used by this chart before appending each row.
ListClear(List: Links)
For Each source record in your ordered query result:
Assign RowLinks fields from that record
ListAppend(List: Links, Element: RowLinks)
Example Assign values for the first sample row:
RowLinks.Key = "organic-trial"
RowLinks.SourceKey = "Organic"
RowLinks.TargetKey = "Trial"
RowLinks.Value = 180
The loop describes your action flow, not code to paste into a JavaScript node. Replace the sample literals with your query fields. Reset optional fields on every iteration so values do not carry over from the previous row.
For a quick fixture, use JSON Deserialize with Data Type BluChartFlowLink List, then assign its Data output to Links. In the JSONString expression editor, wrap the copied JSON in a Text literal and double embedded quotes, or read it from a Text variable. The resulting Block input remains a typed List.
[
{
"Key": "organic-trial",
"SourceKey": "Organic",
"TargetKey": "Trial",
"Value": 180
},
{
"Key": "paid-trial",
"SourceKey": "Paid",
"TargetKey": "Trial",
"Value": 120
},
{
"Key": "paid-demo",
"SourceKey": "Paid",
"TargetKey": "Demo",
"Value": 80
},
{
"Key": "referral-demo",
"SourceKey": "Referral",
"TargetKey": "Demo",
"Value": 100
},
{
"Key": "trial-customer",
"SourceKey": "Trial",
"TargetKey": "Customer",
"Value": 210
},
{
"Key": "demo-customer",
"SourceKey": "Demo",
"TargetKey": "Customer",
"Value": 140
}
]