@@ -270,6 +270,15 @@ public static class GeneratedDurableTaskExtensions
270270 }
271271 }
272272
273+ foreach ( DurableTaskTypeInfo entity in entities )
274+ {
275+ if ( isDurableFunctions )
276+ {
277+ // Generate the function definition required to trigger entities in Azure Functions
278+ AddEntityFunctionDeclaration ( sourceBuilder , entity ) ;
279+ }
280+ }
281+
273282 // Activity function triggers are supported for code-gen (but not orchestration triggers)
274283 IEnumerable < DurableFunction > activityTriggers = allFunctions . Where (
275284 df => df . Kind == DurableFunctionKind . Activity ) ;
@@ -316,6 +325,9 @@ static void AddOrchestratorFunctionDeclaration(StringBuilder sourceBuilder, Dura
316325 static void AddOrchestratorCallMethod ( StringBuilder sourceBuilder , DurableTaskTypeInfo orchestrator )
317326 {
318327 sourceBuilder . AppendLine ( $@ "
328+ /// <summary>
329+ /// Schedules a new instance of the <see cref=""{ orchestrator . TypeName } ""/> orchestrator.
330+ /// </summary>
319331 /// <inheritdoc cref=""IOrchestrationSubmitter.ScheduleNewOrchestrationInstanceAsync""/>
320332 public static Task<string> ScheduleNew{ orchestrator . TaskName } InstanceAsync(
321333 this IOrchestrationSubmitter client, { orchestrator . InputParameter } , StartOrchestrationOptions? options = null)
@@ -327,6 +339,9 @@ static void AddOrchestratorCallMethod(StringBuilder sourceBuilder, DurableTaskTy
327339 static void AddSubOrchestratorCallMethod ( StringBuilder sourceBuilder , DurableTaskTypeInfo orchestrator )
328340 {
329341 sourceBuilder . AppendLine ( $@ "
342+ /// <summary>
343+ /// Calls the <see cref=""{ orchestrator . TypeName } ""/> sub-orchestrator.
344+ /// </summary>
330345 /// <inheritdoc cref=""TaskOrchestrationContext.CallSubOrchestratorAsync(TaskName, object?, TaskOptions?)""/>
331346 public static Task<{ orchestrator . OutputType } > Call{ orchestrator . TaskName } Async(
332347 this TaskOrchestrationContext context, { orchestrator . InputParameter } , TaskOptions? options = null)
@@ -338,6 +353,10 @@ static void AddSubOrchestratorCallMethod(StringBuilder sourceBuilder, DurableTas
338353 static void AddActivityCallMethod ( StringBuilder sourceBuilder , DurableTaskTypeInfo activity )
339354 {
340355 sourceBuilder . AppendLine ( $@ "
356+ /// <summary>
357+ /// Calls the <see cref=""{ activity . TypeName } ""/> activity.
358+ /// </summary>
359+ /// <inheritdoc cref=""TaskOrchestrationContext.CallActivityAsync(TaskName, object?, TaskOptions?)""/>
341360 public static Task<{ activity . OutputType } > Call{ activity . TaskName } Async(this TaskOrchestrationContext ctx, { activity . InputParameter } , TaskOptions? options = null)
342361 {{
343362 return ctx.CallActivityAsync<{ activity . OutputType } >(""{ activity . TaskName } "", input, options);
@@ -347,6 +366,10 @@ static void AddActivityCallMethod(StringBuilder sourceBuilder, DurableTaskTypeIn
347366 static void AddActivityCallMethod ( StringBuilder sourceBuilder , DurableFunction activity )
348367 {
349368 sourceBuilder . AppendLine ( $@ "
369+ /// <summary>
370+ /// Calls the <see cref=""{ activity . FullTypeName } ""/> activity.
371+ /// </summary>
372+ /// <inheritdoc cref=""TaskOrchestrationContext.CallActivityAsync(TaskName, object?, TaskOptions?)""/>
350373 public static Task<{ activity . ReturnType } > Call{ activity . Name } Async(this TaskOrchestrationContext ctx, { activity . Parameter } , TaskOptions? options = null)
351374 {{
352375 return ctx.CallActivityAsync<{ activity . ReturnType } >(""{ activity . Name } "", { activity . Parameter . Name } , options);
@@ -368,6 +391,17 @@ static void AddActivityFunctionDeclaration(StringBuilder sourceBuilder, DurableT
368391 }}" ) ;
369392 }
370393
394+ static void AddEntityFunctionDeclaration ( StringBuilder sourceBuilder , DurableTaskTypeInfo entity )
395+ {
396+ // Generate the entity trigger function that dispatches to the entity implementation.
397+ sourceBuilder . AppendLine ( $@ "
398+ [Function(nameof({ entity . TaskName } ))]
399+ public static Task { entity . TaskName } ([EntityTrigger] TaskEntityDispatcher dispatcher)
400+ {{
401+ return dispatcher.DispatchAsync<{ entity . TypeName } >();
402+ }}" ) ;
403+ }
404+
371405 /// <summary>
372406 /// Adds a custom ITaskActivityContext implementation used by code generated from <see cref="AddActivityFunctionDeclaration"/>.
373407 /// </summary>
0 commit comments