Home > Design Patterns > Agnostic Sub-Controller
Agnostic Sub-Controller

Agnostic Sub-Controller (Erl)

How can agnostic, cross-entity composition logic be separated, reused, and governed independently?

Problem

Service compositions are generally configured specific to a parent task, inhibiting reuse potential that may exist within a subset of the composition logic.

Solution

Reusable, cross-entity composition logic is abstracted or made accessible via an agnostic sub-controller capability, allowing that subset of the parent composition logic to be recomposed independently.

Application

A new agnostic service is created or a task service is appended with an agnostic sub-controller capability.

Impacts

The addition of a cross-entity, agnostic service can increase the size and complexity of compositions and the abstraction of agnostic cross-entity logic can violate modeling and design standards established by Service Layers.

Architecture

Composition, Service
Agnostic Sub-Controller: A traditional, single-purpose composition is often configured in a two-tier hierarchy, with all of the composition logic residing in the parent task service. Alternatively, the composition can be structured into additional tiers so that the composition is comprised of a parent controller service and one or more nested compositions represented by sub-controller services. These nested compositions may be necessary to carry out the parent task, but individually they can also provide logic that can be used independently to automate a smaller task, or they may have logic that can be used to automate other larger tasks. Either way, they can be structured to represent and abstract agnostic logic for reuse purposes.

A traditional, single-purpose composition is often configured in a two-tier hierarchy, with all of the composition logic residing in the parent task service. Alternatively, the composition can be structured into additional tiers so that the composition is comprised of a parent controller service and one or more nested compositions represented by sub-controller services. These nested compositions may be necessary to carry out the parent task, but individually they can also provide logic that can be used independently to automate a smaller task, or they may have logic that can be used to automate other larger tasks. Either way, they can be structured to represent and abstract agnostic logic for reuse purposes.