First thing you have to determine is to use a Flow that Creates, or Grabs parts. This is really dependent on how you look at your specific case.
As an example we will look at two different implementations for a flow that creates a Part B by combining part B, C and D. The figure below show the implementation when a flow is used that grabs parts.
Note: To make this flow work, the way it is displayed, you will need an Input - Output element on one of the steps inside the flow. This Input - Output combination will transform a part A into a part B.

The resulting part B will show that Part C and D are consumed by Part B. It does not show Part A as a consumed part, because Part A was transformed into Part B.
Another implementation is shown in the following figure:

Note: In this case Part A is defined as a Name Value on the Step Definition. Now at the first step of the flow part B is created, and this part consumed Part A and Part C.
In the different genealogy diagrams for the different flows it is clear that the second flow created a part, this diagram contains in total 4 parts versus 3 parts for the Grab flow.
It can be seen that a flow always need a carrier through the different steps, if the flow does not grab a part to do this carrying, it will create a carrier part.