グループウェア「mitoco」を使ってみよう ～【V19.1新機能】承認プロセス実行中の申請フォームの変更に対応（ワークフロー）【その３】～

# はじめに
mitoco V19.1 がリリースされました。

▼リリースノート

https://www.terrasky.co.jp/files/mitoco_ReleaseNote_v19.1.pdf

こちらを確認すると「**承認プロセス実行中の申請フォームの変更に対応**」と言う機能が追加されたようです。
```
2.ワークフロー
　2.1.承認プロセス実行中の申請フォームの変更に対応
　承認プロセスの各承認ステップや最終承認、最終却下、取消時に
　申請フォームが変更できるようになりました。
　承認プロセス管理にて対応する申請フォーム指定することができます。
　申請フォームを変更することで、申請が進んだ場合に
　レイアウト上参照できる項目を追加／削除したり
　項目の編集可／不可を変えたりすることができるようになります。
```
と、記載されています。

前々回

https://qiita.com/xx_mana/items/84c2a41ee9b4052398fc

で【機能】を確認をしました。

前回

https://qiita.com/xx_mana/items/1498bf0cdb487957bf75

で【注意事項】を確認をしました。

今回は【利用方法】を考えていきたいと思います。

# 交通費精算
「**`交通費精算`**」を例に考えてみたいと思います。

#### 用意する項目を考えましょう
まず「**`交通費精算`**」として必要な情報は何でしょうか。

- 乗り物を使った日付
- 出発地、到着地
- どのような乗り物に乗ったか
- どのくらいかかったか

等があります。今回の例では以下の項目を用意することとします。

| 項目 | Salesforce 上の型 |
|:--|:--| 
| 日付 | 日付型 |
| 概要 | テキスト型 |
| 行先 | テキスト型 |
| 出発地 | テキスト型 |
| 到着地 | テキスト型 |
| 片道/往復 | 選択リスト型 |
| 交通機関 | 複数選択リスト型 |
| 金額 | 通貨型 |
| 備考 | テキストエリア型 |
| 上長メモ | テキストエリア型 |
| 経理部メモ | テキストエリア型 |

#### 承認フローを考えましょう
承認フローは、以下のような流れにすることにしましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/e0cdd94f-ebba-f23d-9858-aba3f5b28af1.png)


#### 項目に対して、誰が何をすることができるのか考えましょう

- 項目「**`上長メモ`**」は「**`上長のみ`**」が入力できる項目。
- 項目「**`上長メモ`**」は「**`申請者`**」「**`経理部`**」も見ることができる。編集はできない。
- 項目「**`経理部メモ`**」は「**`経理部`**」のみが入力できる項目。「**`申請者`**」「**`上長`**」は閲覧することができない。
    - 「**`経理部メモ`**」は「**`経理部`**」のみが見れる重要な内容で「**`申請者`**」や「**`上長`**」には見せたくない情報を入力する想定とします。

| 項目 | 申請者 | 上長 | 経理部 |
|:--|:--|:--|:--|
| 日付 | ○編集可 | △閲覧可・編集不可 | △閲覧可・編集不可 |
| 概要 | ○編集可 | △閲覧可・編集不可 | △閲覧可・編集不可 |
| 行先 | ○編集可 | △閲覧可・編集不可 | △閲覧可・編集不可 |
| 出発地 | ○編集可 | △閲覧可・編集不可 | △閲覧可・編集不可 |
| 到着地 | ○編集可 | △閲覧可・編集不可 | △閲覧可・編集不可 |
| 片道/往復 | ○編集可 | △閲覧可・編集不可 | △閲覧可・編集不可 |
| 交通機関 | ○編集可 | △閲覧可・編集不可 | △閲覧可・編集不可 |
| 金額 | ○編集可 | △閲覧可・編集不可 | △閲覧可・編集不可 |
| 備考 | ○編集可 | △閲覧可・編集不可 | △閲覧可・編集不可 |
| 上長メモ | △閲覧可・編集不可 | ○編集可 | △閲覧可・編集不可 |
| 経理部メモ | ×閲覧不可 | ×閲覧不可 | ○編集可 |

#### レコードタイプを考えましょう

