If Taverna workflows are to be represented in CWL, then the problem is that our activity descriptions are only usable within Taverna. (Except the Tool Activity which could be represented as a ShellCommandRequirement).
A quick-and-dirty CWL representation of any Taverna workflow would need a TavernaActivityRequirement - but obviously only Taverna could read those back in.
So a better approach could be to have a Docker image (in CWL using a DockerRequirement) that executes a Taverna Activity as an independent step - that would mean Taverna activities like WSDL and REST activities can be used in CWL.
One way to do this today is for a Docker image that generate a simple SCUFL2 workflow that executes just that single activity, and then just runs Taverna's executeworkflow.
Taverna's CWL reader could then recognize these and re-instate the Taverna activity (as this Docker tool can keep the existing Taverna Activity JSON as its own configuration).