特定条件下でコンボボックスを必須選択とする¶
コンボボックスは 「コンボボックスを必須選択にする」 に記載の方法で必須選択化ができますが、
この方法は設定したフォームを使用すると固定的に反映されます。そのため、例えば承認ルート上の第1承認者だけ、もしくは、決裁者だけに適用したいときは使用できません。
本項では、JavaScript を使用したコンボボックスの必須選択を動的に設定する方法を説明します。
注意
本設定は、V5.2.0以降のフォームで利用可能です。
V5.2.0より前のバージョンで作られたフォーム、Liteフォームおよび旧バージョン形式のフォーム(JSP/PDF)では利用できません。
ヒント
以降の説明では、申請・承認フォームを表示しているユーザーの情報を参照、オブジェクトへ必須入力を指定するため JavaScript の API を利用します。
それぞれのAPIは、以下の名前空間で公開しています。JavaScript API リファレンス もあわせて参照ください。
- フォームを表示しているユーザーの情報を参照
- iftc.cwf.api.Forms
- iftc.cwf.api.WorkFlowNode
- 必須入力の設定
- iftc.cwf.api.FormObject
想定する運用と必要な設定¶
想定する運用
必要な設定
この運用を実現するために必要となる設定や方法は以下です。
承認ステップへ[表示名]を設定する¶
承認ステップを特定するため、「特定の承認ステップか確認する」 に記載の内容を設定します。
第2承認グループの[表示名]へ「部内承認」と指定して、フォームへ設定する JavaScript からこの値を参照し承認ステップを特定します。
フォーム上にコンボボックスを配置する¶
フォーム上に配置したコンボボックスのプロパティで「選択項目」を登録します。
必須選択を設定するコンボボックスには、選択項目として 「コンボボックスを必須選択にする」 に記載の
[書き出し値]を「半角スペース」とした選択項目を登録します。
必須選択を有効としたとき、「書き出し値が半角スペース」の項目を選択しても「未選択」と扱います。
この状態で申請や承認をしても「未選択」であるため操作が確定できず、コンボボックスの選択が必要なことを説明するメッセージが表示できます。
◇フォーム
◇コンボボックスの設定
コンボボックス「CMB001」のプロパティ 登録する選択項目の内容
項目名 書き出し値 –– 選択してください –– (半角スペース) a 1 b 2 c 3
コンボボックス「CMB002」のプロパティ 登録する選択項目の内容
項目名 書き出し値 –– 選択してください –– (半角スペース) d 4 e 5 f 6 ヒント
データベースから取得したデータを選択項目とするときは、 「コンボボックスの項目をデータベースから取得する」 を確認してください。
データベース連携でコンボボックスの初期選択項目を表示するときは、[オプション]タブの[データベースから取得]をチェックし[設定]ボタンをクリックして起動する以下の[設定]ダイアログで指定します。 初期値を登録することで「半角スペース」を使用した必須入力の確認と同じ動作となり、申請や承認時に選択状態が確認できます。
JavaScript でコンボボックスを必須選択とする¶
必須入力の設定はコンボボックスのプロパティで指定できますが、この指定方法ではそのフォームを使用するすべての操作者(承認者/決裁者/閲覧者)へ適用されます。 そのため、必須入力を条件によって動的に適用するときは JavaScript を使用します。
注釈
- 「承認フォーム」は承認者/決裁者/閲覧者が共通して使用します。
- 申請者は「申請フォーム」を使用するため、承認者以降で必須入力とするときは申請フォームへの必須入力の設定は不要です。
必須入力とするオブジェクトの設定
JavaScriptで必須選択とする
JavaScript で[必須入力]を設定するときは、JavaScript API 「iftc.cwf.api.FormObject」クラスのメソッド「setRequired」 を使用します。 以下の JavaScript を実行することでコンボボックスの[必須選択]を有効へ変更できます。
//オブジェクト名を指定して必須入力を有効とする new iftc.cwf.api.FormObject( 'CMB001' ).setRequired( true );各コンボボックスを必須選択とする条件は下表の通りですが、操作中ユーザーを確認するためには JavaScript API の 「iftc.cwf.api.WorkFlowNode」クラス を使用します。
コンボボックス名 書き出し値 CMB001 操作中ユーザーが「第2承認グループの承認者」であるとき CMB002 操作中ユーザーが「決裁者」であるとき ヒント
「iftc.cwf.api.WorkFlowNode」クラス を使用することで承認ルート上のステップや操作中ユーザーの役割を確認できます。
以下の JavaScript では、コンボボックスへ必須選択を設定する前に操作中ユーザーの情報を取得して、 そのユーザーの[表示名(businessName)]や[役割(role)]でコンボボックスの必須選択の設定を変更しています。
// APIをインスタンス化 const forms = new iftc.cwf.api.Forms(); // 操作中ユーザーの承認ステップへ設定された表示名を取得 const businessName = forms.getCurrentWorkFlowNode().businessName; // 操作中ユーザーの役割を取得 const userRole = forms.getCurrentWorkFlowNode().role; // コンボボックス「CMB001」の設定 if( businessName == '部内承認' ){ // 操作中ユーザーの承認ステップにおける「表示名」が「部内承認」であるとき // コンボボックス「CMB001」の必須入力を有効とする new iftc.cwf.api.FormObject( 'CMB001' ).setRequired( true ); } // コンボボックス「CMB002」の設定 if( userRole == 2 ){ // 操作中ユーザーが「決裁者」であるとき // コンボボックス「CMB002」の必須入力を有効とする new iftc.cwf.api.FormObject( 'CMB002' ).setRequired( true ); }注釈
- 操作中ユーザーが「決裁者」の役割であるかの確認は[表示名]でも可能ですが、本 JavaScript では 「iftc.cwf.api.WorkFlowNode」 クラスのプロパティ「role」を使用しています。
- 必須入力の制御は 「iftc.cwf.api.FormObject」クラスのメソッド「setRequired」 を使用します。
- プロパティ[businessName]の詳細は 「承認ステップの情報を参照する」 を参照してください。
- プロパティ[role]の詳細は 「操作中のユーザーが承認者か決裁者か確認する」 を参照してください。
- 本 JavaScript は「承認フォーム」へ設定します。Form エディターのメニューバー [オプション - アクション - ページ表示時のJavaScript登録] から起動するダイアログへ設定します。
動作確認¶
「想定する運用と必要な設定」 に記載した通り、特定条件下でコンボボックスの必須選択が有効となるか確認します。
確認する申請案件は下図の承認ルートを使用しますが、各ユーザーによって必須選択の設定状況が異なります。
◇承認ルート
◇各ユーザーでの必須選択の設定状態
役割 表示名 ユーザー 「CMB001」の必須入力 「CMB002」の必須入力 承認者(第1承認グループ) 上長承認 久米 弘之 無効 無効 承認者(第2承認グループ) 部内承認 柳沢 昇 有効 無効 決裁者 決裁 柳瀬 貴志 無効 有効
第1承認グループの承認者での操作
第1承認グループのユーザーでフォームを表示したとき、 「JavaScriptで必須選択とする」 で設定したJavaScript が実行されます。
第1承認グループの[表示名]は「上長承認」であり、必須選択とするときの条件の「部内承認」と一致しないためコンボボックス「CMB001」の必須選択は無効となります。そのため、コンボボックスの選択を初期選択の項目である「–– 選択してください ––」から変更しなくとも承認できます。
また、決裁者ではないためコンボボックス「CMB002」の必須選択も有効となりません。
第2承認グループの承認者での操作
第2承認グループのユーザーでフォームを表示したとき、 「JavaScriptで必須選択とする」 で設定した JavaScript が実行されます。
第2承認グループの[表示名]は「部内承認」のためコンボボックス「CMB001」の必須選択が有効となります。必須選択のコンボボックスを未選択状態で承認した場合
送信ボタン([承認する]ボタン)をクリックしたとき、コンボボックス「CMB001」で初期選択項目の「–– 選択してください ––」を選択していると以下のメッセージが表示され操作が確定できません。
ヒント
- メッセージ内の「CMB001」は、コンボボックスのオブジェクト名です。
- オブジェクト名ではなく任意の文字列を表示するときは 「必須チェック時に項目名を表示する」 を確認してください。
必須選択のコンボボックスを選択して承認した場合
決裁者での操作
決裁者のユーザーでフォームを表示したとき、 「JavaScriptで必須選択とする」 で設定した JavaScript が実行されます。
このとき操作中ユーザーの役割が「決裁者」であるためコンボボックス「CMB002」の必須選択が有効となります。必須選択のコンボボックスを未選択状態で承認した場合
送信ボタン([承認する]ボタン)をクリックしたとき、コンボボックス「CMB002」で初期選択項目の「–– 選択してください ––」を選択していると以下のメッセージが表示され操作が確定できません。
ヒント
- メッセージ内の「CMB002」は、コンボボックスのオブジェクト名です。
- オブジェクト名ではなく任意の文字列を表示するときは 「必須チェック時に項目名を表示する」 を確認してください。
必須選択のコンボボックスを選択して承認した場合