mirror of
https://github.com/forcedotcom/afv-library.git
synced 2026-08-09 00:42:46 +08:00
Adds the curated reference library the skill loads on demand, plus
four synthetic sample BDTs used by docs, tests, and LLM-mode demos.
references/ (4 curated Markdown files):
- bdt-reference.md — top-level BDT JSON anatomy: envelope,
nodes, edges, UI layer, definitions,
businessType semantics. Cites the core-262
upstream JSON schema and Connect API spec.
- bdt-node-catalog.md — every node type (DMO Source, DMO Sink,
Filter, Join, Union, Aggregate, Window,
Formula, Split, Append, etc.) with its
required/optional fields and typical
usage. Audited against core-262 enums.
- bdt-function-catalog.md — the expression-language function surface
(string, numeric, date, conditional,
aggregate). Grouped by category with
signature + one-line semantics.
- bdt-window-functions.md — windowing operators (ROW_NUMBER, RANK,
LEAD/LAG, running aggregates) with PARTITION
BY / ORDER BY grammar and gotchas.
assets/sample_bdts/ (4 synthetic, dependency-free BDTs):
- minimal_dmo_to_dmo.json — smallest valid BDT (1 source, 1 sink).
- joins_and_filters.json — join + filter composition.
- window_and_aggregate.json — window function + aggregate in one graph.
- append_and_split.json — append-then-split branching topology.
Grounding rules enforced in this commit:
- Every claim in references/ cites an upstream source (core-262 JSON
schema, Connect API reference, or the Data Cloud BDT editor spec).
No speculative content.
- No raw DITA or internal-only documentation is shipped; references
are synthesized from public-facing material.
- BusinessTypeEnum values use the canonical camelCase casing from
core-262 (case-cleanup fix included here).
- Sample BDTs are original synthetic fixtures, not redacted customer
data. Each is small enough to read end-to-end.
@W-22196528@
75 lines
2.5 KiB
JSON
75 lines
2.5 KiB
JSON
{
|
|
"version": "66.0",
|
|
"nodes": {
|
|
"LOAD_ORDERS": {
|
|
"action": "load",
|
|
"sources": [],
|
|
"parameters": {
|
|
"dataset": {"name": "ssot__SalesOrder__dlm", "type": "dataModelObject"},
|
|
"fields": ["ssot__Id__c", "ssot__AccountId__c", "ssot__CreatedDate__c", "ssot__GrandTotalAmount__c"],
|
|
"sampleDetails": {"type": "TopN", "sortBy": []}
|
|
}
|
|
},
|
|
"RANK_ORDERS": {
|
|
"action": "computeRelative",
|
|
"sources": ["LOAD_ORDERS"],
|
|
"parameters": {
|
|
"partitionBy": ["ssot__AccountId__c"],
|
|
"orderBy": [{"fieldName": "ssot__CreatedDate__c", "direction": "ASC"}],
|
|
"expressionType": "SQL",
|
|
"fields": [
|
|
{
|
|
"name": "OrderRank__c",
|
|
"label": "Order Rank",
|
|
"formulaExpression": "row_number()",
|
|
"type": "NUMBER",
|
|
"businessType": "Number",
|
|
"precision": 18,
|
|
"scale": 0,
|
|
"defaultValue": ""
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"AGG_BY_ACCOUNT": {
|
|
"action": "aggregate",
|
|
"sources": ["RANK_ORDERS"],
|
|
"parameters": {
|
|
"groupings": ["ssot__AccountId__c"],
|
|
"aggregations": [
|
|
{"action": "SUM", "name": "TotalAmount__c", "source": "ssot__GrandTotalAmount__c"},
|
|
{"action": "COUNT", "name": "OrderCount__c", "source": "ssot__Id__c"}
|
|
],
|
|
"nodeType": "STANDARD"
|
|
}
|
|
},
|
|
"OUTPUT_SUMMARY": {
|
|
"action": "outputD360",
|
|
"sources": ["AGG_BY_ACCOUNT"],
|
|
"parameters": {
|
|
"name": "Account_Summary__dlm",
|
|
"type": "dataModelObject",
|
|
"writeMode": "OVERWRITE",
|
|
"fieldsMappings": [
|
|
{"sourceField": "ssot__AccountId__c", "targetField": "AccountId__c"},
|
|
{"sourceField": "TotalAmount__c", "targetField": "TotalAmount__c"},
|
|
{"sourceField": "OrderCount__c", "targetField": "OrderCount__c"}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"ui": {
|
|
"nodes": {
|
|
"LOAD_ORDERS": {"label": "Sales Orders", "type": "LOAD_DATASET", "top": 100, "left": 100},
|
|
"RANK_ORDERS": {"label": "Rank by account", "type": "COMPUTE_RELATIVE", "top": 100, "left": 260},
|
|
"AGG_BY_ACCOUNT": {"label": "Totals per account", "type": "AGGREGATE", "top": 100, "left": 420},
|
|
"OUTPUT_SUMMARY": {"label": "Account Summary", "type": "OUTPUT", "top": 100, "left": 580}
|
|
},
|
|
"connectors": [
|
|
{"source": "LOAD_ORDERS", "target": "RANK_ORDERS"},
|
|
{"source": "RANK_ORDERS", "target": "AGG_BY_ACCOUNT"},
|
|
{"source": "AGG_BY_ACCOUNT", "target": "OUTPUT_SUMMARY"}
|
|
]
|
|
}
|
|
}
|