Class BpmnEventPublicationBehavior

java.lang.Object
io.camunda.zeebe.engine.processing.bpmn.behavior.BpmnEventPublicationBehavior

public final class BpmnEventPublicationBehavior extends Object
  • Constructor Details

  • Method Details

    • throwErrorEvent

      public void throwErrorEvent(CatchEventAnalyzer.CatchEventTuple catchEventTuple)
      Throws an error event to the given element instance/catch event pair. Only throws the event if the given element instance is exists and is accepting events, e.g. isn't terminating, wasn't interrupted, etc.
      Parameters:
      catchEventTuple - a tuple representing a catch event and its current instance
    • throwErrorEvent

      public void throwErrorEvent(CatchEventAnalyzer.CatchEventTuple catchEventTuple, org.agrona.DirectBuffer variables)
      Throws an error event to the given element instance/catch event pair. Only throws the event if the given element instance is exists and is accepting events, e.g. isn't terminating, wasn't interrupted, etc.
      Parameters:
      catchEventTuple - a tuple representing a catch event and its current instance
    • findErrorCatchEvent

      public Either<Failure,CatchEventAnalyzer.CatchEventTuple> findErrorCatchEvent(org.agrona.DirectBuffer errorCode, BpmnElementContext context)
      Finds the right catch event for the given error. This is done by going up through the scope hierarchy recursively until a matching catch event is found. If none are found, a failure is returned.

      The returned CatchEventAnalyzer.CatchEventTuple can be used to throw the event via throwErrorEvent(CatchEventTuple).

      Parameters:
      errorCode - the error code of the error event
      context - the current element context
      Returns:
      a valid CatchEventAnalyzer.CatchEventTuple if a catch event is found, or a failure otherwise
    • findEscalationCatchEvent

      public Optional<CatchEventAnalyzer.CatchEventTuple> findEscalationCatchEvent(org.agrona.DirectBuffer escalationCode, BpmnElementContext context)
      Finds the right catch event for the given escalation. This is done by going up through the scope hierarchy recursively until a matching catch event is found. Otherwise, it returns Optional.empty().
      Parameters:
      escalationCode - the escalation code of the escalation event
      context - the current element context
      Returns:
      a valid CatchEventAnalyzer.CatchEventTuple if a catch event is found, Otherwise, it returns Optional.empty()
    • throwEscalationEvent

      public boolean throwEscalationEvent(org.agrona.DirectBuffer throwElementId, org.agrona.DirectBuffer escalationCode, BpmnElementContext context)
      Throws an escalation event to the given element instance/catch event pair. Only throws the event if the given element instance is exists and is accepting events, e.g. isn't terminating, wasn't interrupted, etc.
      Parameters:
      throwElementId - the element id of the escalation throw event
      escalationCode - the escalation code of escalation
      context - process instance-related data of the element that is executed
      Returns:
      returns true if the escalation throw event can be completed, false otherwise