我有一个子业务流程,它调用了几个活动。其中一项活动被称为〜150次,每个活动被放入任务列表,然后等待Task.WhenAll(list)。这些任务中的每一个都返回一个base64编码的图像,因此消息位于较大的一侧。
业务流程会汇总这些活动的结果,并将其返回给父业务流程。当逐步调试器时,业务流程将正确完成并返回适当的结果。
在收到子业务流程的结果后,下一步我在父业务流程中有一个断点,但是它从未被击中。结果永远不会返回到父级。
这与子业务流程返回的消息大小有关吗?
如果我将子业务流程代码内联到父业务流程中,而不是将其作为子业务流程调用,则效果很好
答案 0 :(得分:0)
这似乎是持久性功能框架中的错误。我遇到了一个Javascript Orchestrator相同的问题,该问题会在subOrchestration完成后立即退出,并且在subOrchestration之后不执行代码。 问题似乎源于一个错误,即如果subOrchestration没有定义的instanceId,则持久函数框架无法从已保存状态检索subOrchestration的输出。因此,通过指定instanceId,代码将可以正常执行。
失败的我的协调器代码如下:
if (args[0] == "add"){
// Make the AliasListener have the code from part 2
Bukkit.getCommand(args[1]).setExecutor(aliasListener)
// Store the alias and the command it replaces in the list.
this.aliasList.put(args[1], args[2])
}
context.log将永远不会被调用。因此,我在callSubOrchestrator上手动指定了一个instanceId,从而解决了问题:)
var reboot_result = yield context.df.callSubOrchestrator('reboot_orchestrator',reboot_input);
context.log('this is the next line after subOrch call which will not get called');
以下是Github错误报告的链接:https://github.com/Azure/azure-functions-durable-js/issues/54