BPMN-OS
BPMN for optimization and simulation
Loading...
Searching...
No Matches
Message.h
Go to the documentation of this file.
1#ifndef BPMNOS_Execution_Message_H
2#define BPMNOS_Execution_Message_H
3
4#include <vector>
5#include <string>
6#include <memory>
7#include <bpmn++.h>
8#include "Observable.h"
11#include <nlohmann/json.hpp>
12
13namespace BPMNOS::Execution {
14
15class Token;
16
17class Message;
18typedef std::vector< std::shared_ptr<Message> > Messages;
19
20class Message : public Observable, public std::enable_shared_from_this<Message> {
21public:
22 constexpr Type getObservableType() const override { return Type::Message; };
23 Message(Token* token, size_t index);
24 enum class State { CREATED, DELIVERED, WITHDRAWN }; ///< The states that a message can be in
25private:
26 static inline std::string stateName[] = { "CREATED", "DELIVERED", "WITHDRAWN" };
27public:
31 std::optional< BPMNOS::number > recipient;
34
35 bool matches(const BPMNOS::Values& otherHeader) const; ///< Returns true if headers have the same size and all values that are defined are the same.
36
37 template <typename DataType>
38 void apply(const BPMN::FlowNode* node, const BPMNOS::Model::AttributeRegistry& attributeRegistry, BPMNOS::Values& status, DataType& data, BPMNOS::Values& globals) const; ///< Updates the status at a node based on the message content.
39
40 nlohmann::ordered_json jsonify() const;
41};
42
43} // namespace BPMNOS::Execution
44
45#endif // BPMNOS_Execution_Message_H
46
bool matches(const BPMNOS::Values &otherHeader) const
Returns true if headers have the same size and all values that are defined are the same.
Definition Message.cpp:34
nlohmann::ordered_json jsonify() const
Definition Message.cpp:48
void apply(const BPMN::FlowNode *node, const BPMNOS::Model::AttributeRegistry &attributeRegistry, BPMNOS::Values &status, DataType &data, BPMNOS::Values &globals) const
Updates the status at a node based on the message content.
Definition Message.cpp:92
VariedValueMap contentValueMap
Definition Message.h:33
std::optional< BPMNOS::number > recipient
Definition Message.h:31
constexpr Type getObservableType() const override
Definition Message.h:22
const BPMN::FlowNode * origin
Definition Message.h:29
BPMNOS::Values header
Definition Message.h:32
Represents a token running through a (sub)process.
Definition Token.h:35
Base class for BPMN elements that may contain incoming and outgoing sequence flows.
Definition bpmn++.h:16670
std::vector< std::shared_ptr< Message > > Messages
Definition Message.h:18
std::unordered_map< std::string, std::variant< std::optional< number >, std::string > > VariedValueMap
Definition Number.h:59