「汎用エクスポートプロセス」は、iDempiere/JPiereのデータを他のシステムに渡す際に、他のシステムが取り込めるように変換し、テキストファイルとしてダウンロードする一連の処理を汎用的に実行できるようにしたプロセスです。
エクスポートするデータの並び順(レイアウト)や、テキストファイルの文字コードや改行コード、区切り文字、囲み文字等の指定や文字列の置換などが設定で行えます。
データソーステーブルにあるデータのエクスポート(ダウンロード)
汎用エクスポートプロセスは、データソーステーブルにあるデータをエクスポートする機能です。
エクスポートするデータの並び順(レイアウト)の設定
エクスポートするデータの縦の列(項目/カラム)の並び順と、横のレコードの並び順を設定できます。
エクスポートするデータの形式
エクスポートできるテキストファイルのデータ形式は下記の4つです。
- CSV
- タグ区切り
- 固定長
- 区切り文字指定…列のデータの区切り文字を指定できます。
文字コード指定
色々な文字コードを直接指定できます。
改行コード指定
改行コードを下記のいずれにするか指定できます。
- CRLF
- CR
- LF
ヘッダ行の有無の選択
エクスポートするテキストファイルにヘッダ行をつけるかどうか選択できます。
囲み文字の有無の選択
エクスポートするデータの両端に囲み文字として「"(ダブルクォテーション)」を付けるかどうか選択できます。
ファイル名の指定
エクスポートするファイル名を付けることができます。ファイル名には日付やAD_PInstance_IDなど汎用エクスポートプロセスの実行時の情報を付加させることもできます。
スケジューラーを使用して定期的な自動エクスポート
スケジューラーを使用することで、特定の場所に定期的にファイルを自動的にエクスポートすることができます。
汎用エクスポートプロセスの処理概要
「汎用エクスポートプロセス」は、データソースとなるテーブル(以下、「データソーステーブル」)からエクスポートするデータを抽出し、他のシステムが取り込めるように変換してテキストファイルとしてダウンロードできます。
データソーステーブルには、渡す対象となっているデータが格納されているテーブルを直接指定することもできますし、データソーステーブルにテンポラリーテーブル(一時テーブル)を指定して、プロセスで何らかの処理したデータをそのテンポラリーテーブルに格納してエクスポートするようなこともできます。
処理パターン1: プロセスを併用しない場合(データソーステーブルにデータを格納しているテーブルを直接指定する場合)
データの並び順(レイアウト)の指定や、文字列の単純な置換程度の軽微な変換処理でデータをエクスポートする処理パターンです。
処理パターン2: プロセスを併用する場合(データソーステーブルにテンポラリーテーブルを使用する場合)
複雑なデータ変換処理が必要な場合に、プロセスで加工したデータをテンポラリーテーブルに格納しデータソーステーブルに指定して、エクスポートすることができます。開発者はデータを加工してテンポラリーテーブルに格納する所までを開発すればよく、エクスポートする部分は汎用エクスポートプロセスに任せることができますので、その分開発工数を削減できます。
汎用エクスポートフォーマットタブ
汎用エクスポートフォーマットタブでは、エクスポートするデータ全体に関する設定を行います。
◆データソーステーブル
エクスポートするデータがあるテーブルを入力します。
◆プロセス
加工したデータをエクスポートする場合に、そのデータを加工するプロセスを設定します。加工したデータはデータソーステーブルに格納します。その場合データソーステーブルはテンポラリーテーブル("T_"からはじまるテーブル)にし、プロセスインスタンスID(AD_PInstance_ID)をインサートするレコードに含めて下さい。汎用エクスポートプロセスはエクスポートするレコードをAD_PInstance_IDをキー情報として抽出してエクスポートします。
◆フォーマットの種類
区切り文字に使用する文字を選択入力します。
- カンマ区切り(CSV)[Comma Separated]:C
- タブ区切り[Tab Separated]:T
- 区切り文字を指定[Custom Separator Char]:U
- 固定長[Fixed Position]:F
◆区切り文字
フォーマットの種類が"区切り文字を指定"の場合に、区切り文字を入力します。
◆囲み文字
囲み文字に使用する文字を選択入力します。
- ダブルクォーテーション[Double quotes]:D
- なし[Nothing]:N
◆文字コード
文字コードを直接入力します。
【参考入力値】
- Shift_JIS
- UTF-8
◆改行コード
改行コードに使用する文字列を選択入力します。
- CRLF
- CR
- LF
◆SQL WHERE句
エクスポートするデータの範囲を制限したい場合にその条件を入力します。
◆SQL ORDER BY句
エクスポートするレコードの並び順を指定します。
◆ファイル名パターン
作成するCSVファイルの名称を入力してください。「@変数名@」を使用してプロセスログの情報を変数指定してファイル名に含めることができます。汎用エクスポートプロセスの実行日付やプロセスインスタンスIDをファイル名に含めたい場合は下記のように設定します。
【設定例】
- @Created<yyyyMMddhhmmss>@
- @AD_PInstance_ID@
◆拡張子
エクスポートするテキストファイルの拡張子を直接入力します。
【拡張子の例】
- csv
- txt
◆Zip圧縮する
エクスポートするファイルをZIP圧縮したい場合にONにします。
◆ストレージプロバイダー
エクスポートするファイルを特定の場所に保存したい場合に、ストレージプロバイダーを指定します。汎用エクスポートプロセスを実行するとストレージプロバイダーに設定されているパスにファイルが保存されます。
フォーマットフィールドタブ
フォーマットフィールドでは、エクスポートするデータの縦の列の並び順を設定します。
◆シーケンスNo
シーケンスNoの小さい順にエクスポートするデータの列の左側に配置されます。
◆ヘッダ
ヘッダ行を付ける場合にエクスポートするデータのヘッダ行に使用されます。
◆エクスポートタイプ
下記のいずれかを選択します。
- 変数[variable]:V … データソーステーブルの特定のカラムの値をセットする場合
- 定数[Constant]:C … 定数で決まった値をセットする場合
- 空欄[Blank]:B … 空欄にする場合
◆長さ
エクスポートする文字列の文字数を指定します。その文字数で文字列がトリミングされます。0はトリミングしませんので文字数を調整する必要がなければ0を指定して下さい。ただし、フォマットの種類が"固定長"の場合は0は設定できませんので、適切な文字数を指定して下さい。
◆カラム
エクスポートタイプで"変数"を選択した時に表示され、必須入力となります。 ここで設定したカラムのデータをエクスポートします。
◆データ書式
エクスポートタイプで"変数"を選択した時に表示され、日付と数値の書式を設定できます。日付の例: yyyy/MM/dd
数値の例: #,##0.00
◆定数値
エクスポートタイプで定数を選択した時に表示され、必須入力となります。 ここで設定した値をエクスポートします。
◆区切り文字のエスケープ処理
エクスポートするデータの中に区切り文字が使用されている可能性がある場合にONにします。そうすると該当文字があった場合に\(バックスラッシュ)を付けるエスケース処理が行えます。
◆囲み文字で囲む
汎用エクスポートフォーマットタブで囲み文字を使用する設定になっている場合に、フォーマットフィールドのデータを囲み文字で囲みたい場合にONにします。
◆囲み文字のエスケープ処理
囲み文字で囲む際に、エクスポートするデータの中に囲み文字が使用されている可能性がある場合にONにします。そうすると該当文字があった場合に\(バックスラッシュ)を付けるエスケープ処理が行えます。
◆埋め合わせ方法
フォーマットの種類が”固定長”の時に、エクスポートする文字列の文字数が長さに設定されている数値に足りなかった場合に埋め合わせの方法を下記から選択入力します。
- 左詰め[Left justified]: L
- 右詰め[Right justified]: R
◆埋め合わせ文字
フォーマットの種類が”固定長”の時に、エクスポートする文字列の文字数が長さに設定されている数値に足りなかった場合に埋め合わせに使用する文字を選択入力します。
- スペース
- ゼロ(0)
- アスタリスク(*)
置換タブ
置換タブでは、フォーマットフィールドのデータに対して行いたい置換処理を設定できます。文字列の中に改行コードが含まれている場合に取り除くような使い方も想定しています。
◆置換方法
置換する方法を下記の選択肢から選択します。
- 文字列[String]:S … 特定の文字列を特定の文字列に変換することができます。
- 正規表現[Regex]:R … 正規表現に合致した部分を特定の文字列に変換することができます。
◆ターゲット文字列
置き換えたい文字列を入力します。「置換方法」が”文字列“の場合は、ターゲット文字列には置き換えたい文字列を入力します。”正規表現”の場合には置き換えたい文字列に該当する正規表現を入力します。
◆置き換える文字列
ターゲット文字列に該当する文字列を置き換える文字列を入力します。
汎用エクスポートプロセス
ここでは【JPIERE-0454】弥生会計インポート用仕訳データ作成を汎用エクスポートプロセスと組み合わせて使用するのを例にして説明します。
プロセス実行画面
汎用エクスポートプロセスのアプリケーション辞書の設定
汎用エクスポートプロセスでは、汎用エクスポートフォーマット1つに対して1つプロセスを登録する想定です。そして、そのプロセスから汎用エクスポートプロセス(jpiere.base.plugin.org.adempiere.process.GenericExportProcess)を呼び出すように設定します。
プロセスの実行条件を入力するパラメータには、必ず汎用エクスポートフォーマットを追加します。実行する汎用エクスポートパラメーターはユーザーが変更できないように初期値を設定し、読取専用にすることを想定しています。
次に、特定の条件に合致するデータをエクスポートしたい場合には、その条件指定に必要なパラメータを追加します。
データを加工するプロセスが汎用エクスポートフォーマットに指定されている場合、汎用エクスポート以外のパラメーターは、データを加工するプロセスに引き継がれます。
データを加工するプロセスは、汎用エクスポートフォーマットに予め指定しておきます。そのプロセスでは加工したデータを、データソーステーブルにAD_PInstance_IDと一緒にインサートします。あとはそのAD_Pinstance_IDをキー情報として、汎用データエクスポートプロセスがエクスポートするデータを抽出し、テキストファイルにしてエクスポートします。
汎用エクスポートフォーマットにデータを加工するプロセスが設定されていない場合は、 「汎用エクスポートフォーマット」以外の実行上条件はデータソーステーブルからデータを抽出する条件として使用されます。
追加テーブル
- JP_GenericExpFormat
- JP_GenericExpFormat_Row
- JP_GenericExpFormat_Replace
追加モデルクラス
- MGenericExpFormat
- X_JP_GenericExpFormat
- I_JP_GenericExpFormat
- MGenericExpFormatRow
- X_JP_GenericExpFormat_Row
- I_JP_GenericExpFormat_Row
- MGenericExpFormatRelace
- X_JP_GenericExpFormat_Replace
- I_JP_GenericExpFormat_Replace
追加プロセス
- jpiere.base.plugin.org.adempiere.process.GenericExportProcess
その他のクラス
◆ストレージプロバイダーのプラグイン化
ストレージプロバイダーを使用して、ファイルをディスク上に保存する処理をプラグイン化しています。
- DefaultGenericExportStorageProvider