Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,23 @@ All notable changes to the AxonFlow Java SDK will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [5.4.0] - 2026-04-18

### Added

- **Execution boundary semantics** — `retryPolicy` field on `StepGateRequest`
(via builder: `.retryPolicy("reevaluate")`). Controls cached vs fresh
evaluation for the same step boundary.
- **Step gate response metadata** — `cached` (boolean) and `decisionSource`
(String) fields on `StepGateResponse` via `isCached()` and
`getDecisionSource()`.
- **Workflow checkpoints** — `getCheckpoints(workflowId)` lists step-gate
checkpoints. `resumeFromLastCheckpoint(workflowId)` resumes from last
checkpoint (Evaluation+). `resumeFromCheckpoint(workflowId, checkpointId)`
resumes from a specific checkpoint (Enterprise).
- **Checkpoint types** — `Checkpoint`, `CheckpointListResponse`, and
`ResumeFromCheckpointResponse` with Jackson deserialization.

## [5.3.0] - 2026-04-09

### Added
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>com.getaxonflow</groupId>
<artifactId>axonflow-sdk</artifactId>
<version>5.3.0</version>
<version>5.4.0</version>
<packaging>jar</packaging>

<name>AxonFlow Java SDK</name>
Expand Down
73 changes: 73 additions & 0 deletions src/main/java/com/getaxonflow/sdk/AxonFlow.java
Original file line number Diff line number Diff line change
Expand Up @@ -5135,6 +5135,79 @@ public void resumeWorkflow(String workflowId) {
"resumeWorkflow");
}

/**
* Lists step-gate checkpoints for a workflow. Available in all tiers.
*
* @param workflowId workflow ID
* @return checkpoint list
*/
public com.getaxonflow.sdk.types.workflow.WorkflowTypes.CheckpointListResponse getCheckpoints(
String workflowId) {
Objects.requireNonNull(workflowId, "workflowId cannot be null");
return retryExecutor.execute(
() -> {
Request httpRequest =
buildOrchestratorRequest("GET", "/api/v1/workflows/" + workflowId + "/checkpoints", null);
try (Response response = httpClient.newCall(httpRequest).execute()) {
return parseResponse(
response,
new TypeReference<
com.getaxonflow.sdk.types.workflow.WorkflowTypes.CheckpointListResponse>() {});
}
},
"getCheckpoints");
}

/**
* Resumes a workflow from its last resumable checkpoint. Evaluation+ tier.
*
* @param workflowId workflow ID
* @return resume result with fresh decision
*/
public com.getaxonflow.sdk.types.workflow.WorkflowTypes.ResumeFromCheckpointResponse resumeFromLastCheckpoint(
String workflowId) {
Objects.requireNonNull(workflowId, "workflowId cannot be null");
return retryExecutor.execute(
() -> {
Request httpRequest =
buildOrchestratorRequest("POST", "/api/v1/workflows/" + workflowId + "/checkpoints/resume", "{}");
try (Response response = httpClient.newCall(httpRequest).execute()) {
return parseResponse(
response,
new TypeReference<
com.getaxonflow.sdk.types.workflow.WorkflowTypes.ResumeFromCheckpointResponse>() {});
}
},
"resumeFromLastCheckpoint");
}

/**
* Resumes a workflow from a specific checkpoint. Enterprise only.
*
* @param workflowId workflow ID
* @param checkpointId checkpoint database ID
* @return resume result with fresh decision
*/
public com.getaxonflow.sdk.types.workflow.WorkflowTypes.ResumeFromCheckpointResponse resumeFromCheckpoint(
String workflowId, long checkpointId) {
Objects.requireNonNull(workflowId, "workflowId cannot be null");
return retryExecutor.execute(
() -> {
Request httpRequest =
buildOrchestratorRequest(
"POST",
"/api/v1/workflows/" + workflowId + "/checkpoints/" + checkpointId + "/resume",
"{}");
try (Response response = httpClient.newCall(httpRequest).execute()) {
return parseResponse(
response,
new TypeReference<
com.getaxonflow.sdk.types.workflow.WorkflowTypes.ResumeFromCheckpointResponse>() {});
}
},
"resumeFromCheckpoint");
}

/**
* Lists workflows with optional filters.
*
Expand Down
Loading
Loading