DAWorkbench 0.0.1
DAWorkbench API
载入中...
搜索中...
未找到
DA::DAWorkFlow类 参考

基本的工作流,这个也是总工厂,汇总了所有插件的工厂 更多...

#include <DAWorkFlow.h>

类 DA::DAWorkFlow 继承关系图:
DA::DADataWorkFlow

class  PrivateData
 

Public 类型

using CallbackPrepareStartExecute = std::function< bool(DAWorkFlowExecuter *) >
 
using CallbackPrepareEndExecute = std::function< bool(DAWorkFlowExecuter *) >
 

Public 槽

void exec ()
 开始执行 此函数会触发信号
 
void terminate ()
 终止
 

信号

void nodeAdded (DAAbstractNode::SharedPointer node)
 节点添加的信号
 
void nodeStartRemove (DAAbstractNode::SharedPointer node)
 节点在工作流中开始被删除
 
void nodeRemoved (DAAbstractNode::SharedPointer n)
 节点移除完成信号 这时此信号携带的n是这个节点唯一的生命周期,如果接收此信号后还保留这个节点,这个节点将不销毁
 
void workflowReady ()
 工作流就绪信号,此信号在文件加载过程完成后触发
 
void nodeNameChanged (DAAbstractNode::SharedPointer node, const QString &oldName, const QString &newName)
 节点名字变更
 
void workflowCleared ()
 清空信号
 
void startExecute ()
 开始执行,exec函数调用后会触发此信号
 
void terminateExecute ()
 开始停止工作流
 
void nodeExecuteFinished (DAAbstractNode::SharedPointer n, bool state)
 执行到某个节点发射的信号
 
void finished (bool success)
 工作流执行完毕信号
 

Public 成员函数

 DAWorkFlow (QObject *p=nullptr)
 
void registFactory (std::shared_ptr< DAAbstractNodeFactory > factory)
 注册工厂,工厂的内存管理根据实例情况管理,目前工作流和执行器会持有工厂的共享指针,如果这两个同时销毁,工厂也会随之销毁
 
void registFactorys (const QList< std::shared_ptr< DAAbstractNodeFactory > > factorys)
 注册工厂群,工作流不保留工程的内存管理权
 
void removeFactory (std::shared_ptr< DAAbstractNodeFactory > fac)
 删除工厂,此函数一般在插件卸载时调用
 
QList< std::shared_ptr< DAAbstractNodeFactory > > getAllFactorys () const
 获取所有的工厂
 
QList< std::shared_ptr< DAAbstractNodeFactory > > usedFactorys () const
 获取使用到的工厂
 
int getFactoryCount () const
 获取工厂的数量
 
std::shared_ptr< DAAbstractNodeFactorygetFactory (const QString &factoryPrototypes)
 通过工厂名字获取工厂
 
DANodeMetaData getNodeMetaData (const QString &protoType) const
 通过protoType获取DANodeMetaData
 
DAAbstractNode::SharedPointer createNode (const DANodeMetaData &md)
 工作流创建节点,FCWorkFlow保留节点的内存管理权
 
void addNode (DAAbstractNode::SharedPointer n)
 添加节点,会触发nodeAdded信号
 
QList< DAAbstractNode::SharedPointer > nodes () const
 获取所有节点
 
void clear ()
 清空节点 此函数会触发信号
 
void removeNode (const DAAbstractNode::SharedPointer &n)
 删除工作流节点,节点删除会触发
 
bool hasNodeID (const DAAbstractNode::IdType id)
 在工作流中是否存在id
 
DAAbstractNode::SharedPointer getNode (const DAAbstractNode::IdType id)
 通过id获取节点
 
DAAbstractNodeGraphicsItemgetNodeGraphicsItem (const DAAbstractNode::IdType id)
 DAWorkFlow::getNodeGraphicsItem
 
virtual void saveExternInfoToXml (QDomDocument *doc, QDomElement *nodeElement, const QVersionNumber &ver) const
 保存工作流的扩展信息
 
virtual void loadExternInfoFromXml (const QDomElement *nodeElement, const QVersionNumber &ver)
 加载工作流的扩展信息
 
void setStartNode (DAAbstractNode::SharedPointer p)
 设置开始执行的节点
 
DAAbstractNode::SharedPointer getStartNode () const
 获取开始执行的节点
 
bool isRunning () const
 判断是否正在运行
 
int size () const
 工作流中节点的数量
 
bool isEmpty () const
 判断是否为空
 
QString getLastErrorString () const
 获取最后发生的错误信息
 
void registStartWorkflowCallback (CallbackPrepareStartExecute fn)
 注册开始执行工作流的回调
 
void registEndWorkflowCallback (CallbackPrepareEndExecute fn)
 注册结束执行工作流的回调
 
QList< CallbackPrepareStartExecute > getStartWorkflowCallback () const
 获取所有的开始回调函数
 
QList< CallbackPrepareEndExecute > getEndWorkflowCallback () const
 获取所有的结束回调函数
 
