|
DAWorkbench 0.0.1
DAWorkbench API
|
节点对应的基类 更多...
#include <DAAbstractNode.h>
类 | |
| class | LinkInfo |
| 链接信息 更多... | |
| class | PrivateData |
Public 类型 | |
| enum | NodeType { NormalNode , GlobalNode } |
| 节点类型 更多... | |
| using | SharedPointer = std::shared_ptr< DAAbstractNode > |
| using | WeakPointer = std::weak_ptr< DAAbstractNode > |
| using | IdType = uint64_t |
Public 成员函数 | |
| virtual | ~DAAbstractNode () |
| 节点的销毁,节点销毁过程会通知相关联的节点把自己信息解除 | |
| QString | getNodeName () const |
| 获取节点的名字 | |
| virtual void | setNodeName (const QString &name) |
| 设置节点名 | |
| QString | getNodePrototype () const |
| FCAbstractNode::getNodePrototype | |
| QString | getNodeGroup () const |
| 获取分组 | |
| QIcon | getIcon () const |
| 获取节点图标 | |
| void | setIcon (const QIcon &icon) |
| 设置图标 | |
| const DANodeMetaData & | metaData () const |
| 获取节点元数据 | |
| DANodeMetaData & | metaData () |
| 获取节点元数据 | |
| QString | getNodeTooltip () const |
| 获取节点的说明 | |
| void | setNodeTooltip (const QString &tp) |
| 设置节点的说明 | |
| void | setMetaData (const DANodeMetaData &metadata) |
| 设置元数据 | |
| SharedPointer | pointer () |
| 返回自身的引用 | |
| IdType | getID () const |
| 获取id | |
| void | setID (const IdType &d) |
| 设置id | |
| bool | hasProperty (const QString &k) const |
| 判断是否存在属性 | |
| void | setProperty (const QString &k, const QVariant &v) |
| 设置属性 | |
| QVariant | getProperty (const QString &k, const QVariant &defaultVal=QVariant()) const |
| 读取属性 | |
| bool | removeProperty (const QString &k) |
| 移除属性 | |
| QList< QString > | getPropertyKeys () const |
| 获取所以得属性关键字 | |
| const QHash< QString, QVariant > & | propertys () const |
| 属性引用 | |
| QHash< QString, QVariant > & | propertys () |
| 属性引用 | |
| virtual void | saveExternInfoToXml (QDomDocument *doc, QDomElement *nodeElement, const QVersionNumber &ver) const |
| 把信息保存到xml上 | |
| virtual void | loadExternInfoFromXml (const QDomElement *nodeElement, const QVersionNumber &ver) |
| 从xml加载扩展信息 | |
| virtual NodeType | nodeType () const |
| 节点类型默认都为NormalNode | |
| QList< QString > | getInputKeys () const |
| 获取说有的输入参数 | |
| int | getInputKeysConut () const |
| 获取输入节点的数量 | |
| QList< QString > | getLinkedInputKeys () const |
| 获取所有已经链接上的输入节点 | |
| QList< QString > | getOutputKeys () const |
| 获取所有的输出参数 | |
| int | getOutputKeysConut () const |
| 获取输出节点的数量 | |
| QList< QString > | getLinkedOutputKeys () const |
| 获取所有已经链接上的输出的参数名 | |
| void | addInputKey (const QString &k) |
| 添加一个输入参数 | |
| void | addOutputKey (const QString &k) |
| 添加一个输出参数 | |
| virtual bool | linkTo (const QString &outKey, SharedPointer inNode, const QString &inKey) |
| 建立连接,从out到另外一个item的in | |
| bool | detachLink (const QString &key) |
| detachToLink会对_toNode进行删除操作,因此不允许在_toNode迭代环境中调用此函数 | |
| bool | detachInputLinks (const QString &key) |
| bool | detachOutputLinks (const QString &key) |
| void | detachAll () |
| 移除所有依赖,一般是节点被删除时会调用此函数 | |
| QList< SharedPointer > | getInputNodes () const |
| 获取所有连接了输入keys的节点 input Output ┌───┐ ┌───┐ ┌───┐ │in │━━━━━━━━━━━━━━│ * │━━━━━━━━━━━━━━━━━│out│ └───┘ └───┘ └───┘ LinkData outputkey inputkey outputNode inputNode | |
| QList< SharedPointer > | getInputNodes (const QString inputkey) const |
| 获取所有连接了inputkey的节点 input Output ┌───┐ ┌───┐ ┌───┐ │in │━━━━━━━━━━━━━━│ * │━━━━━━━━━━━━━━━━━│out│ └───┘ └───┘ └───┘ LinkData outputkey inputkey outputNode inputNode | |
| QList< SharedPointer > | getOutputNodes () const |
| 获取此节点输出到其他的节点 input Output ┌───┐ ┌───┐ ┌───┐ │in │━━━━━━━━━━━━━━│ * │━━━━━━━━━━━━━━━━━│out│ └───┘ └───┘ └───┘ LinkData outputkey inputkey outputNode inputNode | |
| QList< SharedPointer > | getOutputNodes (const QString outputkey) const |
| 获取此节点输出到其他的节点 input Output ┌───┐ ┌───┐ ┌───┐ │in │━━━━━━━━━━━━━━│ * │━━━━━━━━━━━━━━━━━│out│ └───┘ └───┘ └───┘ LinkData outputkey inputkey outputNode inputNode | |
| int | getInputNodesCount () const |
| 获取输入节点的数量 | |
| int | getOutputNodesCount () const |
| 获取输出节点的数量 | |
| void | setInputData (const QString &key, const QVariant &dp) |
| 输入参数 | |
| void | setOutputData (const QString &key, const QVariant &dp) |
| 设置输出的参数 | |
| void | removeInputKey (const QString &key) |
| 移除输入,如果有数据,数据也会移除 | |
| void | removeAllInputKeys () |
| 移除所有输入节点 | |
| void | removeOutputKey (const QString &key) |
| 移除输出,如果有数据,数据也会移除 | |
| void | removeAllOutputKeys () |
| 移除所有输出节点 | |
| QVariant | getInputData (const QString &key) const |
| FCAbstractNode::inputData | |
| QVariant | getOutputData (const QString &key) const |
| QList< LinkInfo > | getAllInputLinkInfo () const |
| 获取所有输入(入度)的信息 | |
| QList< LinkInfo > | getAllOutputLinkInfo () const |
| 获取输出(出度)的链接信息 | |
| DAWorkFlow * | workflow () const |
| 获取工作流 | |
| std::shared_ptr< DAAbstractNodeFactory > | factory () const |
| 获取工厂 | |
| template<typename T > | |
| std::shared_ptr< T > | castTo () |
| 转换为其他具体类型节点 | |
| virtual bool | exec ()=0 |
| virtual DAAbstractNodeGraphicsItem * | createGraphicsItem ()=0 |
| DAAbstractNodeGraphicsItem * | graphicsItem () const |
| 获取graphicsItem | |
静态 Public 成员函数 | |
| static IdType | generateID () |
| 生成一个唯一id | |
Protected 成员函数 | |
| void | registItem (DAAbstractNodeGraphicsItem *it) |
| 记录item,此函数在DAAbstractNodeGraphicsItem构造函数中调用 | |
| void | unregistItem () |
| 解除对item的记录 在某些环境下,删除item就会调用此函数解除item的记录 | |
| bool | linkTo_ (const QString &outKey, SharedPointer inNode, const QString &inKey) |
| DAAbstractNode::linkToNoCallback | |
| void | registFactory (const std::shared_ptr< DAAbstractNodeFactory > &fc) |
| 记录工厂 | |
友元 | |
| class | DAAbstractNodeLinkGraphicsItem |
| class | DAAbstractNodeGraphicsItem |
| class | DAAbstractNodeFactory |
| class | DAWorkFlow |
节点对应的基类
节点可以理解为一个函数,函数有多个输入,但只会有一个return或者多个分支的return, 反映到节点中就是可以存在多个输入,但也应该有多个输出(参考流程中的菱形控制(if-else))。 因此节点的输入点是0~n,节点的输出点是0~n。
此节点作为专业数据结构讲,就是图结构(实际workflow是个网结构)的节点,为了适应workflow的称呼,这里做如下约定:
需要用户实现以下2个函数
这个节点和有向无环图(DAG)的不一样,有向无环图是没有节点名称的说法的,这个节点是更通用的节点, 当然,通过限制节点的输入输出名称,也可以实现通用的有向无环图,一个简单的workflow应该使用DAG, 使用带节点名称的图结构会使得workflow过于复杂,就变成类似labview的模式
DAAbstractNode不一定会持有DAAbstractNodeGraphicsItem,但DAAbstractNodeGraphicsItem一定会有对应的node
| void DA::DAAbstractNode::addInputKey | ( | const QString & | k | ) |
添加一个输入参数
| k |
| void DA::DAAbstractNode::addOutputKey | ( | const QString & | k | ) |
添加一个输出参数
| k |
|
inline |
转换为其他具体类型节点
| void DA::DAAbstractNode::detachAll | ( | ) |
移除所有依赖,一般是节点被删除时会调用此函数
不能直接迭代_toNode过程调用detachToLink,会导致迭代器失效
清空关系这里,不能清除workflow和factory的关系,尤其不能清除factory的关系 因为在redo/undo下,undo后factory会丢失
| bool DA::DAAbstractNode::detachLink | ( | const QString & | key | ) |
detachToLink会对_toNode进行删除操作,因此不允许在_toNode迭代环境中调用此函数
| outpt |
| std::shared_ptr< DAAbstractNodeFactory > DA::DAAbstractNode::factory | ( | ) | const |
获取工厂
|
static |
生成一个唯一id
| QList< DAAbstractNode::LinkInfo > DA::DAAbstractNode::getAllInputLinkInfo | ( | ) | const |
获取所有输入(入度)的信息
| QList< DAAbstractNode::LinkInfo > DA::DAAbstractNode::getAllOutputLinkInfo | ( | ) | const |
获取输出(出度)的链接信息
| QIcon DA::DAAbstractNode::getIcon | ( | ) | const |
获取节点图标
| DAAbstractNode::IdType DA::DAAbstractNode::getID | ( | ) | const |
| QVariant DA::DAAbstractNode::getInputData | ( | const QString & | key | ) | const |
FCAbstractNode::inputData
| key |
| QList< QString > DA::DAAbstractNode::getInputKeys | ( | ) | const |
获取说有的输入参数
| int DA::DAAbstractNode::getInputKeysConut | ( | ) | const |
获取输入节点的数量
| QList< DAAbstractNode::SharedPointer > DA::DAAbstractNode::getInputNodes | ( | ) | const |
获取所有连接了输入keys的节点 input Output ┌───┐ ┌───┐ ┌───┐ │in │━━━━━━━━━━━━━━│ * │━━━━━━━━━━━━━━━━━│out│ └───┘ └───┘ └───┘ LinkData outputkey inputkey outputNode inputNode
| QList< DAAbstractNode::SharedPointer > DA::DAAbstractNode::getInputNodes | ( | const QString | inputkey | ) | const |
获取所有连接了inputkey的节点 input Output ┌───┐ ┌───┐ ┌───┐ │in │━━━━━━━━━━━━━━│ * │━━━━━━━━━━━━━━━━━│out│ └───┘ └───┘ └───┘ LinkData outputkey inputkey outputNode inputNode
| int DA::DAAbstractNode::getInputNodesCount | ( | ) | const |
获取输入节点的数量
| QList< QString > DA::DAAbstractNode::getLinkedInputKeys | ( | ) | const |
获取所有已经链接上的输入节点
| QList< QString > DA::DAAbstractNode::getLinkedOutputKeys | ( | ) | const |
获取所有已经链接上的输出的参数名
| QString DA::DAAbstractNode::getNodeGroup | ( | ) | const |
获取分组
| QString DA::DAAbstractNode::getNodeName | ( | ) | const |
获取节点的名字
| QString DA::DAAbstractNode::getNodePrototype | ( | ) | const |
FCAbstractNode::getNodePrototype
| QString DA::DAAbstractNode::getNodeTooltip | ( | ) | const |
| QList< QString > DA::DAAbstractNode::getOutputKeys | ( | ) | const |
获取所有的输出参数
| int DA::DAAbstractNode::getOutputKeysConut | ( | ) | const |
获取输出节点的数量
| QList< DAAbstractNode::SharedPointer > DA::DAAbstractNode::getOutputNodes | ( | ) | const |
获取此节点输出到其他的节点 input Output ┌───┐ ┌───┐ ┌───┐ │in │━━━━━━━━━━━━━━│ * │━━━━━━━━━━━━━━━━━│out│ └───┘ └───┘ └───┘ LinkData outputkey inputkey outputNode inputNode
| QList< DAAbstractNode::SharedPointer > DA::DAAbstractNode::getOutputNodes | ( | const QString | outputkey | ) | const |
获取此节点输出到其他的节点 input Output ┌───┐ ┌───┐ ┌───┐ │in │━━━━━━━━━━━━━━│ * │━━━━━━━━━━━━━━━━━│out│ └───┘ └───┘ └───┘ LinkData outputkey inputkey outputNode inputNode
| int DA::DAAbstractNode::getOutputNodesCount | ( | ) | const |
获取输出节点的数量
| QVariant DA::DAAbstractNode::getProperty | ( | const QString & | k, |
| const QVariant & | defaultVal = QVariant() |
||
| ) | const |
读取属性
| k | |
| defaultVal |
| QList< QString > DA::DAAbstractNode::getPropertyKeys | ( | ) | const |
获取所以得属性关键字
| DA::DAAbstractNodeGraphicsItem * DA::DAAbstractNode::graphicsItem | ( | ) | const |
获取graphicsItem
| bool DA::DAAbstractNode::hasProperty | ( | const QString & | k | ) | const |
判断是否存在属性
| k |
|
virtual |
建立连接,从out到另外一个item的in
建立连接,如果基础的对象需要校验,可继承此函数
注意,继承的方法中一定要调用父类方法DAAbstractNode::linkTo,否则信息会异常
| outpt | 输出点 |
| toItem | 输入的item |
| topt | 输入点 |
|
protected |
DAAbstractNode::linkToNoCallback
| outKey | |
| inNode | |
| inKey |
|
virtual |
从xml加载扩展信息
DAAbstractNode的此函数不会实现任何功能,继承的node要加载一些参数可以通过继承此函数实现
| parentElement |
| DANodeMetaData & DA::DAAbstractNode::metaData | ( | ) |
获取节点元数据
| const DANodeMetaData & DA::DAAbstractNode::metaData | ( | ) | const |
获取节点元数据
|
virtual |
节点类型默认都为NormalNode
| DAAbstractNode::SharedPointer DA::DAAbstractNode::pointer | ( | ) |
返回自身的引用
| QHash< QString, QVariant > & DA::DAAbstractNode::propertys | ( | ) |
属性引用
| const QHash< QString, QVariant > & DA::DAAbstractNode::propertys | ( | ) | const |
属性引用
|
protected |
记录工厂
| fc |
|
protected |
记录item,此函数在DAAbstractNodeGraphicsItem构造函数中调用
| it |
| void DA::DAAbstractNode::removeInputKey | ( | const QString & | key | ) |
移除输入,如果有数据,数据也会移除
| key |
| void DA::DAAbstractNode::removeOutputKey | ( | const QString & | key | ) |
移除输出,如果有数据,数据也会移除
| key |
| bool DA::DAAbstractNode::removeProperty | ( | const QString & | k | ) |
移除属性
| k |
|
virtual |
把信息保存到xml上
DAAbstractNode的此函数不会实现任何功能,继承的node要保存一些参数可以通过继承此函数实现
| doc | |
| parentElement |
| void DA::DAAbstractNode::setIcon | ( | const QIcon & | icon | ) |
设置图标
| icon | 设置的图标 |
| void DA::DAAbstractNode::setID | ( | const IdType & | d | ) |
| void DA::DAAbstractNode::setInputData | ( | const QString & | key, |
| const QVariant & | dp | ||
| ) |
输入参数
| inputName | |
| dp | 数据会发生拷贝操作,不会影响原来数据包 |
| void DA::DAAbstractNode::setMetaData | ( | const DANodeMetaData & | metadata | ) |
设置元数据
| metadata |
|
virtual |
设置节点名
| name |
| void DA::DAAbstractNode::setNodeTooltip | ( | const QString & | tp | ) |
| void DA::DAAbstractNode::setOutputData | ( | const QString & | key, |
| const QVariant & | dp | ||
| ) |
设置输出的参数
| key | |
| dp |
| void DA::DAAbstractNode::setProperty | ( | const QString & | k, |
| const QVariant & | v | ||
| ) |
设置属性
| k | 属性键值 |
| v | 属性值 |
| DAWorkFlow * DA::DAAbstractNode::workflow | ( | ) | const |
获取工作流