Just add a small point to what @Jan_Brian_Despi mentioned…
These are the stuff that are required to perform certain activities within the workflow. They need values from the calling workflow. So when invoking, we should pass variables that contain the required value for the In argument
It’s the other way around. Out arguments are the results that a workflow return to its calling workflow. Basically its the result of the process. So the calling workflow should have a variable assigned to hold the value it returns.
in/ Out argument
This is a argument type that combines the features of the above two. In can pass a value to the invoking workflow and also return a value through the same argument. So, the calling workflow should have a variable dedicated to it to send and also to receive the result.