Creating a new task or a new version of an existing task is done via a code-first approach and requires writing some C# classes that use specific naming conventions and implement certain interfaces.
Tasks can be separated into two types:
Tasks triggering intermediate message boundary events
Tasks not triggering intermediate message boundary events
A task triggering boundary events needs additional C# classes to be defined and must implement a different interface as can be seen in the following sections.