Tip
The Feature
As a: developer working on the ewoksdraw pipeline
I want to: convert a flat ewoks workflow graph (execution representation) into an ELK graph (layout representation)
So that: I can pass the structurally correct graph to our custom ELKpython library to automatically compute task and link positions for SVG rendering.
Note
Context & Architecture
The converter must bridge two distinct graph representations:
ewoks Graph (Execution/Workflow)
Backend: NetworkX DiGraph (ewokscore.graph.TaskGraph).
Format: Based on NetworkX node-link JSON, with workflow semantics (nodes with task_identifier, links with data_mapping).
ELK Graph (Layout)
Format: ELK JSON graph format (Eclipse/ELK standard).
Structure: Uses children (nodes with width/height), edges (sources to targets), and ports.
Purpose: Strict layout orientation. After computation, ELK injects x, y, width, height, and edge routing sections.
Note
Scope & Boundaries
In Scope: Parsing the standard ewoks workflow graph structure from its NetworkX backbone.
Mapping ewoks nodes to ELK children, providing default width/height bounding boxes required for the solver.
Mapping ewoks links to ELK edges.
Handling subworkflows as simple, opaque tasks (flat representation only).
Out of Scope: Expanding or routing into nested subworkflows/compound nodes (to be handled in a future issue)
Executing the actual layout computation (calling the ELK solver).
Rendering the final SVG.
Important
Acceptance Criteria
The feature is considered complete and ready to ship when:
Tip
The Feature
ewoksdrawpipelineewoksworkflow graph (execution representation) into anELKgraph (layout representation)Note
Context & Architecture
The converter must bridge two distinct graph representations:
ewoksGraph (Execution/Workflow)DiGraph(ewokscore.graph.TaskGraph).nodeswithtask_identifier,linkswithdata_mapping).ELKGraph (Layout)children(nodes withwidth/height),edges(sources to targets), andports.x,y,width,height, and edge routing sections.Note
Scope & Boundaries
ewoks nodestoELK children, providing default width/height bounding boxes required for the solver.ewoks linkstoELK edges.Important
Acceptance Criteria
The feature is considered complete and ready to ship when:
ewoksNetworkX representations to validELKJSON dictionary structures.ELKchildren are successfully initialized with the required dimension attributes (width,height) needed by the ELK solver.ewoksdependencies (links) are accurately translated toELK edgesmatching the correct source and target nodes.