BPMN-OS
BPMN for optimization and simulation
Loading...
Searching...
No Matches
Timer.cpp
Go to the documentation of this file.
1#include "Timer.h"
2#include "ExtensionElements.h"
6
7using namespace BPMNOS::Model;
8
10 : BPMN::ExtensionElements( baseElement )
11 , parent(parent)
12 , attributeRegistry(parent->extensionElements->as<BPMNOS::Model::ExtensionElements>()->attributeRegistry)
13{
14 if ( element ) {
16 if ( parameter.name.value.value == "trigger" ) {
17 trigger = std::make_unique<Parameter>(&parameter,attributeRegistry);
18 }
19 }
20 }
21}
22
23template <typename DataType>
24BPMNOS::number Timer::earliest(const BPMNOS::Values& status, const DataType& data, const BPMNOS::Values& globals) const {
25 if ( trigger->expression ) {
26 auto value = trigger->expression->execute(status,data,globals);
27 if ( value.has_value() ) {
28 return value.value();
29 }
30 }
31 // return current time if no trigger value is available
33}
34
35template BPMNOS::number Timer::earliest<BPMNOS::Values>(const BPMNOS::Values& status, const BPMNOS::Values& data, const BPMNOS::Values& globals) const;
36template BPMNOS::number Timer::earliest<BPMNOS::SharedValues>(const BPMNOS::Values& status, const BPMNOS::SharedValues& data, const BPMNOS::Values& globals) const;
Class holding extension elements representing execution data for nodes.
Represents a BPMN model with all its processes.
Definition Model.h:21
std::unique_ptr< const Expression > expression
Definition Parameter.h:24
BPMNOS::number earliest(const BPMNOS::Values &status, const DataType &data, const BPMNOS::Values &globals) const
Definition Timer.cpp:24
Timer(XML::bpmn::tBaseElement *baseElement, BPMN::Scope *parent)
Definition Timer.cpp:9
const AttributeRegistry & attributeRegistry
Definition Timer.h:20
std::unique_ptr< BPMNOS::Model::Parameter > trigger
Definition Timer.h:21
std::vector< std::reference_wrapper< T > > get()
Returns a vector of elements of type T embedded within a container of type T.
Definition bpmn++.h:16367
XML::bpmn::tExtensionElements * element
Definition bpmn++.h:16362
Base class for BPMN elements that may contain a ChildNode elements.
Definition bpmn++.h:16510
BPMNOS_NUMBER_TYPE number
Definition Number.h:42
The BPMN namespace contains linked classes representing a BPMN model.
Definition bpmn++.h:16221