BPMN-OS
BPMN for optimization and simulation
Loading...
Searching...
No Matches
BPMNOS::Model::StochasticScenario Class Reference

Detailed Description

Definition at line 57 of file StochasticScenario.h.

#include <StochasticScenario.h>

Inheritance diagram for BPMNOS::Model::StochasticScenario:

Public Member Functions

 StochasticScenario (const Model *model, BPMNOS::number earliestInstantiationTime, BPMNOS::number latestInstantiationTime, const std::unordered_map< const Attribute *, BPMNOS::number > &globalValueMap, unsigned int seed=0)
 
BPMNOS::number getEarliestInstantiationTime () const override
 Method returning the time of the earliest instantiation.
 
bool isCompleted (const BPMNOS::number currentTime) const override
 Method returning true if the currentTime exceeds the completion time.
 
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.
 
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.
 
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 given time.
 
std::optional< BPMNOS::numbergetKnownValue (const Scenario::InstanceData *instance, const BPMNOS::Model::Attribute *attribute, const BPMNOS::number currentTime) const override
 Method returning a known value of an attribute.
 
std::optional< BPMNOS::numbergetKnownValue (const BPMNOS::number instanceId, const BPMNOS::Model::Attribute *attribute, const BPMNOS::number currentTime) const override
 Method returning a known value of an attribute.
 
std::optional< BPMNOS::ValuesgetKnownValues (const BPMNOS::number instanceId, const BPMN::Node *node, const BPMNOS::number currentTime) const override
 Method returning all known values of new attributes.
 
std::optional< BPMNOS::ValuesgetKnownData (const BPMNOS::number instanceId, const BPMN::Node *node, const BPMNOS::number currentTime) const override
 Method returning all known values of new attributes.
 
void setTaskCompletionStatus (const BPMNOS::number instanceId, const BPMN::Node *task, BPMNOS::Values status) const override
 Store the completion status when a task enters BUSY state.
 
void revealData (BPMNOS::number currentTime) const
 
void initializeArrivalData (BPMNOS::number instanceId, const BPMN::Node *node, const Values &status, const Values &data, const Values &globals) const override
 Initialize arrival data when a token arrives at an activity.
 
- Public Member Functions inherited from BPMNOS::Model::Scenario
virtual ~Scenario ()=default
 
const ModelgetModel () const
 Method returning the model.
 
virtual BPMNOS::Values getTaskCompletionStatus (const BPMNOS::number instanceId, const BPMN::Node *task) const
 Get the completion status for a task.
 

Protected Member Functions

Values getKnownInitialStatus (const InstanceData *, const BPMNOS::number time) const override
 Method returning the initial status attributes for process instantiation.
 
Values getKnownInitialData (const InstanceData *, const BPMNOS::number time) const override
 Method returning the initial data attributes for process instantiation.
 
void addInstance (const BPMN::Process *process, const BPMNOS::number instanceId, BPMNOS::number instantiationTime)
 
void setValue (const BPMNOS::number instanceId, const Attribute *attribute, std::optional< BPMNOS::number > value)
 
void setDisclosure (const BPMNOS::number instanceId, const BPMN::Node *node, BPMNOS::number disclosureTime)
 
void addPendingDisclosure (const BPMNOS::number instanceId, StochasticPendingDisclosure &&pending)
 
void addCompletionExpression (const BPMNOS::number instanceId, const BPMN::Node *task, CompletionExpression &&expr)
 
void addArrivalExpression (const BPMNOS::number instanceId, const BPMN::Node *node, ArrivalExpression &&expr)
 
std::mt19937 & getRng (size_t instanceId, const BPMN::Node *node) const
 Get or create RNG for (instance, node) pair.
 
- Protected Member Functions inherited from BPMNOS::Model::Scenario

Protected Attributes

std::unordered_map< size_t, InstanceDatainstances
 
std::unordered_map< size_t, std::unordered_map< const BPMN::Node *, BPMNOS::number > > disclosure
 Instance ID -> Node -> disclosure time.
 
std::unordered_map< size_t, std::vector< StochasticPendingDisclosure > > pendingDisclosures
 Instance ID -> pending disclosures.
 
std::set< std::pair< size_t, const Attribute * > > disclosedAttributes
 Track which attributes have been disclosed.
 
std::unordered_map< size_t, std::unordered_map< const BPMN::Node *, std::vector< ArrivalExpression > > > arrivalExpressions
 Arrival expressions per (instance, node)
 
std::unordered_map< size_t, std::unordered_map< const BPMN::Node *, std::vector< CompletionExpression > > > completionExpressions
 Completion expressions per (instance, node)
 
std::map< std::pair< size_t, const BPMN::Node * >, std::mt19937 > rngs
 Per (instance, node) RNG for reproducibility.
 
unsigned int scenarioSeed
 
BPMNOS::number earliestInstantiationTime
 
BPMNOS::number latestInstantiationTime
 
RandomDistributionFactoryrandomFactory = nullptr
 RandomDistributionFactory for expression evaluation (set by provider)
 

Friends

class StochasticDataProvider
 

