Masanori Takata
m_takata_1974****@yahoo*****
2003年 12月 22日 (月) 15:38:10 JST
高田です。 えっと、DTDや説明がなく、いきなり記述例なので、 それぞれの要素の現状の定義を確認させて下さい。 ついでに、軽く、詳細をつっこませてもらいます。 > 黒澤です。 > > ワークフローシステム構想その8 > > ワークフローの記述方法についてです。 > > 現時点ではあくまで例です。 > 詳細な記述仕様はこれからつめていくことになります。 > > 書いてみるとまるでプログラミング言語のようになってしまいました。 > ただ、実行が連続的でないのが普通のプログラミング言語と違うところです。 確かに、プログラミング言語っぽいですね。 XMLというよりスクリプトの雰囲気ですよね。 プログラミング言語に似せるのって、プログラマにとっては、 直感的に分かり易くて、良いと思うのですが、それ以外の人にとっては どうなんでしょうねぇ? 手続き型のプロセスをXMLを言語化しようとしているので、似たものに なるのは避けられないでしょうけど。 > <process> プロセスの宣言を行う要素。 process要素は、1XMLファイルに1つ? ◎属性 ・defaultPriority属性で、優先度制御のパラメタを設定可能。 > <var name="userId" type="int"/> 変数の宣言を行う要素。 process要素内に複数定義可能。 ◎属性 ・name属性で、変数名を定義。 ・type属性で、型を定義。型は、primitive型と参照型が指定可能?。 ・value属性で、初期値を設定可能。 type属性が参照型の場合は、デフォルトコンストラクタが必要? コンストラクタが指定可能? PropertyEditorのような文字列から該当するクラスのインスタンスを 生成する仕組みを設ける? > <main> プロセスの処理を宣言する要素。 この子要素に定義される各アクティビティ要素は、定義した順序で実行される。 process要素内に1つだけ定義可能? > <invoke code="jp.robocode.stadium.SendConfirmMail"> push型のオブジェクト呼び出し?を宣言する要素。 main要素、scope要素、catch要素などの子要素として複数?宣言可能。 ◎属性 ・code属性で、呼び出すオブジェクトのクラス名を指定する。 指定されたクラスをインスタンス化して呼び出す? インスタンス化する時のコンストラクタは? 呼び出す時のメソッドのシグニチャは? インスタンス化したオブジェクトのライフサイクルは?使い捨て?! > <param name="userId" value="${userId}"/> push型のオブジェクト呼び出し?や、他プロセスの呼び出しの引数を 宣言する要素。 invoke要素、call要素の子要素として複数宣言可能。 ◎属性 ・name属性で、引数の名前を指定する。 この名前のBean属性のsetter呼び出し? ・value属性で、値を指定する。 値の指定は、即値または、var要素で宣言した変数参照を指定可能。 > <return name="leagueId" varName="duelLeagueId"/> push型のオブジェクト呼び出し?や、他プロセスの呼び出しの戻り値の受け取りを 宣言する要素。 invoke要素、call要素の子要素として複数宣言可能。 ◎属性 ・name属性で、戻り値の名前を指定する。 この名前のBean属性のgetter呼び出し? ・varName属性で、戻り値の格納先を指定する。 格納先の指定は、var要素で宣言した変数名を指定可能。 他には?? > <scope> ? > <task name="confirm" timeout="7days" execTimeout="-1"> pull型のタスクを宣言する要素? scope要素の子要素として複数宣言可能? ◎属性 ・name属性で、タスクの名前を宣言? ・timeout属性で、タスクのタイムアウトを設定可能。 書式は要検討?! ・execTimeout属性で、?の実行タイムアウトを設定可能? > <target user="${userId}"/> ? > <fault-handlers> 実行失敗時の処理を行うハンドラを宣言する要素。 複数のハンドラを設定可能?! scope要素の子要素として1つだけ宣言可能? どのアクティビティに対するエラーハンドラを設定しようとしているのか 分からない。scope? ハンドラの種類は、例外のハンドラだけ? > <catch faultName="timeout"> 例外をハンドリングするエラーハンドラを宣言する要素。 子要素に、invoke要素を指定できる。他には? ◎属性 ・faultName属性で・・・?? > <call functionName="createLeague"> 別プロセスの呼び出しを宣言する要素。 ◎属性 ・functionName属性で、呼び出すプロセスの名前?を指定する。 > <wait-for-process > processIds="${duelProcessId},${meleeProcessId}"/> 他プロセスの終了待ちを宣言する要素。 main要素の子要素として、複数宣言可能。 ◎属性 ・processIds属性で、終了待ちのターゲットとなるプロセスの名前を 複数指定可能。 また、var要素の変数参照も記述可能。 > <function name="createLeague"> 子プロセスを宣言する要素。 process要素の子要素として複数指定可能。 ◎属性 ・name属性で子プロセスの名前を宣言する。 process要素内で一意になる必要がある。 > <create-process name="league" imediateStart="true"> 子プロセスの生成を宣言する要素。 main要素の子要素として複数指定可能。 ◎属性 ・name属性で生成する子プロセスの名前を指定する。 ・imediateStart属性で、生成するだけか、実行もするかを指定する。 trueの場合は、実行まで行う。 > <wait until="${startDate}"/> 指定の期間待機するアクティビティを宣言する要素。 ◎属性 ・until属性で、指定した日時まで待機するように指定可能。 他の属性は?一定時間待つとか・・・ > <while test="${seasonCount} < ${seasons}"> whlie条件アクティビティを宣言する要素。 forとかifとかswitchとかは? ◎属性 ・test属性で、while要素の子要素の処理を繰り返し行う条件を指定する。 testって・・・。conditionとかの方が良いのでは?! > <set var="seasonCount" eval="${seasonCount + 1}"/> 変数に値を設定する事を宣言する要素。 ◎属性 ・var属性で、変数名を指定する。 ・eval属性で、設定する値を指定する。 どんな式が書ける?? 以上。 __________________________________________________ Do You Yahoo!? Yahoo! BB is Broadband by Yahoo! http://bb.yahoo.co.jp/