Skip to content

Releases: gurmitteotia/guflow

Support timeout in wait for signal APIs

28 Jun 13:14
Compare
Choose a tag to compare

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

26 Jan 17:08
Compare
Choose a tag to compare

Updated dependencies- AWS SDK and Newsoft JSON to latest versions.

Updated nuget description

28 Jan 17:01
Compare
Choose a tag to compare
  • Updated nuget package description and copyright year.

Supported manual approvals using lambda functions

27 Jan 17:09
660971b
Compare
Choose a tag to compare
  • 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

20 Nov 14:48
d9f0cfe
Compare
Choose a tag to compare
  • 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

10 Nov 17:14
Compare
Choose a tag to compare
  • 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

05 Nov 15:56
a877216
Compare
Choose a tag to compare
  • 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

21 Oct 15:56
Compare
Choose a tag to compare
  • 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

19 Oct 16:30
Compare
Choose a tag to compare
  • 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.

Bug fix

09 Oct 20:30
Compare
Choose a tag to compare

Issue I-23 is fixed.