OCI Process Automationを使ってワークフローを作成する

# 概要

Oracle Cloud Infrastructure Process Automation(OPA)はOCIのPaaSサービスでヒューマンワークフローをローコードで開発できるサービスです。今回はOPAをプロビジョニングして使ってみたいと思います。

Oracle Cloud Infrastructure Process Automationについてはこちら
https://www.oracle.com/jp/integration/process-automation/

# プロビジョニング
[こちら](https://docs.oracle.com/ja-jp/iaas/process-automation/oci-process-automation/provision-process-automation-instance.html)を参考にプロビジョニングします。

# ユーザーロール設定
[こちら](https://docs.oracle.com/ja-jp/iaas/process-automation/oci-process-automation/manage-access-and-assign-roles.html)を参考にユーザーロールを割り当てします。

# ワークフローの作成

プロビジョニング、ユーザーロール設定ができたらOCIコンソールからOPAインスタンスを開き、"コンソールを開く"をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/7883506c-608f-8b49-89aa-087050f7cc85.png)

デザイナの画面が開かれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/80ce2606-6ac3-cddc-a3b2-2366b8332990.png)

:::note info
**OPAにおけるデザイナとワークスペースについて**
- プロセス・デザイナ・・・プロセス・アプリケーションとそのコンポーネントを作成および編集する環境。この環境は、プロセス・アプリケーションの開発者向けに設計されています。
- プロセス・ワークスペース・・・ワークフローの実行を行うランタイム環境。アプリケーションのテスト、実行、監視および管理を行います。この環境は、管理者およびエンド・ユーザーに向けて構築されています。
:::

## Process Applicationの作成

開かれたデザイナの画面にてワークフローを作成していきます。右上の"Create"をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/69404703-cc6f-5d90-1dfc-d4797bded826.png)

任意のTitleを入力し、"Create"をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/e6291c59-2a55-7889-07ed-d0c6cbca332d.png)

作成されたアプリケーションをクリックして開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/680d90c0-4728-7920-2f39-f8ef882e5f9e.png)

開くと以下のような画面に遷移します。各コンポーネントの説明はこちらの[ドキュメント](https://docs.oracle.com/en/cloud/paas/process-automation/user-process-automation/process-applications-glance.html#GUID-D3F3F6C9-D6AF-4847-ACDC-555F48AF8027__GUID-D84EE467-E308-485E-879E-199571E5925F)で解説されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/5660f055-1750-99d7-27db-089059c3584d.png)

## ロールの作成

最初にロールを定義します。今回は申請者(applicant)と承認者(authorizer)の2つのロールを作成します。右上にある"Add"を押して"Add Component"の中からRolesの"New"をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/37fa846f-db64-61e7-afb5-ab51db33bf9b.png)

Titleに"applicant"と入力し、"Create"をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/b1312ea7-1119-0d99-9c66-4a781e8a8a7e.png)

同様の手順で"authorizer"のロールを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/62530b8e-9f8a-12b8-7dce-5dc1a6220272.png)

次に各ロールにユーザーを割り当てます。今回は両方とも同じユーザーを割り当てます。作成した"applicant"をクリックし、右上のユーザーで追加したいユーザーを検索しチェックボックスにチェックしてユーザーを追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/9d5007b1-600d-eda8-d0e0-2b8781215a26.png)

同様の手順で"authorizer"にユーザーを追加します。

:::note info
Application Permission Levelについては[こちら](https://docs.oracle.com/en/cloud/paas/process-automation/user-process-automation/work-roles-designer.html#:~:text=Application%20Permission%20Level)をご確認ください。
:::

## ワークフローの作成

次にワークフローを作成します。右上の"Add"を押して"Structured"をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/1ea76061-a21f-4eed-0a96-091b8e24c0c5.png)

任意の名前を入力し、"Create"をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/c0c19501-515a-51ef-996c-9c34e4749ef5.png)

作成されたStructured Processを開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/499caa6c-669c-a360-dcdf-1f2dc3ea1bbc.png)

遷移するとワークフローの作成画面(エディタ)が開かれます。エディタの詳細については[こちら](https://docs.oracle.com/en/cloud/paas/process-automation/user-process-automation/use-structured-process-editor.html#GUID-14974993-519F-41EA-8804-0FEB917341AC)で解説されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/9530f461-4072-021b-142d-2860ef4dbfdc.png)

今回は申請した後、承認されると終了するシンプルなワークフローを作成します。右端のActivitiesからHumanのパネルを開き"Approve"(承認タスク)をドラッグアンドドロップでキャンバスの空いているところに配置します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/c10d3017-52c7-4420-c0c4-e458916637eb.png)

配置できたらダブルクリックで名前を"承認"に変更します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/850e5845-94bb-709c-23d5-6356f246acc9.png)

同様にStart eventを"申請"、End eventを"終了"に変更します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/c3609570-6d39-795f-a9d3-d90c2f5bd221.png)

次にロールを意味するスイムレーンを編集します。左端にある"Process User"をクリックし、編集ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/ad08d2c9-119a-e88f-a27e-6ff8c9fc7628.png)

Propertiesが表示されるのでRoleを"applicant"へ変更します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/b648ad9c-25b0-15aa-c9c1-5461588ba31c.png)

同様の手順で2行目のスイムレーンを"authorizer"に変更します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/e0422d19-130a-e3da-4f99-50e791e0c40b.png)

:::note info
各スイムレーンの行にあるタスクは各ロールに割り当てられたユーザーが実行することができます。この例でいうと"申請"は"applicant"ロールに設定されたユーザーが実行でき、"承認"は"authorizer" ロールに設定されたユーザーが実行できます。
:::

