Forge Architectural Patterns

Forge Architectural Patterns

Software architecture patterns define standardised, battle-tested solutions to recurring problems. The adoption of architectural patterns often improves robustness, performance, and/or usability. They also create a shared technical vocabulary that makes your codebase easier for teams to maintain and scale over time.

This post outlines various patterns relating the architecture of Forge apps. I’ve grouped them into various sets to help relate them to each other and to make them easier to understand.

Methods for Extending Atlassian Apps

A core value proposition of Forge is the ability to extend Atlassian apps. Forge apps can add or tailor Atlassian app user experiences. They can integrate Atlassian apps with third party systems and they can automate tasks and processes. This set includes the following four architectural patterns:

Automation

One form of extending Atlassian apps is the implementation of automation capabilities. The automation set of patterns include:

Integration Without Forge Remotes

There are many Forge apps that integrate Atlassian apps with third party systems. These apps typically employ one or more of a number of the following patterns:

Integration Using Forge Remote

Forge remote allows you to integrate a Forge app with external systems where aspects of the app are deployed to in order to receive and respond to events from Atlassian apps or the Atlassian hosted aspects of the Forge app.

Jira Workflow Conditions, Validators and Post Functions

Jira’s workflow engine can be extended by Forge apps using a number of extensions points.

Jira Custom Fields

There are several ways in which Forge apps can define and implement Jira custom fields:

Utility Patterns

By now you may have observed that various patterns share features. Some of these shared features can be isolated in order to define various utility patterns. On its own, a utility pattern doesn’t provide customer value, but they are designed to be composed like lego bricks to form patterns that provide customer value.

Wrapping up

These patterns aren’t exhaustive, but they cover most scenarios customers and partners are likely to encounter when building on Forge. They’re intentionally composable: a single app will often combine several patterns to deliver its functionality.

Each pattern warrants a deeper dive – including implementation guidance, trade-offs, and usage notes – but this page is intended as a high-level map of what’s possible with Forge, and a shared vocabulary for discussing Forge app architecture.

Exit mobile version