- 4 minutes to read

BPM Binding

BPM Binding positions a Service in a Business Process Model (BPM) through the BPMs array of the Service in a Repository Binding. Each entry places the Service in one cell of the BPM and draws the arrows to the other steps. For a complete, worked process, see the Order-to-Cash examples.

Important

BPM Binding is part of Repository Binding, so it works only when the AllowRepositoryAutomapping System Parameter is set to true.

Reference

The BPM Matrix

BPMs organize process steps as a matrix: domains (rows) × steps (columns).

           Step 0        Step 1        Step 2
Sales      Order         [empty]       [empty]
           Received

Planning   [empty]       Order         [empty]
                         Planned

Logistics  [empty]       [empty]       Order
                                       Packed

Note

Steps are 0-based in code (0, 1, 2) but display as 1-based in UI (Step 1, Step 2, Step 3). Step numbers must always be non-negative (0 or positive integers).

BPM Object

Field Required Purpose Example
Name ✅ Yes Process flow name INT1337 - Order-to-Cash Flow
ArtifactRenaming ❌ No UI display name Order Received from Customer
Domain ✅ Yes Row position (Domain object) { "Name": "Sales", "Index": 0 }
Step ✅ Yes Column position (0-based) 0, 1, 2
ServiceRelations ❌ No Flow arrows between cells Array of service relation objects

Domain Object

Field Required Purpose Example
Name ✅ Yes Business domain Sales, Planning, Logistics, Finance
Index ✅ Yes Row order (0-based) 0, 1, 2, 3

ServiceRelations (BPM Flow Arrows)

Links between BPM process steps, displayed as arrows in the BPM matrix visualization.

Field Required Purpose Values
Name ✅ Yes Target service name Service name string
Direction ✅ Yes Target service direction; it draws the direction arrows on connectors in the Integration Landscape Receive, Send, TwoWayReceive, TwoWaySend; see Service direction values
System ✅ Yes Target service system { "Name": "System Name" }
Domain ✅ Yes Target row { "Name": "Sales", "Index": 0 }
Step ✅ Yes Target column (0-based) 0, 1, 2
ArtifactRenaming ❌ No Relation display name String
Label ❌ No Arrow label text String
ConnectorStyle ❌ No Connector line style Connector styles
SourceAttachmentPoint ❌ No Arrow start position Attachment points
TargetAttachmentPoint ❌ No Arrow end position Attachment points

Important

Direction and System fields are required for proper BPM reconstruction. The Direction refers to the target service's direction, not the current service. Including System and Domain in every ServiceRelation ensures Nodinite can reconstruct the process flow even when events arrive out of sequence due to network delays, retries, or asynchronous processing.

Connector Styles

Value Style
0 Arrow
1 DottedArrow
2 Line
3 DottedLine
4 StraightArrow
5 StraightDottedArrow

Attachment Points

SourceAttachmentPoint and TargetAttachmentPoint use the same values.

Value Position
1 Left
2 Up
3 Right
4 Down

Examples

BPMs Array

The BPMs array as it appears inside the Service object (fragment):

"BPMs": [{
  "Name": "INT1337 - Order-to-Cash Flow",
  "ArtifactRenaming": "Order Entry in ERP",
  "Domain": { "Name": "Planning", "Index": 1 },
  "Step": 1,
  "ServiceRelations": [{
    "Name": "INT1337-RCV-Order-Incoming",
    "Direction": "Receive",
    "System": { "Name": "Portal" },
    "Domain": { "Name": "Sales", "Index": 0 },
    "Step": 0,
    "Label": "From Portal",
    "ConnectorStyle": 0,
    "SourceAttachmentPoint": 3,
    "TargetAttachmentPoint": 1
  }]
}]

Complete Repository Binding with a BPM

The same BPM entry in a complete, valid Repository Binding value. The Service, System, and Integration names are examples:

{
  "Name": "Default",
  "Service": {
    "Name": "INT1337-SND-Order-Entry",
    "Direction": "Send",
    "System": { "Name": "ERP" },
    "Integration": { "Name": "INT1337 - Order-to-Cash" },
    "BPMs": [{
      "Name": "INT1337 - Order-to-Cash Flow",
      "ArtifactRenaming": "Order Entry in ERP",
      "Domain": { "Name": "Planning", "Index": 1 },
      "Step": 1,
      "ServiceRelations": [{
        "Name": "INT1337-RCV-Order-Incoming",
        "Direction": "Receive",
        "System": { "Name": "Portal" },
        "Domain": { "Name": "Sales", "Index": 0 },
        "Step": 0,
        "Label": "From Portal",
        "ConnectorStyle": 0,
        "SourceAttachmentPoint": 3,
        "TargetAttachmentPoint": 1
      }]
    }]
  }
}

Send it as an escaped string in ExtendedProperties/1.0#RepositoryBinding, as shown in the Repository Binding escaped-string example.

Next Steps