Resolve what the validity badge reports
Finish the job graph, configure each required field, and distinguish the header's DAG validity from node-level readiness.
1. Objective
Goal
Build CSV source → Cast → Filter → CSV destination. Configure Cast and Filter with fields defined in NodeConfigDialog, choose a destination file, connect the four nodes, and verify both graph validity and node configuration.
Why this matters
The header's Valid state comes from DAG validation: no duplicated IDs, unknown dependencies, or cycle. Individual node badges use isNodeConfigured. A trustworthy job needs both; a green DAG badge alone does not prove required connector fields are filled.
Continue with studio-course, the manual first-workflow, and the first-job canvas saved by the preceding lesson. Do not create a parallel replacement project.
Prerequisites
- The top bar shows API online.
- The cumulative workflow is open in the editor.
- The preceding lesson checklist is complete.
2. Steps
01Add and configure Cast
Objective
Give numeric CSV columns explicit types before comparison.
Actions
- Drag Cast from Transformations.
- Double-click it.
- Enter
{"price":"float","qty":"int"}in Types (JSON), then save.
Transformations → Cast → Types (JSON)
The Cast node has the required mapping used by the real dialog schema.
Cast
Types (JSON) *
{"price":"float","qty":"int"}
Save02Add and configure Filter
Objective
Remove the fixture row whose price is zero.
Actions
- Drag Filter after Cast.
- Double-click it.
- Enter
price > 0in Expression, then save.
Transformations → Filter → Expression: price > 0
The Filter node has the required non-empty expression.
Filter Expression * price > 0 Save
03Add the CSV destination
Objective
Choose the physical target the completed job will write.
Actions
- Drag CSV from Destinations to the right of Filter.
- Double-click the destination node.
- Use Browse to choose a save path ending in
studio-output.csv, then save.
Destinations → CSV → Browse → studio-output.csv
Destination CSV requires one File path and accepts a save-file picker.
CSV File path * ./output/file.csv Browse Save
04Connect and verify both layers
Objective
Build one acyclic source-to-destination chain and check every node.
Actions
- Connect Source to Cast, Cast to Filter, and Filter to Destination.
- Read the toolbar counter and Valid badge.
- Inspect every node for configured state before saving.
CSV source → Cast → Filter → CSV destination → Save
The designed chain has four nodes, three directed edges, no DAG error, and all required fields saved.
4 nodes · 3 edges Valid Saved ✓
Tips and traps
Sources and transformations live in Jobs configuration. Jobs and actions live in Workflow configuration.
A container never runs. Five nodes on screen can mean four steps in the YAML.
An edge leaves a right handle and enters a left handle. Direction is never ambiguous.
The Valid badge means the manifest parses. Only a run proves the job works.
A policy reaches only what sits inside the container. A node beside it gets nothing.
Studio can be ahead of the disk. Open the file to be sure.
Counts and durations are live values. Never quote them as thresholds.
An animation is not an outcome. Wait for a terminal state on the Runs page.
3. Checklist
| Verification | Expected result |
|---|---|
| Graph | Source → Cast → Filter → Destination |
| Required mappings | price float and qty int |
| Filter | price > 0 |
| Readiness | DAG Valid plus every node configured |
4. Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Valid appears while a node is incomplete | Header validity checks the DAG | Open each node and satisfy its required fields |
| An edge is rejected | Direction, capacity, duplicate, or cycle rule is violated | Connect left to right once and keep destination last |
| Cast remains incomplete | Mapping JSON is blank or malformed | Use the exact JSON object and save |
5. Next lesson
The visual job is complete and serialized. The next lesson selects Run Job, opens the Logs panel automatically, and follows the status produced by the inline job execution path.