-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Add Azure Table Storage persistence provider with comprehensive end-to-end tests and CI/CD integration to WorkflowCore.Providers.Azure #1393
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
base: master
Are you sure you want to change the base?
Conversation
Co-authored-by: danielgerlag <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@copilot please add end to end tests that extend the integration tests, just like all the other persistence provider tests.
…e provider Co-authored-by: danielgerlag <[email protected]>
I've added comprehensive end-to-end tests for the Azure Table Storage persistence provider following the exact same patterns as other persistence provider tests in the repository. Added test project:
The tests follow the same structure as Commit: 1aacb24 |
@copilot can you please add the tests to the dotnet github workflow |
Co-authored-by: danielgerlag <[email protected]>
I've added the Azure Table Storage tests to the GitHub Actions workflow. Added an The job runs on ubuntu-latest with .NET 6.0, 8.0, and 9.0 support, and includes the standard restore, build, and test steps with proper verbosity and parallelization settings. Commit: a09a9cc |
This PR adds support for Azure Table Storage as a persistence provider for WorkflowCore, addressing the community request for Azure Storage-based persistence options.
What's Added
Azure Table Storage Persistence Provider
A complete implementation of
IPersistenceProvider
that uses Azure Table Storage for workflow persistence:Key Features
Table Storage Schema
The provider uses an optimized partition/row key strategy:
PartitionKey = "workflow"
,RowKey = workflowId
PartitionKey = "event"
,RowKey = eventId
PartitionKey = "subscription"
,RowKey = subscriptionId
PartitionKey = "command"
,RowKey = commandId
PartitionKey = "error"
,RowKey = errorId
Comprehensive Test Suite
WorkflowCore.Tests.Azure Project
Added a complete test project following the same patterns as other persistence provider tests:
AzureTableStoragePersistenceProviderFixture
extendingBasePersistenceFixture
to inherit all standard persistence testsAzureTableStorageBasicScenario
- Basic workflow executionAzureTableStorageEventScenario
- Event handling and subscriptionsAzureTableStorageDataScenario
- Data persistence and retrievalAzureTableStorageDelayScenario
- Delayed execution and schedulingAzureTableStorageIfScenario
- Conditional workflow logicAzureTableStorageForeachScenario
- Loop and iteration handlingAzureTableStorageWhileScenario
- While loop functionalityAzureTableStorageSagaScenario
- Saga pattern implementationAzureTableStorageCompensationScenario
- Compensation and rollbackThe test suite follows the exact same patterns as existing persistence provider tests (SQL Server, MongoDB, DynamoDB), ensuring consistency and maintainability.
GitHub Actions CI/CD Integration
Added
Azure-Tests
job to.github/workflows/dotnet.yml
following the same pattern as other persistence provider tests:ubuntu-latest
with .NET 6.0, 8.0, and 9.0 supportDocumentation Updates
Updated Persistence Documentation
The main
docs/persistence.md
now includes:Enhanced Azure Provider README
Added detailed usage examples and configuration options for the new Table Storage provider.
Technical Implementation
RequestFailedException
appropriately for missing entitiesThis provides a production-ready alternative to Cosmos DB persistence while maintaining full compatibility with existing WorkflowCore patterns and interfaces.
Fixes #326.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.