@@ -43,11 +43,16 @@ def __init__(self, history: simpleflow.swf.mapper.models.history.History) -> Non
43
43
self .started_decision_id : int | None = None
44
44
self .completed_decision_id : int | None = None
45
45
self .last_event_id : int | None = None
46
+ self ._workflow : dict [str , Any ] = {}
46
47
47
48
@property
48
49
def swf_history (self ) -> simpleflow .swf .mapper .models .history .History :
49
50
return self ._history
50
51
52
+ @property
53
+ def workflow (self ):
54
+ return self ._workflow
55
+
51
56
@property
52
57
def activities (self ) -> dict [str , ActivityTaskEventDict ]:
53
58
"""
@@ -432,6 +437,118 @@ def parse_workflow_event(self, events: list[Event], event: WorkflowExecutionEven
432
437
"""
433
438
Parse a workflow event.
434
439
"""
440
+ if event .state == "started" :
441
+ self ._workflow .update (
442
+ {
443
+ "state" : event .state ,
444
+ f"{ event .state } _id" : event .id ,
445
+ f"{ event .state } _timestamp" : event .timestamp ,
446
+ "child_policy" : getattr (event , "child_policy" , None ),
447
+ "task_list" : event .task_list ["name" ],
448
+ "workflow_type" : event .workflow_type ,
449
+ "continued_execution_run_id" : getattr (event , "continued_execution_run_id" , None ),
450
+ "execution_start_to_close_timeout" : getattr (event , "execution_start_to_close_timeout" , None ),
451
+ "input" : getattr (event , "input" , None ),
452
+ "lambda_role" : getattr (event , "lambda_role" , None ),
453
+ "parent_initiated_event_id" : getattr (event , "parent_initiated_event_id" , None ),
454
+ "parent_workflow_execution" : getattr (event , "parent_workflow_execution" , None ),
455
+ "tag_list" : getattr (event , "tag_list" , None ),
456
+ "task_priority" : getattr (event , "task_priority" , None ),
457
+ "task_start_to_close_timeout" : getattr (event , "task_start_to_close_timeout" , None ),
458
+ }
459
+ )
460
+ elif event .state == "continued_as_new" :
461
+ self ._workflow .update (
462
+ {
463
+ "state" : event .state ,
464
+ f"{ event .state } _id" : event .id ,
465
+ f"{ event .state } _timestamp" : event .timestamp ,
466
+ f"{ event .state } _decision_task_completed_event_id" : event .decision_task_completed_event_id ,
467
+ "new_execution_run_id" : event .new_execution_run_id ,
468
+ "task_list" : event .task_list ["name" ],
469
+ "workflow_type" : event .workflow_type ,
470
+ "execution_start_to_close_timeout" : getattr (event , "execution_start_to_close_timeout" , None ),
471
+ "input" : getattr (event , "input" , None ),
472
+ "lambda_role" : getattr (event , "lambda_role" , None ),
473
+ "tag_list" : getattr (event , "tag_list" , None ),
474
+ "task_priority" : getattr (event , "task_priority" , None ),
475
+ "task_start_to_close_timeout" : getattr (event , "task_start_to_close_timeout" , None ),
476
+ }
477
+ )
478
+ elif event .state == "completed" :
479
+ self ._workflow .update (
480
+ {
481
+ "state" : event .state ,
482
+ f"{ event .state } _id" : event .id ,
483
+ f"{ event .state } _timestamp" : event .timestamp ,
484
+ "initiated_event_id" : getattr (event , "initiated_event_id" , None ),
485
+ "result" : getattr (event , "result" , None ),
486
+ }
487
+ )
488
+ elif event .state == "cancelled" :
489
+ self ._workflow .update (
490
+ {
491
+ "state" : event .state ,
492
+ f"{ event .state } _id" : event .id ,
493
+ f"{ event .state } _timestamp" : event .timestamp ,
494
+ "initiated_event_id" : getattr (event , "initiated_event_id" , None ),
495
+ "decision_task_completed_event_id" : event .decision_task_completed_event_id ,
496
+ "details" : getattr (event , "details" , None ),
497
+ }
498
+ )
499
+ elif event .state == "failed" :
500
+ self ._workflow .update (
501
+ {
502
+ "state" : event .state ,
503
+ f"{ event .state } _id" : event .id ,
504
+ f"{ event .state } _timestamp" : event .timestamp ,
505
+ "initiated_event_id" : getattr (event , "initiated_event_id" , None ),
506
+ "decision_task_completed_event_id" : event .decision_task_completed_event_id ,
507
+ "reason" : getattr (event , "reason" , None ),
508
+ "details" : getattr (event , "details" , None ),
509
+ }
510
+ )
511
+ elif event .state == "terminated" :
512
+ self ._workflow .update (
513
+ {
514
+ "state" : event .state ,
515
+ f"{ event .state } _id" : event .id ,
516
+ f"{ event .state } _timestamp" : event .timestamp ,
517
+ "initiated_event_id" : getattr (event , "initiated_event_id" , None ),
518
+ "cause" : getattr (event , "cause" , None ),
519
+ "details" : getattr (event , "details" , None ),
520
+ }
521
+ )
522
+ elif event .state == "timed_out" :
523
+ self ._workflow .update (
524
+ {
525
+ "state" : event .state ,
526
+ f"{ event .state } _id" : event .id ,
527
+ f"{ event .state } _timestamp" : event .timestamp ,
528
+ "initiated_event_id" : getattr (event , "initiated_event_id" , None ),
529
+ "timeout_type" : event .timeout_type ,
530
+ }
531
+ )
532
+ # elif event.state in (
533
+ # "cancel_failed",
534
+ # "complete_failed",
535
+ # "continue_as_new",
536
+ # "fail_failed",
537
+ # "start_child_failed",
538
+ # "start_failed",
539
+ # "terminate_failed",
540
+ # ):
541
+ # self._workflow.update(
542
+ # {
543
+ # "state": event.state,
544
+ # f"{event.state}_id": event.id,
545
+ # f"{event.state}_cause": getattr(event, "cause", None),
546
+ # f"{event.state}_decision_task_completed_event_id": event.decision_task_completed_event_id,
547
+ # }
548
+ # )
549
+
550
+ if event .state == "cancel_requested" :
551
+ self ._workflow .update ()
435
552
if event .state == "signaled" :
436
553
signal = {
437
554
"type" : "signal" ,
0 commit comments