特定の役職の場合に入力オブジェクトを必須入力にする

✔ 概要

入力フォームを表示しているユーザーが特定の役職の場合に入力オブジェクトを必須入力にする方法を説明します。
必須項目を入力せずに承認しようとすると、アラートを表示し、入力を促します。

注意

本設定は、V5.2.0以降のフォームで利用可能です。
V5.2.0より前のバージョンで作られたフォーム、旧バージョン形式のフォーム(JSP/PDF)では利用できません。

ヒント

以降の説明では、申請・承認フォームを表示しているユーザーの情報取得や入力フォーム上のオブジェクトを必須入力にするために
JavaScript の API を利用します。
それぞれのAPIは、以下の名前空間で公開されています。JavaScript API リファレンス もあわせて参照ください。

  • フォームを表示しているユーザーの情報の取得
    • iftc.cwf.api.Forms
    • iftc.cwf.api.WorkFlowNode
  • オブジェクトの必須入力
    • iftc.cwf.api.FormObject


ここでは、例として 「部長」が承認フォームを表示している場合に入力オブジェクトを必須入力にする設定 を行います。

設定方法

JavaScriptファイルの登録

オブジェクトを「必須入力」にするJavaScriptを設定します。

  • 以下のJavaScriptをテキストファイルに記述し、拡張子を"js"にして、JavaScriptファイルを作成します。
    ファイル名は任意ですが、半角英数字に限ります。

    function setRequired(formObject){
    
        //必須入力を設定
        formObject.setRequired(true);
    }
    

    注意

    登録するファイルはUTF-8形式で作成してください。

  • 作成したJavaScriptファイルを外部ファイルとしてサーバーおよびフォームに登録します。
    登録方法は 外部ファイルとしてJavaScriptを登録する を参照ください。

送信ボタンの設定

「部長」が承認者の場合に必須入力とするため、承認フォームに設定します。

  • Formエディターのメニューバーで[オプション - 送信ボタン設定]を選択し、[送信ボタン設定]ダイアログを表示します。

  • [承認ボタン]タブを選択し、クリック時のJavaScriptの[編集]ボタンをクリックします。

  • [JavaScriptの編集]ダイアログが表示されます。以下のスクリプトを記述します。
    なお、マルチフォームでページごとに区別する設定のオブジェクトを必須入力とする場合、記述内容が異なります。
    詳細は、こちら を参照ください。

    //APIをインスタンス化
    const forms = new iftc.cwf.api.Forms();
    
    //現在処理中のユーザーの役職名を取得
    const userAuth =  forms.getCurrentWorkFlowNode().authorityName;
    
    //処理中のユーザーが「部長」の場合に必須入力に設定
    if(userAuth == "部長"){
        setRequired(new iftc.cwf.api.FormObject("必須入力にしたいオブジェクト名"));
    }
    


    • マルチフォームでページごとに区別する設定のオブジェクトの場合

      マルチフォームが設定されたフォームで ページごとに区別するオブジェクト を必須入力とするには、
      すべてのページで必須入力とする場合、特定のページでのみ必須入力とする場合でそれぞれ以下のように記述します。

      • すべてのページで必須入力とする

        //APIをインスタンス化
        const forms = new iftc.cwf.api.Forms();
        
        //現在処理中のユーザーの役職名を取得
        const userAuth =  forms.getCurrentWorkFlowNode().authorityName;
        
        //処理中のユーザーが「部長」の場合に必須入力に設定
        if(userAuth == "部長"){
        
            //FormObjectインスタンスを取得
            const formObject = forms.getFormObjectsByName("必須入力にしたいオブジェクト名","フォーム識別子");
        
            //ページ数に応じたオブジェクトの数分、必須入力を設定
            for(let i=0 ; i < formObject.length ; i++){
                setRequired(formObject[i]);
            }
        }
        
      • 特定のページでのみ必須入力とする

        //APIをインスタンス化
        const forms = new iftc.cwf.api.Forms();
        
        //現在処理中のユーザーの役職名を取得
        const userAuth =  forms.getCurrentWorkFlowNode().authorityName;
        
        //処理中のユーザーが「部長」の場合に必須入力に設定
        if(userAuth == "部長"){
        
            //FormObjectインスタンスを取得
            const formObject = new iftc.cwf.api.FormObject("必須入力にしたいオブジェクト名","フォーム識別子",ページ番号);
        
            //指定したページ番号上にオブジェクトがある場合のみ、必須入力を設定
            if(Object.keys(formObject).length){
                setRequired(formObject);
            }
        }
        

      ヒント

      ページごとに区別するオブジェクト

      ページごとに入力内容を区別するオブジェクトは、Formエディター上で、[オブジェクトのプロパティ] - [HTML]で「マルチフォームでオブジェクトをページごとに区別する」にチェックが付いています。

    注釈

    処理中のユーザーが代理・代行者の場合、代理・代行依頼者の役職名が取得されます。

    ヒント

    • 複数のオブジェクトを必須入力としたい場合、例のように「if文」以下に必須入力にする処理を複数記述します。
      ※APIのインスタンス化や、処理中ユーザーの役職名の取得の処理を複数回記載する必要はありません。
      ※FormObjectインスタンスを格納する変数名(formObject)は、オブジェクト毎に適宜変更してください。
      例)

      //APIをインスタンス化
      const forms = new iftc.cwf.api.Forms();
      
      //現在処理中のユーザーの役職名を取得
      const userAuth =  forms.getCurrentWorkFlowNode().authorityName;
      
      //処理中のユーザーが「部長」の場合に必須入力に設定
      if(userAuth == "部長"){
          setRequired(new iftc.cwf.api.FormObject("ITEXT000"));
      
          //FormObjectインスタンスを取得
          const formObject_ITEXT001 = forms.getFormObjectsByName("ITEXT001","FORM02");
      
          //ページ数に応じたオブジェクトの数分、必須入力を設定
          for(let i=0 ; i < formObject_ITEXT001.length ; i++){
              setRequired(formObject_ITEXT001[i]);
          }
      }
      
    • 役職名以外を条件とする場合、「authorityName」の部分を iftc.cwf.api.WorkFlowNodeクラス の任意のプロパティに変更します。

フォームの保存、アップロード

Formエディターでフォームを保存し、サーバーにアップロードします。

動作確認

ワークフローシステムにログインし、申請/承認を行います。
役職が「部長」のユーザーが承認者の場合、指定した入力オブジェクトが必須入力になることを確認します。