extend_DAG¶
TODO: See also DAG_extension - should it be merged here?
Intro¶
This doc shows examples how default state DAG can be extended.
It uses:
Lowercase letters (e.g.)
aare used for state names.Uppercase letters (e.g.)
Aare used for class implementing the state.
Normally, they are closely related (e.g. a ~ A)
because states have their meaning and that implies specific dependencies.
In other words:
implementation
Aof stateaassumes it implements nothing else butaand depends on statesb,c, ...implementation
Zof statezassumes it implements nothing else butzand depends on statesx,y, ...
But it is not always the case. For example, see below (replace by new and use old)
Case: trivial extend only¶
Let's say state c implemented by class C is the default target:
graph TD
a["a(A)"]
b["b(B)"]
c["c(C) / default target"]
a --> c;
b --> c;
Extend it by state d implemented by class D and make d the default target:
graph TD
a["a(A)"]
b["b(B)"]
c["c(C)"]
d["d(D) / default target"]
a --> c;
b --> c;
c --> d;
Case: replace only¶
Let's say state c implemented by class C has to be replaced:
graph TD
a["a(A)"]
b["b(B)"]
c["c(C)"]
d["d(D)"]
a --> c;
b --> c;
c --> d;
Instead, c has to be implemented by class X:
graph TD
a["a(A)"]
b["b(B)"]
c["c(X)"]
d["d(D)"]
a --> c;
b --> c;
c --> d;