添加ExecuteNode

This commit is contained in:
codeboss 2025-06-30 22:47:18 +08:00
parent d96793fa99
commit c18aad62b3
2 changed files with 159 additions and 44 deletions

View File

@ -572,10 +572,6 @@ LogicalResult CompareNode::execute()
void CompareNode::insert(std::shared_ptr<LogicalNode> node, int index /*= -1*/)
{
if (this->children().size())
return;
LogicalNode::insert(node, index);
}
QList<std::shared_ptr<LogicalNode>> CompareNode::getForwards() const
@ -589,11 +585,11 @@ bool CompareNode::fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste)
std::shared_ptr<Serializable> CompareNode::newDefault() const
{
return std::make_shared<CompareNode>();
return std::make_shared<CompareNode>(_bind_kernal);
}
CompareNode::CompareNode()
: LogicalNode(NodeKind::COMPARENODE) {
CompareNode::CompareNode(std::shared_ptr<MapKernal> ins)
: LogicalNode(NodeKind::COMPARENODE), _bind_kernal(ins) {
_data_map[u8"×óÖµ"] = std::make_shared<GeneralData>();
_data_map[u8"ÓÒÖµ"] = std::make_shared<GeneralData>();
}
@ -620,6 +616,7 @@ QHash<QString, std::shared_ptr<TopicData>> CompareNode::outputList() const
return QHash<QString, std::shared_ptr<TopicData>>();
}
#include <QJsonObject>
void CompareNode::recoveryFrom(const QJsonObject& obj)
{
auto vala = obj[u8"ValL"];
@ -627,6 +624,12 @@ void CompareNode::recoveryFrom(const QJsonObject& obj)
_data_map[u8"×óÖµ"]->recoveryFrom(vala.toObject());
_data_map[u8"ÓÒÖµ"]->recoveryFrom(valb.toObject());
QString delegate_name = "";
STRING_PEAK(delegate_name);
auto deins = _bind_kernal->getCompare(delegate_name);
bindDelegate(deins);
}
void CompareNode::saveTo(QJsonObject& obj) const
@ -637,6 +640,13 @@ void CompareNode::saveTo(QJsonObject& obj) const
obj[u8"ValL"] = vala;
obj[u8"ValR"] = valb;
QString delegate_name = "";
if (_bind_delegate) {
delegate_name = _bind_delegate->name();
}
STRING_SAVE(delegate_name);
}
#include <QJsonDocument>
@ -707,3 +717,100 @@ std::shared_ptr<TopicData> ConvertDelegate::convert(const QList<std::shared_ptr<
{
return nullptr;
}
ExecuteNode::ExecuteNode(std::shared_ptr<MapKernal> ins)
: LogicalNode(NodeKind::ACTIONNODE), _bind_kernal(ins) {
}
QString ExecuteNode::delegateName() const
{
if (_bind_delegate)
return _bind_delegate->typeName();
return "";
}
void ExecuteNode::bindDelegate(std::shared_ptr<ExecuteDelegate> ins)
{
_bind_delegate = ins;
}
QList<std::shared_ptr<LogicalNode>> ExecuteNode::getForwards() const
{
return QList<std::shared_ptr<LogicalNode>>();
}
QString ExecuteNode::typeName() const
{
return QString("Ö´Ðнڵã<%1>(%2)").arg(delegateName()).arg(getID());
}
QHash<QString, std::shared_ptr<TopicData>> ExecuteNode::inputList() const
{
if (_bind_delegate)
return _bind_delegate->inputList();
return QHash<QString, std::shared_ptr<TopicData>>();
}
QHash<QString, std::shared_ptr<TopicData>> ExecuteNode::outputList() const
{
if (_bind_delegate)
return _bind_delegate->outputList();
return QHash<QString, std::shared_ptr<TopicData>>();
}
void ExecuteNode::insert(std::shared_ptr<LogicalNode> node, int index /*= -1*/)
{
}
void ExecuteNode::reset()
{
if (_bind_delegate)
_bind_delegate->reset();
}
LogicalResult ExecuteNode::execute()
{
if (_bind_delegate)
return _bind_delegate->execute();
return LogicalResult::FAILURE;
}
bool ExecuteNode::fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste)
{
return true;
}
std::shared_ptr<Serializable> ExecuteNode::newDefault() const
{
return std::make_shared<ExecuteNode>(this->_bind_kernal);
}
#include <QJsonObject>
void ExecuteNode::recoveryFrom(const QJsonObject& obj)
{
QString delegate_name = "";
STRING_PEAK(delegate_name);
auto de_ins = _bind_kernal->getExecute(delegate_name);
this->bindDelegate(de_ins);
if (obj.contains("data_json")) {
auto delegate_json = obj["data_json"].toObject();
de_ins->recoveryFrom(delegate_json);
}
}
void ExecuteNode::saveTo(QJsonObject& obj) const
{
QString delegate_name = "";
if (_bind_delegate)
delegate_name = _bind_delegate->typeName();
STRING_SAVE(delegate_name);
if (_bind_delegate) {
QJsonObject data_json;
this->_bind_delegate->saveTo(data_json);
obj["data_json"] = data_json;
}
}

View File

