パッケージ org.opengion.fukurou.process


package org.opengion.fukurou.process

このドキュメントは、バッチフレームワーク『ふくろう』の API 仕様です。

 2.基本設計
   (2)機能概要説明
     3.バッチ処理フレームワーク
       【概要】
           大量データの登録や抜き出しなど、バッチ的な処理を行うフレームワークを作成します。
           このフレームワークに、基本機能の実装と、各種システム固有機能の実装が簡単に
           行えるように、プラグイン方式を採用します。
           なお、このフレームワーク単独での採用は検討していません。エンジンとしては、
           一体として扱います。
 
       【効果】
           簡易的なバッチ(あるDBから抜き出して、別のDBに登録するなど)や、ファイルからの
           入出力などが、簡単に作成できるようになります。
           将来的には、統合サーバー機能を充実させることで、PL/SQLの代わりにJavaで
           業務アプリケーションを作成していく事が可能になります。
 
       【機能】
           1.バッチ共通のMainProcess で、各Process クラス を数珠繋ぎに処理していきます。
           2.処理の開始は、FirstProcess クラスより始めて、順次、ChainProcess実装クラスで
               処理を継続します。
           3.FirstProcess クラス の next() で、次の行が存在するかどうかを判断します。
               以降の ChainProcess では、LineModel が null かどうか判断して、継続処理を行うか
               どうかを決定します。
           4.MainProcess の拡張機能(ログ方式など)をサブクラスで与えます。
 
    org.opengion.fukurou.process (classes)
       → org.opengion.fukurou.db                            classes
       → org.opengion.fukurou.mail                          classes
       → org.opengion.fukurou.model                         classes
       → org.opengion.fukurou.security                      classes
       → org.opengion.fukurou.system                        classes
       → org.opengion.fukurou.util                          classes
       → org.opengion.fukurou.xml                           classes
 
