The Order Management System (OMS) is a reference application that demonstrates one way to approach the design and implementation of an order processing system based on Temporal Workflows. You can run this application locally (directly on a laptop) or in a Kubernetes cluster. In addition, the required Temporal Service can be run locally, or be provided by a remote self-hosted deployment, or be provided by Temporal Cloud.
We recommend that you begin by reading the documentation, which will explain the features of the application and aspects of its design. It also provides instructions for deploying and running the application in various environments.
If you'd like to jump right in and run the OMS locally, clone this repository to your machine and follow the steps below. Unless otherwise noted, you should execute the commands from the root directory of your clone.
You can also see a demonstration of these steps in the Setting up and running the OMS video, part of a four-part video series that covers the OMS.
You will need Go to run the core OMS application, the Temporal CLI to run the Temporal Service locally, plus Node.js and the pnpm package manager to run the OMS web application.
Run the following command in your terminal:
temporal server start-dev --ui-port 8080 --db-filename temporal-persistence.db
The Temporal Service manages application state by assigning tasks related to each Workflow Execution and tracking the completion of those tasks. The detailed history it maintains for each execution enables the application to recover from a crash by reconstructing its pre-crash state and resuming the execution.
Run the following command in another terminal:
go run ./cmd/oms worker
This command starts both Workflow and Activity Workers in a single process. The Workers run Workflow and Activity functions, which carry out the various aspects of order processing.
Run the following command in another terminal:
go run ./cmd/oms api
The API Servers provide REST APIs that the web application uses to interact with the OMS.
You will need to clone the code for the web application, which is maintained separately in the reference-app-orders-web repository:
cd ..
git clone https://github.com/temporalio/reference-app-orders-web.git
You will then need to run the following commands to start it:
cd reference-app-orders-web
pnpm install
pnpm dev
You will then be able to access the OMS web application at http://localhost:5173/ and the Temporal Web UI at http://localhost:8080/. In the OMS web application, select the User role, and then submit an order (we recommend choosing order #1 to start). Next, return to the main page of the web application, select the Courier role, locate the shipments corresponding to your order, and then click the Dispatch and Deliver buttons to complete the process. As you proceed with each of these steps, be sure to refresh the Temporal Web UI so that you can see the Workflows created and updated as a result.
This repository provides four subdirectories of interest:
Directory | Description |
---|---|
app/ |
Application code |
cmd/ |
Command-line tools provided by the application |
deployments/ |
Tools and configuration files used to deploy the application |
docs/ |
Documentation |
See the documentation for more information.