diff --git a/src/samples/console/Elsa.Samples.ProgrammaticCompositeActivitiesConsole/Activities/Sum.cs b/src/samples/console/Elsa.Samples.ProgrammaticCompositeActivitiesConsole/Activities/Sum.cs
new file mode 100644
index 000000000..3a3e32da0
--- /dev/null
+++ b/src/samples/console/Elsa.Samples.ProgrammaticCompositeActivitiesConsole/Activities/Sum.cs
@@ -0,0 +1,42 @@
+using System;
+using Elsa.Activities.ControlFlow;
+using Elsa.Attributes;
+using Elsa.Builders;
+using Elsa.Services;
+
+namespace Elsa.Samples.ProgrammaticCompositeActivitiesConsole.Activities
+{
+ ///
+ /// Demonstrates accepting input properties and returning an output value from a composite activity.
+ ///
+ [Action(Outcomes = new[] { "Left", "Right" })]
+ public class Sum : CompositeActivity
+ {
+ [ActivityInput]
+ public int A
+ {
+ get => GetState();
+ set => SetState(value);
+ }
+
+ [ActivityInput]
+ public int B
+ {
+ get => GetState();
+ set => SetState(value);
+ }
+
+ [ActivityOutput]
+ public int Result
+ {
+ get => GetState();
+ set => SetState(value);
+ }
+
+ public override void Build(ICompositeActivityBuilder builder)
+ {
+ builder
+ .StartWith(c => Result = A + B);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/samples/console/Elsa.Samples.ProgrammaticCompositeActivitiesConsole/Elsa.Samples.ProgrammaticCompositeActivitiesConsole.csproj b/src/samples/console/Elsa.Samples.ProgrammaticCompositeActivitiesConsole/Elsa.Samples.ProgrammaticCompositeActivitiesConsole.csproj
index 2b23e71e4..721251245 100644
--- a/src/samples/console/Elsa.Samples.ProgrammaticCompositeActivitiesConsole/Elsa.Samples.ProgrammaticCompositeActivitiesConsole.csproj
+++ b/src/samples/console/Elsa.Samples.ProgrammaticCompositeActivitiesConsole/Elsa.Samples.ProgrammaticCompositeActivitiesConsole.csproj
@@ -7,13 +7,13 @@
-
-
-
+
+
+
-
+
diff --git a/src/samples/console/Elsa.Samples.ProgrammaticCompositeActivitiesConsole/Program.cs b/src/samples/console/Elsa.Samples.ProgrammaticCompositeActivitiesConsole/Program.cs
index be59fbbbd..16934dfd8 100644
--- a/src/samples/console/Elsa.Samples.ProgrammaticCompositeActivitiesConsole/Program.cs
+++ b/src/samples/console/Elsa.Samples.ProgrammaticCompositeActivitiesConsole/Program.cs
@@ -16,9 +16,8 @@ namespace Elsa.Samples.ProgrammaticCompositeActivitiesConsole
.AddLogging(logging => logging.AddConsole().SetMinimumLevel(LogLevel.Warning))
.AddElsa(options => options
.AddConsoleActivities()
- .AddActivity()
- .AddActivity()
- .AddWorkflow())
+ .AddActivitiesFrom()
+ .AddWorkflowsFrom())
.BuildServiceProvider();
// Run startup actions (not needed when registering Elsa with a Host).
diff --git a/src/samples/console/Elsa.Samples.ProgrammaticCompositeActivitiesConsole/Workflows/CompositionWorkflow.cs b/src/samples/console/Elsa.Samples.ProgrammaticCompositeActivitiesConsole/Workflows/CompositionWorkflow.cs
index 455dc61bd..d4b1ed564 100644
--- a/src/samples/console/Elsa.Samples.ProgrammaticCompositeActivitiesConsole/Workflows/CompositionWorkflow.cs
+++ b/src/samples/console/Elsa.Samples.ProgrammaticCompositeActivitiesConsole/Workflows/CompositionWorkflow.cs
@@ -20,6 +20,24 @@ namespace Elsa.Samples.ProgrammaticCompositeActivitiesConsole.Workflows
countDown.When("Right").WriteLine("Where going right!").ThenNamed("CountdownDemo");
})
.WriteLine("=Countdown demo=").WithName("CountdownDemo")
- .Then(activity => activity.Set(x => x.Start, 10));
+ .Then(activity => activity.Set(x => x.Start, 10))
+ .WriteLine("=Sum demo=").WithName("SumDemo")
+ .WriteLine("Enter first value:")
+ .ReadLine().WithName("ValueA")
+ .WriteLine("Enter second value:")
+ .ReadLine().WithName("ValueB")
+ .Then(activity => activity
+ .Set(x => x.A, async context =>
+ {
+ var a = (await context.WorkflowExecutionContext.GetNamedActivityPropertyAsync("ValueA", r => r.Output))!;
+ return int.Parse(a);
+ })
+ .Set(x => x.B, async context =>
+ {
+ var b = (await context.WorkflowExecutionContext.GetNamedActivityPropertyAsync("ValueB", r => r.Output))!;
+ return int.Parse(b);
+ })
+ ).WithName("Sum1")
+ .WriteLine(async context => $"Sum: {await context.GetNamedActivityPropertyAsync("Sum1", x => x.Result)}");
}
}
\ No newline at end of file