1#ifndef BPMNOS_Execution_FlattenedGraph_H
2#define BPMNOS_Execution_FlattenedGraph_H
4#include <unordered_map>
39 std::optional< std::pair<Vertex&, Vertex&> >
parent;
40 std::vector< std::pair<const BPMN::SequenceFlow*, Vertex&> >
inflows;
41 std::vector< std::pair<const BPMN::SequenceFlow*, Vertex&> >
outflows;
43 std::vector< std::reference_wrapper<Vertex> >
successors;
44 std::vector< std::reference_wrapper<Vertex> >
senders;
45 std::vector< std::reference_wrapper<Vertex> >
recipients;
46 std::vector< std::reference_wrapper<Vertex> >
dataOwners;
48 std::pair<const Vertex&, const Vertex&>
performer()
const ;
59 std::unordered_map< const BPMN::Node*, std::unordered_map< BPMNOS::number, std::vector< std::reference_wrapper<Vertex> > > >
vertexMap;
71 std::vector< std::tuple<const BPMN::EventSubProcess*, Vertex&, Vertex&, unsigned int, Vertex*> > nonInterruptingEventSubProcesses;
72 std::unordered_map<const BPMN::FlowNode*, std::vector< std::pair<Vertex&, Vertex&> > > sendingVertices;
73 std::unordered_map<const BPMN::FlowNode*, std::vector< std::pair<Vertex&, Vertex&> > > receivingVertices;
76 std::unordered_map<const Vertex*, std::vector< std::pair<const Vertex&, const Vertex&> > >
sequentialActivities;
77 std::unordered_map<const Vertex*, std::vector< std::pair<const Vertex&, const Vertex&> > >
dataModifiers;
std::pair< const Vertex &, const Vertex & > performer() const
Container holding all entry vertices of nodes owning at least one data attribute.
std::optional< std::pair< Vertex &, Vertex & > > parent
std::vector< std::pair< const BPMN::SequenceFlow *, Vertex & > > inflows
Parent vertices.
std::vector< std::reference_wrapper< Vertex > > successors
Container holding predecessors according to the execution logic (excl. sequence flows)
Vertex(const Vertex &)=delete
std::vector< std::reference_wrapper< Vertex > > recipients
Container holding all possible vertices sending a message (or the message delivery notfication for a ...
std::vector< std::reference_wrapper< Vertex > > dataOwners
Container holding all possible vertices receiving a message (or the message delivery notfication for ...
Vertex & operator=(Vertex &&)=delete
Vertex & operator=(const Vertex &)=delete
bool entry() const
Returns a unique reference of the vertex.
std::pair< const Vertex &, const Vertex & > dataOwner(const BPMNOS::Model::Attribute *attribute) const
Returns the vertices of the performer of a sequential activity vertex.
std::vector< std::pair< const BPMN::SequenceFlow *, Vertex & > > outflows
Container holding vertices connecting by an incoming sequence flow.
std::string reference() const
Returns the vertices of the owner of a data attribute.
std::vector< std::reference_wrapper< Vertex > > predecessors
Container holding vertices connecting by an outgoing sequence flow.
const BPMNOS::number rootId
const BPMNOS::number instanceId
std::vector< std::reference_wrapper< Vertex > > senders
Container holding successors according to the execution logic (excl. sequence flows)
Represents a graph containing all BPMN nodes that may receive a token during execution of a scenario.
void addInstance(const BPMNOS::Model::Scenario::InstanceData *instance)
Map holding entry and exit vertices of each possible instantiation of a node.
std::unordered_map< const Vertex *, std::vector< std::pair< const Vertex &, const Vertex & > > > dataModifiers
Container allowing to look up vertices of sequential activities given a pointer to the entry vertex o...
std::deque< Vertex > vertices
Container holding entry vertices of all process instances.
std::unordered_map< const Vertex *, std::vector< std::pair< const Vertex &, const Vertex & > > > sequentialActivities
const BPMNOS::Model::Scenario * scenario
std::vector< std::reference_wrapper< Vertex > > initialVertices
std::unordered_map< const BPMN::Node *, std::unordered_map< BPMNOS::number, std::vector< std::reference_wrapper< Vertex > > > > vertexMap
Container holding entry and exit vertices of each possible instantiation of a node.
std::vector< std::pair< const Vertex &, const Vertex & > > globalModifiers
Container allowing to look up vertices of tasks modifying data attributes given a pointer to the entr...
FlattenedGraph(const BPMNOS::Model::Scenario *scenario)
The Scenario class holds data for all BPMN instances.
T * represents()
Attempts to cast the element to the specified type T.
Base class for all nodes in a BPMN model.
Base class for BPMN elements that may contain a ChildNode elements.
BPMNOS_NUMBER_TYPE number