それぞれのステップで「**`申請フォーム（レコードタイプ）`**」を変更するため、
「**`レコードタイプ`**」を用意します。

| 項目 | 申請者 | 上長 | 経理部 |
|:--|:--|:--|:--|
| レコードタイプ | レコードタイプ_交通費申請_申請者 | レコードタイプ_交通費申請_上長 | レコードタイプ_交通費申請_経理部 |

#### ページレイアウトを考えましょう

「**`レコードタイプ`**」に対する「**`ページレイアウト`**」を用意します。
今回はそれぞれのレコードタイプに１つ、合計３つ用意することにします。
ざっくり「配置イメージ」や「編集できる/できない」を考えます。

**ページレイアウト_交通費申請_申請者**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/2dc2d9b6-eca0-e9ee-df7f-4a9c1b4d7d6e.png)

**ページレイアウト_交通費申請_上長**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/26489352-9aa8-9e83-7c76-9d4e5a124082.png)

**ページレイアウト_交通費申請_経理部**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/e1b07bac-a1cf-1785-de56-8a570da53df3.png)


#### 「プロファイル」と「レコードタイプ」に対する「ページレイアウト」の紐づけを考えましょう
「**`プロファイル`**」と「**`レコードタイプ`**」に対する「**`ページレイアウト`**」の紐づけを定義します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/4d53e412-c2c9-0dff-a3d4-3f61be8a440c.png)


#### ステップで、どのページレイアウトを表示するか考えましょう
どの**`ステップ`**で、どの**`ページレイアウト`**（**`申請フォーム`**（**`レコードタイプ`**））を表示するかを考えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/2491952b-b84a-4ab6-9fc1-0c5e48a0a429.png)

# Salesforce 上に構築する
今回は「**`申請データ2`**」オブジェクトを利用します。（申請データ、申請データ2、申請データ3、申請データ4、申請データ5 とありますが、選べるオブジェクトが異なるだけで、基本的にどれでも変わりません）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/d012c44a-9791-ca40-3e2a-d7306c83bea7.png)

#### 項目を用意する

前述の通り、 **`項目（カスタム項目）`** を用意していきます。

- **別途、権限を指定するのでプロファイルに対する項目レベルセキュリティは指定しないようにします。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/69ff99b1-b05f-ee01-63ea-eb80f7911f82.png)


- 項目が用意できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/cd4aab9d-098f-dd49-8293-788f2255a781.png)

#### ページレイアウトを用意する

前述のページレイアウトのイメージから、ページレイアウトを設定していきます。


- ページレイアウトが用意できました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/82a70c0c-d40d-4ddb-1f62-772b37ebb0a7.png)

- **ページレイアウト_交通費申請_申請者**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/e5459aa4-33e3-4def-67aa-411debaee8ac.png)

- **ページレイアウト_交通費申請_上長**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/73a86091-c824-ce5f-719b-f12f7e027a31.png)

- **ページレイアウト_交通費申請_経理部**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/3587c475-d669-b2a4-865b-a1bab41b932d.png)

#### レコードタイプを用意する

- レコードタイプが用意できました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/a112907e-1cbd-cd63-109f-a47d154dbf93.png)

#### 「プロファイル」と「レコードタイプ」に対する「ページレイアウト」を紐づける

- 作成した「**`レコードタイプ`**」「**`ページレイアウト`**」を「**`プロファイル`**」に紐づけます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/8f673610-ae40-38e4-75cd-4faba63e7367.png)

（**経験上、シンプルで判りやすい紐づけの方が良いと思います**）

#### 権限セットを用意する

- 「**`項目`**」や「**`レコードタイプ`**」を利用するための権限を設定しないといけません。
**`プロファイル`**でも設定できますが、着脱しやすい**`権限セット`**にしたいと思います。
こちらについては、用途や考え方に依るので、**`プロファイル`**、**`権限セット`** 使いやすい方を採用する形で良いと思います。

--- 
**■ 権限セット_交通費申請_申請者**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/af1ae87e-80ee-2b70-f2fb-a10729643cba.png)
- レコードタイプは「**`レコードタイプ_交通費申請_申請者`**」のみを利用できるように設定します
- 項目権限は、一旦すべての項目に「 **`参照アクセス権`** 」「 **`編集アクセス権`**」の両方をチェックします。

