The Camunda import takes a Camunda file (.bpmn) and converts it to the BPM definition.

Ensure that the model meets the following requirements:

  • Give the overall model a meaningful id.
  • Set the processName property of the overall model to something meaningful.
  • Add more process-level attributes as overall properties.
  • Give each process (swimlane) a meaningful id that reflects the role and a name.
  • Ensure one of the processes has an id of "owner", and that the one and only start event is in that process. Give the start event an id of "start".
  • Give each step a meaningful id and name, except for gateways.
  • Use the properties of each step to set stepType and to add any further step attributes.
  • Use exclusive gateways as switches. Ensure each outgoing link has a status property set to a suitable short status. Also set the name - the status will default to the name in lower case. If a flow is across role boundaries and you want to send data along with a flow, set send.dataReferenceFrom and receive.dataReference properties in the flow to identify the reference of the data you want to send.
  • Set the immediate property on any flows that should occur immediately.
  • If you want to reference a process definition, status rules, form or file in the process, use the syntax ${action:ref}. Available actions are processDefinition, statusRules, form and fileInfo.

The Camunda Importer type can be used to import a Camunda model. It derives the appropriate process definition and status rules. The BPM process definition, step types and properties can use placeholders such as ${action:ref}. These will be resolved against the properties node. Available actions are processDefinition, statusRules, form and fileInfo. For example, if you want to reference a form in process definition, use the syntax ${form:formRef}, and then bind formRef to your form node in the properties node.

Still to consider:

  • Default step types for service and for user process.
  • Other types of branching, such as inclusive branching.
  • Validation to raise errors if other types have been used.
  • Indexed error messages to make it easier to debug.