Durable function orchestrator cannot complete the loop process. It returns and executes again and again. I have read the documentation and it looks ok to have a loop in the orchestrator.
const df = require("durable-functions");
module.exports = df.orchestrator(function* (context) {
const getProductAMTDataResult = yield context.df.callActivity("getProductAMTData", undefined);
const productAMTData = getProductAMTDataResult[1];
let productUpdateDataList = [];
productAMTData.forEach (element => {
const productId = element.REF;
const amt = element.CALC_VALUE;
productUpdateDataList.push({
"productId": productId,
"amt": amt
});
});
let tasksCount = 0;
let tasks = [];
for (var j in productUpdateDataList) {
const productUpdateData = productUpdateDataList[j];
const productId = productUpdateData["productId"];
const getProductDataResult = yield context.df.callActivity("getProductData", productId);
const productData = getProductDataResult[1];
productUpdateData["productData"] = productData;
const getProductProvisionsDataResult = yield context.df.callActivity("getProductProvisionsData", productUpdateData);
const productProvisionsData = getProductProvisionsDataResult[1];
if (!productProvisionsData) {
continue;
}
const productProvisions = productProvisionsData["provisionsEntries"];
for (var e in productProvisions) {
const entryData = productProvisions[e];
tasks.push(context.df.callActivity("makeEntries", entryData));
tasksCount++;
}
if (tasksCount >= 30) {
const results = yield context.df.Task.all(tasks);
tasks = [];
tasksCount = 0;
}
}
if (tasksCount > 0) {
const results = yield context.df.Task.all(tasks);
}
return;
});
My different realizations have such problems.