S2Chronos
非常に便利です!でもはまりました。。。 脱サラ大学生のプログラム日記で紹介していただきました。ありがとうございます。 ご存知のとおり、あまり複雑なことはできません。ちょっとしたバッチ処理で使うとよいですよ。というか、複雑なことをやるとS2Chron…
とはよく言ったものですが、本業との兼ね合いで、地豆はおろか、自分のプロダクトにコミットできていません>< 継続は力なりは大事ですね。 地豆に関しても、このような自分のライフスタイルに会っていて、地豆の優先度に会うタスクを見出せないでいる。 地…
お次はタスクグループをタスククラス内に複数定義する方法です. 以下の例ではタスククラス内に二つのタスクグループを作っています.タスクグループを指定するにはdoから始まるタスクメソッドにTaskGroupアノテーションを使ってグループ名を記述します.タ…
バッチ処理を効率よく実行するには,マルチスレッド化はかかせません. ただし,ハードウェアリソースを無視してスレッドを作りすぎるのはあまり賢い方法ではありませんので,ここはスレッドプールを使いましょう.ということで,S2Chronosの内部では,Java5…
詳しくは知りませんが,JP1にはジョブとジョブグループが存在します. ジョブ,つまりバッチ処理の最小単位ですが,ジョブグループはジョブを複数内包することができます.これをそのままクラス表現にすると,コンポジットパターンでJobGroupはJobを複数保持…
退屈な説明ですが,基本的なことなんでご容赦をw 初期化処理,破棄処理に加えてタスクを実行前と実行後に呼ばれるメソッドを定義できます.startとendというメソッド名で定義してください.下記の例では,呼び出し順序が,initialize→ start → doExecute → …
スレッドプール周りの話に行く前に,初期化と破棄処理のお話をしておかないとまずいw. initializeとdestroyという名のメソッドを定義してください.そうするとS2Chronosのスケジューラによって登録された後に,スケジューラがタスクを順番に検索します.そ…
1.0.0をリリースした記念にS2Chronosの使い方を簡単に紹介していく記事を書いていきたいと思います. セットアップ セットアップ手順は http://s2chronos.sandbox.seasar.org/ja/install.html をご覧ください.サンプルのダウンロードは http://s2chronos.sa…
遅くなりましてすみません.やっとこさリリースしました.initializeメソッドとdestroyメソッドが名ばかりだったのですが,今回のリリースでちゃっと動作するようにしました. これまでのinitializeとdestoryは,start, endに置き換わっていますのでご注意く…
次ぐらいにRCがとれればいいのですが,,,皆様のフィードバックを受けて徐々に使えるものになってきていると感じています.ほんとにありがとうございます
結構痛い不具合がでてましたが,なんとか対応しましたw あと,Teedaでのサンプルも添付しました.ご参考までに.http://s2chronos.sandbox.seasar.org/ Bugfix [CHRONOS-14] スレッドプールサイズが肥大化する [CHRONOS-13] destoryメソッドが呼ばれないと…
CronTriggerに問題があったのですがQuartzからパーサーを移植*1しました. のため,CronTriggerの仕様がQuartz準拠になります.仕様についてはこちらをご覧ください. よろしくお願いします. *1:同じApache Licenseであるためライセンス的問題はありません
S2Chronosですが,core部分がやっと5000行超えました.なるべくコードを増やさないで実装するコンセプトだったので今のところはうまくいってる感じです(汗 んで,すみません.いろいろとコードの美しさにこだわってしまい.ちょっとリリースが遅れていますが…
さっそく,MLでS2Chronosに対して初の問い合わせがきました! まだまだ,これからですが皆様のお役に立てるように頑張ります!
いやー,大変遅くなりましたが,とりあえず0.0.1-RC1として初リリースしました.http://s2chronos.sandbox.seasar.org/ja/ドキュメントがほとんどないのですが,これから徐々にそろえていきたいと思います.
DiconConditionUtil.これは使える! <components namespace="teeda"> <include path="convention.dicon" condition="@org.seasar.teeda.core.util.DiconConditionUtil@hasConvention()" /> <include path="teedaErrorPage.dicon" condition="@org.seasar.teeda.core.util.DiconConditionUtil@hasErrorPageDicon()" /> </include></include></components>
http://s2chronos.sandbox.seasar.org/ja/すみません.徐々にUpdate中です.
深夜に集中力を切らさないように気合い注入しつつ永続化のコードを書いています. 結局のところ,S2DaoとS2Dxoの助けを借りてだいぶ楽にコーディングできます. Java5の列挙型が何も考えずに,Dxo -> Daoで直接DBに保存できるのはありがたい.もちろんその逆…
永続化機能の作り込みをやっていて,それに併せてリファクタリングも継続的に実施中です.まだまだ,かかりそうです. 最近,コミュニティの方と,やりとりすることが多いのですが,S2Chronosが待ち遠しいとおっしゃってくれる方に遭遇する機会が多くなって…
s2chronos-core.jar, s2chronos-extension.jarに分けます. coreにスケジューラとしての基本機能と,extensionには永続化なのど拡張機能を含めることになるかと思います. examplesはjar化はなしでソースのみ提供ということで.ちなみに,今回気づいたのです…
S2ChronosをSMART deployに対応しました. 具体的には,Taskクラスを ルートパッケージ名.taskに,クラス名をxxxTaskのサフィックス名で配置すると,自動的にS2Chronosのスケジューラに登録されます. SMART Deployを利用しない場合は,以下のように登録すれ…
タスク(ジョブをタスクに改名しました)に以下のsetter/getterを配置することで,トリガーの機能を実現することにしました. getStartTaskでtrueを返すとスケジューラから当該タスクが起動され,逆にgetEndTaskでtrueを返すと終了します. getShutdownTaskの…
org.seasar.chronos.delegate.MethodInvokerは,.NETのデリゲートのような機能を提供します. 材料は,ExecutorServiceと,S2に登録されているコンポーネントです.使い方はこんな感じ.C#ではデリゲートをよく使っていたのですが,Javaでは使えません.しか…
テストは不十分なのですが,ジョブ関連の実装がほぼ完了.このあとは,トリガーとジョブの関係について再度設計を入れてからまた実装に入りたいと思います.ソースはこの辺から見れます. https://www.seasar.org/svn/sandbox/s2chronos/
非同期ジョブの場合、遷移先をあらかじめアノテーションで定義しなければならないのですが、同期ジョブの場合は戻り値で遷移先を指定できるようにしました。 // ジョブメソッドA @Group("groupA") @Join(JoinType.Wait) public String doJobA() throws Excep…
ちょっと思いつきですが, @Cloneで当該ジョブの複製する数を指定するとJobExecutorServiceによって複製されます。これもジョブに割り当てたスレッドプールの上限によります。複製したジョブの待機ですが@Join(JoinType.Wait)とした場合、複製したすべてのジ…
Java5からスレッドプールが利用できるようになりました。 スレッド作成の欠点 これまでのスレッドは、ThreadクラスやRunnableクラスを組み合わせ使っていました。しかし、スレッドをただ単に使うだけだと以下のような欠点があります。 スレッドを生成から破…
トリガーとは、ジョブを起動するための起動/停止の日時などの条件を指定するクラスのことです。 通常はGenericTriggerを継承し、@Triggerに対応するジョブクラス(複数指定可能です)、@InitMethodで初期化処理を指定します。CRONコマンド形式を利用したい場合…