BPMN-OS
BPMN for optimization and simulation
Loading...
Searching...
No Matches
StaticDataProvider.h
Go to the documentation of this file.
1#ifndef BPMNOS_Model_StaticDataProvider_H
2#define BPMNOS_Model_StaticDataProvider_H
3
4#include "DataProvider.h"
6#include <memory>
7#include <vector>
8
9namespace BPMNOS::Model {
10
11/**
12 * @brief Class representing a data provider for static BPMN instance data.
13 *
14 * The StaticDataProvider class is responsible for providing and managing instance data
15 * for BPMN processes.
16 * */
18public:
19 /**
20 * @brief Constructor for StaticDataProvider.
21 *
22 * @param modelFile The file path to the BPMN model file.
23 * @param instanceFileOrString The file path to the instance data file or a string containing the data.
24 */
25 StaticDataProvider(const std::string& modelFile, const std::string& instanceFileOrString);
26 /**
27 * @brief Constructor for StaticDataProvider.
28 *
29 * @param modelFile The file path to the BPMN model file.
30 * @param folders The folders containing lookup tables.
31 * @param instanceFileOrString The file path to the instance data file or a string containing the data.
32 */
33 StaticDataProvider(const std::string& modelFile, const std::vector<std::string>& folders, const std::string& instanceFileOrString);
34 ~StaticDataProvider() override = default;
35 std::unique_ptr<Scenario> createScenario(unsigned int scenarioId = 0) override;
36protected:
37 /// Protected constructor that skips readInstances() - for derived classes
38 StaticDataProvider(const std::string& modelFile, const std::vector<std::string>& folders);
39
40 std::unique_ptr<CSVReader> reader;
41 void readInstances();
42
47 std::unordered_map< const Attribute*, BPMNOS::number > data;
48 };
49 std::unordered_map< long unsigned int, StaticInstanceData > instances;
50 std::unordered_map< const Attribute*, BPMNOS::number > globalValueMap;
53
54 void ensureDefaultValue(StaticInstanceData& instance, const std::string attributeId, std::optional<BPMNOS::number> value = std::nullopt);
55 std::pair<std::string, std::string> parseInitialization(const std::string& initialization) const;
56 virtual BPMNOS::number evaluateExpression(const std::string& expression) const;
57};
58
59} // namespace BPMNOS::Model
60
61#endif // BPMNOS_Model_StaticDataProvider_H
Abstract base class representing a data provider for BPMN instance data.
Class representing a data provider for static BPMN instance data.
std::pair< std::string, std::string > parseInitialization(const std::string &initialization) const
std::unordered_map< const Attribute *, BPMNOS::number > globalValueMap
virtual BPMNOS::number evaluateExpression(const std::string &expression) const
~StaticDataProvider() override=default
std::unique_ptr< Scenario > createScenario(unsigned int scenarioId=0) override
StaticDataProvider(const std::string &modelFile, const std::string &instanceFileOrString)
Constructor for StaticDataProvider.
std::unique_ptr< CSVReader > reader
std::unordered_map< long unsigned int, StaticInstanceData > instances
void ensureDefaultValue(StaticInstanceData &instance, const std::string attributeId, std::optional< BPMNOS::number > value=std::nullopt)
BPMNOS_NUMBER_TYPE number
Definition Number.h:50
std::unordered_map< const Attribute *, BPMNOS::number > data