<< CharcoalPHP 0.8.0リリース | main | CharcoalPHP 0.10.0リリース >>
CharcoalPHP 0.9.0リリース
本日CharcoalPHP 0.9.0をリリースしました。


今回も大きな機能的な変更はありませんが、タスク関連の処理方式が大きく変わりました。


以前はタスクの処理順序はプロシージャのtask_orderで指定していましたが、より柔軟な処理フローができるように下記の様に変更しました。


・プロシージャ定義ファイルのtasksで定義されたタスクがタスクマネージャに登録される
・タスクマネージャは受け取ったリクエストを元にhttp_requestシステムイベントを生成、各登録タスクに送信
・タスクは定義ファイルのevent_filtersで受け入れ可能なイベントを定義する。受け入れ可能なイベントはIEventインタフェースを実装するユーザイベントまたはシステムイベント。
・event_filtersで指定されているイベントなら、タスクマネージャはそのタスクのprocessEvent()メソッドを呼び出す。
・タスクのprocessEventメソッド内ではイベントを実際に処理したかのフラグ(Boolean値)または、ユーザイベントを戻り値として返す。
・タスクマネージャはタスクの処理結果を受け取り、ユーザイベントのイベントキューへの追加や現在のイベントの消去などを行う。
・新たにイベントキューに追加されたイベントは、次回以降のイベント実行ループで処理される。
・タスクの処理条件はguard_conditionsで指定可能。例えば「ログインタスクのプロパティloginedがTRUEの時のみこのタスクを実行する」などの条件指定が可能。
・イベントキューにイベントが無いか、タスク実行リストにタスクが無くなったらイベント処理を終了する。


processEvent()でユーザイベントを返却できるようになったことで、祖結合のままタスク間の連携が取れるようになりました。
たとえば、Aタスクがhttp_requestを処理し、その結果をXイベントにセットしてタスクマネージャ経由でBタスクに渡すことが出来ます。
AタスクはBタスクの存在を知らずに実装でき、またBタスクもAタスクの存在に依存しないため、仕様変更の影響範囲を限定しやすくできます。


CharcoalPHP 0.9.0は下記のページからダウンロードできます。


http://sourceforge.jp/projects/charcoalphp/files/

| comments(0) | trackbacks(0) | by stk2k
コメント
コメントする









この記事のトラックバックURL
http://devlog.sazysoft.com/trackback/880560
トラックバック