This request is a bit old, but for others that may have the same question, the Workflow step that is used to launch a sub-workflow has a configuration option to select variables to be passed to the sub-workflow. In order to receive those variables, the sub-workflow needs to have variables with the same names and data types as the variables being passed.
To pass data back from the sub-workflow to the parent workflow, use the Update Parent Variable step which allows you to specify the variable in the parent to update as well as the new value for that variable. To increase the reusability of your sub-workflow, use the format "Variable.variablename" as the parent variable rather than clicking on the (x) and selecting the variable in the dialog that appears.
@Mike Alexander This format "Variable.variablename", does not allow to transfer any Document or XML variables, any advise?
Can you share screenshots?