Skip to main content

Online edition for BLOGE 0.9.8-RC1 · facts verified 2026-09-15 · 中文

Arc 1 Recap — Introductory (Chapters 1–4)

You now have the vocabulary and mental model to read a small BLOGE DAG and predict how its declared data dependencies move.


What You Learned

Chapter 1 — What BLOGE Is and Why It Exists gave you the three defining properties of BLOGE: workflows are visible (the graph shape is explicit), execution is dependency-driven (you declare edges, the engine decides order), and resilience is built in (retry, timeout, fallback are part of the model).

Chapter 2 — Your First Graph made the theory concrete. You built a graph, ran it, inspected GraphResult, and saw that the engine — not you — decides what can run in parallel.

Chapter 3 — Thinking in Dependencies sharpened your eye for dependency edges. You learned to read a DAG, spot unnecessary serialisation, and distinguish control dependencies from data dependencies.

Chapter 4 — Data That Flows completed the picture. You learned how data enters via context, flows between nodes through input bindings, and exits through node outputs. You practiced path expressions, safe navigation (?.), null coalescing (??), transforms, and lambda input bindings.


What You Should Be Able to Do Now

  • Describe BLOGE in one sentence without jargon.
  • Draw the dependency graph of a small workflow on paper and predict its execution order.
  • Write a simple .bloge file with three or four nodes, explicit dependencies, and input bindings.
  • Read a GraphResult and extract typed outputs safely.
  • Explain the difference between a transform and an operator node.

Common Mistakes at This Stage

MistakeWhy It HappensFix
Adding unnecessary depends_on edgesConfusing "this runs after that" with "this actually needs that node's data"Ask: does the downstream node read the upstream output? If not, drop the edge.
Ignoring findOutput in favor of getOutputAssuming every node always completesUse findOutput or getOutputOrDefault when the node could be skipped or fail.
Putting business logic in transformsTransforms are projections without an Operator invocation or a separately scheduled node, but their expressions still consume computeIf the code has side effects or can fail, it belongs in an operator.
Hard-coding values instead of using ctx.*Copy-pasting from an example without parameterisingMove environment- or caller-specific values into the graph context.

Key Vocabulary

TermMeaning
GraphA directed acyclic graph of business steps with explicit data and control flow.
NodeOne step in the graph, backed by an operator.
OperatorA typed function (I, GraphContext) → O that does the real work.
Dependency edgeA directed link that says "this node cannot start until that node finishes."
Input bindingAn expression that resolves a node's input from context, upstream outputs, or literals.
TransformA projection-only node — reshapes data but carries no scheduling overhead.
GraphResultThe immutable record returned after execution: success flag, outputs, statuses, timings.

Try It: Remove a False Dependency

Draw breakfast as four nodes: boil water, toast bread, brew coffee, and serve. Add only the dependencies that are physically necessary. Then remove one edge and explain whether you gained safe parallelism or introduced a race.


Where to Go Next

Arc 2 teaches you to make decisions inside a graph (branches), handle failure (resilience), design clean operators, and write maintainable, reviewable DSL files. Start with Chapter 5 — Branches That Decide.