9 ,
BPMN::FlowNode(task,parent)
10 ,
BPMN::Task(task,parent)
14template <
typename DataType>
23 std::vector<std::vector<BPMNOS::number>> alternativeChoices;
25 determineAlternatives(alternativeChoices,
extensionElements, statusCopy, dataCopy, globalsCopy, tmp, 0);
27 return alternativeChoices;
35void DecisionTask::determineAlternatives(
36 std::vector<std::vector<BPMNOS::number>>& alternatives,
41 std::vector<number>& choices,
44 assert(index < choices.size());
47 auto choose = [&](
number value) ->
void {
48 choices[index] = value;
49 choice->attributeRegistry.setValue(choice->attribute, status, data, globals, value);
50 if ( index + 1 == choices.size() ) {
51 alternatives.push_back(choices);
54 determineAlternatives(alternatives,
extensionElements, status, data, globals, choices, index + 1);
58 if ( !choice->enumeration.empty() || choice->multipleOf ) {
60 for (
auto value : choice->getEnumeration(status, data, globals) ) {
64 else if ( choice->lowerBound.has_value() && choice->upperBound.has_value() ) {
65 auto [min, max] = choice->getBounds(status, data, globals);
69 else if ( min < max ) {
std::vector< std::vector< number > > enumerateAlternatives(const BPMNOS::Values &status, const DataType &data, const BPMNOS::Values &globals) const
DecisionTask(XML::bpmn::tTask *task, BPMN::Scope *parent)
Class holding extension elements representing execution data for nodes.
std::unique_ptr< ExtensionElements > extensionElements
Base class for BPMN elements that may contain a ChildNode elements.
BPMNOS_NUMBER_TYPE number
The BPMN namespace contains linked classes representing a BPMN model.