Skip to content

apps/panel 0.74.0 ​

English · Русский

Released on 24 August 2026. Previous release: 0.73.3.

What changed ​

  • A new BPMN connector endpoint can now use getGraphContextLink to save the GUID of an existing Link between the Object supplied to the graph request and the Object represented by the connected node on the diagram.
  • When the user draws such a connector, the panel automatically calls POST /Object/getLinkedObjects, accepts exactly one matching link.objectGuid, rechecks that the same Object is still supplied to the graph request, and sends the accepted Link GUID in POST /Link. If the lookup finds no matching Link or more than one, the panel shows an error, obtains the graph again, and removes the unsaved connector without sending POST /Link.
  • After connector creation, the panel runs the configured graph method again. It shows success only when the returned graph contains every Link GUID from the creation response.
  • Once the returned graph contains the new connector, deleting it removes the saved connector Link by its GUID.
  • Creating a new connector with endpoints that use the GUID of each Object represented by a connected node, or with event-selected endpoints, keeps its existing behavior.

Configuration notes ​

Use getGraphContextLink when one end of a new connector must save that existing Link GUID. Configure that connector endpoint as follows:

  1. Set getGraphContextLink.linkName under request.source or request.target to the technical type of the existing Link.
  2. Set getGraphContextLink.reverse when that existing Link runs from the Object represented by the visual node to the Object supplied to the graph request. It defaults to false, which searches from the graph-request Object to the Object represented by the visual node.

This configuration fragment shows the required nesting. Replace <newConnectorLinkType> with the new connector type and <existingContextLinkType> with the existing Link type whose GUID the endpoint must store:

json
{
  "request": {
    "linkName": "<newConnectorLinkType>",
    "source": {
      "getGraphContextLink": {
        "linkName": "<existingContextLinkType>",
        "reverse": false
      }
    }
  }
}

See the complete configuration with getGraphContextLink.

BPMN takes the other Object from the current graph request automatically. Before calling the graph method, the panel resolves request.objects or request.getSelectedObjectForEventId; it does not derive this Object from the method response. The panel calls POST /Object/getLinkedObjects only when that resolved input currently contains one Object GUID. With no GUID or multiple GUIDs, it stops connector creation before POST /Link. The configuration must therefore supply one current Object through request.objects or request.getSelectedObjectForEventId; the panel checks this automatically. If the graph intentionally uses zero or several context Objects, do not use automatic getGraphContextLink: omit source or target for an Object endpoint, or use an event-selected Link endpoint with idSource: "link".

The nested getGraphContextLink.linkName identifies the existing Link; the outer request.linkName still identifies the new connector. Do not combine getGraphContextLink with getSelectedObjectForEventId on the same endpoint.

If the connector disappears after drawing ​

Read the reason in the notification first. The panel has already removed the unsaved connector and obtained the graph again; drawing the same connector again without a change cannot succeed.

  • If no Link was found, check getGraphContextLink.linkName, reverse, and the graph-request Object GUID. Retry only after correcting one of these values or creating the missing Link in the application interface that edits relationships between Objects. If the endpoint should store an Object GUID, remove source or target and use a compatible new Link type.
  • If multiple Links were found, automatic lookup cannot choose one. Remove invalid duplicates in the relationship-editing interface. If every Link is valid, configure explicit selection through getSelectedObjectForEventId and idSource: "link".
  • If relationship editing is unavailable, do not keep drawing the connector. Include the notification text, getGraphContextLink.linkName, getGraphContextLink.reverse, graph-request Object GUID, and connected node GUID in the issue report.
  • If the notification reports that the graph is loading or its Object changed, wait for the current graph and draw the connector again.
  • If the notification reports an API failure or invalid response, retry once after the current graph is available. If it fails again, include the notification text, getGraphContextLink.linkName, getGraphContextLink.reverse, graph-request Object GUID, and connected node GUID in the issue report.
  • If the notification says that the Link was created but its connector did not appear, do not draw the connector again: the Link already exists. Check it by the reported GUID in the relationship-editing interface or attach the GUID and notification text to an issue report.
  • If the notification says that the panel could not determine whether the Link was created, do not draw the connector again until you check both the connector between the source and target nodes and the expected Link. If that check is unavailable, attach the notification text and the complete request block from the panel configuration to an issue report.

See the complete recovery choices and event-selection example.

Existing connector configurations that do not use getGraphContextLink require no changes.

The beginning or end of any saved BPMN connector cannot be moved to another node in this version. If the user tries, the panel does not send PUT /Link. It runs the configured graph method again, so the attempted move is discarded and the connector returns to its previous position. To change the connection, delete the connector and draw a new one.

Updated documentation ​

  • BPMN guide — documented the getGraphContextLink configuration contract, automatic lookup sequence, direction rules, failure handling, and the saved-connector limitation.
  • BPMN store architecture — documented which requests the panel sends, when it reloads the graph, and how it handles each persistence result.
  • BPMN contextual endpoint API — added the generated endpoint type reference.
  • Parameter lookup — added getGraphContextLink.linkName and getGraphContextLink.reverse.