状況に応じて次に行う処理を変える機能をワークフローアプリへ追加しましょう。手動で次の処理を選択したり、データ項目の値に応じて行う処理を変えたりすることで、より複雑なワークフローのアプリを作成することができます。
7章では、ヒューマンタスクで次に進む工程を選択する方法、入力されているデータ項目の値に応じて進むフローが分岐で切り替わる方法について解説します。
上司スイムレーンの追加
前章で作成したアプリでは、出張申請に目を通すのは「管理部」スイムレーンの処理担当者である、組織「10 管理部」の所属社員だけでした。ここではそれに加えて、申請者の上司が申請内容を確認し、出張を「承認」するか「却下」するか選べるようにします。

では、またアプリを編集しましょう。アプリ設定ページからアプリの詳細ページを開いて、[編集]ボタンでモデラーを起動してください。
まずはワークフロー図の変更をします。今は「申請者」と「管理部」の 2 つのスイムレーンしかありませんが、そこに新しく「上司」スイムレーンを追加します。
- 画面上部のパレットからスイムレーンを選択し、新しいスイムレーンを「申請者」スイムレーンと「管理部」スイムレーンの間に入れましょう。オブジェクトの配置は自動で調整されます
- スイムレーンを追加したあと、設定ダイアログを開いて名前を「上司」に変えておいてください
- 「上司」スイムレーンにヒューマンタスクを追加し、「承認」に名前を変更します
- 「承認」タスクが追加できたら、「申請」→「承認」、「承認」→「確認」の様にフローを引いてください
フローの先端/根元をドラッグ&ドロップで掴んで動かすと、フローを引き直すことができます。もし要らないフローがでてきたら、4章 の「描き間違えたときは?」にもありましたが、フローを選択した時に表示されるゴミ箱アイコンで削除することができます。
続いて「上司」スイムレーンに[終了イベント]を追加し、「承認」タスクからフローを引いてください。

この様になれば OK です。
フローを増やすと、上司が「承認」した場合と「却下」した場合でトークンの行き先が変わるという分岐ができました。「承認」と「却下」は、「承認」タスクの処理フォームで最下部に表示されるボタンラベルとして設定し、タスク処理時に選択できます。フローを追加したままでは表示されませんので、ボタンラベルの設定をしましょう。
「承認」/「却下」ボタンラベルの設定
では、各ボタンの表示名を設定しましょう。「承認」タスクの設定ダイアログを開いてください。[分岐]タブを見るとボタンラベルの設定項目があります。

[分岐タイプ]は「ユーザが選択した遷移先に流す」のまま、[遷移先]が「確認」となっている方の[ボタンラベル]を「承認」に、[終了イベント]の方の[ボタンラベル]を「却下」に設定してください。これで上司が「承認」タスクを処理する際、「承認」ボタンをクリックすると「確認」タスクに、「却下」ボタンをクリックすると「上司」スイムレーンの終了イベントにトークンが遷移するようになりました。
上司に該当する処理担当者の設定
申請者の上司に処理担当者を設定する場合、申請者に合わせて「承認」タスクの担当者を変更できるような設計にしなければなりません。
「承認」タスクの担当者は、組織データを活用することで自動的に指定できます。3章においてユーザを一括登録する際に、《各ユーザがどの組織に所属しているのか》、《どのユーザが所属組織で「リーダ」という役職についているのか》を設定しました。これらを活用すれば、出張の申請者の上司は、《スイムレーン「申請者」の処理担当者》と同じ組織に所属する《役職「リーダ」が設定されたユーザ》、と表すことができます。
したがって、「上司」スイムレーンの設定ダイアログで、「上司」スイムレーンの処理担当者を「スイムレーン」「申請者」「このスイムレーンのタスクを処理したユーザと同じ組織のメンバ」「役職:リーダ」に設定してください。
役職は、組織内(部署内)での役割を表すために任意に追加、設定できます。ワークフロー基盤の利用開始時には、「リーダ」があらかじめ用意されています。


こうすることで、申請者が所属する組織とメンバのに設定された役職を元に、「承認」タスクの担当者が自動で決められることになります。例えば、本チュートリアルの組織構成上では、「カナリア」の上司は「スマトラ」に、「オアフ」の上司は「ガラパゴス」になります。では組織のリーダである「スマトラ」や「ガラパゴス」はどうかというと、自分自身が指定されることになります。

これでアプリを保存してリリースしてみましょう。
例えば「カナリア」から出張申請を出して、上司である「スマトラ」のアカウントで「承認」タスクを受け取ると、次のようなページになっています。そこで、新しく作成した「却下」ボタンをクリックしてみます。

トークンが「上司」スイムレーンの終了イベントに進んで、プロセスが終了しました。

このように、選択肢を用いることでトークンの遷移先を変えることができます。これが「分岐」の実装のうちの 1 つです。
本当は上司が申請を「却下」した場合、申請者に差し戻したほうがいいでしょう。しかし、今回は簡単のため、「却下」した場合はプロセス終了としています。
社長スイムレーンの追加
最後に、100 万円を超える高額な出張申請については、社長の確認も必要になるようにしましょう。またアプリに変更を加えるので編集画面を開けてください。
ワークフロー図の編集
まず次のようにワークフロー図を変更します。新たに「社長」スイムレーンを追加し、「承認」タスク以降を大幅に変更します。詳しく手順を見ていきましょう。

まず「社長」スイムレーンを追加します。新しいスイムレーンを「管理部」スイムレーンと「上司」スイムレーンの間に入れましょう。そして追加したスイムレーンの名前を「社長」に変更してください。また、「社長」スイムレーンに「確認」タスクを追加してください。
上の図で「分岐」「合流」と書かれている、緑色のひし形オブジェクトはゲートウェイと言います。フローの分岐や合流を制御するものです。ゲートウェイも パレットに入っています。

