1#ifndef BPMNOS_Model_Scenario_H
2#define BPMNOS_Model_Scenario_H
7#include <unordered_map>
16typedef std::unordered_map< const BPMN::Process*, std::unordered_map< std::string, const Attribute* > >
DataInput;
27 std::unordered_map< const Attribute*, std::optional<BPMNOS::number> >
values;
139 [[maybe_unused]]
const Values& status,
140 [[maybe_unused]]
const Values& data,
Represents a BPMN model with all its processes.
Abstract base class for scenarios holding data for all BPMN instances.
virtual std::optional< BPMNOS::number > getKnownValue(const BPMNOS::number instanceId, const BPMNOS::Model::Attribute *attribute, const BPMNOS::number currentTime) const =0
Method returning a known value of an attribute.
virtual BPMNOS::number getEarliestInstantiationTime() const =0
Method returning the time of the earliest instantiation.
static constexpr char delimiters[]
Delimiters used for disambiguation of identifiers of non-interrupting event subprocesses and multi-in...
virtual std::vector< const InstanceData * > getCreatedInstances(const BPMNOS::number currentTime) const =0
Method returning a vector of all instances that have been created until the given time.
virtual std::optional< BPMNOS::Values > getKnownValues(const BPMNOS::number instanceId, const BPMN::Node *node, const BPMNOS::number currentTime) const =0
Method returning all known values of new attributes.
virtual void setTaskCompletionStatus(const BPMNOS::number instanceId, const BPMN::Node *task, BPMNOS::Values status) const
Store the completion status when a task enters BUSY state.
virtual BPMNOS::Values getTaskCompletionStatus(const BPMNOS::number instanceId, const BPMN::Node *task) const
Get the completion status for a task.
virtual ~Scenario()=default
const Model * getModel() const
Method returning the model.
virtual void initializeArrivalData(BPMNOS::number instanceId, const BPMN::Node *node, const Values &status, const Values &data, const Values &globals) const
Initialize arrival data when a token arrives at an activity.
std::map< std::pair< size_t, const BPMN::Node * >, BPMNOS::Values > taskCompletionStatus
Stored completion status per (instanceId, task)
virtual std::vector< const InstanceData * > getKnownInstances(const BPMNOS::number currentTime) const =0
Method returning a vector of all instances that have been created or are known for sure until the giv...
virtual bool isCompleted(const BPMNOS::number currentTime) const =0
Method returning true if the currentTime exceeds the completion time.
virtual Values getKnownInitialData(const InstanceData *, const BPMNOS::number time) const =0
Method returning the initial data attributes for process instantiation.
virtual std::vector< std::tuple< const BPMN::Process *, BPMNOS::Values, BPMNOS::Values > > getCurrentInstantiations(const BPMNOS::number currentTime) const =0
Method returning a vector of all instances that are known to be instantiated at the given time.
const Model * model
Pointer to the BPMN model.
virtual std::optional< BPMNOS::number > getKnownValue(const Scenario::InstanceData *instance, const BPMNOS::Model::Attribute *attribute, const BPMNOS::number currentTime) const =0
Method returning a known value of an attribute.
virtual std::optional< BPMNOS::Values > getKnownData(const BPMNOS::number instanceId, const BPMN::Node *node, const BPMNOS::number currentTime) const =0
Method returning all known values of new attributes.
virtual Values getKnownInitialStatus(const InstanceData *, const BPMNOS::number time) const =0
Method returning the initial status attributes for process instantiation.
Base class for all nodes in a BPMN model.
std::unordered_map< const BPMN::Process *, std::unordered_map< std::string, const Attribute * > > DataInput
BPMNOS_NUMBER_TYPE number
std::unordered_map< const Attribute *, std::optional< BPMNOS::number > > values
Attribute values.
const BPMN::Process * process
BPMNOS::number instantiationTime
Time at which the instance is instantiated.
size_t id
Instance identifier.