本記事では、申請の入力値を各レコードへ転記し、その値を条件にした共有ルールで担当運用者へレコードを共有する設定手順を説明します。
例えば、「東京」または「大阪」を選択する入力欄を用意し、申請確定時にその値を申請・申請保管・保存ログへ転記します。値が「東京」のレコードは東京拠点の運用者グループへ、「大阪」のレコードは大阪拠点の運用者グループへ共有する、といった制御が実現できます。
この設定を行うには、対象オブジェクトの「デフォルトの内部アクセス権」が「非公開」になっている必要があります。詳細は【内部ユーザー間のレコード参照に関する自己点検手順へのリンクを貼る】を参照してください。
設定する対象オブジェクト
本手順で対象とするオブジェクトと、共有ルール設定上の扱いは以下です。
| オブジェクト名 | API 参照名 | 共有ルールでの扱い |
|---|---|---|
| 申請 | docutizeform__InputData__c |
選択リスト項目(この記事では「担当拠点」という項目を新規作成しています。API 参照名の例: AssignedOffice__c)に項目の保存先設定で入力値を転記し、共有ルールの判定対象にする |
| 申請保管 | docutizeform__InputDataStorage__c |
申請の入力値を転記する用途でパッケージ標準として用意されている項目 docutizeform__X01_Field01__c に項目の保存先設定で入力値を転記し、共有ルールの判定対象にする |
| 保存ログ | docutizeform__SavedLog__c |
申請の入力値を転記する用途でパッケージ標準として用意されている項目 docutizeform__Key01__c にログ保存機能で入力値をセットし、共有ルールの判定対象にする |
1. プロファイル・権限セットのオブジェクト権限を確認
システム管理者以外の内部ユーザー向けプロファイルまたは権限セットで、対象オブジェクトに対する「すべてのレコードの参照」「すべてのレコードの変更」が有効になっていないことを確認します。
これらの権限が有効になっている場合、共有設定に関係なく対象オブジェクトのレコードを参照または変更できるため、担当区分による制御が効いているか確認できません。
確認手順
- 設定 > プロファイル または 設定 > 権限セット を開く
- カミレスで利用している申請者向け、運用者向けのプロファイルまたは権限セットを選択
- 対象オブジェクトのオブジェクト権限を確認
- 「すべてのレコードの参照」「すべてのレコードの変更」にチェックがついている場合は、チェックを外す
注意事項
カミレス標準の運用ユーザー権限セット(
docutize_Form_User01 ~ docutize_Form_User05)には、申請保管オブジェクトの「編集」権限と、申請保管の全項目(docutizeform__X01_Field01__c を含む)の「編集」権限が付与されていません。この記事の手順を実施する場合は、運用ユーザーに割り当てるプロファイルまたは権限セットで、これらの「編集」権限を付与してください。なお、パッケージ標準の権限セットは編集できないため、自前の権限セットまたはプロファイルを用意して付与する必要があります。
以下の画像は、権限セットで申請保管オブジェクトの「編集」権限と、
docutizeform__X01_Field01__c の「編集アクセス権」を付与する設定例です。2. 担当区分の値を格納する項目を準備する
共有ルールの条件に使う項目として、申請保管では
docutizeform__X01_Field01__c、保存ログでは docutizeform__Key01__c を使います。これらは申請の入力値を転記する用途でパッケージ標準として用意されている項目です。一方、申請には同様の標準項目がないため、担当拠点を格納する選択リスト項目(例: AssignedOffice__c)を新規作成して利用します。以下では、申請オブジェクトに新規作成したこの項目を「担当拠点項目」として記載します。
使用する項目と格納値の例
| 対象 | 項目と値の例 |
|---|---|
| 申請 | 担当拠点項目(例: AssignedOffice__c、表示ラベル「担当拠点」)に 東京/大阪 を格納する |
| 申請保管 |
docutizeform__X01_Field01__c に 東京/大阪 を格納する |
| 保存ログ |
docutizeform__Key01__c に 東京/大阪 を格納する |
3. 申請確定時に担当区分の値を各レコードへセット
条件ベース共有ルールは、各対象オブジェクトのレコード上の担当区分の値を見て、どの共有ルールを適用するかを決めます。本手順では、申請に関連するレコードを同じ担当運用者へまとめて共有することを想定しているため、申請確定時に作成される申請、申請保管、保存ログのすべてに同じ担当区分の値をセットします。
フォームテンプレートには、東京または大阪を選択する入力欄を用意しておきます。申請確定時に、この入力欄の値を以下の方法で各オブジェクトへセットします。
| オブジェクト | 値の設定方法 |
|---|---|
| 申請 | フォームテンプレート編集画面の対象項目タブにある項目の保存先設定で、その入力欄をマッピング元として申請の担当拠点項目(例: AssignedOffice__c)へ書き込む |
| 申請保管 | 同様に、項目の保存先設定で入力値を docutizeform__X01_Field01__c へ書き込む |
| 保存ログ | ログ保存機能で入力値を docutizeform__Key01__c へセットする |
ただし、この設定を行う上で 1つ制約があります。項目の保存先設定では、1つの入力欄につき1つの保存先にしか書き込めないため、申請と申請保管の両方に同じ値を書き込むには、書き込み元の入力欄を2つ用意する必要があります。
本記事では、申請者が2つの入力欄に同じ値を入力する手間を省くため、一方の入力欄で選択した値をもう一方の関数型入力欄へ転記し、2つの入力欄をそれぞれ別の保存先に割り当てる方法を紹介します。
設定手順
3-1. 申請者に入力してもらう入力欄を準備する
まず、申請者が担当拠点を選択するための入力欄をフォームテンプレートに配置します。ここでは、選択肢として東京と大阪を持つ選択リスト項目を1つ作成します。
この入力欄は申請者に見せる前提のため、通常どおり画面上に表示します。以降の手順では、この入力欄を「元入力欄」として扱います。
3-2. 3-1 の入力欄に項目の保存先設定を行い、申請へ書き込む
次に、3-1 で作成した元入力欄に対して項目の保存先設定を行い、申請の担当拠点項目へ値が書き込まれるようにします。保存先は、申請オブジェクトの担当拠点項目(例:
AssignedOffice__c)です。
3-3. 3-1 の入力値を転記する入力欄を、関数型入力欄で準備する
続いて、3-1 の元入力欄で選ばれた値を別の入力欄へ転記するための関数型入力欄を追加します。テンプレート内部で値を複製し、別の保存先へ渡すための入力欄であり、以降の手順では「転記用入力欄」として扱います。
この転記用入力欄は、以下の画像のように設定します。関数の種類を「SWITCH型」に設定し、「評価する値」「条件」「一致した時の返却値」には 3-1 で作成した元入力欄を設定します。あわせてデフォルト値を空にしておくことで、元入力欄に値が入っている場合はその値が転記され、値が入っていない場合は転記用入力欄も空のままになります。
3-4. 3-3 の入力欄に項目の保存先設定を行い、申請保管へ書き込む
3-3 で作成した転記用入力欄に対して、もう一度項目の保存先設定を行います。今度の保存先は、申請保管オブジェクトの
docutizeform__X01_Field01__c です。
3-5. 3-3 の入力欄を権限種別設定で非表示にする
転記用入力欄はテンプレート内部で値を受け渡すためだけに使うため、申請者に見せる必要はありません。そのため、3-3 で作成した関数型入力欄には権限種別設定を行い、申請者画面では表示されないようにします。
権限種別の
システム項目はリンク先の記事と同様に、「申請者は常に参照/編集不可」となるように設定されています。3-6. 保存ログの設定を行う
保存ログの
docutizeform__Key01__c については、ログ保存機能で担当区分の値をセットします。詳しい設定手順はログ保存機能の解説記事を参照してください。ログ保存機能を設定する入力欄は、3-1 で作成した元入力欄でも 3-3 で作成した転記用入力欄のどちらでも構いません。
3-7. 申請処理を行う
3-1 〜 3-6 の設定を保存した後、申請者としてフォームを開き、3-1 で作成した入力欄で東京を選択して申請を確定します。
3-8. 申請結果を確認する
申請後、申請の担当拠点項目(例:
AssignedOffice__c)、申請保管の docutizeform__X01_Field01__c、保存ログの docutizeform__Key01__c に東京が設定されていることを確認します。4. 組織の共有設定を確認
対象オブジェクトの「デフォルトの内部アクセス権」が「非公開」になっていることを確認します。
「公開/参照・更新可能」または「公開/参照のみ」になっている場合、内部ユーザー間でレコードが参照できる状態になるため、担当区分に応じて共有先を切り替える制御になりません。
確認手順
- 設定 > 共有設定 を開く
- 「組織の共有設定」セクションで対象オブジェクトを確認
-
以下のオブジェクトの「デフォルトの内部アクセス権」を「非公開」に変更
- 申請
- 申請保管
- 保存ログ
- [保存] をクリック
5. 運用者側の公開グループを作成
担当運用者ユーザーをまとめるための公開グループを、担当区分ごとに作成します。
条件ベース共有ルールでは、条件に一致したレコードを「共有先」に指定した公開グループへ共有します。ここでは、担当区分ごとの運用者側公開グループを作成します。
作成手順
- 設定 > 公開グループ を開く
- [新規] をクリック
- 表示ラベルとグループ名を入力
- 表示ラベル例: 東京拠点運用者グループ
- グループ名: 組織の命名規則に合わせて入力
- 検索条件でユーザーを選択し、対象の運用者ユーザーを追加
- [保存] をクリック
担当範囲が複数ある場合は、担当区分ごとに運用者側公開グループを作成してください。
| 担当区分 | 表示ラベル例 | メンバー例 |
|---|---|---|
| 東京 | 東京拠点運用者グループ | 東京拠点の運用者ユーザー |
| 大阪 | 大阪拠点運用者グループ | 大阪拠点の運用者ユーザー |
6. 条件ベース共有ルールを作成
申請、申請保管、保存ログの各オブジェクトに、担当区分の値を条件にした共有ルールを作成します。
作成手順
- 設定 > 共有設定 を開く
- 対象オブジェクトの「共有ルール」セクションに移動
- [新規] をクリック
- ルール種別で「条件に基づく」を選択
- 条件を次のように設定
- 項目
- 申請: 担当拠点項目(この記事では「担当拠点」という項目を新規作成。API 参照名の例:
AssignedOffice__c) - 申請保管:
docutizeform__X01_Field01__c - 保存ログ:
docutizeform__Key01__c
- 申請: 担当拠点項目(この記事では「担当拠点」という項目を新規作成。API 参照名の例:
- 演算子: 「次の文字列と一致する」
- 値: 東京拠点運用者グループ向けの共有ルールなら
東京、大阪拠点運用者グループ向けの共有ルールなら大阪
- 項目
- 「共有先」に運用者側公開グループを指定
- 例: 東京拠点運用者グループ
- アクセス権を選択
- 参照のみでよい場合: 読み取り専用
- 運用者がレコードを更新する場合: 読み取り/書き込み
- [保存] をクリック
- 残りの対象オブジェクトも同様の手順で共有ルールを作成
注意事項
「Additional Options」のチェックボックスを有効にしておかないと、Community Userが作成したレコードは共有対象に含まれないため、ご注意ください。
東京/大阪の例では、以下のように担当区分ごとの共有ルールを作成します。
| 対象オブジェクト | 条件 | 共有先 | アクセス権の例 |
|---|---|---|---|
| 申請 | 申請側で新規作成した担当拠点項目(例: AssignedOffice__c) = 東京 |
東京拠点運用者グループ | 読み取り/書き込み |
| 申請保管 |
docutizeform__X01_Field01__c = 東京 |
東京拠点運用者グループ | 読み取り/書き込み |
| 保存ログ |
docutizeform__Key01__c = 東京 |
東京拠点運用者グループ | 読み取り専用 |
| 申請 | 申請側で新規作成した担当拠点項目(例: AssignedOffice__c) = 大阪 |
大阪拠点運用者グループ | 読み取り/書き込み |
| 申請保管 |
docutizeform__X01_Field01__c = 大阪 |
大阪拠点運用者グループ | 読み取り/書き込み |
| 保存ログ |
docutizeform__Key01__c = 大阪 |
大阪拠点運用者グループ | 読み取り専用 |
担当区分が増える場合は、担当区分の値ごとに共有ルールを追加します。
7. 動作確認
設定が反映されているか確認するため、担当区分ごとに運用者ユーザーを用意し、担当範囲内外のレコードにアクセスします。
ここでは、前述の例に合わせて、マッピング元として設定した入力欄に「東京」を設定した1件目の申請と、「大阪」を設定した2件目の申請をそれぞれ作成して確認します。
確認手順
- 1件目の申請として、マッピング元として設定した入力欄に「東京」を設定して申請を確定する
- 1件目の申請について、申請、申請保管、保存ログが作成され、申請の担当拠点項目(例:
AssignedOffice__c)、申請保管のdocutizeform__X01_Field01__c、保存ログのdocutizeform__Key01__cに「東京」が設定されていることを確認する - 2件目の申請として、マッピング元として設定した入力欄に「大阪」を設定して申請を確定する
- 2件目の申請について、申請、申請保管、保存ログが作成され、申請の担当拠点項目(例:
AssignedOffice__c)、申請保管のdocutizeform__X01_Field01__c、保存ログのdocutizeform__Key01__cに「大阪」が設定されていることを確認する - 東京拠点運用者でログインし、1件目の申請(東京)の申請関連レコードの一覧表示・詳細URLアクセスを確認 → 参照できること
- 東京拠点運用者で、2件目の申請(大阪)の申請関連レコードの一覧表示・詳細URLアクセスを確認 → 参照できないこと
- 読み取り/書き込み共有にしている対象オブジェクトでは、1件目の申請(東京)担当範囲のレコードを更新できることを確認 → 更新できること
担当外のユーザーがレコード詳細URLへ直接アクセスした際にアクセス権エラーが表示されれば、共有制御は期待どおりに機能しています。
8. 注意事項
ロール階層でレコード所有者より上位にいるユーザーは、「ロール階層を利用したアクセス許可」が有効になっていると担当外のレコードも参照できます。
カスタムオブジェクトではこの設定がデフォルトで有効であるため、運用者グループ単位で完全にレコードを分離したい場合は、組織の共有設定で対象オブジェクトの「ロール階層を利用したアクセス許可」チェックボックスを外してください。