input: Write a function to generate a BPMN diagram for FOMDES process 1 using Python and the bpmn_pgv library. The function should create clusters for Secretaría Ejecutiva, Presidencia, and Presupuesto/Administración, with specific tasks and edges defined within each cluster. Additionally, include nodes for SIGEFOMDES Administración and SISAC, and connect them to the appropriate clusters using dashed edges. Finally, save the diagram as a PNG file named "proc4.png" and a DOT file named "proc4.dot".
  assert generate_bpmn_diagram("proc4.png", "proc4.dot").__class__==pygraphviz.agraph.AGraph
  assert generate_bpmn_diagram("proc4.png", "proc4.dot").__class__==pygraphviz.agraph.AGraph
output: 
  def generate_bpmn_diagram(png_filename, dot_filename):
      import pygraphviz as pgv
  
      G = pgv.AGraph(directed=True, strict=True, rankdir='LR')
  
      # Secretaría Ejecutiva cluster
      G.add_subgraph(name='cluster_Secretaría_Ejecutiva', label='Secretaría Ejecutiva', style='filled', color='lightgrey')
      G.add_node('Task1', label='Task 1', shape='box', style='filled', color='white')
      G.add_node('Task2', label='Task 2', shape='box', style='filled', color='white')
      G.add_edge('Task1', 'Task2')
  
      # Presidencia cluster
      G.add_subgraph(name='cluster_Presidencia', label='Presidencia', style='filled', color='lightgrey')
      G.add_node('Task3', label='Task 3', shape='box', style='filled', color='white')
      G.add_node('Task4', label='Task 4', shape='box', style='filled', color='white')
      G.add_edge('Task3', 'Task4')
  
      # Presupuesto/Administración cluster
      G.add_subgraph(name='cluster_Presupuesto_Administración', label='Presupuesto/Administración', style='filled', color='lightgrey')
      G.add_node('Task5', label='Task 5', shape='box', style='filled', color='white')
      G.add_node('Task6', label='Task 6', shape='box', style='filled', color='white')
      G.add_edge('Task5', 'Task6')
  
      # SIGEFOMDES Administración and SISAC nodes
      G.add_node('SIGEFOMDES_Administración', label='SIGEFOMDES Administración', shape='box', style='dashed')
      G.add_node('SISAC', label='SISAC', shape='box', style='dashed')
  
      # Connect SIGEFOMDES Administración and SISAC to clusters with dashed edges
      G.add_edge('SIGEFOMDES_Administración', 'Task1', style='dashed')
      G.add_edge('SISAC', 'Task3', style='dashed')
  
      # Save the diagram
      G.draw(png_filename, prog='dot')
      G.write(dot_filename)
  
      return G
  