1#ifndef BPMNOS_Model_ExtensionElements_H
2#define BPMNOS_Model_ExtensionElements_H
38 std::vector< std::unique_ptr<Choice> >
choices;
45 std::vector< std::unique_ptr<Attribute> >
data;
58 std::optional< std::unique_ptr<Parameter> >
loopIndex;
64 template <
typename DataType>
67 template <
typename DataType>
70 template <
typename DataType>
73 template <
typename DataType>
78 template <
typename DataType>
81 template <
typename DataType>
84 template <
typename DataType>
87 template <
typename DataType>
Class holding extension elements representing execution data for nodes.
std::vector< std::unique_ptr< Operator > > operators
std::vector< const Attribute * > attributes
std::set< const Attribute * > operatorDependencies
Set containing all input attributes influencing the result of applying all operators.
std::vector< std::unique_ptr< Attribute > > attributes
Vector containing new status attributes declared for the node.
std::vector< std::unique_ptr< Restriction > > conditions
Vector containing conditions that may be provided for conditional events.
bool feasibleExit(const BPMNOS::Values &status, const DataType &data, const BPMNOS::Values &globals) const
void computeInitialValues(BPMNOS::number currentTime, BPMNOS::Values &status, DataType &data, BPMNOS::Values &globals) const
bool fullScopeRestrictionsSatisfied(const BPMNOS::Values &status, const DataType &data, const BPMNOS::Values &globals) const
struct BPMNOS::Model::ExtensionElements::@0 dataUpdate
Struct containing data attributes that are modified through operators and a flag indicating whether a...
BPMNOS::number getObjective(const BPMNOS::Values &status, const DataType &data, const BPMNOS::Values &globals) const
Returns the total objective of all attributes provided.
std::set< const Attribute * > exitDependencies
Set containing all input attributes influencing the exit feasibility.
bool isInstantaneous
Boolean indicating whether operators may modify timestamp.
std::optional< std::unique_ptr< Guidance > > messageDeliveryGuidance
std::optional< std::unique_ptr< Guidance > > choiceGuidance
std::optional< std::unique_ptr< Guidance > > exitGuidance
bool satisfiesInheritedRestrictions(const BPMNOS::Values &status, const DataType &data, const BPMNOS::Values &globals) const
ExtensionElements(XML::bpmn::tBaseElement *baseElement, const AttributeRegistry attributeRegistry_, BPMN::Scope *parent=nullptr, std::vector< std::reference_wrapper< XML::bpmnos::tAttribute > >={})
std::optional< std::unique_ptr< Parameter > > loopCardinality
Number of instances to be generated.
std::optional< std::unique_ptr< Guidance > > entryGuidance
bool feasibleEntry(const BPMNOS::Values &status, const DataType &data, const BPMNOS::Values &globals) const
BPMNOS::number getContributionToObjective(const BPMNOS::Values &status, const DataType &data, const BPMNOS::Values &globals) const
Returns the contribution to the objective by the attributes declared for the node.
std::optional< std::unique_ptr< Parameter > > loopIndex
Attribute holding the automatically generated loop index.
std::optional< std::unique_ptr< Parameter > > loopCondition
Boolean attribute indicating whether an exit condition holds.
std::vector< const BPMN::FlowNode * > messageCandidates
Vector containing all potential sending or receiving nodes of a message.
std::set< const Attribute * > choiceDependencies
Set containing all input attributes influencing the result of making choices.
std::vector< std::unique_ptr< Choice > > choices
std::set< const Attribute * > entryDependencies
Set containing all input attributes influencing the entry feasibility.
void applyOperators(BPMNOS::Values &status, DataType &data, BPMNOS::Values &globals) const
const MessageDefinition * getMessageDefinition(size_t index) const
std::vector< std::unique_ptr< Restriction > > restrictions
Vector containing new restrictions provided for the node.
AttributeRegistry attributeRegistry
Registry allowing to look up all status and data attributes by their names.
bool hasSequentialPerformer
Boolean indicating whether element has a performer with name "Sequential".
std::vector< std::unique_ptr< MessageDefinition > > messageDefinitions
Vector containing message definition(s) provided for the node.
std::vector< std::unique_ptr< Attribute > > data
Vector containing data attributes declared for data objects within the node's scope.
const BPMN::Scope * parent
std::optional< std::unique_ptr< Parameter > > loopMaximum
Maximum number of iterations of a standard loop (requires loopIndex).
Base class for extension elements that may be provided for a BPMN element.
BaseElement * baseElement
Reference to the base element the extension elements are bound to.
Base class for BPMN elements that may contain a ChildNode elements.
BPMNOS_NUMBER_TYPE number
static constexpr size_t Instance
static constexpr size_t Timestamp