Releases: gurmitteotia/guflow
Support timeout in wait for signal APIs
New features
- Supports the timeout in all "wait for signal" APIs. Related ticket
Breaking changes
- IWorkflowItem.Resume APIs signature has changed. Originally you could have resume a waiting item as below
[Signal]
public WorkflowAction Cancle(WorkflowSignalEvent @event)
{
Lambda("BookOrder").Resume(@event.SignalName)
}
but now have to pass the event object in "Resume" API.
[Signal]
public WorkflowAction Cancle(WorkflowSignalEvent @event)
{
Lambda("BookOrder").Resume(@event)
}
- Polling strategy function signature has changed. Originally you would have written the custom polling strategy as below
var taskList = new TaskList("my-list");
taskList.ReadStrategy = MyCustomStrategy
...
private static async Task<DecisionTask> MyCustomStrategy(Domain domain, TaskList taskList,
string pollingIdentity, CancellationToken token)
{
var decisionTask = await domain.PollForDecisionTaskAsync(taskList, pollingIdentity , token);
return decisionTask
}
But with this release you will write as below:
var taskList = new TaskList("my-list");
taskList.ReadStrategy = MyCustomStrategy
...
private static async Task<WorkflowTask> MyCustomStrategy(Domain domain, TaskList taskList,
string pollingIdentity, CancellationToken token)
{
var decisionTask = await domain.PollForDecisionTaskAsync(taskList, pollingIdentity , token);
return WorkflowTask.Create(decisionTask);
}
Update dependencies to latest version
Updated dependencies- AWS SDK and Newsoft JSON to latest versions.
Updated nuget description
- Updated nuget package description and copyright year.
Supported manual approvals using lambda functions
- Supported WaitForSignal API as per ticket.
- Supported WaitForAllSignals API as per the ticket.
- Supported WaitForAnySignal API as per the ticket.
- Added ChildWorkflow.OnStarted method. Useful if need to send the signals to child workflow after it is started.
- Deprecated Timer.Reschedule(Timeout) API and added Timer.Reset(Timer) API.
- Allow ScheduleAction to conditionally schedule a workflow action.
- Exposed Workflow.Id and Workflow.RunId properties.
- Enclosed the Lambda function input in quotes if it is a string and its content are not JSON.
- Fixed bugs in Deflow algorithm around When clause "false" expression.
Supported Timer.Reset/Reschedule APIs
- Supported Timer.Reset/Reschedule APIs as discussed in ticket
- Added support to restart the workflow with default properties. RestartWorkflow action now accept bool flag.
- Fixed bugs around Deflow algorithm. These bugs could have occurred in rare scenarios.
Improvements
- Renamed the SignalAttribute to SignalEventAttribute to maintain the consistency in naming. It is a breaking change.
- Added support to handle WorkflowRestartFailedEvent. By default workflow will fail when this event is raised however user can provide custom workflow action.
Signal specific attribute and other improvements
- Supported the specific attribute to handle signals as required by issue.
- Added query APIs (extensions methods) for child workflow and lambda to keep them consistent with activity. Additional extension methods added are:
- LastFailedEvent
- LastTimedoutEvent
- LastCompletedEvent
- LastCancelledEvent (only for child workflow)
- LastTerminatedEvent (only for child workflow)
Improved Query APIs and bug fixes
-
Activity.LastEvent API will not return ActivityCancelRequestedEvent or ActivityCancellationFailedEvent. However these events will continue to be return in Activity.AllEvents API. Advantage of returning them in last API is that user can differentiate if activity is cancelled her cancellation request or by its own. It very unlikely to be a breaking change.
-
Similarly Workflow.LastEvent API will not return ExternalWorkflowCancelRequestFailedEvent or ExternalWorkflowCancellationRequestedEvent. However these events will continue to be return in Workflow.AllEvents API.
-
Fixed the bug where ActivityCancelRequestedEvent was causing Workflow.HasActiveEvent to return true.
-
Wrote a simple (but funny) sample to demonstrate the support for child workflows and communication between them.
Supported child workflows
- Supported child workflows as per issue
- Added documentation on many API to improve intellisense
- Made Workflow.Signal non static method (breaking change)
- Renamed WorkflowCancelRequestFailed to ExternalWorkflowCancelRequestFailed (breaking change)
- Made Activities.First extension methods internal. User should use Workflow.Activity(“”) method (breaking change)
- A bug fixed in Deflow algorithm around Jump workflow action.