BPMN-OS
BPMN for optimization and simulation
Loading...
Searching...
No Matches
StaticScenario.h
Go to the documentation of this file.
1#ifndef BPMNOS_Model_StaticScenario_H
2#define BPMNOS_Model_StaticScenario_H
3
4#include "Scenario.h"
5
6namespace BPMNOS::Model {
7
8class StaticDataProvider;
9
10/**
11 * @brief A scenario implementation where all data is known from the start.
12 *
13 * StaticScenario is optimized for cases where all instance data and attribute
14 * values are known at time 0. The currentTime parameter is ignored in query methods.
15 */
16class StaticScenario : public Scenario {
17 friend class StaticDataProvider;
18
19public:
20 StaticScenario(const Model* model, BPMNOS::number earliestInstantiationTime, BPMNOS::number latestInstantiationTime, const std::unordered_map< const Attribute*, BPMNOS::number >& globalValueMap);
21
23 bool isCompleted(const BPMNOS::number currentTime) const override;
24
25 std::vector< std::tuple<const BPMN::Process*, BPMNOS::Values, BPMNOS::Values> > getCurrentInstantiations(const BPMNOS::number currentTime) const override;
26
27 std::vector< const InstanceData* > getCreatedInstances(const BPMNOS::number currentTime) const override;
28 std::vector< const InstanceData* > getKnownInstances(const BPMNOS::number currentTime) const override;
29
30 std::optional<BPMNOS::number> getKnownValue(const Scenario::InstanceData* instance, const BPMNOS::Model::Attribute* attribute, const BPMNOS::number currentTime) const override;
31 std::optional<BPMNOS::number> getKnownValue(const BPMNOS::number instanceId, const BPMNOS::Model::Attribute* attribute, const BPMNOS::number currentTime) const override;
32
33 std::optional<BPMNOS::Values> getKnownValues(const BPMNOS::number instanceId, const BPMN::Node* node, const BPMNOS::number currentTime) const override;
34 std::optional<BPMNOS::Values> getKnownData(const BPMNOS::number instanceId, const BPMN::Node* node, const BPMNOS::number currentTime) const override;
35
36protected:
37 Values getKnownInitialStatus(const InstanceData*, const BPMNOS::number time) const override;
38 Values getKnownInitialData(const InstanceData*, const BPMNOS::number time) const override;
39
40 void addInstance(const BPMN::Process* process, const BPMNOS::number instanceId, BPMNOS::number instantiationTime);
41 void setValue(const BPMNOS::number instanceId, const Attribute* attribute, std::optional<BPMNOS::number> value);
42
43 std::unordered_map<size_t, InstanceData> instances;
46};
47
48} // namespace BPMNOS::Model
49
50#endif // BPMNOS_Model_StaticScenario_H
Represents a BPMN model with all its processes.
Definition Model.h:22
Abstract base class for scenarios holding data for all BPMN instances.
Definition Scenario.h:21
const Model * model
Pointer to the BPMN model.
Definition Scenario.h:148
Class representing a data provider for static BPMN instance data.
A scenario implementation where all data is known from the start.
std::unordered_map< size_t, InstanceData > instances
std::optional< BPMNOS::number > getKnownValue(const Scenario::InstanceData *instance, const BPMNOS::Model::Attribute *attribute, const BPMNOS::number currentTime) const override
Method returning a known value of an attribute.
std::vector< const InstanceData * > getKnownInstances(const BPMNOS::number currentTime) const override
Method returning a vector of all instances that have been created or are known for sure until the giv...
void setValue(const BPMNOS::number instanceId, const Attribute *attribute, std::optional< BPMNOS::number > value)
std::vector< const InstanceData * > getCreatedInstances(const BPMNOS::number currentTime) const override
Method returning a vector of all instances that have been created until the given time.
void addInstance(const BPMN::Process *process, const BPMNOS::number instanceId, BPMNOS::number instantiationTime)
BPMNOS::number earliestInstantiationTime
std::optional< BPMNOS::Values > getKnownValues(const BPMNOS::number instanceId, const BPMN::Node *node, const BPMNOS::number currentTime) const override
Method returning all known values of new attributes.
BPMNOS::number latestInstantiationTime
std::optional< BPMNOS::Values > getKnownData(const BPMNOS::number instanceId, const BPMN::Node *node, const BPMNOS::number currentTime) const override
Method returning all known values of new attributes.
Values getKnownInitialData(const InstanceData *, const BPMNOS::number time) const override
Method returning the initial data attributes for process instantiation.
bool isCompleted(const BPMNOS::number currentTime) const override
Method returning true if the currentTime exceeds the completion time.
BPMNOS::number getEarliestInstantiationTime() const override
Method returning the time of the earliest instantiation.
StaticScenario(const Model *model, BPMNOS::number earliestInstantiationTime, BPMNOS::number latestInstantiationTime, const std::unordered_map< const Attribute *, BPMNOS::number > &globalValueMap)
std::vector< std::tuple< const BPMN::Process *, BPMNOS::Values, BPMNOS::Values > > getCurrentInstantiations(const BPMNOS::number currentTime) const override
Method returning a vector of all instances that are known to be instantiated at the given time.
Values getKnownInitialStatus(const InstanceData *, const BPMNOS::number time) const override
Method returning the initial status attributes for process instantiation.
Base class for all nodes in a BPMN model.
Definition bpmn++.h:16444
BPMNOS_NUMBER_TYPE number
Definition Number.h:50