In this chapter we've looked at two techniques for building custom activities in Windows Workflow. Using composition, we can quickly build a reusable piece of workflow logic. Although a custom activity becomes a black box inside, we can expose the details a workflow author would need to configure our component using dependency properties and activity binding.
Derivation was a second approach to building a custom activity. With derivation, we override the Execute method of an activity and take complete control of its execution logic. Derivation allows us to build new forms of control flow and new execution semantics. With all custom activities we can add activity components to perform validation and provide custom designer behavior. We associate activity components with an activity using attributes.