@ -320,7 +320,7 @@ private:
void _set_parent_node(std::weak_ptr<LogicalNode> pnode);
public:
LogicalNode(NodeKind t = NodeKind::ACTIONNODE);
LogicalNode(NodeKind t);
virtual ~LogicalNode() = default;
/// <summary>
@ -442,7 +442,7 @@ enum class IO_TYPE {
class COMPONENTBASIC_EXPORT BehaviorMapNode : public LogicalNode {
private:
std::shared_ptr<MapKernal> _bind_kernal;
QString _map_name;
QString _map_name = u8"δÃüÃûÐÐΪÊ÷";
/// <summary>
/// µØÍ¼±äÁ¿±í
@ -537,20 +537,14 @@ public:
QList<std::shared_ptr<LogicalNode>> getForwards() const override;
QString typeName() const override;
LogicalResult execute() override;
QHash<QString, std::shared_ptr<TopicData>> inputList() const override;
QHash<QString, std::shared_ptr<TopicData>> outputList() const override;
void reset() override;
LogicalResult execute() override;
bool fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste) override;
/// <summary>
/// 新实例
/// </summary>
/// <param name="p"></param>
/// <returns></returns>
virtual std::shared_ptr<Serializable> newDefault() const override;
void recoveryFrom(const QJsonObject& obj) override;
void saveTo(QJsonObject& obj) const override;
};
@ -568,20 +562,14 @@ public:
QList<std::shared_ptr<LogicalNode>> getForwards() const override;
QString typeName() const override;
LogicalResult execute() override;
QHash<QString, std::shared_ptr<TopicData>> inputList() const override;
QHash<QString, std::shared_ptr<TopicData>> outputList() const override;
void reset() override;
LogicalResult execute() override;
bool fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste) override;
/// <summary>
/// 新实例
/// </summary>
/// <param name="p"></param>
/// <returns></returns>
virtual std::shared_ptr<Serializable> newDefault() const override;
void recoveryFrom(const QJsonObject& obj) override;
void saveTo(QJsonObject& obj) const override;
};
@ -596,22 +584,16 @@ private:
public:
ParallelNode();
QList<std::shared_ptr<LogicalNode>> getForwards() const override;
QString typeName() const override;
QHash<QString, std::shared_ptr<TopicData>> inputList() const override;
QHash<QString, std::shared_ptr<TopicData>> outputList() const override;
QString typeName() const override;
QList<std::shared_ptr<LogicalNode>> getForwards() const override;
void reset() override;
LogicalResult execute() override;
bool fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste) override;
LogicalResult execute() override;
void reset() override;
/// <summary>
/// 新实例
/// </summary>
/// <param name="p"></param>
/// <returns></returns>
virtual std::shared_ptr<Serializable> newDefault() const override;
void recoveryFrom(const QJsonObject& obj) override;
void saveTo(QJsonObject& obj) const override;
@ -622,34 +604,60 @@ public:
/// </summary>
class COMPONENTBASIC_EXPORT CompareNode : public LogicalNode {
private:
std::shared_ptr<MapKernal> _bind_kernal;
std::shared_ptr<CompareDelegate> _bind_delegate;
QHash<QString, std::shared_ptr<TopicData>> _data_map;
public:
CompareNode();
CompareNode(std::shared_ptr<MapKernal> kernal);
QString delegateName() const;
void bindDelegate(std::shared_ptr<CompareDelegate> ins);
virtual QList<std::shared_ptr<LogicalNode>> getForwards() const override;
QString typeName() const override;
QHash<QString, std::shared_ptr<TopicData>> inputList() const override;
QHash<QString, std::shared_ptr<TopicData>> outputList() const override;
virtual void insert(std::shared_ptr<LogicalNode> node, int index /*= -1*/) override;
QString typeName() const override;
virtual QList<std::shared_ptr<LogicalNode>> getForwards() const override;
void reset() override;
LogicalResult execute() override;
virtual bool fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste) override;
virtual std::shared_ptr<Serializable> newDefault() const override;
void recoveryFrom(const QJsonObject& obj) override;
void saveTo(QJsonObject& obj) const override;
};
/// <summary>
/// Ö´Ðнڵã
/// </summary>
class COMPONENTBASIC_EXPORT ExecuteNode : public LogicalNode {
private:
std::shared_ptr<MapKernal> _bind_kernal;
std::shared_ptr<ExecuteDelegate> _bind_delegate;
public:
ExecuteNode(std::shared_ptr<MapKernal> kernal);
QString delegateName() const;
void bindDelegate(std::shared_ptr<ExecuteDelegate> ins);
virtual QList<std::shared_ptr<LogicalNode>> getForwards() const override;
QString typeName() const override;
QHash<QString, std::shared_ptr<TopicData>> inputList() const override;
QHash<QString, std::shared_ptr<TopicData>> outputList() const override;
virtual void insert(std::shared_ptr<LogicalNode> node, int index /*= -1*/) override;
LogicalResult execute() override;
void reset() override;
LogicalResult execute() override;
virtual bool fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste) override;
/// <summary>
/// 新实例
/// </summary>
/// <param name="p"></param>
/// <returns></returns>
virtual std::shared_ptr<Serializable> newDefault() const override;
void recoveryFrom(const QJsonObject& obj) override;
void saveTo(QJsonObject& obj) const override;