Storage Providerの仕様がGeneXus 15 Upgrade 8以降でいくつか変更されておりましたので、ご紹介します。
エクセルの出力先
以前のエクセル出力機能ではアプリケーション直下のディレクトリに、エクセルファイルが生成される仕様でした。
GeneXus 15 Upgrade 7(日本では未リリースなので実質Upgrade 8)から Storage Provider プロパティに外部ストレージを指定している場合、出力先は外部ストレージになりました。
Folder Name プロパティに値を設定しても、デフォルトではバケット直下にファイルが生成されておりました。
なお、WorkWithやWorkWithPlusのエクセル出力機能のデフォルトのままでは、404ステータスエラーが発生してファイルがダウンロードできませんでした。
次のコードをエクセル出力のプロシージャに追記することで、ダウンロードできるようになりました。
1 2 |
&StorageProvider.GetPrivate(&Filename, &File, 1, &Messages) &Filename = &File.GetURI() |
Storage Provider API
GeneXus 15 Upgrade 9(日本では未リリースなので実質Upgrade 10)にてStorage Provider APIを使用する場合に、Fileデータタイプのメソッドでの戻り値が変更されました。
以下の例を基に説明します(バケットやファイルは存在しませんので、アクセスしないでください)。
- 外部ストレージ:Amazon S3
- バケット名:bucket-name
- ディレクトリ名:directory
- ファイル名:picture.png
GetNameメソッド
- 仕様変更前:directory/picture.png
- 仕様変更後:picture.png
GetPathメソッド
- 仕様変更前:https://bucket-name.s3.amazonaws.com/directory/picture.png
- 仕様変更後:directory
GetAbsoluteNameメソッド
- 仕様変更前:https://bucket-name.s3.amazonaws.com/directory/picture.png
- 仕様変更後:directory/picture.png
それぞれのメソッドとして期待されるデータが取得できるようになりましたが、大きく変更されておりますので、注意が必要ですね。
なお、以前のようにファィルのURLを取得する場合には、GeneXus 15 Upgrade 9にて追加されたGetURIメソッドを使用します。
2019.02.05追記
404ステータスエラーが表示されてダウンロードできない件ですが、GeneXusのSACに登録されておりました。
GeneXus SAC – 外部のストレージプロバイダを設定してWorkWithパターンの[エクスポート]オプションを使用した場合404エラーが発生する
https://sac.genexus.jp/viewtr_saclist.aspx?42631,
修正予定についてジェネクサス・ジャパン社に確認したところ、現時点では未定とのご回答をいただきました。
2019.04.02追記
SACの修正予定日に記載はありませんが、GeneXus 16 Upgrade 3にて修正予定との連絡をいただきました。
また、WorkWithPlusで出力したエクセルでも同様な事象が発生しておりましたが、12.14で修正されました。