Function Pattern Guide: Submit-Respond-Observe

One of the simplest and most useful user-facing functional structures for software, the Submit-Respond-Observe pattern often masquerades under different names. It’s ubiquitous and often hidden under layers of gold-plating, aesthetic frippery, and scaling (read: corporate/enterprise) features. Sometimes it’s camouflaged by useful, yet showier, features. It’s also susceptible to unimaginative user experience and user interface design. Let’s dive in.

Intent

Store and maintain information durably and externally to the information originator.

Motivation

Applicability

Use this pattern whenever some information needs to be stored durably so that it, or its condition, is available at a different time or place, or by different participants.

Pattern Functions

Submit

An agent (person or system) provides some information to a receiving system. The information may be new to the receiver or a change or addition to information already known to the receiver.

Respond

*The receiving system stores the information or changes existing information. It may also provide feedback to the Submitter.

Observe

Cautions and Pitfalls

Known Uses

Why It's Not…

…CRUD

CRUD is an acronym in software development that stands for Create Read, Update, and Delete (corresponding to database operations). CRUD could be chosen to implement this functional pattern. Other software design choices are possible, however, such as Command-Query Responsibility Segregation (CQRS).

…Personas

The pattern elements of Report-Respond-Observe don't correspong (necessarily) to any class or group of software users and don't imply anything about those user characteristics. You might identify multiple personas that all need or want to report information (such as people who want to report or problem vs people who want to complement a service provider). There could also be a single persona who performs all the functions (as, for example, in the paper-and-pencil to-do list described above).

…Permission or Access Control Groups

Whether there are multiple participants or just one, the pattern does not imply or prescribe any differentiation in the availability of any function to any participant. There may be a separation of capabilities so that one participate physically can't perform one or more of the functions.

However, additional patterns (such as Gatekeeper) may be combined with this pattern to differentiate actions and access. This will be more typical when also combined with the Review-Correct, Review-Approve, or other functions .

Related Patterns


#FunctionPatternGuide