code: def run(self):
      # create dynamically the source_work at runtime
      if "src_w" not in self.dict:
          self.dict["src_w"] = SourceFileWork()
  
      self.dict["src_w"].run()
  
      if self.dict["src_w"].has_succeeded:
          # create dynamically the dst_w at runtime
          if "dst_w" not in self.dict:
              self.dict["dst_w"] = DestinationFileAndServeWork(
                  script_path=os.path.join(
                      os.path.dirname(__file__), "scripts/serve.py"
                  ),
                  port=1111,
                  parallel=False,  # runs until killed.
                  cloud_compute=CloudCompute(),
                  raise_exception=True,
              )
  
          # the flow passes the file from one work to another.
          self.dict["dst_w"].run(self.dict["src_w"].boring_path)
          self.stop("Boring App End")
  
file_path: pytorch-lightning/examples/app/boring/app_dynamic.py
imports: import os
  from lightning.app import CloudCompute, LightningApp, LightningFlow, LightningWork
  from lightning.app.components import TracerPythonScript
  from lightning.app.storage.path import Path
  from lightning.app.structures import Dict
label_desc: Use image node_id 3 for calling the BoringApp obj's underlying member method code with example usage: obj.run() without return types