特定の承認ステップで入力オブジェクトを必須入力にする

✔ 概要

本項では、特定の承認ステップのみで入力テキストなどのオブジェクトを「読取専用」や「必須入力」を有効とする方法を説明します。
JavaScript API を使用して各承認ステップ単位に設定した情報を参照できるため、現在の操作者がどの承認ステップであるか確認できます。

注意

本設定は、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


想定する運用と必要な設定

想定する運用

下図の承認ルートで「第1承認グループ」の「上長承認」で必須入力は無効としますが、「第2承認グループ」の「部内承認」では必須入力とする例を説明します。

必要な設定

この運用を実現するために必要となる設定や方法は以下です。

承認ステップを特定する

承認ステップを特定するためには以下が必要です。

承認ルート作成時に[表示名]を指定する

承認ステップの特定は、承認ルートを作成するときに指定する項目[表示名]を参照して行います。

[表示名]は承認グループのルート上での立場や業務担当などを指定できる項目です。予め承認ルートを作成するときに「上長承認」や 「部内承認」などを指定することで、フォームを表示したときに[表示名]を参照して操作者が承認ルート上でどの承認ステップに含まれるか確認できます。

承認ルート上のオブジェクトをクリックすると画面右側に設定画面が表示されるため、下図のように任意の[表示名]を指定します。

◇第1承認グループの表示名設定

◇第2承認グループの表示名設定

JavaScriptで[表示名]を参照する

承認ルートで設定した[表示名]は、以下のように JavaScript API の「iftc.cwf.api.WorkFlowNode」クラスのプロパティ「businessName」を使用して参照できます。

//APIをインスタンス化
const forms = new iftc.cwf.api.Forms();

//現在処理中のユーザー情報に含まれる承認ステップの[表示名]を取得
const businessName = forms.getCurrentWorkFlowNode().businessName;

ヒント

必須入力と JavaScript の設定先は 「必須入力を設定する」 で説明します。

必須入力を設定する

必須入力を条件によって適用するためには JavaScript で指定します。

注釈

  • 「承認フォーム」へ配置した入力テキストのプロパティで必須入力を設定した場合、すべての承認者/決裁者/閲覧者に対して一律で必須入力の設定が適用されます。
  • 申請者は「申請フォーム」を使用するため、承認者以降で必須入力とするときは「申請フォーム」への必須入力の設定は不要です。

必須入力とするオブジェクトの設定

未入力で申請や承認などの操作を確定すると必須入力であるメッセージが表示されますが、項目[ツールチップ]へ文字列を設定するとメッセージ内へ設定した文字列が表示できます。

  • 必須入力とするオブジェクトのプロパティで項目[必須入力]の指定を無効とします。

  • 項目[ツールチップ]へ文字列を設定します。

    ツールチップを設定すると、未入力で申請や承認などの操作をしたときに表示されるメッセージへ設定した文字列が表示できます。

    ヒント

    メッセージはツールチップの設定によって以下のように変わります。

    ◆設定しないときのメッセージ ◆設定したときのメッセージ

JavaScriptで必須入力とする

JavaScript で必須入力とするときは JavaScript API の「iftc.cwf.api.FormObject」クラスのメソッド「setRequired」を使用しますが、
特定の承認ステップでのみ適用するときは以下のように[表示名]で条件分岐します。

ヒント

//APIをインスタンス化
const forms = new iftc.cwf.api.Forms();

//現在処理中のユーザー情報に含まれる承認ステップの表示名を取得
const businessName = forms.getCurrentWorkFlowNode().businessName;

//表示名の確認
if( businessName == '部内承認' ){
  //「表示名」が「部内承認」であるとき
  //必須入力を有効とする
   new iftc.cwf.api.FormObject( 'ITEXT000' ).setRequired( true );

}else{
  //「表示名」が「部内承認」と一致しないとき
  //必須入力を無効とする
  new iftc.cwf.api.FormObject( 'ITEXT000' ).setRequired( false );

}

注意

「ルート変更」機能で「挿入」した承認ステップでは、[表示名]が空となるため承認ステップを特定することはできません。

この JavaScript では、フォーム上に配置した入力テキスト「ITEXT000」を必須入力とします。
承認ルートのオブジェクトへ設定した[表示名]が「部内承認」であるときは必須入力を有効としますが、[表示名]が「部内承認」以外のときは必須入力を無効とします。

動作確認

以下の承認ルートに登場する各ユーザーで申請案件を操作するとき、 「必須入力を設定する」 で設定した内容の反映状態を確認します。

◇承認ルート

◇各役割のユーザーでの必須入力の動作

役割 ユーザー 表示名 必須入力
承認者(第1承認グループ) 小川 洋介 上長承認 無効
承認者(第2承認グループ) 中村 俊 部内承認 有効
決裁者 柳瀬 貴志 決裁 無効
閲覧者 鶴田 幹男 受発注受付 無効


第1承認グループの承認者での操作

「第1承認グループ」の「上長承認」に該当するユーザーでフォームを表示したとき、 「必須入力を設定する」 で設定した JavaScript が実行されます。 このとき承認グループの[表示名]が「上長承認」となるため必須入力が無効となり、未入力の状態でも承認できます。

下図の「OK」ボタンをクリックすると承認が確定します。

第2承認グループの承認者での操作

「第2承認グループ」の「部内承認」に該当するユーザーでフォームを表示したとき、 「必須入力を設定する」 で設定した JavaScript が実行されます。このとき承認グループの[表示名]が「部内承認」となるため必須入力が有効となります。

必須入力の項目を未入力で承認したとき

必須入力とした入力テキストが未入力の状態で送信ボタン([承認する]ボタン)をクリックすると、以下のメッセージが表示されて操作が確定できません。

ヒント

メッセージ内の「必須入力項目」は、入力テキストのプロパティで項目[ツールチップ]へ指定した文字列です。
設定箇所は 「必須チェック時に項目名を表示する」 を確認してください。

必須入力の項目を入力して承認したとき

必須入力とした入力テキストへ文字列を入力して送信ボタン([承認する]ボタン)をクリックすると、未入力時のメッセージは表示されずに承認が確定できます。

決裁者や閲覧者での操作

決裁者や閲覧者でも「第1承認グループ」や「第2承認グループ」と同一のフォームを使用するため、フォームを表示したときは 「必須入力を設定する」 で設定したJavaScript が実行されます。
ただし、決裁者や閲覧者の[表示名]が「部内承認」と異なるため必須入力は設定されず未入力でも操作を確定できます。