makotan _at_ gmail dot com

解説というか使い方

日本風工学会じゃなくて、Enhydra JaWE - Home PageこのJaWEっていうワークフローエディタを使ってワークフローを書きます。
起動直後にFile=>NewでIDいれてね〜ってでるので、IDを適当に入れます。ToolBoxの青いアイコンをクリックしてgraphicalエディタらしきところに置きます。(場所指定出来ない)
これが、ワークフローのプロセスです。
右クリックして、propertyでIDとNameを変更・・・とりあえずこのまま進みます
右クリックでEditを選択すると、エディタらしき画面が表示されます。まずは人のマークをクリックして大きな画面のところに置きます。
これはワークフロー系の用語で参加者です。とりあえずRoleだって思えばOKです。
IdとNameを適当に入れます。IDは変更しなくてもOKです
とりあえず、Nameにhogeを入れてそのままOK
ここからフローを描く作業になります。SはスタートEはエンド(プログラム的には深い意味はないです)
□の中に■が書いてあるのがBlock、その隣の■はGeneric、その隣はRuteです。とりあえず使うブロックはこれだけです
GenericActivityはComponentの呼び出し機能をもって、RuteActivityはComponentの呼び出し機能はありません。それ以外の違いは特にないです。
で、StartとEndを端っこに置いてGenericActivityを適当に置きます。右クリックでpropertyをみるとNameがあるので適当に変更します。このNameが実行するときの名前になります
Componentを呼び出すときはその隣のToolsにComponentの事を記述しますここでのComponentは、BuriComponent InterfaceをimplementしたComponentをdiconファイルに登録してそれを呼び出します。
NewでDefineすでに使っていない場合はここでNewでNameにComponentの名前を入れてください。それでOKを押していってToolsのところに戻るとApplicationのところにその名前が出ているはずです
いくつかGenericActivityをおいて名前を変更して矢印でつなぎます。一つのActivityから複数のActivityへ矢印をつないだ場合は、条件式が書けます。条件式はOGNLです。呼び出し時の引数・ComponentがContextにセットした値を使って分岐が可能です
条件式等は分岐元のActivityのPostConditionのExpressionにそれぞれ書きます。ちなみに、どれにも一致しなかった場合のOtherwiseも可能です。
矢印を選んで条件式を入れる事も可能です。
実行を止めたいActivityはStart modeをManualへ変更します
ここまでがJaWEの準備
右端の戻るッぽいマークをクリックして元の画面に戻ります。で、Save As...でファイル名を付けてXPDLとして書き出してJaWEを終了させます。(終了させるか、他のファイル形式でもう一度保存しないとXMLフォーマットにならない)
ということで、次はプログラムの準備・・・の前に環境の準備(^^;

↓がdiconファイル



BuriXPDLLoader


'testwf.xpdl'

↓フローの実行部分

WorkFlow flow;
flow = (WorkFlow)getComponent("BuriWorkFlow");
WorkFlowProcess process = flow.getProcess("Process");
Participant tako = process.getParticipant("hoge");
tako.setUserName("hoge");
HashMap map = new HashMap();
map.put("data",new Integer(1));
ActivityResult result = process.execute(tako,"Activity1",map,"hoge");

process.execute(tako,"Activity1",map,"hoge");
2番目がActivityの名前orID、最後は特に決まりはない文字列です。(ボタン名等を入れるところ・・・空文字でもOKです)
終了時点でのContextの内容、実行した経路、次に実行すべきActivityはActivityResultにすべて入っています。