6. File Uploads
Note: BPMN does not have a native
fileform property type. File uploads are implemented using the type hint pattern.
How to Enable File Uploads
Use <activiti:value id="type" name="file"/> inside a string type form property:
<userTask id="submitReport" name="Submit Report">
<extensionElements>
<activiti:formProperty id="receipt" name="Upload Receipt" type="string" required="true">
<activiti:value id="type" name="file"/>
</activiti:formProperty>
</extensionElements>
</userTask>
Behavior
- The UI renders as
<input type="file"> - When the task is completed, the file is saved to the configured storage backend (the local
uploads/folder by default) - The process variable stores the generated filename (UUID-based) as a string
File Handling Features
| Feature | Status | Notes |
|---|---|---|
| File Upload | ✅ Supported | Attach files during task completion |
| Multi-File Upload | ✅ Supported | Multiple file fields per task |
| Instance-Based Storage | ✅ Supported | Files organized by process instance ID |
| Secure Download | ✅ Supported | Only process participants can download |
Storage Backends
Storage is pluggable — the active backend is chosen at startup via bpmncentral.storage.type, and exactly one is active at a time. File uploads, downloads, and generated PDFs all use the selected backend transparently; your BPMN never changes.
| Backend | bpmncentral.storage.type |
Status |
|---|---|---|
| Local filesystem (default) | local |
✅ Supported |
| Azure Blob Storage | azure |
✅ Supported |
| AWS S3 | aws |
✅ Supported |
| Google Cloud Storage | gcs |
✅ Supported |