Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IWF-101: Use different structures for WorkflowStateOptions #283

Merged
merged 19 commits into from
Dec 19, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
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
9 changes: 3 additions & 6 deletions src/main/java/io/iworkflow/core/Client.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import io.iworkflow.core.exceptions.NoRunningWorkflowException;
import io.iworkflow.core.exceptions.WorkflowAlreadyStartedException;
import io.iworkflow.core.exceptions.WorkflowNotExistsException;
import io.iworkflow.core.mapper.StateMovementMapper;
import io.iworkflow.core.persistence.PersistenceOptions;
import io.iworkflow.gen.models.ErrorSubStatus;
import io.iworkflow.gen.models.KeyValue;
Expand All @@ -17,7 +16,6 @@
import io.iworkflow.gen.models.WorkflowGetSearchAttributesResponse;
import io.iworkflow.gen.models.WorkflowSearchRequest;
import io.iworkflow.gen.models.WorkflowSearchResponse;
import io.iworkflow.gen.models.WorkflowStateOptions;
import net.bytebuddy.ByteBuddy;
import net.bytebuddy.implementation.MethodDelegation;
import net.bytebuddy.matcher.ElementMatchers;
Expand All @@ -32,6 +30,7 @@
import java.util.stream.Collectors;

import static io.iworkflow.core.WorkflowState.shouldSkipWaitUntil;
import static io.iworkflow.core.mapper.StateMovementMapper.validateAndGetIdlStateOptions;

