Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/dotnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ name: .NET

on:
push:
branches: [ "main" ]
branches: [ "main", "develop" ]
pull_request:
branches: [ "main" ]
branches: [ "main", "develop" ]

jobs:
build:
Expand Down
91 changes: 59 additions & 32 deletions Coflo.sln
Original file line number Diff line number Diff line change
Expand Up @@ -16,34 +16,44 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Coflo.Abstractions", "sourc
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "infrastructure", "infrastructure", "{E9952EF9-60A2-441B-BAFB-C285D8ED4761}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Coflo.Infrastructure.Messaging.RabbitMQ", "source\infrastructure\messaging\Coflo.Infrastructure.Messaging.RabbitMQ\Coflo.Infrastructure.Messaging.RabbitMQ.csproj", "{28F9D028-7AD1-4345-AFCF-13413E5F6250}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "messaging", "messaging", "{63D82DB8-ADE8-4D8E-A1BC-DB9A29ADCACE}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "locking", "locking", "{B57221CE-ABE3-420A-8802-C3FF5FD03EAD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Coflo.Infrastructure.Locking.Redis", "source\infrastructure\locking\Coflo.Infrastructure.Locking.Redis\Coflo.Infrastructure.Locking.Redis.csproj", "{F7A0F3BB-F8E3-4739-AB71-7704403C8FC8}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "persistance", "persistance", "{B4807B40-63D6-4119-ACE5-8E65EBBFFFAD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Coflo.Infrastructure.Persistance.MySQL", "source\infrastructure\persistance\Coflo.Infrastructure.Persistance.MySQL\Coflo.Infrastructure.Persistance.MySQL.csproj", "{C4FA592B-9A2E-4062-8746-D8684ECB545E}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "hosting", "hosting", "{DEAF9660-31F2-4E6B-9A77-93BA08D7D122}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Coflo.Hosting.Worker", "source\hosting\Coflo.Hosting.Worker\Coflo.Hosting.Worker.csproj", "{60FE92B2-095B-46C3-8FEC-8C2350E92884}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Coflo.Hosting.Api.Rest", "source\hosting\Coflo.Hosting.Api.Rest\Coflo.Hosting.Api.Rest.csproj", "{AE88171D-FB16-4686-B23E-1C5F75DF7DC2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Coflo.Hosting.Api.GRPC", "source\hosting\Coflo.Hosting.Api.GRPC\Coflo.Hosting.Api.GRPC.csproj", "{47131B79-A7E2-4A46-B9E8-98DDC0C20FCE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Coflo.SDK", "source\core\Coflo.SDK\Coflo.SDK.csproj", "{2569CD34-41EF-42A3-AE63-BE01A0124D44}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Coflo.Core", "source\core\Coflo.Core\Coflo.Core.csproj", "{2569CD34-41EF-42A3-AE63-BE01A0124D44}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{1230DC9F-E226-4466-B0B1-99B52B66232C}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "core", "core", "{FA4C5E4B-B42D-4BC5-9F26-FD32CD88F75F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Coflo.SDK.Tests", "tests\core\Coflo.SDK.Tests\Coflo.SDK.Tests.csproj", "{7FE22FFD-CB25-446A-9192-76127270C3E1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Coflo.Hosting.Orchestrator", "source\hosting\Coflo.Hosting.Orchestrator\Coflo.Hosting.Orchestrator.csproj", "{3009ACF8-F2DC-492C-8E41-7E36AB3A7A6C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Coflo.Core.Snowflake", "source\hosting\Coflo.Core.Snowflake\Coflo.Core.Snowflake.csproj", "{2FF4D33E-2964-41B3-B0B2-3C9D70616FBA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Coflo.Core.Snowflake.Tests", "tests\core\Coflo.Core.Snowflake.Tests\Coflo.Core.Snowflake.Tests.csproj", "{75110834-EBD6-450A-9092-B619CE02FEAC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "activities", "activities", "{A4E3E7F1-AA46-4934-90BA-598CE381F0AA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Coflo.Activities.Primitives", "source\activities\Coflo.Activities.Primitives\Coflo.Activities.Primitives.csproj", "{CDA31FB1-04BA-4A5D-9282-7EBAB755BE7E}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "hosting", "hosting", "{3DA27C4E-FE4A-4805-BDB7-61BDFFB9B30F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Coflo.Hosting.Worker.Tests", "tests\hosting\Coflo.Hosting.Worker.Tests\Coflo.Hosting.Worker.Tests.csproj", "{423ECCA1-DBC1-4947-8BD6-AAF3A8A55B37}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "caching", "caching", "{6F96D4D7-A683-44F1-8BBD-03684B7DF5DD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Coflo.Infrastructure.Caching.Redis", "source\infrastructure\caching\Coflo.Infrastructure.Caching.Redis\Coflo.Infrastructure.Caching.Redis.csproj", "{850C0239-46E5-4B2B-BBE8-954C4E93EDB4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Coflo.Infrastructure.Persistence.Cassandra", "source\infrastructure\persistance\Coflo.Infrastructure.Persistence.Cassandra\Coflo.Infrastructure.Persistence.Cassandra.csproj", "{FFE529A5-CF9D-46F6-9682-A23ED32B6648}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand All @@ -53,49 +63,38 @@ Global
{C46B2D26-B277-4EE0-9497-0473D52EE7A9} = {F514E571-76C3-477F-86F0-3C8CCF512015}
{28DE14D7-4F2E-40D9-B847-69866240023D} = {C46B2D26-B277-4EE0-9497-0473D52EE7A9}
{E9952EF9-60A2-441B-BAFB-C285D8ED4761} = {F514E571-76C3-477F-86F0-3C8CCF512015}
{63D82DB8-ADE8-4D8E-A1BC-DB9A29ADCACE} = {E9952EF9-60A2-441B-BAFB-C285D8ED4761}
{28F9D028-7AD1-4345-AFCF-13413E5F6250} = {63D82DB8-ADE8-4D8E-A1BC-DB9A29ADCACE}
{B57221CE-ABE3-420A-8802-C3FF5FD03EAD} = {E9952EF9-60A2-441B-BAFB-C285D8ED4761}
{F7A0F3BB-F8E3-4739-AB71-7704403C8FC8} = {B57221CE-ABE3-420A-8802-C3FF5FD03EAD}
{B4807B40-63D6-4119-ACE5-8E65EBBFFFAD} = {E9952EF9-60A2-441B-BAFB-C285D8ED4761}
{C4FA592B-9A2E-4062-8746-D8684ECB545E} = {B4807B40-63D6-4119-ACE5-8E65EBBFFFAD}
{DEAF9660-31F2-4E6B-9A77-93BA08D7D122} = {F514E571-76C3-477F-86F0-3C8CCF512015}
{60FE92B2-095B-46C3-8FEC-8C2350E92884} = {DEAF9660-31F2-4E6B-9A77-93BA08D7D122}
{AE88171D-FB16-4686-B23E-1C5F75DF7DC2} = {DEAF9660-31F2-4E6B-9A77-93BA08D7D122}
{47131B79-A7E2-4A46-B9E8-98DDC0C20FCE} = {DEAF9660-31F2-4E6B-9A77-93BA08D7D122}
{2569CD34-41EF-42A3-AE63-BE01A0124D44} = {C46B2D26-B277-4EE0-9497-0473D52EE7A9}
{FA4C5E4B-B42D-4BC5-9F26-FD32CD88F75F} = {1230DC9F-E226-4466-B0B1-99B52B66232C}
{7FE22FFD-CB25-446A-9192-76127270C3E1} = {FA4C5E4B-B42D-4BC5-9F26-FD32CD88F75F}
{3009ACF8-F2DC-492C-8E41-7E36AB3A7A6C} = {DEAF9660-31F2-4E6B-9A77-93BA08D7D122}
{2FF4D33E-2964-41B3-B0B2-3C9D70616FBA} = {C46B2D26-B277-4EE0-9497-0473D52EE7A9}
{75110834-EBD6-450A-9092-B619CE02FEAC} = {FA4C5E4B-B42D-4BC5-9F26-FD32CD88F75F}
{A4E3E7F1-AA46-4934-90BA-598CE381F0AA} = {F514E571-76C3-477F-86F0-3C8CCF512015}
{CDA31FB1-04BA-4A5D-9282-7EBAB755BE7E} = {A4E3E7F1-AA46-4934-90BA-598CE381F0AA}
{3DA27C4E-FE4A-4805-BDB7-61BDFFB9B30F} = {1230DC9F-E226-4466-B0B1-99B52B66232C}
{423ECCA1-DBC1-4947-8BD6-AAF3A8A55B37} = {3DA27C4E-FE4A-4805-BDB7-61BDFFB9B30F}
{6F96D4D7-A683-44F1-8BBD-03684B7DF5DD} = {E9952EF9-60A2-441B-BAFB-C285D8ED4761}
{850C0239-46E5-4B2B-BBE8-954C4E93EDB4} = {6F96D4D7-A683-44F1-8BBD-03684B7DF5DD}
{FFE529A5-CF9D-46F6-9682-A23ED32B6648} = {B4807B40-63D6-4119-ACE5-8E65EBBFFFAD}
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{28DE14D7-4F2E-40D9-B847-69866240023D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{28DE14D7-4F2E-40D9-B847-69866240023D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{28DE14D7-4F2E-40D9-B847-69866240023D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{28DE14D7-4F2E-40D9-B847-69866240023D}.Release|Any CPU.Build.0 = Release|Any CPU
{28F9D028-7AD1-4345-AFCF-13413E5F6250}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{28F9D028-7AD1-4345-AFCF-13413E5F6250}.Debug|Any CPU.Build.0 = Debug|Any CPU
{28F9D028-7AD1-4345-AFCF-13413E5F6250}.Release|Any CPU.ActiveCfg = Release|Any CPU
{28F9D028-7AD1-4345-AFCF-13413E5F6250}.Release|Any CPU.Build.0 = Release|Any CPU
{F7A0F3BB-F8E3-4739-AB71-7704403C8FC8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F7A0F3BB-F8E3-4739-AB71-7704403C8FC8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F7A0F3BB-F8E3-4739-AB71-7704403C8FC8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F7A0F3BB-F8E3-4739-AB71-7704403C8FC8}.Release|Any CPU.Build.0 = Release|Any CPU
{C4FA592B-9A2E-4062-8746-D8684ECB545E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C4FA592B-9A2E-4062-8746-D8684ECB545E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C4FA592B-9A2E-4062-8746-D8684ECB545E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C4FA592B-9A2E-4062-8746-D8684ECB545E}.Release|Any CPU.Build.0 = Release|Any CPU
{60FE92B2-095B-46C3-8FEC-8C2350E92884}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{60FE92B2-095B-46C3-8FEC-8C2350E92884}.Debug|Any CPU.Build.0 = Debug|Any CPU
{60FE92B2-095B-46C3-8FEC-8C2350E92884}.Release|Any CPU.ActiveCfg = Release|Any CPU
{60FE92B2-095B-46C3-8FEC-8C2350E92884}.Release|Any CPU.Build.0 = Release|Any CPU
{AE88171D-FB16-4686-B23E-1C5F75DF7DC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AE88171D-FB16-4686-B23E-1C5F75DF7DC2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AE88171D-FB16-4686-B23E-1C5F75DF7DC2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AE88171D-FB16-4686-B23E-1C5F75DF7DC2}.Release|Any CPU.Build.0 = Release|Any CPU
{47131B79-A7E2-4A46-B9E8-98DDC0C20FCE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{47131B79-A7E2-4A46-B9E8-98DDC0C20FCE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{47131B79-A7E2-4A46-B9E8-98DDC0C20FCE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{47131B79-A7E2-4A46-B9E8-98DDC0C20FCE}.Release|Any CPU.Build.0 = Release|Any CPU
{2569CD34-41EF-42A3-AE63-BE01A0124D44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2569CD34-41EF-42A3-AE63-BE01A0124D44}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2569CD34-41EF-42A3-AE63-BE01A0124D44}.Release|Any CPU.ActiveCfg = Release|Any CPU
Expand All @@ -104,5 +103,33 @@ Global
{7FE22FFD-CB25-446A-9192-76127270C3E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7FE22FFD-CB25-446A-9192-76127270C3E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7FE22FFD-CB25-446A-9192-76127270C3E1}.Release|Any CPU.Build.0 = Release|Any CPU
{3009ACF8-F2DC-492C-8E41-7E36AB3A7A6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3009ACF8-F2DC-492C-8E41-7E36AB3A7A6C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3009ACF8-F2DC-492C-8E41-7E36AB3A7A6C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3009ACF8-F2DC-492C-8E41-7E36AB3A7A6C}.Release|Any CPU.Build.0 = Release|Any CPU
{2FF4D33E-2964-41B3-B0B2-3C9D70616FBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2FF4D33E-2964-41B3-B0B2-3C9D70616FBA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2FF4D33E-2964-41B3-B0B2-3C9D70616FBA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2FF4D33E-2964-41B3-B0B2-3C9D70616FBA}.Release|Any CPU.Build.0 = Release|Any CPU
{75110834-EBD6-450A-9092-B619CE02FEAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{75110834-EBD6-450A-9092-B619CE02FEAC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{75110834-EBD6-450A-9092-B619CE02FEAC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{75110834-EBD6-450A-9092-B619CE02FEAC}.Release|Any CPU.Build.0 = Release|Any CPU
{CDA31FB1-04BA-4A5D-9282-7EBAB755BE7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CDA31FB1-04BA-4A5D-9282-7EBAB755BE7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CDA31FB1-04BA-4A5D-9282-7EBAB755BE7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CDA31FB1-04BA-4A5D-9282-7EBAB755BE7E}.Release|Any CPU.Build.0 = Release|Any CPU
{423ECCA1-DBC1-4947-8BD6-AAF3A8A55B37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{423ECCA1-DBC1-4947-8BD6-AAF3A8A55B37}.Debug|Any CPU.Build.0 = Debug|Any CPU
{423ECCA1-DBC1-4947-8BD6-AAF3A8A55B37}.Release|Any CPU.ActiveCfg = Release|Any CPU
{423ECCA1-DBC1-4947-8BD6-AAF3A8A55B37}.Release|Any CPU.Build.0 = Release|Any CPU
{850C0239-46E5-4B2B-BBE8-954C4E93EDB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{850C0239-46E5-4B2B-BBE8-954C4E93EDB4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{850C0239-46E5-4B2B-BBE8-954C4E93EDB4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{850C0239-46E5-4B2B-BBE8-954C4E93EDB4}.Release|Any CPU.Build.0 = Release|Any CPU
{FFE529A5-CF9D-46F6-9682-A23ED32B6648}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FFE529A5-CF9D-46F6-9682-A23ED32B6648}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FFE529A5-CF9D-46F6-9682-A23ED32B6648}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FFE529A5-CF9D-46F6-9682-A23ED32B6648}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal
9 changes: 1 addition & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,19 @@
![Discord](https://img.shields.io/discord/1096095159860600832?label=Discord&logo=Discord&style=for-the-badge)

Coflo is an in development, distrobuted workflow engine.

## Roadmap

- Additional browser support

- Add more integrations


## Run Locally




## Features




## Acknowledgements


## Appendix

## Contributing
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,8 @@
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\..\core\Coflo.Core\Coflo.Core.csproj" />
</ItemGroup>

</Project>
40 changes: 40 additions & 0 deletions source/activities/Coflo.Activities.Primitives/Control/If.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
using Coflo.Abstractions.Activities.Attributes;
using Coflo.Abstractions.Activities.Contracts;
using Coflo.Abstractions.Activities.Enums;
using Coflo.Abstractions.Activities.Models;
using Coflo.Abstractions.Evaluation.Contracts;
using Coflo.Abstractions.Evaluation.Models;
using Coflo.Abstractions.Variables.Model;

namespace Coflo.Activities.Primitives.Control;

[Activity(DisplayName = "If", Outcomes = new[] { "True", "False" }, Category = ActivityCategory.Decision)]
public class If : Activity
{
private readonly IEvaluator _evaluator;

[ActivityInput(DisplayName = "Condition")]
public string Condition { get; set; } = "false";

public If(IEvaluator evaluator) : base("IF")
{
_evaluator = evaluator;
}

public override async Task<IActivityExecutionResult> ExecuteAsync(ActivityExecutionContext context)
{
try
{
var evaluationContext = new EvaluationContext(context.Variables, Condition);
var result = await _evaluator.EvaluateAsync(evaluationContext);

return new ActivityExecutionResult(result ? "True" : "False", true, ActivityStatus.Completed,
new VariableCollection(), context.WorkflowInstanceId, context.ActivityInstanceId);
}
catch (Exception e)
{
return new ActivityExecutionResult(string.Empty, false, ActivityStatus.Faulted,
new VariableCollection(), context.WorkflowInstanceId, context.ActivityInstanceId);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
using Coflo.Abstractions.Activities.Attributes;
using Coflo.Abstractions.Activities.Contracts;
using Coflo.Abstractions.Activities.Enums;
using Coflo.Abstractions.Activities.Models;
using Coflo.Abstractions.Variables.Model;

namespace Coflo.Activities.Primitives.Variables;

[Activity(DisplayName = "Set Variable", Category = ActivityCategory.Workflow, Outcomes = new[] { Done, Failed })]
public class SetVariable : Activity
{
private const string Done = "Done";
private const string Failed = "Failed";

[ActivityInput(DisplayName = "Variable")]
public VariableDefinition Variable { get; set; }

[ActivityInput(DisplayName = "Value")]
public object? Value { get; set; }

public SetVariable() : base("SET_VARIABLE")
{
}

public override Task<IActivityExecutionResult> ExecuteAsync(ActivityExecutionContext context)
{
var variable = new VariableInstance(Variable);
variable.SetValue(Value);
var isUpdated = context.Variables.AddOrUpdate(variable);

var result = new ActivityExecutionResult(isUpdated ? Done : Failed, isUpdated, ActivityStatus.Completed, context.Variables,
context.WorkflowInstanceId, context.ActivityInstanceId);

return Task.FromResult(result as IActivityExecutionResult);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using Coflo.Abstractions.Activities.Enums;

namespace Coflo.Abstractions.Activities.Attributes;

public class ActivityAttribute : Attribute
{
public string DisplayName { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
public ActivityCategory Category { get; set; } = ActivityCategory.None;
public string[] Outcomes { get; set; } = { OutcomeNames.Failure, OutcomeNames.Success };
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace Coflo.Abstractions.Activities.Attributes;

[AttributeUsage(AttributeTargets.Property)]
public class ActivityInputAttribute : Attribute
{
public string DisplayName { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace Coflo.Abstractions.Activities.Attributes;

[AttributeUsage(AttributeTargets.Property)]
public class ActivityOutputAttribute : Attribute
{
public string DisplayName { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using Coflo.Abstractions.Variables.Model;
using Mediator;

namespace Coflo.Abstractions.Activities.Commands;

public class StartActivityCommand : ICommand
{
public long WorkflowInstanceId { get; set; }
public long ActivityDefinitionId { get; set; }
public IVariableCollection VariableCollection { get; set; }
public StartActivityCommand(long workflowInstanceId, long activityDefinitionId, IVariableCollection variableCollection)
{
WorkflowInstanceId = workflowInstanceId;
ActivityDefinitionId = activityDefinitionId;
VariableCollection = variableCollection;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
namespace Coflo.Abstractions.Activities.Contracts;

public interface IActivity : IActivityBody
{
public string Name { get; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Coflo.Abstractions.Activities.Models;

namespace Coflo.Abstractions.Activities.Contracts;

public interface IActivityBody
{
Task<IActivityExecutionResult> ExecuteAsync(ActivityExecutionContext context);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using Coflo.Abstractions.Variables.Model;

namespace Coflo.Abstractions.Activities.Contracts;

public interface IActivityExecutionContext
{
public VariableCollection Variables { get; set; }
public long WorkflowInstanceId { get; set; }
public long ActivityInstanceId { get; set; }
public string ActivityName { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using Coflo.Abstractions.Activities.Enums;
using Coflo.Abstractions.Variables.Model;

namespace Coflo.Abstractions.Activities.Contracts;

public interface IActivityExecutionResult
{
public bool IsSuccessful { get; set; }
public ActivityStatus Status { get; set; }
public IVariableCollection VariableCollection { get; set; }
public long WorkflowInstanceId { get; set; }
public long ActivityInstanceId { get; set; }
public string Outcome { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using Coflo.Abstractions.Activities.Enums;
using Coflo.Abstractions.Variables.Model;

namespace Coflo.Abstractions.Activities.Contracts;

public interface IActivityInstance
{
public long WorkflowInstanceId { get; set; }
public long ActivityInstanceId { get; set; }
public string ActivityName { get; set; }
public ActivityInstanceStatus Status { get; set; }

public VariableCollection VariableCollection { get; set; }
}
Loading