- PR -

バッチをオブジェクト指向で設計

投稿者投稿内容
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2004-02-27 17:07
ええと、Java Solutionでよいのですよね?^^;

枯れた仕組みを利用するなら、JMS準拠のMessageQueueで行うべきでしょうか?

先の話になりますが、ワーカーであるサーバにジョブキューを監視させるのではなくて、
ジョブキューを所有するサーバが一定数のワーカースレッドを所有して、各スレッドが
ワーカーのサーバに配信するような仕組みでよいなら、JDK1.5で簡単に作れるように
なると思います。

コアAPIにjava.util.concurrent.ThreadPoolExecutorという、WorkerThreadパター
ンを丸ごと実装したクラスが追加になっていますので。
キラ
会議室デビュー日: 2004/02/26
投稿数: 7
お住まい・勤務地: 山奥
投稿日時: 2004-02-27 18:27
引用:
はにまるさんの書き込み (2004-02-26 13:13) より:
このテンプレートは
「入力部」、「処理部」、「出力部」、「バックアップ部」、「エラー処理部」の
5つの構成で成り立っており、中間ワークDBで各構成の情報連携をしています。



はにまるさん、こんばんは。

その例はバリバリオブジェクト指向で作れそうですよ。

用意するのは
■抽象クラス
・コントローラークラス(ジョブログ記述部、再実行の処理を実装しておく)
・入力クラス(受信部の処理を実装)
・出力クラス(送信部の処理を実装)
・処理クラス
・バックアップクラス
・エラー処理クラス(エラー通知の処理を実装)

■具象クラス
□コントローラークラス
・外部インターフェース入力コントローラークラス(ファイル存在による自動稼動処理を実装)
・外部インタフェース出力コントローラークラス
・更新処理コントローラークラス

□入力、処理、バックアップ、エラー処理クラス
必要なものを作成


実装は
外部インターフェース入力コントローラークラスは
  入力、処理、バックアップの各クラスを生成し、その順に実行
外部インタフェース出力コントローラークラスは
  処理、出力、バックアップの各クラスを生成し、その順に実行
更新処理コントローラークラスは
  処理クラスを生成し実行

各コントローラークラスは実行中にエラーがあればエラー処理クラスを生成し実行。

あまり私も経験がないのでこれで良いかわかりませんが
こんな感じになるのでは。
Template Methodパターンですね。
外部からの実行は具象コントローラークラスのmain()からになります。
修正があった場合は具象入力、処理、バックアップ、エラー処理クラスの
どれかを直すだけでOK。


この処理はフレームワークが既に存在すると考えて作りました。
上に書いた抽象クラスの上位クラスは型とインターフェースが規定されている。
上に書いた抽象クラスは具象クラスの共通部分を括りだした
共通クラス(手続き型で言えばいわゆる共通サブルーチンにあたる)です。
ですから汎用フレームワークは具体的な業務処理によらない抽象度での
共通化(どの業務処理でも必要な機能を括り出すべき)が必要です。

どの業務処理でも必要な機能って何?
というところが悩みどころ



[ メッセージ編集済み 編集者: キラ 編集日時 2004-02-27 18:30 ]

[ メッセージ編集済み 編集者: キラ 編集日時 2004-02-27 18:33 ]

[ メッセージ編集済み 編集者: キラ 編集日時 2004-02-27 18:46 ]

[ メッセージ編集済み 編集者: キラ 編集日時 2004-02-29 07:26 ]
しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2004-02-29 03:58
引用:

takuさんの書き込み (2004-02-27 15:39) より:
 汎用機時代(3年ちょっと前)にフレームワークという言葉自体を、
耳にしたことが無いですね・・・。



わたしも生半可な知識ですが、フレームワークという言葉ではなくて、
いわゆる「汎用ミドル製品」という言葉で。
こういうことをするにはこの社のこのミドルを使うという定番があったような。
キラ
会議室デビュー日: 2004/02/26
投稿数: 7
お住まい・勤務地: 山奥
投稿日時: 2004-02-29 08:11
バッチ処理のパフォーマンスにも絡んでくると思うのですが
バッチ処理につきもののソート処理の実装ってどうなんでしょ?

ファイルをソートしたい場合
(1)中間データベース利用
(2)市販の外部ソートユーティリティ使用
(3)Collections.sort()+Comparator
(4)自分で1から書く!!
(5)その部分はscript言語(Perlなど)に任せる

それぞれメリットデメリットはあると思いますが
個人的には件数が少なければ3で多ければ1かなと。

スキルアップ/キャリアアップ(JOB@IT)