次にタスクを線で結んで関連付けします。最初にデフォルトでつながっている"申請"→"終了"間の関連を削除します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/3d561937-5c00-4f17-5aa8-4675e9d54fde.png)

次に"申請"をクリックし、表示された"↗"をドラッグアンドドロップで"承認"につなげます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/842ba1d7-4a98-be61-3fcf-f731469e2126.png)

同様の手順で"承認"と"終了"を繋げます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/90c84b0c-399d-7e2c-1c69-8cff3d1ec390.png)

線をドラッグアンドドロップすると形を整えることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/0769e32b-b4f4-a60b-576f-60535dbfbc9a.png)

## Webフォームの作成

ワークフローができたら次にWebフォームを作成し、各タスクに割り当てます。
右上の"Add"から"UIs"にある"Web Form"をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/b1066d36-052b-4eb9-8364-936f9b444425.png)

任意の名前を入力し、"Create"をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/b343083c-072b-80ef-7f8e-b2e898854531.png)

上のタブの"UIs"を選択し、先ほど作成したWebフォームをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/1e4569f0-d050-6747-52a3-d49c58b7f6cb.png)

フォーム作成の画面へ遷移します。この画面で申請に必要なインプットフォームを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/aba8fab6-da95-39c1-d099-79c3f86a3a59.png)

"Input text"と"Money"をそれぞれドラッグアンドドロップで配置します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/318f0609-28f3-5d1b-0fdd-3089ce215832.png)

以下のアイコンを押すと、プロパティが左側に表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/928f782b-3d0a-690c-60cb-efdf17cf626f.png)

配置したInput textのプロパティのLabelを"申請項目"に変更します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/22739e10-c0cc-dabc-14be-5535c209fbd6.png)

配置したMoneyのプロパティのLabelを"金額"、Currencyを"Japanese Yen (JPY)"に変更します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/e8957fab-6dc6-bf09-d254-c3034abc5631.png)

:::note info
**Presentationについて**
Presentationという機能を利用すると同じフォームを利用して申請時と承認時で画面の表示を切り替えることができます。例えば申請時はテキストボックスを活性化しておきて承認時には非活性にして変更できなくするなどが可能になります。
:::

以上で申請用のWebフォームが作成できました。

## ワークフローのタスクへWebフォームの割り当て

次に作成したWebフォームをワークフローの各タスクに割り当てます。先ほど作成したワークフローをクリックして開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/39ad3f67-cdfb-d39f-8af0-c29604f404fc.png)

申請のタスクをクリックしてメニューから"Open Properties"を開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/c4caff3a-12c0-999e-4d75-d4682a1144f5.png)

右側に表示されたプロパティからTitleを"申請"、UIに先ほど作成したWebフォームを指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/5f4f992d-5387-5b65-0b63-2878fd067052.png)

同様の手順で"承認"のプロパティでTitleを"承認"、UIに先ほど作成したWebフォームを指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/ac57e76e-3aef-2b34-73a8-3e5afcd452a3.png)

## 申請から承認へのデータ結合の設定

フォームの設定ができたら次は申請フォームに入力された値が承認フォームに正しく連携されるように設定します。"承認"をクリックした後、メニューから"Open Data Association"をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/b4fa68b2-0e7c-ba86-ff70-d723a0b4f410.png)

左側にあるInputの中のMyFormArgsが申請に指定したフォームのデータ定義で右側にあるmyFormが承認時のデータ定義になっています。これらをそれぞれ中央にあるテキストボックスにドラッグアンドドロップで配置します。配置できたら"Apply"を押して適用します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/1a657686-c14b-09e6-1205-b4d840a8a13e.png)

これでデータ結合の設定が完了しました。

以上でワークフローの作成が完了しました。

## アクティベート

ワークフローの作成は完了したので、アクティベートして使用できるようにします。右上にある"Activate"をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/231ce373-ce7a-de01-56b1-4fabf3fbf056.png)

次のダイアログでまた"Activate"をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/67eef2da-602c-b722-bb8e-aee950d92cea.png)

しばらくするとActivateが完了します。これでワークフローが使用できるようになりました。

# 動作確認

作成したワークフローを実行する際はワークスペースという環境を利用します。右上のユーザーアカウントのアイコンをクリックし、メニューから"Workspace"を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/ee1f65eb-4bfa-85eb-28a6-d82c214d853b.png)

先ほど作成したProcess Applicationが表示されているので、クリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/00317545-12fb-f6a5-0621-c5400f178ee1.png)

作成した申請フォームが表示されるので、任意の値を入力し、"Submit"をクリックします。これで申請が開始されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/1dbd0c7d-7f0e-1f9a-e2aa-cba3f9f6c26c.png)

次は承認者にタスクが振られます。自分が振られているタスクは左上のメニューから"My Tasks"で確認することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/5f5591b4-4208-92e8-325a-903c592918b2.png)

先ほど申請したタスクが表示されていることが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/b4732c88-f108-b31a-371e-3f4ae0bf1f9f.png)

承認者は申請された内容を確認し、問題なければ"Approve"を押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/9c1b0d70-d9f9-f222-8a2a-73fbf6b34a1d.png)

以上で申請～承認～終了のプロセスが完了しました。

メニューの"Tracking"でタスクの状況を確認することもできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/c7e6ef61-7a8e-8ee0-d29c-d252a0aeeed9.png)

先ほどの申請は既に完了しているので"Completed"タブを開くと一覧に表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/d593bb5f-c49f-fd2e-b323-566853fcb5aa.png)

Auditという項目を開くと申請～承認～終了のタスクが完了していることが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479589/5d6578d4-5ddf-b519-26a3-3c56982aad70.png)

以上です。