diff --git a/src/modules/Elsa.Workflows.Management/Services/WorkflowDefinitionCacheManager.cs b/src/modules/Elsa.Workflows.Management/Services/WorkflowDefinitionCacheManager.cs index 8fdbd6d745..973a2e718b 100644 --- a/src/modules/Elsa.Workflows.Management/Services/WorkflowDefinitionCacheManager.cs +++ b/src/modules/Elsa.Workflows.Management/Services/WorkflowDefinitionCacheManager.cs @@ -1,43 +1,44 @@ using Elsa.Caching; using Elsa.Common.Models; +using Elsa.Common.Multitenancy; using Elsa.Workflows.Management.Filters; namespace Elsa.Workflows.Management.Services; /// -public class WorkflowDefinitionCacheManager(ICacheManager cache, IHasher hasher) : IWorkflowDefinitionCacheManager +public class WorkflowDefinitionCacheManager(ICacheManager cache, IHasher hasher, ITenantAccessor tenantAccessor) : IWorkflowDefinitionCacheManager { /// public ICacheManager Cache => cache; /// - public string CreateWorkflowDefinitionVersionCacheKey(string definitionId, VersionOptions versionOptions) => $"WorkflowDefinition:{definitionId}:{versionOptions}"; + public string CreateWorkflowDefinitionVersionCacheKey(string definitionId, VersionOptions versionOptions) => TenantPrefix() + $"WorkflowDefinition:{definitionId}:{versionOptions}"; /// public string CreateWorkflowDefinitionFilterCacheKey(WorkflowDefinitionFilter filter) { var hash = hasher.Hash(filter); - return $"WorkflowDefinition:{hash}"; + return TenantPrefix() + $"WorkflowDefinition:{hash}"; } /// - public string CreateWorkflowVersionCacheKey(string definitionId, VersionOptions versionOptions) => $"Workflow:{definitionId}:{versionOptions}"; + public string CreateWorkflowVersionCacheKey(string definitionId, VersionOptions versionOptions) => TenantPrefix() + $"Workflow:{definitionId}:{versionOptions}"; /// - public string CreateWorkflowVersionCacheKey(string definitionVersionId) => $"Workflow:{definitionVersionId}"; + public string CreateWorkflowVersionCacheKey(string definitionVersionId) => TenantPrefix() + $"Workflow:{definitionVersionId}"; /// public string CreateWorkflowFilterCacheKey(WorkflowDefinitionFilter filter) { var hash = hasher.Hash(filter); - return $"Workflow:{hash}"; + return TenantPrefix() + $"Workflow:{hash}"; } /// - public string CreateWorkflowDefinitionVersionCacheKey(string definitionVersionId) => $"WorkflowDefinition:{definitionVersionId}"; + public string CreateWorkflowDefinitionVersionCacheKey(string definitionVersionId) => TenantPrefix() + $"WorkflowDefinition:{definitionVersionId}"; /// - public string CreateWorkflowDefinitionChangeTokenKey(string definitionId) => $"WorkflowChangeToken:{definitionId}"; + public string CreateWorkflowDefinitionChangeTokenKey(string definitionId) => TenantPrefix() + $"WorkflowChangeToken:{definitionId}"; /// public async Task EvictWorkflowDefinitionAsync(string definitionId, CancellationToken cancellationToken = default) @@ -45,4 +46,10 @@ public async Task EvictWorkflowDefinitionAsync(string definitionId, Cancellation var changeTokenKey = CreateWorkflowDefinitionChangeTokenKey(definitionId); await cache.TriggerTokenAsync(changeTokenKey, cancellationToken); } + + private string TenantPrefix() + { + var tenantId = tenantAccessor.TenantId; + return string.IsNullOrEmpty(tenantId) ? string.Empty : $"{tenantId}:"; + } } \ No newline at end of file