73 lines
2.2 KiB
C++
73 lines
2.2 KiB
C++
/*
|
||
* SpecialModuleDecompose.h
|
||
*
|
||
* Created on: Mar 12, 2015
|
||
* Author: dev
|
||
*/
|
||
|
||
#ifndef PAI_FRAME_WORKFLOWENGINE_SPECIALMODULEDECOMPOSE_H
|
||
#define PAI_FRAME_WORKFLOWENGINE_SPECIALMODULEDECOMPOSE_H
|
||
|
||
#include "WorkFlowFileWrapper.h"
|
||
#include "WorkFlowFile.h"
|
||
#include "UnrelateWorkFlowFileHelper.h"
|
||
#include "ModuleConnection.h"
|
||
#include "ModuleInformation.h"
|
||
#include "WorkFlowDecompose.h"
|
||
|
||
#include <vector>
|
||
#include <string>
|
||
|
||
class SpecialModuleDecomposeTest;
|
||
namespace pai{
|
||
namespace workflow{
|
||
|
||
class CSpecialModuleDecompose:public CWorkFlowDecompose
|
||
{
|
||
|
||
public:
|
||
CSpecialModuleDecompose(const int &startModuleId);
|
||
virtual ~CSpecialModuleDecompose();
|
||
/**
|
||
* @brief 拆分工作流的入口函数,其他类需要实现此函数进行分类处理
|
||
* @param[in] workflowFileWrapper
|
||
*/
|
||
virtual void DecomposeWorkFlowFile(CWorkFlowFileWrapper* workflowFileWrapper);
|
||
private:
|
||
/**
|
||
* @brief 对有特殊模块的工作流进行拆分
|
||
*@param[in] workflowFile 原始的CWorkFlowFile的备份
|
||
*/
|
||
void InternalDecomposeWorkFlowFile(CWorkFlowFile* workflowFile);
|
||
/**
|
||
* @brief 处理特殊模块,在特殊模块的直接下游添加input和output,将工作流拆分成两个
|
||
*@param[in] workflowFile 原始的CWorkFlowFile的备份
|
||
*@param[in] moduleID
|
||
*@param[in] moduleSize 如果等于1,则判断下面是否直接连着output模块
|
||
*/
|
||
void ProcessDownStreamModule(CWorkFlowFile* workflowFile, const int moduleID, const int moduleSize);
|
||
/**
|
||
* @brief 处理特殊模块,处理特殊模块的所有上游模块的id存在多个connection(sourceid=模块id)情况
|
||
*@param[in] workflowFile 原始的CWorkFlowFile的备份
|
||
*@param[in] moduleID
|
||
*/
|
||
void ProcessUpStreamModule(CWorkFlowFile* workflowFile, const int moduleID);
|
||
/**
|
||
* @brief 从workflowFile中获取所有特殊模块,保存到specialModules中
|
||
*@param[in] workflowFile
|
||
*@return
|
||
*/
|
||
std::vector<CModuleInformation*> GetSpecialModules(CWorkFlowFile* workflowFile);
|
||
|
||
private:
|
||
std::vector<std::string> spcialModuleNameList;
|
||
std::map<int, string> inputId2InputPath;//保存临时输入模块id-》输入路径
|
||
|
||
friend class ::SpecialModuleDecomposeTest;
|
||
};
|
||
|
||
}
|
||
}
|
||
|
||
#endif /* SPECIALMODULEDECOMPOSE_H_ */
|