I think this might be easier with three separate connector terminals (as on the combinators).
On the example of "advanced oil processing" (just assume this would work in assemblers):
control connector (input): N * "advanced oil processing"
(switches the assembler to that recipe.)
requirement connector (output): N * 5 * "water" + N * 10 * "oil" + N * 5 * "time (virtual signal)"
(returns the number of items required by the recipe, multiplied by the factor N from the input)
product connector (output): N * 1 * "heavy oil" + N * 4 * "light oil" + N * 5 * "petrol"
(returns the actual products of the outputs to help calculate the necessary amount)
I don't like that factor "times 10", because it seems arbitrarily chosen and can be implemented by players with arithmetic combinators themselves -- but it might be useful to high-precision demand calculations where recipes require or produce fractions of items. (Which might also happen in assemblers, since they sometimes also produce/consume fluids.)