DurableOrchestrationClient - вернуть объект результата - PullRequest
0 голосов
/ 30 октября 2018

У меня есть DurableOrchestrationClient, выполняющий несколько функций Activity, работающих над объектом ActivityMessage - как получить дескриптор обновленного объекта ActivityMessage в функции запуска?

например. Функция стартера:

ActivityMessage am = new ActivityMessage();
var orchestrationId = starter.StartNewAsync("O_DispatchExecutor", am);

...>

[FunctionName("O_DispatchExecutor")]
public static async Task<ActivityMessage> 
TaskExecutor([OrchestrationTrigger]DurableOrchestrationContext ctx, ILogger 
log)
{
int index = 0; // 
ActivityMessage input = ctx.GetInput<ActivityMessage>();
for (; index <= input.Rules.Count; index++) {
Rule r = input.Rules.ElementAt(index);
try
{
input = ctx.CallActivityAsync<ActivityMessage>(r.Name, input));
...

Любая помощь будет оценена

1 Ответ

0 голосов
/ 01 ноября 2018

Короткий ответ: вы не можете напрямую просматривать изменения, внесенные в ваш объект ActivityMessage, по ссылке в вашей стартовой функции. Тем не менее, есть обходные пути.

Согласно документации , «Функции Orchestrator и функции операций запускаются внутренними очередями в центре задач приложения функций». Эти сообщения очереди включают входные данные функции, которые сериализуются / десериализуются в / из JSON при постановке / снятии очереди соответственно. В результате вы теряете ссылку на объект, поэтому она фактически передается по значению.

Если вы хотите просмотреть обновленное сообщение ActivityMessage только после завершения оркестровки, вернет ваше ActivityMessage в конце оркестровки. Следите за состоянием вашей оркестровки в функции стартера, используя DurableOrchestrationClient.CheckStatusAsync. После завершения оркестровки получите обновленное сообщение об активности из свойства DurableOrchestrationStatus.Output .

Если вы хотите просматривать обновления ActivityMessage по мере продвижения оркестровки, вы захотите дополнительно использовать DurableOrchestrationContext.SetCustomStatus для вывода объекта ActivityMessage в DurableOrchestrationContext Свойство .CustomStatus в процессе обновления.

...