From 3c45c128fafb3a55e5e66ed02c3e3e557afcea23 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Jul 2022 13:44:22 +0000 Subject: [PATCH 1/9] Bump actions/setup-dotnet from 1 to 2 Bumps [actions/setup-dotnet](https://github.com/actions/setup-dotnet) from 1 to 2. - [Release notes](https://github.com/actions/setup-dotnet/releases) - [Commits](https://github.com/actions/setup-dotnet/compare/v1...v2) --- updated-dependencies: - dependency-name: actions/setup-dotnet dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/deploy-nuget.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-nuget.yaml b/.github/workflows/deploy-nuget.yaml index 0958162..e3f15ed 100644 --- a/.github/workflows/deploy-nuget.yaml +++ b/.github/workflows/deploy-nuget.yaml @@ -23,7 +23,7 @@ jobs: steps: - uses: actions/checkout@v3 - - uses: actions/setup-dotnet@v1 + - uses: actions/setup-dotnet@v2 with: dotnet-version: "6.0.x" From a6ea2b6d8d00066b39a7aaf3e9765e68b8f061fd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Aug 2022 13:36:38 +0000 Subject: [PATCH 2/9] Bump Microsoft.NET.Test.Sdk from 17.2.0 to 17.3.0 Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 17.2.0 to 17.3.0. - [Release notes](https://github.com/microsoft/vstest/releases) - [Commits](https://github.com/microsoft/vstest/compare/v17.2.0...v17.3.0) --- updated-dependencies: - dependency-name: Microsoft.NET.Test.Sdk dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj b/tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj index e553bdd..1fdb7f9 100644 --- a/tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj +++ b/tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj @@ -10,7 +10,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive From 199f8ce1b50ef1a1f163c43a45453d36450e0e25 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 12:27:35 +0000 Subject: [PATCH 3/9] Bump xunit from 2.4.1 to 2.4.2 Bumps [xunit](https://github.com/xunit/xunit) from 2.4.1 to 2.4.2. - [Release notes](https://github.com/xunit/xunit/releases) - [Commits](https://github.com/xunit/xunit/compare/2.4.1...2.4.2) --- updated-dependencies: - dependency-name: xunit dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj b/tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj index 1fdb7f9..6cb29c2 100644 --- a/tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj +++ b/tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj @@ -11,7 +11,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive all From 57f2188f7f75eaf5ab40e380b51b14fe8a4b12f0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 30 Sep 2022 13:56:59 +0000 Subject: [PATCH 4/9] Bump actions/setup-dotnet from 2 to 3 Bumps [actions/setup-dotnet](https://github.com/actions/setup-dotnet) from 2 to 3. - [Release notes](https://github.com/actions/setup-dotnet/releases) - [Commits](https://github.com/actions/setup-dotnet/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/setup-dotnet dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/deploy-nuget.yaml | 2 +- .github/workflows/tests-base.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy-nuget.yaml b/.github/workflows/deploy-nuget.yaml index e3f15ed..1b8c15d 100644 --- a/.github/workflows/deploy-nuget.yaml +++ b/.github/workflows/deploy-nuget.yaml @@ -23,7 +23,7 @@ jobs: steps: - uses: actions/checkout@v3 - - uses: actions/setup-dotnet@v2 + - uses: actions/setup-dotnet@v3 with: dotnet-version: "6.0.x" diff --git a/.github/workflows/tests-base.yaml b/.github/workflows/tests-base.yaml index f5053c2..ce42cc9 100644 --- a/.github/workflows/tests-base.yaml +++ b/.github/workflows/tests-base.yaml @@ -34,7 +34,7 @@ jobs: ASPNETCORE_ENVIRONMENT: Testing steps: - - uses: actions/setup-dotnet@v2 + - uses: actions/setup-dotnet@v3 with: dotnet-version: "6.0.x" From b3ac788b8fd368a405a1aea512c5df9cd609fe41 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Oct 2022 14:53:22 +0000 Subject: [PATCH 5/9] Bump Microsoft.Extensions.DependencyInjection from 6.0.0 to 6.0.1 Bumps [Microsoft.Extensions.DependencyInjection](https://github.com/dotnet/runtime) from 6.0.0 to 6.0.1. - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v6.0.0...v6.0.1) --- updated-dependencies: - dependency-name: Microsoft.Extensions.DependencyInjection dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj b/tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj index 6cb29c2..f397916 100644 --- a/tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj +++ b/tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj @@ -9,7 +9,7 @@ - + From 812ae4b672f5513590fb7e30a91561987e7a4db8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 07:03:12 +0000 Subject: [PATCH 6/9] Bump Microsoft.NET.Test.Sdk from 17.3.0 to 17.3.2 Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 17.3.0 to 17.3.2. - [Release notes](https://github.com/microsoft/vstest/releases) - [Commits](https://github.com/microsoft/vstest/compare/v17.3.0...v17.3.2) --- updated-dependencies: - dependency-name: Microsoft.NET.Test.Sdk dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj b/tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj index f397916..17bc2ab 100644 --- a/tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj +++ b/tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj @@ -10,7 +10,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive From 189d43cc8f0965d17f89a6ce07065e2698c0bd46 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Oct 2022 13:44:50 +0000 Subject: [PATCH 7/9] Bump coverlet.collector from 3.1.2 to 3.2.0 Bumps [coverlet.collector](https://github.com/coverlet-coverage/coverlet) from 3.1.2 to 3.2.0. - [Release notes](https://github.com/coverlet-coverage/coverlet/releases) - [Commits](https://github.com/coverlet-coverage/coverlet/commits/v3.2.0) --- updated-dependencies: - dependency-name: coverlet.collector dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj b/tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj index 17bc2ab..bb1ef17 100644 --- a/tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj +++ b/tests/DIT.Workflower.Tests/DIT.Workflower.Tests.csproj @@ -16,7 +16,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all From f99bd9b15cfd15643dd435c17c25bd4ce26d0371 Mon Sep 17 00:00:00 2001 From: "Shkar T. Noori" Date: Sun, 28 Apr 2024 11:17:50 +0300 Subject: [PATCH 8/9] Add GetAllTransitionDefinitions and GetAllowedTransitions methods to IWorkflow.cs --- .../Abstractions/IWorkflow.cs | 18 +++++++++++ src/DIT.Workflower/Query.cs | 13 ++++++++ src/DIT.Workflower/WorkflowDefinition.cs | 31 +++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 src/DIT.Workflower/Query.cs diff --git a/src/DIT.Workflower.DependencyInjection/Abstractions/IWorkflow.cs b/src/DIT.Workflower.DependencyInjection/Abstractions/IWorkflow.cs index 598a95c..fec6118 100644 --- a/src/DIT.Workflower.DependencyInjection/Abstractions/IWorkflow.cs +++ b/src/DIT.Workflower.DependencyInjection/Abstractions/IWorkflow.cs @@ -10,6 +10,15 @@ public interface IWorkflow string Reference => $"{Id}.v{Version}"; + /// + /// Retrieves all transition definitions for the workflow. + /// + /// The type of the workflow state. + /// The type of the workflow command. + /// The type of the workflow context. + /// A list of transition definitions. + public List> GetAllTransitionDefinitions(); + /// /// Gets a list of allowed transitions without any condition checks. /// @@ -24,4 +33,13 @@ public interface IWorkflow /// The incoming state /// A list of available transitions for the current context public List> GetAllowedTransitions(TContext context, TState from); + + /// + /// Retrieves a list of allowed transitions based on the provided request. + /// + /// The type of the workflow state. + /// The type of the workflow command. + /// The request object containing the necessary information. + /// An enumerable of allowed transitions. + public IEnumerable> GetAllowedTransitions(ListTransitionsRequest request); } diff --git a/src/DIT.Workflower/Query.cs b/src/DIT.Workflower/Query.cs new file mode 100644 index 0000000..0b071ab --- /dev/null +++ b/src/DIT.Workflower/Query.cs @@ -0,0 +1,13 @@ +namespace DIT.Workflower; + + +public sealed class ListTransitionsRequest +{ + public TState? From { get; set; } + + public TState? To { get; set; } + + public TCommand? Command { get; set; } + + public TContext? Context { get; set; } +} diff --git a/src/DIT.Workflower/WorkflowDefinition.cs b/src/DIT.Workflower/WorkflowDefinition.cs index 1b55ded..45ce199 100644 --- a/src/DIT.Workflower/WorkflowDefinition.cs +++ b/src/DIT.Workflower/WorkflowDefinition.cs @@ -12,6 +12,8 @@ public record WorkflowDefinition _transitions = transitions; } + public List> GetAllTransitionDefinitions() => _transitions; + /// /// Lists all allowed transitions from current state for the given context. /// @@ -33,4 +35,33 @@ public record WorkflowDefinition return query.Select(x => x.ToTransition()).ToList(); } + + + public IEnumerable> GetAllowedTransitions(ListTransitionsRequest request) + { + var query = _transitions.AsQueryable(); + + if (request.From is TState from) + { + query = query.Where(doc => doc.From.Equals(from)); + } + + if (request.To is TState to) + { + query = query.Where(doc => doc.To.Equals(to)); + } + + if (request.Command is TCommand command) + { + query = query.Where(doc => doc.Command.Equals(command)); + } + + if (request.Context is not null) + { + query = query.Where(doc => doc.Conditions == null || !doc.Conditions.Any(cond => !cond(request.Context))); + } + + return query.Select(x => x.ToTransition()); + } + } From 8ec528f2e0861e7b0bdc69d9411b480ada201f80 Mon Sep 17 00:00:00 2001 From: "Shkar T. Noori" Date: Sun, 28 Apr 2024 11:26:40 +0300 Subject: [PATCH 9/9] Update GitHub Actions workflows to use the latest versions of actions/setup-dotnet and actions/checkout --- .github/workflows/deploy-nuget.yaml | 9 ++++---- .github/workflows/tests-base.yaml | 16 +++++++------- .../DIT.Workflower.DependencyInjection.csproj | 22 ++++++++++++++++--- src/DIT.Workflower/DIT.Workflower.csproj | 14 ++++++++++++ 4 files changed, 46 insertions(+), 15 deletions(-) diff --git a/.github/workflows/deploy-nuget.yaml b/.github/workflows/deploy-nuget.yaml index 1b8c15d..87d64cf 100644 --- a/.github/workflows/deploy-nuget.yaml +++ b/.github/workflows/deploy-nuget.yaml @@ -1,3 +1,4 @@ +--- name: Deploy To Nuget on: @@ -19,13 +20,13 @@ jobs: build-push: name: Build and Publish needs: [test] - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - uses: actions/setup-dotnet@v3 + - uses: actions/setup-dotnet@v4 with: - dotnet-version: "6.0.x" + dotnet-version: "8.0.x" - name: Restore packages run: dotnet restore diff --git a/.github/workflows/tests-base.yaml b/.github/workflows/tests-base.yaml index ce42cc9..27b7efb 100644 --- a/.github/workflows/tests-base.yaml +++ b/.github/workflows/tests-base.yaml @@ -13,7 +13,7 @@ on: sonarqube: type: boolean required: false - default: fals + default: false secrets: SONARQUBE_HOST: @@ -34,11 +34,11 @@ jobs: ASPNETCORE_ENVIRONMENT: Testing steps: - - uses: actions/setup-dotnet@v3 + - uses: actions/setup-dotnet@v4 with: - dotnet-version: "6.0.x" + dotnet-version: "8.0.x" - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 if: ${{ !inputs.sonarqube }} - name: Run tests @@ -48,14 +48,14 @@ jobs: ############################### ########## SONARQUBE ########## ############################### - - name: Set up JDK 11 - uses: actions/setup-java@v3 + - name: Set up JDK + uses: actions/setup-java@v4 if: ${{ inputs.sonarqube }} with: distribution: "zulu" - java-version: "11" + java-version: "17" - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 if: ${{ inputs.sonarqube }} with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis diff --git a/src/DIT.Workflower.DependencyInjection/DIT.Workflower.DependencyInjection.csproj b/src/DIT.Workflower.DependencyInjection/DIT.Workflower.DependencyInjection.csproj index 2600550..d4560d0 100644 --- a/src/DIT.Workflower.DependencyInjection/DIT.Workflower.DependencyInjection.csproj +++ b/src/DIT.Workflower.DependencyInjection/DIT.Workflower.DependencyInjection.csproj @@ -1,13 +1,29 @@ - net6.0 + net6.0;net7.0;net8.0 enable enable + + true + DIT.Workflower.DependencyInjection + DIT + DIT + + + true + snupkg + + + true + true + - - + + + + diff --git a/src/DIT.Workflower/DIT.Workflower.csproj b/src/DIT.Workflower/DIT.Workflower.csproj index 15526bf..57417a8 100644 --- a/src/DIT.Workflower/DIT.Workflower.csproj +++ b/src/DIT.Workflower/DIT.Workflower.csproj @@ -5,6 +5,20 @@ enable enable latest + + true + DIT.Workflower + DIT + DIT + + + true + snupkg + + + true + true +