BPMN-OS
BPMN for optimization and simulation
Loading...
Searching...
No Matches
Gatekeeper.cpp
Go to the documentation of this file.
1#include "Gatekeeper.h"
2#include "ExtensionElements.h"
5
6using namespace BPMNOS::Model;
7
9 : BPMN::ExtensionElements( baseElement )
10 , parent(parent)
11{
14 try {
15 conditions.push_back(std::make_unique<Restriction>(&condition,attributeRegistry));
16 }
17 catch ( const std::exception& error ) {
18 throw std::runtime_error("Gatekeeper: illegal parameters for condition '" + (std::string)condition.id.value + "'.\n" + error.what());
19 }
20 }
21}
22
23template <typename DataType>
24bool Gatekeeper::conditionsSatisfied(const BPMNOS::Values& status, const DataType& data, const BPMNOS::Values& globals) const {
25 for ( auto& condition : conditions ) {
26 if ( !condition->isSatisfied(status,data,globals) ) {
27 return false;
28 }
29 }
30 return true;
31}
32
33template bool Gatekeeper::conditionsSatisfied<BPMNOS::Values>(const BPMNOS::Values& status, const BPMNOS::Values& data, const BPMNOS::Values& globals) const;
34template bool Gatekeeper::conditionsSatisfied<BPMNOS::SharedValues>(const BPMNOS::Values& status, const BPMNOS::SharedValues& data, const BPMNOS::Values& globals) const;
Class holding extension elements representing execution data for nodes.
AttributeRegistry attributeRegistry
Registry allowing to look up all status and data attributes by their names.
std::vector< std::unique_ptr< Restriction > > conditions
Definition Gatekeeper.h:21
const BPMN::Scope * parent
Definition Gatekeeper.h:20
bool conditionsSatisfied(const BPMNOS::Values &status, const DataType &data, const BPMNOS::Values &globals) const
Gatekeeper(XML::bpmn::tBaseElement *baseElement, BPMN::Scope *parent)
Definition Gatekeeper.cpp:8
std::unique_ptr< ExtensionElements > extensionElements
Definition bpmn++.h:16299
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
Base class for BPMN elements that may contain a ChildNode elements.
Definition bpmn++.h:16510
The BPMN namespace contains linked classes representing a BPMN model.
Definition bpmn++.h:16221