DANodeGraphicsScenegetScene () const
 获取这个工作流加入的scene
 
void callWorkflowReady ()
 触发工作流完成信号
 
void disableFactoryCallBack ()
 禁止所有工厂回调,这个一般用于文件加载过程,避免回调过多
 
void enableFactoryCallBack ()
 允许工厂回调,这个一般用于文件加载过程,避免回调过多
 
bool isEnableFactoryCallBack () const
 是否允许工厂回调
 

Protected 成员函数

void emitNodeNameChanged (DAAbstractNode::SharedPointer node, const QString &oldName, const QString &newName)
 
void nodeIDChanged (const DAAbstractNode::SharedPointer &node, const DAAbstractNode::IdType &oldId)
 节点的id信息变更
 

友元

class DAAbstractNode
 
class DANodeGraphicsScene
 

详细描述

基本的工作流,这个也是总工厂,汇总了所有插件的工厂

成员函数说明

◆ addNode()

void DA::DAWorkFlow::addNode ( DAAbstractNode::SharedPointer  n)

添加节点,会触发nodeAdded信号

参数
n

◆ clear()

void DA::DAWorkFlow::clear ( )

清空节点 此函数会触发信号

参见
workflowCleared
注解
此函数不会触发信号
参见
nodeStartRemove

◆ createNode()

DAAbstractNode::SharedPointer DA::DAWorkFlow::createNode ( const DANodeMetaData md)

工作流创建节点,FCWorkFlow保留节点的内存管理权

此函数仅仅创建节点,不会添加到工作流中

参数
md
返回

◆ exec

void DA::DAWorkFlow::exec ( )
slot

开始执行 此函数会触发信号

参见
startExecuteNode

◆ finished

void DA::DAWorkFlow::finished ( bool  success)
signal

工作流执行完毕信号

参数
success成功全部执行完成为true

◆ getAllFactorys()

QList< std::shared_ptr< DAAbstractNodeFactory > > DA::DAWorkFlow::getAllFactorys ( ) const

获取所有的工厂

返回

◆ getEndWorkflowCallback()

QList< DAWorkFlow::CallbackPrepareEndExecute > DA::DAWorkFlow::getEndWorkflowCallback ( ) const

获取所有的结束回调函数

返回

◆ getFactory()

std::shared_ptr< DAAbstractNodeFactory > DA::DAWorkFlow::getFactory ( const QString &  factoryPrototypes)

通过工厂名字获取工厂

参数
name
返回
如果找不到,返回nullptr

◆ getFactoryCount()

int DA::DAWorkFlow::getFactoryCount ( ) const

获取工厂的数量

返回

◆ getLastErrorString()

QString DA::DAWorkFlow::getLastErrorString ( ) const

获取最后发生的错误信息

返回

◆ getNode()

DAAbstractNode::SharedPointer DA::DAWorkFlow::getNode ( const DAAbstractNode::IdType  id)

通过id获取节点

参数
id
返回

◆ getNodeGraphicsItem()

DAAbstractNodeGraphicsItem * DA::DAWorkFlow::getNodeGraphicsItem ( const DAAbstractNode::IdType  id)

◆ getNodeMetaData()

DANodeMetaData DA::DAWorkFlow::getNodeMetaData ( const QString &  protoType) const

通过protoType获取DANodeMetaData

参数
protoType
返回

◆ getScene()

DANodeGraphicsScene * DA::DAWorkFlow::getScene ( ) const

获取这个工作流加入的scene

返回

◆ getStartNode()

DAAbstractNode::SharedPointer DA::DAWorkFlow::getStartNode ( ) const

获取开始执行的节点

返回

◆ getStartWorkflowCallback()

QList< DAWorkFlow::CallbackPrepareStartExecute > DA::DAWorkFlow::getStartWorkflowCallback ( ) const

获取所有的开始回调函数

返回

◆ hasNodeID()

bool DA::DAWorkFlow::hasNodeID ( const DAAbstractNode::IdType  id)

在工作流中是否存在id

参数
id
返回

◆ isEmpty()

bool DA::DAWorkFlow::isEmpty ( ) const

判断是否为空

返回

◆ isEnableFactoryCallBack()

bool DA::DAWorkFlow::isEnableFactoryCallBack ( ) const

是否允许工厂回调

返回

◆ isRunning()

bool DA::DAWorkFlow::isRunning ( ) const

判断是否正在运行

返回

◆ loadExternInfoFromXml()

void DA::DAWorkFlow::loadExternInfoFromXml ( const QDomElement *  nodeElement,
const QVersionNumber &  ver 
)
virtual

加载工作流的扩展信息

注解
工作流加载过程如下:
  1. 加载工作流扩展信息
  2. 加载节点信息
  3. 加载链接信息
  4. 加载特殊item(非工作流的item)
  5. 加载工厂扩展信息
  6. 加载scene信息
参数
nodeElement

