Long running workflows with ability to suspend and replay the workflow in future.
Name | Package |
---|---|
NeuroSpeech.Eternity | |
NeuroSpeech.Eternity.DependencyInjectionExtensions | |
NeuroSpeech.Eternity.SqliteStorage | |
NeuroSpeech.Eternity.SqlStorage | |
NeuroSpeech.Eternity.Mocks |
- Strongly typed API
- Mobile Ready - Storage is abstract and does support running workflows in Mobile Devices.
- Dependency Injection - easy integration with Microsoft Dependency Injection Extensions
- Activities are simple public virtual C# methods
- Activities can be scheduled to be called in future
- Support for external events, workflow can wait for external events
- Really very large workflow supports, duration of waiting can have timeout for days/months/weeks. This allows in creating workflow for monthly/yearly memberships.
- Abstract Storage - you can create your own storage, in memory Mock storage, Sqlite Storage (for mobile) and Sql Server Storage is included.
- Unit testable - Mocks package contains useful mocks to unit test your workflows.
- Support for non deterministic workflows, activities are isolated by parameters and time of execution, (you can also make Activity unique) so same activity method with same parameter anywhere in the workflow will execute only once and will give same result.
- Workflow can wait for multiple events, and when you raise an event, it will optionally throw an exception if workflow is not waiting.
- You can wait for events for days/months. It does not occupy any resources, waiting occurs in queue, and workers do not stay busy while waiting.
- Added support for DailyWorkflows, Workflows that can be derived from class
DailyWorkflows
and execute once per day. - .NET Standard 2.0 support, it means it can run anywhere without any native/local dependency.
- Table Storage is very expensive, instead, using Sql Azure is cheaper as it does not charge per transaction.
- Table Storage Key has restrictions on ID, it needs URL escaping. Sql Azure has no such restriction.
- You can easily query and view table, there is only single table named "EternityEntities".