Introduction

Finite State Machine and/or Workflow provides the deterministic paradigm to the software application development. Temporal addresses the Workflow part of the paradigm. Hopefully Temporal also addresses the Finite State Machine part of the paradigm. Let research into the technologies to find out if one could start with:

Temporal Cluster

At the heart of the Temporal framework is the cluster. It provides the deterministic mechanism to the workflow using kafka and g- rpc //TO-DO further study required. The Temporal cluster can be run as

  • Standalone process
    • For Mac
brew install temporal 
OR
curl -sSf https://temporal.download/cli.sh | sh
temporal server start-dev
For a full list of options, run:
temporal server start-dev --help

The Temporal Server should be available on localhost:7233 and the Temporal Web UI should be accessible at http://localhost:8233.

  • For Linux (To be added)
  • For Windows (To be added)
  • Docker/Kubernetes: prefer method to run Temporal cluster More to find out at here

Temporal Lite

Reference 1 Temporal Getting Started Guide Temporal Lite and GoLand The objectives to run Temporalite with the ability to debug using JetBrains GoLand:

  • To understand how various temporal components work together
  • To run the temporalite as docker (We still think to run it as temporalite docker as part of the development)
  • To debug the application development
  • To perform integration test during the development
  • etc…

Temporal API

Temporal Cluster

[Temporal API Github] (https://github.com/henrynguyenattheitservice/temporal-api-java.git)

gRPC Services sepecifies in the protobuf files.

We build the temporal API using JetBrains IntelliJ and JetBrains GoLand and see how the generated code used in the development of Java-SDK and Go-SDK. The objectives of the TemporalAPI are

  • To understand the SDK Wrapper
  • To understand the Temporal Server activities via debugging the Temporalite using JetBrains GoLand
  • etc…

TemporalLite Database

Temporal UI Temporal Database Schema The objectives of the Temporal Database are

  • To understand the data and/or information are being persisted
  • To understand the data and/or information are being persisted when the temporal server crashes and recoveries
  • etc…

Java-SDK

DevEnv with JetBrains IntelliJ with Gradle OR Maven

Temporal Java-SDK

Temporal Cluster

Step1: Code generation all the prootbuf and gRPC serviice using JetBrains IntelliJ

Step2: Study Temporal Building Block or Components

Workflow

Worker

Client

Saga

Step3: Debug Temporalite together with Running HelloWorld sample

Run Temporalite in the Goland debug mode

Run HelloWorld workflow and activity in the IntelliJ

Go-SDK

DevEnv with JetBrains Goland with Makefile

Typescript-SDK

DevEnv with JetBrains WebStorm

Python-SDK

DevEnv with JetBrains PyCharm