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

package org.opengion.fukurou.process

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

     ２．基本設計
       （２）機能概要説明
         ３．バッチ処理フレームワーク
           【概要】
               大量データの登録や抜き出しなど、バッチ的な処理を行うフレームワークを作成します。
               このフレームワークに、基本機能の実装と、各種システム固有機能の実装が簡単に
               行えるように、プラグイン方式を採用します。
               なお、このフレームワーク単独での採用は検討していません。エンジンとしては、
               一体として扱います。

           【効果】
               簡易的なバッチ（あるDBから抜き出して、別のDBに登録するなど）や、ファイルからの
               入出力などが、簡単に作成できるようになります。
               将来的には、統合サーバー機能を充実させることで、PL/SQLの代わりにJavaで
               業務アプリケーションを作成していく事が可能になります。

           【機能】
               １．バッチ共通のMainProcess で、各Process クラス を数珠繋ぎに処理していきます。
               ２．処理の開始は、FirstProcess クラスより始めて、順次、ChainProcess実装クラスで
                   処理を継続します。
               ３．FirstProcess クラス の next() で、次の行が存在するかどうかを判断します。
                   以降の ChainProcess では、LineModel が null かどうか判断して、継続処理を行うか
                   どうかを決定します。
               ４．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

- Related Packages
  パッケージ
  説明
  org.opengion.fukurou
  このドキュメントは、夜間バッチ『ふくろう』の ＡＰＩ 仕様です。
- クラス
  説明
  AbstractProcess
  AbstractProcess は、ChainProcess インターフェースを実装した、Abstract クラスです。
  ChainProcess
  ChainProcess は、バッチ処理サブクラスの共通インターフェースです。
  FileLineModel
  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) さらに､各行の空行はｶｳﾝﾄに含めないことにします｡ ﾃﾞｰﾀの１行分を FileLineModel に割り当てます｡ ｶﾗﾑ番号は､0 から始まります｡ｶﾗﾑ名よりｶﾗﾑ番号を求める場合に､ 存在しない場合は､-1 を返します｡ ｶﾗﾑ番号が -1 の場合は､処理を行いません｡ 注意：このｸﾗｽは､同期処理されていません｡
  FilterOperation
  フィルター条件のオペレーションの列挙型です。
  FirstProcess
  FirstProcess は、バッチ処理サブクラスの共通インターフェースです。
  HybsProcess
  HybsProcess は、バッチ処理サブクラスの共通インターフェースです。
  LineModel
  LineModel は、データの１行分を管理する為の TableModel と類似の実装クラスです。
  LineModelFilter
  LineModelFilter は、フィルター条件をチェックして、LineModel のフィルタリング を判定する実装クラスです。
  LoggerProcess
  LoggerProcess インターフェース は、AbstractProcess を実行する上で必要となる 各種パラメータを設定します。
  MainProcess
  MainProcess は、HybsProcess を継承した、ParamProcess,FirstProcess,ChainProcess の実装クラスを実行するメインメソッドを持つクラスです。
  ParamProcess
  ParamProcess インターフェース は、AbstractProcess を実行する上で必要となる 各種パラメータを設定します。
  Process_BulkQuery
  Process_BulkQueryは、データベースから読み取った内容を、一括処理する、 FirstProcess と、ChainProcess のインターフェースを両方持った、実装クラスです。
  Process_DBCountFilter
  Process_DBCountFilter は、データベースの存在件数でフィルタリングする ChainProcess インターフェースの実装クラスです。
  Process_DBFileout
  Process_DBFileout は、SELECT文 を指定し データベースの値を抜き出して、 個々のファイルにセーブする、ChainProcess インターフェースの実装クラスです。
  Process_DBMerge
  Process_DBMerge は、UPDATE と INSERT を指定し データベースを追加更新 する、ChainProcess インターフェースの実装クラスです。
  Process_DBParam
  Process_DBParam は、他のプロセスへ共通のデータベース接続を割り当てる為の、 ParamProcess インターフェースの実装クラスです。
  Process_DBReader
  Process_DBReaderは、データベースから読み取った内容を、LineModel に設定後、 下流に渡す、FirstProcess インターフェースの実装クラスです。
  Process_DBWriter
  Process_DBWriter は、上流から受け取ったデータをデータベースに書き込む CainProcess インターフェースの実装クラスです。
  Process_FileCopy
  Process_FileCopy は、上流から受け取った FileLineModel を処理する、 ChainProcess インターフェースの実装クラスです。
  Process_FileFtp
  Process_FileFtp は、上流から受け取った FileLineModel を処理する、 ChainProcess インターフェースの実装クラスです。
  Process_FileSearch
  Process_FileSearch は、指定のフォルダ以下のファイルを一覧する、FirstProcess インターフェースと、ChainProcess インターフェースの実装クラスです。
  Process_Grep
  Process_Grep は、上流から受け取った FileLineModelから、文字列を見つけ出す ChainProcess ｲﾝﾀｰﾌｪｰｽの実装ｸﾗｽです｡ 正規表現の keyword を上流から受け取った FileLineModel から検索します｡ 見つかった対象ﾌｧｲﾙから、指定の文字列を置換する場合は、-change か -changeFile で、keyword を置換する文字列を指定して下さい｡ 置換する文字列には、\t と \n の特殊文字が使用できます｡ 処理対象は、通常は、１行づつ読み取りながら処理を行います｡存在ﾁｪｯｸの場合は、 見つかった時点で処理を中止します｡これは、該当箇所をﾋﾟｯｸｱｯﾌﾟするのではなく、 存在しているかどうかを判断して、あれば、下流に流すというのが目的だからです｡ 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
  Process_GrepChange は、上流から受け取った FileLineModelから、語句を 置換する、ChainProcess インターフェースの実装クラスです。
  Process_GrepChangeExcel
  Process_GrepChangeExcel は、上流から受け取った FileLineModelから、語句を 置換する、ChainProcess インターフェースの実装クラスです。
  Process_LDAPReader
  Process_LDAPReaderは、LDAPから読み取った内容を、LineModel に設定後、 下流に渡す、FirstProcess インターフェースの実装クラスです。
  Process_Logger
  Process_Logger は、画面出力、ファイルログ、エラーメールを管理する、 ロギング関係の LoggerProcess インターフェースの実装クラスです。
  Process_StringUtil
  Process_StringUtil は、上流から受け取ったデータをStringUtilクラスの特定の メソッドでデータ変換する、CainProcess インターフェースの実装クラスです。
  Process_TableDiff
  Process_TableDiffは、ファイルから読み取った内容を、LineModel に設定後、 下流に渡す、FirstProcess インターフェースの実装クラスです。
  Process_TableFilter
  Process_TableFilter は、上流から受け取ったデータをフィルタする、 ChainProcess インターフェースの実装クラスです。
  Process_TableReader
  Process_TableReaderは、ファイルから読み取った内容を、LineModel に設定後、 下流に渡す、FirstProcess インターフェースの実装クラスです。
  Process_TableWriter
  Process_TableWriter は、上流から受け取ったデータをファイルに書き込む CainProcess インターフェースの実装クラスです。
  Process_XSLT
  XSLT変換結果を指定のファイルに出力します。