| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261 |
- #include "StdAfx.h"
- #include "FlowDataProvider.h"
- #include "CellDefineVar.h"
- #include "CellBranch.h"
- #include "CellSocket.h"
- #include "FlowTemplate.h"
- CFlowDataProvider::CFlowDataProvider( FLOW_DOC_PTR& Doc, FLOW_ELEMENT_PTR& Element ) : m_FlowDoc(Doc), m_FlowElement(Element), m_pTemplate(NULL)
- {
- }
- CFlowDataProvider::CFlowDataProvider(FLOW_DOC_PTR& Doc, FLOW_ELEMENT_PTR& Element, CFlowTemplate* pTemplate) : m_FlowDoc(Doc), m_FlowElement(Element), m_pTemplate(pTemplate)
- {
- ASSERT(m_pTemplate != NULL);
- }
- CFlowDataProvider::~CFlowDataProvider(void)
- {
- }
- /*****************************************************************
- **【函数名称】 getData
- **【函数功能】 获取流程数据
- **【参数】 DataName:数据名称
- **【返回值】 成功true,失败false
- ****************************************************************/
- bool CFlowDataProvider::getData( LPCTSTR DataName, CString& Data )
- {
- try
- {
- Data = m_FlowElement->getAttribute(DataName);
- return true;
- }
- /*catch (_com_error &e)
- {
- ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_ERROR, _T("{FileReader}:解析流程文件时出现异常, %s"), e.ErrorMessage());
- }*/
- catch (...)
- {
- //ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_ERROR, _T("{FileReader}: 解析流程文件时出现未知异常"));
- }
- return false;
- }
- /*****************************************************************
- **【函数名称】 getDataSet
- **【函数功能】 获取流程数据集
- **【参数】 DataName:数据名称
- RS:数据集
- **【返回值】 成功true,失败false
- ****************************************************************/
- bool CFlowDataProvider::getDataSet( LPCTSTR SetName, LPCTSTR DataName, DataSet& RS )
- {
- ASSERT(m_pTemplate != NULL);
- CString NodeXpath;
- NodeXpath.Format(_T("%s[@%s='%s']/%s"), XPATH_IVR_NODE, FLOW_ATTRIBUTE_NAME, m_pTemplate->name(), SetName);
- try
- {
- CString Data;
- FLOW_ELEMENT_PTR DataElement = NULL;
- FLOW_LIST_PTR DataList = m_FlowDoc->selectNodes(NodeXpath.GetBuffer(0));
-
- for(int i = 0; i < DataList->Getlength(); ++i)
- {
- DataElement = DataList->Getitem(i);
- Data = DataElement->getAttribute(DataName);
- RS.AddTail(Data);
- }
- return true;
- }
- /*catch (_com_error &e)
- {
- ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_ERROR, _T("{FileReader}:解析流程文件时出现异常, %s"), e.ErrorMessage());
- }*/
- catch (...)
- {
- //ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_ERROR, _T("{FileReader}: 解析流程文件时出现未知异常"));
- }
- return false;
- }
- /*****************************************************************
- **【函数名称】 getDataSet
- **【函数功能】 获取流程数据集
- **【参数】 DataName:数据名称
- DA:数据集
- **【返回值】 成功true,失败false
- ****************************************************************/
- bool CFlowDataProvider::getDataSet( LPCTSTR SetName, LPCTSTR DataName, DataArray& DA )
- {
- ASSERT(m_pTemplate != NULL);
- CString NodeXpath;
- NodeXpath.Format(_T("%s[@%s='%s']/%s"), XPATH_IVR_NODE, FLOW_ATTRIBUTE_NAME, m_pTemplate->name(), SetName);
- try
- {
- CString Data;
- FLOW_ELEMENT_PTR DataElement = NULL;
- FLOW_LIST_PTR DataList = m_FlowDoc->selectNodes(NodeXpath.GetBuffer(0));
-
- for(int i = 0; i < DataList->Getlength(); ++i)
- {
- DataElement = DataList->Getitem(i);
- Data = DataElement->getAttribute(DataName);
- DA.Add(Data);
- }
- return true;
- }
- /*catch (_com_error &e)
- {
- ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_ERROR, _T("{FileReader}:解析流程文件时出现异常, %s"), e.ErrorMessage());
- }*/
- catch (...)
- {
- //ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_ERROR, _T("{FileReader}: 解析流程文件时出现未知异常"));
- }
- return false;
- }
- /*****************************************************************
- **【函数名称】 getFlowDefVar
- **【函数功能】 获取流程中定义的变量集
- **【参数】 CellDefineVar:定义变量节点
- **【返回值】 成功true,失败false
- ****************************************************************/
- bool CFlowDataProvider::getFlowDefVar( LPCTSTR SetName, CCellDefineVar& CellDefineVar )
- {
- ASSERT(m_pTemplate != NULL);
- CString NodeXpath;
- NodeXpath.Format(_T("%s[@%s='%s']/%s"), XPATH_IVR_NODE, FLOW_ATTRIBUTE_NAME, m_pTemplate->name(), SetName);
- try
- {
- CString VarType;
- CString VarName;
- CString VarVal;
- FLOW_ELEMENT_PTR VarElement = NULL;
- FLOW_LIST_PTR VarList = m_FlowDoc->selectNodes(NodeXpath.GetBuffer(0));
-
- for(int i = 0; i < VarList->Getlength(); ++i)
- {
- VarElement = VarList->Getitem(i);
- VarType = VarElement->getAttribute(CELL_ATTRIBUTE_VAR_TYPE);
- VarName = VarElement->getAttribute(CELL_ATTRIBUTE_VAR_NAME);
- VarVal = VarElement->getAttribute(CELL_ATTRIBUTE_VAR_VAL);
- CellDefineVar.addVar(atoi(VarType), VarName, VarVal);
- }
- return true;
- }
- /*catch (_com_error &e)
- {
- ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_ERROR, _T("{FileReader}:解析流程文件时出现异常, %s"), e.ErrorMessage());
- }*/
- catch (...)
- {
- //ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_ERROR, _T("{FileReader}: 解析流程文件时出现未知异常"));
- }
- return false;
- }
- /*****************************************************************
- **【函数名称】 getFlowBranch
- **【函数功能】 获取流程中的分支信息
- **【参数】 CellBranch:分支节点
- **【返回值】 成功true,失败false
- ****************************************************************/
- bool CFlowDataProvider::getFlowBranch( LPCTSTR SetName, CCellBranch& CellBranch )
- {
- ASSERT(m_pTemplate != NULL);
- CString NodeXpath;
- NodeXpath.Format(_T("%s[@%s='%s']/%s"), XPATH_IVR_NODE, FLOW_ATTRIBUTE_NAME, m_pTemplate->name(), SetName);
- try
- {
- CString Value;
- CString Pos;
- FLOW_ELEMENT_PTR BranchElement = NULL;
- FLOW_LIST_PTR BranchList = m_FlowDoc->selectNodes(NodeXpath.GetBuffer(0));
-
- for(int i = 0; i < BranchList->Getlength(); ++i)
- {
- BranchElement = BranchList->Getitem(i);
- Value = BranchElement->getAttribute(CELL_ATTRIBUTE_VALUE);
- Pos = BranchElement->getAttribute(CELL_ATTRIBUTE_POS);
- CellBranch.addBranch(Value, atoi(Pos));
- }
- return true;
- }
- /*catch (_com_error &e)
- {
- ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_ERROR, _T("{FileReader}:解析流程文件时出现异常, %s"), e.ErrorMessage());
- }*/
- catch (...)
- {
- //ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_ERROR, _T("{FileReader}: 解析流程文件时出现未知异常"));
- }
- return false;
- }
- /*****************************************************************
- **【函数名称】 getFlowSocketInputVar
- **【函数功能】 获取流程中的SOCKET操作的输入变量信息
- **【参数】 CellSocket:SOCKET操作节点
- **【返回值】 成功true,失败false
- ****************************************************************/
- bool CFlowDataProvider::getFlowSocketInputVar( LPCTSTR SetName, CCellSocket& CellSocket )
- {
- ASSERT(m_pTemplate != NULL);
- CString NodeXpath;
- NodeXpath.Format(_T("%s[@%s='%s']/%s"), XPATH_IVR_NODE, FLOW_ATTRIBUTE_NAME, m_pTemplate->name(), SetName);
- try
- {
- CString VarType;
- CString VarVal;
- FLOW_ELEMENT_PTR VarElement = NULL;
- FLOW_LIST_PTR VarList = m_FlowDoc->selectNodes(NodeXpath.GetBuffer(0));
-
- for(int i = 0; i < VarList->Getlength(); ++i)
- {
- VarElement = VarList->Getitem(i);
- VarType = VarElement->getAttribute(CELL_ATTRIBUTE_VAR_TYPE);
- VarVal = VarElement->getAttribute(CELL_ATTRIBUTE_VAR_VAL);
- CellSocket.addInputVar(atoi(VarType), VarVal);
- }
- return true;
- }
- /*catch (_com_error &e)
- {
- ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_ERROR, _T("{FileReader}:解析流程文件时出现异常, %s"), e.ErrorMessage());
- }*/
- catch (...)
- {
- //ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_ERROR, _T("{FileReader}: 解析流程文件时出现未知异常"));
- }
- return false;
- }
|