There is TaskService, ReportService and other services for workflow and access certifications and maybe also other components. Some of these have overlap with ModelService. E.g. task can be re-started by explicit call to TaskService or by using ModelService to change the state of the TaskType. Try to unify these concepts.
Generally we would like to prefer ModelService because of unified authorizations, auditing, etc. It is also naturally exposed in WS and REST. But not all services are easy to expose like this. E.g. suspend task has "wait for stop" option, running a report is a pure RPC and so on. Think about it.
- WorkItemType is not ObjectType, which prohibits its use in authorizations