--- 
**■ 権限セット_交通費申請_上長**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/238af261-c107-2fdc-58ef-d97beab82633.png)
- レコードタイプは「**`レコードタイプ_交通費申請_上長`**」のみを利用できるように設定します
- 項目権限は、一旦すべての項目に「**`参照アクセス権`**」「**`編集アクセス権`**」の両方をチェックします。

--- 
**■ 権限セット_交通費申請_経理部**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/621d2547-20ec-7599-1d23-14c60e93123f.png)
- レコードタイプは「**`レコードタイプ_交通費申請_経理部`**」のみを利用できるように設定します
- 項目権限は、一旦すべての項目に「**`参照アクセス権`**」「**`編集アクセス権`**」の両方をチェックします。

--- 
- 権限セットを各ユーザに付与しましょう。

| ユーザ | 付与している権限 |
|:--|:--|
| テストユーザ０ | `mitoco(Approvals) User`, `mitoco (Base) User`, `mitoco(Collaboration)`, `権限セット_交通費申請_申請者` |
| テストユーザ１ | `mitoco(Approvals) User`, `mitoco (Base) User`, `mitoco(Collaboration)`, `権限セット_交通費申請_申請者`, `権限セット_交通費申請_上長` |
| テストユーザ３ | `mitoco(Approvals) User`, `mitoco (Base) User`, `mitoco(Collaboration)`, `権限セット_交通費申請_申請者`, `権限セット_交通費申請_経理部` |



#### 承認プロセスをつくる

- 「**`申請データ2`**」に対する承認プロセスを用意しましょう。承認プロセス名は「**`交通費申請`**」とします。
**`[登録]`** ボタンをクリックしましょう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/1d45e6f7-f68d-458c-bc8d-2b72be81416c.png)


- 「**`バージョン一覧`**」が表示されるので、**`[バージョン新規作成]`** ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/698f006a-2c5d-0947-b62e-f9ae26d414c0.png)

- 「**`ステップ`**」を作成し「**`遷移`**」を設定しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/65012777-d919-635b-0526-be4e275ba656.png)

- 「**`申請の状態に応じて、申請フォームを変更する`**」の設定をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/396028c7-b73b-bb27-09b2-c0d82c3198f1.png)

- **`各ステップ`**に進んだ際、それぞれの「申請フォーム（レコードタイプ）」に設定。
「**`承認済み`**」になった場合は、経理部用の申請フォーム（**`レコードタイプ_交通費申請_経理部`**）にすることにします。
「**`却下済み`**」になった場合は、申請者によって再度申請することを考慮して、申請者用の申請フォーム（**`レコードタイプ_交通費申請_申請者`**）にします。
同様に「**`取消済み`**」の場合も同様に申請者用の申請フォームにします。

- 途中、上司メモ、経理部メモを入力するため、「**`対象レコードのロック`**」は「**`対象レコードをロックしません`**」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/5050902e-410e-a581-d4dd-777506ec7679.png)

- 「**`対象レコードのロック`**」については、「吹き出しの説明」または、以下のページを参照してください。

https://doc.terrasky.com/pages/viewpage.action?pageId=67513655

- **`[保存]`** ボタンをクリックし、作成した内容を保存します。


- **`バージョン一覧`**に戻ります。作成したバージョンは「**`状況`**」が「**`ドラフト`**」のため「**`アクション`**」列の「**`有効化`**」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/12c25060-7cee-59f4-1d7a-cbbe5f8d2e7c.png)

- **`状況`**が「**`有効`**」になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309141/c01ccb17-6367-a7b2-8881-3b4aedd65cf0.png)





# 次回
長くなってしまったので、次回に続きます。

https://qiita.com/xx_mana/items/c70e9efc9fdbe916d3ef

# mitoco について
- Salesforce 上で動作するグループウェアの「mitoco」（みとこ）に関する記事になります。

https://www.mitoco.net/

- mitoco は「株式会社テラスカイ」のサービスです。

# ご了承ください
- 記事は、2023年6月時点・mitoco V19.1 の段階の内容となります。
    - 内容は製品のバージョンによって仕様が変更されている場合があります。ご了承ください。