diff --git a/src/AzureFunctions.PowerShell.Durable.SDK.psm1 b/src/AzureFunctions.PowerShell.Durable.SDK.psm1
index 8c6dc51..5a6998a 100644
--- a/src/AzureFunctions.PowerShell.Durable.SDK.psm1
+++ b/src/AzureFunctions.PowerShell.Durable.SDK.psm1
@@ -100,7 +100,11 @@ function Start-DurableOrchestration {
[Parameter(
ValueFromPipelineByPropertyName=$true)]
- [string] $InstanceId
+ [string] $InstanceId,
+
+ [Parameter(
+ ValueFromPipelineByPropertyName=$true)]
+ [string] $Version
)
$ErrorActionPreference = 'Stop'
@@ -126,6 +130,12 @@ function Start-DurableOrchestration {
$UriTemplate.Replace('{functionName}', $FunctionName).Replace('[/{instanceId}]', "/$InstanceId")
}
+ # Add version parameter to query string if provided
+ if ($Version) {
+ $separator = if ($Uri.Contains('?')) { '&' } else { '?' }
+ $Uri += "$separator" + "version=$([System.Web.HttpUtility]::UrlEncode($Version))"
+ }
+
$Body = $InputObject | ConvertTo-Json -Compress -Depth 100
$null = Invoke-RestMethod -Uri $Uri -Method 'POST' -ContentType 'application/json' -Body $Body -Headers $headers
diff --git a/src/DurableEngine/Actions/CallSubOrchestratorAction.cs b/src/DurableEngine/Actions/CallSubOrchestratorAction.cs
index 66d9309..e6152b4 100644
--- a/src/DurableEngine/Actions/CallSubOrchestratorAction.cs
+++ b/src/DurableEngine/Actions/CallSubOrchestratorAction.cs
@@ -22,12 +22,18 @@ internal class CallSubOrchestratorAction : OrchestrationAction
///
public readonly object Input;
- internal CallSubOrchestratorAction(string functionName, object input, string instanceId)
+ ///
+ /// The version of the sub-orchestrator function.
+ ///
+ public readonly string Version;
+
+ internal CallSubOrchestratorAction(string functionName, object input, string instanceId, string version)
: base(ActionType.CallSubOrchestrator)
{
FunctionName = functionName;
Input = input;
InstanceId = instanceId;
+ Version = version;
}
}
}
diff --git a/src/DurableEngine/Actions/CallSubOrchestratorWithRetryAction.cs b/src/DurableEngine/Actions/CallSubOrchestratorWithRetryAction.cs
index bb27a18..ca97063 100644
--- a/src/DurableEngine/Actions/CallSubOrchestratorWithRetryAction.cs
+++ b/src/DurableEngine/Actions/CallSubOrchestratorWithRetryAction.cs
@@ -29,13 +29,19 @@ internal class CallSubOrchestratorWithRetryAction : OrchestrationAction
///
public readonly Dictionary RetryOptions;
- internal CallSubOrchestratorWithRetryAction(string functionName, object input, string instanceId, RetryPolicy retryOptions)
+ ///
+ /// The version of the sub-orchestrator function.
+ ///
+ public readonly string Version;
+
+ internal CallSubOrchestratorWithRetryAction(string functionName, object input, string instanceId, RetryPolicy retryOptions, string version)
: base(ActionType.CallSubOrchestratorWithRetry)
{
FunctionName = functionName;
InstanceId = instanceId;
Input = input;
RetryOptions = retryOptions.RetryPolicyDictionary;
+ Version = version;
}
}
}
diff --git a/src/DurableEngine/DurableEngine.csproj b/src/DurableEngine/DurableEngine.csproj
index 8cb2b32..6e11fab 100644
--- a/src/DurableEngine/DurableEngine.csproj
+++ b/src/DurableEngine/DurableEngine.csproj
@@ -7,8 +7,8 @@
-
-
+
+
diff --git a/src/DurableEngine/Tasks/SubOrchestratorTask.cs b/src/DurableEngine/Tasks/SubOrchestratorTask.cs
index e68c471..aba2398 100644
--- a/src/DurableEngine/Tasks/SubOrchestratorTask.cs
+++ b/src/DurableEngine/Tasks/SubOrchestratorTask.cs
@@ -20,11 +20,14 @@ public class SubOrchestratorTask : DurableTask
private RetryPolicy RetryOptions { get; }
+ internal string Version { get; }
+
public SubOrchestratorTask(
string functionName,
string instanceId,
object functionInput,
RetryPolicy retryOptions,
+ string version,
SwitchParameter noWait,
Hashtable privateData) : base(noWait, privateData)
{
@@ -32,6 +35,7 @@ public SubOrchestratorTask(
InstanceId = instanceId;
Input = functionInput;
RetryOptions = retryOptions;
+ Version = version;
}
internal override Task