Initial commit
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wfr/common/wfs/ActivityInstance.h>
|
||||
|
||||
namespace wfr {
|
||||
namespace wfs {
|
||||
|
||||
// Forward declarations
|
||||
class Activity;
|
||||
class AtomicActivityImplementation;
|
||||
|
||||
|
||||
class AssignActivityInstance: public wfr::wfs::ActivityInstance {
|
||||
|
||||
// Public functions
|
||||
public:
|
||||
AssignActivityInstance(Activity& baseActivity, wfr_id_t iterationID = 0) noexcept
|
||||
: ActivityInstance(baseActivity, iterationID) {}
|
||||
|
||||
virtual bool executePreExecutionHooks(bool earlyEvaluation) override;
|
||||
|
||||
virtual bool executeExecutionHook(bool earlyEvaluation) override;
|
||||
|
||||
virtual void notifyParent() noexcept;
|
||||
};
|
||||
|
||||
} /* namespace wfs */
|
||||
} /* namespace wfr */
|
||||
@@ -0,0 +1,33 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wfr/common/wfs/ActivityInstance.h>
|
||||
|
||||
namespace wfr {
|
||||
namespace wfs {
|
||||
|
||||
// Forward declarations
|
||||
class Activity;
|
||||
class AtomicActivityImplementation;
|
||||
|
||||
|
||||
class AtomicActivityInstance: public wfr::wfs::ActivityInstance {
|
||||
|
||||
// Mutable properties that need to be accessed via getter-/setter-functions.
|
||||
protected:
|
||||
bool _ownedByExecutionLayer = false;
|
||||
|
||||
// Public functions
|
||||
public:
|
||||
AtomicActivityInstance(Activity& baseActivity, wfr_id_t iterationID = 0) noexcept
|
||||
: ActivityInstance(baseActivity, iterationID) {}
|
||||
|
||||
virtual bool executePreExecutionHooks(bool earlyEvaluation) override;
|
||||
|
||||
bool ownedByExecutionLayer() const noexcept { return _ownedByExecutionLayer; }
|
||||
|
||||
void setOwnedByExecutionLayer(bool owned) noexcept { _ownedByExecutionLayer = owned; }
|
||||
};
|
||||
|
||||
} /* namespace wfs */
|
||||
} /* namespace wfr */
|
||||
@@ -0,0 +1,48 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wfr/common/wfs/ActivityInstance.h>
|
||||
|
||||
#include <map>
|
||||
|
||||
namespace wfr {
|
||||
|
||||
// Forward declaration
|
||||
namespace enactment {
|
||||
class WepBuilder;
|
||||
}
|
||||
|
||||
namespace wfs {
|
||||
|
||||
// Forward declarations
|
||||
class Activity;
|
||||
|
||||
|
||||
class CompositeActivityInstance: public wfr::wfs::ActivityInstance {
|
||||
friend class enactment::WepBuilder;
|
||||
|
||||
// Mutable properties that need to be accessed via getter-/setter-functions.
|
||||
protected:
|
||||
std::vector<ActivityInstance*> children;
|
||||
std::map<wfr_size_t, ActivityInstance*> childrenByInstanceID;
|
||||
std::map<wfr_size_t, std::vector<ActivityInstance*>> childrenByActivityID;
|
||||
wfr_size_t finishedChildrenCount = 0;
|
||||
|
||||
// Public functions
|
||||
public:
|
||||
CompositeActivityInstance(Activity& baseActivity, wfr_id_t iterationID = 0) noexcept
|
||||
: ActivityInstance(baseActivity, iterationID) {}
|
||||
|
||||
wfr_size_t getChildrenCount() const noexcept { return children.size(); }
|
||||
const std::vector<ActivityInstance*>& getChildren() const noexcept { return children; }
|
||||
ActivityInstance* getChild(wfr_id_t instanceID) const noexcept;
|
||||
ActivityInstance* getChild(wfr_id_t activityID, wfr_id_t iterationID) const noexcept;
|
||||
|
||||
|
||||
wfr_size_t getFinishedChildrenCount() const noexcept { return finishedChildrenCount; }
|
||||
|
||||
virtual void notifyChildHasFinished(ActivityInstance& ai) noexcept;
|
||||
};
|
||||
|
||||
} /* namespace wfs */
|
||||
} /* namespace wfr */
|
||||
@@ -0,0 +1,34 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wfr/common/wfs/instances/CompositeActivityInstance.h>
|
||||
|
||||
namespace wfr {
|
||||
namespace wfs {
|
||||
|
||||
// Forward declarations
|
||||
class Activity;
|
||||
|
||||
|
||||
class ConditionalActivityInstance: public CompositeActivityInstance {
|
||||
|
||||
// Mutable properties that need to be accessed via getter-/setter-functions.
|
||||
private:
|
||||
wfr_size_t activeExecutionBranchID = 0;
|
||||
|
||||
// Public functions
|
||||
public:
|
||||
ConditionalActivityInstance(Activity& baseActivity, wfr_id_t iterationID = 0) noexcept
|
||||
: CompositeActivityInstance(baseActivity, iterationID) {}
|
||||
|
||||
wfr_id_t getExecutionBranchID() const noexcept { return activeExecutionBranchID; }
|
||||
|
||||
void setExecutionBranchID(wfr_size_t branchId) noexcept { this->activeExecutionBranchID = branchId; }
|
||||
|
||||
virtual bool executePreExecutionHooks(bool earlyEvaluation) override;
|
||||
|
||||
virtual bool executePostExecutionHooks(bool earlyEvaluation) override;
|
||||
};
|
||||
|
||||
} /* namespace wfs */
|
||||
} /* namespace wfr */
|
||||
@@ -0,0 +1,26 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wfr/common/wfs/instances/CompositeActivityInstance.h>
|
||||
|
||||
namespace wfr {
|
||||
namespace wfs {
|
||||
|
||||
// Forward declarations
|
||||
class Activity;
|
||||
|
||||
|
||||
class ContainerActivityInstance: public CompositeActivityInstance {
|
||||
|
||||
// Public functions
|
||||
public:
|
||||
ContainerActivityInstance(Activity& baseActivity, wfr_id_t iterationID = 0) noexcept
|
||||
: CompositeActivityInstance(baseActivity, iterationID) {}
|
||||
|
||||
virtual bool executePreExecutionHooks(bool earlyEvaluation) override;
|
||||
|
||||
virtual bool executePostExecutionHooks(bool earlyEvalation) override;
|
||||
};
|
||||
|
||||
} /* namespace wfs */
|
||||
} /* namespace wfr */
|
||||
@@ -0,0 +1,50 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wfr/common/wfs/instances/LoopActivityInstance.h>
|
||||
|
||||
|
||||
namespace wfr {
|
||||
namespace wfs {
|
||||
|
||||
// Forward declarations
|
||||
class Activity;
|
||||
|
||||
|
||||
class ForLoopActivityInstance: public LoopActivityInstance {
|
||||
|
||||
// Mutable properties that need to be accessed via getter-/setter-functions.
|
||||
private:
|
||||
wfr_size_t loopCounterStart = 0;
|
||||
wfr_size_t loopCounterStep = 1;
|
||||
wfr_size_t loopCounterMax = 0;
|
||||
bool loopCounterValueSet = false;
|
||||
|
||||
// Public functions
|
||||
public:
|
||||
ForLoopActivityInstance(Activity& baseActivity, bool isParallel, wfr_id_t iterationID = 0) noexcept
|
||||
: LoopActivityInstance(baseActivity, isParallel, iterationID) {}
|
||||
|
||||
|
||||
void setLoopCounter(wfr_size_t start, wfr_size_t step, wfr_size_t max);
|
||||
|
||||
wfr_size_t getLoopCounterStart() const noexcept { return loopCounterStart; }
|
||||
|
||||
wfr_size_t getLoopCounterStep() const noexcept { return loopCounterStep; }
|
||||
|
||||
wfr_size_t getLoopCounterMax() const noexcept { return loopCounterMax; }
|
||||
|
||||
bool isLoopCounterValueAvailable() const noexcept { return loopCounterValueSet; }
|
||||
|
||||
wfr_size_t getLoopCounterValue(wfr_id_t iterationID) const noexcept { return loopCounterStart + (iterationID * loopCounterStep); }
|
||||
|
||||
|
||||
virtual void notifyChildHasFinished(ActivityInstance& ai) noexcept;
|
||||
|
||||
virtual bool executePreExecutionHooks(bool earlyEvaluation) override;
|
||||
|
||||
virtual bool executePostExecutionHooks(bool earlyEvaluation) override;
|
||||
};
|
||||
|
||||
} /* namespace wfs */
|
||||
} /* namespace wfr */
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wfr/common/wfs/instances/CompositeActivityInstance.h>
|
||||
#include <vector>
|
||||
|
||||
namespace wfr {
|
||||
|
||||
// Forward declarations
|
||||
namespace enactment {
|
||||
class WepBuilder;
|
||||
}
|
||||
|
||||
namespace wfs {
|
||||
|
||||
// Forward declarations
|
||||
class Activity;
|
||||
|
||||
|
||||
class LoopActivityInstance: public CompositeActivityInstance {
|
||||
friend class enactment::WepBuilder;
|
||||
|
||||
// Mutable properties that need to be accessed via getter-/setter-functions.
|
||||
protected:
|
||||
wfr_size_t iterationCount = 0;
|
||||
wfr_size_t handledIterationCount = 0;
|
||||
bool finalisedFlag = false;
|
||||
std::vector<wfr_size_t> finishedChildrenPerIteration;
|
||||
std::vector<bool> finishedIterations;
|
||||
std::vector<bool> runningIterations;
|
||||
|
||||
// Invariant properties that can be accessed directly.
|
||||
public:
|
||||
const bool isParallel;
|
||||
|
||||
// Public functions
|
||||
public:
|
||||
LoopActivityInstance(Activity& baseActivity, bool isParallel, wfr_id_t iterationID = 0) noexcept
|
||||
: CompositeActivityInstance(baseActivity, iterationID), isParallel(isParallel) {}
|
||||
|
||||
wfr_size_t getIterationCount() const noexcept { return iterationCount; }
|
||||
|
||||
void setIterationCount(wfr_size_t count) noexcept;
|
||||
|
||||
void setHandledIterationCount(wfr_size_t handledIterationCount) noexcept { this->handledIterationCount = handledIterationCount; }
|
||||
|
||||
wfr_size_t getHandledIterationCount() const noexcept { return handledIterationCount; }
|
||||
|
||||
bool isFinalised() const noexcept { return finalisedFlag; }
|
||||
|
||||
void setFinalised(bool v) noexcept { finalisedFlag = v; }
|
||||
|
||||
bool hasIterationFinished(wfr_id_t iterationID) const noexcept {
|
||||
if (iterationID < finishedIterations.size())
|
||||
return finishedIterations[iterationID];
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
bool isIterationRunning(wfr_id_t iterationID)const noexcept {
|
||||
if (iterationID < runningIterations.size())
|
||||
return runningIterations[iterationID];
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
ActivityInstanceStatus getIterationInstanceStatus(wfr_id_t iterationID) const noexcept;
|
||||
|
||||
|
||||
virtual void notifyChildHasFinished(ActivityInstance& ai) noexcept override;
|
||||
};
|
||||
|
||||
|
||||
} /* namespace wfs */
|
||||
} /* namespace wfr */
|
||||
@@ -0,0 +1,29 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wfr/common/wfs/instances/LoopActivityInstance.h>
|
||||
|
||||
|
||||
namespace wfr {
|
||||
namespace wfs {
|
||||
|
||||
// Forward declarations
|
||||
class Activity;
|
||||
|
||||
|
||||
class WhileLoopActivityInstance : public LoopActivityInstance {
|
||||
|
||||
// Public functions
|
||||
public:
|
||||
WhileLoopActivityInstance(Activity& baseActivity, wfr_id_t iterationID = 0) noexcept
|
||||
: LoopActivityInstance(baseActivity, false, iterationID) {}
|
||||
|
||||
virtual bool executePreExecutionHooks(bool earlyEvaluation) override;
|
||||
|
||||
virtual bool executePostExecutionHooks(bool earlyEvaluation) override;
|
||||
|
||||
virtual void notifyChildHasFinished(ActivityInstance& ai) noexcept;
|
||||
};
|
||||
|
||||
} /* namespace wfs */
|
||||
} /* namespace wfr */
|
||||
Reference in New Issue
Block a user