https://github.com/temporalio/subscription-workflow-project-template-java
Subscription workflow project template for Java
https://github.com/temporalio/subscription-workflow-project-template-java
Last synced: 8 months ago
JSON representation
Subscription workflow project template for Java
- Host: GitHub
- URL: https://github.com/temporalio/subscription-workflow-project-template-java
- Owner: temporalio
- License: other
- Created: 2021-04-09T16:27:33.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2025-07-03T02:01:09.000Z (12 months ago)
- Last Synced: 2025-07-03T03:19:33.423Z (12 months ago)
- Language: Java
- Size: 94.7 KB
- Stars: 5
- Watchers: 7
- Forks: 8
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# Subscription Workflow Project Template in Java
This project template illustrates the design pattern for subscription style business logic.
**Setup**
Build the project:
```bash
./gradlew build
```
Run the Temporal Server in another terminal:
```bash
git clone https://github.com/temporalio/docker-compose.git
cd docker-compose
docker-compose up
```
**Start**
Start the Workflow Executions:
```bash
./gradlew -q execute -PmainClass=io.temporal.sample.starter.SubscriptionWorkflowStarter
```
This will start Workflow Executions for 5 customers with the following Ids:
```text
Id-0
Id-1
Id-2
Id-3
Id-4
```
**Get billing info**
You can Query the Workflow Executions and get the billing information of a specific customer.
Pass in an Id of an existing subscription customer (e.g. "Id-0").
```bash
./gradlew -q execute -PmainClass=io.temporal.sample.starter.QueryBillingInfo --args="Id-0"
```
**Update billing**
You can send a Signal a Workflow Execution to update the billing cycle cost for a specific customer.
Pass in the customer Id and the amount (e.g. "Id-0 300").
```bash
./gradlew -q execute -PmainClass=io.temporal.sample.starter.UpdateBillingCycleCharge --args="Id-0 300"
```
**Cancel subscription**
You can send a Signal to Workflow Execution to cancel the subscription for a specific customer.
Pass in the customer Id (e.g. "Id-0").
```bash
./gradlew -q execute -PmainClass=io.temporal.sample.starter.CancelSubscription --args="Id-0"
```