Oracle APEXのワークフローで、承認者を増やしてみた

# はじめに
この記事では、Oracle Live Labsのワークショップ[「Simplify Business Process Management Using APEX Workflows」](https://apexapps.oracle.com/pls/apex/r/dbpm/livelabs/run-workshop?p210_wid=3880)をもとに、Oracle APEXで
作成したAPEXアプリケーション「Doctor Appointments Made Easy！」内で、ワークフローの承認者(このアプリケーションでは医者)を増やす、承認者情報を変更する方法について記載しています。

[こちらの資料](https://speakerdeck.com/oracle4engineer/oracle-apexdewakuhurowoshi-zhuang-sitemiyou)では、アプリケーションの作成方法、アプリケーションの動作の仕方が日本語で記載されています。


### 本記事で行うこと
医師予約のワークフローでは、以下の流れで行っています。
①医療事務ユーザーが最初に患者の予約を代理で取ります。
②医師ユーザーがスケジュールの空き状況に応じて、予約を承認、却下をします。
③患者ユーザーが請求書の内容に基づいて、料金の支払いをします。
④診察時間が経過するのを待ち、診療のフィードバックを患者に依頼します。
⑤患者が診療のフィードバックを送ります。

この②の手順で予約の承認をする承認者（医師）の人数を増やします。

記事で使用するアプリケーションは作成済みとします。



### ワークフロー承認者の追加をしてみる
*  アプリケーションにログインできるようにするためのAPEXユーザーを作成します。
*  ワークスペース右上の人型マークから、「ユーザーとグループの管理」をクリックします。
    ![画像1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3058002/5301aa06-264f-40ed-8e01-7541fb9b19e8.png)

* ユーザーの管理ページに遷移します。「作成」をクリックし、ユーザーを作成します。
    ![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3058002/7a18b0fa-22fa-48e9-bcc9-7c93b880eba1.png)

* ユーザー名、メールアドレス、パスワードを設定し、「ユーザー作成」を押します
    ![画像3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3058002/abed38e6-3a4e-43a5-b28a-679765630d33.png)

* 次に承認者（医師）の情報が格納されたDOCTOR表に、新たに医師の情報を追加します。
* 「SQLワークショップ」から「オブジェクト・ブラウザ」をクリックします。
* 画面左の表のタブをクリックすると、DBに格納されている表が一覧となって表示されます。DOCTOR表をクリックすると、画面中央部にDOCTOR表の情報が表示されます。
    ![画像4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3058002/e6178d58-99f9-49e8-b751-827f486dae73.png)
* 画面中央部の「データ」タブから、「行を挿入」をクリックし、新たなレコードを追加します。
* 新しく追加する医師の情報を入力します。
    ![画像5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3058002/528b005d-1277-4369-acca-9547d1d44968.png)
* これで準備ができました。


### アプリケーションを動かしてみる
* 医師が追加され、承認者としてアプリケーションに反映されているか確認します。
* まずは、診察の予約をするために医療事務ユーザー(STEVE)としてアプリケーションにサインインします。
* New Appointmentから、患者の代わりに予約をします。必要な情報を入力していきますが、Doctorの欄では選択リストの形式で対応できる医師が一覧で表示されます。前述の手順で、医師を追加する前までは対応できる医師は一人(ANACHATT)のみでしたが、追加した後は対応可能な医師として先ほど追加したユーザー(TAKEI)も選択できるようになっています。
    ![画像6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3058002/dcd7b529-d61a-4f6c-88b7-640cf904dcd2.png)
* 新規で診察の予約ができましたので、次は先ほど作成したTAKEIユーザーで再度アプリケーションにサインインします。すると、TAKEIユーザーでもアプリケーションにサインインできました。
    ![画像8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3058002/c07c0226-2aeb-4e96-a0c8-19f9566e5736.png)
* 予約を承認するか却下をするか選択できます。ここでは承認をクリックして、予約を承認します。
    ![画像9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3058002/e66e655e-c851-474f-a9c3-7953664af423.png)

* 次に患者ユーザー(DARYL)に診察の料金を請求します。DARYLとしてアプリケーションにサインインします。
    ![画像10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3058002/053953d0-f365-4e09-b602-2387fa6e9220.png)
* Patient Tasksから、患者のタスクとして料金の支払いが求められています。タスクをクリックして、右下の完了を押して、支払いが完了させます。ここでは完了を押すことで支払いをしたとみなします。
    ![画像11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3058002/d36fdefd-8df6-45c9-be0f-539f76e01f93.png)

* 診察の予約時間を過ぎると、診察のフィードバックを求めるタスクが患者に割り当てられます。
* 再度、患者ユーザー（DARYL）としてサインインします。
    ![画像12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3058002/85257741-a5d7-4f50-a7a3-a1a2fcd10906.png)
* フィードバックを求めるタスクが表示されています。タスクをクリックします。
    ![画像13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3058002/e42fae25-cbe2-4879-955e-fb1dd5fa592e.png)
* アンケートを記入して、完了を押すとワークフローは終了します。

## 参考資料
* [Live Labs](https://apexapps.oracle.com/pls/apex/r/dbpm/livelabs/run-workshop?p210_wid=3880)
* [ワークショップ](https://speakerdeck.com/oracle4engineer/oracle-apexdewakuhurowoshi-zhuang-sitemiyou)