バッチ処理フレームワーク『ふくろう』
  • クラス
    説明
    AbstractProcess は、ChainProcess インターフェースを実装した、Abstract クラスです。
    ChainProcess は、バッチ処理サブクラスの共通インターフェースです。
    FileLineModel は、LineModel を継承した ファイルリスト専用の LineModel の実装クラスです。 FileLineModel オブジェクトには、ファイル属性(Level,File,Length,Modify,LineCnt,Biko,MD5) が設定されます。 オプションで、FILEPATH,ADDRESS,FILENAME 属性を文字列で準備できます。(6.3.1.0 (2015/06/28)) ADDRESS は、指定ファイルの親フォルダ。FILENAME はファイル名。FILEPATH は、ファイル名を含む 完全なファイルパスになります。 ※ 6.3.1.0 (2015/06/28) FILEPATH,ADDRESS,FILENAME 属性追加 この、新しい属性に、値をセットする場合は、useFilePath="true" をセットしてください。 ※ 6.3.1.1 (2015/07/10) Modify のフォーマット(modifyForm)を、指定可能にします。 これは、Date型のまま、扱いたい所だが、文字列化しています。 初期値は、"yyyy/MM/dd HH:mm:ss" です。 LineCnt と、MD5 は、それぞれ、計算するかどうかのフラグを設定する必要があります。 ※ useLineCnt=false の場合のLength(文字数)は、File#length() メソッドで求めます。 一方、useLineCnt=true にすると、行単位に、String#length() を加算するため、 先のLength(文字数)値とは異なりますのでご注意ください。 omitCmnt=true にすると、コメント部分を削除した行数と文字数を求めます。 これは、/* から */ の間、// から改行までです。 ただし、"(二重引用符)で囲まれた文字列は、コメントとみなしません。 8.1.0.4 (2022/01/28) さらに、各行の空行はカウントに含めないことにします。 データの1行分を FileLineModel に割り当てます。 カラム番号は、0 から始まります。カラム名よりカラム番号を求める場合に、 存在しない場合は、-1 を返します。 カラム番号が -1 の場合は、処理を行いません。 注意:このクラスは、同期処理されていません。
    フィルター条件のオペレーションの列挙型です。
    FirstProcess は、バッチ処理サブクラスの共通インターフェースです。
    HybsProcess は、バッチ処理サブクラスの共通インターフェースです。
    LineModel は、データの1行分を管理する為の TableModel と類似の実装クラスです。
    LineModelFilter は、フィルター条件をチェックして、LineModel のフィルタリング を判定する実装クラスです。
    LoggerProcess インターフェース は、AbstractProcess を実行する上で必要となる 各種パラメータを設定します。
    MainProcess は、HybsProcess を継承した、ParamProcess,FirstProcess,ChainProcess の実装クラスを実行するメインメソッドを持つクラスです。
    ParamProcess インターフェース は、AbstractProcess を実行する上で必要となる 各種パラメータを設定します。
    Process_BulkQueryは、データベースから読み取った内容を、一括処理する、 FirstProcess と、ChainProcess のインターフェースを両方持った、実装クラスです。
    Process_DBCountFilter は、データベースの存在件数でフィルタリングする ChainProcess インターフェースの実装クラスです。
    Process_DBFileout は、SELECT文 を指定し データベースの値を抜き出して、 個々のファイルにセーブする、ChainProcess インターフェースの実装クラスです。
    Process_DBMerge は、UPDATE と INSERT を指定し データベースを追加更新 する、ChainProcess インターフェースの実装クラスです。
    Process_DBParam は、他のプロセスへ共通のデータベース接続を割り当てる為の、 ParamProcess インターフェースの実装クラスです。
    Process_DBReaderは、データベースから読み取った内容を、LineModel に設定後、 下流に渡す、FirstProcess インターフェースの実装クラスです。
    Process_DBWriter は、上流から受け取ったデータをデータベースに書き込む CainProcess インターフェースの実装クラスです。
    Process_FileCopy は、上流から受け取った FileLineModel を処理する、 ChainProcess インターフェースの実装クラスです。
    Process_FileFtp は、上流から受け取った FileLineModel を処理する、 ChainProcess インターフェースの実装クラスです。
    Process_FileSearch は、指定のフォルダ以下のファイルを一覧する、FirstProcess インターフェースと、ChainProcess インターフェースの実装クラスです。
    Process_Grep は、上流から受け取った FileLineModelから、文字列を見つけ出す ChainProcess インターフェースの実装クラスです。 正規表現の keyword を上流から受け取った FileLineModel から検索します。 見つかった対象ファイルから、指定の文字列を置換する場合は、-change か -changeFile で、keyword を置換する文字列を指定して下さい。 置換する文字列には、\t と \n の特殊文字が使用できます。 処理対象は、通常は、1行づつ読み取りながら処理を行います。存在チェックの場合は、 見つかった時点で処理を中止します。これは、該当箇所をピックアップするのではなく、 存在しているかどうかを判断して、あれば、下流に流すというのが目的だからです。 keyword を、改行を含む正規表現で、検索・置換する場合は、-useBulkRead 属性を true に設定してください。これは、入力ファイルを一括して読み込みます。 -ignoreCase は、検索時にキーの大文字小文字を無視するように指定します。 -notEquals は、結果(見つかればtrue)を反転(見つからなければtrue)します。 これは、行単位ではなく、ファイル単位に判定しますので、change 指定した場合 でも、対象行は、見つかった行です。ただし、下流に対して、見つからない 場合だけ処理を継続させます。 -inEncode は、入力ファイルのエンコード指定になります。 -outEncode は、出力ファイルのエンコードや、changeFileで指定の置換文字列ファイルの エンコード指定になります。(changeFile は、必ず 出力ファイルと同じエンコードです。) これらのエンコードが無指定の場合は、System.getProperty("file.encoding") で 求まる値を使用します。 -changeFile を使用することで、複数行の文字列に置換することが可能です。 -outfile では、処理を行ったファイル名一覧をセーブします。 上流(プロセスチェインのデータは上流から渡されます。)からのLineModel の ファイルオブジェクトより、指定の文字列が含まれているか検索します。 上流プロセスでは、Name 属性として、『File』を持ち、値は、Fileオブジェクト である、Process_FileSearch を使用するのが、便利です。それ以外のクラスを 使用する場合でも、Name属性と、File オブジェクトを持つ LineModel を受け渡し できれば、使用可能です。 ※ 6.3.1.1 (2015/07/10) useOmitCmnt、useAllFind 機能追加 引数文字列中に空白を含む場合は、ダブルコーテーション("") で括って下さい。 引数文字列の 『=』の前後には、空白は挟めません。必ず、-key=value の様に 繋げてください。 ※ 8.1.3.0 (2022/06/03) jarPrefix、jarSuffix、jarInstr、useRegexp、saveFile 追加 jar ファイルの中身も検索します。その際、jarファイルに圧縮されているファイル名での 絞り込みができるように、指定できる属性を追加します。 ただし、jarファイル内の検索は、useAllFind=true(置換ではなく検索だけ最後まで行う)のみです。 上流から jar ファイルが指定された場合は、常に検索対象になります。
    Process_GrepChange は、上流から受け取った FileLineModelから、語句を 置換する、ChainProcess インターフェースの実装クラスです。
    Process_GrepChangeExcel は、上流から受け取った FileLineModelから、語句を 置換する、ChainProcess インターフェースの実装クラスです。
    Process_LDAPReaderは、LDAPから読み取った内容を、LineModel に設定後、 下流に渡す、FirstProcess インターフェースの実装クラスです。
    Process_Logger は、画面出力、ファイルログ、エラーメールを管理する、 ロギング関係の LoggerProcess インターフェースの実装クラスです。
    Process_StringUtil は、上流から受け取ったデータをStringUtilクラスの特定の メソッドでデータ変換する、CainProcess インターフェースの実装クラスです。
    Process_TableDiffは、ファイルから読み取った内容を、LineModel に設定後、 下流に渡す、FirstProcess インターフェースの実装クラスです。
    Process_TableFilter は、上流から受け取ったデータをフィルタする、 ChainProcess インターフェースの実装クラスです。
    Process_TableReaderは、ファイルから読み取った内容を、LineModel に設定後、 下流に渡す、FirstProcess インターフェースの実装クラスです。
    Process_TableWriter は、上流から受け取ったデータをファイルに書き込む CainProcess インターフェースの実装クラスです。
    XSLT変換結果を指定のファイルに出力します。