diff --git a/core/engine/src/handler/graph.rs b/core/engine/src/handler/graph.rs index aa5727ff..ce13813d 100644 --- a/core/engine/src/handler/graph.rs +++ b/core/engine/src/handler/graph.rs @@ -261,14 +261,14 @@ impl DecisionGraph< }); walker.set_node_data(nid, res.output); } - DecisionNodeKind::DecisionNode { .. } => { + DecisionNodeKind::DecisionNode { content } => { let node_request = NodeRequest { node: node.clone(), iteration: self.iteration, input: walker.incoming_node_data(&self.graph, nid, true), }; - let res = DecisionHandler::new( + let mut res = DecisionHandler::new( self.trace, self.max_depth, self.loader.clone(), @@ -285,6 +285,11 @@ impl DecisionGraph< node_request.input.dot_remove("$nodes"); res.output.dot_remove("$nodes"); + if content.pass_through { + let mut base = node_request.input.clone(); + res.output = base.merge(&res.output) + } + trace!({ input: node_request.input, output: res.output.clone(), @@ -312,6 +317,7 @@ impl DecisionGraph< node_request.input.dot_remove("$nodes"); res.output.dot_remove("$nodes"); + res.output.dot_remove("$"); if content.pass_through { let mut base = node_request.input.clone(); diff --git a/core/engine/src/model/mod.rs b/core/engine/src/model/mod.rs index 6c571262..c4a77c8a 100644 --- a/core/engine/src/model/mod.rs +++ b/core/engine/src/model/mod.rs @@ -75,6 +75,8 @@ pub struct FunctionContent { #[serde(rename_all = "camelCase")] pub struct DecisionNodeContent { pub key: String, + #[serde(default)] + pub pass_through: bool, #[serde(flatten)] pub transform_attributes: TransformAttributes, }