# Class FileSchemePersistenceOracleProvider OptimaJet.Workflow.Oracle.FileSchemePersistenceOracleProvider Namespace: [OptimaJet.Workflow.Oracle](https://api.workflowengine.io/oracle/OptimaJet.Workflow.Oracle/) ```csharp public class FileSchemePersistenceOracleProvider : OracleProvider, IWorkflowProvider, IPersistenceProvider, IApprovalProvider, IFormDataProvider, ISchemePersistenceProvider, IWorkflowGenerator, IMigratable ``` ## Type Hierarchy - [OracleProvider](https://api.workflowengine.io/oracle/OptimaJet.Workflow.Oracle/OracleProvider/) - FileSchemePersistenceOracleProvider Current type - Implemented interfaces - [IMigratable](https://api.workflowengine.io/migrator/OptimaJet.Workflow.Migrator/IMigratable/) - [IWorkflowProvider](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Persistence/IWorkflowProvider/) - [IPersistenceProvider](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Persistence/IPersistenceProvider/) - [IApprovalProvider](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Persistence/IApprovalProvider/) - [IFormDataProvider](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Persistence/IFormDataProvider/) - [ISchemePersistenceProvider](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Persistence/ISchemePersistenceProvider-TSchemeMedium/) - [IWorkflowGenerator](https://api.workflowengine.io/core/OptimaJet.Workflow.Core.Generator/IWorkflowGenerator-TSchemeMedium/) ## Constructors `public FileSchemePersistenceOracleProvider(string storePath, string connectionString, string schemaName = null, bool writeToHistory = true, bool writeSubProcessToRoot = true)` ### Parameters | Name | Type | Description | | --- | --- | --- | | `storePath` | `String` | | | `connectionString` | `String` | | | `schemaName` | `String` | | | `writeToHistory` | `Boolean` | | | `writeSubProcessToRoot` | `Boolean` | | ## Methods `public override Task AddSchemeTagsAsync(string schemeCode, IEnumerable tags)` Adds tags to a source scheme in the shared scope. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeCode` | `String` | The code of the shared source scheme. | | `tags` | `IEnumerable` | The scheme tags to add. | ### Returns | Type | Description | | --- | --- | | `Task` | A [Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task) that represents the asynchronous operation. | ### Exceptions | Type | Description | | --- | --- | | `SchemeNotFoundException` | Thrown when the shared source scheme identified by `schemeCode` does not exist. | `public override Task AddSchemeTagsAsync(string schemeCode, string tenantId, IEnumerable tags)` Adds tags to a source scheme in an exact tenant scope. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeCode` | `String` | The source scheme code. | | `tenantId` | `String` | The tenant identifier that defines the exact scope, or [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) for the shared scope. | | `tags` | `IEnumerable` | The scheme tags to add. | ### Returns | Type | Description | | --- | --- | | `Task` | A [Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task) that represents the asynchronous operation. | ### Exceptions | Type | Description | | --- | --- | | `SchemeNotFoundException` | Thrown when no source scheme with `schemeCode` exists in the scope selected by `tenantId`. | `public override Task> GetInlinedSchemeCodesAsync(string tenantId = null)` Gets the distinct codes of schemes available for use as inlinable schemes. ### Parameters | Name | Type | Description | | --- | --- | --- | | `tenantId` | `String` | The tenant identifier. When specified, the result includes shared schemes and schemes in that tenant scope; when [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null), the result includes only shared schemes. | ### Returns | Type | Description | | --- | --- | | `Task` | The distinct inlinable scheme codes. | `public override Task> GetRelatedByInliningSchemeCodesAsync(string schemeCode, string tenantId = null)` Gets the distinct codes of schemes that inline the specified scheme. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeCode` | `String` | The code of the inlinable scheme. | | `tenantId` | `String` | The tenant identifier of the parent schemes to search. When specified, only that tenant scope is searched; when [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null), shared schemes and all tenant scopes are searched. | ### Returns | Type | Description | | --- | --- | | `Task` | The distinct codes of schemes that inline the specified scheme. | `public override Task GetSchemeAsync(string code, string tenantId = null)` Gets the unparsed source scheme identified by a scheme code. ### Parameters | Name | Type | Description | | --- | --- | --- | | `code` | `String` | The code of the source scheme to retrieve. | | `tenantId` | `String` | The tenant identifier used to prefer a tenant-specific scheme over a shared scheme, or [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) to search only shared schemes. | ### Returns | Type | Description | | --- | --- | | `Task` | The unparsed source scheme represented by [XElement](https://learn.microsoft.com/dotnet/api/system.xml.linq.xelement). | ### Exceptions | Type | Description | | --- | --- | | `SchemeNotFoundException` | Thrown when no source scheme with `code` is available in the requested scope. | `public override Task RemoveSchemeTagsAsync(string schemeCode, IEnumerable tags)` Removes tags from a source scheme in the shared scope. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeCode` | `String` | The code of the shared source scheme. | | `tags` | `IEnumerable` | The scheme tags to remove. | ### Returns | Type | Description | | --- | --- | | `Task` | A [Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task) that represents the asynchronous operation. | ### Exceptions | Type | Description | | --- | --- | | `SchemeNotFoundException` | Thrown when the shared source scheme identified by `schemeCode` does not exist. | `public override Task RemoveSchemeTagsAsync(string schemeCode, string tenantId, IEnumerable tags)` Removes tags from a source scheme in an exact tenant scope. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeCode` | `String` | The source scheme code. | | `tenantId` | `String` | The tenant identifier that defines the exact scope, or [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) for the shared scope. | | `tags` | `IEnumerable` | The scheme tags to remove. | ### Returns | Type | Description | | --- | --- | | `Task` | A [Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task) that represents the asynchronous operation. | ### Exceptions | Type | Description | | --- | --- | | `SchemeNotFoundException` | Thrown when no source scheme with `schemeCode` exists in the scope selected by `tenantId`. | `public override Task SaveSchemeAsync(string schemaCode, bool canBeInlined, List inlinedSchemes, string scheme, List tags, string tenantId = null)` Saves an unparsed source scheme together with its Scheme Inlining relationships and tags. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemaCode` | `String` | | | `canBeInlined` | `Boolean` | [true](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool) if the scheme can be inlined into another scheme; otherwise, [false](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool). | | `inlinedSchemes` | `List` | The codes of the inlinable schemes referenced by this scheme. | | `scheme` | `String` | The serialized unparsed source scheme. | | `tags` | `List` | The scheme tags to store. | | `tenantId` | `String` | The tenant identifier that defines the exact storage scope, or [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) for a shared scheme. | ### Returns | Type | Description | | --- | --- | | `Task` | A [Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task) that represents the asynchronous operation. | `public override Task> SearchSchemesByTagsAsync(IEnumerable tags)` Gets the codes of shared schemes that match at least one specified tag. ### Parameters | Name | Type | Description | | --- | --- | --- | | `tags` | `IEnumerable` | The tags to match, or [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) to return all shared scheme codes. An empty collection also returns all shared scheme codes. | ### Returns | Type | Description | | --- | --- | | `Task` | The matching shared scheme codes. | `public override Task> SearchSchemesByTagsAsync(string tenantId, IEnumerable tags)` Gets the codes of schemes in an exact tenant scope that match at least one specified tag. ### Parameters | Name | Type | Description | | --- | --- | --- | | `tenantId` | `String` | The tenant identifier that defines the exact search scope, or [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) to search shared schemes. | | `tags` | `IEnumerable` | The tags to match, or [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) to return every scheme code in the selected scope. An empty collection also returns every scheme code in that scope. | ### Returns | Type | Description | | --- | --- | | `Task` | The matching scheme codes in the selected scope. | `public override Task SetSchemeTagsAsync(string schemeCode, IEnumerable tags)` Replaces all tags on a source scheme in the shared scope. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeCode` | `String` | The code of the shared source scheme. | | `tags` | `IEnumerable` | The replacement scheme tags; an empty collection removes all tags. | ### Returns | Type | Description | | --- | --- | | `Task` | A [Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task) that represents the asynchronous operation. | ### Exceptions | Type | Description | | --- | --- | | `SchemeNotFoundException` | Thrown when the shared source scheme identified by `schemeCode` does not exist. | `public override Task SetSchemeTagsAsync(string schemeCode, string tenantId, IEnumerable tags)` Replaces all tags on a source scheme in an exact tenant scope. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeCode` | `String` | The source scheme code. | | `tenantId` | `String` | The tenant identifier that defines the exact scope, or [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) for the shared scope. | | `tags` | `IEnumerable` | The replacement scheme tags; an empty collection removes all tags. | ### Returns | Type | Description | | --- | --- | | `Task` | A [Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task) that represents the asynchronous operation. | ### Exceptions | Type | Description | | --- | --- | | `SchemeNotFoundException` | Thrown when no source scheme with `schemeCode` exists in the scope selected by `tenantId`. | `public override Task> SearchSchemesByTagsInTenantAsync(string tenantId, params string[] tags)` Gets the codes of schemes in a specified tenant that match at least one specified tag. ### Parameters | Name | Type | Description | | --- | --- | --- | | `tenantId` | `String` | The tenant identifier that defines the exact search scope. | | `tags` | `String[]` | The tags to match. If the array is [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) or empty, every scheme code in the tenant scope is returned. | ### Returns | Type | Description | | --- | --- | | `Task` | The matching scheme codes in the specified tenant. | `public override Task AddSchemeTagsInTenantAsync(string schemeCode, string tenantId, params string[] tags)` Adds tags to a source scheme in a specified tenant. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeCode` | `String` | The source scheme code. | | `tenantId` | `String` | The tenant identifier that defines the exact scope. | | `tags` | `String[]` | The scheme tags to add. | ### Returns | Type | Description | | --- | --- | | `Task` | A [Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task) that represents the asynchronous operation. | ### Exceptions | Type | Description | | --- | --- | | `SchemeNotFoundException` | Thrown when no source scheme with `schemeCode` exists in the scope selected by `tenantId`. | `public override Task RemoveSchemeTagsInTenantAsync(string schemeCode, string tenantId, params string[] tags)` Removes tags from a source scheme in a specified tenant. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeCode` | `String` | The source scheme code. | | `tenantId` | `String` | The tenant identifier that defines the exact scope. | | `tags` | `String[]` | The scheme tags to remove. | ### Returns | Type | Description | | --- | --- | | `Task` | A [Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task) that represents the asynchronous operation. | ### Exceptions | Type | Description | | --- | --- | | `SchemeNotFoundException` | Thrown when no source scheme with `schemeCode` exists in the scope selected by `tenantId`. | `public override Task SetSchemeTagsInTenantAsync(string schemeCode, string tenantId, params string[] tags)` Replaces all tags on a source scheme in a specified tenant. ### Parameters | Name | Type | Description | | --- | --- | --- | | `schemeCode` | `String` | The source scheme code. | | `tenantId` | `String` | The tenant identifier that defines the exact scope. | | `tags` | `String[]` | The replacement scheme tags; an empty array removes all tags. | ### Returns | Type | Description | | --- | --- | | `Task` | A [Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task) that represents the asynchronous operation. | ### Exceptions | Type | Description | | --- | --- | | `SchemeNotFoundException` | Thrown when no source scheme with `schemeCode` exists in the scope selected by `tenantId`. | `public override void Init(WorkflowRuntime runtime)` Initializes the persistence provider for a WorkflowRuntime. ### Parameters | Name | Type | Description | | --- | --- | --- | | `runtime` | `WorkflowRuntime` | The WorkflowRuntime that uses this provider. | [Previous DbObject](https://api.workflowengine.io/oracle/OptimaJet.Workflow.Oracle/DbObject-TEntity/) [Next OracleProvider](https://api.workflowengine.io/oracle/OptimaJet.Workflow.Oracle/OracleProvider/)