1.4.2. 動作内容
ログイン後、
todo.jsp は現在のユーザーの未解決の todo 項目の表を表示するために taskInstanceList コンポーネントを使用します (最初は何もありません)。ページは新しいタスク項目を入力するためのフォームも表示します。 ユーザーが todo 項目を入力して ボタンをクリックすると、 #{todoList.createTodo} が呼び出されます。これにより todo.jpdl.xml で定義したように todo プロセスが開始されます。
プロセスインスタンスが生成されると、直ちに
todo 状態に遷移し、 新しいタスクが作成されます。 #{todoList.description} に保存されるユーザーの入力に基づいてタスク description が設定されます。 次に、 Seam の actor コンポーネントに格納される現在のユーザーにタスクが割り当てられます。 このサンプルでは、 プロセスには追加のプロセス状態はありません。 状態はすべてタスク定義に保管されています。 プロセスとタスク情報は要求の最後でデータベースに格納されます。
todo.jsp が再表示されると、 taskInstanceList は新たに作成されたタスクを見つけて h:dataTable に表示します。 タスクの内部状態は #{task.description}、 #{task.priority}、 #{task.dueDate} の各列に表示されます。これらのフィールドはすべて編集してデータベースに保存することができます。
また、 各 todo 項目には ボタンがあり、
#{todoList.done} を呼び出します。 各ボタンは taskInstance="#{task}" を指定するため (表内のその特定行のタスク) todoList コンポーネントは完了されるタスクをはっきりと区別できます。 @StartTask と @EndTask のアノテーションがタスクをアクティブにして直ちに終了します。 次にオリジナルのプロセスが done 状態に遷移し (プロセス定義に従い) 終了します。 タスクとプロセスの状態がいずれもデータベース内で更新されます。
todo.jsp が再表示されると、 完了したタスクは taskInstanceList に表示されなくなります。このコンポーネントは未完了のタスクのみを表示するためです。