Search in sources :

Example 1 with DecisionEvaluationRecord

use of io.camunda.zeebe.protocol.impl.record.value.decision.DecisionEvaluationRecord in project zeebe by zeebe-io.

the class BpmnDecisionBehavior method writeDecisionEvaluationEvent.

private void writeDecisionEvaluationEvent(final PersistedDecision decision, final DecisionEvaluationResult decisionResult, final BpmnElementContext context) {
    final var decisionEvaluationEvent = new DecisionEvaluationRecord().setDecisionKey(decision.getDecisionKey()).setDecisionId(decision.getDecisionId()).setDecisionName(decision.getDecisionName()).setDecisionVersion(decision.getVersion()).setDecisionRequirementsKey(decision.getDecisionRequirementsKey()).setDecisionRequirementsId(decision.getDecisionRequirementsId()).setProcessDefinitionKey(context.getProcessDefinitionKey()).setBpmnProcessId(context.getBpmnProcessId()).setProcessInstanceKey(context.getProcessInstanceKey()).setElementInstanceKey(context.getElementInstanceKey()).setElementId(context.getElementId());
    final var decisionKeysByDecisionId = decisionState.findDecisionsByDecisionRequirementsKey(decision.getDecisionRequirementsKey()).stream().collect(Collectors.toMap(persistedDecision -> bufferAsString(persistedDecision.getDecisionId()), PersistedDecision::getDecisionKey));
    decisionResult.getEvaluatedDecisions().forEach(evaluatedDecision -> addDecisionToEvaluationEvent(evaluatedDecision, decisionKeysByDecisionId.getOrDefault(evaluatedDecision.decisionId(), UNKNOWN_DECISION_KEY), decisionEvaluationEvent));
    final DecisionEvaluationIntent decisionEvaluationIntent;
    if (decisionResult.isFailure()) {
        decisionEvaluationIntent = DecisionEvaluationIntent.FAILED;
        decisionEvaluationEvent.setEvaluationFailureMessage(decisionResult.getFailureMessage()).setFailedDecisionId(decisionResult.getFailedDecisionId());
    } else {
        decisionEvaluationIntent = DecisionEvaluationIntent.EVALUATED;
        decisionEvaluationEvent.setDecisionOutput(decisionResult.getOutput());
    }
    final var newDecisionEvaluationKey = keyGenerator.nextKey();
    stateWriter.appendFollowUpEvent(newDecisionEvaluationKey, decisionEvaluationIntent, decisionEvaluationEvent);
}
Also used : BpmnElementContext(io.camunda.zeebe.engine.processing.bpmn.BpmnElementContext) ErrorType(io.camunda.zeebe.protocol.record.value.ErrorType) DecisionEvaluationResult(io.camunda.zeebe.dmn.DecisionEvaluationResult) ExecutableCalledDecision(io.camunda.zeebe.engine.processing.deployment.model.element.ExecutableCalledDecision) VariableState(io.camunda.zeebe.engine.state.immutable.VariableState) ZeebeState(io.camunda.zeebe.engine.state.immutable.ZeebeState) MatchedRule(io.camunda.zeebe.dmn.MatchedRule) ByteArrayInputStream(java.io.ByteArrayInputStream) Failure(io.camunda.zeebe.engine.processing.common.Failure) DecisionEngine(io.camunda.zeebe.dmn.DecisionEngine) Either(io.camunda.zeebe.util.Either) DecisionState(io.camunda.zeebe.engine.state.immutable.DecisionState) StateWriter(io.camunda.zeebe.engine.processing.streamprocessor.writers.StateWriter) EvaluatedInput(io.camunda.zeebe.dmn.EvaluatedInput) MsgPackConverter(io.camunda.zeebe.protocol.impl.encoding.MsgPackConverter) BufferUtil.bufferAsString(io.camunda.zeebe.util.buffer.BufferUtil.bufferAsString) EvaluatedDecision(io.camunda.zeebe.dmn.EvaluatedDecision) MatchedRuleRecord(io.camunda.zeebe.protocol.impl.record.value.decision.MatchedRuleRecord) EvaluatedDecisionRecord(io.camunda.zeebe.protocol.impl.record.value.decision.EvaluatedDecisionRecord) PersistedDecisionRequirements(io.camunda.zeebe.engine.state.deployment.PersistedDecisionRequirements) KeyGenerator(io.camunda.zeebe.engine.state.KeyGenerator) DecisionEvaluationIntent(io.camunda.zeebe.protocol.record.intent.DecisionEvaluationIntent) ExpandableArrayBuffer(org.agrona.ExpandableArrayBuffer) Collectors(java.util.stream.Collectors) MsgPackWriter(io.camunda.zeebe.msgpack.spec.MsgPackWriter) ExpressionProcessor(io.camunda.zeebe.engine.processing.common.ExpressionProcessor) VariablesContext(io.camunda.zeebe.dmn.impl.VariablesContext) ParsedDecisionRequirementsGraph(io.camunda.zeebe.dmn.ParsedDecisionRequirementsGraph) DecisionEvaluationRecord(io.camunda.zeebe.protocol.impl.record.value.decision.DecisionEvaluationRecord) ProcessEngineMetrics(io.camunda.zeebe.engine.metrics.ProcessEngineMetrics) PersistedDecision(io.camunda.zeebe.engine.state.deployment.PersistedDecision) EventTriggerBehavior(io.camunda.zeebe.engine.processing.common.EventTriggerBehavior) EvaluatedOutput(io.camunda.zeebe.dmn.EvaluatedOutput) BufferUtil(io.camunda.zeebe.util.buffer.BufferUtil) DirectBuffer(org.agrona.DirectBuffer) DecisionEvaluationRecord(io.camunda.zeebe.protocol.impl.record.value.decision.DecisionEvaluationRecord) DecisionEvaluationIntent(io.camunda.zeebe.protocol.record.intent.DecisionEvaluationIntent)

