@izara_project/izara-core-library-asynchronous-flow 1.0.14 → 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 +91 -4
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
|
|
|
@@ -939,6 +1022,10 @@ module.exports = {
|
|
|
939
1022
|
checkAllAwaitingStepsFinished,
|
|
940
1023
|
clearAllAwaitingSteps,
|
|
941
1024
|
removeAwaitingMultipleStep,
|
|
1025
|
+
findPendingStepIdsAwaitingMultipleSteps,
|
|
1026
|
+
findPendingStepsAwaitingMultipleSteps,
|
|
1027
|
+
findPendingStepAwaitingMultipleSteps,
|
|
1028
|
+
findAwaitingMultipleStepByPending,
|
|
942
1029
|
|
|
943
1030
|
// AwaitingStep functions
|
|
944
1031
|
createAwaitingStep,
|