Skip to content

Commit

Permalink
Add singleNextStateUntypedInput (#225)
Browse files Browse the repository at this point in the history
  • Loading branch information
longquanzheng committed May 1, 2024
1 parent 5142b46 commit a0e12b1
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 4 deletions.
13 changes: 11 additions & 2 deletions src/main/java/io/iworkflow/core/StateDecision.java
Expand Up @@ -167,6 +167,16 @@ public static <I> StateDecision singleNextState(final Class<? extends WorkflowSt
return singleNextState(stateClass, stateInput, null);
}

/**
* singleNextState as non-strongly typing required for input
* @param stateClass required
* @param stateInput optional, can be null
* @return
*/
public static StateDecision singleNextStateUntypedInput(final Class<? extends WorkflowState> stateClass, final Object stateInput) {
return singleNextState(stateClass.getSimpleName(), stateInput, null);
}

/**
* @param <I> Class type of the WorkflowState input
* @param stateClass required
Expand All @@ -179,13 +189,12 @@ public static <I> StateDecision singleNextState(final Class<? extends WorkflowSt
/**
* use the other one with WorkflowState class param if the stateId is provided by default, to make your code cleaner
*
* @param <I> Class type of the WorkflowState input
* @param stateId required. StateId of next state
* @param stateInput optional, can be null. Input for next state
* @param stateOptionsOverride optional, can be null. It is used to override the defined one in the State class
* @return state decision
*/
public static <I> StateDecision singleNextState(final String stateId, final I stateInput, final WorkflowStateOptions stateOptionsOverride) {
public static StateDecision singleNextState(final String stateId, final Object stateInput, final WorkflowStateOptions stateOptionsOverride) {
return ImmutableStateDecision.builder().nextStates(Arrays.asList(
StateMovement.create(stateId, stateInput, stateOptionsOverride)
)).build();
Expand Down
3 changes: 1 addition & 2 deletions src/main/java/io/iworkflow/core/StateMovement.java
Expand Up @@ -86,13 +86,12 @@ public static <I> StateMovement create(final Class<? extends WorkflowState<I>> s
/**
* use the other one with WorkflowState class param if the stateId is provided by default, to make your code cleaner
*
* @param <I> Class type of the WorkflowState input
* @param stateId required
* @param stateInput optional, can be null
* @param stateOptionsOverride optional, can be null. It is used to override the defined one in the State class
* @return state movement
*/
public static <I> StateMovement create(final String stateId, final I stateInput, final WorkflowStateOptions stateOptionsOverride) {
public static StateMovement create(final String stateId, final Object stateInput, final WorkflowStateOptions stateOptionsOverride) {
if (stateId.startsWith(RESERVED_STATE_ID_PREFIX)) {
throw new WorkflowDefinitionException("Cannot use reserved stateId prefix for your stateId");
}
Expand Down

0 comments on commit a0e12b1

Please sign in to comment.