Some of the properties (like wallclock time or memory) would rather belong into the resources directive.
Some are redundant and encourage people to put stuff in the wrong place. E.g., I would not consider threads that are set within params instead of via the threads directive. Otherwise such a workflow would be not portable to different profiles or simply plain local execution anymore.
The workdir handling is also very custom and not portable.