diff --git a/src/modules/Elsa.Telnyx/Activities/AnswerCall.cs b/src/modules/Elsa.Telnyx/Activities/AnswerCall.cs
index 5f542455c..0399a1209 100644
--- a/src/modules/Elsa.Telnyx/Activities/AnswerCall.cs
+++ b/src/modules/Elsa.Telnyx/Activities/AnswerCall.cs
@@ -1,4 +1,5 @@
using System.Runtime.CompilerServices;
+using System.Text.Json.Serialization;
using Elsa.Telnyx.Attributes;
using Elsa.Telnyx.Bookmarks;
using Elsa.Telnyx.Client.Models;
@@ -21,6 +22,7 @@ namespace Elsa.Telnyx.Activities;
public class FlowAnswerCall : AnswerCallBase
{
///
+ [JsonConstructor]
public FlowAnswerCall([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
diff --git a/src/modules/Elsa.Telnyx/Activities/BridgeCalls.cs b/src/modules/Elsa.Telnyx/Activities/BridgeCalls.cs
index 519a71e5b..903fa4cf4 100644
--- a/src/modules/Elsa.Telnyx/Activities/BridgeCalls.cs
+++ b/src/modules/Elsa.Telnyx/Activities/BridgeCalls.cs
@@ -1,4 +1,5 @@
using System.Runtime.CompilerServices;
+using System.Text.Json.Serialization;
using Elsa.Telnyx.Attributes;
using Elsa.Telnyx.Bookmarks;
using Elsa.Telnyx.Client.Models;
@@ -20,6 +21,7 @@ namespace Elsa.Telnyx.Activities;
public class FlowBridgeCalls : BridgeCallsBase
{
///
+ [JsonConstructor]
public FlowBridgeCalls([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
@@ -32,6 +34,7 @@ public class FlowBridgeCalls : BridgeCallsBase
public class BridgeCalls : BridgeCallsBase
{
///
+ [JsonConstructor]
public BridgeCalls([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
diff --git a/src/modules/Elsa.Telnyx/Activities/Dial.cs b/src/modules/Elsa.Telnyx/Activities/Dial.cs
index 2860648e2..1d8a9f628 100644
--- a/src/modules/Elsa.Telnyx/Activities/Dial.cs
+++ b/src/modules/Elsa.Telnyx/Activities/Dial.cs
@@ -1,4 +1,5 @@
using System.Runtime.CompilerServices;
+using System.Text.Json.Serialization;
using Elsa.Telnyx.Attributes;
using Elsa.Telnyx.Bookmarks;
using Elsa.Telnyx.Client.Models;
@@ -127,6 +128,7 @@ public abstract class DialBase : ActivityBase
[FlowNode("Answered", "Hangup", "Voicemail")]
public class FlowDial : DialBase
{
+ [JsonConstructor]
private FlowDial([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
@@ -147,6 +149,7 @@ public class FlowDial : DialBase
public class Dial : DialBase
{
///
+ [JsonConstructor]
public Dial([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
diff --git a/src/modules/Elsa.Telnyx/Activities/GatherUsingAudio.cs b/src/modules/Elsa.Telnyx/Activities/GatherUsingAudio.cs
index a691873a3..8ad9c4b50 100644
--- a/src/modules/Elsa.Telnyx/Activities/GatherUsingAudio.cs
+++ b/src/modules/Elsa.Telnyx/Activities/GatherUsingAudio.cs
@@ -1,4 +1,5 @@
using System.Runtime.CompilerServices;
+using System.Text.Json.Serialization;
using Elsa.Telnyx.Attributes;
using Elsa.Telnyx.Bookmarks;
using Elsa.Telnyx.Client.Models;
@@ -23,6 +24,7 @@ namespace Elsa.Telnyx.Activities;
public class GatherUsingAudio : ActivityBase, IBookmarksPersistedHandler
{
///
+ [JsonConstructor]
public GatherUsingAudio([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
diff --git a/src/modules/Elsa.Telnyx/Activities/GatherUsingSpeak.cs b/src/modules/Elsa.Telnyx/Activities/GatherUsingSpeak.cs
index c839a5996..e4a3799b5 100644
--- a/src/modules/Elsa.Telnyx/Activities/GatherUsingSpeak.cs
+++ b/src/modules/Elsa.Telnyx/Activities/GatherUsingSpeak.cs
@@ -1,4 +1,5 @@
using System.Runtime.CompilerServices;
+using System.Text.Json.Serialization;
using Elsa.Telnyx.Attributes;
using Elsa.Telnyx.Bookmarks;
using Elsa.Telnyx.Client.Models;
@@ -24,6 +25,7 @@ namespace Elsa.Telnyx.Activities;
public class GatherUsingSpeak : ActivityBase, IBookmarksPersistedHandler
{
///
+ [JsonConstructor]
public GatherUsingSpeak([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
diff --git a/src/modules/Elsa.Telnyx/Activities/HangupCall.cs b/src/modules/Elsa.Telnyx/Activities/HangupCall.cs
index 335a2dc4f..c63750edf 100644
--- a/src/modules/Elsa.Telnyx/Activities/HangupCall.cs
+++ b/src/modules/Elsa.Telnyx/Activities/HangupCall.cs
@@ -1,4 +1,5 @@
using System.Runtime.CompilerServices;
+using System.Text.Json.Serialization;
using Elsa.Telnyx.Client.Models;
using Elsa.Telnyx.Client.Services;
using Elsa.Telnyx.Extensions;
@@ -16,6 +17,7 @@ namespace Elsa.Telnyx.Activities;
public class FlowHangupCall : HangupCallBase
{
///
+ [JsonConstructor]
public FlowHangupCall([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
@@ -31,6 +33,7 @@ public class FlowHangupCall : HangupCallBase
public class HangupCall : HangupCallBase
{
///
+ [JsonConstructor]
public HangupCall([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
diff --git a/src/modules/Elsa.Telnyx/Activities/IncomingCall.cs b/src/modules/Elsa.Telnyx/Activities/IncomingCall.cs
index 66ace6af3..63bb6ea79 100644
--- a/src/modules/Elsa.Telnyx/Activities/IncomingCall.cs
+++ b/src/modules/Elsa.Telnyx/Activities/IncomingCall.cs
@@ -1,4 +1,5 @@
using System.Runtime.CompilerServices;
+using System.Text.Json.Serialization;
using Elsa.Expressions.Models;
using Elsa.Telnyx.Bookmarks;
using Elsa.Telnyx.Extensions;
@@ -23,6 +24,7 @@ namespace Elsa.Telnyx.Activities;
public class IncomingCall : Trigger
{
///
+ [JsonConstructor]
public IncomingCall([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
diff --git a/src/modules/Elsa.Telnyx/Activities/LookupNumber.cs b/src/modules/Elsa.Telnyx/Activities/LookupNumber.cs
index 0220d5d5f..be93cd3c1 100644
--- a/src/modules/Elsa.Telnyx/Activities/LookupNumber.cs
+++ b/src/modules/Elsa.Telnyx/Activities/LookupNumber.cs
@@ -1,4 +1,5 @@
using System.Runtime.CompilerServices;
+using System.Text.Json.Serialization;
using Elsa.Telnyx.Client.Models;
using Elsa.Telnyx.Client.Services;
using Elsa.Workflows.Core;
@@ -15,6 +16,7 @@ namespace Elsa.Telnyx.Activities;
public class LookupNumber : Activity
{
///
+ [JsonConstructor]
public LookupNumber([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
diff --git a/src/modules/Elsa.Telnyx/Activities/PlayAudio.cs b/src/modules/Elsa.Telnyx/Activities/PlayAudio.cs
index d2a6886ce..36ad8a939 100644
--- a/src/modules/Elsa.Telnyx/Activities/PlayAudio.cs
+++ b/src/modules/Elsa.Telnyx/Activities/PlayAudio.cs
@@ -1,4 +1,5 @@
using System.Runtime.CompilerServices;
+using System.Text.Json.Serialization;
using Elsa.Telnyx.Attributes;
using Elsa.Telnyx.Bookmarks;
using Elsa.Telnyx.Client.Models;
@@ -20,6 +21,7 @@ namespace Elsa.Telnyx.Activities;
public class FlowPlayAudio : PlayAudioBase
{
///
+ [JsonConstructor]
public FlowPlayAudio([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
@@ -35,6 +37,7 @@ public class FlowPlayAudio : PlayAudioBase
public class PlayAudio : PlayAudioBase
{
///
+ [JsonConstructor]
public PlayAudio([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
diff --git a/src/modules/Elsa.Telnyx/Activities/SpeakText.cs b/src/modules/Elsa.Telnyx/Activities/SpeakText.cs
index 41504653d..31c251e9d 100644
--- a/src/modules/Elsa.Telnyx/Activities/SpeakText.cs
+++ b/src/modules/Elsa.Telnyx/Activities/SpeakText.cs
@@ -1,4 +1,5 @@
using System.Runtime.CompilerServices;
+using System.Text.Json.Serialization;
using Elsa.Telnyx.Attributes;
using Elsa.Telnyx.Bookmarks;
using Elsa.Telnyx.Client.Models;
@@ -132,6 +133,7 @@ public abstract class SpeakTextBase : ActivityBase
public class FlowSpeakText : SpeakTextBase
{
///
+ [JsonConstructor]
public FlowSpeakText([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
@@ -147,6 +149,7 @@ public class FlowSpeakText : SpeakTextBase
public class SpeakText : SpeakTextBase
{
///
+ [JsonConstructor]
public SpeakText([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
diff --git a/src/modules/Elsa.Telnyx/Activities/StartRecording.cs b/src/modules/Elsa.Telnyx/Activities/StartRecording.cs
index 95ee46c98..a0af96681 100644
--- a/src/modules/Elsa.Telnyx/Activities/StartRecording.cs
+++ b/src/modules/Elsa.Telnyx/Activities/StartRecording.cs
@@ -1,4 +1,5 @@
using System.Runtime.CompilerServices;
+using System.Text.Json.Serialization;
using Elsa.Telnyx.Attributes;
using Elsa.Telnyx.Bookmarks;
using Elsa.Telnyx.Client.Models;
@@ -20,6 +21,7 @@ namespace Elsa.Telnyx.Activities;
public class FlowStartRecording : StartRecordingBase
{
///
+ [JsonConstructor]
public FlowStartRecording([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
@@ -35,6 +37,7 @@ public class FlowStartRecording : StartRecordingBase
public class StartRecording : StartRecordingBase
{
///
+ [JsonConstructor]
public StartRecording([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
diff --git a/src/modules/Elsa.Telnyx/Activities/StopAudioPlayback.cs b/src/modules/Elsa.Telnyx/Activities/StopAudioPlayback.cs
index dece1896a..91ea43ee7 100644
--- a/src/modules/Elsa.Telnyx/Activities/StopAudioPlayback.cs
+++ b/src/modules/Elsa.Telnyx/Activities/StopAudioPlayback.cs
@@ -1,4 +1,5 @@
using System.Runtime.CompilerServices;
+using System.Text.Json.Serialization;
using Elsa.Telnyx.Client.Models;
using Elsa.Telnyx.Client.Services;
using Elsa.Telnyx.Extensions;
@@ -16,6 +17,7 @@ namespace Elsa.Telnyx.Activities;
public class FlowStopAudioPlayback : StopAudioPlaybackBase
{
///
+ [JsonConstructor]
public FlowStopAudioPlayback([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
@@ -31,6 +33,7 @@ public class FlowStopAudioPlayback : StopAudioPlaybackBase
public class StopAudioPlayback : StopAudioPlaybackBase
{
///
+ [JsonConstructor]
public StopAudioPlayback([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
diff --git a/src/modules/Elsa.Telnyx/Activities/StopRecording.cs b/src/modules/Elsa.Telnyx/Activities/StopRecording.cs
index 92aad50a3..6dc189894 100644
--- a/src/modules/Elsa.Telnyx/Activities/StopRecording.cs
+++ b/src/modules/Elsa.Telnyx/Activities/StopRecording.cs
@@ -1,4 +1,5 @@
using System.Runtime.CompilerServices;
+using System.Text.Json.Serialization;
using Elsa.Telnyx.Client.Models;
using Elsa.Telnyx.Client.Services;
using Elsa.Telnyx.Extensions;
@@ -18,6 +19,7 @@ namespace Elsa.Telnyx.Activities;
public class StopRecording : ActivityBase
{
///
+ [JsonConstructor]
public StopRecording([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
diff --git a/src/modules/Elsa.Telnyx/Activities/TransferCall.cs b/src/modules/Elsa.Telnyx/Activities/TransferCall.cs
index c97f49159..bed51c310 100644
--- a/src/modules/Elsa.Telnyx/Activities/TransferCall.cs
+++ b/src/modules/Elsa.Telnyx/Activities/TransferCall.cs
@@ -1,4 +1,5 @@
using System.Runtime.CompilerServices;
+using System.Text.Json.Serialization;
using Elsa.Telnyx.Client.Models;
using Elsa.Telnyx.Client.Services;
using Elsa.Telnyx.Extensions;
@@ -20,6 +21,7 @@ namespace Elsa.Telnyx.Activities;
public class TransferCall : Activity
{
///
+ [JsonConstructor]
public TransferCall([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
diff --git a/src/modules/Elsa.Workflows.Core/Activities/Break.cs b/src/modules/Elsa.Workflows.Core/Activities/Break.cs
index d636eaec8..cdadf13ba 100644
--- a/src/modules/Elsa.Workflows.Core/Activities/Break.cs
+++ b/src/modules/Elsa.Workflows.Core/Activities/Break.cs
@@ -1,4 +1,5 @@
using System.Runtime.CompilerServices;
+using System.Text.Json.Serialization;
using Elsa.Workflows.Core.Attributes;
using Elsa.Workflows.Core.Models;
using Elsa.Workflows.Core.Signals;
@@ -11,6 +12,12 @@ namespace Elsa.Workflows.Core.Activities;
[Activity("Elsa", "Control Flow", "Break out of a loop.")]
public class Break : Activity
{
+ ///
+ [JsonConstructor]
+ public Break()
+ {
+ }
+
///
public Break([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
diff --git a/src/modules/Elsa.Workflows.Core/Activities/Finish.cs b/src/modules/Elsa.Workflows.Core/Activities/Finish.cs
index c21b6278d..f65c0a83a 100644
--- a/src/modules/Elsa.Workflows.Core/Activities/Finish.cs
+++ b/src/modules/Elsa.Workflows.Core/Activities/Finish.cs
@@ -1,18 +1,23 @@
+using System.Runtime.CompilerServices;
+using System.Text.Json.Serialization;
using Elsa.Workflows.Core.Attributes;
-using Elsa.Workflows.Core.Behaviors;
using Elsa.Workflows.Core.Models;
namespace Elsa.Workflows.Core.Activities;
-[Activity("Elsa", "Control Flow", "Mark the workflow as Finished")]
-public class Finish : Activity
+///
+/// Mark the workflow as finished.
+///
+[Activity("Elsa", "Control Flow", "Mark the workflow as finished.")]
+public class Finish : ActivityBase
{
- public Finish()
+ ///
+ [JsonConstructor]
+ public Finish([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
- // Don't let ancestor activities schedule additional work.
- Behaviors.Remove();
}
-
+
+ ///
protected override void Execute(ActivityExecutionContext context)
{
context.ClearCompletionCallbacks();
diff --git a/src/modules/Elsa.Workflows.Core/Activities/For.cs b/src/modules/Elsa.Workflows.Core/Activities/For.cs
index b99e9cf7e..64c0650fb 100644
--- a/src/modules/Elsa.Workflows.Core/Activities/For.cs
+++ b/src/modules/Elsa.Workflows.Core/Activities/For.cs
@@ -8,6 +8,9 @@ using Elsa.Workflows.Core.Services;
namespace Elsa.Workflows.Core.Activities;
+///
+/// Iterate over a sequence of steps between a start and an end number.
+///
[Activity("Elsa", "Control Flow", "Iterate over a sequence of steps between a start and an end number.")]
public class For : ActivityBase
{
diff --git a/src/modules/Elsa.Workflows.Core/Activities/ForEach.cs b/src/modules/Elsa.Workflows.Core/Activities/ForEach.cs
index 234628904..9994fbe81 100644
--- a/src/modules/Elsa.Workflows.Core/Activities/ForEach.cs
+++ b/src/modules/Elsa.Workflows.Core/Activities/ForEach.cs
@@ -17,6 +17,7 @@ public class ForEach : ActivityBase
private const string CurrentIndexProperty = "CurrentIndex";
///
+ [JsonConstructor]
public ForEach([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default)
{
Behaviors.Add(this);
diff --git a/src/modules/Elsa.Workflows.Core/Activities/Fork.cs b/src/modules/Elsa.Workflows.Core/Activities/Fork.cs
index 3d5c17f35..17fa6934e 100644
--- a/src/modules/Elsa.Workflows.Core/Activities/Fork.cs
+++ b/src/modules/Elsa.Workflows.Core/Activities/Fork.cs
@@ -7,6 +7,7 @@ using Elsa.Workflows.Core.Attributes;
using Elsa.Workflows.Core.Behaviors;
using Elsa.Workflows.Core.Models;
using Elsa.Workflows.Core.Services;
+using Elsa.Workflows.Core.Signals;
namespace Elsa.Workflows.Core.Activities;
@@ -20,6 +21,7 @@ public class Fork : ActivityBase
[JsonConstructor]
public Fork([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
+ OnSignalReceived(OnBreakAsync);
}
///
@@ -75,7 +77,6 @@ public class Fork : ActivityBase
}
}
-
private void RemoveBookmarks(ActivityExecutionContext context)
{
// Find all descendants for each branch and remove them as well as any associated bookmarks.
@@ -86,4 +87,11 @@ public class Fork : ActivityBase
workflowExecutionContext.Bookmarks.RemoveWhere(x => branchDescendantActivityIds.Contains(x.ActivityId));
}
+
+ private async ValueTask OnBreakAsync(BreakSignal signal, SignalContext context)
+ {
+ RemoveBookmarks(context.ReceiverActivityExecutionContext);
+ await CompleteAsync(context.ReceiverActivityExecutionContext);
+ context.StopPropagation();
+ }
}
\ No newline at end of file
diff --git a/src/modules/Elsa.Workflows.Core/Activities/If.cs b/src/modules/Elsa.Workflows.Core/Activities/If.cs
index 014795e3d..3edeaf516 100644
--- a/src/modules/Elsa.Workflows.Core/Activities/If.cs
+++ b/src/modules/Elsa.Workflows.Core/Activities/If.cs
@@ -7,7 +7,10 @@ using Elsa.Workflows.Core.Services;
namespace Elsa.Workflows.Core.Activities;
-[Activity("Elsa", "Control Flow", "Evaluate a Boolean condition to determine which path to execute next.")]
+///
+/// Evaluate a Boolean condition to determine which activity to execute next.
+///
+[Activity("Elsa", "Control Flow", "Evaluate a Boolean condition to determine which activity to execute next.")]
public class If : ActivityBase
{
///
diff --git a/src/modules/Elsa.Workflows.Core/Activities/Inline.cs b/src/modules/Elsa.Workflows.Core/Activities/Inline.cs
index 3ed65a5f4..6a19ebd6b 100644
--- a/src/modules/Elsa.Workflows.Core/Activities/Inline.cs
+++ b/src/modules/Elsa.Workflows.Core/Activities/Inline.cs
@@ -13,15 +13,18 @@ public class Inline : Activity
{
private readonly Func _activity;
+ ///
public Inline(Func activity, [CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
_activity = activity;
}
+ ///
public Inline(Func activity, [CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : this(_ => activity(), source, line)
{
}
+ ///
public Inline(Action activity, [CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : this(c =>
{
activity(c);
@@ -30,6 +33,7 @@ public class Inline : Activity
{
}
+ ///
public Inline(Action activity, [CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : this(c =>
{
activity();
@@ -38,16 +42,47 @@ public class Inline : Activity
{
}
+ ///
protected override async ValueTask ExecuteAsync(ActivityExecutionContext context) => await _activity(context);
+ ///
+ /// Creates a new activity from the specified delegate.
+ ///
public static Inline From(Func activity) => new(activity);
+
+ ///
+ /// Creates a new activity from the specified delegate.
+ ///
public static Inline From(Func activity) => new(activity);
+
+ ///
+ /// Creates a new activity from the specified delegate.
+ ///
public static Inline From(Action activity) => new(activity);
+
+ ///
+ /// Creates a new activity from the specified delegate.
+ ///
public static Inline From(Action activity) => new(activity);
+ ///
+ /// Creates a new activity from the specified delegate.
+ ///
public static Inline From(Func> activity) => new(activity);
+
+ ///
+ /// Creates a new activity from the specified delegate.
+ ///
public static Inline From(Func> activity) => new(activity);
+
+ ///
+ /// Creates a new activity from the specified delegate.
+ ///
public static Inline From(Func activity) => new(activity);
+
+ ///
+ /// Creates a new activity from the specified delegate.
+ ///
public static Inline From(Func activity) => new(activity);
}
@@ -58,17 +93,20 @@ public class Inline : Activity
{
private readonly Func> _activity;
+ ///
public Inline(Func> activity, MemoryBlockReference? output = default, [CallerFilePath] string? source = default, [CallerLineNumber] int? line = default)
: base(output, source, line)
{
_activity = activity;
}
+ ///
public Inline(Func> activity, MemoryBlockReference? output = default, [CallerFilePath] string? source = default, [CallerLineNumber] int? line = default)
: this(_ => activity(), output, source, line)
{
}
+ ///
public Inline(Func activity, MemoryBlockReference? output = default, [CallerFilePath] string? source = default, [CallerLineNumber] int? line = default)
: this(c =>
{
@@ -78,6 +116,7 @@ public class Inline : Activity
{
}
+ ///
public Inline(Func activity, MemoryBlockReference? output = default, [CallerFilePath] string? source = default, [CallerLineNumber] int? line = default)
: this(c =>
{
@@ -86,7 +125,8 @@ public class Inline : Activity
}, output, source, line)
{
}
-
+
+ ///
protected override async ValueTask ExecuteAsync(ActivityExecutionContext context)
{
var result = await _activity(context);
diff --git a/src/modules/Elsa.Workflows.Core/Activities/NotFoundActivity.cs b/src/modules/Elsa.Workflows.Core/Activities/NotFoundActivity.cs
index d5f6a87f9..21c381043 100644
--- a/src/modules/Elsa.Workflows.Core/Activities/NotFoundActivity.cs
+++ b/src/modules/Elsa.Workflows.Core/Activities/NotFoundActivity.cs
@@ -3,13 +3,18 @@ using Elsa.Workflows.Core.Models;
namespace Elsa.Workflows.Core.Activities;
+///
+/// This activity is instantiated in case a workflow references an activity type that could not be found.
+///
[Browsable(false)]
public class NotFoundActivity : Activity
{
+ ///
public NotFoundActivity()
{
}
+ ///
public NotFoundActivity(string missingTypeName)
{
MissingTypeName = missingTypeName;
diff --git a/src/modules/Elsa.Workflows.Core/Activities/ParallelForEach.cs b/src/modules/Elsa.Workflows.Core/Activities/ParallelForEach.cs
index c342c6553..4820667a1 100644
--- a/src/modules/Elsa.Workflows.Core/Activities/ParallelForEach.cs
+++ b/src/modules/Elsa.Workflows.Core/Activities/ParallelForEach.cs
@@ -1,4 +1,5 @@
using System.Runtime.CompilerServices;
+using System.Text.Json.Serialization;
using Elsa.Expressions.Models;
using Elsa.Workflows.Core.Attributes;
using Elsa.Workflows.Core.Models;
@@ -16,6 +17,7 @@ public class ParallelForEach : Activity
private const string CollectedCountProperty = nameof(CollectedCountProperty);
///
+ [JsonConstructor]
public ParallelForEach([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
diff --git a/src/modules/Elsa.Workflows.Core/Activities/ReadLine.cs b/src/modules/Elsa.Workflows.Core/Activities/ReadLine.cs
index a0afc37ea..f3f585e97 100644
--- a/src/modules/Elsa.Workflows.Core/Activities/ReadLine.cs
+++ b/src/modules/Elsa.Workflows.Core/Activities/ReadLine.cs
@@ -1,4 +1,5 @@
using System.Runtime.CompilerServices;
+using System.Text.Json.Serialization;
using Elsa.Expressions.Models;
using Elsa.Workflows.Core.Attributes;
using Elsa.Workflows.Core.Implementations;
@@ -14,6 +15,7 @@ namespace Elsa.Workflows.Core.Activities;
public class ReadLine : Activity
{
///
+ [JsonConstructor]
public ReadLine([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
diff --git a/src/modules/Elsa.Workflows.Core/Activities/Sequence.cs b/src/modules/Elsa.Workflows.Core/Activities/Sequence.cs
index 2b8c8ba18..00d5c5c5f 100644
--- a/src/modules/Elsa.Workflows.Core/Activities/Sequence.cs
+++ b/src/modules/Elsa.Workflows.Core/Activities/Sequence.cs
@@ -1,5 +1,6 @@
using System.ComponentModel;
using System.Runtime.CompilerServices;
+using System.Text.Json.Serialization;
using Elsa.Workflows.Core.Attributes;
using Elsa.Workflows.Core.Models;
using Elsa.Workflows.Core.Services;
@@ -17,6 +18,7 @@ public class Sequence : Container
private const string CurrentIndexProperty = "CurrentIndex";
///
+ [JsonConstructor]
public Sequence([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
OnSignalReceived(OnBreak);
diff --git a/src/modules/Elsa.Workflows.Core/Activities/SetVariable.cs b/src/modules/Elsa.Workflows.Core/Activities/SetVariable.cs
index 0271adec0..36495770a 100644
--- a/src/modules/Elsa.Workflows.Core/Activities/SetVariable.cs
+++ b/src/modules/Elsa.Workflows.Core/Activities/SetVariable.cs
@@ -1,5 +1,6 @@
using System.ComponentModel;
using System.Runtime.CompilerServices;
+using System.Text.Json.Serialization;
using Elsa.Expressions.Models;
using Elsa.Workflows.Core.Attributes;
using Elsa.Workflows.Core.Models;
@@ -14,6 +15,7 @@ namespace Elsa.Workflows.Core.Activities;
public class SetVariable : Activity
{
///
+ [JsonConstructor]
public SetVariable([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
}
diff --git a/src/modules/Elsa.Workflows.Core/Activities/While.cs b/src/modules/Elsa.Workflows.Core/Activities/While.cs
index 0c9956aa8..1b7cfd2b0 100644
--- a/src/modules/Elsa.Workflows.Core/Activities/While.cs
+++ b/src/modules/Elsa.Workflows.Core/Activities/While.cs
@@ -11,11 +11,15 @@ namespace Elsa.Workflows.Core.Activities;
[Activity("Elsa", "Primitives", "Execute an activity while a given condition evaluates to true.")]
public class While : Activity
{
+ ///
+ /// Creates a activity that loops forever.
+ ///
public static While True(IActivity body) => new(body)
{
Condition = new Input(true)
};
-
+
+ ///
[JsonConstructor]
public While(IActivity? body = default, [CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line)
{
@@ -24,26 +28,31 @@ public class While : Activity
Behaviors.Remove();
}
+ ///
public While(Input condition, IActivity? body = default, [CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : this(body, source, line)
{
Condition = condition;
}
+ ///
public While(Func> condition, IActivity? body = default, [CallerFilePath] string? source = default, [CallerLineNumber] int? line = default)
: this(new Input(condition), body, source, line)
{
}
+ ///
public While(Func condition, IActivity? body = default, [CallerFilePath] string? source = default, [CallerLineNumber] int? line = default)
: this(new Input(condition), body, source, line)
{
}
+ ///
public While(Func> condition, IActivity? body = default, [CallerFilePath] string? source = default, [CallerLineNumber] int? line = default)
: this(new Input(condition), body, source, line)
{
}
+ ///
public While(Func condition, IActivity? body = default, [CallerFilePath] string? source = default, [CallerLineNumber] int? line = default)
: this(new Input(condition), body, source, line)
{
diff --git a/src/modules/Elsa.Workflows.Core/Activities/WriteLine.cs b/src/modules/Elsa.Workflows.Core/Activities/WriteLine.cs
index 3291c7fec..37d18ee83 100644
--- a/src/modules/Elsa.Workflows.Core/Activities/WriteLine.cs
+++ b/src/modules/Elsa.Workflows.Core/Activities/WriteLine.cs
@@ -1,5 +1,6 @@
using System.ComponentModel;
using System.Runtime.CompilerServices;
+using System.Text.Json.Serialization;
using Elsa.Expressions.Models;
using Elsa.Workflows.Core.Attributes;
using Elsa.Workflows.Core.Implementations;
@@ -20,7 +21,13 @@ public class WriteLine : Activity
}
///
- public WriteLine(string text = default!, [CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : this(new Literal(text), source, line)
+ [JsonConstructor]
+ public WriteLine()
+ {
+ }
+
+ ///
+ public WriteLine(string text, [CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : this(new Literal(text), source, line)
{
}