diff --git a/.gitignore b/.gitignore index 31c7257..b299ff1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ .tasks/ .agile/ +**/bin/ +**/obj/ diff --git a/BuildingBlock.Workflow.slnx b/BuildingBlock.Workflow.slnx new file mode 100644 index 0000000..2c9e3c2 --- /dev/null +++ b/BuildingBlock.Workflow.slnx @@ -0,0 +1,5 @@ + + + + + diff --git a/Directory.Build.props b/Directory.Build.props new file mode 100644 index 0000000..17cbfc6 --- /dev/null +++ b/Directory.Build.props @@ -0,0 +1,10 @@ + + + AgileWebs + AgileWebs + git + http://192.168.68.156:3000/AgileWebs/building-block-workflow + http://192.168.68.156:3000/AgileWebs/building-block-workflow + false + + diff --git a/src/BuildingBlock.Workflow.Contracts/Abstractions/IWorkflowCapabilityContract.cs b/src/BuildingBlock.Workflow.Contracts/Abstractions/IWorkflowCapabilityContract.cs new file mode 100644 index 0000000..55189c0 --- /dev/null +++ b/src/BuildingBlock.Workflow.Contracts/Abstractions/IWorkflowCapabilityContract.cs @@ -0,0 +1,11 @@ +using BuildingBlock.Workflow.Contracts.Requests; +using BuildingBlock.Workflow.Contracts.Responses; + +namespace BuildingBlock.Workflow.Contracts.Abstractions; + +public interface IWorkflowCapabilityContract +{ + Task TransitionWorkflowStateAsync( + TransitionWorkflowStateRequest request, + CancellationToken cancellationToken); +} diff --git a/src/BuildingBlock.Workflow.Contracts/BuildingBlock.Workflow.Contracts.csproj b/src/BuildingBlock.Workflow.Contracts/BuildingBlock.Workflow.Contracts.csproj new file mode 100644 index 0000000..b760144 --- /dev/null +++ b/src/BuildingBlock.Workflow.Contracts/BuildingBlock.Workflow.Contracts.csproj @@ -0,0 +1,9 @@ + + + + net10.0 + enable + enable + + + diff --git a/src/BuildingBlock.Workflow.Contracts/Contracts/WorkflowState.cs b/src/BuildingBlock.Workflow.Contracts/Contracts/WorkflowState.cs new file mode 100644 index 0000000..10fba30 --- /dev/null +++ b/src/BuildingBlock.Workflow.Contracts/Contracts/WorkflowState.cs @@ -0,0 +1,11 @@ +namespace BuildingBlock.Workflow.Contracts.Contracts; + +public enum WorkflowState +{ + Queued = 0, + InProgress = 1, + Blocked = 2, + Completed = 3, + Failed = 4, + Canceled = 5 +} diff --git a/src/BuildingBlock.Workflow.Contracts/Contracts/WorkflowWorkItemContract.cs b/src/BuildingBlock.Workflow.Contracts/Contracts/WorkflowWorkItemContract.cs new file mode 100644 index 0000000..08f15dd --- /dev/null +++ b/src/BuildingBlock.Workflow.Contracts/Contracts/WorkflowWorkItemContract.cs @@ -0,0 +1,8 @@ +namespace BuildingBlock.Workflow.Contracts.Contracts; + +public sealed record WorkflowWorkItemContract( + string WorkItemId, + string WorkType, + int Priority, + DateTime RequestedAtUtc, + WorkflowState CurrentState); diff --git a/src/BuildingBlock.Workflow.Contracts/Requests/TransitionWorkflowStateRequest.cs b/src/BuildingBlock.Workflow.Contracts/Requests/TransitionWorkflowStateRequest.cs new file mode 100644 index 0000000..b6dadbe --- /dev/null +++ b/src/BuildingBlock.Workflow.Contracts/Requests/TransitionWorkflowStateRequest.cs @@ -0,0 +1,9 @@ +using BuildingBlock.Workflow.Contracts.Contracts; + +namespace BuildingBlock.Workflow.Contracts.Requests; + +public sealed record TransitionWorkflowStateRequest( + string WorkItemId, + WorkflowState TargetState, + string RequestedBy, + DateTime RequestedAtUtc); diff --git a/src/BuildingBlock.Workflow.Contracts/Responses/TransitionWorkflowStateResponse.cs b/src/BuildingBlock.Workflow.Contracts/Responses/TransitionWorkflowStateResponse.cs new file mode 100644 index 0000000..146635f --- /dev/null +++ b/src/BuildingBlock.Workflow.Contracts/Responses/TransitionWorkflowStateResponse.cs @@ -0,0 +1,10 @@ +using BuildingBlock.Workflow.Contracts.Contracts; + +namespace BuildingBlock.Workflow.Contracts.Responses; + +public sealed record TransitionWorkflowStateResponse( + string WorkItemId, + WorkflowState PreviousState, + WorkflowState CurrentState, + bool TransitionApplied, + string? RejectionReason);