logplus/Workflow/WFEngine/WorkflowEngine/include/SpecialModuleDecompose.h
2026-01-16 17:18:41 +08:00

73 lines
2.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 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存在多个connectionsourceid=模块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_ */