Skip to main content

Application samples library

  • Polyglot application: Showcases how Workflow Executions, written in different languages, can send messages to each other. Go, Java, PHP, and TypeScript SDKs are represented in this sample. It also shows how to properly propagate errors, including how to do so across Workflows written in different languages.

Go

Java

Hello samples

  • Hello: This sample includes a number of individual Workflows that can be executed independently. Each one demonstrates something specific.

Scenario-based samples

  • File Processing Sample: Demonstrates how to route tasks to specific Workers. This sample has a set of Activities that download a file, processes it, and uploads the result to a destination. Any Worker can execute the first Activity. However, the second and third Activities must be executed on the same host as the first one.

  • Booking SAGA: Demonstrates Temporals take on the Camunda BPMN "trip booking" example.

  • Money Transfer: Demonstrates the use of a dedicated Activity Worker.

  • Money Batch: Demonstrates a situation where a single deposit should be initiated for multiple withdrawals. For example, a seller might want to be paid once per fixed number of transactions. This sample can be easily extended to perform a payment based on more complex criteria, such as at a specific time or an accumulated amount. The sample also demonstrates how to Signal the Workflow when it executes (Signal with start). If the Workflow is already executing, it just receives the Signal. If it is not executing, then the Workflow executes first, and then the Signal is delivered to it. Signal with start is a "lazy" way to execute Workflows when Signaling them.

  • Customer Application Approval DSL: Demonstrates execution of a customer application approval workflow defined in a DSL (like JSON or YAML)

  • Polling Services: Recommended implementation of an activity that needs to periodically poll an external resource waiting its successful completion

API demonstrations

SDK Metrics

Tracing Support

PHP

Beginner samples

The following samples demonstrate much of the basic functionality and capabilities of the SDK.

  • SimpleActivity: Single Activity Workflow

  • ActivityRetry: How to retry an Activity

  • AsyncActivity: How to call Activities asynchronously and wait for them using Promises

  • AsyncActivityCompletion: An asynchronous Activity implementation

  • AsyncClosure: How to run part of a Workflow asynchronously as a separate Task (coroutine)

  • CancellationScope: How to explicitly cancel parts of a Workflow

  • Child: Example of a child Workflow

  • Cron: A Workflow that is executed according to a cron schedule

  • Periodic: A Workflow that executes some logic periodically

  • Exception: Example of exception propagation and wrapping

  • PolymorphicActivity: Activities that extend a common interface

  • Query: Demonstrates how to Query the state of a single Workflow

  • Signal: Example of sending and handling a Signal

  • Saga: Example of SAGA pattern support

  • SearchAttributes: Example of Custom search attributes that can be used to find Workflows using predicates

Advanced samples

The following samples demonstrate some of the more complex aspects associated with running Workflows with the SDK.

  • FileProcessing: Demonstrates Task routing features.

  • Booking SAGA: Demonstrates Temporal approach to a trip booking SAGA.

  • Money Transfer: Basic money transfer example.

  • MoneyBatch: Demonstrates a situation when a single deposit should be initiated for multiple withdrawals.

  • Updatable Timer: Demonstrates the use of a helper class which relies on Workflow.await to implement a blocking sleep that can be updated at any moment.

  • Subscription: Demonstrates a long-running process associated with a user ID. The process charges the user once every 30 days after a one month free trial period.