Skip to content

[Feature Request] Adding support for passing references as inputs/outputs in orchestrations #1682

@olitomlinson

Description

@olitomlinson

Is your feature request related to a problem? Please describe.

Not a problem per-se, just an optimisation.

Describe the solution you'd like

Given an Orchestration where multiple Activities are called
And each Activity returns a large Object graph to the orchestration
When all Activities are complete, references to the Object graphs (re-use the large message store in TaskHub maybe?) are returned to the orchestration (rather than the actual Object Graphs themselves)
Then the list of references are passed as an input to a subsequent Activity
And in the Activity, the binding automatically loads the reference/s and deserializes into a List of the Objects, ready for processing.

Describe alternatives you've considered

I could manually use blob storage to store the object graphs and pass around the references, but this is just unsightly boilerplate. It would be very convenient if the extension could do this for me.

Additional context

The purpose of this is stop the Orchestration having to load and unload many large objects (from the result of an activity) into memory, just for them to passed to subsequent Activities.

The reason for raising this is that I'm using Activities to load pages of data from CosmosDb. Once all pages are loaded, I need to process them all together in an final Activity. It seems very wasteful that I have to build up a list of the pages in the Orchestration, and isn't a pattern that scales. Equally, using blob storage to manually store the pages seems like a step-backwards considering Durable Functions is so good at hiding the underlying transient data as part of a workflow.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions