Basic executable/actionable interface. These process a default input value and return a Typed output value.
They are also invoked in a context - a set of objects in a certain role.
There are two major branches: WFunc and WfActivity. An action is a workflow specific thing and is aware of next actions, state of execution whatnot. It also does something so it's derived from WFunc.
WFunc by itself only does something and is not stateful. Most activities are like that.
apply this function to an input value and a context
what is the resulting type - when known