47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
import json
|
|
import sys
|
|
|
|
from examples.demo_workflow import build_demo_registry, build_demo_workflow
|
|
from wf_core import RunState, execute_workflow, resume_workflow
|
|
|
|
|
|
def print_run(label: str, run: RunState) -> None:
|
|
print(f"{label}:")
|
|
print(json.dumps(run.to_dict(), indent=2))
|
|
|
|
|
|
def main() -> None:
|
|
workflow = build_demo_workflow()
|
|
registry = build_demo_registry()
|
|
|
|
report = workflow.validate_structure()
|
|
report.raise_for_errors()
|
|
print("Workflow is structurally valid.", file=sys.stderr)
|
|
|
|
interrupted_run = execute_workflow(
|
|
workflow,
|
|
{"folder_id": "demo-folder", "should_email": True},
|
|
registry,
|
|
)
|
|
print_run("Interrupting run", interrupted_run)
|
|
|
|
resumed_run = resume_workflow(
|
|
workflow,
|
|
interrupted_run,
|
|
registry,
|
|
resume_payload={"approved": True, "comment": "Looks good to send."},
|
|
resume_outcome="submitted",
|
|
)
|
|
print_run("Resumed run", resumed_run)
|
|
|
|
non_interrupt_run = execute_workflow(
|
|
workflow,
|
|
{"folder_id": "demo-folder", "should_email": False},
|
|
registry,
|
|
)
|
|
print_run("Non-interrupt run", non_interrupt_run)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|