public class Client {
private final Registry registry;
Expand Down Expand Up @@ -172,17 +171,15 @@ public String startWorkflow(
throw new WorkflowDefinitionException(String.format("input cannot be assigned to the starting state, input type: %s, starting state input type: %s", input.getClass(), registeredInputType));
}

WorkflowStateOptions stateOptions = StateMovementMapper.validateAndGetStateOptionsCopy(stateDef);
io.iworkflow.gen.models.WorkflowStateOptions stateOptions = validateAndGetIdlStateOptions(stateDef);
if (shouldSkipWaitUntil(stateDef.getWorkflowState())) {
if (stateOptions == null) {
stateOptions = new WorkflowStateOptions().skipWaitUntil(true);
stateOptions = new io.iworkflow.gen.models.WorkflowStateOptions().skipWaitUntil(true);
} else {
stateOptions.skipWaitUntil(true);
}
}

StateMovementMapper.autoFillFailureProceedingStateOptions(stateOptions, wfType, registry);

if (stateOptions != null) {
unregisterWorkflowOptions.startStateOptions(stateOptions);
}
Expand Down
1 change: 0 additions & 1 deletion src/main/java/io/iworkflow/core/StateDecision.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package io.iworkflow.core;

import io.iworkflow.gen.models.WorkflowConditionalCloseType;
import io.iworkflow.gen.models.WorkflowStateOptions;
import org.immutables.value.Value;

import java.util.ArrayList;
Expand Down
1 change: 0 additions & 1 deletion src/main/java/io/iworkflow/core/StateMovement.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package io.iworkflow.core;

import io.iworkflow.gen.models.WorkflowStateOptions;
import org.immutables.value.Value;

import java.util.Optional;
Expand Down
1 change: 0 additions & 1 deletion src/main/java/io/iworkflow/core/WorkflowState.java
stevo89519 marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import io.iworkflow.core.command.CommandResults;
import io.iworkflow.core.communication.Communication;
import io.iworkflow.core.persistence.Persistence;
import io.iworkflow.gen.models.WorkflowStateOptions;

import java.lang.reflect.Method;

Expand Down
302 changes: 302 additions & 0 deletions src/main/java/io/iworkflow/core/WorkflowStateOptions.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,302 @@
package io.iworkflow.core;

import io.iworkflow.gen.models.ExecuteApiFailurePolicy;
import io.iworkflow.gen.models.PersistenceLoadingPolicy;
import io.iworkflow.gen.models.RetryPolicy;
import io.iworkflow.gen.models.WaitUntilApiFailurePolicy;

import java.util.Objects;

public class WorkflowStateOptions {
private PersistenceLoadingPolicy searchAttributesLoadingPolicy;
longquanzheng marked this conversation as resolved.
Show resolved Hide resolved

private PersistenceLoadingPolicy waitUntilApiSearchAttributesLoadingPolicy;

private PersistenceLoadingPolicy executeApiSearchAttributesLoadingPolicy;

private PersistenceLoadingPolicy dataAttributesLoadingPolicy;

private PersistenceLoadingPolicy waitUntilApiDataAttributesLoadingPolicy;

private PersistenceLoadingPolicy executeApiDataAttributesLoadingPolicy;

private Integer waitUntilApiTimeoutSeconds;

private Integer executeApiTimeoutSeconds;

private RetryPolicy waitUntilApiRetryPolicy;

private RetryPolicy executeApiRetryPolicy;
stevo89519 marked this conversation as resolved.
Show resolved Hide resolved

private WaitUntilApiFailurePolicy waitUntilApiFailurePolicy;

private ExecuteApiFailurePolicy executeApiFailurePolicy;
stevo89519 marked this conversation as resolved.
Show resolved Hide resolved

private WorkflowStateOptions executeApiFailureProceedStateOptions;

public WorkflowStateOptions() {
}

public WorkflowStateOptions searchAttributesLoadingPolicy(PersistenceLoadingPolicy searchAttributesLoadingPolicy) {
setSearchAttributesLoadingPolicy(searchAttributesLoadingPolicy);
return this;
}

public PersistenceLoadingPolicy getSearchAttributesLoadingPolicy() {
return searchAttributesLoadingPolicy;
}

public void setSearchAttributesLoadingPolicy(PersistenceLoadingPolicy searchAttributesLoadingPolicy) {
this.searchAttributesLoadingPolicy = searchAttributesLoadingPolicy;
}

public WorkflowStateOptions waitUntilApiSearchAttributesLoadingPolicy(PersistenceLoadingPolicy waitUntilApiSearchAttributesLoadingPolicy) {
setWaitUntilApiSearchAttributesLoadingPolicy(waitUntilApiSearchAttributesLoadingPolicy);
return this;
}

public PersistenceLoadingPolicy getWaitUntilApiSearchAttributesLoadingPolicy() {
return waitUntilApiSearchAttributesLoadingPolicy;
}

public void setWaitUntilApiSearchAttributesLoadingPolicy(PersistenceLoadingPolicy waitUntilApiSearchAttributesLoadingPolicy) {
this.waitUntilApiSearchAttributesLoadingPolicy = waitUntilApiSearchAttributesLoadingPolicy;
}

public WorkflowStateOptions executeApiSearchAttributesLoadingPolicy(PersistenceLoadingPolicy executeApiSearchAttributesLoadingPolicy) {
setExecuteApiSearchAttributesLoadingPolicy(executeApiSearchAttributesLoadingPolicy);
return this;
}

public PersistenceLoadingPolicy getExecuteApiSearchAttributesLoadingPolicy() {
return executeApiSearchAttributesLoadingPolicy;
}

public void setExecuteApiSearchAttributesLoadingPolicy(PersistenceLoadingPolicy executeApiSearchAttributesLoadingPolicy) {
this.executeApiSearchAttributesLoadingPolicy = executeApiSearchAttributesLoadingPolicy;
}

public WorkflowStateOptions dataAttributesLoadingPolicy(PersistenceLoadingPolicy dataAttributesLoadingPolicy) {
setDataAttributesLoadingPolicy(dataAttributesLoadingPolicy);
return this;
}

public PersistenceLoadingPolicy getDataAttributesLoadingPolicy() {
return dataAttributesLoadingPolicy;
}

public void setDataAttributesLoadingPolicy(PersistenceLoadingPolicy dataAttributesLoadingPolicy) {
this.dataAttributesLoadingPolicy = dataAttributesLoadingPolicy;
}

public WorkflowStateOptions waitUntilApiDataAttributesLoadingPolicy(PersistenceLoadingPolicy waitUntilApiDataAttributesLoadingPolicy) {
setWaitUntilApiDataAttributesLoadingPolicy(waitUntilApiDataAttributesLoadingPolicy);
return this;
}

public PersistenceLoadingPolicy getWaitUntilApiDataAttributesLoadingPolicy() {
return waitUntilApiDataAttributesLoadingPolicy;
}

public void setWaitUntilApiDataAttributesLoadingPolicy(PersistenceLoadingPolicy waitUntilApiDataAttributesLoadingPolicy) {
this.waitUntilApiDataAttributesLoadingPolicy = waitUntilApiDataAttributesLoadingPolicy;
}

public WorkflowStateOptions executeApiDataAttributesLoadingPolicy(PersistenceLoadingPolicy executeApiDataAttributesLoadingPolicy) {
setExecuteApiDataAttributesLoadingPolicy(executeApiDataAttributesLoadingPolicy);
return this;
}

public PersistenceLoadingPolicy getExecuteApiDataAttributesLoadingPolicy() {
return executeApiDataAttributesLoadingPolicy;
}

public void setExecuteApiDataAttributesLoadingPolicy(PersistenceLoadingPolicy executeApiDataAttributesLoadingPolicy) {
this.executeApiDataAttributesLoadingPolicy = executeApiDataAttributesLoadingPolicy;
}

public WorkflowStateOptions waitUntilApiTimeoutSeconds(Integer waitUntilApiTimeoutSeconds) {
setWaitUntilApiTimeoutSeconds(waitUntilApiTimeoutSeconds);
return this;
}

public Integer getWaitUntilApiTimeoutSeconds() {
return waitUntilApiTimeoutSeconds;
}

public void setWaitUntilApiTimeoutSeconds(Integer waitUntilApiTimeoutSeconds) {
this.waitUntilApiTimeoutSeconds = waitUntilApiTimeoutSeconds;
}

public WorkflowStateOptions executeApiTimeoutSeconds(Integer executeApiTimeoutSeconds) {
setExecuteApiTimeoutSeconds(executeApiTimeoutSeconds);
return this;
}

public Integer getExecuteApiTimeoutSeconds() {
return executeApiTimeoutSeconds;
}

public void setExecuteApiTimeoutSeconds(Integer executeApiTimeoutSeconds) {
this.executeApiTimeoutSeconds = executeApiTimeoutSeconds;
}

public WorkflowStateOptions waitUntilApiRetryPolicy(RetryPolicy waitUntilApiRetryPolicy) {
setWaitUntilApiRetryPolicy(waitUntilApiRetryPolicy);
return this;
}

public RetryPolicy getWaitUntilApiRetryPolicy() {
return waitUntilApiRetryPolicy;
}

public void setWaitUntilApiRetryPolicy(RetryPolicy waitUntilApiRetryPolicy) {
this.waitUntilApiRetryPolicy = waitUntilApiRetryPolicy;
}

public WorkflowStateOptions executeApiRetryPolicy(RetryPolicy executeApiRetryPolicy) {
setExecuteApiRetryPolicy(executeApiRetryPolicy);
return this;
}

public RetryPolicy getExecuteApiRetryPolicy() {
return executeApiRetryPolicy;
}

public void setExecuteApiRetryPolicy(RetryPolicy executeApiRetryPolicy) {
this.executeApiRetryPolicy = executeApiRetryPolicy;
}

public WorkflowStateOptions waitUntilApiFailurePolicy(WaitUntilApiFailurePolicy waitUntilApiFailurePolicy) {
setWaitUntilApiFailurePolicy(waitUntilApiFailurePolicy);
return this;
}

public WaitUntilApiFailurePolicy getWaitUntilApiFailurePolicy() {
stevo89519 marked this conversation as resolved.
Show resolved Hide resolved
return waitUntilApiFailurePolicy;
}

public void setWaitUntilApiFailurePolicy(WaitUntilApiFailurePolicy waitUntilApiFailurePolicy) {
this.waitUntilApiFailurePolicy = waitUntilApiFailurePolicy;
}

public WorkflowStateOptions executeApiFailurePolicy(ExecuteApiFailurePolicy executeApiFailurePolicy) {
setExecuteApiFailurePolicy(executeApiFailurePolicy);
return this;
}

public ExecuteApiFailurePolicy getExecuteApiFailurePolicy() {
return executeApiFailurePolicy;
}

public void setExecuteApiFailurePolicy(ExecuteApiFailurePolicy executeApiFailurePolicy) {
this.executeApiFailurePolicy = executeApiFailurePolicy;
}

public WorkflowStateOptions executeApiFailureProceedStateOptions(WorkflowStateOptions executeApiFailureProceedStateOptions) {
setExecuteApiFailureProceedStateOptions(executeApiFailureProceedStateOptions);
return this;
}

public WorkflowStateOptions getExecuteApiFailureProceedStateOptions() {
return executeApiFailureProceedStateOptions;
}

public void setExecuteApiFailureProceedStateOptions(WorkflowStateOptions executeApiFailureProceedStateOptions) {
this.executeApiFailureProceedStateOptions = executeApiFailureProceedStateOptions;
}

@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
WorkflowStateOptions workflowStateOptions = (WorkflowStateOptions) o;
return Objects.equals(this.searchAttributesLoadingPolicy, workflowStateOptions.searchAttributesLoadingPolicy)
&& Objects.equals(
this.waitUntilApiSearchAttributesLoadingPolicy,
workflowStateOptions.waitUntilApiSearchAttributesLoadingPolicy)
&& Objects.equals(
this.executeApiSearchAttributesLoadingPolicy,
workflowStateOptions.executeApiSearchAttributesLoadingPolicy)
&& Objects.equals(this.dataAttributesLoadingPolicy, workflowStateOptions.dataAttributesLoadingPolicy)
&& Objects.equals(
this.waitUntilApiDataAttributesLoadingPolicy,
workflowStateOptions.waitUntilApiDataAttributesLoadingPolicy)
&& Objects.equals(
this.executeApiDataAttributesLoadingPolicy,
workflowStateOptions.executeApiDataAttributesLoadingPolicy)
&& Objects.equals(this.waitUntilApiTimeoutSeconds, workflowStateOptions.waitUntilApiTimeoutSeconds)
&& Objects.equals(this.executeApiTimeoutSeconds, workflowStateOptions.executeApiTimeoutSeconds)
&& Objects.equals(this.waitUntilApiRetryPolicy, workflowStateOptions.waitUntilApiRetryPolicy)
&& Objects.equals(this.executeApiRetryPolicy, workflowStateOptions.executeApiRetryPolicy)
&& Objects.equals(this.waitUntilApiFailurePolicy, workflowStateOptions.waitUntilApiFailurePolicy)
&& Objects.equals(this.executeApiFailurePolicy, workflowStateOptions.executeApiFailurePolicy)
&& Objects.equals(
this.executeApiFailureProceedStateOptions,
workflowStateOptions.executeApiFailureProceedStateOptions);
}

@Override
public int hashCode() {
return Objects.hash(
searchAttributesLoadingPolicy,
waitUntilApiSearchAttributesLoadingPolicy,
executeApiSearchAttributesLoadingPolicy,
dataAttributesLoadingPolicy,
waitUntilApiDataAttributesLoadingPolicy,
executeApiDataAttributesLoadingPolicy,
waitUntilApiTimeoutSeconds,
executeApiTimeoutSeconds,
waitUntilApiRetryPolicy,
executeApiRetryPolicy,
waitUntilApiFailurePolicy,
executeApiFailurePolicy,
executeApiFailureProceedStateOptions);
}

@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("class WorkflowStateOptions {\n");
sb.append(" searchAttributesLoadingPolicy: ").append(toIndentedString(searchAttributesLoadingPolicy)).append("\n");
sb.append(" waitUntilApiSearchAttributesLoadingPolicy: ")
.append(toIndentedString(waitUntilApiSearchAttributesLoadingPolicy))
.append("\n");
sb.append(" executeApiSearchAttributesLoadingPolicy: ")
.append(toIndentedString(executeApiSearchAttributesLoadingPolicy))
.append("\n");
sb.append(" dataAttributesLoadingPolicy: ").append(toIndentedString(dataAttributesLoadingPolicy)).append("\n");
sb.append(" waitUntilApiDataAttributesLoadingPolicy: ")
.append(toIndentedString(waitUntilApiDataAttributesLoadingPolicy))
.append("\n");
sb.append(" executeApiDataAttributesLoadingPolicy: ")
.append(toIndentedString(executeApiDataAttributesLoadingPolicy))
.append("\n");
sb.append(" waitUntilApiTimeoutSeconds: ").append(toIndentedString(waitUntilApiTimeoutSeconds)).append("\n");
sb.append(" executeApiTimeoutSeconds: ").append(toIndentedString(executeApiTimeoutSeconds)).append("\n");
sb.append(" waitUntilApiRetryPolicy: ").append(toIndentedString(waitUntilApiRetryPolicy)).append("\n");
sb.append(" executeApiRetryPolicy: ").append(toIndentedString(executeApiRetryPolicy)).append("\n");
sb.append(" waitUntilApiFailurePolicy: ").append(toIndentedString(waitUntilApiFailurePolicy)).append("\n");
sb.append(" executeApiFailurePolicy: ").append(toIndentedString(executeApiFailurePolicy)).append("\n");
sb.append(" executeApiFailureProceedStateOptions: ")
.append(toIndentedString(executeApiFailureProceedStateOptions))
.append("\n");
sb.append("}");
return sb.toString();
}

/**
* Convert the given object to string with each line indented by 4 spaces
* (except the first line).
*/
private String toIndentedString(Object o) {
if (o == null) {
return "null";
}
return o.toString().replace("\n", "\n ");
}
}
Loading
Loading