Opening the Designer
When you open a ProcessThread, the application transitions from the dashboard into the full canvas designer. This page explains what happens during that transition and what determines whether you open in edit or read-only mode.
The Loading Transition
Clicking Open on a ProcessThread card triggers a state machine transition in WorkflowApp.tsx. The app moves from dashboard state to loading state while it fetches the workflow data, then to designer state once data arrives.
Fetch Workflow Data
The API call GET /api/v1/flow-studio/threads/{threadId}/graph retrieves the full graph: nodes, edges, groups, and configuration. This also validates your session lock.
Populate the Stores
The graph data is translated by ProcessElementToNodeTranslator and loaded into workflowStore. Node type metadata is loaded from cache or fetched fresh.
Determine Mode
If you hold the edit lock, the designer opens in Design mode. If another user holds the lock (or the thread is Published), it opens in Read-Only design mode.
Render the Canvas
React Flow renders the nodes and edges. The canvas centres on the workflow graph automatically. The left toolbar, top toolbar, and right panel all mount.
Edit Mode vs Read-Only Mode
| Condition | Mode | What Is Disabled |
|---|---|---|
| You hold the edit lock | Full Design Mode | Nothing — all edit features active |
| Another user holds the lock | Read-Only Design Mode | Node drag, connect, delete, save, paste |
| Thread is Published | Read-Only Design Mode | All edits — canvas is a viewer only |
| Thread is Archived | Read-Only Design Mode | All edits, execution buttons |
Error States
If loading fails, WorkflowApp moves to the error state and shows an error page with:
- The HTTP status code and error message from the API
- A Retry button that re-attempts the fetch
- A Back to Dashboard link
Common causes of load failure:
| Error | Cause | Resolution |
|---|---|---|
| 404 Not Found | Thread was deleted after you opened the dashboard | Refresh the dashboard and verify the thread exists |
| 403 Forbidden | Your role was changed to Viewer while you had the thread open | Contact the project owner |
| 409 Conflict | Lock acquired by another session | Wait for the other user to unlock, or ask an admin to force unlock |
| Network Error | Backend API unreachable | Check connectivity; retry when the service recovers |