使用AE調用XML Publisher 時。數據源的選擇和生成報表的代碼緊密相關。
XML File 數據源: 所用方法 SetRuntimeDataXMLFile
XML Doc 數據源: 所用方法 SetRuntimeDataXMLDoc
RowSet 數據源: 使用方法 SetRuntimeDataRowset
Query數據源 : SetPSQueryPromptRecord
數據源和生成方法必須一一對應。
此由如下代碼控制:
Evaluate &Report.Ds_type
When = "QRY"
rem rsh ICE 1836783000;
&sDataFile = %This.sSrvTmpDir | &sDirSep | "Data" | &sDirSep | &sDataFile;
%This.GenerateXmlFileFromQuery(&sDataFile);
Break;
When = "CQR" /* Connected Query */
rem mdu XXX %This.GenerateXmlFileFromConnQuery(&sConQryOutFileName, &sProcessId);
%This.GenerateXmlFileFromConnQuery(&sConQryOutFileName, String(&ProcessInstance)); /* mdu XXX */
If Not FileExists(&sConQryOutFileName, %FilePath_Absolute) Then
throw CreateException(235, 2308, "Data file is required but not specified correctly");
Else
%This.SetRuntimeDataXMLFile(&sConQryOutFileName);
End-If;
&sDataFile = &DataXMLFile;
Break;
When = "RST"
rem rshw TODO: This function needs to be passed file path instead of returning string;
&sXmlData = %This.GenerateXmlFromRowset();
If &sXmlData = "" Then
throw CreateException(235, 2305, "Failed to generate or read data source XML file");
End-If;
rem rsh ICE 1836783000;
&sDataFile = %This.sSrvTmpDir | &sDirSep | "Data" | &sDirSep | &sDataFile;
%This.WriteXmlDataFile(&sXmlData, &sDataFile);
Break;
When = "XMD"
&sXmlData = %This.GenerateXmlFromXmlDoc();
If &sXmlData = "" Then
throw CreateException(235, 2305, "Failed to generate or read data source XML file");
End-If;
rem rsh ICE 1836783000;
&sDataFile = %This.sSrvTmpDir | &sDirSep | "Data" | &sDirSep | &sDataFile;
%This.WriteXmlDataFile(&sXmlData, &sDataFile);
Break;
When = "XML"
If &DataXMLFile = "" Then
throw CreateException(235, 2308, "Data file is required but not specified correctly");
End-If;
&sDataFile = &DataXMLFile;
Break;
When-Other
Break;
End-Evaluate;