Decision Requirements Graph
A Decision Requirements Graph (DRG) models a domain of decision-making, showing the most important elements involved in it and the dependencies between them. The elements modeled are decisions, input data, and knowledge sources.
The visual representation of a DRG is called Decision Requirements Diagram (DRD).
In the XML a DRG is represented by the definitions
element.
<definitions xmlns="http://www.omg.org/spec/DMN/20151101/dmn.xsd" id="dinnerDecisions" name="Dinner Decisions" namespace="http://camunda.org/schema/1.0/dmn">
<decision id="dish" name="Dish">
<!-- ... -->
</decision>
<decision id="beverages" name="Beverages">
<!-- ... -->
</decision>
</definitions>
Decision Requirements Graph Name
The name describes the DRG. It is set as the name
attribute on the definitions
element.
<definitions xmlns="http://www.omg.org/spec/DMN/20151101/dmn.xsd"
id="dinnerDecisions"
name="Dinner Decisions"
namespace="http://camunda.org/schema/1.0/dmn">
<!-- ... -->
</definitions>
Decision Requirements Graph Id
The id is the technical identifier of the DRG. It is set in the id
attribute on the definitions
element.
Each DRG should have an unique id when it is deployed to the Camunda BPM
platform. The engine use the id as the decision requirements definition key of the deployed
DecisionRequirementsDefinition
.
<definitions xmlns="http://www.omg.org/spec/DMN/20151101/dmn.xsd"
id="dinnerDecisions"
name="Dinner Decisions"
namespace="http://camunda.org/schema/1.0/dmn">
<!-- ... -->
</definitions>
Decision
A decision requirements graph can have one or more decisions. A decision has a name which is shown in the DRD and an id. The decision logic inside the decision must be either a decision table or a decision literal expression.
A decision is represented by a decision
element inside the definitions
XML element.
<definitions xmlns="http://www.omg.org/spec/DMN/20151101/dmn.xsd" id="dish" name="Desired Dish" namespace="party">
<decision id="beverages" name="Beverages">
<decisionTable id="decisionTable">
<!-- ... -->
</decisionTable>
</decision>
</definitions>
Required Decisions
A decision can have one or more required decisions which it depends on.
A required decision is represented by a requiredDecision
element inside an informationRequirement
XML element.
It has a href
attribute and the value starts with #
followed by the decision id of the required decision.
<decision id="beverages" name="Beverages">
<informationRequirement>
<requiredDecision href="#dish" />
</informationRequirement>
<!-- ... -->
</decision>
Input Data
An input data denotes information used as an input by one or more decisions.
It is represented by an inputData
element inside the definitions
element.
<definitions xmlns="http://www.omg.org/spec/DMN/20151101/dmn.xsd" id="dinnerDecisions" name="Dinner Decisions" namespace="http://camunda.org/schema/1.0/dmn">
<inputData id="guestsWithChildren" name="Guests with children?" />
<decision id="beverages" name="Beverages">
<informationRequirement>
<requiredInput href="#guestsWithChildren" />
</informationRequirement>
<!-- ... -->
</definitions>
Note that an input data has no execution semantics and is ignored by the Camunda DMN engine.
Knowledge Source
A knowledge source denotes an authority for a Decision.
It is represented by a knowledgeSource
element inside the definitions
element.
<definitions xmlns="http://www.omg.org/spec/DMN/20151101/dmn.xsd" id="dinnerDecisions" name="Dinner Decisions" namespace="http://camunda.org/schema/1.0/dmn">
<knowledgeSource id="cookbook" name="Men's Cookbook" />
<decision id="dish" name="Dish">
<authorityRequirement>
<requiredDecision href="#cookbook" />
</authorityRequirement>
<!-- ... -->
</definitions>
Note that a knowledge source has no execution semantics and is ignored by the Camunda DMN engine.