Flow4Jメモ

ほんとに個人的メモ。

http://flow4jeclipse.sourceforge.net/

フローデザイナはプラグインとして提供される。
ノーテーションはBPMNやUMLなどとは互換性がない。
設計したフローデザインは .f4j というXMLファイルでセーブされるが、ランタイムにはこのファイルを必要とはしない点が特徴。
フローはどのように実行されるか、というと、.f4jセーブ時点でソースコードが自動生成される。このため、ランタイムではXML関連の処理がまったく発生しないことになるため、(比較的)高速動作が期待される。

開発者は独自のタスク(アクティビティ)をTaskFlowletとして作成する。これは、Flow4J独特のインタフェースだが、シンプルで、フローデザイナと連携するためのプロパティ定義や、execute()メソッドを定義する。フローで使いまわし/共有されるデータ領域はFlowDictionaryと呼ばれている。

ところで、ダイアグラムから生成されるコードは、というとごくごくシンプルなJavaCodeであるが、TaskFlowletのインスタンス生成の部分などはFlowManagerという staticメソッドを集めたユーティリティクラスに集約されている。このせいで、たとえば TaskFlowletのインスタンスの生成をS2任せにすることが出来ない。これは良くない。

このソースコードは自動生成なので、ソースコードを逐一イジって保管、というのもあまり良くない。

アプローチとしては Javaソースコード生成部分を書き変える(=プラグインを書き換える)か、自前で .f4j ファイルのままフローハンドリングできるクラスを用意するか...その他色々考えられるが、後者のほうはFlow4Jが「良い点」としているところ(生成されたソースコードが高速動作が期待され、ランタイムにXML処理を必要としない、というところ)を消してしまうので、選ぶべきではないか。