◆ nodeAdded

void DA::DAWorkFlow::nodeAdded ( DAAbstractNode::SharedPointer  node)
signal

节点添加的信号

参数
node

◆ nodeExecuteFinished

void DA::DAWorkFlow::nodeExecuteFinished ( DAAbstractNode::SharedPointer  n,
bool  state 
)
signal

执行到某个节点发射的信号

参数
n

◆ nodeIDChanged()

void DA::DAWorkFlow::nodeIDChanged ( const DAAbstractNode::SharedPointer &  node,
const DAAbstractNode::IdType &  oldId 
)
protected

节点的id信息变更

参数
node
oldId

◆ nodeNameChanged

void DA::DAWorkFlow::nodeNameChanged ( DAAbstractNode::SharedPointer  node,
const QString &  oldName,
const QString &  newName 
)
signal

节点名字变更

参数
node
oldName
newName

◆ nodes()

QList< DAAbstractNode::SharedPointer > DA::DAWorkFlow::nodes ( ) const

获取所有节点

返回

◆ nodeStartRemove

void DA::DAWorkFlow::nodeStartRemove ( DAAbstractNode::SharedPointer  node)
signal

节点在工作流中开始被删除

参数
node

◆ registEndWorkflowCallback()

void DA::DAWorkFlow::registEndWorkflowCallback ( DAWorkFlow::CallbackPrepareEndExecute  fn)

注册结束执行工作流的回调

注解
此回调函数会在DAWorkFlowExecuter里执行,DAWorkFlowExecuter是在其它线程中运行,因此此回调函数是和workflow不在一个线程
参数
fn

◆ registFactory()

void DA::DAWorkFlow::registFactory ( std::shared_ptr< DAAbstractNodeFactory factory)

注册工厂,工厂的内存管理根据实例情况管理,目前工作流和执行器会持有工厂的共享指针,如果这两个同时销毁,工厂也会随之销毁

注解
最初设计时工作流不保留工厂的所有权,但在实际的使用过程中发现,许多工作流的工厂需要保存这个工厂的全局变量, 如果程序支持多工作流,那么每个工作流需要持有不同的工厂实例,否则会产生冲突,此操作有点违背单一职责原则,但能很好的降低复杂度
传入的工厂指针不应该在其他地方进行删除,也不应该在工作流之外的地方保存
参数
factory

◆ registFactorys()

void DA::DAWorkFlow::registFactorys ( const QList< std::shared_ptr< DAAbstractNodeFactory > >  factorys)

注册工厂群,工作流不保留工程的内存管理权

参数
factory

◆ registStartWorkflowCallback()

void DA::DAWorkFlow::registStartWorkflowCallback ( DAWorkFlow::CallbackPrepareStartExecute  fn)

注册开始执行工作流的回调

注解
此回调函数会在DAWorkFlowExecuter里执行,DAWorkFlowExecuter是在其它线程中运行,因此此回调函数是和workflow不在一个线程
参数
fn

◆ removeFactory()

void DA::DAWorkFlow::removeFactory ( std::shared_ptr< DAAbstractNodeFactory fac)

删除工厂,此函数一般在插件卸载时调用

参数
fac

◆ removeNode()

void DA::DAWorkFlow::removeNode ( const DAAbstractNode::SharedPointer &  n)

删除工作流节点,节点删除会触发

参见
nodeStartRemove 信号
注解
node会调用detachAll函数移除所有依赖
此函数会触发
参见
DAAbstractNodeFactory::nodeStartRemove ,然后触发
DAWorkFlow::nodeStartRemove 信号
参数
n

◆ saveExternInfoToXml()

void DA::DAWorkFlow::saveExternInfoToXml ( QDomDocument *  doc,
QDomElement *  nodeElement,
const QVersionNumber &  ver 
) const
virtual

保存工作流的扩展信息

注解
工作流保存过程如下:
  1. 保存工作流扩展信息
  2. 保存节点信息
  3. 保存链接信息
  4. 保存特殊item(非工作流的item)
  5. 保存工厂扩展信息
  6. 保存scene信息
参数
doc
nodeElement

◆ setStartNode()

void DA::DAWorkFlow::setStartNode ( DAAbstractNode::SharedPointer  p)

设置开始执行的节点

参数
p
注解
start node并不是必须要指定的,start node的指定可能有利于快速找到开始节点

◆ size()

int DA::DAWorkFlow::size ( ) const

工作流中节点的数量

返回

◆ usedFactorys()

QList< std::shared_ptr< DAAbstractNodeFactory > > DA::DAWorkFlow::usedFactorys ( ) const

获取使用到的工厂

返回

◆ workflowReady

void DA::DAWorkFlow::workflowReady ( )
signal

工作流就绪信号,此信号在文件加载过程完成后触发

文件加载过程中不会触发nodeAdded信号,在整个文件加载完成后会触发workflowReady用来通知其他告知工作流加载完成


该类的文档由以下文件生成: