Business Maps as a Framework

A business metamodel

The metamodel we propose to use in order to model most businesses relies heavily on Domain Driven Design (DDD)

Business Context

We divide our business into Business Contexts, each of which is a bounded context meaning it's a semi-isolated piece of the business. There are no rules on how big or small a Business Context is; it's up to each entrepreneur to choose how they would like to divide their business to make it manageable for them.

Each Business Context is then divided into 6 puzzle pieces: Things, Personas, Actions, Values, Workflows, and Interfaces.

Things

Here we define the concepts related to a specific Business Context; we give the concept a name, give it a definition, and "shape" the concept by specifying its Attributes. Attributes describe those concepts and how they relate to each other. This effectively allows us to create a mini ontology of a given Business Context and steers us away from miscommunication and ambiguity.

For example, the word "bucket" can mean different things depending on the context. In one context, we could be talking about a physical container we're using to mix paint, and in another context, we could be talking about a service offered by a cloud provider that allows us to store digital information. In the first context, the Attributes of the bucket could be its color, the material it was made from, and whether it has a handle or not. And in the other context, the Attributes could be the name of the bucket, the account that owns it, and the policies that dictate who can access the data within the bucket.

Attributes

Each Thing can have different Attributes that represent aspects or properties of a Thing. Each Attribute has a name, an Attribute Type and an Attribute Shape. The Attribute Type is what helps us distinguish the Integer number 420, from the Time 4:20, from the String (text) 420, which is a cultural slang term.

The Attribute Shape is what tells us what values are allowed within that Attribute, for example we might have an Attribute called "age" with an Attribute Type: Integer, and the Attribute Shape says that the age must be greater than 0 and less than 150. This improves your data's integrity, and makes it easier for you to set rules on your data as you develop your business applications.

Some examples of Things are Lemonade, Pizza, Contract, Wallet, Location, etc...

Personas

Every Business Context serves and is managed by different actors, whether those are human customers of different kinds, employees, or an AI agent that's running some automations. Those actors, or more accurately, those kinds of actors, are called Personas. Within the Personas space rules are chosen to manage what they can do to the Things within that same Business Context.

Actions

The things that can be done to Things by Personas are described within a Business Context's Actions. For example a Thing might be viewed, added, removed, updated, booked, shared, sent, signed, etc...

Actions can be further divided into: the goal behind it, the procedure of actually doing the action, and the outcome of it.

Interfaces

Things are just data, in order to perform Actions on them, we need some Interface that represents them. An Interface might be VisualInterface such as a web page, or a MachineInterface such as a JSON-LD API which allows computers to interact with the data.

Workflows

A Workflow defines how business logic is implemented, whether through a linear sequence of steps, parallel branches, loops, recursion, or conditional paths. It can be triggered either by an Action or at regular intervals. Workflows can trigger other workflows to react to data changes, or send notifications, or ask for human intervention.

Values

While Things describe the shape of the data within a Business Context and tend not to change over time, Values describe actual data not its shape, and is meant to change over time. Values could be individual instances of Things, aggregates of them, or configuration variables that the Business Context needs to function. They are useful for us to measure how well a given Business Context is performing because they represent what we value. For example the number of orders or customer feedback could be Values.

Value Stream

We want to avoid building monolithic businesses, in which everything is mixed up with everything else, so we divide our business into Business Contexts. Those in turn are connected through Value Streams. Value Streams describe the movements of Values between contexts, think of them as conveyor belts moving through different stations. Value Streams help us identify bottlenecks, and opportunities across our business, as well as give us a holistic view of the health of the business.

On this page