Additional Inherited Members

- Public Attributes inherited from BPMNOS::Model::Scenario
BPMNOS::Values globals
 
std::map< std::pair< size_t, const BPMN::Node * >, BPMNOS::ValuestaskCompletionStatus
 Stored completion status per (instanceId, task)
 
const Modelmodel
 Pointer to the BPMN model.
 
- Static Public Attributes inherited from BPMNOS::Model::Scenario
static constexpr char delimiters [] = {'^','#'}
 Delimiters used for disambiguation of identifiers of non-interrupting event subprocesses and multi-instance activities.
 

Constructor & Destructor Documentation

◆ StochasticScenario()

StochasticScenario::StochasticScenario ( const Model * model,
BPMNOS::number earliestInstantiationTime,
BPMNOS::number latestInstantiationTime,
const std::unordered_map< const Attribute *, BPMNOS::number > & globalValueMap,
unsigned int seed = 0 )

Definition at line 8 of file StochasticScenario.cpp.

Member Function Documentation

◆ addArrivalExpression()

void StochasticScenario::addArrivalExpression ( const BPMNOS::number instanceId,
const BPMN::Node * node,
ArrivalExpression && expr )
protected

Definition at line 52 of file StochasticScenario.cpp.

◆ addCompletionExpression()

void StochasticScenario::addCompletionExpression ( const BPMNOS::number instanceId,
const BPMN::Node * task,
CompletionExpression && expr )
protected

Definition at line 46 of file StochasticScenario.cpp.

◆ addInstance()

void StochasticScenario::addInstance ( const BPMN::Process * process,
const BPMNOS::number instanceId,
BPMNOS::number instantiationTime )
protected

Definition at line 26 of file StochasticScenario.cpp.

◆ addPendingDisclosure()

void StochasticScenario::addPendingDisclosure ( const BPMNOS::number instanceId,
StochasticPendingDisclosure && pending )
protected

Definition at line 41 of file StochasticScenario.cpp.

◆ getCreatedInstances()

std::vector< const Scenario::InstanceData * > StochasticScenario::getCreatedInstances ( const BPMNOS::number currentTime) const
overridevirtual

Implements BPMNOS::Model::Scenario.

Definition at line 113 of file StochasticScenario.cpp.

◆ getCurrentInstantiations()

std::vector< std::tuple< const BPMN::Process *, BPMNOS::Values, BPMNOS::Values > > StochasticScenario::getCurrentInstantiations ( const BPMNOS::number currentTime) const
overridevirtual

Implements BPMNOS::Model::Scenario.

Definition at line 134 of file StochasticScenario.cpp.

◆ getEarliestInstantiationTime()

BPMNOS::number StochasticScenario::getEarliestInstantiationTime ( ) const
overridevirtual

Implements BPMNOS::Model::Scenario.

Definition at line 105 of file StochasticScenario.cpp.

◆ getKnownData()

std::optional< BPMNOS::Values > StochasticScenario::getKnownData ( const BPMNOS::number instanceId,
const BPMN::Node * node,
const BPMNOS::number currentTime ) const
overridevirtual

If at least one attribute value is not yet known, the method returns std::nullopt.

Implements BPMNOS::Model::Scenario.

Definition at line 237 of file StochasticScenario.cpp.

◆ getKnownInitialData()

BPMNOS::Values StochasticScenario::getKnownInitialData ( const InstanceData * ,
const BPMNOS::number time ) const
overrideprotectedvirtual

Used internally by getCurrentInstantiations to get process-level data attributes.

Implements BPMNOS::Model::Scenario.

Definition at line 162 of file StochasticScenario.cpp.

◆ getKnownInitialStatus()

BPMNOS::Values StochasticScenario::getKnownInitialStatus ( const InstanceData * ,
const BPMNOS::number time ) const
overrideprotectedvirtual

Used internally by getCurrentInstantiations to get process-level status attributes.

Implements BPMNOS::Model::Scenario.

Definition at line 153 of file StochasticScenario.cpp.

◆ getKnownInstances()

std::vector< const Scenario::InstanceData * > StochasticScenario::getKnownInstances ( const BPMNOS::number currentTime) const
overridevirtual

Implements BPMNOS::Model::Scenario.

Definition at line 124 of file StochasticScenario.cpp.

◆ getKnownValue() [1/2]

std::optional< BPMNOS::number > StochasticScenario::getKnownValue ( const BPMNOS::number instanceId,
const BPMNOS::Model::Attribute * attribute,
const BPMNOS::number currentTime ) const
overridevirtual

If the attribute value is not yet known, the method returns std::nullopt.

Implements BPMNOS::Model::Scenario.

Definition at line 213 of file StochasticScenario.cpp.

◆ getKnownValue() [2/2]

std::optional< BPMNOS::number > StochasticScenario::getKnownValue ( const Scenario::InstanceData * instance,
const BPMNOS::Model::Attribute * attribute,
const BPMNOS::number currentTime ) const
overridevirtual

If the attribute value is not yet known, the method returns std::nullopt.

Implements BPMNOS::Model::Scenario.