Aggregations

DecisionEngine (io.camunda.zeebe.dmn.DecisionEngine)1 DecisionEvaluationResult (io.camunda.zeebe.dmn.DecisionEvaluationResult)1 EvaluatedDecision (io.camunda.zeebe.dmn.EvaluatedDecision)1 EvaluatedInput (io.camunda.zeebe.dmn.EvaluatedInput)1 EvaluatedOutput (io.camunda.zeebe.dmn.EvaluatedOutput)1 MatchedRule (io.camunda.zeebe.dmn.MatchedRule)1 ParsedDecisionRequirementsGraph (io.camunda.zeebe.dmn.ParsedDecisionRequirementsGraph)1 VariablesContext (io.camunda.zeebe.dmn.impl.VariablesContext)1 ProcessEngineMetrics (io.camunda.zeebe.engine.metrics.ProcessEngineMetrics)1 BpmnElementContext (io.camunda.zeebe.engine.processing.bpmn.BpmnElementContext)1 EventTriggerBehavior (io.camunda.zeebe.engine.processing.common.EventTriggerBehavior)1 ExpressionProcessor (io.camunda.zeebe.engine.processing.common.ExpressionProcessor)1 Failure (io.camunda.zeebe.engine.processing.common.Failure)1 ExecutableCalledDecision (io.camunda.zeebe.engine.processing.deployment.model.element.ExecutableCalledDecision)1 StateWriter (io.camunda.zeebe.engine.processing.streamprocessor.writers.StateWriter)1 KeyGenerator (io.camunda.zeebe.engine.state.KeyGenerator)1 PersistedDecision (io.camunda.zeebe.engine.state.deployment.PersistedDecision)1 PersistedDecisionRequirements (io.camunda.zeebe.engine.state.deployment.PersistedDecisionRequirements)1 DecisionState (io.camunda.zeebe.engine.state.immutable.DecisionState)1 VariableState (io.camunda.zeebe.engine.state.immutable.VariableState)1