パレットのうちゲートウェイのひし形右下の▼マークをクリックすると「ゲートウェイ」の一覧※が展開されます。ここからアイコンを選択することで、ワークフロー図に各種ゲートウェイを追加することができます。今回使用するゲートウェイは次の 2 種類です。
※ Basic エディションでは、利用できない[分岐OR ゲートウェイ](包括ゲートウェイ) と[分岐 AND ゲートウェイ](並列ゲートウェイ)、および[統合 OR ゲートウェイ][統合 AND ゲートウェイ]は表示されません。
| 分岐 XOR ゲートウェイ (排他ゲートウェイ) | 複数あるフローのうち、最初に条件を満たした 1 つに進む。 | |
| 統合 XOR ゲートウェイ | 排他 (XOR) ゲートウェイによって複数に分かれたフローを 1 つにまとめる。 |
[分岐 XOR ゲートウェイ ](排他ゲートウェイ)を「社長」スイムレーンに、統合 XOR ゲートウェイを「管理部」スイムレーンに、それぞれ配置してください。配置したばかりのゲートウェイには名前が付いていないので、他のオブジェクトと同じように設定ダイアログを開いて、名前を「分岐」「合流」に設定してください。

このようにオブジェクトが揃っていれば OK です。
あとはフローを引き直すだけです。このとき、「上司」スイムレーンの「承認」タスクから延びるフローを不用意に移動しないよう注意してください。「却下」「承認」のフローには、先ほど設定した分岐条件が付与されています。削除したり、フローの根元(「承認」タスク側)を付け替えたりすると設定が削除されるため、また設定し直さなければなりません。特に「承認」フローは削除してから引き直すのではなく、フローの先端をドラッグ&ドロップで付け替えるようにしてください。

以上のことに気を付けて、次の図に合わせてフローを引きましょう。

フローをすべて引き直した後、「承認」タスクから延びるフローの名前が「却下」「承認」のままになっているかどうか確認しましょう。フローを一度削除する/根元を「承認」タスクから外すなどすると、分岐条件が削除され「承認」「却下」が消えてしまいます。もしそうなってしまっていたら、「承認」と「却下」のボタンラベルの設定を再度行ってください。
今回は、簡単な構成にするため社長が確認だけを行うワークフローにしましたが、社長が承認、却下を判断するワークフローも考えられます。その場合、ワークフロー図は次のようになります。設定方法は、「上司」スイムレーンの「承認」タスクと同じです。

また、社長に情報共有するだけであれば、内容をメールで自動送信することも考えられます。(ワークフローの途中でメールを自動送信する方法は、第8章で説明します。)
金額を基にした分岐条件の設定
そして新たに設置した分岐の設定を行います。排他 (XOR) ゲートウェイの「分岐」の設定ダイアログを開いてください。「遷移先の決定」の項で、条件ごとのトークンの遷移先を設定することができます。
| 条件 | 遷移先 |
| 出張費用が100万円以上 | 「社長」スイムレーンの「確認」タスク |
| それ以外 | 「管理部」スイムレーンの「合流」ゲートウェイ |
このように設定できれば、目的の挙動が得られそうです。最初から 2 つの条件と「デフォルトフロー」が用意されているので、これを編集していきましょう。デフォルトフローとは、どの遷移条件も満たされていないときに選択されるものです。つまり「金額が100万円以上」という条件と、デフォルトフローを設定すれば OK ですね。デフォルトフローが上の表の「それ以外」の役割を果たしてくれます。
デフォルトフローは、フロー上に斜線のマークが表示されます。

今回は、条件は 1 つ + デフォルトフローで十分なので、遷移先が「合流」になっていてデフォルトフローではない条件を削除してください。次に、「デフォルトフロー」の遷移先は「合流」です。これで「それ以外」の設定ができました。

そして条件のうち、遷移先が「確認」になっているものの条件式が「無条件に遷移」になっていますが、これを「金額が 100 万円を超えていたら遷移」という内容に変更します。
鉛筆マークをクリックすると詳細ダイアログが開くので、次のように入力してください。

- 条件名を「条件1」と入力
- 「条件に合致すれば遷移」、「金額」、「右の値以上」を選び、「1000000」と入力して下さい
データ項目「金額」の値が 1000000 以上、すなわち出張費用が 100 万円を超えていたら社長スイムレーンの「確認」タスクに遷移する、という設定になりました。これで上の表の通りにトークンの遷移を制御できます。

「分岐」プロパティがこのようになっているかどうか、確認してください。「合流」(統合ゲートウェイ)は特に設定事項はありません。これでワークフロー図の完成です!
社長に該当する処理担当者の設定
ワークフロー図の編集が終わったら、次は処理担当者の設定です。
「社長」スイムレーンの設定ダイアログで、処理担当者を「組織」「00 (会社名)」「に直接所属するメンバ」「役職:リーダ」に変更してください。組織[00 (会社名)]は最上位組織でしたね。そのリーダなので、つまり社長ということになります。そして本チュートリアルでは、組織[00(会社名)]のリーダには《あなた》を設定しました。
では、アプリを保存してリリースし、100 万円以上の高額申請を社員から出してみましょう。まずは先ほどと同じように、申請者直属の上司に「承認」タスクが届きます。上司が「承認」すると、今度は社長である《あなた》のアカウントに「確認」タスクが届くはずです。

作成した出張申請アプリは正しく動作しましたか?
アプリを作成したら、直属の上司の指定も、社長の確認を取るかどうかも、アプリが自動で処理してくれました。そして、いつ・誰が・どのタスクを処理したかというログも、すべて後から確認することができます。