Definition at line 171 of file StochasticScenario.cpp.

◆ getKnownValues()

std::optional< BPMNOS::Values > StochasticScenario::getKnownValues ( const BPMNOS::number instanceId,
const BPMN::Node * node,
const BPMNOS::number currentTime ) const
overridevirtual

If at least one attribute value is not yet known, the method returns std::nullopt.

Implements BPMNOS::Model::Scenario.

Definition at line 220 of file StochasticScenario.cpp.

◆ getRng()

std::mt19937 & StochasticScenario::getRng ( size_t instanceId,
const BPMN::Node * node ) const
protected

Definition at line 94 of file StochasticScenario.cpp.

◆ initializeArrivalData()

void StochasticScenario::initializeArrivalData ( BPMNOS::number instanceId,
const BPMN::Node * node,
const Values & status,
const Values & data,
const Values & globals ) const
overridevirtual

Evaluates ARRIVAL expressions using the parent scope's context and stores the computed values. Called by ScenarioUpdater when token enters ARRIVED or CREATED state at an Activity.

Reimplemented from BPMNOS::Model::Scenario.

Definition at line 58 of file StochasticScenario.cpp.

◆ isCompleted()

bool StochasticScenario::isCompleted ( const BPMNOS::number currentTime) const
overridevirtual

Implements BPMNOS::Model::Scenario.

Definition at line 109 of file StochasticScenario.cpp.

◆ revealData()

void StochasticScenario::revealData ( BPMNOS::number currentTime) const

Definition at line 315 of file StochasticScenario.cpp.

◆ setDisclosure()

void StochasticScenario::setDisclosure ( const BPMNOS::number instanceId,
const BPMN::Node * node,
BPMNOS::number disclosureTime )
protected

Definition at line 36 of file StochasticScenario.cpp.

◆ setTaskCompletionStatus()

void StochasticScenario::setTaskCompletionStatus ( const BPMNOS::number instanceId,
const BPMN::Node * task,
BPMNOS::Values status ) const
overridevirtual

Evaluates COMPLETION expressions immediately and stores the final result. Uses per-(instance, node) RNG for reproducibility.

Reimplemented from BPMNOS::Model::Scenario.

Definition at line 254 of file StochasticScenario.cpp.

◆ setValue()

void StochasticScenario::setValue ( const BPMNOS::number instanceId,
const Attribute * attribute,
std::optional< BPMNOS::number > value )
protected

Definition at line 31 of file StochasticScenario.cpp.

Friends And Related Symbol Documentation

◆ StochasticDataProvider

friend class StochasticDataProvider
friend

Definition at line 58 of file StochasticScenario.h.

Member Data Documentation

◆ arrivalExpressions

std::unordered_map<size_t, std::unordered_map<const BPMN::Node*, std::vector<ArrivalExpression> > > BPMNOS::Model::StochasticScenario::arrivalExpressions
protected

Definition at line 132 of file StochasticScenario.h.

◆ completionExpressions

std::unordered_map<size_t, std::unordered_map<const BPMN::Node*, std::vector<CompletionExpression> > > BPMNOS::Model::StochasticScenario::completionExpressions
protected

Definition at line 135 of file StochasticScenario.h.

◆ disclosedAttributes

std::set<std::pair<size_t, const Attribute*> > BPMNOS::Model::StochasticScenario::disclosedAttributes
mutableprotected

Definition at line 129 of file StochasticScenario.h.

◆ disclosure

std::unordered_map<size_t, std::unordered_map<const BPMN::Node*, BPMNOS::number> > BPMNOS::Model::StochasticScenario::disclosure
protected

Definition at line 127 of file StochasticScenario.h.

◆ earliestInstantiationTime

BPMNOS::number BPMNOS::Model::StochasticScenario::earliestInstantiationTime
protected

Definition at line 141 of file StochasticScenario.h.

◆ instances

std::unordered_map<size_t, InstanceData> BPMNOS::Model::StochasticScenario::instances
mutableprotected

Definition at line 126 of file StochasticScenario.h.

◆ latestInstantiationTime

BPMNOS::number BPMNOS::Model::StochasticScenario::latestInstantiationTime
protected

Definition at line 142 of file StochasticScenario.h.

◆ pendingDisclosures

std::unordered_map<size_t, std::vector<StochasticPendingDisclosure> > BPMNOS::Model::StochasticScenario::pendingDisclosures
mutableprotected

Definition at line 128 of file StochasticScenario.h.

◆ randomFactory

RandomDistributionFactory* BPMNOS::Model::StochasticScenario::randomFactory = nullptr
mutableprotected

Definition at line 145 of file StochasticScenario.h.

◆ rngs

std::map<std::pair<size_t, const BPMN::Node*>, std::mt19937> BPMNOS::Model::StochasticScenario::rngs
mutableprotected

Definition at line 138 of file StochasticScenario.h.

◆ scenarioSeed

unsigned int BPMNOS::Model::StochasticScenario::scenarioSeed
protected

Definition at line 140 of file StochasticScenario.h.


The documentation for this class was generated from the following files: