Diagram Metadata (dai:workflowMeta)
description, defaultModel, targetLanguage, targetFramework and version attributes on the root process’s dai:workflowMeta element.
The dai:workflowMeta extension element sits inside bpmn:extensionElements on the root bpmn:process. It frames the entire diagram for the AI — read first, before any element, it orients the overall execution strategy.
<bpmn:process id="Process_1" name="Order Validation" isExecutable="false">
<bpmn:extensionElements>
<dai:workflowMeta
description="Validates incoming orders, enriches them with product data, and routes them to fulfilment or rejection."
defaultModel="gpt-4o"
targetLanguage="TypeScript"
targetFramework="React"
version="1.0" />
</bpmn:extensionElements>
<!-- flow elements -->
</bpmn:process>
Attributes
| Attribute | Purpose |
|---|---|
description | Plain-language explanation of what this diagram achieves. The AI reads this to orient its overall execution strategy. |
defaultModel | The AI model to use by default (e.g. gpt-4o, openai/gpt-4.1, claude-opus-4.5). Individual steps may override it — see Prompt and Agent. |
targetLanguage | Target programming language, if applicable (e.g. TypeScript, Python). |
targetFramework | Target framework, if applicable (e.g. React, FastAPI). |
version | Version string for the diagram (e.g. 1.0). |
The process name (shown on canvas and in the browser title) is the standard BPMN name attribute on bpmn:process, not part of the extension.
Task Type Entries
dai:workflowMeta can carry a list of dai:taskTypeEntry children — a dictionary describing what each type means in this diagram:
<dai:workflowMeta description="Build a website for DAI Studio" defaultModel="gpt-4o" version="1.0">
<dai:taskTypeEntry type="dai.types.software.dependency" stepType="dependency"
description="An external library, package, service, API, or resource the project relies on." />
<dai:taskTypeEntry type="dai.types.ai.rule" stepType="rule"
description="A constraint, policy, or business rule the AI must respect and enforce." />
<dai:taskTypeEntry type="dai.types.ai.context" stepType="context"
description="Background knowledge, grounding data, or reference material that informs downstream steps." />
<dai:taskTypeEntry type="dai.types.product.story" stepType="story"
description="Here story represents blog content" />
</dai:workflowMeta>
Each entry has a type (the dai:type id), a stepType for types that have a legacy one, and a description. Entries written with only stepType by older files still match their type. Because the element types are a vocabulary rather than a fixed mapping, the type glosses in the published Element Types pages are deliberately general — a task type entry lets you say “in this diagram, story means a blog post” and the AI will honour it.
DAI Studio maintains the dictionary automatically as you edit:
- When a type first appears on canvas, an entry is created with that type’s description from the type catalog.
- When the last element of a type is deleted, its orphaned entry is removed.
- Entries for types the editor doesn’t know are kept as long as elements still use them.
- Descriptions you customise are preserved — the app only fills in and prunes, it never overwrites your text.
In the editor, the Library panel lists every type in use with its description, and editing a description there writes the entry. You can also edit the entries by hand (or have an AI generate them) — the descriptions are plain text read as diagram-level context.