@izara_project/izara-core-library-asynchronous-flow 1.0.13 → 1.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +4 -1
- package/package.json +1 -1
- package/src/AsyncFlowSharedLib.js +96 -8
package/index.js
CHANGED
|
@@ -33,7 +33,10 @@ module.exports = {
|
|
|
33
33
|
// Awaiting Multiple Steps
|
|
34
34
|
createAwaitingMultipleStepsWithAdditionalAttributes: asyncFlowSharedLib.createAwaitingMultipleStepsWithAdditionalAttributes,
|
|
35
35
|
createAwaitingMultipleSteps: asyncFlowSharedLib.createAwaitingMultipleSteps,
|
|
36
|
-
|
|
36
|
+
findPendingStepIdsAwaitingMultipleSteps: asyncFlowSharedLib.findPendingStepIdsAwaitingMultipleSteps,
|
|
37
|
+
findPendingStepsAwaitingMultipleSteps: asyncFlowSharedLib.findPendingStepIdsAwaitingMultipleSteps,
|
|
38
|
+
findPendingStepAwaitingMultipleSteps: asyncFlowSharedLib.findPendingStepIdsAwaitingMultipleSteps,
|
|
39
|
+
findAwaitingMultipleStepByPending: asyncFlowSharedLib.findAwaitingMultipleStepByPending,
|
|
37
40
|
// Awaiting Step
|
|
38
41
|
createAwaitingStep: asyncFlowSharedLib.createAwaitingStep,
|
|
39
42
|
findPendingStepIdsAwaitingStep: asyncFlowSharedLib.findPendingStepIdsAwaitingStep,
|
package/package.json
CHANGED
|
@@ -188,6 +188,85 @@ async function createAwaitingMultipleSteps(
|
|
|
188
188
|
|
|
189
189
|
}
|
|
190
190
|
|
|
191
|
+
async function findPendingStepIdsAwaitingMultipleSteps(
|
|
192
|
+
_izContext,
|
|
193
|
+
awaitingStepId
|
|
194
|
+
) {
|
|
195
|
+
|
|
196
|
+
let pendingStepIds = [];
|
|
197
|
+
|
|
198
|
+
let listPendingStepIds = await dynamodbSharedLib.query(
|
|
199
|
+
_izContext,
|
|
200
|
+
await dynamodbSharedLib.tableName(_izContext, "AwaitingMultipleSteps"),
|
|
201
|
+
{
|
|
202
|
+
awaitingStepId: awaitingStepId
|
|
203
|
+
}
|
|
204
|
+
);
|
|
205
|
+
|
|
206
|
+
for (let idx = 0; idx < listPendingStepIds.Items.length; idx++) {
|
|
207
|
+
pendingStepIds.push(listPendingStepIds.Items[idx].pendingStepId)
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
return pendingStepIds
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
async function findPendingStepsAwaitingMultipleSteps(
|
|
214
|
+
_izContext,
|
|
215
|
+
awaitingStepId
|
|
216
|
+
) {
|
|
217
|
+
|
|
218
|
+
let listPendingSteps = await dynamodbSharedLib.query(
|
|
219
|
+
_izContext,
|
|
220
|
+
await dynamodbSharedLib.tableName(_izContext, "AwaitingMultipleSteps"),
|
|
221
|
+
{
|
|
222
|
+
awaitingStepId: awaitingStepId
|
|
223
|
+
}
|
|
224
|
+
);
|
|
225
|
+
_izContext.logger.debug("Record of awaitingStepId", listPendingSteps);
|
|
226
|
+
return listPendingSteps.Items;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
async function findPendingStepAwaitingMultipleSteps(
|
|
230
|
+
_izContext,
|
|
231
|
+
awaitingStepId
|
|
232
|
+
) {
|
|
233
|
+
|
|
234
|
+
let listPendingSteps = await dynamodbSharedLib.query(
|
|
235
|
+
_izContext,
|
|
236
|
+
await dynamodbSharedLib.tableName(_izContext, "AwaitingMultipleSteps"),
|
|
237
|
+
{
|
|
238
|
+
awaitingStepId: awaitingStepId
|
|
239
|
+
}
|
|
240
|
+
);
|
|
241
|
+
_izContext.logger.debug("Record of awaitingStepId", listPendingSteps)
|
|
242
|
+
|
|
243
|
+
if (listPendingSteps.Items.length !== 1) {
|
|
244
|
+
throw new NoRetryError("listPendingSteps not equals 1")
|
|
245
|
+
};
|
|
246
|
+
return listPendingSteps.Items[0];
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// Use case:
|
|
250
|
+
// Use only after checkAllAwaitingStepsFinished
|
|
251
|
+
// Do NOT delete records in both tables (AwaitingMultipleSteps, AwaitingMultipleStepByPending) if AwaitingMultipleSteps is not yet finished
|
|
252
|
+
// Delete records from both tables only when checkAllAwaitingStepsFinished = true
|
|
253
|
+
// Example usage: flow validateCart lambda ProcessCartOrderFromTraversal
|
|
254
|
+
async function findAwaitingMultipleStepByPending(
|
|
255
|
+
_izContext,
|
|
256
|
+
pendingStepId
|
|
257
|
+
) {
|
|
258
|
+
|
|
259
|
+
let listAwitingSteps = await dynamodbSharedLib.query(
|
|
260
|
+
_izContext,
|
|
261
|
+
await dynamodbSharedLib.tableName(_izContext, "AwaitingMultipleStepByPending"),
|
|
262
|
+
{
|
|
263
|
+
pendingStepId: pendingStepId
|
|
264
|
+
}
|
|
265
|
+
);
|
|
266
|
+
_izContext.logger.debug("Record of AwaitingMultipleStepByPending", listAwitingSteps);
|
|
267
|
+
return listAwitingSteps.Items;
|
|
268
|
+
}
|
|
269
|
+
|
|
191
270
|
//====================================== AwaitingStep //======================================
|
|
192
271
|
// AwaitingStep is when a flow is awaiting one external flow, and will continue it's flow once that one external flow is complete
|
|
193
272
|
// One awaitingStepId can have multiple pendingStepIds that are awaiting it
|
|
@@ -314,14 +393,16 @@ async function checkAllAwaitingStepsFinished(
|
|
|
314
393
|
_izContext,
|
|
315
394
|
pendingStepId,
|
|
316
395
|
currentAwaitingStepId = null,
|
|
317
|
-
errorsFound = []
|
|
396
|
+
errorsFound = [],
|
|
397
|
+
additionalAttributes = {}
|
|
318
398
|
) {
|
|
319
399
|
|
|
320
400
|
let remaining = await checkAllAwaitingStepsFinishedWithError(
|
|
321
401
|
_izContext,
|
|
322
402
|
pendingStepId,
|
|
323
403
|
currentAwaitingStepId,
|
|
324
|
-
errorsFound
|
|
404
|
+
errorsFound,
|
|
405
|
+
additionalAttributes
|
|
325
406
|
);
|
|
326
407
|
return remaining;
|
|
327
408
|
}
|
|
@@ -332,7 +413,8 @@ async function checkAllAwaitingStepsFinishedWithError(
|
|
|
332
413
|
_izContext,
|
|
333
414
|
pendingStepId,
|
|
334
415
|
currentAwaitingStepId = null,
|
|
335
|
-
errorsFound = []
|
|
416
|
+
errorsFound = [],
|
|
417
|
+
additionalAttributes = {}
|
|
336
418
|
) {
|
|
337
419
|
_izContext.logger.debug("Lib:checkAllAwaitingStepsFinishedWithError", {
|
|
338
420
|
pendingStepId: pendingStepId,
|
|
@@ -350,7 +432,8 @@ async function checkAllAwaitingStepsFinishedWithError(
|
|
|
350
432
|
},
|
|
351
433
|
{
|
|
352
434
|
complete: true,
|
|
353
|
-
errorsFound: errorsFound
|
|
435
|
+
errorsFound: errorsFound,
|
|
436
|
+
...additionalAttributes
|
|
354
437
|
},
|
|
355
438
|
);
|
|
356
439
|
|
|
@@ -450,12 +533,13 @@ async function clearAllAwaitingSteps(
|
|
|
450
533
|
promiseArray.push(
|
|
451
534
|
dynamodbSharedLib.deleteItem(
|
|
452
535
|
_izContext,
|
|
453
|
-
"AwaitingMultipleSteps",
|
|
536
|
+
await dynamodbSharedLib.tableName(_izContext, "AwaitingMultipleSteps"),
|
|
454
537
|
{
|
|
455
538
|
awaitingStepId: listPendingStepIds.Items[idx].awaitingStepId,
|
|
456
539
|
pendingStepId: listPendingStepIds.Items[idx].pendingStepId
|
|
457
540
|
}
|
|
458
|
-
)
|
|
541
|
+
)
|
|
542
|
+
);
|
|
459
543
|
|
|
460
544
|
_izContext.logger.debug(`delete item in dynamodb AwaitingMultipleStepByPending`)
|
|
461
545
|
promiseArray.push(
|
|
@@ -466,8 +550,8 @@ async function clearAllAwaitingSteps(
|
|
|
466
550
|
pendingStepId: listPendingStepIds.Items[idx].pendingStepId,
|
|
467
551
|
awaitingStepId: listPendingStepIds.Items[idx].awaitingStepId
|
|
468
552
|
}
|
|
469
|
-
)
|
|
470
|
-
|
|
553
|
+
)
|
|
554
|
+
);
|
|
471
555
|
}
|
|
472
556
|
|
|
473
557
|
await Promise.all(promiseArray);
|
|
@@ -938,6 +1022,10 @@ module.exports = {
|
|
|
938
1022
|
checkAllAwaitingStepsFinished,
|
|
939
1023
|
clearAllAwaitingSteps,
|
|
940
1024
|
removeAwaitingMultipleStep,
|
|
1025
|
+
findPendingStepIdsAwaitingMultipleSteps,
|
|
1026
|
+
findPendingStepsAwaitingMultipleSteps,
|
|
1027
|
+
findPendingStepAwaitingMultipleSteps,
|
|
1028
|
+
findAwaitingMultipleStepByPending,
|
|
941
1029
|
|
|
942
1030
|
// AwaitingStep functions
|
|
943
1031
|
createAwaitingStep,
|