Throw signal with local variables (Rest API)

Given these two models:

image

I’d like to throw a signal that can hit both the start event and the intermediate event, but also using local variables.There are two problems with this:

  • The Rest API doesn’t support adding local variables when throwing signals
    (Throw a Signal | docs.camunda.org)

  • Local variables are not usable from the start event, as no output mapping can be done there. That’s understandable, though as the party executing the request doesn’t have any knowledge about the receivers (not even if they are start events or intermediate events), it leaves us with 2 options:

  1. Throw a signal event with process-wide variables, possibly causing problem when variable names overlap.
  2. Split up signal names, disallowing for the same signal name to be used for both start events and intermediate events.

This all seems a bit inconvenient, and I’d like to know your opinion about this.

  • The Rest API seems to be missing a bit of functionality there, to add local variables to signal events.
  • What should a thrown signal, with local variables, hitting a start event result in. Do you think the local variables should be ignored, that they are converted to process-wide variables, or that they can be mapped?

One option is to pass variables (including local) by throwing a signal, please find the docs below. However, I am not sure if it is suitable for you.
Another is to pass transient variables via the Rest API.
Other than that feel free to create a feature request for the Rest API.

[1] https://docs.camunda.org/manual/7.10/reference/bpmn20/events/signal-events/#passing-variables
[2] https://docs.camunda.org/manual/develop/user-guide/process-engine/variables/#transient-variables

Hi…you should explain your preferences and how “generic” you expect this task to be. In reality you are only asking that the names of your interface signals be generic; the functional of the signal must be the same. Can you explain with an example of what functionality you are trying to model?
The purpose of a virtual interface is to make your code generic enough that it does not refer to a specific interface instance, but the names the the virtual interface must match.