Skip to content

Commit c9b683b

Browse files
committed
Added the IExtensible interface to most workflow components
1 parent 4e7fc41 commit c9b683b

19 files changed

+169
-12
lines changed

ServerlessWorkflow.Sdk/Models/BranchDefinition.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
/// </summary>
66
[DataContract]
77
public class BranchDefinition
8+
: IExtensible
89
{
910

1011
/// <summary>
@@ -28,6 +29,10 @@ public class BranchDefinition
2829
[DataMember(Order = 3, Name = "actions", IsRequired = true), JsonPropertyOrder(3), JsonPropertyName("actions"), YamlMember(Alias = "actions", Order = 3)]
2930
public virtual List<ActionDefinition> Actions { get; set; } = new List<ActionDefinition>();
3031

32+
/// <inheritdoc/>
33+
[DataMember(Order = 999, Name = "extensionData"), JsonExtensionData]
34+
public IDictionary<string, object>? ExtensionData { get; set; }
35+
3136
/// <summary>
3237
/// Gets the <see cref="ActionDefinition"/> with the specified name
3338
/// </summary>

ServerlessWorkflow.Sdk/Services/FluentBuilders/ActionBuilder.cs

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,4 +212,60 @@ public virtual ISubflowActionBuilder Version(string version)
212212
/// <inheritdoc/>
213213
public virtual ActionDefinition Build() => this.Action;
214214

215+
IActionBuilder IExtensibleBuilder<IActionBuilder>.WithExtensionProperty(string name, object value)
216+
{
217+
if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullException(nameof(name));
218+
this.Action.ExtensionData ??= new Dictionary<string, object>();
219+
this.Action.ExtensionData[name] = value;
220+
return this;
221+
}
222+
223+
IActionBuilder IExtensibleBuilder<IActionBuilder>.WithExtensionProperties(IDictionary<string, object> properties)
224+
{
225+
this.Action.ExtensionData = properties ?? throw new ArgumentNullException(nameof(properties));
226+
return this;
227+
}
228+
229+
IEventTriggerActionBuilder IExtensibleBuilder<IEventTriggerActionBuilder>.WithExtensionProperty(string name, object value)
230+
{
231+
if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullException(nameof(name));
232+
this.Action.Event!.ExtensionData ??= new Dictionary<string, object>();
233+
this.Action.Event!.ExtensionData[name] = value;
234+
return this;
235+
}
236+
237+
IEventTriggerActionBuilder IExtensibleBuilder<IEventTriggerActionBuilder>.WithExtensionProperties(IDictionary<string, object> properties)
238+
{
239+
this.Action.Event!.ExtensionData = properties ?? throw new ArgumentNullException(nameof(properties));
240+
return this;
241+
}
242+
243+
IFunctionActionBuilder IExtensibleBuilder<IFunctionActionBuilder>.WithExtensionProperty(string name, object value)
244+
{
245+
if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullException(nameof(name));
246+
this.Action.Function!.ExtensionData ??= new Dictionary<string, object>();
247+
this.Action.Function!.ExtensionData[name] = value;
248+
return this;
249+
}
250+
251+
IFunctionActionBuilder IExtensibleBuilder<IFunctionActionBuilder>.WithExtensionProperties(IDictionary<string, object> properties)
252+
{
253+
this.Action.Function!.ExtensionData = properties ?? throw new ArgumentNullException(nameof(properties));
254+
return this;
255+
}
256+
257+
ISubflowActionBuilder IExtensibleBuilder<ISubflowActionBuilder>.WithExtensionProperty(string name, object value)
258+
{
259+
if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullException(nameof(name));
260+
this.Action.Subflow!.ExtensionData ??= new Dictionary<string, object>();
261+
this.Action.Subflow!.ExtensionData[name] = value;
262+
return this;
263+
}
264+
265+
ISubflowActionBuilder IExtensibleBuilder<ISubflowActionBuilder>.WithExtensionProperties(IDictionary<string, object> properties)
266+
{
267+
this.Action.Subflow!.ExtensionData = properties ?? throw new ArgumentNullException(nameof(properties));
268+
return this;
269+
}
270+
215271
}

ServerlessWorkflow.Sdk/Services/FluentBuilders/AuthenticationDefinitionBuilder.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,22 @@ public virtual IAuthenticationDefinitionBuilder WithName(string name)
2929
return this;
3030
}
3131

32+
/// <inheritdoc/>
33+
public virtual IAuthenticationDefinitionBuilder WithExtensionProperty(string name, object value)
34+
{
35+
if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullException(nameof(name));
36+
this.AuthenticationDefinition.ExtensionData ??= new Dictionary<string, object>();
37+
this.AuthenticationDefinition.ExtensionData[name] = value;
38+
return this;
39+
}
40+
41+
/// <inheritdoc/>
42+
public virtual IAuthenticationDefinitionBuilder WithExtensionProperties(IDictionary<string, object> properties)
43+
{
44+
this.AuthenticationDefinition.ExtensionData = properties ?? throw new ArgumentNullException(nameof(properties));
45+
return this;
46+
}
47+
3248
/// <inheritdoc/>
3349
public virtual void LoadFromSecret(string secret)
3450
{

ServerlessWorkflow.Sdk/Services/FluentBuilders/BranchBuilder.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,22 @@ public virtual IBranchBuilder WithName(string name)
3434
return this;
3535
}
3636

