Added initial file activity and sample
This commit is contained in:
parent
22e19545fe
commit
ab2736e54d
27
Elsa.Activities.File/Activities/OutFile/OutFile.cs
Normal file
27
Elsa.Activities.File/Activities/OutFile/OutFile.cs
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
using Elsa.ActivityResults;
|
||||
using Elsa.Attributes;
|
||||
using Elsa.Services;
|
||||
using Elsa.Services.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Elsa.Activities.File
|
||||
{
|
||||
[Action(Category = "File",
|
||||
Description = "Output input value to specified location")]
|
||||
public class OutFile : Activity
|
||||
{
|
||||
[ActivityProperty(Hint = "Path to create file at.")]
|
||||
public string Path { get; set; }
|
||||
|
||||
protected async override ValueTask<IActivityExecutionResult> OnExecuteAsync(ActivityExecutionContext context)
|
||||
{
|
||||
await System.IO.File.WriteAllTextAsync(Path, (string)context.Input);
|
||||
|
||||
return Done();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
using Elsa.Builders;
|
||||
using Elsa.Services.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Elsa.Activities.File
|
||||
{
|
||||
public static class OutFileBuilderExtensions
|
||||
{
|
||||
public static IActivityBuilder OutFile(this IBuilder builder, Action<ISetupActivity<OutFile>> setup, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) => builder.Then(setup, null, lineNumber, sourceFile);
|
||||
|
||||
public static IActivityBuilder OutFile(this IBuilder builder, Func<ActivityExecutionContext, string> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
|
||||
builder.OutFile(activity => activity.WithPath(path), lineNumber, sourceFile);
|
||||
|
||||
public static IActivityBuilder OutFile(this IBuilder builder, Func<ActivityExecutionContext, ValueTask<string>> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
|
||||
builder.OutFile(activity => activity.WithPath(path!), lineNumber, sourceFile);
|
||||
|
||||
public static IActivityBuilder OutFile(this IBuilder builder, Func<string> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
|
||||
builder.OutFile(activity => activity.WithPath(path!), lineNumber, sourceFile);
|
||||
|
||||
public static IActivityBuilder OutFile(this IBuilder builder, Func<ValueTask<string>> path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
|
||||
builder.OutFile(activity => activity.WithPath(path!), lineNumber, sourceFile);
|
||||
|
||||
public static IActivityBuilder OutFile(this IBuilder builder, string path, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
|
||||
builder.OutFile(activity => activity.WithPath(path!), lineNumber, sourceFile);
|
||||
}
|
||||
}
|
||||
18
Elsa.Activities.File/Activities/OutFile/OutFileExtensions.cs
Normal file
18
Elsa.Activities.File/Activities/OutFile/OutFileExtensions.cs
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
using Elsa.Builders;
|
||||
using Elsa.Services.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Elsa.Activities.File
|
||||
{
|
||||
public static class OutFileExtensions
|
||||
{
|
||||
public static ISetupActivity<OutFile> WithPath(this ISetupActivity<OutFile> setup, Func<ActivityExecutionContext, ValueTask<string>> path) => setup.Set(x => x.Path, path);
|
||||
public static ISetupActivity<OutFile> WithPath(this ISetupActivity<OutFile> setup, Func<ActivityExecutionContext, string> path) => setup.Set(x => x.Path, path);
|
||||
public static ISetupActivity<OutFile> WithPath(this ISetupActivity<OutFile> setup, Func<ValueTask<string>> path) => setup.Set(x => x.Path, path);
|
||||
public static ISetupActivity<OutFile> WithPath(this ISetupActivity<OutFile> setup, Func<string> path) => setup.Set(x => x.Path, path);
|
||||
public static ISetupActivity<OutFile> WithPath(this ISetupActivity<OutFile> setup, string path) => setup.Set(x => x.Path, path);
|
||||
}
|
||||
}
|
||||
11
Elsa.Activities.File/Elsa.Activities.File.csproj
Normal file
11
Elsa.Activities.File/Elsa.Activities.File.csproj
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.1</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\src\core\Elsa.Core\Elsa.Core.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
using Elsa;
|
||||
using Elsa.Activities.File;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Microsoft.Extensions.DependencyInjection
|
||||
{
|
||||
public static class ServiceCollectionExtensions
|
||||
{
|
||||
public static IServiceCollection AddFileActivities(this IServiceCollection services)
|
||||
{
|
||||
return services;
|
||||
}
|
||||
|
||||
public static ElsaOptionsBuilder AddFileActivities(this ElsaOptionsBuilder builder)
|
||||
{
|
||||
builder.AddActivity<OutFile>();
|
||||
|
||||
return builder;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Elsa.Activities.File\Elsa.Activities.File.csproj" />
|
||||
<ProjectReference Include="..\src\core\Elsa\Elsa.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
50
Elsa.Samples.ReadLineToFile/Program.cs
Normal file
50
Elsa.Samples.ReadLineToFile/Program.cs
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
using Elsa.Models;
|
||||
using Elsa.Persistence;
|
||||
using Elsa.Persistence.Specifications;
|
||||
using Elsa.Persistence.Specifications.WorkflowInstances;
|
||||
using Elsa.Services;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Elsa.Samples.ReadLineToFile
|
||||
{
|
||||
class Program
|
||||
{
|
||||
static async Task Main(string[] args)
|
||||
{
|
||||
var services = new ServiceCollection()
|
||||
.AddElsa(configure => configure
|
||||
.AddConsoleActivities()
|
||||
.AddFileActivities())
|
||||
.AddAutoMapperProfiles<Program>()
|
||||
.BuildServiceProvider();
|
||||
|
||||
// Run startup actions (not needed when registering Elsa with a Host).
|
||||
var startupRunner = services.GetRequiredService<IStartupRunner>();
|
||||
await startupRunner.StartupAsync();
|
||||
|
||||
// Get a workflow runner.
|
||||
var workflowRunner = services.GetRequiredService<IBuildsAndStartsWorkflow>();
|
||||
|
||||
// Run the workflow.
|
||||
await workflowRunner.BuildAndStartWorkflowAsync<ReadLineToFileWorkflow>();
|
||||
|
||||
var store = services.GetRequiredService<IWorkflowInstanceStore>();
|
||||
|
||||
var results = await store.FindManyAsync(
|
||||
new WorkflowDefinitionIdSpecification(nameof(ReadLineToFileWorkflow)),
|
||||
OrderBySpecification.OrderByDescending<WorkflowInstance>(x => x.CreatedAt),
|
||||
Paging.Page(1, 2));
|
||||
|
||||
var count = await store.CountAsync(new WorkflowDefinitionIdSpecification(nameof(ReadLineToFileWorkflow)));
|
||||
|
||||
Console.WriteLine(count);
|
||||
|
||||
foreach (var result in results)
|
||||
{
|
||||
Console.WriteLine(result.CreatedAt);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
23
Elsa.Samples.ReadLineToFile/ReadLineToFileWorkflow.cs
Normal file
23
Elsa.Samples.ReadLineToFile/ReadLineToFileWorkflow.cs
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
using Elsa.Activities.Console;
|
||||
using Elsa.Activities.File;
|
||||
using Elsa.Builders;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
namespace Elsa.Samples.ReadLineToFile
|
||||
{
|
||||
public class ReadLineToFileWorkflow : IWorkflow
|
||||
{
|
||||
public void Build(IWorkflowBuilder builder)
|
||||
{
|
||||
var temp = Path.GetTempFileName();
|
||||
|
||||
builder
|
||||
.WriteLine("Enter text to write to file")
|
||||
.ReadLine()
|
||||
.OutFile(temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
20
Elsa.sln
20
Elsa.sln
|
|
@ -239,11 +239,15 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.BlobStorage
|
|||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "locking", "locking", "{DBBD242E-4437-4BDB-919F-A70839BE75FA}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.DistributedLocking.SqlServer", "src\locking\Elsa.DistributedLocking.SqlServer\Elsa.DistributedLocking.SqlServer.csproj", "{B09A6E42-EF42-4693-BA0E-5EE1D7F81FFD}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.DistributedLocking.SqlServer", "src\locking\Elsa.DistributedLocking.SqlServer\Elsa.DistributedLocking.SqlServer.csproj", "{B09A6E42-EF42-4693-BA0E-5EE1D7F81FFD}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.DistributedLocking.Redis", "src\locking\Elsa.DistributedLocking.Redis\Elsa.DistributedLocking.Redis.csproj", "{7E5514AC-3633-4237-9490-0992417F2273}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.DistributedLocking.Redis", "src\locking\Elsa.DistributedLocking.Redis\Elsa.DistributedLocking.Redis.csproj", "{7E5514AC-3633-4237-9490-0992417F2273}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.DistributedLocking.AzureBlob", "src\locking\Elsa.DistributedLocking.AzureBlob\Elsa.DistributedLocking.AzureBlob.csproj", "{495BE954-E6EA-41A9-8054-A5CA5DD0924E}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.DistributedLocking.AzureBlob", "src\locking\Elsa.DistributedLocking.AzureBlob\Elsa.DistributedLocking.AzureBlob.csproj", "{495BE954-E6EA-41A9-8054-A5CA5DD0924E}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Activities.File", "Elsa.Activities.File\Elsa.Activities.File.csproj", "{C7BCC9FA-4F61-4834-AB27-3D7C204E512D}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.ReadLineToFile", "Elsa.Samples.ReadLineToFile\Elsa.Samples.ReadLineToFile.csproj", "{08C78021-B949-4A73-A4C6-0D72876B9593}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "blazor", "blazor", "{D86B94DC-A53C-4A67-A820-828DD359C49B}"
|
||||
EndProject
|
||||
|
|
@ -639,6 +643,14 @@ Global
|
|||
{3DF05CFC-AC77-489F-9A42-C4FDB599AA69}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3DF05CFC-AC77-489F-9A42-C4FDB599AA69}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3DF05CFC-AC77-489F-9A42-C4FDB599AA69}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C7BCC9FA-4F61-4834-AB27-3D7C204E512D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C7BCC9FA-4F61-4834-AB27-3D7C204E512D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C7BCC9FA-4F61-4834-AB27-3D7C204E512D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C7BCC9FA-4F61-4834-AB27-3D7C204E512D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{08C78021-B949-4A73-A4C6-0D72876B9593}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{08C78021-B949-4A73-A4C6-0D72876B9593}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{08C78021-B949-4A73-A4C6-0D72876B9593}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{08C78021-B949-4A73-A4C6-0D72876B9593}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
|
@ -764,6 +776,8 @@ Global
|
|||
{F1EF5639-021A-4D22-9D4A-73D57C88EBFA} = {C869CC72-9A98-4246-9A76-6A50F48AFD85}
|
||||
{3A30EFFE-32D8-40B8-9C62-427037BB5424} = {EEBEA8AF-C8A8-4C71-A96C-D5836DE24359}
|
||||
{3DF05CFC-AC77-489F-9A42-C4FDB599AA69} = {8B6B40A8-DF21-4CD2-BABD-474B79D0C3AF}
|
||||
{C7BCC9FA-4F61-4834-AB27-3D7C204E512D} = {B43B546E-23F3-46E8-ACB7-D04F05CDA180}
|
||||
{08C78021-B949-4A73-A4C6-0D72876B9593} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {8B0975FD-7050-48B0-88C5-48C33378E158}
|
||||
|
|
|
|||
Loading…
Reference in a new issue