@@ -43,11 +43,16 @@ def __init__(self, history: simpleflow.swf.mapper.models.history.History) -> Non
4343 self .started_decision_id : int | None = None
4444 self .completed_decision_id : int | None = None
4545 self .last_event_id : int | None = None
46+ self ._workflow : dict [str , Any ] = {}
4647
4748 @property
4849 def swf_history (self ) -> simpleflow .swf .mapper .models .history .History :
4950 return self ._history
5051
52+ @property
53+ def workflow (self ):
54+ return self ._workflow
55+
5156 @property
5257 def activities (self ) -> dict [str , ActivityTaskEventDict ]:
5358 """
@@ -432,6 +437,118 @@ def parse_workflow_event(self, events: list[Event], event: WorkflowExecutionEven
432437 """
433438 Parse a workflow event.
434439 """
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 ()
435552 if event .state == "signaled" :
436553 signal = {
437554 "type" : "signal" ,
0 commit comments