37+
/// <inheritdoc/>
38+
public virtual IBranchBuilder WithExtensionProperty(string name, object value)
39+
{
40+
if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullException(nameof(name));
41+
this.Branch.ExtensionData ??= new Dictionary<string, object>();
42+
this.Branch.ExtensionData[name] = value;
43+
return this;
44+
}
45+
46+
/// <inheritdoc/>
47+
public virtual IBranchBuilder WithExtensionProperties(IDictionary<string, object> properties)
48+
{
49+
this.Branch.ExtensionData = properties ?? throw new ArgumentNullException(nameof(properties));
50+
return this;
51+
}
52+
3753
/// <inheritdoc/>
3854
public virtual IBranchBuilder Execute(ActionDefinition action)
3955
{

ServerlessWorkflow.Sdk/Services/FluentBuilders/ErrorHandlerBuilder.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,22 @@ public ErrorHandlerBuilder(IPipelineBuilder pipeline)
3232
/// </summary>
3333
protected IStateOutcomeBuilder Outcome { get; }
3434

35+
/// <inheritdoc/>
36+
public virtual IErrorHandlerBuilder WithExtensionProperty(string name, object value)
37+
{
38+
if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullException(nameof(name));
39+
this.ErrorHandler.ExtensionData ??= new Dictionary<string, object>();
40+
this.ErrorHandler.ExtensionData[name] = value;
41+
return this;
42+
}
43+
44+
/// <inheritdoc/>
45+
public virtual IErrorHandlerBuilder WithExtensionProperties(IDictionary<string, object> properties)
46+
{
47+
this.ErrorHandler.ExtensionData = properties ?? throw new ArgumentNullException(nameof(properties));
48+
return this;
49+
}
50+
3551
/// <inheritdoc/>
3652
public virtual IErrorHandlerBuilder Catch(string error, string errorCode)
3753
{

ServerlessWorkflow.Sdk/Services/FluentBuilders/EventBuilder.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,22 @@ public virtual IEventBuilder WithType(string type)
4747
return this;
4848
}
4949

50+
/// <inheritdoc/>
51+
public virtual IEventBuilder WithExtensionProperty(string name, object value)
52+
{
53+
if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullException(nameof(name));
54+
this.Event.ExtensionData ??= new Dictionary<string, object>();
55+
this.Event.ExtensionData[name] = value;
56+
return this;
57+
}
58+
59+
/// <inheritdoc/>
60+
public virtual IEventBuilder WithExtensionProperties(IDictionary<string, object> properties)
61+
{
62+
this.Event.ExtensionData = properties ?? throw new ArgumentNullException(nameof(properties));
63+
return this;
64+
}
65+
5066
/// <inheritdoc/>
5167
public virtual IEventBuilder CorrelateUsing(string contextAttributeName)
5268
{

ServerlessWorkflow.Sdk/Services/FluentBuilders/FunctionBuilder.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,22 @@ public virtual IFunctionBuilder WithName(string name)
4747
return this;
4848
}
4949

50+
/// <inheritdoc/>
51+
public virtual IFunctionBuilder WithExtensionProperty(string name, object value)
52+
{
53+
if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullException(nameof(name));
54+
this.Function.ExtensionData ??= new Dictionary<string, object>();
55+
this.Function.ExtensionData[name] = value;
56+
return this;
57+
}
58+
59+
/// <inheritdoc/>
60+
public virtual IFunctionBuilder WithExtensionProperties(IDictionary<string, object> properties)
61+
{
62+
this.Function.ExtensionData = properties ?? throw new ArgumentNullException(nameof(properties));
63+
return this;
64+
}
65+
5066
/// <inheritdoc/>
5167
public virtual IFunctionBuilder OfType(string type)
5268
{

ServerlessWorkflow.Sdk/Services/FluentBuilders/Interfaces/IActionBuilder.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
/// Defines the fundamentals of a service used to build <see cref="ActionDefinition"/>s
55
/// </summary>
66
public interface IActionBuilder
7+
: IExtensibleBuilder<IActionBuilder>
78
{
89

910
/// <summary>

ServerlessWorkflow.Sdk/Services/FluentBuilders/Interfaces/IAuthenticationDefinitionBuilder.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
/// Defines the fundamentals of a service used to build an authentication definition
55
/// </summary>
66
public interface IAuthenticationDefinitionBuilder
7+
: IExtensibleBuilder<IAuthenticationDefinitionBuilder>
78
{
89

910
/// <summary>

ServerlessWorkflow.Sdk/Services/FluentBuilders/Interfaces/IBranchBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
/// Defines the fundamentals of a service used to configure <see cref="BranchDefinition"/>s
55
/// </summary>
66
public interface IBranchBuilder
7-
: IActionCollectionBuilder<IBranchBuilder>
7+
: IActionCollectionBuilder<IBranchBuilder>, IExtensibleBuilder<IBranchBuilder>
88
{
99

1010
/// <summary>

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy