カスタム クラスがあります。これを FileProcessUpload と呼び、RunBaseBatch を拡張します。多かれ少なかれ CSV ファイルを作成し、それを FTP サーバーにアップロードします。クラスを手動で実行すると、すべて正常に動作します。ただし、バッチ ジョブとして送信すると、情報ログに「AsciiIO オブジェクトが初期化されていません」というエラーが記録されます。
ここで注意すべき最も重要なことは、このバッチ ジョブが別の AOS に委任されていることです。
問題のあるコードの切り詰めたバージョンを次に示します。
void CreateFiles()
{
#File
AsciiIO asciiio;
FileIOPermission permission;
ATable aTable;
str outputFile;
str directory;
;
directory = @'C:\Uploads';
ouptutFile = directory + @'\output.csv';
if (!WinAPI::folderExists(directory))
{
WinAPI::createDirectory(directory);
}
// Try to assert the appropriate file access mode
permission = new FileIOPermission(outputFile, #io_write);
permission.assert();
// Try to open the file for writing
asciiio = new AsciiIO(outputFile, #io_write);
if (asciiio != null)
{
while select aTable
{
// Write the necessary lines into the file
asciiio.write(aTable.field1 + ',' + aTable.field2);
}
}
else
{
error('Could not create file: ' + outputFile);
}
// Close file and release permission assertion
asciiio = null;
CodeAccessPermission::revertAssert();
}